From ea8d1101238df41bd9628b254be3d6d0d4d8d5f7 Mon Sep 17 00:00:00 2001 From: Rbb666 Date: Tue, 17 Oct 2023 17:20:54 +0800 Subject: [PATCH] [libcpu][renesas]add cortex-m85 && ek-ra8m1 adapt --- .../libraries/HAL_Drivers/config/drv_config.h | 5 + .../HAL_Drivers/config/ra8/uart_config.h | 136 + .../libraries/HAL_Drivers/drv_common.c | 1 - bsp/renesas/libraries/HAL_Drivers/drv_sci.c | 239 +- .../libraries/HAL_Drivers/drv_usart_v2.c | 23 +- bsp/renesas/libraries/Kconfig | 6 + bsp/renesas/ra8m1-ek/.api_xml | 2 + bsp/renesas/ra8m1-ek/.config | 1048 + bsp/renesas/ra8m1-ek/.cproject | 222 + bsp/renesas/ra8m1-ek/.gitignore | 5 + bsp/renesas/ra8m1-ek/.ignore_format.yml | 9 + bsp/renesas/ra8m1-ek/.project | 28 + bsp/renesas/ra8m1-ek/.secure_azone | 86 + bsp/renesas/ra8m1-ek/.secure_xml | 159 + bsp/renesas/ra8m1-ek/.settings/.rtmenus | Bin 0 -> 1696400 bytes .../ra8m1-ek/.settings/language.settings.xml | 14 + .../.settings/org.eclipse.core.runtime.prefs | 3 + bsp/renesas/ra8m1-ek/.settings/projcfg.ini | 19 + .../ra6m3-temp.JLink.Debug.rttlaunch | 90 + .../ra8m1-ek/.settings/standalone.prefs | 21 + bsp/renesas/ra8m1-ek/EventRecorderStub.scvd | 9 + bsp/renesas/ra8m1-ek/JLinkLog.txt | 3918 ++ bsp/renesas/ra8m1-ek/JLinkSettings.ini | 47 + bsp/renesas/ra8m1-ek/Kconfig | 29 + bsp/renesas/ra8m1-ek/README.md | 151 + bsp/renesas/ra8m1-ek/README_ZH.md | 135 + bsp/renesas/ra8m1-ek/SConscript | 28 + bsp/renesas/ra8m1-ek/SConstruct | 55 + bsp/renesas/ra8m1-ek/board/Kconfig | 488 + bsp/renesas/ra8m1-ek/board/SConscript | 19 + bsp/renesas/ra8m1-ek/board/board.h | 38 + bsp/renesas/ra8m1-ek/board/lvgl/SConscript | 16 + .../ra8m1-ek/board/lvgl/demo/SConscript | 17 + .../ra8m1-ek/board/lvgl/demo/lv_demo.c | 18 + bsp/renesas/ra8m1-ek/board/lvgl/lv_conf.h | 66 + .../ra8m1-ek/board/lvgl/lv_port_disp.c | 146 + .../ra8m1-ek/board/lvgl/lv_port_indev.c | 136 + bsp/renesas/ra8m1-ek/board/ports/SConscript | 16 + bsp/renesas/ra8m1-ek/board/ports/gpio_cfg.h | 82 + bsp/renesas/ra8m1-ek/board/ports/mnt.c | 130 + bsp/renesas/ra8m1-ek/board/ra8_it.c | 20 + bsp/renesas/ra8m1-ek/buildinfo.gpdsc | 161 + bsp/renesas/ra8m1-ek/configuration.xml | 640 + bsp/renesas/ra8m1-ek/docs/picture/front.png | Bin 0 -> 122469 bytes bsp/renesas/ra8m1-ek/memory_regions.scat | 30 + bsp/renesas/ra8m1-ek/project.uvguix.RTT | 3601 ++ bsp/renesas/ra8m1-ek/project.uvoptx | 752 + bsp/renesas/ra8m1-ek/project.uvprojx | 670 + bsp/renesas/ra8m1-ek/ra/SConscript | 26 + .../CMSIS/Core/Include/cachel1_armv7.h | 411 + .../CMSIS_5/CMSIS/Core/Include/cmsis_armcc.h | 888 + .../CMSIS/Core/Include/cmsis_armclang.h | 1503 + .../CMSIS/Core/Include/cmsis_armclang_ltm.h | 1928 + .../CMSIS/Core/Include/cmsis_compiler.h | 283 + .../CMSIS_5/CMSIS/Core/Include/cmsis_gcc.h | 2211 ++ .../CMSIS_5/CMSIS/Core/Include/cmsis_iccarm.h | 1002 + .../CMSIS/Core/Include/cmsis_version.h | 39 + .../CMSIS/Core/Include/core_armv81mml.h | 4228 ++ .../CMSIS/Core/Include/core_armv8mbl.h | 2222 ++ .../CMSIS/Core/Include/core_armv8mml.h | 3209 ++ .../arm/CMSIS_5/CMSIS/Core/Include/core_cm0.h | 952 + .../CMSIS_5/CMSIS/Core/Include/core_cm0plus.h | 1087 + .../arm/CMSIS_5/CMSIS/Core/Include/core_cm1.h | 979 + .../CMSIS_5/CMSIS/Core/Include/core_cm23.h | 2297 ++ .../arm/CMSIS_5/CMSIS/Core/Include/core_cm3.h | 1943 + .../CMSIS_5/CMSIS/Core/Include/core_cm33.h | 3277 ++ .../CMSIS_5/CMSIS/Core/Include/core_cm35p.h | 3277 ++ .../arm/CMSIS_5/CMSIS/Core/Include/core_cm4.h | 2129 + .../CMSIS_5/CMSIS/Core/Include/core_cm55.h | 4817 +++ .../arm/CMSIS_5/CMSIS/Core/Include/core_cm7.h | 2366 ++ .../CMSIS_5/CMSIS/Core/Include/core_cm85.h | 4672 +++ .../CMSIS_5/CMSIS/Core/Include/core_sc000.h | 1030 + .../CMSIS_5/CMSIS/Core/Include/core_sc300.h | 1917 + .../CMSIS_5/CMSIS/Core/Include/core_starmc1.h | 3592 ++ .../CMSIS_5/CMSIS/Core/Include/mpu_armv7.h | 275 + .../CMSIS_5/CMSIS/Core/Include/mpu_armv8.h | 352 + .../CMSIS_5/CMSIS/Core/Include/pac_armv81.h | 206 + .../CMSIS_5/CMSIS/Core/Include/pmu_armv8.h | 337 + .../CMSIS_5/CMSIS/Core/Include/tz_context.h | 70 + .../ra8m1-ek/ra/arm/CMSIS_5/LICENSE.txt | 201 + .../ra8m1-ek/ra/board/ra8m1_ek/board.h | 62 + .../ra/board/ra8m1_ek/board_ethernet_phy.h | 61 + .../ra8m1-ek/ra/board/ra8m1_ek/board_init.c | 62 + .../ra8m1-ek/ra/board/ra8m1_ek/board_init.h | 58 + .../ra8m1-ek/ra/board/ra8m1_ek/board_leds.c | 71 + .../ra8m1-ek/ra/board/ra8m1_ek/board_leds.h | 75 + bsp/renesas/ra8m1-ek/ra/fsp/inc/api/bsp_api.h | 111 + .../ra8m1-ek/ra/fsp/inc/api/fsp_common_api.h | 387 + .../ra8m1-ek/ra/fsp/inc/api/r_ioport_api.h | 206 + .../ra8m1-ek/ra/fsp/inc/api/r_transfer_api.h | 381 + .../ra8m1-ek/ra/fsp/inc/api/r_uart_api.h | 267 + .../ra8m1-ek/ra/fsp/inc/fsp_features.h | 304 + bsp/renesas/ra8m1-ek/ra/fsp/inc/fsp_version.h | 90 + .../ra8m1-ek/ra/fsp/inc/instances/r_ioport.h | 527 + .../ra/fsp/inc/instances/r_sci_b_uart.h | 218 + .../cmsis/Device/RENESAS/Include/R7FA8M1AH.h | 32676 ++++++++++++++++ .../cmsis/Device/RENESAS/Include/renesas.h | 146 + .../bsp/cmsis/Device/RENESAS/Include/system.h | 58 + .../bsp/cmsis/Device/RENESAS/Source/startup.c | 151 + .../bsp/cmsis/Device/RENESAS/Source/system.c | 845 + .../ra/fsp/src/bsp/mcu/all/bsp_clocks.c | 2513 ++ .../ra/fsp/src/bsp/mcu/all/bsp_clocks.h | 1126 + .../ra/fsp/src/bsp/mcu/all/bsp_common.c | 325 + .../ra/fsp/src/bsp/mcu/all/bsp_common.h | 576 + .../src/bsp/mcu/all/bsp_compiler_support.h | 120 + .../ra/fsp/src/bsp/mcu/all/bsp_delay.c | 189 + .../ra/fsp/src/bsp/mcu/all/bsp_delay.h | 87 + .../ra/fsp/src/bsp/mcu/all/bsp_exceptions.h | 58 + .../ra/fsp/src/bsp/mcu/all/bsp_group_irq.c | 131 + .../ra/fsp/src/bsp/mcu/all/bsp_group_irq.h | 83 + .../ra/fsp/src/bsp/mcu/all/bsp_guard.c | 55 + .../ra/fsp/src/bsp/mcu/all/bsp_guard.h | 46 + .../ra8m1-ek/ra/fsp/src/bsp/mcu/all/bsp_io.c | 41 + .../ra8m1-ek/ra/fsp/src/bsp/mcu/all/bsp_io.h | 470 + .../ra8m1-ek/ra/fsp/src/bsp/mcu/all/bsp_irq.c | 123 + .../ra8m1-ek/ra/fsp/src/bsp/mcu/all/bsp_irq.h | 229 + .../ra/fsp/src/bsp/mcu/all/bsp_mcu_api.h | 68 + .../ra/fsp/src/bsp/mcu/all/bsp_module_stop.h | 241 + .../src/bsp/mcu/all/bsp_register_protection.c | 133 + .../src/bsp/mcu/all/bsp_register_protection.h | 74 + .../fsp/src/bsp/mcu/all/bsp_rom_registers.c | 256 + .../ra/fsp/src/bsp/mcu/all/bsp_sbrk.c | 106 + .../ra/fsp/src/bsp/mcu/all/bsp_security.c | 637 + .../ra/fsp/src/bsp/mcu/all/bsp_security.h | 47 + .../ra8m1-ek/ra/fsp/src/bsp/mcu/all/bsp_tfu.h | 232 + .../ra/fsp/src/bsp/mcu/ra8m1/bsp_elc.h | 365 + .../ra/fsp/src/bsp/mcu/ra8m1/bsp_feature.h | 451 + .../ra/fsp/src/bsp/mcu/ra8m1/bsp_mcu_info.h | 58 + .../ra/fsp/src/bsp/mcu/ra8m1/bsp_override.h | 97 + .../ra8m1-ek/ra/fsp/src/r_ioport/r_ioport.c | 922 + .../ra/fsp/src/r_sci_b_uart/r_sci_b_uart.c | 1817 + bsp/renesas/ra8m1-ek/ra_cfg/SConscript | 20 + .../ra8m1-ek/ra_cfg/fsp_cfg/bsp/board_cfg.h | 5 + .../ra8m1-ek/ra_cfg/fsp_cfg/bsp/bsp_cfg.h | 62 + .../ra_cfg/fsp_cfg/bsp/bsp_mcu_device_cfg.h | 5 + .../fsp_cfg/bsp/bsp_mcu_device_pn_cfg.h | 11 + .../ra_cfg/fsp_cfg/bsp/bsp_mcu_family_cfg.h | 555 + .../ra8m1-ek/ra_cfg/fsp_cfg/bsp/bsp_pin_cfg.h | 131 + .../ra8m1-ek/ra_cfg/fsp_cfg/r_ioport_cfg.h | 13 + .../ra_cfg/fsp_cfg/r_sci_b_uart_cfg.h | 16 + bsp/renesas/ra8m1-ek/ra_gen/SConscript | 20 + bsp/renesas/ra8m1-ek/ra_gen/bsp_clock_cfg.h | 56 + bsp/renesas/ra8m1-ek/ra_gen/common_data.c | 11 + bsp/renesas/ra8m1-ek/ra_gen/common_data.h | 20 + bsp/renesas/ra8m1-ek/ra_gen/hal_data.c | 89 + bsp/renesas/ra8m1-ek/ra_gen/hal_data.h | 24 + bsp/renesas/ra8m1-ek/ra_gen/main.c | 6 + bsp/renesas/ra8m1-ek/ra_gen/pin_data.c | 308 + bsp/renesas/ra8m1-ek/ra_gen/vector_data.c | 29 + bsp/renesas/ra8m1-ek/ra_gen/vector_data.h | 32 + bsp/renesas/ra8m1-ek/rasc_version.txt | 3 + bsp/renesas/ra8m1-ek/rtconfig.h | 259 + bsp/renesas/ra8m1-ek/rtconfig.py | 137 + bsp/renesas/ra8m1-ek/script/ac6/fsp_keep.via | 1 + bsp/renesas/ra8m1-ek/script/fsp.ld | 649 + bsp/renesas/ra8m1-ek/script/fsp.scat | 986 + bsp/renesas/ra8m1-ek/script/memory_regions.ld | 22 + bsp/renesas/ra8m1-ek/src/hal_entry.c | 28 + bsp/renesas/ra8m1-ek/template.uvguix.RTT | 1860 + bsp/renesas/ra8m1-ek/template.uvoptx | 208 + bsp/renesas/ra8m1-ek/template.uvprojx | 423 + libcpu/Kconfig | 5 + libcpu/arm/cortex-m85/SConscript | 16 + libcpu/arm/cortex-m85/context_rvds.S | 258 + libcpu/arm/cortex-m85/cpuport.c | 513 + libcpu/arm/cortex-m85/cpuport.h | 23 + 166 files changed, 122385 insertions(+), 111 deletions(-) create mode 100644 bsp/renesas/libraries/HAL_Drivers/config/ra8/uart_config.h create mode 100644 bsp/renesas/ra8m1-ek/.api_xml create mode 100644 bsp/renesas/ra8m1-ek/.config create mode 100644 bsp/renesas/ra8m1-ek/.cproject create mode 100644 bsp/renesas/ra8m1-ek/.gitignore create mode 100644 bsp/renesas/ra8m1-ek/.ignore_format.yml create mode 100644 bsp/renesas/ra8m1-ek/.project create mode 100644 bsp/renesas/ra8m1-ek/.secure_azone create mode 100644 bsp/renesas/ra8m1-ek/.secure_xml create mode 100644 bsp/renesas/ra8m1-ek/.settings/.rtmenus create mode 100644 bsp/renesas/ra8m1-ek/.settings/language.settings.xml create mode 100644 bsp/renesas/ra8m1-ek/.settings/org.eclipse.core.runtime.prefs create mode 100644 bsp/renesas/ra8m1-ek/.settings/projcfg.ini create mode 100644 bsp/renesas/ra8m1-ek/.settings/ra6m3-temp.JLink.Debug.rttlaunch create mode 100644 bsp/renesas/ra8m1-ek/.settings/standalone.prefs create mode 100644 bsp/renesas/ra8m1-ek/EventRecorderStub.scvd create mode 100644 bsp/renesas/ra8m1-ek/JLinkLog.txt create mode 100644 bsp/renesas/ra8m1-ek/JLinkSettings.ini create mode 100644 bsp/renesas/ra8m1-ek/Kconfig create mode 100644 bsp/renesas/ra8m1-ek/README.md create mode 100644 bsp/renesas/ra8m1-ek/README_ZH.md create mode 100644 bsp/renesas/ra8m1-ek/SConscript create mode 100644 bsp/renesas/ra8m1-ek/SConstruct create mode 100644 bsp/renesas/ra8m1-ek/board/Kconfig create mode 100644 bsp/renesas/ra8m1-ek/board/SConscript create mode 100644 bsp/renesas/ra8m1-ek/board/board.h create mode 100644 bsp/renesas/ra8m1-ek/board/lvgl/SConscript create mode 100644 bsp/renesas/ra8m1-ek/board/lvgl/demo/SConscript create mode 100644 bsp/renesas/ra8m1-ek/board/lvgl/demo/lv_demo.c create mode 100644 bsp/renesas/ra8m1-ek/board/lvgl/lv_conf.h create mode 100644 bsp/renesas/ra8m1-ek/board/lvgl/lv_port_disp.c create mode 100644 bsp/renesas/ra8m1-ek/board/lvgl/lv_port_indev.c create mode 100644 bsp/renesas/ra8m1-ek/board/ports/SConscript create mode 100644 bsp/renesas/ra8m1-ek/board/ports/gpio_cfg.h create mode 100644 bsp/renesas/ra8m1-ek/board/ports/mnt.c create mode 100644 bsp/renesas/ra8m1-ek/board/ra8_it.c create mode 100644 bsp/renesas/ra8m1-ek/buildinfo.gpdsc create mode 100644 bsp/renesas/ra8m1-ek/configuration.xml create mode 100644 bsp/renesas/ra8m1-ek/docs/picture/front.png create mode 100644 bsp/renesas/ra8m1-ek/memory_regions.scat create mode 100644 bsp/renesas/ra8m1-ek/project.uvguix.RTT create mode 100644 bsp/renesas/ra8m1-ek/project.uvoptx create mode 100644 bsp/renesas/ra8m1-ek/project.uvprojx create mode 100644 bsp/renesas/ra8m1-ek/ra/SConscript create mode 100644 bsp/renesas/ra8m1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/cachel1_armv7.h create mode 100644 bsp/renesas/ra8m1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/cmsis_armcc.h create mode 100644 bsp/renesas/ra8m1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/cmsis_armclang.h create mode 100644 bsp/renesas/ra8m1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/cmsis_armclang_ltm.h create mode 100644 bsp/renesas/ra8m1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/cmsis_compiler.h create mode 100644 bsp/renesas/ra8m1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/cmsis_gcc.h create mode 100644 bsp/renesas/ra8m1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/cmsis_iccarm.h create mode 100644 bsp/renesas/ra8m1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/cmsis_version.h create mode 100644 bsp/renesas/ra8m1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/core_armv81mml.h create mode 100644 bsp/renesas/ra8m1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/core_armv8mbl.h create mode 100644 bsp/renesas/ra8m1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/core_armv8mml.h create mode 100644 bsp/renesas/ra8m1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm0.h create mode 100644 bsp/renesas/ra8m1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm0plus.h create mode 100644 bsp/renesas/ra8m1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm1.h create mode 100644 bsp/renesas/ra8m1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm23.h create mode 100644 bsp/renesas/ra8m1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm3.h create mode 100644 bsp/renesas/ra8m1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm33.h create mode 100644 bsp/renesas/ra8m1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm35p.h create mode 100644 bsp/renesas/ra8m1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm4.h create mode 100644 bsp/renesas/ra8m1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm55.h create mode 100644 bsp/renesas/ra8m1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm7.h create mode 100644 bsp/renesas/ra8m1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm85.h create mode 100644 bsp/renesas/ra8m1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/core_sc000.h create mode 100644 bsp/renesas/ra8m1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/core_sc300.h create mode 100644 bsp/renesas/ra8m1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/core_starmc1.h create mode 100644 bsp/renesas/ra8m1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/mpu_armv7.h create mode 100644 bsp/renesas/ra8m1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/mpu_armv8.h create mode 100644 bsp/renesas/ra8m1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/pac_armv81.h create mode 100644 bsp/renesas/ra8m1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/pmu_armv8.h create mode 100644 bsp/renesas/ra8m1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/tz_context.h create mode 100644 bsp/renesas/ra8m1-ek/ra/arm/CMSIS_5/LICENSE.txt create mode 100644 bsp/renesas/ra8m1-ek/ra/board/ra8m1_ek/board.h create mode 100644 bsp/renesas/ra8m1-ek/ra/board/ra8m1_ek/board_ethernet_phy.h create mode 100644 bsp/renesas/ra8m1-ek/ra/board/ra8m1_ek/board_init.c create mode 100644 bsp/renesas/ra8m1-ek/ra/board/ra8m1_ek/board_init.h create mode 100644 bsp/renesas/ra8m1-ek/ra/board/ra8m1_ek/board_leds.c create mode 100644 bsp/renesas/ra8m1-ek/ra/board/ra8m1_ek/board_leds.h create mode 100644 bsp/renesas/ra8m1-ek/ra/fsp/inc/api/bsp_api.h create mode 100644 bsp/renesas/ra8m1-ek/ra/fsp/inc/api/fsp_common_api.h create mode 100644 bsp/renesas/ra8m1-ek/ra/fsp/inc/api/r_ioport_api.h create mode 100644 bsp/renesas/ra8m1-ek/ra/fsp/inc/api/r_transfer_api.h create mode 100644 bsp/renesas/ra8m1-ek/ra/fsp/inc/api/r_uart_api.h create mode 100644 bsp/renesas/ra8m1-ek/ra/fsp/inc/fsp_features.h create mode 100644 bsp/renesas/ra8m1-ek/ra/fsp/inc/fsp_version.h create mode 100644 bsp/renesas/ra8m1-ek/ra/fsp/inc/instances/r_ioport.h create mode 100644 bsp/renesas/ra8m1-ek/ra/fsp/inc/instances/r_sci_b_uart.h create mode 100644 bsp/renesas/ra8m1-ek/ra/fsp/src/bsp/cmsis/Device/RENESAS/Include/R7FA8M1AH.h create mode 100644 bsp/renesas/ra8m1-ek/ra/fsp/src/bsp/cmsis/Device/RENESAS/Include/renesas.h create mode 100644 bsp/renesas/ra8m1-ek/ra/fsp/src/bsp/cmsis/Device/RENESAS/Include/system.h create mode 100644 bsp/renesas/ra8m1-ek/ra/fsp/src/bsp/cmsis/Device/RENESAS/Source/startup.c create mode 100644 bsp/renesas/ra8m1-ek/ra/fsp/src/bsp/cmsis/Device/RENESAS/Source/system.c create mode 100644 bsp/renesas/ra8m1-ek/ra/fsp/src/bsp/mcu/all/bsp_clocks.c create mode 100644 bsp/renesas/ra8m1-ek/ra/fsp/src/bsp/mcu/all/bsp_clocks.h create mode 100644 bsp/renesas/ra8m1-ek/ra/fsp/src/bsp/mcu/all/bsp_common.c create mode 100644 bsp/renesas/ra8m1-ek/ra/fsp/src/bsp/mcu/all/bsp_common.h create mode 100644 bsp/renesas/ra8m1-ek/ra/fsp/src/bsp/mcu/all/bsp_compiler_support.h create mode 100644 bsp/renesas/ra8m1-ek/ra/fsp/src/bsp/mcu/all/bsp_delay.c create mode 100644 bsp/renesas/ra8m1-ek/ra/fsp/src/bsp/mcu/all/bsp_delay.h create mode 100644 bsp/renesas/ra8m1-ek/ra/fsp/src/bsp/mcu/all/bsp_exceptions.h create mode 100644 bsp/renesas/ra8m1-ek/ra/fsp/src/bsp/mcu/all/bsp_group_irq.c create mode 100644 bsp/renesas/ra8m1-ek/ra/fsp/src/bsp/mcu/all/bsp_group_irq.h create mode 100644 bsp/renesas/ra8m1-ek/ra/fsp/src/bsp/mcu/all/bsp_guard.c create mode 100644 bsp/renesas/ra8m1-ek/ra/fsp/src/bsp/mcu/all/bsp_guard.h create mode 100644 bsp/renesas/ra8m1-ek/ra/fsp/src/bsp/mcu/all/bsp_io.c create mode 100644 bsp/renesas/ra8m1-ek/ra/fsp/src/bsp/mcu/all/bsp_io.h create mode 100644 bsp/renesas/ra8m1-ek/ra/fsp/src/bsp/mcu/all/bsp_irq.c create mode 100644 bsp/renesas/ra8m1-ek/ra/fsp/src/bsp/mcu/all/bsp_irq.h create mode 100644 bsp/renesas/ra8m1-ek/ra/fsp/src/bsp/mcu/all/bsp_mcu_api.h create mode 100644 bsp/renesas/ra8m1-ek/ra/fsp/src/bsp/mcu/all/bsp_module_stop.h create mode 100644 bsp/renesas/ra8m1-ek/ra/fsp/src/bsp/mcu/all/bsp_register_protection.c create mode 100644 bsp/renesas/ra8m1-ek/ra/fsp/src/bsp/mcu/all/bsp_register_protection.h create mode 100644 bsp/renesas/ra8m1-ek/ra/fsp/src/bsp/mcu/all/bsp_rom_registers.c create mode 100644 bsp/renesas/ra8m1-ek/ra/fsp/src/bsp/mcu/all/bsp_sbrk.c create mode 100644 bsp/renesas/ra8m1-ek/ra/fsp/src/bsp/mcu/all/bsp_security.c create mode 100644 bsp/renesas/ra8m1-ek/ra/fsp/src/bsp/mcu/all/bsp_security.h create mode 100644 bsp/renesas/ra8m1-ek/ra/fsp/src/bsp/mcu/all/bsp_tfu.h create mode 100644 bsp/renesas/ra8m1-ek/ra/fsp/src/bsp/mcu/ra8m1/bsp_elc.h create mode 100644 bsp/renesas/ra8m1-ek/ra/fsp/src/bsp/mcu/ra8m1/bsp_feature.h create mode 100644 bsp/renesas/ra8m1-ek/ra/fsp/src/bsp/mcu/ra8m1/bsp_mcu_info.h create mode 100644 bsp/renesas/ra8m1-ek/ra/fsp/src/bsp/mcu/ra8m1/bsp_override.h create mode 100644 bsp/renesas/ra8m1-ek/ra/fsp/src/r_ioport/r_ioport.c create mode 100644 bsp/renesas/ra8m1-ek/ra/fsp/src/r_sci_b_uart/r_sci_b_uart.c create mode 100644 bsp/renesas/ra8m1-ek/ra_cfg/SConscript create mode 100644 bsp/renesas/ra8m1-ek/ra_cfg/fsp_cfg/bsp/board_cfg.h create mode 100644 bsp/renesas/ra8m1-ek/ra_cfg/fsp_cfg/bsp/bsp_cfg.h create mode 100644 bsp/renesas/ra8m1-ek/ra_cfg/fsp_cfg/bsp/bsp_mcu_device_cfg.h create mode 100644 bsp/renesas/ra8m1-ek/ra_cfg/fsp_cfg/bsp/bsp_mcu_device_pn_cfg.h create mode 100644 bsp/renesas/ra8m1-ek/ra_cfg/fsp_cfg/bsp/bsp_mcu_family_cfg.h create mode 100644 bsp/renesas/ra8m1-ek/ra_cfg/fsp_cfg/bsp/bsp_pin_cfg.h create mode 100644 bsp/renesas/ra8m1-ek/ra_cfg/fsp_cfg/r_ioport_cfg.h create mode 100644 bsp/renesas/ra8m1-ek/ra_cfg/fsp_cfg/r_sci_b_uart_cfg.h create mode 100644 bsp/renesas/ra8m1-ek/ra_gen/SConscript create mode 100644 bsp/renesas/ra8m1-ek/ra_gen/bsp_clock_cfg.h create mode 100644 bsp/renesas/ra8m1-ek/ra_gen/common_data.c create mode 100644 bsp/renesas/ra8m1-ek/ra_gen/common_data.h create mode 100644 bsp/renesas/ra8m1-ek/ra_gen/hal_data.c create mode 100644 bsp/renesas/ra8m1-ek/ra_gen/hal_data.h create mode 100644 bsp/renesas/ra8m1-ek/ra_gen/main.c create mode 100644 bsp/renesas/ra8m1-ek/ra_gen/pin_data.c create mode 100644 bsp/renesas/ra8m1-ek/ra_gen/vector_data.c create mode 100644 bsp/renesas/ra8m1-ek/ra_gen/vector_data.h create mode 100644 bsp/renesas/ra8m1-ek/rasc_version.txt create mode 100644 bsp/renesas/ra8m1-ek/rtconfig.h create mode 100644 bsp/renesas/ra8m1-ek/rtconfig.py create mode 100644 bsp/renesas/ra8m1-ek/script/ac6/fsp_keep.via create mode 100644 bsp/renesas/ra8m1-ek/script/fsp.ld create mode 100644 bsp/renesas/ra8m1-ek/script/fsp.scat create mode 100644 bsp/renesas/ra8m1-ek/script/memory_regions.ld create mode 100644 bsp/renesas/ra8m1-ek/src/hal_entry.c create mode 100644 bsp/renesas/ra8m1-ek/template.uvguix.RTT create mode 100644 bsp/renesas/ra8m1-ek/template.uvoptx create mode 100644 bsp/renesas/ra8m1-ek/template.uvprojx create mode 100644 libcpu/arm/cortex-m85/SConscript create mode 100644 libcpu/arm/cortex-m85/context_rvds.S create mode 100644 libcpu/arm/cortex-m85/cpuport.c create mode 100644 libcpu/arm/cortex-m85/cpuport.h diff --git a/bsp/renesas/libraries/HAL_Drivers/config/drv_config.h b/bsp/renesas/libraries/HAL_Drivers/config/drv_config.h index b3e011e47447..2e41ac09e345 100644 --- a/bsp/renesas/libraries/HAL_Drivers/config/drv_config.h +++ b/bsp/renesas/libraries/HAL_Drivers/config/drv_config.h @@ -124,6 +124,11 @@ extern "C" #endif #endif /* SOC_SERIES_R7FA4M2 */ +#ifdef SOC_SERIES_R7FA8M85 +#include "ra8/uart_config.h" + +#endif /* SOC_SERIES_R7FA8M85 */ + #ifdef __cplusplus } #endif diff --git a/bsp/renesas/libraries/HAL_Drivers/config/ra8/uart_config.h b/bsp/renesas/libraries/HAL_Drivers/config/ra8/uart_config.h new file mode 100644 index 000000000000..a374567b3696 --- /dev/null +++ b/bsp/renesas/libraries/HAL_Drivers/config/ra8/uart_config.h @@ -0,0 +1,136 @@ +/* + * Copyright (c) 2006-2023, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2021-07-29 KyleChan first version + */ + +#ifndef __UART_CONFIG_H__ +#define __UART_CONFIG_H__ + +#include +#include "hal_data.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#if defined(BSP_USING_UART0) +#ifndef UART0_CONFIG +#define UART0_CONFIG \ + { \ + .name = "uart0", \ + .p_api_ctrl = &g_uart0_ctrl, \ + .p_cfg = &g_uart0_cfg, \ + } +#endif /* UART0_CONFIG */ +#endif /* BSP_USING_UART0 */ + +#if defined(BSP_USING_UART1) +#ifndef UART1_CONFIG +#define UART1_CONFIG \ + { \ + .name = "uart1", \ + .p_api_ctrl = &g_uart1_ctrl, \ + .p_cfg = &g_uart1_cfg, \ + } +#endif /* UART1_CONFIG */ +#endif /* BSP_USING_UART1 */ + +#if defined(BSP_USING_UART2) +#ifndef UART2_CONFIG +#define UART2_CONFIG \ + { \ + .name = "uart2", \ + .p_api_ctrl = &g_uart2_ctrl, \ + .p_cfg = &g_uart2_cfg, \ + } +#endif /* UART2_CONFIG */ +#endif /* BSP_USING_UART2 */ + +#if defined(BSP_USING_UART3) +#ifndef UART3_CONFIG +#define UART3_CONFIG \ + { \ + .name = "uart3", \ + .p_api_ctrl = &g_uart3_ctrl, \ + .p_cfg = &g_uart3_cfg, \ + } +#endif /* UART3_CONFIG */ +#endif /* BSP_USING_UART3 */ + +#if defined(BSP_USING_UART4) +#ifndef UART4_CONFIG +#define UART4_CONFIG \ + { \ + .name = "uart4", \ + .p_api_ctrl = &g_uart4_ctrl, \ + .p_cfg = &g_uart4_cfg, \ + } +#endif /* UART4_CONFIG */ +#endif /* BSP_USING_UART4 */ + +#if defined(BSP_USING_UART5) +#ifndef UART5_CONFIG +#define UART5_CONFIG \ + { \ + .name = "uart5", \ + .p_api_ctrl = &g_uart5_ctrl, \ + .p_cfg = &g_uart5_cfg, \ + } +#endif /* UART5_CONFIG */ +#endif /* BSP_USING_UART5 */ + + +#if defined(BSP_USING_UART6) +#ifndef UART6_CONFIG +#define UART6_CONFIG \ + { \ + .name = "uart6", \ + .p_api_ctrl = &g_uart6_ctrl, \ + .p_cfg = &g_uart6_cfg, \ + } +#endif /* UART6_CONFIG */ +#endif /* BSP_USING_UART6 */ + +#if defined(BSP_USING_UART7) +#ifndef UART7_CONFIG +#define UART7_CONFIG \ + { \ + .name = "uart7", \ + .p_api_ctrl = &g_uart7_ctrl, \ + .p_cfg = &g_uart7_cfg, \ + } +#endif /* UART7_CONFIG */ +#endif /* BSP_USING_UART7 */ + +#if defined(BSP_USING_UART8) +#ifndef UART8_CONFIG +#define UART8_CONFIG \ + { \ + .name = "uart8", \ + .p_api_ctrl = &g_uart8_ctrl, \ + .p_cfg = &g_uart8_cfg, \ + } +#endif /* UART8_CONFIG */ +#endif /* BSP_USING_UART8 */ + +#if defined(BSP_USING_UART9) +#ifndef UART9_CONFIG +#define UART9_CONFIG \ + { \ + .name = "uart9", \ + .p_api_ctrl = &g_uart9_ctrl, \ + .p_cfg = &g_uart9_cfg, \ + } +#endif /* UART9_CONFIG */ +#endif /* BSP_USING_UART9 */ + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/bsp/renesas/libraries/HAL_Drivers/drv_common.c b/bsp/renesas/libraries/HAL_Drivers/drv_common.c index 9d72becfdc55..dd2bc38e239b 100644 --- a/bsp/renesas/libraries/HAL_Drivers/drv_common.c +++ b/bsp/renesas/libraries/HAL_Drivers/drv_common.c @@ -111,7 +111,6 @@ void rt_hw_us_delay(rt_uint32_t us) */ rt_weak void rt_hw_board_init() { - rt_hw_systick_init(); /* Heap initialization */ diff --git a/bsp/renesas/libraries/HAL_Drivers/drv_sci.c b/bsp/renesas/libraries/HAL_Drivers/drv_sci.c index 66e35355caf3..f97f005eb0ac 100644 --- a/bsp/renesas/libraries/HAL_Drivers/drv_sci.c +++ b/bsp/renesas/libraries/HAL_Drivers/drv_sci.c @@ -65,39 +65,50 @@ struct ra_sci_param const void *ops; }; -rt_weak const struct rt_i2c_bus_device_ops sci_ops_i2c; -rt_weak const struct rt_spi_ops sci_ops_spi; -rt_weak const struct rt_uart_ops sci_ops_uart; +#ifdef RT_USING_I2C + rt_weak const struct rt_i2c_bus_device_ops sci_ops_i2c; +#endif +#ifdef RT_USING_SPI + rt_weak const struct rt_spi_ops sci_ops_spi; +#endif +#ifdef RT_USING_UART + rt_weak const struct rt_uart_ops sci_ops_uart; +#endif struct ra_sci_object { union { +#ifdef RT_USING_SPI struct { struct rt_spi_bus sbus; struct rt_spi_configuration *spi_cfg; }; +#endif +#ifdef RT_USING_I2C struct { struct rt_i2c_bus_device ibus; }; +#endif +#ifdef RT_USING_UART struct { struct rt_serial_device ubus; }; - +#endif }; const struct ra_sci_param *param; struct rt_event event; }; #ifndef BIT -#define BIT(idx) (1ul << (idx)) + #define BIT(idx) (1ul << (idx)) #endif #ifndef BITS -#define BITS(b,e) ((((uint32_t)-1)<<(b))&(((uint32_t)-1)>>(31-(e)))) + #define BITS(b,e) ((((uint32_t)-1)<<(b))&(((uint32_t)-1)>>(31-(e)))) #endif #define _TO_STR(_a) #_a @@ -218,11 +229,11 @@ static struct ra_sci_object sci_obj[RA_SCI_INDEX_MAX] = {0}; rt_used static rt_err_t ra_wait_complete(struct ra_sci_object *obj) { rt_uint32_t event = 0; - if(RT_EOK != rt_event_recv(&obj->event, RA_SCI_EVENT_ALL, RT_EVENT_FLAG_OR|RT_EVENT_FLAG_CLEAR, (rt_int32_t)rt_tick_from_millisecond(400), &event)) + if (RT_EOK != rt_event_recv(&obj->event, RA_SCI_EVENT_ALL, RT_EVENT_FLAG_OR | RT_EVENT_FLAG_CLEAR, (rt_int32_t)rt_tick_from_millisecond(400), &event)) { return -RT_ETIMEOUT; } - if((event & (RA_SCI_EVENT_ABORTED|RA_SCI_EVENT_ERROR)) == 0) + if ((event & (RA_SCI_EVENT_ABORTED | RA_SCI_EVENT_ERROR)) == 0) { return RT_EOK; } @@ -238,42 +249,42 @@ rt_used static rt_err_t ra_wait_complete(struct ra_sci_object *obj) const static int uart_buff_size[][2] = { #ifdef BSP_USING_SCI0_UART - {BSP_SCI0_UART_RX_BUFSIZE,BSP_SCI0_UART_TX_BUFSIZE}, + {BSP_SCI0_UART_RX_BUFSIZE, BSP_SCI0_UART_TX_BUFSIZE}, #endif #ifdef BSP_USING_SCI1_UART - {BSP_SCI1_UART_RX_BUFSIZE,BSP_SCI1_UART_TX_BUFSIZE}, + {BSP_SCI1_UART_RX_BUFSIZE, BSP_SCI1_UART_TX_BUFSIZE}, #endif #ifdef BSP_USING_SCI2_UART - {BSP_SCI2_UART_RX_BUFSIZE,BSP_SCI2_UART_TX_BUFSIZE}, + {BSP_SCI2_UART_RX_BUFSIZE, BSP_SCI2_UART_TX_BUFSIZE}, #endif #ifdef BSP_USING_SCI3_UART - {BSP_SCI3_UART_RX_BUFSIZE,BSP_SCI3_UART_TX_BUFSIZE}, + {BSP_SCI3_UART_RX_BUFSIZE, BSP_SCI3_UART_TX_BUFSIZE}, #endif #ifdef BSP_USING_SCI4_UART - {BSP_SCI4_UART_RX_BUFSIZE,BSP_SCI4_UART_TX_BUFSIZE}, + {BSP_SCI4_UART_RX_BUFSIZE, BSP_SCI4_UART_TX_BUFSIZE}, #endif #ifdef BSP_USING_SCI5_UART - {BSP_SCI5_UART_RX_BUFSIZE,BSP_SCI5_UART_TX_BUFSIZE}, + {BSP_SCI5_UART_RX_BUFSIZE, BSP_SCI5_UART_TX_BUFSIZE}, #endif #ifdef BSP_USING_SCI6_UART - {BSP_SCI6_UART_RX_BUFSIZE,BSP_SCI6_UART_TX_BUFSIZE}, + {BSP_SCI6_UART_RX_BUFSIZE, BSP_SCI6_UART_TX_BUFSIZE}, #endif #ifdef BSP_USING_SCI7_UART - {BSP_SCI7_UART_RX_BUFSIZE,BSP_SCI7_UART_TX_BUFSIZE}, + {BSP_SCI7_UART_RX_BUFSIZE, BSP_SCI7_UART_TX_BUFSIZE}, #endif #ifdef BSP_USING_SCI8_UART - {BSP_SCI8_UART_RX_BUFSIZE,BSP_SCI8_UART_TX_BUFSIZE}, + {BSP_SCI8_UART_RX_BUFSIZE, BSP_SCI8_UART_TX_BUFSIZE}, #endif #ifdef BSP_USING_SCI9_UART - {BSP_SCI9_UART_RX_BUFSIZE,BSP_SCI9_UART_TX_BUFSIZE}, + {BSP_SCI9_UART_RX_BUFSIZE, BSP_SCI9_UART_TX_BUFSIZE}, #endif - {0,0}, + {0, 0}, }; void sci_uart_irq_callback(uart_callback_args_t *p_args) { rt_interrupt_enter(); - if(NULL != p_args) + if (NULL != p_args) { struct ra_sci_object *obj = (struct ra_sci_object *)p_args->p_context; RT_ASSERT(obj != RT_NULL); @@ -306,13 +317,13 @@ static rt_err_t ra_uart_configure(struct rt_serial_device *serial, struct serial param = obj->param; RT_ASSERT(param != RT_NULL); - err = R_SCI_UART_Open((uart_ctrl_t * const)param->sci_ctrl, (uart_cfg_t * const)param->sci_cfg); + err = R_SCI_UART_Open((uart_ctrl_t *const)param->sci_ctrl, (uart_cfg_t *const)param->sci_cfg); if (FSP_SUCCESS != err) { return -RT_ERROR; } - err = R_SCI_UART_CallbackSet((uart_ctrl_t * const)param->sci_ctrl, sci_uart_irq_callback, obj, NULL); + err = R_SCI_UART_CallbackSet((uart_ctrl_t *const)param->sci_ctrl, sci_uart_irq_callback, obj, NULL); if (FSP_SUCCESS != err) { //LOG_W("R_SCI_UART_CallbackSet API failed,%d", err); @@ -350,9 +361,9 @@ static int ra_uart_getc(struct rt_serial_device *serial) } static rt_ssize_t ra_uart_transmit(struct rt_serial_device *serial, - rt_uint8_t *buf, - rt_size_t size, - rt_uint32_t tx_flag) + rt_uint8_t *buf, + rt_size_t size, + rt_uint32_t tx_flag) { RT_ASSERT(serial != RT_NULL); RT_ASSERT(buf != RT_NULL); @@ -392,15 +403,15 @@ void sci_i2c_irq_callback(i2c_master_callback_args_t *p_args) struct ra_sci_object *obj = (struct ra_sci_object *)p_args->p_context; uint32_t event = 0; RT_ASSERT(obj != RT_NULL); - switch(p_args->event) + switch (p_args->event) { - case I2C_MASTER_EVENT_ABORTED: + case I2C_MASTER_EVENT_ABORTED: event |= RA_SCI_EVENT_ABORTED; break; - case I2C_MASTER_EVENT_RX_COMPLETE: + case I2C_MASTER_EVENT_RX_COMPLETE: event |= RA_SCI_EVENT_RX_COMPLETE; break; - case I2C_MASTER_EVENT_TX_COMPLETE: + case I2C_MASTER_EVENT_TX_COMPLETE: event |= RA_SCI_EVENT_TX_COMPLETE; break; } @@ -412,8 +423,8 @@ void sci_i2c_irq_callback(i2c_master_callback_args_t *p_args) } static rt_ssize_t ra_i2c_mst_xfer(struct rt_i2c_bus_device *bus, - struct rt_i2c_msg msgs[], - rt_uint32_t num) + struct rt_i2c_msg msgs[], + rt_uint32_t num) { rt_size_t i; RT_ASSERT(bus != RT_NULL); @@ -438,27 +449,43 @@ static rt_ssize_t ra_i2c_mst_xfer(struct rt_i2c_bus_device *bus, { //LOG_E("10Bit not support"); //break; +#ifdef SOC_SERIES_R7FA8M85 + R_SCI_B_I2C_SlaveAddressSet(master_ctrl, msg->addr, I2C_MASTER_ADDR_MODE_10BIT); +#else R_SCI_I2C_SlaveAddressSet(master_ctrl, msg->addr, I2C_MASTER_ADDR_MODE_10BIT); +#endif } else { //master_ctrl->slave = msg->addr; +#ifdef SOC_SERIES_R7FA8M85 + R_SCI_B_I2C_SlaveAddressSet(master_ctrl, msg->addr, I2C_MASTER_ADDR_MODE_7BIT); +#else R_SCI_I2C_SlaveAddressSet(master_ctrl, msg->addr, I2C_MASTER_ADDR_MODE_7BIT); +#endif } if (msg->flags & RT_I2C_RD) { +#ifdef SOC_SERIES_R7FA8M85 + err = R_SCI_B_I2C_Read(master_ctrl, msg->buf, msg->len, restart); +#else err = R_SCI_I2C_Read(master_ctrl, msg->buf, msg->len, restart); +#endif } else { +#ifdef SOC_SERIES_R7FA8M85 + err = R_SCI_B_I2C_Write(master_ctrl, msg->buf, msg->len, restart); +#else err = R_SCI_I2C_Write(master_ctrl, msg->buf, msg->len, restart); +#endif } if (FSP_SUCCESS == err) { /* handle error */ err = ra_wait_complete(obj); - if(RT_EOK != err) + if (RT_EOK != err) { //LOG_E("POWER_CTL reg I2C write failed,%d,%d", err, i); break; @@ -481,10 +508,6 @@ const struct rt_i2c_bus_device_ops sci_ops_i2c = .slave_xfer = RT_NULL, .i2c_bus_control = RT_NULL }; -#else -void sci_i2c_irq_callback(i2c_master_callback_args_t *p_args) -{ -} #endif /** * @} @@ -504,20 +527,20 @@ void sci_spi_irq_callback(spi_callback_args_t *p_args) /* capture callback event for validating the i2c transfer event*/ struct ra_sci_object *obj = (struct ra_sci_object *)p_args->p_context; uint32_t event = 0; - switch(p_args->event) + switch (p_args->event) { - case SPI_EVENT_ERR_MODE_FAULT : - case SPI_EVENT_ERR_READ_OVERFLOW: - case SPI_EVENT_ERR_PARITY : - case SPI_EVENT_ERR_OVERRUN : - case SPI_EVENT_ERR_FRAMING : - case SPI_EVENT_ERR_MODE_UNDERRUN: + case SPI_EVENT_ERR_MODE_FAULT : + case SPI_EVENT_ERR_READ_OVERFLOW: + case SPI_EVENT_ERR_PARITY : + case SPI_EVENT_ERR_OVERRUN : + case SPI_EVENT_ERR_FRAMING : + case SPI_EVENT_ERR_MODE_UNDERRUN: event |= RA_SCI_EVENT_ERROR; break; - case SPI_EVENT_TRANSFER_ABORTED : + case SPI_EVENT_TRANSFER_ABORTED : event |= RA_SCI_EVENT_ABORTED; break; - case SPI_EVENT_TRANSFER_COMPLETE: + case SPI_EVENT_TRANSFER_COMPLETE: event |= RA_SCI_EVENT_TX_COMPLETE; break; } @@ -531,11 +554,11 @@ void sci_spi_irq_callback(spi_callback_args_t *p_args) static spi_bit_width_t ra_width_shift(rt_uint8_t data_width) { spi_bit_width_t bit_width = SPI_BIT_WIDTH_8_BITS; - if(data_width == 1) + if (data_width == 1) bit_width = SPI_BIT_WIDTH_8_BITS; - else if(data_width == 2) + else if (data_width == 2) bit_width = SPI_BIT_WIDTH_16_BITS; - else if(data_width == 4) + else if (data_width == 4) bit_width = SPI_BIT_WIDTH_32_BITS; return bit_width; @@ -636,7 +659,8 @@ static rt_err_t ra_hw_spi_configure(struct rt_spi_device *device, /**< init */ err = R_SCI_SPI_Open((spi_ctrl_t *)param->sci_ctrl, cfg); /* handle error */ - if(err == FSP_ERR_IN_USE) { + if (err == FSP_ERR_IN_USE) + { R_SCI_SPI_Close((spi_ctrl_t *)param->sci_ctrl); err = R_SCI_SPI_Open((spi_ctrl_t *)param->sci_ctrl, cfg); } @@ -703,10 +727,6 @@ const struct rt_spi_ops sci_ops_spi = .configure = ra_hw_spi_configure, .xfer = ra_spixfer, }; -#else -void sci_spi_irq_callback(spi_callback_args_t *p_args) -{ -} #endif /** * @} @@ -714,15 +734,14 @@ void sci_spi_irq_callback(spi_callback_args_t *p_args) static int ra_hw_sci_init(void) { - int bufsz_idx = 0; for (rt_uint8_t idx = 0; idx < RA_SCI_INDEX_MAX; idx++) { struct ra_sci_object *obj = &sci_obj[idx]; const struct ra_sci_param *param = &sci_param[idx]; obj->param = param; rt_err_t err; - #ifdef BSP_USING_SCIn_SPI - if((uint32_t)param->ops == (uint32_t)&sci_ops_spi) +#ifdef BSP_USING_SCIn_SPI + if ((uint32_t)param->ops == (uint32_t)&sci_ops_spi) { /**< register spi bus */ err = rt_spi_bus_register(&obj->sbus, param->bus_name, param->ops); @@ -733,56 +752,64 @@ static int ra_hw_sci_init(void) } } else - #endif - #ifdef BSP_USING_SCIn_I2C - if((uint32_t)param->ops == (uint32_t)&sci_ops_i2c) - { - obj->ibus.ops = param->ops; - obj->ibus.priv = 0; - /* opening IIC master module */ - err = R_SCI_I2C_Open((i2c_master_ctrl_t *)param->sci_ctrl, param->sci_cfg); - if(err != FSP_SUCCESS) - { - LOG_E("R_IIC_MASTER_Open API failed,%d", err); - continue; - } - err = R_SCI_I2C_CallbackSet((i2c_master_ctrl_t *)param->sci_ctrl, sci_i2c_irq_callback, obj, NULL); - /* handle error */ - if (FSP_SUCCESS != err) - { - LOG_E("R_SCI_I2C_CallbackSet API failed,%d", err); - continue; - } - - err = rt_i2c_bus_device_register(&obj->ibus, param->bus_name); - if (RT_EOK != err) - { - LOG_E("i2c bus %s register failed,%d", param->bus_name, err); - continue; - } - } - else - #endif - #ifdef BSP_USING_SCIn_UART - if((uint32_t)param->ops == (uint32_t)&sci_ops_uart) - { - if(rt_device_find(param->bus_name) != RT_NULL) - { - continue; - } - struct rt_serial_device *serial = &obj->ubus; - obj->ubus.ops = param->ops; - serial->config.rx_bufsz = uart_buff_size[bufsz_idx][0]; - serial->config.tx_bufsz = uart_buff_size[bufsz_idx][1]; - bufsz_idx ++; - err = rt_hw_serial_register(serial, param->bus_name, RT_DEVICE_FLAG_RDWR, RT_NULL); - if (RT_EOK != err) +#endif +#ifdef BSP_USING_SCIn_I2C + if ((uint32_t)param->ops == (uint32_t)&sci_ops_i2c) { - LOG_E("uart %s register failed,%d", param->bus_name, err); - continue; + obj->ibus.ops = param->ops; + obj->ibus.priv = 0; + /* opening IIC master module */ +#ifdef SOC_SERIES_R7FA8M85 + err = R_SCI_B_I2C_Open((i2c_master_ctrl_t *)param->sci_ctrl, param->sci_cfg); +#else + err = R_SCI_I2C_Open((i2c_master_ctrl_t *)param->sci_ctrl, param->sci_cfg); +#endif + if (err != FSP_SUCCESS) + { + LOG_E("R_IIC_MASTER_Open API failed,%d", err); + continue; + } +#ifdef SOC_SERIES_R7FA8M85 + err = R_SCI_B_I2C_CallbackSet((i2c_master_ctrl_t *)param->sci_ctrl, sci_i2c_irq_callback, obj, NULL); +#else + err = R_SCI_I2C_CallbackSet((i2c_master_ctrl_t *)param->sci_ctrl, sci_i2c_irq_callback, obj, NULL); +#endif + /* handle error */ + if (FSP_SUCCESS != err) + { + LOG_E("R_SCI_I2C_CallbackSet API failed,%d", err); + continue; + } + + err = rt_i2c_bus_device_register(&obj->ibus, param->bus_name); + if (RT_EOK != err) + { + LOG_E("i2c bus %s register failed,%d", param->bus_name, err); + continue; + } } - } - #endif + else +#endif +#ifdef BSP_USING_SCIn_UART + if ((uint32_t)param->ops == (uint32_t)&sci_ops_uart) + { + if (rt_device_find(param->bus_name) != RT_NULL) + { + continue; + } + struct rt_serial_device *serial = &obj->ubus; + obj->ubus.ops = param->ops; + serial->config.rx_bufsz = uart_buff_size[bufsz_idx][0]; + serial->config.tx_bufsz = uart_buff_size[bufsz_idx][1]; + bufsz_idx ++; + err = rt_hw_serial_register(serial, param->bus_name, RT_DEVICE_FLAG_RDWR, RT_NULL); + if (RT_EOK != err) + { + LOG_E("uart %s register failed,%d", param->bus_name, err); + continue; + } + } +#endif { } if (RT_EOK != rt_event_init(&obj->event, param->bus_name, RT_IPC_FLAG_PRIO)) @@ -806,9 +833,9 @@ rt_weak int rt_hw_usart_init(void) const struct ra_sci_param *param = &sci_param[idx]; obj->param = param; rt_err_t err; - if((uint32_t)param->ops == (uint32_t)&sci_ops_uart) + if ((uint32_t)param->ops == (uint32_t)&sci_ops_uart) { - if(rt_device_find(param->bus_name) != RT_NULL) + if (rt_device_find(param->bus_name) != RT_NULL) { continue; } diff --git a/bsp/renesas/libraries/HAL_Drivers/drv_usart_v2.c b/bsp/renesas/libraries/HAL_Drivers/drv_usart_v2.c index 612de612ed96..0e1e957222e9 100644 --- a/bsp/renesas/libraries/HAL_Drivers/drv_usart_v2.c +++ b/bsp/renesas/libraries/HAL_Drivers/drv_usart_v2.c @@ -1,11 +1,12 @@ /* - * Copyright (c) 2006-2021, RT-Thread Development Team + * Copyright (c) 2006-2023, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * * Change Logs: * Date Author Notes * 2021-07-29 KyleChan first version + * 2023-10-17 Rbb666 add ra8 adapt */ #include @@ -209,7 +210,11 @@ static rt_err_t ra_uart_configure(struct rt_serial_device *serial, struct serial uart = rt_container_of(serial, struct ra_uart, serial); RT_ASSERT(uart != RT_NULL); +#ifdef SOC_SERIES_R7FA8M85 + err = R_SCI_B_UART_Open(uart->config->p_api_ctrl, uart->config->p_cfg); +#else err = R_SCI_UART_Open(uart->config->p_api_ctrl, uart->config->p_cfg); +#endif if (FSP_SUCCESS != err) { return -RT_ERROR; @@ -231,10 +236,19 @@ static int ra_uart_putc(struct rt_serial_device *serial, char c) uart = rt_container_of(serial, struct ra_uart, serial); RT_ASSERT(uart != RT_NULL); +#ifdef SOC_SERIES_R7FA8M85 + sci_b_uart_instance_ctrl_t *p_ctrl = (sci_b_uart_instance_ctrl_t *)uart->config->p_api_ctrl; +#else sci_uart_instance_ctrl_t *p_ctrl = (sci_uart_instance_ctrl_t *)uart->config->p_api_ctrl; +#endif p_ctrl->p_reg->TDR = c; + +#ifdef SOC_SERIES_R7FA8M85 + while ((p_ctrl->p_reg->CSR_b.TEND) == 0); +#else while ((p_ctrl->p_reg->SSR_b.TEND) == 0); +#endif return RT_EOK; } @@ -245,15 +259,16 @@ static int ra_uart_getc(struct rt_serial_device *serial) } static rt_ssize_t ra_uart_transmit(struct rt_serial_device *serial, - rt_uint8_t *buf, - rt_size_t size, - rt_uint32_t tx_flag) + rt_uint8_t *buf, + rt_size_t size, + rt_uint32_t tx_flag) { struct ra_uart *uart; RT_ASSERT(serial != RT_NULL); RT_ASSERT(buf != RT_NULL); uart = rt_container_of(serial, struct ra_uart, serial); + RT_ASSERT(uart != RT_NULL); ra_uart_control(serial, RT_DEVICE_CTRL_SET_INT, (void *)tx_flag); diff --git a/bsp/renesas/libraries/Kconfig b/bsp/renesas/libraries/Kconfig index c36e192970e1..583f1e4a0bd2 100644 --- a/bsp/renesas/libraries/Kconfig +++ b/bsp/renesas/libraries/Kconfig @@ -32,3 +32,9 @@ config SOC_SERIES_R7FA4M2 select ARCH_ARM_CORTEX_M4 select SOC_FAMILY_RENESAS default n + +config SOC_SERIES_R7FA8M85 + bool + select ARCH_ARM_CORTEX_M85 + select SOC_FAMILY_RENESAS + default n diff --git a/bsp/renesas/ra8m1-ek/.api_xml b/bsp/renesas/ra8m1-ek/.api_xml new file mode 100644 index 000000000000..fc9bf0b30e49 --- /dev/null +++ b/bsp/renesas/ra8m1-ek/.api_xml @@ -0,0 +1,2 @@ + + diff --git a/bsp/renesas/ra8m1-ek/.config b/bsp/renesas/ra8m1-ek/.config new file mode 100644 index 000000000000..67c11ac4b2bc --- /dev/null +++ b/bsp/renesas/ra8m1-ek/.config @@ -0,0 +1,1048 @@ +# +# Automatically generated file; DO NOT EDIT. +# RT-Thread Configuration +# + +# +# RT-Thread Kernel +# +CONFIG_RT_NAME_MAX=8 +# CONFIG_RT_USING_ARCH_DATA_TYPE is not set +# CONFIG_RT_USING_SMART is not set +# CONFIG_RT_USING_AMP is not set +# CONFIG_RT_USING_SMP is not set +CONFIG_RT_ALIGN_SIZE=8 +# CONFIG_RT_THREAD_PRIORITY_8 is not set +CONFIG_RT_THREAD_PRIORITY_32=y +# CONFIG_RT_THREAD_PRIORITY_256 is not set +CONFIG_RT_THREAD_PRIORITY_MAX=32 +CONFIG_RT_TICK_PER_SECOND=1000 +CONFIG_RT_USING_OVERFLOW_CHECK=y +CONFIG_RT_USING_HOOK=y +CONFIG_RT_HOOK_USING_FUNC_PTR=y +CONFIG_RT_USING_IDLE_HOOK=y +CONFIG_RT_IDLE_HOOK_LIST_SIZE=4 +CONFIG_IDLE_THREAD_STACK_SIZE=256 +CONFIG_RT_USING_TIMER_SOFT=y +CONFIG_RT_TIMER_THREAD_PRIO=4 +CONFIG_RT_TIMER_THREAD_STACK_SIZE=512 + +# +# kservice optimization +# +# CONFIG_RT_KSERVICE_USING_STDLIB is not set +# CONFIG_RT_KSERVICE_USING_TINY_SIZE is not set +# CONFIG_RT_USING_TINY_FFS is not set +# CONFIG_RT_KPRINTF_USING_LONGLONG is not set +CONFIG_RT_USING_DEBUG=y +CONFIG_RT_DEBUGING_COLOR=y +CONFIG_RT_DEBUGING_CONTEXT=y +CONFIG_RT_DEBUGING_INIT=y + +# +# Inter-Thread communication +# +CONFIG_RT_USING_SEMAPHORE=y +CONFIG_RT_USING_MUTEX=y +CONFIG_RT_USING_EVENT=y +CONFIG_RT_USING_MAILBOX=y +CONFIG_RT_USING_MESSAGEQUEUE=y +# CONFIG_RT_USING_MESSAGEQUEUE_PRIORITY is not set +# CONFIG_RT_USING_SIGNALS is not set + +# +# Memory Management +# +# CONFIG_RT_USING_MEMPOOL is not set +CONFIG_RT_USING_SMALL_MEM=y +# CONFIG_RT_USING_SLAB is not set +# CONFIG_RT_USING_MEMHEAP is not set +CONFIG_RT_USING_SMALL_MEM_AS_HEAP=y +# CONFIG_RT_USING_MEMHEAP_AS_HEAP is not set +# CONFIG_RT_USING_SLAB_AS_HEAP is not set +# CONFIG_RT_USING_USERHEAP is not set +# CONFIG_RT_USING_NOHEAP is not set +# CONFIG_RT_USING_MEMTRACE is not set +# CONFIG_RT_USING_HEAP_ISR is not set +CONFIG_RT_USING_HEAP=y + +# +# Kernel Device Object +# +CONFIG_RT_USING_DEVICE=y +# CONFIG_RT_USING_DEVICE_OPS is not set +# CONFIG_RT_USING_DM is not set +# CONFIG_RT_USING_INTERRUPT_INFO is not set +CONFIG_RT_USING_CONSOLE=y +CONFIG_RT_CONSOLEBUF_SIZE=128 +CONFIG_RT_CONSOLE_DEVICE_NAME="uart9" +CONFIG_RT_VER_NUM=0x50100 +# CONFIG_RT_USING_STDC_ATOMIC is not set +# CONFIG_RT_USING_CACHE is not set +CONFIG_RT_USING_HW_ATOMIC=y +# CONFIG_ARCH_ARM_BOOTWITH_FLUSH_CACHE is not set +# CONFIG_ARCH_CPU_STACK_GROWS_UPWARD is not set +CONFIG_RT_USING_CPU_FFS=y +CONFIG_ARCH_ARM=y +CONFIG_ARCH_ARM_CORTEX_M=y +CONFIG_ARCH_ARM_CORTEX_M85=y + +# +# RT-Thread Components +# +CONFIG_RT_USING_COMPONENTS_INIT=y +CONFIG_RT_USING_USER_MAIN=y +CONFIG_RT_MAIN_THREAD_STACK_SIZE=2048 +CONFIG_RT_MAIN_THREAD_PRIORITY=10 +# CONFIG_RT_USING_LEGACY is not set +CONFIG_RT_USING_MSH=y +CONFIG_RT_USING_FINSH=y +CONFIG_FINSH_USING_MSH=y +CONFIG_FINSH_THREAD_NAME="tshell" +CONFIG_FINSH_THREAD_PRIORITY=20 +CONFIG_FINSH_THREAD_STACK_SIZE=4096 +CONFIG_FINSH_USING_HISTORY=y +CONFIG_FINSH_HISTORY_LINES=5 +CONFIG_FINSH_USING_SYMTAB=y +CONFIG_FINSH_CMD_SIZE=80 +CONFIG_MSH_USING_BUILT_IN_COMMANDS=y +CONFIG_FINSH_USING_DESCRIPTION=y +# CONFIG_FINSH_ECHO_DISABLE_DEFAULT is not set +# CONFIG_FINSH_USING_AUTH is not set +CONFIG_FINSH_ARG_MAX=10 +CONFIG_FINSH_USING_OPTION_COMPLETION=y + +# +# DFS: device virtual file system +# +# CONFIG_RT_USING_DFS is not set +# CONFIG_RT_USING_FAL is not set + +# +# Device Drivers +# +CONFIG_RT_USING_DEVICE_IPC=y +CONFIG_RT_UNAMED_PIPE_NUMBER=64 +# CONFIG_RT_USING_SYSTEM_WORKQUEUE is not set +CONFIG_RT_USING_SERIAL=y +# CONFIG_RT_USING_SERIAL_V1 is not set +CONFIG_RT_USING_SERIAL_V2=y +CONFIG_RT_SERIAL_USING_DMA=y +# CONFIG_RT_USING_CAN is not set +# CONFIG_RT_USING_HWTIMER is not set +# CONFIG_RT_USING_CPUTIME is not set +# CONFIG_RT_USING_I2C is not set +# CONFIG_RT_USING_PHY is not set +CONFIG_RT_USING_PIN=y +# CONFIG_RT_USING_ADC is not set +# CONFIG_RT_USING_DAC is not set +# CONFIG_RT_USING_NULL is not set +# CONFIG_RT_USING_ZERO is not set +# CONFIG_RT_USING_RANDOM is not set +# CONFIG_RT_USING_PWM is not set +# CONFIG_RT_USING_MTD_NOR is not set +# CONFIG_RT_USING_MTD_NAND is not set +# CONFIG_RT_USING_PM is not set +# CONFIG_RT_USING_FDT is not set +# CONFIG_RT_USING_RTC is not set +# CONFIG_RT_USING_SDIO is not set +# CONFIG_RT_USING_SPI is not set +# CONFIG_RT_USING_WDT is not set +# CONFIG_RT_USING_AUDIO is not set +# CONFIG_RT_USING_SENSOR is not set +# CONFIG_RT_USING_TOUCH is not set +# CONFIG_RT_USING_LCD is not set +# CONFIG_RT_USING_HWCRYPTO is not set +# CONFIG_RT_USING_PULSE_ENCODER is not set +# CONFIG_RT_USING_INPUT_CAPTURE is not set +# CONFIG_RT_USING_DEV_BUS is not set +# CONFIG_RT_USING_WIFI is not set +# CONFIG_RT_USING_VIRTIO is not set +# CONFIG_RT_USING_KTIME is not set + +# +# Using USB +# +# CONFIG_RT_USING_USB is not set +# CONFIG_RT_USING_USB_HOST is not set +# CONFIG_RT_USING_USB_DEVICE is not set + +# +# C/C++ and POSIX layer +# + +# +# ISO-ANSI C layer +# + +# +# Timezone and Daylight Saving Time +# +# CONFIG_RT_LIBC_USING_FULL_TZ_DST is not set +CONFIG_RT_LIBC_USING_LIGHT_TZ_DST=y +CONFIG_RT_LIBC_TZ_DEFAULT_HOUR=8 +CONFIG_RT_LIBC_TZ_DEFAULT_MIN=0 +CONFIG_RT_LIBC_TZ_DEFAULT_SEC=0 + +# +# POSIX (Portable Operating System Interface) layer +# +# CONFIG_RT_USING_POSIX_FS is not set +# CONFIG_RT_USING_POSIX_DELAY is not set +# CONFIG_RT_USING_POSIX_CLOCK is not set +# CONFIG_RT_USING_POSIX_TIMER is not set +# CONFIG_RT_USING_PTHREADS is not set +# CONFIG_RT_USING_MODULE is not set + +# +# Interprocess Communication (IPC) +# +# CONFIG_RT_USING_POSIX_PIPE is not set +# CONFIG_RT_USING_POSIX_MESSAGE_QUEUE is not set +# CONFIG_RT_USING_POSIX_MESSAGE_SEMAPHORE is not set + +# +# Socket is in the 'Network' category +# +# CONFIG_RT_USING_CPLUSPLUS is not set + +# +# Network +# +# CONFIG_RT_USING_SAL is not set +# CONFIG_RT_USING_NETDEV is not set +# CONFIG_RT_USING_LWIP is not set +# CONFIG_RT_USING_AT is not set + +# +# Utilities +# +# CONFIG_RT_USING_RYM is not set +# CONFIG_RT_USING_ULOG is not set +# CONFIG_RT_USING_UTEST is not set +# CONFIG_RT_USING_VAR_EXPORT is not set +# CONFIG_RT_USING_RESOURCE_ID is not set +# CONFIG_RT_USING_ADT is not set +# CONFIG_RT_USING_RT_LINK is not set +# CONFIG_RT_USING_VBUS is not set + +# +# Memory management +# +# CONFIG_RT_USING_MEMBLOCK is not set + +# +# RT-Thread Utestcases +# +# CONFIG_RT_USING_UTESTCASES is not set + +# +# RT-Thread online packages +# + +# +# IoT - internet of things +# +# CONFIG_PKG_USING_LWIP is not set +# CONFIG_PKG_USING_LORAWAN_DRIVER is not set +# CONFIG_PKG_USING_PAHOMQTT is not set +# CONFIG_PKG_USING_UMQTT is not set +# CONFIG_PKG_USING_WEBCLIENT is not set +# CONFIG_PKG_USING_WEBNET is not set +# CONFIG_PKG_USING_MONGOOSE is not set +# CONFIG_PKG_USING_MYMQTT is not set +# CONFIG_PKG_USING_KAWAII_MQTT is not set +# CONFIG_PKG_USING_BC28_MQTT is not set +# CONFIG_PKG_USING_WEBTERMINAL is not set +# CONFIG_PKG_USING_FREEMODBUS is not set +# CONFIG_PKG_USING_NANOPB is not set + +# +# Wi-Fi +# + +# +# Marvell WiFi +# +# CONFIG_PKG_USING_WLANMARVELL is not set + +# +# Wiced WiFi +# +# CONFIG_PKG_USING_WLAN_WICED is not set +# CONFIG_PKG_USING_RW007 is not set + +# +# CYW43012 WiFi +# +# CONFIG_PKG_USING_WLAN_CYW43012 is not set +# CONFIG_PKG_USING_COAP is not set +# CONFIG_PKG_USING_NOPOLL is not set +# CONFIG_PKG_USING_NETUTILS is not set +# CONFIG_PKG_USING_CMUX is not set +# CONFIG_PKG_USING_PPP_DEVICE is not set +# CONFIG_PKG_USING_AT_DEVICE is not set +# CONFIG_PKG_USING_ATSRV_SOCKET is not set +# CONFIG_PKG_USING_WIZNET is not set +# CONFIG_PKG_USING_ZB_COORDINATOR is not set + +# +# IoT Cloud +# +# CONFIG_PKG_USING_ONENET is not set +# CONFIG_PKG_USING_GAGENT_CLOUD is not set +# CONFIG_PKG_USING_ALI_IOTKIT is not set +# CONFIG_PKG_USING_AZURE is not set +# CONFIG_PKG_USING_TENCENT_IOT_EXPLORER is not set +# CONFIG_PKG_USING_JIOT-C-SDK is not set +# CONFIG_PKG_USING_UCLOUD_IOT_SDK is not set +# CONFIG_PKG_USING_JOYLINK is not set +# CONFIG_PKG_USING_EZ_IOT_OS is not set +# CONFIG_PKG_USING_IOTSHARP_SDK is not set +# CONFIG_PKG_USING_NIMBLE is not set +# CONFIG_PKG_USING_LLSYNC_SDK_ADAPTER is not set +# CONFIG_PKG_USING_OTA_DOWNLOADER is not set +# CONFIG_PKG_USING_IPMSG is not set +# CONFIG_PKG_USING_LSSDP is not set +# CONFIG_PKG_USING_AIRKISS_OPEN is not set +# CONFIG_PKG_USING_LIBRWS is not set +# CONFIG_PKG_USING_TCPSERVER is not set +# CONFIG_PKG_USING_PROTOBUF_C is not set +# CONFIG_PKG_USING_DLT645 is not set +# CONFIG_PKG_USING_QXWZ is not set +# CONFIG_PKG_USING_SMTP_CLIENT is not set +# CONFIG_PKG_USING_ABUP_FOTA is not set +# CONFIG_PKG_USING_LIBCURL2RTT is not set +# CONFIG_PKG_USING_CAPNP is not set +# CONFIG_PKG_USING_AGILE_TELNET is not set +# CONFIG_PKG_USING_NMEALIB is not set +# CONFIG_PKG_USING_PDULIB is not set +# CONFIG_PKG_USING_BTSTACK is not set +# CONFIG_PKG_USING_LORAWAN_ED_STACK is not set +# CONFIG_PKG_USING_WAYZ_IOTKIT is not set +# CONFIG_PKG_USING_MAVLINK is not set +# CONFIG_PKG_USING_BSAL is not set +# CONFIG_PKG_USING_AGILE_MODBUS is not set +# CONFIG_PKG_USING_AGILE_FTP is not set +# CONFIG_PKG_USING_EMBEDDEDPROTO is not set +# CONFIG_PKG_USING_RT_LINK_HW is not set +# CONFIG_PKG_USING_RYANMQTT is not set +# CONFIG_PKG_USING_RYANW5500 is not set +# CONFIG_PKG_USING_LORA_PKT_FWD is not set +# CONFIG_PKG_USING_LORA_GW_DRIVER_LIB is not set +# CONFIG_PKG_USING_LORA_PKT_SNIFFER is not set +# CONFIG_PKG_USING_HM is not set +# CONFIG_PKG_USING_SMALL_MODBUS is not set +# CONFIG_PKG_USING_NET_SERVER is not set +# CONFIG_PKG_USING_ZFTP is not set +# CONFIG_PKG_USING_WOL is not set +# CONFIG_PKG_USING_ZEPHYR_POLLING is not set +# CONFIG_PKG_USING_MATTER_ADAPTATION_LAYER is not set + +# +# security packages +# +# CONFIG_PKG_USING_MBEDTLS is not set +# CONFIG_PKG_USING_LIBSODIUM is not set +# CONFIG_PKG_USING_LIBHYDROGEN is not set +# CONFIG_PKG_USING_TINYCRYPT is not set +# CONFIG_PKG_USING_TFM is not set +# CONFIG_PKG_USING_YD_CRYPTO is not set + +# +# language packages +# + +# +# JSON: JavaScript Object Notation, a lightweight data-interchange format +# +# CONFIG_PKG_USING_CJSON is not set +# CONFIG_PKG_USING_LJSON is not set +# CONFIG_PKG_USING_RT_CJSON_TOOLS is not set +# CONFIG_PKG_USING_RAPIDJSON is not set +# CONFIG_PKG_USING_JSMN is not set +# CONFIG_PKG_USING_AGILE_JSMN is not set +# CONFIG_PKG_USING_PARSON is not set + +# +# XML: Extensible Markup Language +# +# CONFIG_PKG_USING_SIMPLE_XML is not set +# CONFIG_PKG_USING_EZXML is not set +# CONFIG_PKG_USING_LUATOS_SOC is not set +# CONFIG_PKG_USING_LUA is not set +# CONFIG_PKG_USING_JERRYSCRIPT is not set +# CONFIG_PKG_USING_MICROPYTHON is not set +# CONFIG_PKG_USING_PIKASCRIPT is not set +# CONFIG_PKG_USING_RTT_RUST is not set + +# +# multimedia packages +# + +# +# LVGL: powerful and easy-to-use embedded GUI library +# +# CONFIG_PKG_USING_LVGL is not set +# CONFIG_PKG_USING_LV_MUSIC_DEMO is not set +# CONFIG_PKG_USING_GUI_GUIDER_DEMO is not set + +# +# u8g2: a monochrome graphic library +# +# CONFIG_PKG_USING_U8G2_OFFICIAL is not set +# CONFIG_PKG_USING_U8G2 is not set +# CONFIG_PKG_USING_OPENMV is not set +# CONFIG_PKG_USING_MUPDF is not set +# CONFIG_PKG_USING_STEMWIN is not set +# CONFIG_PKG_USING_WAVPLAYER is not set +# CONFIG_PKG_USING_TJPGD is not set +# CONFIG_PKG_USING_PDFGEN is not set +# CONFIG_PKG_USING_HELIX is not set +# CONFIG_PKG_USING_AZUREGUIX is not set +# CONFIG_PKG_USING_TOUCHGFX2RTT is not set +# CONFIG_PKG_USING_NUEMWIN is not set +# CONFIG_PKG_USING_MP3PLAYER is not set +# CONFIG_PKG_USING_TINYJPEG is not set +# CONFIG_PKG_USING_UGUI is not set +# CONFIG_PKG_USING_MCURSES is not set +# CONFIG_PKG_USING_TERMBOX is not set +# CONFIG_PKG_USING_VT100 is not set +# CONFIG_PKG_USING_QRCODE is not set +# CONFIG_PKG_USING_GUIENGINE is not set +# CONFIG_PKG_USING_3GPP_AMRNB is not set + +# +# tools packages +# +# CONFIG_PKG_USING_CMBACKTRACE is not set +# CONFIG_PKG_USING_EASYFLASH is not set +# CONFIG_PKG_USING_EASYLOGGER is not set +# CONFIG_PKG_USING_SYSTEMVIEW is not set +# CONFIG_PKG_USING_SEGGER_RTT is not set +# CONFIG_PKG_USING_RTT_AUTO_EXE_CMD is not set +# CONFIG_PKG_USING_RDB is not set +# CONFIG_PKG_USING_ULOG_EASYFLASH is not set +# CONFIG_PKG_USING_LOGMGR is not set +# CONFIG_PKG_USING_ADBD is not set +# CONFIG_PKG_USING_COREMARK is not set +# CONFIG_PKG_USING_DHRYSTONE is not set +# CONFIG_PKG_USING_MEMORYPERF is not set +# CONFIG_PKG_USING_NR_MICRO_SHELL is not set +# CONFIG_PKG_USING_CHINESE_FONT_LIBRARY is not set +# CONFIG_PKG_USING_LUNAR_CALENDAR is not set +# CONFIG_PKG_USING_BS8116A is not set +# CONFIG_PKG_USING_GPS_RMC is not set +# CONFIG_PKG_USING_URLENCODE is not set +# CONFIG_PKG_USING_UMCN is not set +# CONFIG_PKG_USING_LWRB2RTT is not set +# CONFIG_PKG_USING_CPU_USAGE is not set +# CONFIG_PKG_USING_GBK2UTF8 is not set +# CONFIG_PKG_USING_VCONSOLE is not set +# CONFIG_PKG_USING_KDB is not set +# CONFIG_PKG_USING_WAMR is not set +# CONFIG_PKG_USING_MICRO_XRCE_DDS_CLIENT is not set +# CONFIG_PKG_USING_LWLOG is not set +# CONFIG_PKG_USING_ANV_TRACE is not set +# CONFIG_PKG_USING_ANV_MEMLEAK is not set +# CONFIG_PKG_USING_ANV_TESTSUIT is not set +# CONFIG_PKG_USING_ANV_BENCH is not set +# CONFIG_PKG_USING_DEVMEM is not set +# CONFIG_PKG_USING_REGEX is not set +# CONFIG_PKG_USING_MEM_SANDBOX is not set +# CONFIG_PKG_USING_SOLAR_TERMS is not set +# CONFIG_PKG_USING_GAN_ZHI is not set +# CONFIG_PKG_USING_FDT is not set +# CONFIG_PKG_USING_CBOX is not set +# CONFIG_PKG_USING_SNOWFLAKE is not set +# CONFIG_PKG_USING_HASH_MATCH is not set +# CONFIG_PKG_USING_ARMV7M_DWT_TOOL is not set +# CONFIG_PKG_USING_VOFA_PLUS is not set +# CONFIG_PKG_USING_ZDEBUG is not set + +# +# system packages +# + +# +# enhanced kernel services +# +# CONFIG_PKG_USING_RT_MEMCPY_CM is not set +# CONFIG_PKG_USING_RT_KPRINTF_THREADSAFE is not set +# CONFIG_PKG_USING_RT_VSNPRINTF_FULL is not set + +# +# acceleration: Assembly language or algorithmic acceleration packages +# +# CONFIG_PKG_USING_QFPLIB_M0_FULL is not set +# CONFIG_PKG_USING_QFPLIB_M0_TINY is not set +# CONFIG_PKG_USING_QFPLIB_M3 is not set + +# +# CMSIS: ARM Cortex-M Microcontroller Software Interface Standard +# +# CONFIG_PKG_USING_CMSIS_5 is not set +# CONFIG_PKG_USING_CMSIS_RTOS1 is not set +# CONFIG_PKG_USING_CMSIS_RTOS2 is not set + +# +# Micrium: Micrium software products porting for RT-Thread +# +# CONFIG_PKG_USING_UCOSIII_WRAPPER is not set +# CONFIG_PKG_USING_UCOSII_WRAPPER is not set +# CONFIG_PKG_USING_UC_CRC is not set +# CONFIG_PKG_USING_UC_CLK is not set +# CONFIG_PKG_USING_UC_COMMON is not set +# CONFIG_PKG_USING_UC_MODBUS is not set +# CONFIG_PKG_USING_FREERTOS_WRAPPER is not set +# CONFIG_PKG_USING_LITEOS_SDK is not set +# CONFIG_PKG_USING_TZ_DATABASE is not set +# CONFIG_PKG_USING_CAIRO is not set +# CONFIG_PKG_USING_PIXMAN is not set +# CONFIG_PKG_USING_PARTITION is not set +# CONFIG_PKG_USING_PERF_COUNTER is not set +# CONFIG_PKG_USING_FLASHDB is not set +# CONFIG_PKG_USING_SQLITE is not set +# CONFIG_PKG_USING_RTI is not set +# CONFIG_PKG_USING_DFS_YAFFS is not set +# CONFIG_PKG_USING_LITTLEFS is not set +# CONFIG_PKG_USING_DFS_JFFS2 is not set +# CONFIG_PKG_USING_DFS_UFFS is not set +# CONFIG_PKG_USING_LWEXT4 is not set +# CONFIG_PKG_USING_THREAD_POOL is not set +# CONFIG_PKG_USING_ROBOTS is not set +# CONFIG_PKG_USING_EV is not set +# CONFIG_PKG_USING_SYSWATCH is not set +# CONFIG_PKG_USING_SYS_LOAD_MONITOR is not set +# CONFIG_PKG_USING_PLCCORE is not set +# CONFIG_PKG_USING_RAMDISK is not set +# CONFIG_PKG_USING_MININI is not set +# CONFIG_PKG_USING_QBOOT is not set +# CONFIG_PKG_USING_PPOOL is not set +# CONFIG_PKG_USING_OPENAMP is not set +# CONFIG_PKG_USING_RPMSG_LITE is not set +# CONFIG_PKG_USING_LPM is not set +# CONFIG_PKG_USING_TLSF is not set +# CONFIG_PKG_USING_EVENT_RECORDER is not set +# CONFIG_PKG_USING_ARM_2D is not set +# CONFIG_PKG_USING_MCUBOOT is not set +# CONFIG_PKG_USING_TINYUSB is not set +# CONFIG_PKG_USING_CHERRYUSB is not set +# CONFIG_PKG_USING_KMULTI_RTIMER is not set +# CONFIG_PKG_USING_TFDB is not set +# CONFIG_PKG_USING_QPC is not set +# CONFIG_PKG_USING_AGILE_UPGRADE is not set +# CONFIG_PKG_USING_FLASH_BLOB is not set +# CONFIG_PKG_USING_MLIBC is not set +# CONFIG_PKG_USING_TASK_MSG_BUS is not set +# CONFIG_PKG_USING_SFDB is not set + +# +# peripheral libraries and drivers +# + +# +# sensors drivers +# +# CONFIG_PKG_USING_LSM6DSM is not set +# CONFIG_PKG_USING_LSM6DSL is not set +# CONFIG_PKG_USING_LPS22HB is not set +# CONFIG_PKG_USING_HTS221 is not set +# CONFIG_PKG_USING_LSM303AGR is not set +# CONFIG_PKG_USING_BME280 is not set +# CONFIG_PKG_USING_BME680 is not set +# CONFIG_PKG_USING_BMA400 is not set +# CONFIG_PKG_USING_BMI160_BMX160 is not set +# CONFIG_PKG_USING_SPL0601 is not set +# CONFIG_PKG_USING_MS5805 is not set +# CONFIG_PKG_USING_DA270 is not set +# CONFIG_PKG_USING_DF220 is not set +# CONFIG_PKG_USING_HSHCAL001 is not set +# CONFIG_PKG_USING_BH1750 is not set +# CONFIG_PKG_USING_MPU6XXX is not set +# CONFIG_PKG_USING_AHT10 is not set +# CONFIG_PKG_USING_AP3216C is not set +# CONFIG_PKG_USING_TSL4531 is not set +# CONFIG_PKG_USING_DS18B20 is not set +# CONFIG_PKG_USING_DHT11 is not set +# CONFIG_PKG_USING_DHTXX is not set +# CONFIG_PKG_USING_GY271 is not set +# CONFIG_PKG_USING_GP2Y10 is not set +# CONFIG_PKG_USING_SGP30 is not set +# CONFIG_PKG_USING_HDC1000 is not set +# CONFIG_PKG_USING_BMP180 is not set +# CONFIG_PKG_USING_BMP280 is not set +# CONFIG_PKG_USING_SHTC1 is not set +# CONFIG_PKG_USING_BMI088 is not set +# CONFIG_PKG_USING_HMC5883 is not set +# CONFIG_PKG_USING_MAX6675 is not set +# CONFIG_PKG_USING_TMP1075 is not set +# CONFIG_PKG_USING_SR04 is not set +# CONFIG_PKG_USING_CCS811 is not set +# CONFIG_PKG_USING_PMSXX is not set +# CONFIG_PKG_USING_RT3020 is not set +# CONFIG_PKG_USING_MLX90632 is not set +# CONFIG_PKG_USING_MLX90393 is not set +# CONFIG_PKG_USING_MLX90392 is not set +# CONFIG_PKG_USING_MLX90397 is not set +# CONFIG_PKG_USING_MS5611 is not set +# CONFIG_PKG_USING_MAX31865 is not set +# CONFIG_PKG_USING_VL53L0X is not set +# CONFIG_PKG_USING_INA260 is not set +# CONFIG_PKG_USING_MAX30102 is not set +# CONFIG_PKG_USING_INA226 is not set +# CONFIG_PKG_USING_LIS2DH12 is not set +# CONFIG_PKG_USING_HS300X is not set +# CONFIG_PKG_USING_ZMOD4410 is not set +# CONFIG_PKG_USING_ISL29035 is not set +# CONFIG_PKG_USING_MMC3680KJ is not set +# CONFIG_PKG_USING_QMP6989 is not set +# CONFIG_PKG_USING_BALANCE is not set +# CONFIG_PKG_USING_SHT2X is not set +# CONFIG_PKG_USING_SHT3X is not set +# CONFIG_PKG_USING_SHT4X is not set +# CONFIG_PKG_USING_AD7746 is not set +# CONFIG_PKG_USING_ADT74XX is not set +# CONFIG_PKG_USING_MAX17048 is not set +# CONFIG_PKG_USING_AS7341 is not set +# CONFIG_PKG_USING_CW2015 is not set +# CONFIG_PKG_USING_ICM20608 is not set +# CONFIG_PKG_USING_PAJ7620 is not set +# CONFIG_PKG_USING_STHS34PF80 is not set + +# +# touch drivers +# +# CONFIG_PKG_USING_GT9147 is not set +# CONFIG_PKG_USING_GT1151 is not set +# CONFIG_PKG_USING_GT917S is not set +# CONFIG_PKG_USING_GT911 is not set +# CONFIG_PKG_USING_FT6206 is not set +# CONFIG_PKG_USING_FT5426 is not set +# CONFIG_PKG_USING_FT6236 is not set +# CONFIG_PKG_USING_XPT2046_TOUCH is not set +# CONFIG_PKG_USING_CST816X is not set +# CONFIG_PKG_USING_REALTEK_AMEBA is not set +# CONFIG_PKG_USING_STM32_SDIO is not set +# CONFIG_PKG_USING_ESP_IDF is not set +# CONFIG_PKG_USING_BUTTON is not set +# CONFIG_PKG_USING_PCF8574 is not set +# CONFIG_PKG_USING_SX12XX is not set +# CONFIG_PKG_USING_SIGNAL_LED is not set +# CONFIG_PKG_USING_LEDBLINK is not set +# CONFIG_PKG_USING_LITTLED is not set +# CONFIG_PKG_USING_LKDGUI is not set +# CONFIG_PKG_USING_NRF5X_SDK is not set +# CONFIG_PKG_USING_NRFX is not set + +# +# Kendryte SDK +# +# CONFIG_PKG_USING_K210_SDK is not set +# CONFIG_PKG_USING_KENDRYTE_SDK is not set +# CONFIG_PKG_USING_INFRARED is not set +# CONFIG_PKG_USING_MULTI_INFRARED is not set +# CONFIG_PKG_USING_AGILE_BUTTON is not set +# CONFIG_PKG_USING_AGILE_LED is not set +# CONFIG_PKG_USING_AT24CXX is not set +# CONFIG_PKG_USING_MOTIONDRIVER2RTT is not set +# CONFIG_PKG_USING_PCA9685 is not set +# CONFIG_PKG_USING_ILI9341 is not set +# CONFIG_PKG_USING_I2C_TOOLS is not set +# CONFIG_PKG_USING_NRF24L01 is not set +# CONFIG_PKG_USING_RPLIDAR is not set +# CONFIG_PKG_USING_AS608 is not set +# CONFIG_PKG_USING_RC522 is not set +# CONFIG_PKG_USING_WS2812B is not set +# CONFIG_PKG_USING_EMBARC_BSP is not set +# CONFIG_PKG_USING_EXTERN_RTC_DRIVERS is not set +# CONFIG_PKG_USING_MULTI_RTIMER is not set +# CONFIG_PKG_USING_MAX7219 is not set +# CONFIG_PKG_USING_BEEP is not set +# CONFIG_PKG_USING_EASYBLINK is not set +# CONFIG_PKG_USING_PMS_SERIES is not set +# CONFIG_PKG_USING_CAN_YMODEM is not set +# CONFIG_PKG_USING_LORA_RADIO_DRIVER is not set +# CONFIG_PKG_USING_QLED is not set +# CONFIG_PKG_USING_AGILE_CONSOLE is not set +# CONFIG_PKG_USING_LD3320 is not set +# CONFIG_PKG_USING_WK2124 is not set +# CONFIG_PKG_USING_LY68L6400 is not set +# CONFIG_PKG_USING_DM9051 is not set +# CONFIG_PKG_USING_SSD1306 is not set +# CONFIG_PKG_USING_QKEY is not set +# CONFIG_PKG_USING_RS485 is not set +# CONFIG_PKG_USING_RS232 is not set +# CONFIG_PKG_USING_NES is not set +# CONFIG_PKG_USING_VIRTUAL_SENSOR is not set +# CONFIG_PKG_USING_VDEVICE is not set +# CONFIG_PKG_USING_SGM706 is not set +# CONFIG_PKG_USING_STM32WB55_SDK is not set +# CONFIG_PKG_USING_RDA58XX is not set +# CONFIG_PKG_USING_LIBNFC is not set +# CONFIG_PKG_USING_MFOC is not set +# CONFIG_PKG_USING_TMC51XX is not set +# CONFIG_PKG_USING_TCA9534 is not set +# CONFIG_PKG_USING_KOBUKI is not set +# CONFIG_PKG_USING_ROSSERIAL is not set +# CONFIG_PKG_USING_MICRO_ROS is not set +# CONFIG_PKG_USING_MCP23008 is not set +# CONFIG_PKG_USING_BLUETRUM_SDK is not set +# CONFIG_PKG_USING_MISAKA_AT24CXX is not set +# CONFIG_PKG_USING_MISAKA_RGB_BLING is not set +# CONFIG_PKG_USING_LORA_MODEM_DRIVER is not set +# CONFIG_PKG_USING_SOFT_SERIAL is not set +# CONFIG_PKG_USING_MB85RS16 is not set +# CONFIG_PKG_USING_RFM300 is not set +# CONFIG_PKG_USING_IO_INPUT_FILTER is not set +# CONFIG_PKG_USING_RASPBERRYPI_PICO_SDK is not set +# CONFIG_PKG_USING_LRF_NV7LIDAR is not set +# CONFIG_PKG_USING_AIP650 is not set +# CONFIG_PKG_USING_FINGERPRINT is not set +# CONFIG_PKG_USING_BT_ECB02C is not set +# CONFIG_PKG_USING_UAT is not set +# CONFIG_PKG_USING_ST7789 is not set +# CONFIG_PKG_USING_SPI_TOOLS is not set + +# +# AI packages +# +# CONFIG_PKG_USING_LIBANN is not set +# CONFIG_PKG_USING_NNOM is not set +# CONFIG_PKG_USING_ONNX_BACKEND is not set +# CONFIG_PKG_USING_ONNX_PARSER is not set +# CONFIG_PKG_USING_TENSORFLOWLITEMICRO is not set +# CONFIG_PKG_USING_ELAPACK is not set +# CONFIG_PKG_USING_ULAPACK is not set +# CONFIG_PKG_USING_QUEST is not set +# CONFIG_PKG_USING_NAXOS is not set + +# +# Signal Processing and Control Algorithm Packages +# +# CONFIG_PKG_USING_FIRE_PID_CURVE is not set +# CONFIG_PKG_USING_QPID is not set +# CONFIG_PKG_USING_UKAL is not set +# CONFIG_PKG_USING_DIGITALCTRL is not set +# CONFIG_PKG_USING_KISSFFT is not set +# CONFIG_PKG_USING_CMSIS_DSP is not set + +# +# miscellaneous packages +# + +# +# project laboratory +# + +# +# samples: kernel and components samples +# +# CONFIG_PKG_USING_KERNEL_SAMPLES is not set +# CONFIG_PKG_USING_FILESYSTEM_SAMPLES is not set +# CONFIG_PKG_USING_NETWORK_SAMPLES is not set +# CONFIG_PKG_USING_PERIPHERAL_SAMPLES is not set + +# +# entertainment: terminal games and other interesting software packages +# +# CONFIG_PKG_USING_CMATRIX is not set +# CONFIG_PKG_USING_SL is not set +# CONFIG_PKG_USING_CAL is not set +# CONFIG_PKG_USING_ACLOCK is not set +# CONFIG_PKG_USING_THREES is not set +# CONFIG_PKG_USING_2048 is not set +# CONFIG_PKG_USING_SNAKE is not set +# CONFIG_PKG_USING_TETRIS is not set +# CONFIG_PKG_USING_DONUT is not set +# CONFIG_PKG_USING_COWSAY is not set +# CONFIG_PKG_USING_MORSE is not set +# CONFIG_PKG_USING_LIBCSV is not set +# CONFIG_PKG_USING_OPTPARSE is not set +# CONFIG_PKG_USING_FASTLZ is not set +# CONFIG_PKG_USING_MINILZO is not set +# CONFIG_PKG_USING_QUICKLZ is not set +# CONFIG_PKG_USING_LZMA is not set +# CONFIG_PKG_USING_MULTIBUTTON is not set +# CONFIG_PKG_USING_FLEXIBLE_BUTTON is not set +# CONFIG_PKG_USING_CANFESTIVAL is not set +# CONFIG_PKG_USING_ZLIB is not set +# CONFIG_PKG_USING_MINIZIP is not set +# CONFIG_PKG_USING_HEATSHRINK is not set +# CONFIG_PKG_USING_DSTR is not set +# CONFIG_PKG_USING_TINYFRAME is not set +# CONFIG_PKG_USING_KENDRYTE_DEMO is not set +# CONFIG_PKG_USING_UPACKER is not set +# CONFIG_PKG_USING_UPARAM is not set +# CONFIG_PKG_USING_HELLO is not set +# CONFIG_PKG_USING_VI is not set +# CONFIG_PKG_USING_KI is not set +# CONFIG_PKG_USING_ARMv7M_DWT is not set +# CONFIG_PKG_USING_CRCLIB is not set +# CONFIG_PKG_USING_LWGPS is not set +# CONFIG_PKG_USING_STATE_MACHINE is not set +# CONFIG_PKG_USING_DESIGN_PATTERN is not set +# CONFIG_PKG_USING_CONTROLLER is not set +# CONFIG_PKG_USING_PHASE_LOCKED_LOOP is not set +# CONFIG_PKG_USING_MFBD is not set +# CONFIG_PKG_USING_SLCAN2RTT is not set +# CONFIG_PKG_USING_SOEM is not set +# CONFIG_PKG_USING_QPARAM is not set +# CONFIG_PKG_USING_CorevMCU_CLI is not set + +# +# Arduino libraries +# +# CONFIG_PKG_USING_RTDUINO is not set + +# +# Projects and Demos +# +# CONFIG_PKG_USING_ARDUINO_MSGQ_C_CPP_DEMO is not set +# CONFIG_PKG_USING_ARDUINO_ULTRASOUND_RADAR is not set +# CONFIG_PKG_USING_ARDUINO_SENSOR_KIT is not set +# CONFIG_PKG_USING_ARDUINO_MATLAB_SUPPORT is not set + +# +# Sensors +# +# CONFIG_PKG_USING_ARDUINO_SENSOR_DEVICE_DRIVERS is not set +# CONFIG_PKG_USING_ARDUINO_CAPACITIVESENSOR is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_ADXL375 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_VL53L0X is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_VL53L1X is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SENSOR is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_VL6180X is not set +# CONFIG_PKG_USING_ADAFRUIT_MAX31855 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MAX31865 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MAX31856 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MAX6675 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MLX90614 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LSM9DS1 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_AHTX0 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LSM9DS0 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BMP280 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_ADT7410 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BMP085 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BME680 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MCP9808 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MCP4728 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_INA219 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LTR390 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_ADXL345 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_DHT is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MCP9600 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LSM6DS is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BNO055 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MAX1704X is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MMC56X3 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MLX90393 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MLX90395 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_ICM20X is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_DPS310 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_HTS221 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SHT4X is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SHT31 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_ADXL343 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BME280 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_AS726X is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_AMG88XX is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_AM2320 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_AM2315 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LTR329_LTR303 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BMP085_UNIFIED is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BMP183 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BMP183_UNIFIED is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BMP3XX is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MS8607 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LIS3MDL is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MLX90640 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MMA8451 is not set +# CONFIG_PKG_USING_ADAFRUIT_MSA301 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MPL115A2 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BNO08X is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BNO08X_RVC is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LIS2MDL is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LSM303DLH_MAG is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LC709203F is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_CAP1188 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_CCS811 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_NAU7802 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LIS331 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LPS2X is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LPS35HW is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LSM303_ACCEL is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LIS3DH is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_PCF8591 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MPL3115A2 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MPR121 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MPRLS is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MPU6050 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_PCT2075 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_PM25AQI is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_EMC2101 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_FXAS21002C is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SCD30 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_FXOS8700 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_HMC5883_UNIFIED is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SGP30 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_TMP006 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_TLA202X is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_TCS34725 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SI7021 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SI1145 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SGP40 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SHTC3 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_HDC1000 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_HTU21DF is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_AS7341 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_HTU31D is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SENSORLAB is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_INA260 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_TMP007_LIBRARY is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_L3GD20 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_TMP117 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_TSC2007 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_TSL2561 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_TSL2591_LIBRARY is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_VCNL4040 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_VEML6070 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_VEML6075 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_VEML7700 is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_LIS3DHTR is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_DHT is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_ADXL335 is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_ADXL345 is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_BME280 is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_BMP280 is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_H3LIS331DL is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_MMA7660 is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_TSL2561 is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_PAJ7620 is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_VL53L0X is not set +# CONFIG_PKG_USING_SEEED_ITG3200 is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_SHT31 is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_HP20X is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_DRV2605L is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_BBM150 is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_HMC5883L is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_LSM303DLH is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_TCS3414CS is not set +# CONFIG_PKG_USING_SEEED_MP503 is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_BMP085 is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_HIGHTEMP is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_VEML6070 is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_SI1145 is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_SHT35 is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_AT42QT1070 is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_LSM6DS3 is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_HDC1000 is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_HM3301 is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_MCP9600 is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_LTC2941 is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_LDC1612 is not set + +# +# Display +# +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_GFX_LIBRARY is not set +# CONFIG_PKG_USING_ARDUINO_U8G2 is not set +# CONFIG_PKG_USING_ARDUINO_TFT_ESPI is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_ST7735 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SSD1306 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_ILI9341 is not set +# CONFIG_PKG_USING_SEEED_TM1637 is not set + +# +# Timing +# +# CONFIG_PKG_USING_ARDUINO_RTCLIB is not set +# CONFIG_PKG_USING_ARDUINO_MSTIMER2 is not set +# CONFIG_PKG_USING_ARDUINO_TICKER is not set +# CONFIG_PKG_USING_ARDUINO_TASKSCHEDULER is not set + +# +# Data Processing +# +# CONFIG_PKG_USING_ARDUINO_KALMANFILTER is not set +# CONFIG_PKG_USING_ARDUINO_ARDUINOJSON is not set + +# +# Data Storage +# + +# +# Communication +# +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_PN532 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SI4713 is not set + +# +# Device Control +# +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_PCF8574 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_PCA9685 is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_PCF85063TP is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_TPA2016 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_DRV2605 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_DS1841 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_DS3502 is not set + +# +# Other +# +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MFRC630 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SI5351 is not set + +# +# Signal IO +# +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BUSIO is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_TCA8418 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MCP23017 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_ADS1X15 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_AW9523 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MCP3008 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MCP4725 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BD3491FS is not set + +# +# Uncategorized +# +CONFIG_SOC_FAMILY_RENESAS=y +# CONFIG_SOC_SERIES_R7FA6M3 is not set +# CONFIG_SOC_SERIES_R7FA6M4 is not set +# CONFIG_SOC_SERIES_R7FA2L1 is not set +# CONFIG_SOC_SERIES_R7FA6M5 is not set +# CONFIG_SOC_SERIES_R7FA4M2 is not set +CONFIG_SOC_SERIES_R7FA8M85=y + +# +# Hardware Drivers Config +# +CONFIG_SOC_R7FA8M1AH=y + +# +# Onboard Peripheral Drivers +# + +# +# On-chip Peripheral Drivers +# +CONFIG_BSP_USING_GPIO=y +# CONFIG_BSP_USING_ONCHIP_FLASH is not set +# CONFIG_BSP_USING_WDT is not set +# CONFIG_BSP_USING_ONCHIP_RTC is not set +CONFIG_BSP_USING_UART=y +# CONFIG_BSP_USING_UART3 is not set +CONFIG_BSP_USING_UART9=y +# CONFIG_BSP_UART9_RX_USING_DMA is not set +# CONFIG_BSP_UART9_TX_USING_DMA is not set +CONFIG_BSP_UART9_RX_BUFSIZE=256 +CONFIG_BSP_UART9_TX_BUFSIZE=0 +# CONFIG_BSP_USING_SCI_SPI is not set +# CONFIG_BSP_USING_SCI is not set +# CONFIG_BSP_USING_SPI is not set +# CONFIG_BSP_USING_I2C is not set +# CONFIG_BSP_USING_FS is not set +# CONFIG_BSP_USING_PWM is not set diff --git a/bsp/renesas/ra8m1-ek/.cproject b/bsp/renesas/ra8m1-ek/.cproject new file mode 100644 index 000000000000..d2c6e6484c41 --- /dev/null +++ b/bsp/renesas/ra8m1-ek/.cproject @@ -0,0 +1,222 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/bsp/renesas/ra8m1-ek/.gitignore b/bsp/renesas/ra8m1-ek/.gitignore new file mode 100644 index 000000000000..9ac428c1b3e4 --- /dev/null +++ b/bsp/renesas/ra8m1-ek/.gitignore @@ -0,0 +1,5 @@ +/RTE +/Listings +/Objects +ra_cfg.txt + diff --git a/bsp/renesas/ra8m1-ek/.ignore_format.yml b/bsp/renesas/ra8m1-ek/.ignore_format.yml new file mode 100644 index 000000000000..af51bf92aa6c --- /dev/null +++ b/bsp/renesas/ra8m1-ek/.ignore_format.yml @@ -0,0 +1,9 @@ +# files format check exclude path, please follow the instructions below to modify; +# If you need to exclude an entire folder, add the folder path in dir_path; +# If you need to exclude a file, add the path to the file in file_path. + +dir_path: +- ra +- ra_gen +- ra_cfg +- RTE diff --git a/bsp/renesas/ra8m1-ek/.project b/bsp/renesas/ra8m1-ek/.project new file mode 100644 index 000000000000..dbce32160987 --- /dev/null +++ b/bsp/renesas/ra8m1-ek/.project @@ -0,0 +1,28 @@ + + + ra6m3-temp + + + + + + org.eclipse.cdt.managedbuilder.core.genmakebuilder + clean,full,incremental, + + + + + org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder + full,incremental, + + + + + + org.eclipse.cdt.core.cnature + org.rt-thread.studio.rttnature + org.eclipse.cdt.managedbuilder.core.managedBuildNature + org.eclipse.cdt.managedbuilder.core.ScannerConfigNature + + + diff --git a/bsp/renesas/ra8m1-ek/.secure_azone b/bsp/renesas/ra8m1-ek/.secure_azone new file mode 100644 index 000000000000..910a04b8ecb4 --- /dev/null +++ b/bsp/renesas/ra8m1-ek/.secure_azone @@ -0,0 +1,86 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/bsp/renesas/ra8m1-ek/.secure_xml b/bsp/renesas/ra8m1-ek/.secure_xml new file mode 100644 index 000000000000..b86310082617 --- /dev/null +++ b/bsp/renesas/ra8m1-ek/.secure_xml @@ -0,0 +1,159 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/bsp/renesas/ra8m1-ek/.settings/.rtmenus b/bsp/renesas/ra8m1-ek/.settings/.rtmenus new file mode 100644 index 0000000000000000000000000000000000000000..bed57a56a0a5cc87f3e0f1b47d44308bcb5b7f5d GIT binary patch literal 1696400 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

$g` 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 p+h&FIq3f6;76I?La zuKo;_?~Ip%VIKG^5enSo&zaGI&uscw2DjzFR7}vaOvXhc`Patq#oCl(S91$X652eAF3-X zFKty}!>oFm=D{vj%$$l*Yd4$c&0I8uFplylFxtUPiLjPkik*5#_9nMQB-!Q&5Af>Q zk~h|318T)hwJCw20{jyJ)J_GP^>9g2{7F&i5G7rqJs%i~IH{CRS3gN>wsQ=6#OaiMDp}dcyORd3e<@z!7CegM6>D3ayIRv6C+c$T^&?f z7e-uZ(ZHHbpp2^}v)Oik$kc5BL$WBMBHr3U@PdU-YVKXU;7JU-%JNA6gXjZ{h11JEenI)b!wU?8ZUbN8k=KC&MPN^ zUL0?(e)h9gBFI=kmMnx|(sp9}9xao}#K_5M2G0GT>)%bHn0Mr(lU-9cxCzGw@SU3e zkKUACp-p5tffosc&fOwm;?+7477^xVe3Y2<#ZI_$NL@{T-e}b$(;VNHNPJ3wLDv7b z>+YT%huz=FSvOQ+XRF z%ZPqI2K~rIUz-o9H8GeU0iNrM`fB%-PuwR01DTsiQA?Sp#7gc(vxq(ubn<~t7`w>( zuGsZ#D8Ze*I?FG5zo6(5Wb(*o#j`f1SDX$D_|1?hWg$i23_$~wDqfeL78>4xE~ERj zP9@Sah=dMb2mg~iNczJK$U*&hOYF|{57qkc3E|-+_HRJ~dUr(Sm~NFKSXR;Y#BFa3 ztxJw|zqjN!z%LreCzSplY5PfYQbIVffdC}TG>VǼ-03~qW6;ROu8p-P_5e=XVZ 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ࡵT49m2X~R%#Mey*f)g{NMiV=@Q7%gc)dnd$D_@< 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 qNii=>J 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�n9O6!Wm0a{|E%3y@vx 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

#j|rodX+7$s$8>pomuLL{jk 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

q;}k3V0U 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„X$m;GxTrmp{i8vjHE7|=y^|TVyWsw$ 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

&PaDx))Qq4E-3ctu({= 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

i1MwR!8wGd9Y(&xLGxA{Uhs@ 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

Ll zovZr(5^dOiCxQWAo^Vao94x>WVFj5PuK^?}HyLK;aKtyla;Z&_3m_$iOf*(fs%&{g zMbk@S7%*ulZ%lx+un#`1R%`uH(}~9lR7$;13`dZey`8eiTa+D)u82K~Ww5#wa)U+I zdTJG7384o!ir55M8l5WoFNo9O7Yc2ZPh0(cPmAneBp>oegHs{L(vLqaB|?1+_eH#w z`i&3+YL0*h+tilFt4o-DaP(%v*AxM~f0gbM&?njdUbu}`-N%gSHI|1mPpwA^*0?v= zlKH@6x4aQqt7^-nIN0dm)=F>(hl;hFrCt&%hOni#rw`w|TR9)4VOXUw#a>A9&o(_R@aORw6zCVhWl1F+mA9|b zuK^PdBs(jHk5H4vJ1fT)jyu9EqbSA>e;09C-X%nv@Gcn zWO~cWP?%+x5vo8d9`v7E_)S^I&`~V0rnR=~<_fn&iGcnAEIh*mbnYqATQK(O}4 z|MukGL0hC1Mv`m_m3I<41EI}(zFq%&S|i5l{zO2?Ik9r=x5-0I*j{F^t(CXNE808F zIRxUAuMj4=3c=$!&27@iiq!J-3{-@a+@Tx+UpT|q%>VgKEZY7u7|w-spy3ODOLFzL zOtPiyoy7z)%HtdH=v_^v<|A=QF zFN=|>)mB0YiD|{nyI5DB(7U{DIbKIM(UiA)@%1-XmUgW_rSCVa?ce?jgtYc@^BD@b z9P8QS04nc_@SNC!&o5i|8JQWB#bP+S$RA)xMEH8plP6P}do5kk?~j#g*G0;^J|UYm zhhr>XJ6b5ZZy87fehXqjNfp(`-_m$|SE27z4o%AQq*H zf_IhUoP4V>^WbB>-gPPyr(C;~(EY04DJE?BRlkbhrXfAlYer4+0hcjuj&{oZrpp;# zA}dVb#WgtZyL2n?rGHFvh3_aAlm{eOhJfr}jdc? zh=3qXcax)E+hhMysBfxb08&;$yl=^@88=ngq_D9t3 zU(`KPz}DMsACP`^NLC4x!z+!Nw59!)Y=IDp8LYLX-LJ$sB5OB<K;K~d z(`17(-c@BD9*Y*ZZ`P-lf}u0jO58#i4fZvA4LF)+V$nX>a(1<~<@!NP@D+Te_BHW+ zCVo=CvmGdG3`HW=abIYnnC#?Zb{Lmt1*8apQ5$XsAg81(d87QYUlFX{0%b1Lm`55; zUW=b^PQ>1Fvplfqf=}vuJLDQe{qs5l=nT;lr4-@LY*dPFx>#=xP*1JSJsv_9ts9E% z;H77?O!STpGER;}iUP^I9?jz_lgUg5xHHyOf!l1J5~{pTq5+-el*Xk(X2EWj%4fdG zoBqnsa0bn9Sy1UzIxSD3^&eF1aI+_8n%Z5F8$^%u`rLUuI`#-oEPvIu@)#U$&-Anr z&E~aypoBL`I79JTNY~{^5*(@s-d7Lz!U=M)Z#@~s7n9Wi)=QaFTNwAV#QZXo<9}zV zgC5%{65(BJ*-|P@-A|!9=D`b%(vBYQ)pj-Z_8Ur2V*A_}zT#Y#t&^CF9JmwuiF*U? z7+M5wDZ~j!2N#WK<|jy)u@de_nE6 ze|CCcoI1K1yaNC4Q5}TOL{dQl+Go}3c;f-c`rLtxyF&=(+nvk15fjGVO*0^nYJq>n zOLh`Js-}4Bew9)6;kx=vQz{9~j+_c}fMlx8Sp2`4mC~rtwXW7EFT@?$BtsJOaz<75 z5H6b-AhT`CH>J74bR*eaK}(?Eo3qXIweD=&d1h$!_@`Cki+A$GJU?^4{hGj>Sq8KG=Lf?E&M`6pHA!ElvZe<(+mFF!YwVH*`W&C$=&CsNO zincbrV0Yxv%%TnuLeOeGM(|S@pkTrJGbDprj|hj=pqfYXrDCg`H%+}`g%j^Vq5bf! zgpN+4Y|sTNQ;(Md|9HP)<3xyWZad6U|4j-ggXjKgKZc^g6eWr$-AYv%1P7AAe z?m%*}s-2f)oK+cBT-TiJa@^Q2ZxC*+jgBoMg!W?$-c!sBMCyP$I_}lA$LmVrrzNCs zzSmL(_3%g}k=A!PYND0E7~;nl%S;U`EX5Ga#X`Cwp{`D-WPa62C{AE%=lM0$m!^-hSdzS4ITG$#GiUL$arp30Q zT%uU9>rads!nflI8Z239gE+*^)dpQ}+B!o-ow~QPq1(#vtLVa(iEG%L*Vhxdx}=>l zK^k$ig+^V-*rFNgya%;xoMkg6+;$LFghn^ajI>AmkWy=Ee9lND7-PQ3;?@hrR~Hzr zb&WbW{Ck}5Lp5E9DK!_u4h)t{^T2xcahrfgwJkQ)$48uX#ZuR#epR_+XjjRVjr*jU zO(fnknsjUO0f+zxD8>i=rm0)lMi(f z730n;h<;(l2#nIoQ^U9`{2jS8@qnqtiueaO41r8akVJ$UeIal3y1*XH+G3)1Y}8sB z1OJDN3yvNu)w2wrwRs~PM98Ul8-Mz5mShwo^1l0>yNR9!aX1- z<=8X`b3Z6ec=lDg2p=!qTG=A!X8MVPWUBpH>d0sY{*)>s{;ZMZhOq164ICycZ_XSS zbm}8;NU>LU$yo)lXG|q5s!ipGKy)^bD=sG8rYdViKqi`{qIzN8)Jec7wb*c+03+`% z4ELGb@kS7Vc&cK@eqgN@hH~0?D3oGkIpf66+ruk3Qy!`Yc%)~k17o(#l46{{1_8Sf zn4!-AMrF6huu-AAx%3+Zygai1fP=o38Ahq&I_QhvKIe+bFkKMN6)r41$isW?GbG1b zCei&zf48aRe36A0f1T%oDQ&yfhW{rz#YAZz_WcIhOmP` z8{7|K&ayW2Y9P^3z)mhp4}2g;rDeXx;Ms-w59_!rfu1hrOO|>EyXcb=;ZCP6>u$06 zh`M?8;i}Rz=fQ$nb%GYlN4JhAWKE`NW@f#EE40cJ{G%T~^Qz?#GJ?B!MicB-8t5qO zy(VY1bn=-=x^%-McQO^FNUgsWD|E&Up#PD^G7};rc-+WPhuWgxD;@RSz$O$upAWrao;#F0VFis=&QpHO;Q%X8% z){od4&1-nY3E~r=OD$fM1YW(KWpNOgXJa{n^eg!F4oW9O`y;CO5yEhqQ-VJZ$849F zlaglj(z)?$x=S~+H1Y;ASPidkm{2fD%Bh06P#h}kFpr8^4;YWtUed-*L;;ahH)}NF zH>Q~BANPWJ(3A#2{RhdDkl&tRGqC)tJi}j>l$5^_bP`1xMpSfm&waH6FAe=pn%wJJ zIW2o_FuIP0o>p@!r=ke?EHbqxYj7IAq?M_bWAhr-~O3kHNQ_V9y=lFeubD8k77kVVK}Yl{hip( z>>1I22+e9ED?F|Ab_rz~yPjQ()S8csB_Is+7)S1;#q_Qg9Ayj_$@?<+(9R?y}B%`X}GW=`W9{KC-eC+)eJu+bJG`*txwu{+68C%diroi+V_cF zASSNFoz;82z{D((yXpez&)KK{Z`l>*6!=3Gq(h7Z%w{!cDJHU!s@#FY0Tgq_WRe?% z*iRzmVZ<_ineC?P;N4qZ;6?72sMck4JhWPE{8tFy3sUJggBqty+GLg8w=>yu#>bp5 zY+8)g6P<(5iU0XPRkqkbI0wR|c%A9U^ zEut3!fo*qU%g7xO)BUw>P*jGF(z#_+!I?P88jFNh$Vn)0+T`vOGEP`Xr|fU|r4 z&@L9pT(OS?bpIX-R7gZRXW{sfF*uJ^?+sET3_oQ9TJDrY1xXRDJ6aYdDrm_(+EdK~ z)WJ)t{ETY*d(#1vgjnfO)=e&U3E;{^*wN6p$YxD*@ou0CnLV^aWEjo9y)1YFuHSmm z`BK!rygdGYYb7RVWeVWb5oL9_AMoNqa}j8&e?R2e2k@cRd^~VjN0)A-#t$wYn;sU0 zneJ|iRE4znV+?gB$ydCAWyEt>?$?Tm&%bOeX{%?&QM2g%ub#T=5`lmdwf-p4L`RW1 zFo<tn^aXNLDb5vDQx`W-IXwqnaL2N>F87rW^Ow2`F(jz~a7vqL6YmLv5-v zwdGAfB4S-XZ}3|3Jy}QrLP=KlB7}DkL50}~?Ay%otuI}3)bmqMz(!vc+d7a$H^bfm z!4T#WCku?zTYFl}?S&;)4cV_A5qVs(T6d-sJp4j+u9-1Y7e&{C;Rxpuxi`pH0IEIC z;c+N}Aw&fDeU%_%9hQFHe1&=bbK|m2`H-hpk#xH#SbBQIIN{WRomPCeCR+{}f*z3Q zsQW-*i4=^5@+7p^Q7YT=X+cKPQHE;($_Aqq9_{bHRNyfua*rUm;Vu{SF*LMRrlM?RJu;VPSDM!xc(j96!WS-?W z~_6tT3J7=YGp|QL|k+jw$(QQ|23r!(1QyOtjy)Y8CDadO_ z0mCpj1Pd)Un*ViNx5eP${g-TL@6T|E9VTQn-PQ0nHsxbzk5r?)>p64Bd z+Z%gDj*q%Mnt&IEMCvmE|0Fq{@XOOc!`yVSJrX@~!BnyGEcS#-j<&%9`@ zLj|1FR}lk6bRPFi&qa@p8ZZT(afiBL!Po|>0ChqI--)&_u=<4knE51Y}%oYlTCqrQhgMtEw<%O8Dl z7Kk~?f~Hf#^Lf-SS6M$UlN}fYxZ|s6i|~}f8;O5J4-0ZSN}zQlC~l<>Qg5u=jp6uV z6K@6Op#Y_+O@cHeK*Xq$Pu|BjhiL}8D6QaYVUes6zx!KQh z1^2kjZu?Fn_P6ybURe*Ki*=O-V{q6SeG!U|6y%vTfpTq#*~1+nI&12sF!3x`e$hxod#053WBA z>GbGjFErcz%9on@6G%?bS@OPj7><>dZdABF+yjO`f;dD2q4b#G>&KH+s?2g77Pdow+=iTD=1w1`~rDS8Gy@Z7cJAmBVV=A@HEZFz)@6)(yo`ScE%pj~T>aGW;!4cFiGuJQDB%i0ro{k- zbnjs8fm%zZgJGde(v>ApG+2^1ztolGpE6!j7V9tn@&EEo|3ywV3=X-Nr%c2>@H2;) zE0G~96e|?}TnDUz4)ZkEYd`!d>TI!TsZEs`j=U`xBRflG)V`EaPFD!FcB@+|oK#vk zjcsN$+BC$tqx&M+T2C`7`N5Tp739J>j zvb9iLl~rbMsNc~87n5m9p!u*Wlyby#!Y7uNI0s`4am2bpMQZ?D&`O9I>bPb5wl-@% z1lwMSi^pbD@-RY+tVJe*yNq3_z5dBkubp%=u4L2H&Et_Pd$_?URxGiHY)6TMkhmPp zKWvz~Ayh_u91e3c7A}VBlWUW>Rl`-D0=Jy!{36b3z0Q`C4vmx`!s*ROYa_<<#V}ISyPx*Yr7K?)W+fJmhJJ!pC?`z0;!RlknI-b=$A>UC|WrHg(BA^jz5NC$v7GRFg z0S~F;VXQaV8yeILRdW$V0=-lZBbyc&EWEzaGBC3QzwPc4!ws8Nht+2Nt0xkR5?w*- z<;D}I@|EnkCihEQr&>L_Ta~=t#UJOoa=~iCXM}f)_JInY9jP2F95QvXMZAggp)0^ao(VT84MQD_LC8k${{;qbu-?|6$OUaKansk?3t2(zU ze8(%C6TFua;|=>~5h4FQjnw>x655|7AVJ~tfYGGL|9h~1w%BhlD?6b^AQ=R~!tHp` zkPGaKYkR09X6N7KMhqtn&{4eUQ*p(afD>6lgPAv~iAexzPVF>BSXL;{KW02=&qVK> z)H-$nm90w@G6uXQOCAOiU{?9|s0z1A;|AA*0(l@&eM{*Baor=9^?9pd(9odFJhjfo zbGL-48#<=2Rf_PApjoXLP|z`Xs*5v%RRISt;Jq2EQ&0$l0G%$W*id`<;m`gDv2^y4@MsGzeRs3w36xL+HvfM(-}p&JPzu=Bp_&$cw@2 znJHVds7ZuXQbTJ|U=S;(Tkk|2G3`ewYaA1`EwM$J*_+B2Oi_rQAB zpEiW_cD!`lT~kF)ScNs~PKoOv>**s&M^C0|KV#&1?90u={$3bGz~+t}uqX()txK8q zbfWB*#sXj3QjtAgED}lbyFrG2Zo|IcUU#R1p-h16mcKtOSY|N2_yd1Xl%eJ7;im)| zH;i1CkzxW)8!0(OBqr#m(7Fx~=!5G+sxcatg!p>1Pk8FQ>=PlvS^Nv|GrBo~GFJC1 zhuvOkSxEsCn0>DHlyfIat_oH4dzROKhdRz_d5W5SpHc7KeA7FfWTbSo2*IF}EX`bD z_qAZIDGO!ry~$P0^Svf;`nI6LA}#77o6n=4I4`SMwIa-eL00@yJ%G;YH4=NQa*IM1 zA!Yh1%dM(A^~KMLWk*S+`*9Z%QgwB6TChhw1Y1+9N+8=Ux|!4(`!sNDQ1|&<<>cLf zy)1~gKi_rrw+C9DV!i<;2bUX0wMA8{?=J%tjw<#J*Pupyb`&@Xo`RFZB1vlRxK&#o zyDx#MmEYW)+el)1o8QGk9gkSN)p59G@#bp*E#jtjCBrD>2S@j`HkueUlfw`&r_9?5 zO0|W}#|qgMC~YKJw6}zyIhJjSZTZa85wY_V7DD1kFdPbk5Hbhe3i#S-tU_BVKp~2n z2Jo^ES7OdDGI94LAd3<{Z>C>PD;)tAt?~l=r!3$%AZ$)J?2)7`3RC`{@bNkhF;7c< z1;ZV0B)IHk z1Pl#U#Nbgf@8v~ptK)Nx4qWf7@svO$b@nnSr4OG9UHC)Nx*dNvfLUX@c9pMG{j!@U zj2dfCPwB6Md|CMlBFk`^Af-%q-j}`TKXEOUnD9YEnpZI-QH6Vj%yx0V;6!A*o2+Jm zFod#TC=Y(IK|2KE1E>XTd)E1*P?a0f0c(Wnv+JA|C-Ynr(WY*b`DB|(yR|x^CI{Cc z&m#|>|Br_zj*}wOT1Mu$Tww;88iPD;BHFw??MlCG>%m7e=wj0>QKqnf&shU{1&?=i=G6R;hfB8efyW>Jpr#&Neiwc z;>GI+ZyaapOzdRo`UF@#LP8LYghVHG-8dqjs65XP2J37HI06n&k2VOW3 zD?PRcb1z=8(~^l#>4(sF5_)E0FZMA)e``UU3_?^OupZ&xdvz>O`2sLr-%t@^;qKKN zCxIYrB{^WwtPYB@MO+4cfv(Oza$m-qVsZZ=Dk``@xw`SuLsx zf+=xI4+)Bd{?4Axyqa&4`YCwzT;YlxQ>X@U*yaW72o76zF-__aV*qcF_Q2H&Sdc{4 z^;W39SLZb(m%$1_t9H5WttM>VRh&QROAYn~Q|*`zVVv2E!Kys$;D<_=L+qKB1QwoT z|BQ5@boMlkB;Rk7vh7v(%dIOn?4V1|5K?_uN>J)h{1=d3-4KP6~W3Ci(2-5$*V|X;8@R~K5<8AaXVYfWT;llYud3_9~>dWO? z;Zl3#zfG{}p(e=PzKr_?yLev;rcPnlG*=s=Cwb7>a=9^{9w60;5rdH%yuQbnhDg`k z13^Ya3DPTOonr+A7a7-Vqz+5$9KT$@TfYjYse2i>9;zd8o?}K{05OuV!-n)7I7vdx zq9X2Lw%T3i42@d9cQQaP_8|=_EKd^?w5nGgIrj2FS;uRRVy`Z{B-^f#Fyr!+r2iiD zwqnHP-Yw5>DXMEgFOPN)(*@8*gEr(r{#Og!`{d8<6`NI zi)(AiYw}|5anXxorUO0Z!o%C&r!}A?25E8TJHdxUH_hR!+)tT=TH^1Cf#0G{G7(0| z**R3!gAgkg5u8o{CFA@T)!4Gz?k$H*C^pv9@D^+=Bz35399PdDxehzi)|?y8oY6TG zUQ1V5jKG~id=B6y*v0t2J4Ye<8^~p8hpQ@HmgMM)TRn(c8Y{O^=F4sZ#d-AiH$c!biI+ zEn>TM&;6Eon~djELr1iMf)PnXLM}}G4257={ez1FASrSSY|{@U$2g+p>P_p)^-Iv< zOtAbbg~I@;)HBFDefDKCZ~Y5IykcX<_huEWbYAw(-(65QC@Mf2s`AT13zVU5QI%pC ziD})g!lIdhLvp&BU)au&lR+fo(OY&ySUH+f!V1)zeUHU|`B_HD`mY8Q$f=zwswDO^kI3TRC~{nU!IIIY>K?^w zG_^2|7)^$zT=zxM_NT1c@%vV$cLKg(TkGAuF1Wo()ExPLh|7+mbz7dr8gPOBs)()v zxY$Deoh-+@c0lRcEb(St{jDaDAmusQ8jrbgVcl-L4dc4o7+k`{&WJ=vkM*taTf=x5 zn&(OCunAKaT!-j+$b!=Z@hxM%<3@+5rot~;e*k44Y)LydF7RYd?L6&8-ZymXOpTP= zaV^y7bOu0g8~XQ_p$NmH#Pg~%ClCk-5MTCqOK?n18~Q^f1vIhm{GffPE%#Km%ucaf zUgnv`QwORb5Z0~tX`G?9F~cAHH-&+n_EqtgnxkrZ55e1QKy^>F>B3ufqQVdm&DXH} z@J$lNyq8h{9JtEFzf72#b5}I;xClzR)rEro+J7|qvU$VsPy*6`S~(a8)#V<^zP_|b zI}lrPXgr&YHfQE%`dLC)Hrd7-U%o1fd3-TEvyvaVe!+F?3Iq_HvtLZFtR;Ym{5&uL zhK>9=-fm1ZST`DuJdxz|N?fF9MZGZW24CN+JZ!Z9vcQ%Z=cp8^l?RL!G3Ie$S5nR8Fy;lG1H_PPMqM>|yn zW$O6!4NvP=QS0v$INdrCw8_OYE#)nf;X3U+iL#c16?ez*7wR=i6}8?Ghx zY!n!>75v&PKDu#{V2ZuV522nLyy+WUS);Qt2*^3q$hs1s+#YXUST~c*p2%0c`Vg+3 zRn*p2Ib@g)y8$RBc&$~iz#)deN2s1z7h*M_nFiP8mN$R`9sw-|s6^z43cG2D*`_+J z-*(X@m>@q<4T3@`1QruZsq=~Wg|N@-5cKUp)%UhCIMc|Ilhc&Usn6Y8fW)`U5m=iW zUwsYw9skk!?PuKE46Ic0!SZ%2kw6t4DG^mT$$tygNEqsp_a!n3&RBh4FwlDDn5!0sz z!XFZSB-!$y5gs2~`hS_MmeN;k`(-PjTIA02l8m7lByMYb|w~`xaDN{56KiLIkjBsYS~C zDB<9HVb($;8V!N*#*u&*R`>F-0U^Z`wo~u%o-e|t`jPUIr3W>G(XOkZ$@h6%){+c)y6M=VqoGh5t)K*j%BwBv4^0QJhEF!!Si1R5$F3P1o^=I69DT0V>c#s z?~n}nK{Y|Rq}fRD`S#Qs0l1|P$hp|cskqIr&OAOmh02ypcdy{J(ta|D7_4J z9N4bOSzWE3unSGN^bj2VPZW!tzX1MTKv8yOKTWf3q8+%QyQ=cyK!6~LWg-NitgW7? zJuCYO$ooYu-vsJ9be0Oj>XaG6K@eb`t(Evql~r8y_8u853%kZFem9K7Psx|1F!2uO z97&BE$0|txRyvYX&%eR&+nHS zDaO_3>sF~~K4T4v1$orsNAi+nZi}&5WUoR)_sU=fG29^?NcS99x&eGjyqK+?EHF$< zX(M-3>50a{%8(`X;|wIEG`fkpyiAtzxsoj9NZO{NxhcO$tv>mVHWYg;%ge@;|?}mW1R%A{GKyExC4BSF4{0tUhUY&eu z-qL*z??1)C9M--;F%M>MH3}O*xwNnUdR-usoCx^UyI6qL5V~TDCEg{nx`t3=feSf{ z>knFHoxWk9+xY+QIFe1jo;IHFOGRmJ9437u06(2x0A0Cs6|Ivp4{x{GXVYxRQ?y7V zNbK|Y_$_ZDN5uqe?*^}wKbau~yKnn_Shq$#7X~G2@nft_(GQV*5GJ$ax^<>Jfh1TSG4t!if#gtbK4)4u{>PCp{?VE|HG}bmf0yW z?m~#d{o(QB$OI&pP8IKVCBFePiuN?r!CU$ zIq2$Wf4{%grGPYHweN9O%cgloHrYTWG$IP$c10X2qT<~2#7zQP+lJh73EmJwox4Vp zKEb74@2sQ5NpkEbreP>SjMWtwsp12W#gJ6rlNASu7zVG~BZg1XS=p80eHd}A9*hJI;10qVD^jU*Ni?M-KM!E|s1 zjrH``+O0oI5pP~~)z>((gE?R{-b@X<%~&W;eR-fGTu#DYuC-sys!6@Q;NM-XQ2yyi z@jDp!0si|SiGmX%X*(>JnX#H#@x{5BdX4J{5RRDD6FQnd;j4FXhB@se2PKf@5Ajux z3PL{GPb?4NFQL#?ySh6;V#t$-~Z zg*#`+L4rj-zMMH+(LU=(9~breKWss|C{4nK^_%8!>TGpTc$Mer9cyGrC2UxIxq)BglB_dCKy0@gM-9-*gtrOLC`QdJ==h;D+ z?N9!I0LuRva={A$HB~4?=dc^*`Ygj9PjfPUpTo=?O++`4-RW~Z>k>+38Stv{O{f)~ z=vv(|+$Ovx_4=IP{-?N_NidGXAssC39lY>hoSFh0A<@{B?y>8EL97-a>o`z&nai~1rqq>>UIf4&^XUlem^7FzU76hPKrkH=6(?46y#|LI7UY@*wc(G01~pzLSN83fBO* zrz&us;&g*wdpMV%dt4}LisY5vW)|u6nLoEO4E@zglR}%wWcyw477}?JwD?2@(od$&Ezd7 zGiYPXCOT8quq;PScd6H=D4P7eU*Rqbnez7^q|7GKT*XhJy_W|xspH*BH3bPX?u6I^ z4HUlAq#b_-G2`(HwN6>eGlOq&qRVa%Z~~Popt_3TJUX_oGPow0s<@j}QQV)hRjUzm zpE@ZQQ|U7Y0~(3}3@ug^-UL!eid-E2qYJo zWR5`SK(Q3ateGHfld(SXoBHvw5l~o{q zEJSspDI+%xW1%lgggBmKtce|2L2>h~*@U30HcqxSpSCj2ztm2!rUO7_Ka>*x?xXE+l37I^M0_-TIkuLLWK*HS)*EZ*F-AAOFzMSNF3&*O8B9+p8|G#pd_TAd!0DA?bLa4D zq5Rn}&VP5QKrfsLFe#Rll^E z%Xg9S)+6+h+~KXu@w{Ha_Q&!tHb2XZte{sGVvLAerwskW3h;}o6|e3`^3AQLMcgvj z&8p1hr7RnMel|gTQdyHnW+aer_DaiW@>lCsEbbcP-mGxmW1GOn&^A4=C*H+l@-C2^QRr_xq`_4b@ zmgsjYz!K==o5olypmX1FUwP__lxF1Aumw+zFI+F@h?_d2CGnvJltnynW zIFP~9f!TEesQ;N$T&08$C$^${?sTRhhem^am!?<*4*r2``*M|HY9DW5t6nNMla3a( zQLe55B_G5x>r40I(BZK{?0WX;lSu0MK6UI-bDh|gwKXb{3?-bb!s$f9i8sC6AmE{! zHK=CbW9Du7{yh0d7u4{&|0+UkMJ>)I%<$3q#VRY1aNG1%FkRio=uOKHhOB1P3kk*% zdAkVavXOJ2Y83PROajpv{~Njoc-9ZmHIbjPl)JrC!QlctmW21O@xsy7;d6Z?O1d*4 zK*4!n>L027*>^cN6a;}t?lQ zPf!0nqu9R+L^#|K-+Za9QDViu`nt$eq@|Uvkzr%S3Zqq_^6@oJa(iTEw4W+t7nuzq zU6Jtu_MlFH3vWK^r-*R0XK4Y4z3?hUdEfv6>u?&54lfZ6I#5fb>S^|Za-d8UdIgw4 z7xa(SZhk~Bo(#_x@*Pv!!1H2NEi(;lXYWl73L^viJ&g3{P7Vta;cJcLv5*lv%)#!) z=&ABr(wZQYU{RPbyQ6ADS7TWNuGDl~wiADt(SbHI1P(kEe|VFdhUEP9totzI*1xnr zoIK_srM_OPYuK)y^=%#74e?Vjy$VQqRmWl{JCdI{1vCmsu(u!^i2+cPHkOX(oLNEA z9QXL&t!JU!ZwTO`G=e!0N1JQDX(@@4YDN1Rs|z&#`rb`Pl|+KU6eu;~COez_yB8N& zmUod)J9Pg{xmZ?)TU1b6@DjiPZme$ijhGwiC!3D3X);6pIWg(!%U6K-Zt*up+LWeK zzF;z?xP7ZzBbFgMsSx}b<8#($m#}fStTKIH^3eJ}9n}G(1Kg{CA5&JeTG)x)A{$67hhQ3ve$C;>eqVyrtBARq05XZ^aj1C5ET1)wTDf`~FU4>i& z7Bi0_1&$b|*T^`;{b^aR*A5OJXM@C-M}CLJ{%_1dtMk4OF|n>-ZA<}h%A?6-a&x_% zM1d8F#-qh<2^k>)~YlW3qW2BWtr- z(r1MP1{-mtlfZpaNo2gsl88H0^z7_X6{E*(^3)3WyXNB$R_CDmE>N`QcrV-xYZnUC z0=&5WnZaF=BvUev#51hFsze6chhfVNq-ORbl}5o^9SX(Lz2clDQW|VWiZxJ9bvq5) zrtkWDtxI+TdI6UU*PwKwaNde;Szynq3$E2ObLtV-k|Fk;{K5-{$V16OcJeQ?X!ctg za}@-~I6V!&;lH#?E);`FxuFF6xc&4G@IFwC>=&SnLG=Ve>Qwx30g-1B2LdRLkIy&7 z-+G3D(+%EvgzRq@M+if+F@H8+61g0R+9xg@tg2UmnV;>z$u4-OAGk_L`-fN@;ZCL3^kyB8!7cLMO1FS;IsQS|yg(e%l+Zg9a6z%@)xH!wIzv^}s z-7EGUWkFa_CPFFSpO}7d)AO(wNr3wI7yvT;l_LgDeu#TVzG;yg`VuSz~ zPFxc%0RCbP>UDYo@c6awbMKud0o+(gGl+Smq_XZrI_ESLguK$G&|hFuWa@rVIC^qe&I_?i&UF>y5ojHBB8pRa3MzZpl;o0_w(1g@y!sNhf?1&uDBf4=2p z$AqkmK|Rbg`b4R4>hG{T9KNAMn^{>`^mFwnIbU-Gx&)eaUGET{=AEC>4VoPCpwqra3WyVbxK|(YHCrc z&i5wP*$|;4;qA)#EFGve$im`6`n&V(aXitzsw5BX((h;F;1T9B}7`s@}mVrI??gC{@Rr+|?cEj6g#|M$UX>`E3 z^&&pIKBx6?@Z{}YiW;jOdE38K#yZeF+p@`w+;eE04uXsQ`4xh-e=^96$5v_(NmyVU38#zjWGczmiaLL&#s|IJW9BC|_5^YlL@t$QXo`Mz?}gnRT%&f`viKR z@9mW?t_-+Pt@^;bL56k<=pZ)LLk@a`-c1#0bYxiTO=CTr7!|t1v^xr&EdvRn5=3AW z=y64TXwza>LO-tCR$HVMC)eXkQqS;Ah`5`XY5dE6ABQ76Or9te(tU&uPvA+lUO~d< zW&8miogRb^3-*fuNty%Wpq8+HU2w&ni_D2Na zQ~4$|>VFDuo-E!G09E$hbL&w^eGH%HU7y0z43{IhFgeZTI=dH%5PuPQXDSq;^vW-C4k%@G$7IwS zH1WvIUDa+Z&|dV(D;}r$$E60np6}!K6wHNhA}m_5zA}=h+J3Sq-E2J12qbe#sm=Cy z@zJ5Bs82z!%Qx=mJeS^E!w^;w1hY=42Cye!TG>dCkgFN5MRn1vUL^87lFg*;J%nn; z1e{zwh;Qw7(y5!0Wit`Z;k83Gkt)Po)JQ@h^&v_}I#gjih!`xV$C}CO8GS7w$gx!Y z@CgAgB!^1PHLt}IL~F13gwjzFfy4DxRo^>b78?{f6v9I`1QQ2UemQ$>6f>AIyj*{MJ@uj(Q&=w~lXU zBfe=2jj-zXp{Hp}x$N1g%hTFv1C$=IWmdrx*k}ABmVn@4>syH|v04^H2 z))#!`mgz_vaZJ~;+cgiEc+y%zxF$4#ar#{Fr^}72O44$j{6y;O-^hq6kfUa)Q9>H1 zKZ0rt+jNb7<>Jj;b!Fh9O@SRByQhMmJ*Vx#RH&Zg(9_I!F_HmSjY|5Ic1BE2CA8G< zu!5Qm!{6rDdc?^-5XfD4@k301HZ18v5)90bJz>c$fG5cg=2U={fQK>azs*PlbG7q@ zIe?&kSstZUu&dvt>p9_;DNJU@xJlk^W6@UG6dC+*gd5V3GwDwuE7kAyK+J(njS$sO z5<2SU214ooJ(u zhlN7eqQnlW$0T8oapRq;`WAp_DnE;ML|>6!?Pgw6%YJWNMq?=W^}^-wWw?Bp^CZ*N zc)W6N5EfXc@88K+OhC`s1?>{&W1=Q{evIpoOBG05m&>|%gp0dS%072JYq-qcb#p3>Y$`ww6 z)Q%J`bCD~YIJjQpPOB6%Q`o_JC*y2za0b)t%khjV`ZMK*>_3MzqKOq=V5uN?#R~30 zeLu|BH@d`y!Kn{E}#TGch9Y*T@QA-IK=r%)FZ&*a+`ogE5XKu(@j2hx-_~<_!7l0mI&VF zz0kz%Kpz^kXL4?H*(aQn+_B?}Cdequ)6GC8k=pO|Sz$+vqoH}`(i2R}nNgj_rr|Xa zIodL5sVUFdfgtc!Hz-;DJ_9`09otyZ$(+a$$!V&fPPz+gAa6XMD3E06hF!563Pcf9 zfJmSrw*}eB3lwYkIaSq+#)94wiML2hh|QZ2s9xFM?wlQ+d)Z^E3n6{boV1&`rtOz4 zG_BWPVY@2oje}^#TU!OXv~7>;Sm6SjK~knLp#zPeq^qRlibCLV{aj46+aHO_^A=5o zQxk!C3%*p~#n&Z@!qxq%(higL8**c5OzrSh@fLl1-{YkJlJpszV^6iIvlBYTr-_Y^ zW8`lh(IVoAOO_Hs*>(yLxU0)0r9BjtLRt5$8a0<zmcya ze27Q&B|-ZIAL?df7Jyk>bpaKAn4vRJam8jvu+*O|CgndhtdH&Jue_!nEhrS|0_z!i zv$B&Ye0?fS-K~_eOCHnzzHy3EClVVhnVJpSM5(87161l=F@7ob1=|&HKT{4=;BPlfEVPIY>AS5Kw^2B za&06%h32@TV?>{-UCSUxtKQHkswaj6U$N^iT7 zybAdYXFmnbeN;*=3IbS%Tr9$a-?5JSAn~4WgTj)9Bmr)p?JJeWLGqcFFMn&|i1eQG z%=<5NXbs~Yg&S36qEcBHGUPt1YfnEQG=LtQ4J1jgIv+O2NZ-=z&<;Cr^2w+ktO%fE zcUP$$?Rgb)OXYJLb8v%ns(aIs%8jJy_h|+?B(*^^Gr|zhCthm#qQna~j-xzX(xkE=T+(6+<-+cf{t<7@Sf~VkXH$fMP znegTaf@p{Rg7+Y;`Bq1=+ctjsN%y2vNF5{C*2x3kX;*j1(m_^PvL|N2Sit^!_K zy>tYe{0lafBBytgPDILZXg#z6t*~-CRRfmYDt$Qj1y}YfQqxWZQB9fmSDwt7_Tqs? zA}A8n7#Lu_t&YtVNOsW!bbJ-^dIXqizRI01I@BC1IoOK*&5PEdpzDu^^Lyh+Q^Hho zXuSv_bOHB_@=B#VI^NPb#>eNcN4s15M{oA1){g0p5TYiZD^_a6q~`)(ux^>~MZd_{ z%u|6c?!QT$yFWqURm$KLC@o~zoVU{20kFE)GM;;ASR4b1Aw+cGJGltrzME|rTSfUL zexR9KN+s1A2>0hC%e9)T6rjx3wjMhVRB5jTpAjSjFs@n3b{+ur4ZQna+k_>Xj9C-VvB zkRU0=k6&*vDe*;bEOP9Og0CPpgknes09AbyL72&wQ|Q6*tni=GrY}!*$ojj3)eA#- z_0$f=MSe9ir9;Yo;A9T|s{^WWhmW=8x ziL-YNbHmlPAfjXF>2lKV?nnS0^<&wdSxs2AIU0j#!^ND z0?@zY%mq24mhhadU3Quql^gK|&Qgna^IjPE+G#PPA{vFc{v7@(hot7(I@o;8)-=mD ziO*y~^=_6@_hkj8tTY8;81CA833FY5pg!Lrv{b7QAG#}!&bKk5QLUtu`TiofI20(H z+5{UHMQ4}}bFaETLOl{u>g{qxL#7%JSRh%FxdMx@>)%~>|Mm{(&+z&DY1&DmQCMZ# zgWW)Fqjr4hnLZI35>9T8dRjWlv|YQ1@H;d5$J6NmA1%L-?ccHE4OUVO63pY*QGZ#@G@c_54lR#YFk0T4w&&%`KVvIVCF6?UZnms)O4eEEQi!oi1)SL zT7b86l(i(v@q`x@AuagNw#xC@EY0YIx&Igz?e_X88JA?_YE-=Ktoy+bu-MQ9%^c3LCg;oY;drl=Rt?1ArAI z?F#9DVJOC)#%T(4SS7i-8s=%P#@l4H1@|wS=E2fX>qExpy$nkNUoCCL=4Fjr(fh79 zl1jEH5WhLx4ry*684X(MWpUTaIGSYG7R>3CB6Hs}#_6Yjy9CzQZ`*%&I)~m|pJQ1! z;EzGn5RGbgxaz4`-SaZ1uY^ai9Z+4fhc-wc;#p8qN9LEJU8YJ>%bEcp5G*bJOtfRL z55Sj0>6XBsG_`6}OEJ{3bOCES;VM+6Pp{i6^@NgfZn4M5p=p{0h&df4%tXp%gG|5C zDxCE%*aSytX&&wH;nfMy!O8u}*PM#(he*#e?vSLSTWlRcCNs%7%Rvp$AHqb>Y#PB%fRYWt_<> za;j`15C22sFLDYc=)DyPo@R&wx7&Ao0OUYmAWx7eC`WEu?-@GFw@XXlq@GNk$A2LhJuU53Md}>JC!uCPel+5pIQ#d z6F#DCZe6bQ)Yq2cW<%HB_hqF_GTgUrBx}$DI?E#^8AD-u2*J3b5U=WTml8*o${m@$ z7adPQ#TGcf1a<%47gi7Z20Yu9`3jgX^K4m&u_AUc2{IH^Qk0F+~l zY2bNC$!$Wk-sm)EPy9F_b)1qEZyyDksHN$)WthKw$xQ}--UI?_gq;eQ2O{12d+@e$ z04W&~FeR-C!>28gcW4UoE8I}`<05fK$F(WHb6b9tdM@Cjook}>t*-4CJGEXFMmN2q z)eiMK8HG*SG94^{F_MIrXFp<(lFOTsRWlE$eDZ8WX0MoTEZppG!{(IBbR6RgFN zc?cfx5%(rw8kKCJA|HgVr#-LaHn>_2%gIg#Hn5azuS5AwQVG?!$c(l0%;Zn;o?Lb} zg9-v}LG0_^p7ZH(Ue(kHg)Mr9N5~`I&Ot9aRa|CRMoc!UglvqWF?RRwQh@K@$^Fmy zOkm;-w0x?&kaZO0q^ib}?R;3dsBnsy&h5`#9U8FI`SGv#+~Yyg9_26kCB+SwERF`_ zG+=-DtRda`|9%3V*A-(1`eV4s*0SE`evOf+>=p0Hc=y)UnDnoRt_Jv)>#$_~z-uG1 zVakoh`o))}14%~tRs*AnR+8yaF3(Bs8gi#Nr zc+Kak;+UXA#Fu!0H`91WAA|B8`v_N~=;(^$9aZ7#(j&eQ;r7Da8DMa=T#x?Z7C1AW z1K$v>VKe|YK*+z&vy%Wu#o3;7zZ>mJJt4Qp=-?87kmJl(co3~||7J-d9~9UOV%Vta z<}y}A`8V%=Xdpj%i)EG@G- zk#;r$LnY+?m$vnhseP_* z4e7wP(yP0s+{#x_xCzQZS#xXRXkQ%{ zJJ&7|SvqvRUlS=IJz|KR1eE>5HPcU~3Lvik=-KRIQ@q z2TGsXuyRMVFe-LJ6YPtjnZ_;|K&RT(TG&T)!&Zz(kRzWI-d7j%MvpuuKx;L%!4_-@ zteUHe-=`>VFMd2zg70*)M>79Y&3jWfz@>_Mg;SVC$4xeemi~^tL2>NoZS9pvtYHuy zYkR(#67Lxj%@86~Ox22WZ0K8TsA7CPk=Z`@@aPbhE!rczemCSDvV(P-29`W#2{2yY zxFp=iU>HR_s`rgNu<<9hWCTjXT*$%pn>3V;e{+qFHXfga=)qN2*bk+z2S;$10Z&4L z2@~kk8p}clCt*5_+Va0bV>F<&!8e4oJOuQ`kWtALVn2{_ z2Ylb+5Bk1%Em^~Vu%u*zLjFiiw?Z2L^)yGjuGor0_0u8ccrZpde9>3;;o8($pCzwv z8O%j3^Np}$-TC54R!;&9x$kCm=SflmZPAG!ek!g|$9PHeGD;m?d?091Btn?7+oOUU z_?f~b!Cuj}sGAD|r~I4#8W-fU*_A2jMU26bxW1`!oPKBl&`uB($C7y9Jr0rI`Q+j1 zk$|Y;ye$7QZInc7)9wExfJa?3gB_gfS#%v>-ga7#64p{(?Af|L1AAL$&+^v*|orzEB> zjXD|)7AnAlGXJV;du+r#>j329AvIrX_470VIpZKvYEsJ;;XZd(tkeuP6=(X`i~g|_ zU9G7+e?8k&gj+@|UUk&FdYk?nRa%sf+aqs9w z-4Vn`*wuk8rlcIBOV_c-j;aKV;OF+UUM?1F5^$B@1%o539A~-kcirpOoS(k)wZ)R< z3;SX%U1;5s;ZUX%bPGOWXa;~7y}+pos~aU#!MbQRVpu?goBl-pRM_sTR8vRZRWVzc z!sh13tqqs^QI24CNM(Rw8}F7m22-(W%Sx(yl9Ko5Tbx>j#=W%&$Ncqs<`?OWUR4ligj8+y}U=Fd&7f+rS!P<+oOmuNNx~CmvzYn(Ns&>ub3IqNP25y~dT zZY0mYfOOO(u=&LMf9sm*2e`UUEfYWL_z9EKiMNwhuAE9&0b@F?BcuygJVnQ|zZgV38zXR^vL0+%!Tq^ES-OHwhEgpX+Nd(N5PK`xnO_qR1A zvbeXnMGnzaXu6Yn83M<`1RUvgI5d4((0neMCMQ8m#-zWw;*Q2DtBK8$HhHPYen}+f z2jyzc(?>RM_2R9aIK{Gj5Rwi*n+PSsW`rHye|OR_HEgOa$`{X3o*&kG-5r!}4Z;%MlcU?gqbY(f7y5h%EP z{U?EqF@31were{#WCSP?&OS|a2a`Z3(I$45n-H2H)n3dT=f2!H<{u6RXPDr|Zl@x> zt}_7|k4jj%yGjIWnWv@LnO(CkA-t(*yW05q7;1GlJ8tPzM2VGWxun(g(+B*A7xb47#w; zR)3&RV?IOMlmZE&nb+bHscjJ8S0s-6`G22yp8YPQ%d!X9^%GOm0Vq~zh#mGxNpBA! zeTHL(p_$td*`m1y_FEVo)TRN73uYUN+BVOqP@BhHQ6;;>d-FnlWkV%U?U1kt!bMn_ zHv^B>9D_rrN>-}rdu@cZ?E{5R4KuyWkTW)w7BDH)EP0OVeweuY+I;tHPuOc^!z6&s zpA@R@tL)6SpKV=y@V#kaP3NTAS7)fS>US)*;89AU#L3qIgm|A^lSh^bdbnD~DFBK5 zNT~nGp6Pk#2&2>#KPDFq1yfR}pO-d#zhskiCynt(^9+`Wk_`jVrgxYEG4Jn-Q>VyO zPUX}lgW8op_6v;Q(k3n4xLpoez8`JH`lw)3rw67ywMOK)hZ z8j|QO#yvs~Vu2qFF~Q3E@P(wDgA!^UD(if!3l=gu0|{H31`LMcA##m-3z#~ms%0PJ znQr- z-gcBu6cQ+`mlN|4%b!SLB8Vn@_m$(CiG1y`RTc1ZV+24!0PPqN_wt|ip{0VE{tBLq z%bLV7wDzWcfIAdQX^eCcaNSHGIuF?IBmZNda&tIb<_e($aVa90x97nDDSYLb9YkV! zWV>CmAvO-dn4DM!4q_QruJP|s>rdB8OM-mu>X4m+Q&#(9k=S{bgYe896oq=UP#Ydj zo+uJktA7(Q;^lcYu@G`Y7P$x^T9`g*sInA8ztFlHxZvS!*fPzh8V-!J7BI#>pJN4S zwZ0ZY44lk=GgMBw2%xF<22m)^>Y`x7f3sSZtgLy8LplzS#cODhZ9f9YY5D&uYW-l_ z6IY+VV<53HQr@sz(uGVpw4Z^+WS-8EWzLECa79#C30=Hn$tXNuTXIG0XC~9<-SV|> zO6f|@>q)MfYhnq|s6NhPP9jIA$f4DnGTfe(L4sUpF;NQtzYG+%+Kn6v=QcEdsldl; z0dz*5>*@dC49Lq}V;SD!#0y~z_1*f^v_f1?KG-q^X4|4dm?YeU>>CQJ^LF z{bXEPwu}7Jj-End=sBuVy!EKxHL`r9XbDtWYz6oL!)_8nn)d@a%RSV;PbtGHQ5y=5 zLMy0+lH$!@(7pVW{run`sh9?Iem&AVmbL2xxUit@=m|gTR5eTvaA5j~Q}G($6v|-e z_=8Jfxl%??e?PxC5I^fL5{TcY$U`$*D!I*@bZ;HaH3jAGjraX8Dy{|#aYor9I8dZC z0Bm;a`r z*rD3mz$ZE*zDjX^(wsNyer;jB$rbE0{dD#TA-gvb9c|GrGlL_Vsj|S zFf?+`w59~rTnr>(d~p^TNFxHo=EEGzyu1s0Uko&DF#2zd+BdE#pCme{Rc(S1JXN)U zIMv(8ks>l(F|Th3lbA^;t;zQZ+fw{#1nH@PNc)B3s;`Ed*+38IAZf<(7HIgh zp3iEIly{xQcFIL&oZm*9J9oV(N#Olkz8;YxvvJN=huknzGSOvZ(Xp_l2?b(&x>6r0 zXO-3{!3D`3p6PS2iRvZ|s}b5p>U}!gk~=q{c#nTA-=<)>tfc5G?3pCDc_RaPU`JTy zRBQb363hSav`Bj4lS}jz3HiU0LjI*fzSAF(i5h`b z+Vq)L7Z%?pLexDCYG2xa#le0j;(AEKqar{Pj^&bfuwv8sM*6AJHuQ6!q*7kMJv>~s z{j=3M(+&DT5dTYZsQl3uJh5YgJJt$OvS?eNXo8!%P6ACAjTM}WxKB#-_e4SiD&8=C z-T(ZOpkS;3I0aw)+#6I7qCIp||He#79LXmlq8k-DlnI7x@#J!brN}@Z3 zh8505o}MT=q7X-g)f1Fr*lON0N{vMa83Ld?$HKfEM2UQmS_)`6wahy(zGzI~G}6KX zVxdQ?g>&g~0j9_8L9cO)y~iJ{#vtxI9EL|LvU+Pud`u`T6jZMTvRfO;Tq36nMU--# zoG~dv^hW@}a?TEVw)3+&?ndcrA*Z zxAO}kOUz{AuMi=S`^fH{^?Vf{4N}20A~WBL>PD2WcrSuB8uH;7}`I9wb=4oFOjSHY$L#J^S18hT)-ob61)g{T7>ks9YDe*>FdK+Mc=s#c+i~i&9CB=?LmI0ZP*2UQ0aJ%;$TkX>-8Pz|>w@QyD3d}9J}w-8r3%bEMD;nHoBe8kg_{_QJtZeh2!h<-|K zKh(LT*U5Gej7-V8xq9jupMK>~IlIXUVzi4)om0SqC4L0Q(`bLk#%7||Hk1Vi-iOV@ z!OWC;oJw;p)CYh(Fa8!M1M5K!MQhsSs;t9o46pLtM(A(X%RFvu1}eP2+$nI-5d67o znoiI}_}4$JnTfD}1@@*ld+y<+FMcq~S?wAMfvkfYUX7}i6B%%_ajg;Csal0Sy{7hoz;Zlrm`0qSxs_E>rUBny z>SvUHlshGk=GLFuy`vL}S)%A*Dr3v@F0LAlzoOsyMV)ai8|}3vJ+g?~v!SqR$qFk? zlf z5^{XfVR#PL8{VrT3LT)}#&!6l6|69Yb2bwxpOuf=24d0;LLqennzJVZ#L$|cIxv!AA}B-B^9)`N+tJL-+P!Wrc^f*Q2GGgY^R+leIAy zS3YC(P}<5FHpCj)G3V5HY=00mL*Vo?MP5ELtt!%+I`eCyOq^a7lIsdeCY%~3van4| zwOf4Yd`il*z|UsWubXLNJK`m}~)(++eww^)!9I5k)Wla#C_HbA(r zGx7{!Pl&R7CR!KrcnnCk4RA|Ojv?lsoe3*`s)%YIvhlP@JE7A~VWwRR@B?G{rt>7^KF9rZ{UoqMo#$L*MOSR$9r$Xte7DOm1ynvjJEj2#o+2m#f(7@&=IfxzoRfnP}l77#!3pBt14es4Ena4 ziBZf(j>EHW*RhwRF@v-IK$TLfCWRK5KHdb3knWxS#RcobaJZy^4zGC_o&x_SHNG-~ z>EI;Ao%?R1e;}-UmB=e^MC{?(5q3&3Zsf3IHc{@X3sB=SQ1M+Vj98pqs23a9w*W-B z?wf$>u%Yc`k)L$Bbo27QD4l7^QA4z!9^(`V+u)!)O$?0uB*sPm{;Mia;3vcZ+N=N$ zGzShEaN|Qd+9ZJ*+pOJ?K|xxmB_>;P{1-%D{aciHlD$j!BoCnNY(%pSNRC75YJ>E= zJZEi}rw@(xq+hv=JCXa+I0v3q_UtU>%;Lc1#<=0xi>`5z8DLx~0k}5euqsZNMdETk z4ro1=*_`S-&Hqoy84)^wfPmx4o7##ifyP?Z)E?d;d9>i<-oW#B$pEnNFvHpPHIByX z2l`-36E|_&+?fOzG#F71Yv0wBWna{eq%=uFyLhOL((h4wO?uh#AE%&dw!aoDG@jss zJN6UoiHyW=f}Ihgo)*?#kP5H^Yu_PwxzoVSBk_eI7&7`${da~ihyaNH9il`zVYkWP zE%c^yZgL3EU-^1NsfW{X%5t2f1`2R%aq$U%=0xoxX;iwx%vTkqOk!c7 zIu(jcka(G{mQhrEdQEe@r-8E)nZPfJEQz-`;6RgX#<>dj?--!sFa1KA0NkgJ|9~{!Q+GcyP zNs_9K?$(RP_1dI{$gEqE`@Hp_#dszEW?V1lCQ@c|apSF;9631AK| z|E#iNe(un+%!TP-^KnaFR=;6@Su*t^OQ~S`|L>&sC$)Hm7LEn3 z&C}QdH#sp9re#wxjgALhTJDecj{D)&t=Vk^=PF_BNd-b`8NNLTQ(&ponO^5YUd4?Hp zmeBWV8FBN|KElq?uC$Ek+#?-wa6j+YxBp;m%(6K<@a?@$#eZ6@8v_2J513)-_W+(N@~Rv?mVH33m8sQ*eBscQuG-(5 z7}wWE4d^(J%FK!<_=Tbxth2?2szwWe(i_(8&p9hOaiJw`hX@TexU-?dJ_6@|R) zbG@WL4Z0S`+KetR8tk8<9AP*9}7*a>X6Bbn=CFQ_zM^D(4rrR&f zXw?-;TBpgJ^f9Wdf=px6<_SachXByguyxOKP#hZ4ZM|lBm7%xQ#XpNv@>g+20_>n! zLq8{e>23lX(26k?Xc8T89l+VUCvNcpatWZco2Q#iL!l9c;U%?)Vj*$bBHzuaVBv99 zX(j#!!SpxZh{i@Bb!2_c^U?0CQN=pWf}xMMY4qoczhUCA4+oz7H)y;4f%8G#iJv|0 zQ1ATApa8HefkcVxnWaS>WlRuYzGReJ33gQkv48%qcfo-f0zugnck&@W_Z!_Zptwks zV5%TS9eRk>J!c|JW}>YTuaj38n|t6O#ufIe$`Z+@wu$ z5Iv=k%@!2YI4|fbQWNqAh#LQ%y<&nXDJ5=G&kWoFEtsTd8Y8F5ZG{!Q*iWq7E{v#h zo#w&3E?44}P1Wrakqgah_1KifMY9CmTuC0L*PDdNB)`8R5d-E<5!8wN;2b)a_}Njk zi$vI8bXuob-`|0YgX4|#k!3C;j1%yp*YieWrf!X_SRP;4V5!t4{Me>{932FWbFDPT*3nQ|o*ZR07-+YRSs-Mu9FRgbQh{J`kp^(d?b-=HO z{6N!LI~V>=amInNCxfV~s#r(L(lvFs-iN%&fAPm{)o&1e$p!K5`g+hISZmT;pS+Mh zHiDv%)V{syCc_wD65ZmOQ>#7`IdJgZOKF|%`+d+}X3&E2uN4<Bx|)T#i|quyra%*LvLNyP=r zzwlIj*@E^5RzOkNDdS*mZ_8PxH*ZnIy#v9gfsmI2VN<-lK@OVp^OAY8xMV6KtTMVv zWPAMp;&tTmCM(#rq!K-`&HcwrJCxNJCV?E%9v~+Rq~L+a+c9-4^hh%XI-GfWGTY}g zK`sJ09#NbTSG*AMKTEv`4`q02iB;4BNQ8x|;X;kRj8Ekq z9LLQC_!YE2-R(D0eUu+W?Xs#7M^c8J<6fyoU7fqU~TrB&c{M;WepQyAFw%3bFPNwvX zURdSvlf@sD`5Rhx`4#G1;A4Q@Jqv_)36;vsjoiC>Rj0n#jrij|UaN_@A?ftDPxN^; zM(#BfEb<|i9{#mBodfe@vP>s7cekN5=~Qq{N*DK4@$z!z=yk1h&4R(rRYWbHe& z?N)XV$Pl*kwHGkq?}4F1*w!b_$cE+al(_CzfF5dt{5vrmT)>7AFh8**!axSvaR2&6 zFST7S`^q~G%TJg?!M{s;G3w2;G>v@&lxV(}$Rz2S(uDa>i*KL=TEx+fvAq)`a=g^Uqy6YS-wpsm5GcBxPLiI*VSO38J;7}f}xv&;wV3x5{@ zMIy*8C4bTMY+hAJ#mwoNvcgmJdZ~f>=bsVPG4uCmJ!9&%9;#vwOTOUok7gSHf%D!i zPJg!hZoh(<%7*3%6SoL)*wX|T>M7QD;4PEGIeDE!#_YMR$Bjy*Z@+3GHd{kjymm6u z0`Q*pvxHSHc8;;uirg}nERV(B9@|e;G_vsXCmTV z&4NLjVHFg2$Q+~L7g?>>rpIbS1aRnN?t(%zl{DXi$fo`+q8gyl?@HflfnX+27X!cZ z%7>unPc-p_>~{SA)eS%kswl?u5Iqh(rslDl+|gBc!BS)QIpmDM_SJMOIt5Z_ky@P> z$&-uLwGpmXNqihEb89?qM^bj=$dyhtq9suCT|z>PaN+7B*_@ zUv170jjhB~p$Q1VgI~u(e_5rP4UMxfxS8J`Zg$vHmtuL}ltDh zt^nRiG`gz}mhboiK=sQAu)>?w)%`F~Yp8i;!CuxT||gFd+(};==E@WF=b&&e;Oy*} z1pnDJ;qkt8_A*^P1b<5?Z~-VG5<8mz^fvmup2Bq<@eSNfxN3thwSwf!Gw?hJ`s>W2 zVCKIu#s9<3yUp;u=8mz&RG}FB`)^ZpHk&*x-Q*rbI_`}i@QxGVleHiPWYZc1dzs<6(ESOofO8Hg6}>p{~3MM@eJc4|Y|}r~gC1OsIhy`G!nyjMs|+S^e(L3e=a{ zeozvBc`wc(c<*`S>W*!2F>Q~*mQoNkH=p<9+Oq!*2zP}wk?-06=)Ky0$H}EG!8a#7 ztn-5I+-65_9=+@42g+iafa5X1T4u)wb1fuMC7kfZs-wVdz$U3UfKd0=d<^7g+#;7T z6eM&FBI5eB;iTv@sGagDz`UfA6msVBFjx}6@-CvCZGqZY+1KK#gsgbzwAPqY4*_`7 z`>konDxB1*U~OS_aYbP|TEt~J;?jpYig}52{cewStVmHc2fe znkN*-4%aYvg-1z#u8w#Wav=^#VOWR!PZgU3}K@q3_FN0Qye z!;C7mi;3R^1AOW!xQ?^~=8A&G2e>D*M%%a%UfOEPMcJ^qm&A>U0I&Je1?ZNnlY$=2 zA*u|?0|+&=I4sqR*a|FlT~aq;Arhk6hNNZ6VFCgc zLP<26>oa=4IxcXJ+Q>+qQ_yMs{vx@y8((o1b(DPWMoCq)Bx@3x$M<-ct-Z^d2rbg1 z+j(Ck6(+B;o>s#bWX)Io-D$?p8VitZ2-71(a|9n;p$!~z(|BRrF+5vU&QDbb#{ox^ zD6g6i&i&s(8B{IAoG#MW`I0#p6Ax;g+WA%GYZA`khE|JV-RyhL9o}=OfhqR)|NU>N z8<`B)1vp)@USy*=KbE#CD}))XzJUY?vZRPADRoSI zf+Gj@H-D21bkGA|m6m_Kb=UC&Zi!vg#1&Yg6?KCT72+^ecI`ZD{dd}QUiekbtp!6} z*6=&gBqwp43R{~|?Li~&g){oo@F5hpN^t?Q1nw3PwdY%?Yhh=I$$`9NZyEE;bO(qn zXW<7fA?M}a=|Fy#aJi5J4&h0Uzee-h6lFXGe5b8_HAHRc-^azFUx&-}EG>08(yzC( zZwXhM$wzx<%sj4}Afu5ruL{6wNP(^W|m5uNRqDsbyi*@PE1B zsu%#(Z{Sg1+#%NH1E~ALlmNjLYD?_y=1Vhw04CM)e#A$eF}s60o6tB&)ha3JM74qD zWw17$>yk|6GeCt0P%EE{0B4!)#MQ_`#ed}<;ssanRe_9IP9)IViZb1c1#VL5%VIvB zxy`$cZ|3I0>kvMeJesHkyJv|VHR=F`DW!M>W7SiO?EHYk>sN>ad$bsGBNi))mlnK9ol`MSEVOXE#;^ zj`z|p-c~)l6K{Aqw4uqix}8c=9EfoMGymrPUy5J<=vUR<*?UFjl1+usn|1rR{qO4To8yIU1w#LkZ=}24i+ofyN&;7E2FU*d zw}N$W=MKq86`8+QQD^xT?dFMWpkY;pB@mDS!Y^oHemm*dsVQ6W$*=mFy2epipZ+#O zsc~OgHZAB=Vs2qj+Lwmn)|TKQF5_p++dCbK?hgi*Whzqwb1}^589_C|XZd!VvD$m$ z3>xo2<$h*~iEyDNchw;}22dpC7G=6@oIse7yG&RcbO9a7KbO!cHwNJ*`&WO6QUapgA478y*TdGalTpb^vWy|AN z!-9cOE1Ham^ri)44a;f2?S;*!kCydk$jK2407oH9wG%P%TvQzWkLYcgZA&aiR}}Cq zyYD7SxqfJ3elM5CTuZL2sIxV=;Uo0%CCQ4caL&3aIzP-yM#*C*Q#a8%Yz;3?BM=EU zsGkMw3!M!Z`?eP!lr;WTg8>Q+6C8C+54LVbYK^E{AAUB$n_Ts ziEUC`Vvm(GTJ@-=m1YJMK-qXoPPfVF2~7NHC46n4Dd+}*5zbCt9@4GB2IipbG!K1u z{cNwa58VI|D^|87Im=3Cf>$#ha#lEP8l>(Kj3uD0>VA;btz zIiUuw?ZNBkDvJIub%Y?V9vNe&gv1RnfE+f_1pNUmr!7D~toWK9rfCW=j%*KfyP9J` zp8{)20_DMSEh(jfTdkHVWTn^k)eoXQ>NWt5iglXtuoF6Yj>fd!TpM5x2bt`v8?tvb zNYHz{#y^|jw#_CpSyxrN!8wb&6AZcXE}KD)%jW7;FY61`uUHptc+McPE1!q-e~P9N zg%2)eyqh3m^ARr^Z{Q41ck(Q&%%O>2)`D#4?mQ$C)#6T>C*K!gV%S?LgUxM5Q9X{( zIJUrN2Y=i`K0vv-*pD*Ph3~|naQW}H;lfFrF)Dk=wf1ro7t8=)C%`R!CnPS^E= zyKNkerWSJN<9}1wY_g|YHGXYhBk*@5ECGmfH8mr`IdsqUpIFO9JaFDgufMak>hANG zLwG4nlNnS&h1q*%Vfx=(J4+Py4tD(kp=h8oPUMN+jt@{4a%{q(UC`UsJ&jILErOkj z)L|>-jd+k^yWIK@|8q#k-VU|ejTs&FZITx@-A$SBL4kc%`OJ!st3=nS_AKN^R7>y&AdHjuH=T`#e48ih8$I z^I*J+j>S+iunS$)h*W=i#%7>Kgr~3%{Ro}*e=?1ZxY7Z?jsB9Om;nZf!yYN z1gx#u+#(hPqhQ9VI=jTcG^8TRjWY+auwr0WTbF&!{IsW=s>Sb40dGoQ$ycB@DO4Ig zaHUEecJoO$uRQTNmK`6dw1{I8j-9}N&4MPuTk{eRzaq82s-S<>+|~i*#v^Z?f%Tpa zfGpr2PbS~B1W4Y1E{W4QzlB1iFk;UqCOkcANTd8%I6sWjel$vgX3widvek(o#-YQa zM-V$ZI@kV}xJPN|kU> zDIXBa$EPpfFn5=kd8QcGe*`0P6}BY9+<0>e9xaE1Zj?o5OMg8-ci+EYYt79VPY1Cr z=kIJjR-gTjpJAhpP}ZmHRm=SPO_!u}@#$!85T;q@?-dS)?6Hp*u2(11krK^n`w)Flt17u(EG;b_CBun!v(FcV0)Phb9 z!2l2=e*9ht#fEh{8jOE{BLYa2Hxjf7#+nCy9)^Pb)&>HWHoE4G{_uu6v7Q?M{k^k{vkJg8`@ovo zTg+vTzken?S=^Q5o?OKrMSnvgK3ZA!6;OqPA1nPQE>&Sg}2Jgm-F`tI?mI zpouWVz36qaH+Lj`OcGb=ta4$v*(h=_PO=*6_$(S7lJB-sVsM_YL zmCI%S<+LwZzS#u+Sy6kIoe0M?r{(uX;N~Uo`4sLSJWBWNdr>tTqnumgRmY-X09A4+3NfEh;rN(Ps@SUS~~?&ScLb#(P{m93FzeKS9uEIF=ZWevqUr zAeg(~9VksAqU-Z78v z?F|Sh9FI!G{y&s>@(Ql!=!g_^1>Z$~|0X_b*R+6^kL645%T-E83A|+W>K$Sc=Req5 z|6BapQ*z9A+29G=2G)7o(aliCka^e4f>wxeZK5|h<8L=qk6HYMBMG({{=03UX32Ml zSXuGO?l5=)mV2nJJ&bUo^)w$x3MCY7|iuf}sfb-b<0g1#9P~ zSdwZE@t`(m8|)LWYBWlY{(s45)ZM^9FA=G)b`jh>tQt&w8ceLVA`m#+7INUhjKl4^ z8VSS0V$n{GyB-*Ila_G!96wZn=yNH*(`ZC^cp79%jppNpP_Q^QNpg$OZCFgBz1oY?SB^G9tRMN9Y>Rw9Hk~u^daDfv@LU^fk{bpr7YkUXR=-}N1NI}0&eVOWDi1~0#+je zwA&o=7a=f`oYa#&?^UU$TmU&`gpxs@i}1g!2^_x7-prBo*x8XRl~-1IgM+6yrnVzrBh62DXWXp zYfD~wO4^aLl|eB39VUy+cNVpOLQx1n*J?NFaB=-Ao7`c=pA5K$V;s9mXIT1&72^|0 z<>UyD&8#{-K^3s%WjN(cq^--U-1r*59jh!HyM&Wak+y+myatHjzwS#=!!(5o(!D}I z?uuvM`_W}qYnE#lZFTvW@?)WMM_`Gd;E40K=JtkAHKdg**q7&zOhANGEM#f=h760M z;>=40;0wN5AY8VI^{+dh|KHGS!!Q+0mR_I&BqA8xeh;&;K$}wpjT?@4J;9BC_hfC^Ok^ct}FW+be z(o5?UB!siZ-nfu^p+Rns1%oE+-Ff`PiY0A~^cQg3EHmoE1eS-Ov-h3NyBYpj{3u&I1C zyl%J56t521C{7Fq>3f5-SMv;PfH$GeWT_M#iV}}lC9YDk&K($`K}-nzj8;BFI_)| z;z<9pO5}QMNe%(}boT@wCS4gxMgYzvw#vb14C>W&@~_{|FZ%4=!2OeeM5D+?PPI>Q zim0tG7}ee1I<(4ay;b>$T_~lY?}!d`S9G^Lq8&vgb+z+q4n-kH-8c|OtyOTW zajHZWmpDL~5w|FS@ab!`&om9UvBQtq0A7)?|LW*$c^aGRK9zBIAIrv;)$>t z235B=gc4c!vh#5f34ElMmh%5W;^@Lsl z$EMbmXIgmoB|Oc>C6DEf-36EaS>KkqgC#uYcz&Mu^NMRgye-#0nhT^2tZ5@WtZU35 zq}u}e6wT$tys#Vq!zbv33lSJ$XM53*vz!C2B6GtPT zSqn!W1B9wSXyS_Faq>$eqo1!%zFdQ`X&qgS|NhNd=LWbWCIIP*wEw0%|9Fw>-$XV&C7e*_c-KGp&9#N z>%~}CSUq)Tg(4B2s@z8k7W!)S;WFAp6soiRV$kZb!VK}+AmM%6Z6bsWxFwYVqP%hU zH{5L#cij~uhHGX2(0rDU1z0TbJ2cbC`=ID;-3S|9FN{;P5>j>)4Lv zvH~*^s~V$o&TS%s;d=5TMez4%TpoMV=ikDV-~c=1G&r)2nhmB)0hN>o^90sUq39oV zY=kXwXv&k=oX}zECm(`ZDZU5@t^K+orbtr zr$eE|HiFCHcFwUz_Ul);Zc!}alSp!<13<}xJ%07iCiIYf-7_bAh7=-_rlBzu*rc~S z>0@ORYko7wP*iQjG*M4&OW4|0$Kv=hI}M~6rQSDyVF;!f>+-g2vo73bmfLiH@W;sP zOf8T=0d&ZCfI)5clV~YkieBFZyo04m(PWk&gf4?FB#}4xv4+JYx$h*Fd=$4NJYo+# z+H#7u(ie_TBcaRYBVd!~CC>E%7kzHCZZU3Q8kHuR*}!z217zRsH@sxO8`5mPld*)l zI=0QUzc3JZSx$M0Uk8L4g?!mvHW)dhKNvBSJL1(L0Bqi)dMoEEwybm7iN zJNopri31;nQl%~|GQnuc>F6!>aSVHDastaqQg?Niq09X_o93`!CW}SxFc|>MG?Z8z zap3F~sEutA1(_@C!ui%yY*|Puh#E0xzV6VG$EPA>sAsB6CW6$BwAvuQ;VKqfa0w?j z6i1;AH9A%gmAtg8zt|Nktlk)EgB;n2rrLadAbr5c zl>Rk%BR^@e@)uRujWvjf&&+FI*E9t1W`6X&oX9F7AB?EQ!lSoNeojWnI%a(OuFK{X zH?Goa*_A7D5;Q+SP$C?Ms*=NY3tw)`;VX1u93Bf^phu>1GKu(|wPc#5?e>niTES3L z2xiJ?!v3@xH2O69F+C59K$HpK>O*s7bk65*BEi=T)o(|8u={1lZl*Nc*H5Ci*SEEO z+DDcO5vN}QoI0j7dbHIyG8O!Pghha=*&Q=j4REC>F51IX9Tdfo6pt&)@O!)NIJ~>2 z+E#m?yB%SS2kGq;%P?rx5sM)C`YHVq#iDkI8T+D&nw9jFX6Z*$feK|QtR|L? z19nhLTwZ_37{MtgUFFe_^-yzMae#-^1oNqb|6%1$=!D2g_htD$#H`D+%D;c>cLmBK zkWSeVd>9$Qt?aG}NgkM?P7osDD~K1QeO$v?{UMY&Is1QeY@wW7F!$)OAXA}-lu?OH zxSr&$<07z{om`1vlTT>9HzfPz1K}{?l2&eq!JmZlPoEZYL(~mhVmAryVhj}HWG)dF zna50U->jvXmc2hEJ-}1efKNC3lKgWb!16{oP(xsSG8{}gh`JV`x;?*Tz)%J=e5+Dl zwF8q|G1Vb1uh*34@k)%Q%$cZjE#b8#O){D%l1#PAa8nck-1z0dPXSR*lDE>H)Zf|>nS}AY>xahQq=DSh z^P0NP%sOrU)POzE2NORF=VQRSCxFQ`<5g}Xr`)`OFD1*e^~|Al{5ZA{tT~`3&Vf+oaPU{B;WC!}Rso|4C_JgBLc_7Eg}`f3uE0$4EqQK7_bN z?I1bsdEt`B_=GcT5;u4*CD`UX5l>-1hqyQ2BV3iIWJX@ce+{ooJ&D?w-lP4~3Ln0m zW*YF(_4oc+;QQdh)RfH7w}`ui+9rUj&?~$^%nEE}dma#y&swp?opC-<@2rP1f7^c= z%jURaEh-jACGMJ!u$_?xo4oP+`XH}wLn2&OJ$t7dxv+XWJq~rkcqe3(rZNgrz-!!6 z!}>)6zDYi2B}Tu2QC}9SVS-KWI@bbEw8MO3ukh3gODnJzm-P2#uMmx$dLT*A=M%zVIkLNNd6u4FK`yS942Rej}y51C!%}JiKyva#3oonHWevKl{}&Orc=_tpT)w;SSB&%FF>qyld|3IExTsS*ZTy z**T8((FYP+!(jHj(eyL;AUBAl%u_ZJB$%|pz;fDuob`0@I~V*z$TV*dg9TrziK3D8 zcH+U9%~@!|AbmuH4$UR`Sr5JVn3r0)iZZ4yao%S0`l)>#^YNRf*nRUCPXm8uX~kSFfID(OD( z1tVzlDMykxwNy(&EplY3)segj0P6iBe&she;vi2|D1w5AtxZeot69?D^}{Zo6t1{~ z{P$AZxSKRQqs?DlxX^Cbw?O)gJ`rGiT*u^#v(QJIQSV%Dc-*24ajAYpq64{;iUmuS zG+7!+(8qM>UZ3pHUO;J&_L-)jUk?z|Q-@y0OlmI?>hqq{55{(AbxJ)}{ z@DUrv-*5gm09f&}+Sn>-B^=KH!kIfsbg{uFexF`Rne?O-uwurYs_pE>bhFqB0gtrw zocooW-YSD|E#s|`tK@IW(b68r4Pd)GtNF4mKdON$^60W8#y(3W;65o>5biqH;#GMg z+TYm&RBwVLxlQ(Y&#FjGE~$%)AE%7~~qoI?j#1WnDYnuXZNG9(^io5s804hm&{)0-fIuXfnSx zDh$#rS?83s#{MZ_SL7mJ7W^w#L}`>(<8!p$wa9gv=F421>=`1f!IWMq)g9?$yzFz! z-26U|4Q9O_s&97U2n3?0joazglx!1bHJ~0sC2IC;kwYPyvifK??$v*udOE^$BBwxa ztmsc`VTg#8#`K~K-I*4r<`M_H>jpOzEzH#L zNVTbtgp=R>N^kR5_&j@9JG9|7VccM=>nVqjciSyASrmm3y3o9$ov<S55a~VOBG~^d%NUgTG^a&mCIqYlF8;v?h`| zDw@O)1~>mhzfUqT0(lP<&NDwloY>YX|6%Ris;gMiZFYfT#Xy;~n{|rg+oa+Dj)(D? zT1^I0>mz}E5&3fipK*0RP8Ry=DB%8^7mT6-?cmcx!wD@+4e}LUkI>zv4_AQ~-;PRQ zZ+nE|DeL(SOAxW2j5O(`vb%OBQB#Vf_i!;difkHu+5x~u$5o-=#6SIosp8?G(dMV! zPURN%dCM39rmw=z)!pKpdt+mrQAIoM;ybZmkvop8sIQfspTGPA!nk@*WB|8G}=n44|fq4pcRRA7GU%-jJ*85(oiTWpcsL+4-8lcOG{>$ z&qgB)i^OO*KARTYJui!37>*^u#u?^Vdo^G-Xo<4CVR}Mr42q_yvB2MXy$mG8E`aq41)qYPR7P*4ro1Ap!F1x@kW$9qt$)CU{___lL?`JIjh z6BA}&!EcqV*umcO)f5avvK=+c0DZ#vF@>Mo6kd||&_dL1r@D5a>z5IlvVd57<`FUA z&C&>c>q>vA9*0y+cnL`eLJQ|G)4Y&){9tB>LdhbN6^v*&NdN#Z^ zjJcLsmY_kh^{y0PGwoz*WotXERrJLxv-OB}u7o`tK_SK-ZG$QHsIMzdg*iVHG8|0J z){Z=L(DgonaB27o($97tv=?iKNBGoWf>^~O*+q>^TGFp>qk{D1YyOhBd}u_HSwR?D zhIGy8o#=pu=*L>3<=@fg^c}FaiaMx8hq1xMm1J-q+2xQf+tWB=nRT7fSNMy|r5Fqk zcfeQ*j)$(DbjYfGn!a@S1KpMi^~8yV1!=fXnkpWoKy^yX*-5c^@k*=RYPr^Y%a@A4rli({4%c|!xwJ%>A+ z#J7A$WOG#`h`*CS#KKBJHj)GY25I&kz_{U+Y%kfqf=B&?GhqqD$Z{6YgfjJ&+1~=g z!^W3WjmCePTgOb9@ikII8q4iOer$15f4lzE32M)HA$pB5f(T|_YSV+gWALxEfKv^g zg8ZnWTclas)22})HH#mRg*lQZxTQwwQ)_`~&YhPo%E3Ml;-%;K7{9dBoyw9RQt}gs zi~ziB4v)9v%_5skN1%=lT4}KQH`I zYY{iUiOgN^7Vbj2Z8h|b(04c=Xg1oYl}wUCSD%8RRTEwRa;ssgv4cCcS!({h18?bu zt(5kT@ypR!B_lFHlAaxbEfX_ujZ8kuDQBY!GO&+e6Mz7B9YRW8yCK-Z^R)UVFsg$l z-fi06zV_Brj%s482?YoM9Hvc=i_$9Ns5RPS`5{MgOFbmMfu~vHXlFss!>1T}WCV0( z+<)ff^@*a?3EWT3E#8A5ykcv!A($suFo_R(#uSXHABTKz{aZ_E(ZdeNIYq96KVDq= z0chNS8aFl5kpAbyz7}v+t*3q;zRw|lG_As=SFO0(guowC3KdkFF+n`H3UjjvvmR|e zu*82+gJA(Ck)HM++`Iwq07oU6xZhuH=LXigNnQMUY zkfG(ZU8A85+sVI(HCXz4%IM~(gFq5_bB~2P+YIB9AId^%hEvLvR`X*dD{q*nj*5oD zm`#L#t|n1*{jgm|afNW{SZ)`|xs8XAVi)(Coc;3=hISTAhh_!9{EhtS9^DqnZgFj- zM>M4aLvO;fy`^l^oKVK-;kWySV~?#%rWA1K0S8<#7y=ISir6H0yT5nDz1ZKNMY>)K z4jW=KylxL61t@JD+5y~cQoxdSZTpHYUbR2I&Aiy_fz6+OfZ2P7mW2ypn@c&;28Md#_X$Tf=dqGCah&~x5@!2qzarI8g) zcw?KSfR9_JQSRUZ-4Sn@!m=01Hi`916rG($NAFX}*9ZUb?9MP%BKDjweT2e(5ZUK2 zZ8DloG^GrzUqkcx&a>}8bL<~xOrqo`;BZm~CgBDO8<ltX03~r!F#FA(=Rbq9P{2H%A!OfX{t6Rq<_Cxt z8X%p^l)xLyuT|k?WX_fyR-6 zcBKhC$jF(< z+K=;?O+a{P+=+3aIDLK4{~#0)Hn+t*OoJIqXlt?ZYuBaQ5)YO8i>9kzZiLrEc!>r` z32&yrd3=ULAtjH23|PJzaXk53=dQOjGgN0OZOGzR6Div>fV*5J${|}B3WyVQXm(xl z<;TzniRS<=1ui9w12|%L-{1ApO$-NC~;GZccpxt4k=5tO42_u^0^v<7kFNV)cJqsXjd8lv0M zwdK+}9*e$>)|hMfn$dH~1cRvBxKPIWQ`_bPmAh8D2TEE*%GvA$LAVqze8*Rh+|Ad) zB2+9EIaR)*@rqZw^?ko15)I%Sdz~$h2rmAz6zmW=c{N29IF*19~cngfK{w5X!+M`%&0fL z{@wzXfYoV&iZyTQxG5x}XehFPoxa&4S{N!zojQjF5ln2Sl&C5I_rGkZnG}>l)R{Mk zs5zQp4rp1+eZ4GkQ9yiCXC-2KBzD9BopyK&hf zN;`}233O2e*U69|5Aj97j^Y#rD_=j|L4>dAzp#VxO4*)QA~>XXvyoI8r8UcSM>a7b z0VFazjuVS}iP>*RtSTcbym`-NXnkC#E~~8&VA7=)2|v~I zpbq21Ip2;5I>(G78hwg&*$M;LNY$t7s_HXui_q;t_~T*EJl$I;lpyVtv+pV^$m$LO zu%(o6i%{E@&Uxh7)K@3HRzX08rKe%xlt$6g3NFE%whYe;$Q(h5C@ZN(wN-u)%9W!gK zykhAn`R%^vVON!u!;H1KpHZqftm%<6z6rf}wHviqC-L+u{sjW3Jq*yh240XymKFh5 zO%zIy^2hnv^cclAXaY7RD6~)$04lWHK=|F;0_=;6Q$BY~%(tBm+g&w()YFX`D6V`| zG^?dgGEJO!)8fYV5)XnxlR^V2Te`&;S>I~_TPi_jU$6FpY1E$>g_f7Vn7Jkl2sTvU zT+6O>Uo>oWL*(Z}mIU`oq@ba#3leA<19bcp?N%$fg~C@z`;GA@GpNM#y6mBtLpn!I zaZQ>dpw#Ol3jA3P#V22i2j^e1=gj!o=?EQgF0Si`n=Cr#Sl*%It=PGZ{8-V{w6qRs zHa2E5eLEnZz!Q}V^N#wCIL>Qm4C?ViSY$$PBcj!M*KTV z4_}SFqoTE<@1xrdkH4^0z4qpvbM$e4X2qlOuTCIMGoAx}5*naAjl$$Y#D$AGMh!SD zf<{Od=DPi{-?A&}ynrmhEBw!C>bKnvQOn?Ia_;sm5fGWmhcobh;QmHZBZq1v1k$8n zDaTr_lN=7sJWG<;DtUIPWV+oAXwWc0)dh}cHnoVGMG$cucLU^NI}Fg z^Qv&T9SgX<+NxDfFQ!^1S~Os}#3%b-=V1(-XM071 zOllN4lAniXri2QLJ#)(o9g1C^F*MLX{NP)-n0c9HcAZTQXDwf8uO*y%o0P5msloOXFG5!*u-ZPD8;=AD}SY1Ood8t;5|9v@poL3RK8#~-nlDHy!XBM7I7i?6_=7fdVtly zqX?@$tp|A=E%XDUf@)p}EmcDPEFEpfn^5!%+d!u|Q!F-Bq$&QsZT&9LBk8>LZ?1Np zsT9(E5b1DIp5~)WP-d*)ci|mHWgXKyq?_SL@UOC`1n6%SNmLzQMoZG)TxfH)*(t`Z ze+KRq;c>=vr|OZV0tEhyH&EU7`bIT-xZ&Q}OMnuw`MI0D;v^mx;j&wfU#iw-4u6BWN1}($A#VY z1M!psJ!G)v->+gCno>0X7hOaJIH{Z*;B=qaaK#qKzrI!pNYiuV`=ZX!%+_rhv6Bx) zTGafF1cL++eDf`(P7%kJQ7#!kN_?dfNQlsq1GqG*7&a?fSFgBkZ6e-I6Hf_!FsZ^K zqb*{1{Yvxzf^9!5CA8$)B5^?%oDfi~ zew<18oaTRN#8!h!Y{vQgxo;aFkE1#EbKarh)Qc0vn%Dx^xTtnXU6DdMaR`hQLg>9jL*Rb9V~ddySIrh($m1Aj9A5M(o9R>AH#1~UD17rmU5{}_QJPyKXhZeE zB`Hf|RF}l}+`y+TX5Tcr;*x7q?oNuw(D-HXw z?Jm|U5GZ5cP1d$q51gJ2wTXu#4*PW`X&^ax1 z#zKrAg;pt;D9zwvR&~rO0$wFZa_@v7V9n-_mr(w!0fQCGqp83dnYMB<%!7qYcDZ=n zX(2PUysb1uV6EpUze-I*c>_M)tIc!@m(qrbXT0jrh>9?_KCarLFmHK^B4=hZ%*iL# zlCV+pp6$%^mtth~a4^VQW)Dq_CagDpaL4@SOBBWi#2bk~yR?eSYGeHj%0^2)F(>hkd& z0H6rs@c#f9m-q?kcG=|HU;;#kagNA2H6Fb6WZj*|UA#p=LUqwzq(6n=2@v zh$TsT&;p;2XJni!GngA^ ztI^3LR6-vKGa`rn)?JZDP+kAxIZ$0%;K#M1;hKlOYc`k{{BpOW6d9dbT@h)g={P>* zju42GEEcTbq@87?wpGJM1{A%#tm+2;)5#?B=po9tAlM%*XGR8?xh{m57$FUZX3gMinQd-Njt3P?Om)c9s6oh2D zO%zk{j8;C(eS<#^WEVYoT2S_C zK08KN^DG$I7~K6{nB3l0ILvb3%FJ*@SX*9l#LpsO8o%z7UFvhdDpM5t1s+$Jc6Zqr zj>P8DJ8UG`+IN=#5w)KY=<5US3VV#!V1cg47yQN_{`pP?<`MVRQ5~;SdMmtuBCoXN z`P#<>j(|ItclUVU?zB6eL80~#Y>!2S{EM3QQ>542)$-KpbwN9R)xBz!eHlCg6B!;p zEiT(j6y2EaWZZmpCvQjIU*9L(G4{F&mU=~b!Iyqe-GilTZ33zlMc5EVA7u0?gP=SE(W}KdY6T{2=LJxs6+7AO2NmnKUX*~vT437$_5IFYO_E#FwodJJ2lWI0?d?PBZrrNB+|AxoxT7 zKV#|rP?tRKMO*9?`aOv`I7ZPOn|`M4uJ&2cvoCRU<6y#+zNuoip0ebfQOYd5WoJ4M ze@gO!MX9@9;`dWiSGkc8if2VX_Sj1(tkk%aW2bAK+8p`YXaNx)PBijN zuiN28;L@-?NKz2jwO{p=!_Wf)n<(11^PSl}-*$Zg(QSZ&uA@~G@E5UyXRvC0Q2hsH zBi3@~g`2n9aAl`$${OtVOT^eb6mqtdRd8<~$uY==z#zWVGP+ZGP~x#~0-ll=-=yqY zOo@VCEu?(Y;0Xu|4(g9)^|MS(qBK(1A>!_hxY^$cTx*wbP@dlM>R4eN?A401H>z&| zGcLcw$zR)Geve*WqRz1^X2W!AM69mkHxlRb*g9?RF4ZP6&NwKcr9TOp-7xBhM%FjL zh+G&K`d zu`907cSc!e)wnrz>x1X`NVIFgCI`v?J_J()h*shBg2+W?#IAU02j_qms|!^iYr?QE zsJLa%=eO(C?K9qQ9lp#kb0X7>KM}+ij<`+)-g;ES;t{~>R9%~MQ~!7Px!mkMa$_FfD>Xu>#qG}*ZJ(2v zNBE-)x`1vTBh}6#0k(l8Xv!L!u?;Rk1A(`fX?R<19Cf*J-$Th{AAj9(ML_go^@IDC zy{oq4kGBH>Lar)29~@Zhr^2Z&;n@lwmR@p(dX5MTYZ51HCGZ}%qyyL);MavqleDNy z9$??P5NI8c=gnL!({4G+N#`Qgln!zodk}~4EE>(br!;Cw4wTKrp)FsA>aCpMg1{LX4)LhIJ%lAWFylbFspf12(iId9}EYI_C8&Wyc>YnH|rdFX(XX522Rv%RfGK)U+B9mRLU4!HU^E#luzg*VQK-b55|D0uV*qS%`s6sq-!593Rxlns!T`X>h)b}62Ln` z6SRbQ(toBRv3;uvE__7o%};FeeYPQ0w@C7BXhZ*xYUd%o?hput|jNc!R_DwzddQ!bSMfq391Y zy4hnPc}{bbA1Op>x@#Zv;6o&f9KFhF4eyvzP^*g=v$I1~-ZLeg^yk`JIXi=am`hx% z#9|-%0$nIf4Gn-5Y>aK4d%q0leWkD26eR%qxw6+}+hs1Jj+i?I3w?5`j+7$1uRRdF8Q% z?@)h^(_z)Zo)F60WddLTyB8ei&Xdl*KKsQ`tmpd`5h8=%0_T5IeUFC3{G_YEUqE=i zv5UrLXPrv1k&$3Tqa2$waoz zN*5(meuaj3fca1?oSu)`Nn3sqo7sV7CScldT6&x;YFA{5L9$U6{JktsWRv|YrCshY z^u}6Z0ce@SuLFUBdWmO&SmXU^=vB}j-R|u%%3uVMh&F2lVAkQ)2V=wgI9;l(Lbb#h z#;N8pNZHn+UU8V?hkIBDBKFQ!Yx7W4Dlb>RDJ{te3QS&|g?0kab&Sbugx|PlT~K%p z)QRFA$!UMffFm_`MuP@ZX^qfwiIE@Hszdkbf`YwH0cNG{Ozepxs4#Uk2&5UWH5n;e z)mMn{lM{IpFv(wY`~PX}M)B5KbSzSR!5pL(9o4BAU2+P>Bj4Ci!D@Dx_FrZlS2i&#FgsuZ#N-luKkLkI zrRY>L8=JfDGfHf}W_#%AyrUYD>^7^MO9A4S4=AGF||2GR-1{ZIp@4T%Z(?r!Zx zp{~LLv}cg_pSY4~#rT%`A@LFgYMT8TE^zNwTwr-9=)1(EhVCvLSgNhJZk zG{>N@A%~&T%S~>H^|r`$k7!6n0`I2(C0`)F^8lofP3!w~Mr628_31p4G{@1gC2ylN zesy;iT`L!obT(7VCn*E4q##>51>d&SLd3%oO%dL==ZEr=On~9{ktokraLwkinA|Di!U;p@O3d8VdQ3da?2Vj%v}M}3I4Ohy?Xd<@5Cu@DO) zHky*%*rl0b2%euuw9h$P8vO<(m635nJrO0|fDbl$cLP`L$$38=&i49XY}^XFF`5+T zQg|d1OOd;2F48OxGMdqU*Xc_bbOhBojlj)m>xEJw*WwxJlKV>HSuKE0_4ALC@MNG|+a7UXCYem~Cp4(IWj zRvk{MXI9_;CUE#gHs5y__y^J{X?9W{lA4hYP z4yoY#9cm*LYu;um9t<3q3+JXw2jf+-3|sC`g6EDc7dy>!)o#P6v6e)#oKEh&=8!_1 zfF2c@Uoo98XS}W=TF6RK>y=c*gWcE-@%rQ2=Flh=1|I^i?oMBQ_!lGmVoKA{3{C)rk>?jSFV+hCxHm1G(N}Dr3 z^!X+Fs(v4+p#bCPGv=geb-x9(GW?r3pbDU9@Yil%mE6wr87Foa%d_9pQfa`3{A-tL zu=>>Kt|(KXA4MB@vvNYh$hRWUxWvtYX%_i)SP_CJFv;<*4ei(^E2M1OgF?kdcD(uz zHhwM*hDRXC@DD?srS-C2(IJSfFi&+m%lvg5`9*(;D4PovxLxjatG!c@fieE+jt}=& zs>!k?!;U~2Wd+F(cU;6Qz4eA>TkT^V(U&&7@Akft3vREgZumj)ZbE$hZHdqJyXXKZsMUS0T%@AV) z<41~$4>evwbZd8;nxYWXBZRNymf&FHo$kNe@jRqG0chYd)(1!*enOdizvm7{r-LS= zPu&6?eD^3M=w9j7G>UpCJho8NNK~1kIQ@N@&U)9QSxkdMO!^rM;xzbX`3=-ydJR=tqBp0}*+xNzYwb3Gzx=Xj+}oPIp(Ee)61!wv=;! z9|!ggCg^^lG=EXQNZrxY0U_Lhk*6sXIwL>`--KjDmjphBc=KX@Dp;KJi*&%E$$b=J z1yQj$`p7i2NXpQXvz%na`X0G=J3j4pVWuNIewPcp$vbqd**iscR7K(v#n0q~_$5E1 zl@0zsr=WM zwY;1{yvb^mY0zfKzW<6R*6h@M|FMywtk4t+98~koqTh<(G3_Lcd_~Ri6f&!LulNi5mTM6 z+_b}W=7o%X7wTSGcnTbe5zkB6n1c0*we!rK-&J}9>r{GE*>>`Ma~_W=ElU}I-}5Si zf+-E;SVTuDY!lAseRG_1Tw2>uFq_sv1R-nnp}LMfl0c_O|2#y9?<6@Tx|)fc7ARLBP|CY$tkz&np?7y9D{n7dG}+7+<)f3q<|FCpfnl&7aSn0+@lm$=5a0& zDG`+){S@T0uZ2gEhXJ)qhlzU(cZoCC;Af{--HEWgVrWc09*5uSpNcO8XDLkl&sYQ} zr+A1y$8Gb1Rk9@a0L< zfCh}CMjxo4rqci!GE02hAMlSxZA@6RPM_c^9?RG~Wp{)eg9JE3JkDr8w^XhME+?s- zP)uapH|4^+HiLFgp!z<^bPK~hxXaOOv^{s0q|_(%sWFsYd+Y|d}7v~oaOI3-GG7~U99y#h>#!>M zAurxgo-d8Z%R9XB;Wwjwy+&bV5s>_U+FD0BszLKQ+t8^OlvqQ*y@ zLyqb1hGfi1TsH`wWApSzEbsH){s?$}hi;FifPGDrVR-=(B@D-F(Z6q+LP`H}_4>jf zO3s%Qi?bRn^uB%S4l7_}VpvsrLtwbPNasGXYz6aLyWy3JzYI_kZbA7I?Lwj#!a_EA z=3pa#|B?i4bP%mkP^bk!ss#fPH-cdZhrBrI#66Tj!89&T` zKc;E^g>)MzMF#0%Fq)Y9(5fxC@AF`JOw^@{8mM)2zgK-xTYhDq>EXx1|I_^-++RN-U*DTm`wwu3vR_wfm9yI%q+@1>)z|TSPJ-{kw@e00nR?@&UR|mn zqewq9`WgddM(-j*!^j|ayO>t?&RoiIU68Hg)B+Puu&k|g>PzW6gIe$|E41C%(LKN& z0{G4Zk=Igw9WMq9(!!vBLiR`_LH%K!Vy)6`rITZkmVVat| z%y};|0#ck=(}8A{sq4fd7;sFvy{;V&`0E3O9r|x>&z1y|Z_G<^^3CURzi}%1MN&q& z(P6E9T@~Rq4gZb{SF~U=KN=T6y2G?z@ma-%{_&{|rD(#jk+B-RfciY2bGPdtwgQS$ zdkauJiI%jV?5?o6yEk-XQIBPyp*=Kq;-uA`$s2w zN(FznyN^)%fn#X8zx`N=M1T2cKE&Da5aBbM#`jq`QMMCHR7Qm4K?H>vdgQvANc|WE z?bw$-%7Zqp$C0yonc%!GE;ZG@zm-0!deA9H@pEx*{HCASg&$=Fnk3K`I8MV1TFK z4Md?1#pL5KFV%*YDqzftD9GeCbbc;%`}qo*mLPA!h(^wTkieBlPVDZ?1=N^0jqy|0 z;pNvTIx6PY>Saj<=M=(qqiqp<$(51MyjWLUgli)rhuM8zGXufzNBKUkMcI=WWrwP> z@j6kR$&vQMaDaTo%foIg*GukTJTfIb3=i+!xzRP8bqwVEJNJaI@U=(mD{D%xJs0Qci7iF1@>7Frb@g7g3GWFYD$Hlz%=$q zAI1~>>+F^sEuJ(EnlsXb#-PT6(w*B;q2t|+_v7ql1! z1kAB(*vzx@>Inq;6?x~tbhMob*|faaWy$tKTS^wq$}U!I?I^sIz)JmP7Qb+%(uE0^ z*1EUY=mLFd+cJyX_+HwnEQ@wHyIJE%6T}!rxcb|%C!XrTt!V67b`i|LB|0$tP8DA&RE?uD91um?~8f=&0@mnIzWOFBSu$JWBNf$g_4na3BK0JlEfAT(NKdU>%p z?`eSMzS4(klq8n%l-ohR2!@AW*Db2)rKS5Ln}dq4(&DcZ!}Z)`G}sVTA6Hpihu`Dv zBKYDgQl>X{d8+fyI93puPxn#%g?64soQijPN05p}9`Y?vWP z?1@B3gs4M-`v9Yajf@U4p|9xVswdJJ#dXA%@0-mj9?7ayDbF_;C|zNwQn6rvxfTA< z9B7x$yt^d4H|)LhDl`|i!Y`W@@9uI?Sefva-Mn!?W6;go0Gc*mL+r~ARkF6KR? zButu42WI&!jy~pnzCZs+ed;M$G}5n|M9b{D4QdwwSX+byzs<;!T^)K;of!hlwPX!Z zfbI83pNh7LVONZhjvDBpFh;pq$!CQRevl)euFYnq%Nyo|yU@s5FY+aA6K%|(=RRG< zCr2V8hIlDy9~czBhqk_Kg8Ov`oPDaTdefsTYG*(pWWb>EB3e84kk+EWV5_-F(MLtO zRWF$0iGJFULhOHMtK6@LR7ZAmcp=*WWOST;>JV0OIb`H(q7?C*HR0=RloD>j8QCvP z?XdR$W{i<%_N5M$I)R^v)Me7i6a7O0=h-xi1w*?G!dg&`fw2?{?)EgNg9>1 zDKy!-*5>bGBAT-JuxM*nbF$nKu=u4*9fg9{(9Z1O!Fo?w8P?0BPhovr)95v}+RCT! z0uKF4f{~m~*8`@TAPK^L#upwiO(`c;^1k9pPhVjNBLDM9PVXN%sHT})=M*h(sPRyG zOM%$|4lNSdtY4RYz8fe#7iH6>J$*N25R3vT2bJg66m{`89tSazwfI;U#eZ#Mb$}aC z{g~~qI)8mqL_YcQFh?5Wf5+Emw{HR``-B#jCkgy?0BFN9SM6-EIxl+{k^c~Vj+Z`- zo8!VN=NxCS=^!(Wu`+6&E!G4RuC)L=K*YbWS*Lf5)N?zx;*BHODQz5&9H)Iy#hk&0Z zi?Jm>_EL1c9T8+*a*rAk+)GW3@cyybN-Vu^gTZ^_T|oONdvlxOwdn~R!l@L@a)9Lj zpV-jB=vL9zumVjKRla0&_u0rB{n*Quzgyo{GF^dp9N6(?aX9R#l zc?zuBd;yFBqIvM^OXDuhj~esq`nDONg#9Y)Q_Xi*M5G}+NbJxL-@sO%vgczF3S(>) z=d$Mu>MaaKiY}Z01r_R1DOp|>v@CB$8=AzZaTmx}6s2SO$cnHqs=kub7}6Vv3yCZR zSfD)*F{)&suNZ_Oq15>%oz2c!TL;J97EJ!gtzkzpGw1=GsPQjDYo%i*&5bpn^ZK#oEx)(S&5(=5mpQRyZ zE=NqMeHSJfXaQCb3!ZG$fggxMnLC~0-1Wp_QLC9BO zvVa~ByBprnh!{XU3uvIG?ntSQJrx9nJ-BIqGb%T z@gvd+F>aS7KEWhP{(J%dC(MDp##$Nfcv|N3iM}`Wr|+UB2OiCse%5^I2-Td!p#Q$G zH{IDbC_q>Q$ve=8LT0kDZOCLd&nf20>B*fvC8GK<4#ka5)a$*cB`Tc^a!N<+<<7s%~^wi@e^L-{#oh^iwvHWc^THcH3 z0N8gHe+aoTj?wuz&56GOp~v!Z;d16Dwi3D0_d>b}3Wb5|gH zm!H=#fCX-E$8a~6iQV|Bp{x1zF^+6AWnm0i6YtsEwtC5n{c|zy1T8F_-nkGA{MNrq zS9`SWia^chcSH3Wt9WQcO!{OteFzSncvvUGrAXHgdV=%v%jU=g3t2utb=87hFxT2` zyf44rFt`3|o2PtcR8DTMP26VMRM)d|+eVtJ&pNQI+yXmKTpv^j=PP$;Hq#tJL)_eI zg&dmLZqK-x%8BAk;%`W-X+4XA&>Gd9JS4w6<;2;WqM$91;sv}2GPeut#o%Sunq#S^ zB=&I(g?igLN_P$0!Noea7&z~KdyDL?DR|LDNJ&-Aaa>?9wPvaWvzrxO3O< zs43=V?R;g>TrA&SnyD}nOz*z?o$B1Gkt3xF=mM1POo25@e{;-ud`zwHgOO(FzXlD} zM&4!gA1j%U$aj5x=Is}*8|{{0F09>V*U3s#ooS=4sIRUqGjRwmF$Nhsrk5zSIP2SU zi1R*H{hGO~UaK&P5VpU|+P5Gt3Cwl#mDqi5acU#s+Dqv+>wBZQVXMHIpql4F<<1naMt8pxULQsdPXm2f%s-i(m2pn ziuMpK2pDkQxcf25>(&kd`dpx|va>Av04+qh9IgsYT281s0z3eU$HOcFa9qotD>17G5)lLjA_1{x;`Z^_?bNGe__ESD$fTJp7l&Q-N9_|7sH<-lV5X5E`TNiNDw?hkiDq48xc!Y73d2K z4h#i|{9u9mj|JZPROIXC`vJv9^Pf_OQph3$=;uS_$a;Vd?t3(Z5WG7(LqhkgBm~M~ za1MFIxRWt#X1TRekz0OS-p7$ZSC44>)<|rb<{HRf0#MoJ+ny7&0|^#v7m^8Qt3hpi zPjFpr(ZV`6iEGk#6ZbYqO%ZnA7kYV;Cft{q@x&7eJ5vShEhnE}zj*9fkU4vqSDP8N zI`--sspmvO^mt=d97EIp5JC^GE%nR8EF4lTEccdL=KT(0-33b#K+T;>5uNj2xs?q` zti#p=U%-HRhg&2d_;=A!M#(R^g5BuQV|=D5ZT2$)ddsS%srn4|I`%A zX-c*|6mvMPXLAO;@MO&0ao>;A;`@_d7Ku3jKJ%>zHlMH2JLo26c|mPq2G<~H>LE=z zT_+PC>iF*-89CP>Gm`hb8lL)Ia6(9mml=YqBa~h5lEPnH7d50^k!gx@dN(KylZvj4 z>L*3m6MEKa!y0_qLMM-rKpBn210Z(nf+X7Zvhcmz&xFDA5eiPGhu}uz52b88;#%s# zcu$K9&G@XHL#|Iu+^`9xha%+VfP^eb^q93XKJJ6(|9i8y5&6d*7W08h^VWqQ_g41h zvMRGpn>TW>%KzU%Yvcwz4gyRnHO#_0iA}CaK z4U=SJ*+;PLZ4A|rPV>%#cos#jg)(M$kkKl4XkSF6FT5DeyI&5yunss20Y?O6cYU&1 z5u7KjM?5_nc^CZP2L zy@SjB;_K;OVWz?9wS(Q(LBdrd$=_)x|7@b1whtfwXKczLPNTjNXG#@Di11;Pv~=f> zIsO9d%CgR_Nq(T2zrq^=z*kqz=lERcD@1qEyl7GcQAZG7V?V+ZQanmy442B{6AFFphq~}p^^aPZkXoo#W82* zOW+@x=5Om!;eH;D+qO5U7Uy5x$MQMD_&!x@XAHCMl`TF6FTFu7+?5mL9dRaqPDdVqN4DOxfQ)V!g@n9-hrHs5j9t`vFWALN32Kf3g*4l<^NK zrCw%p9O-Jh0tN zpiiZ7_ge+_?z)%DL#K4>31f|nYxGO&87Y4nkW&PBhEN+MEqwjW^zNX&6T5e}?UPAO z#6?a9(Ltf{zfoo9E?T>eSNBTNDf(=UVZ1zEiqwm2eUF39wN=|TMj+Q+YF9pi!HqNh zz$>Pd2#gm$XV}lxuJpsjVWtl4pJQ5%##Uz~b9=(TfJ0%{pZ{!p;W6Zoj{_NIwThv| z{{o*O-q-`l3zMYep425T&P&wW;Cl56Lzw15c~skb>b0ReN7D(@6#c7lr8+%0BK`uw zO`G#m*J(Z0z_4$YrF1f?JMC`V=fjGGs{GdBDuS>ayeDo11!+*N?di!J@a6^R2aOig z!s5OiM|&n5-a`8B$pSty*e1y%65n`DgUPZ?5TVs_Z4GFf<$*n+hg12Io#5-LW1i*4 zzs;+I)}+pMy43kOjN1Q{*@OO09=Y+ONvr+ar|VI5J|fZdA?s(`hB_OR{G#&j@@2uyJKG;H)W_#ISq@IX7Ce&Y-0`cwaalWzamToV5OfL2GT?4Il z8b*eLLDR0Z0QVtR&7Nz2QSEdHZ@erQ>X7}S?i!a>lhJndzRcaR0^v}VGx8+Fv+whq zJz^j*u|3HxfxF&_db5M5qURo82$yh@`^4u6J|kIsj6W9Y=hc^n!w4oDrrTWo$TAf` zk%^Sq-K@Vmrx~zu?UaR&>h?rA+2Hpzl+_}^=<|I2 zr^ovk=^~^}imF5f#Zp(}HTqD8O0%sX-T1j!Sy_*F_ma*RuI10u#mVZ{A$|f#wZ&oF zQM?|={%}yflzOKN=Mzvl*|JLhjolwdP(?EaC!ndhQe2c*GShSKT%D3_;wUIzO^_he zlX$_A3|3)F3j?g&@~k^mbA^I<_~Qwf&FrfTZ54Wq#OY_3T#m^DPCz_b=SP6t4+?h2 z@rt5-z8HsVn?TFRViAB6fBHwc6YHZY2~pT4lM9n&jcr|&A0Ze-RlI#t{F6oKU8<3M zW0B3+{7%Z1DYSjC>(>1lvi3!0@Ss|nu?=paK0l>HS3tk|?euP2m=W#5AH%k4S|3;y zmGB-4#u_t%d-y@dgo@pv#9FjnjJ95Y;3}5eSfXR4?}LI5y*y3ni}g>L#u6--jfzT<#qepARmZlz92!FtdyTgUfzUs zr4r&_@rCO@21%mCQ=N2T5}9I8!lv z!!2S2CD(WxOmPuElBB~orq?%Hzr6d8(2nA8t9Y|1GG^#Tb(;(ZIbNhtY72VG2MHI^OpJQz< zt0f0juZ~j9)V4kt-hW4$v@?u>B$qeQ5;2yom)Gy5enH!;CJQdN$IXO0prEe?T;uzd z+covfsloG$KqQ!*ctO6dlq09{hU}!rv$wb0Qi*4YL0f=(I&0a-L1^}&J@=WF{L%Vr zeyC@gktf(j{W4)PgETzTLQ0aLn2R6rsnf%(J}{~LQYR=LdmwS{ws)PH>ib2K!QE49 zbBiHref;*2D>K_57mtL)Mv}cNnjzh)n=!9EFH@TR<_A8=%S}jA0q+U6h}J6&>_K+ zxOROSz??i)VYlyW1~V7t_ni!?4x`1$V;|}3)ao~pwB`ZiX>Fb{GeFtDRs>)+uAvCG2n7^!7pCx&)Gd}PH{@y^@cUb9vdu> zk@Z|wysKoRX2B184U6ASck*fl1yugyPN+N6oHbIvEQKK&8T+{H+mQ0ZKfB5+JVyrF zS&&Pw?_ExH@zFV5n?qX4oY z!{)zC1mY_%aZUzCG8WFadNm6wK-?KHjH`5VyEUtpmeFW<>i%t5@d8 zqwuSXP)(qHbMBcUJ?5pGlUdEB-mKEoTZScd+)fw^9Wd3ryXi1 zi|Su^d}uoCT7V(s`t`@=+%g%&g8S((3uItFNR2Z(GV}D^^52qG1;)B-4oY&^x2N{o z4A42~HXNXR_}v<}oU@5hI1pRr6{VqRU(7QjVX?A{^z=l(z(Y!yTA|rwl?R9@_P9RB z9=;0%f*yP9(|Ocpw)Kc(C!cb;O8-5HOywZAp>{-m%bh|v0n9S!?%A25ix!-;{oVRb zJvbH&XYcb3Y{wb(B7OeKh*1%`gEvA-9K4Bh+(harUvo7A5w-6cD*{n#Mku9~Zb!@p z|7Xrhid&p7!Lw2cKub+k0`%(ghvFKOdkd}K%`=_US)Q6r%MDT|)ebg=r8sxd|Gf3J zgg2?cj(ruaHq_0lvV&cw97x5r)J3XX@nL(q3*^7H2w$`+FueZ4?}u};HFvgjeXl~r zIv#|kZl;$cBF;G_r7R7^zGS5?2>*&(IkdT^C3mek4IVcu!BIPcydNybPHVz+{w8YO zD+4H3)&*@R-M;Nf z{&F9Ds>M0n#}0uvxSA0*EnxFC@M>xDz7|Tsi~!m*MvuQmAABrBZsnov-f3EHG&983 zriwrP%9nAdVqgx(J^3riGTmHqQVEj!ou4FwWM){#6tt_$Qs~3Qgo8|P>8OnHxXjgH zu?@YbP@61eqG95)ea~DiaY!{+q#%2G1Mp=17qy5RpKMJ5?-q#jUAC(&jlU=w`u*=G zJ#pRsnE*!$#)OqTa!es@H0)P#lt7I;@7`b?V)@t~njxN~f64P!~iF*dckM@P@ONnP;Gc7^4Jr7l}=W=_CgE6f($@JhX~RFrv`RcifEH8zijOE2QO=85x_6K^E~&QYSjvV*;5VF|h_qR*o=;>Uj^;dA zfPm#S&b_I2B%sG(x})TUL7O_hwr7k2xhj1;?=4*?lz);(>Wm($uS?JL3-CP&mUYJ@ z7#rP>tm=0L#O#Mxo(%&**koVz4AiHq>V=mptK<*D7P(#OPjgdc$z}c^dp+8e(?%!G zgTA;beeF|Y+)ZZ^2UZY;F!F*=GKKx;e0GuqK^Q5rVO>y(pIS}UYt?~lAPDJ z{bpyr5H7lY0^gdP=&**>uc5nzLr^wLb6C67M)myFx9Qw3L5MLZFKC?K#qrBIdAEa$ zL=emW9&LHA-G5MvTx;PCf>^Az9<3*jpBmL-?6@rJ_SaFC=lNBc362mYXxEh0^rLQ= zsY-G+iv&kdA$~w0r1B8DZ$bi5FobL~ytUHSiChs#AZ`*+TW+=bJ z403qv(t5_>5|$?v`3y}ksE_C!zp~FqW2>0Wy=7<}yHlRtWT}C?WxUiT$TqG;rB(Y4 z;A^Bf$?sVop5-f&XLViW$nsGKA3;o>Ed5!LZdt|ORu&>84w6dA;9wI|T_ANGZ-tgo zDBom0AFkL*ay*#099~@6H*wwJtC1EgZ3_lD0AX%piK>|`#G+8Q6U!{Un{;oftY*hk zIxpp%TF^=qcN!hxUIV+7BD6gCmS?;R=oq{Jpf1Od9ynWEjV*?cR$ZAPrFGrA;IPJRNRRgqq! z^;Ka4&4w;#-cQ`&^hp4(RhC8CgqE$i0=KoFX^zOktyH*e|IUwsI0Kw+PB?MpNV*lO zN1J@pgv1A0RG`DWq7jy9$zx|#L1ljJm&RHfI0T0dM;LA;*Xty@R?yxgts4ZKl1u?P zyY5hs!0;vvHhVAg>tl~45zsoKzJ8qNN_oaiLrWqz@N-fWsWfkU^MTB(h(@@qCSI4V zYc|YHS;%SalUcSv^0W7+4GvUYV+(&*M_~gfrk4Yphcv=qmM@B22c&18>_f z(M~Z%`=2K^WoA{32?0@yYwwf&7(A3Z=35G)yPQ@V7H@JVkE1Z|EqifOpT}ZhFg)d~ z*S-ND=k6YP^wwh;Zx^Q`EXiWT5U#0@au!h~#k z013s&8p5)4p1-5-NnHpAnrM*%vr76LxvlDj5qc{k#0Dh+$(q6YH3o+tKlJ#|A4}4K zYNzD5r+8{uVzDr)eXq?}S*%U<3wv!{A)Sxc0d&sdTr6E!R~CV-nBQ3g0(@X~589|c z@vm3uch83CR){js{q{`(5~tjejmr>(c{0uTf+{S&5AA%1!`zmDvee7;{RJK@!mxJ! zGPk{}^9J}`OBpA$dc$|sNXRs0!}`UESsTp{*c?)4u?X%5W^Myz-izr41)YB;bf{$j zsXX|b341*c6|^TUY&nq8P$_nkU&;CFvsQ&BN?M zS^!1(K+~1a`j#w>0us-=jiU}$lCd4G4Kt;}QuVHwQ{NedQO$4lAjWXAsU=BMwW+G} zd(3JxJ73-bTKlj<%;>$cc}6;rgKrs>FQtxRotDhHvpTJ zLRDbBC@BsamEaT)hW-?eJTea-)$^4UNl(#mmy#!}-CCXTtEwREx+i>1K_x5caHw%2 zmmbn>cldU_?NqbTSIm@l4Xqr1djKIGC-{FZ6 zMegmo&of5rwI$KlimUL1ZCv7zAj`AV!`1d<$r(W%%#s5L_D}kyV;iuI+meKC9PY9$ zLqPKIo9eM~(!)SRBDp}))klpuDqPX&@XU!`bXP{U+13|=O?kbrT=ZR~wITODR+p&pLe#gpkaqZx)OXu` zYXpPcw{=A5ON=CpZ?3;{G*&et1>2O9*zW0LBcIp&zwiP+4HV-sAvU6PL|AMpuT!tEJ-7imvZOLQz>__%w?7)&5 zL*dr-!HNVt{2JKB-)i}bn^(Tuy3Q{EJ_YP~Ixg4Uu+zg#1wBPD>!fAiiWS3;T_Z=JMURZCzS$t{E3lcGU4e^ znv=$#Br{;@q>df;^gMW8gu#FXlrEw7iS>auJh@gIzS;T1kql`APR(jl()iUkNV{6_ z+&qTroE)r~WcXhQ#hYNPUsVXgKNUney!?JFa;*aU$j1ZW zBz9c{-AY^g3~##d$*zmc={ffa|Gs|q#wUteiwn!IWPG8~-xlJ-4JPw}33S!#`y9>Y z{{Sg?Ico_x(&s1Qq#ac<6A$**e+Xe&8iZOTTI>L~J#zzvT@j4p@Bq| zL<^ zS=7}Lv~@I*i1nTOgyoeFOxuafUT-!`RPEJRdPL?PJ96^tOw*gx8%B^Z0cM@Taj6>V z9}++Wh^DqMpgoGhMHH|F-j;UT2uVnqc4`7MB14fZW4BQYUwX(T*Ur84ek1F=rU)!m z!*xzBw4tNne&MPzgcy!H5t4;^g{shbzHr8b^kp_CnbSg{oL?HnEJXL3boF=z4Zxj zKBw!vRunpKIma-KCY$>Tcm6VCez6D>#xrK2i0*ntBN_Fj1Rr! zdlep1&3yX4H>B(;&I zm-#|x{evLX#LR*xQTY%(5CpA^e$Ivq0LGOH$$BucgpE{k8t_1ScNEyEG+U*oNT_1B zK#r(FK6})4y|aA$)(v*bMrG8XNzcwC2rv>)#7&twolW%}_(Y+Omvzr%aG?y-MqR}* z>IcYgxt>6$7Yn*$%^hs?o@FvQGxeWvoC2SY!8Umb!8iMtG)I!&PR1tu;&vT;h(c$K zl@=qVr$14NA0AC{3@q2mbjAV8hCiu8Yga|_FcO|vFbb+?wHjhN4NxyLgfS-_5I@xp z#x9*Mc^iQqp1X9Qh&YEBL?kGbnn&}=8+jqMjwxhG5E9fprx$~}rq76X4D>-3@I)?D zsIWK5APTC-^=hHeJ$tk5{mEsyk6!Txv`v&eh6dA=JA1AFsU{lqy%fOdR#Oo|8ZJFxZ3CJ~WzSto_~XU;g-z(mGUJ zB82nxk6Q{oo_jP9Pv~sFxj_N|%-<}*n7Rl!K9t#G--an3LH<`vF=6o~0-_Wum~*QY z@O-%o2_JjRqAAKkEXuNdA@L(zepJ8W*U?{eHnW(>w${K=v}Sg-$X`)woUkGP>z|n! zv`+E<2sc_F!^^xPwFhsB_*>ZQgXEJB1Eq3=-^qvGxE2G^qjr=rGhPzi&f z&%Ey`SfkeW>@v{`FNL}A>6f$_dnN@-0`F6=Hz2u*kGQs95#gwz|%_ zuI`u9e?CCp88%5XHSqrvX6z=-Zw?bC?9=_zuT@R`}OqZ2vqk(b$OUQeO&-zJpGwjF1K8$?u z9@qp#kI_k8&P;sl&scV?BaVgw3z52sS}y85>@Z;0B17JZ6p%EXCF9sBK1R&itA-cP z=mQ5$QJ0Eo$D40F}aJEwV1R5MkC!LyXQYbM%g&h0aO;_eRhnS=lMTm4~8dfY%-^l6$0`mR2riw=4GZol5mn1K9St1mxcnT3yB?(f(L*%0u-C0+`$fhwol&IWLk;mNHjzvEF|TBL8+tZ> zI*(W86ZBOM8!4$b4NqI|!2c`AQ~6b-P?%BxfOh(@kc_Vgu4$3JHG18!J*PA;c*dul zGu;jba6UfMgg*Q2iayJ8YeL@qL^ba}N3sC8(~bI1t9ONQw5+S>Kl5+!5J#R2ai(o7 z`Wa`aQ&`J@tE${h280g<)&=7yxdn2C$15OX>ANX4CRci-2Dl0U7vodgM$=&DqANdD z9*Gj)CpSE`X5uBizS(k3?fC-(@`PxT0ONU>}B_M8Ohupu&Cg&mVEQffM3lT-x4wWha9uGEf16^h(5ru3{x#oA0Q0MJj4 zac9xqmV*V-NTEgtI4FS7RyN&^zN&k$Lm=;OrGeg54;nFGFatq9H8NxPeCUQw`$`)=eSB-n*|q0nL1t8 zEs=|##OaW2o+4H5Dx9RbmWO55Bj8D%SzsXXO%WlyIas326SZb%hy@Ui1h7s4ss`xz z3+)Iffnk#7{{D0w%wA|g#2lN1YXb+pPB*5=ICx+&!YdAG2!d>%tMp?n+keXtGhOqa zlJp8;bX|k)*VJjTW|ELvL*g?W*LdU<#y>JSXJ}pmRr%RwMiH~EDmRj;S?|xS3Mr2W zv`39$y&#GJ(aS~df@K;$IrG!}j;>J6;a@g*9c(FgKP`b;Lexe7f*QX)GOLP8F^CB= zy$>Z}EV&n!1IWCCuvk|HwrwBkoy^kphYhH`R1DzSukJy=!t(e>rrKcyK@1I!(x?H; zy!OX^BC;|q`n<~L&AvhRqE_;q5Pc9Wvhb-!!}9hApq~5yZ{6Gr>7O`QDk+0%S`y>x;G|Xpu(e$#{0%AEA{u(JF8Wn25FWZ-{+VYdb)w7l!%V_qU2X5&>F7}_~R4p2^$YSg1CgRYc+xKa^JVZ zPhHSAD)_%CASHG{qX*fUEj_TNK(>@Kt&YGD0k4bQHT-mq4r3Ty`MHqyvIe7V-mw zwpt#9olp^B=8V+wF8M_99nMTUz0_aUd!v4?rCLS&%W$Zt(#>;G@6@~H(Q5Y{agdeb$u4JAypqFY6sO5sl*CmBy0MdNSE1MDJ^FI$N$ir-65xGMkmy z_vfr0!oyP=;S#+@y%@DAN#b~exC1CMMzabZr|7;h+xw8Shl1yTpL^u7gnJe7FOIp{ zdQne58Id9g#eaR7xg!Y!kB%v->yyhU)@Tmraepp`=U5%4zr>4bkVftBei|=m8rm1Q z)F#Ubqt2ERO_~C0cg$0IOnYbAp zlRh9Aszu?@?XK(oez}u0hoNd@ojdh;TmH-jJ?L^TDB<&MH$Tk$J@I61uXOy}v%S$n zF8fRQDKa4&-@yDQR=}!HO$woo(E=%s=JQ+DS`)cF@10i>D~@LbIg>m9`iuHa?rOZx zX(?dqzCFei$LMzH%^Ap2zEId|!NTZyyHBO4sIHKq|Ir(dqw``Bpk5>P|1qvKlA+F`jpnpw}nr z6y-H*doq{29SuwFk0PZ&=6ZYe2^dWbV5Uzc(?%eNelyIqBd~ZR~#zsiK|E2&JF@I++jZL5WVGKw zUDGf6>5^5X$SZQy2t!KAc&PRl_CxW(%_<*0kWy3O8z-V~$cGba}l zonevZY(Ph&#C;`ucqey)idj%TmS3q|d{!VlXas zr-Cf*tGO2p)0xU)NLmgnhOa=r?N&B87t^hxGT$)8Jd!D}UsUs=<}H=w6Us_Kydr$^ z(^eF{x|tWWYG>z-8<%}iRBZ^8 zlimfQmHx-LT4i)B@MRl2`T)WX?tRTrox?up7mlc1fLNa*nkh72o9#~ah{4|6m83+V zh;&t-@%cZdz;-0t`U&j`!G*e*M)xFeTdY@#nKm4=Wsb^O-bEEqqJG_X0ioA$cnDc z*tNb4D*NlCfrSt&b!&1xcv9EFmjAVjji9B=^pV@o$!{x{ZeNUH^)D(n5f~VD@Y)%> zxsKPn7S+!J6-GM&zyB*CL~+)I(xY?!(}L{F_t|+ysRI(ni0o0C+r;gb)=_dY#epLK zRbzYJB$zLaz7cB#b#pr9$+M?tKnFO;a$^bAfCSLBQ)1b_1uA4c>ZQ^a2HD3 z0$VAY*joX~1$>vQcB1K~*f5{hzJzskksSbRs=UiIFj}VpNBUX{=RXiNtW^T=#XVQR z6~xsHtUy`;3tM!L0V6+$#(1q4^R(lCIo!c6b;KcYlX|Oy?NC}e(=XNYY&TD_fd``` z%s>IYpDoN3Eeoi}if0u1-_SD>*=N3$fBdG4onbDNCJdu>EqKKXI169GE^V+gN9C}l zS|ld%EA?z)dIhFg{rq$l2Spd=I>YiHU%YG}6$du(mwafvtBZW`jpnmt zZqyr)VzM3e7T+I?m6@P(XNBi$45)t?Zl>CWvK&$@xI-?bsHA$)_(Sk6DMA&@Fb+`H zvgsE^xb?*ZHq`3Kq^Em#foXsJ&c7fBI>axoeb9!vA0Rbxx&+oJ z$%m_^TEh#Yk_M>Qp3pe=kU!t%$%BIHy2ES~XmCBd>di-c&mAr_-n4wnMY zk*to%kVy4kT~)J)&Rp(?0qn-q)Ht|2qZ$J8`rKQ;3WHACKxQk|D;BL$)qZ1xyZknm z3r*mq$~{5dVEM6g`H4+n-U^>72c6OoUPx0a`cJ)@Gw&$td?xQ7hJLojm5J${&)L^E zXnTDAS-W$N84TXL=+vr4JBJQ(WrXNpnfz@}?*5H#3JZk(FWCcV28cnYS}A>XD3?R2 zils&EP{9OVCBt{0ZH}0L-6Bja<{98TQmUq$+QZ4a8tASHCUM|8kd&v&DkAqaj*?by7Ez_RU#oMmh;0) zIkuZlA{pN?vrWdOnvWiX0YFq%F%jzzT+o6Oy<>&leof8G>lD9wfF?&k9Z1Z)BrIhT zgNEPfb%P0bm?Z9gT9FTF< zud-vk)(3sO==L%0htCzBu;+aeeS0aVF|=3mcq4+J859XWBzjl5?yl`dlJ4GSF56^< zAue^8C7AUrCpgtAKudv_GyrB+cqMgDUjyExFfrPF(2^*6^iaeZe4xspJ9(ggfD zJ1G2}eLg`kH4vLZ6=*xf?i|@wULKOZzNDESZD!drQeVRJa613=Z#-=kDP8 z1X#6bE(#~WAuY(h6>x>b8M;=YSh4K!w2@Q^P9$_TRG1R;4cjMOh>pB0XiT5(pqIse z6Xh>3?_(2Pu|eTN9I%x!zKOJ-b|uTfAYBtA7!D@_I?Dy5D(|%#d3$Oj@xnuk+UdMh zRke#{s8*rrf3J>)=ca(r3giZ{lCPTL<~d3Zv#Di~9X_GZ-9FCeSP-#QS6AFE)QNv< zb6%FvgeG76Po7{syqfkvNfWk!Y=EHyL;!pDS9ij?3Tc@Jl1+!RYuWMje{HPrs~F;t zM$D|GX+(kTGS)x{bEfd|uMYcel^F9wdAZJuT4EjS-%Cp{-9$_HAGlTn+1;lzIJ7v9 z9=zj8s^oT-q|#snn1o7d35l$e1cs2it4Jg{xTg(avEg%1?$6b>OygG21~oN?d)0oJ54TCj@+TeArvYR_v9)L5F#5*|)(zLV?+@9Q&!ZRFSyYZjexBNUVzP!a!uCTiw%~VqO+Ul`>=a z1T&JN;LBR>hHHoj1n850&Xcm$9U;o=CX{PX@|^4D!x4#+$%Wur?cef8JE zJ(Uwh4?ia{%s)kWZ~ABs_G4dij;A)+7%6Bw(ks1i^_5*iN zH+NfIQ>^3qhjw~NbgbTi0b3zj(Hgp~TP}01GyWE`$mxW87lO`E8OrO|Xa$m<&h#51 zN`#M$3RdeZxLBSm$tK_Q;JCZ0zDpwwWx%)_JQ*E(UR~RH$qxy1N#{`(exVu#29WmL zQV0f}QsJx?z)aUy8=0H6i(A2**iUNqa1rlV3a2f+z&!dR&N*V;nY&T|`*9AphEcty!FqL&Mo=Gx)%1pQ6j5?nn07Bedaq;pQqu z+))AnkVE=*WO`m&BlJJH9gSZcDBTz7Q^D)J^dqfA_0!5h&kKy6%fYp0bg~$6M028! z4)<$AEY3uJdx$(1O`X7rg6tfGgClE(z9*wU3{FHvvlo#6OBYz-B-%HC z>iP89Sjx-QZx%bu{N_id`uMm8<}EkrIqPR_Qb%fZQS3PcAqxKWRAS%5AUmrmbyrOy zbIcgIz`C*`MAY&M!V4Et{P^WE@sa*#mg2KMi|Alom;`E-!EvpRmO^?OeUG?G+uY+Z zKKeQ7cJ^Fw1za~k7YaI;kd6i`SGvA%kG^Z>&7NOFxk6|n|+k8cfw_-5~v7@bK5WZlnv=_CP99Xj( zi<+|^;1&uY_(-_5&6m#0KgL{;pFSl))3raFvVPo^#c~Eiz01jFj>rAtOCn0@ccjoP z)r8Hrr*DvFW#WgwqSWzs%7H^tglrz6Y=d$76umd_NEgKMYh4{Z_xe;d;47;AHoRv1 z$)Gc(k0#EYGvb$I(u-VIkha(Qxq0psT8|Uy&CEymez1gmS6%qKn~M}0xiBcQ!`Li% zHfzwLI5Mrpzm2v+UJU>*)s!C~a2c`1^zSFFPY1H|UrNP1Bg9_+PXu>>B#zn2Y0=bB zR7*I$h3M?Jtfz#R9{1-jUX)llR>v({5U@*XM!1hToum+w5`vT8vo1zZI$NyGd}G}) z8u(>y)1P$p6kbhcp9JJaCQ1HPF#T&t^ryIk?GGf@$f#QXk12<$gtF9d6j+wH;$-LD zGNVH|f<}#Y(Ku3qz;XS`!BTPEPEUsF6qY_RyWv5n*U7no**a9SRB!%m(4OLpt!9q-WKFo7PZ zCfTK#wEpJQeCtg&R%q{iKpBrwoQ|?<#Ig@>k)o$O30JgeqVByuU)HTck#Hv^#=B&0 zSKU5o$MBvBid#msD>?;!88_@qRo4JuEMT44rCgx(gPrn}_X@(sv@7&CC>+@~t-qK1 zQtew?pWIJKHOV0a_D9VQ%EkWY2d3UT)m2rRGCG@eT2bu?R?7fGK)k<}G5maQ{^jM; zTjpp<8VCVl)REI8j`*Vnvylew3kTn?6t$eR)Pa^M@IHRG`+_biyJ=v2c_wS%jCkSj z0X%IDqw}U6l;`>gj}+io+|dG>Y8s!icYVK6i7{L zoA|=@*}Jms!kflF?kbK|`fTvHWR?R|-X`(1C;gOj-XbGNk7x;eWh~1Ps@TNY9j>dB zJn%r857nF>?v%Wnt^r58rGEbT zNd0H`zBhn9La`nP-0MY9CTm?w*aE9N48l0jO&%O(WH=lNgX zBx2?b3u<&{sR|pXkpSnv0gT;PilJYs^WG04Na)uO?Jd~D4}|5Al0&W{&f}c#K)Jw zro+MHv(YiMQ6uT@)|ojk7PpZ(GC{W)w*|mnC5HY-bCs7RZ)y{&sYeKHx}fS-G+5Ky z&aQ2jTs@ux@(OhTu?0FSU+ND3$Vm6~nMti7@k=;fhwfPy-UWh}jsj3oADe@Ttl zm#bR`6UKj}&=umSGeB7FPQRsZC?Hjrl~@wJ>nRbd+-gOXkouDB9QLV7W;6wId5V7S zzyp2?;F+QmZamXH>U!tVb^Z zz_KAk&C^sF&coqZp^GWEqn^;$+CN(l_pZy_CS&{)k7(foUBg#`QnI;|qI#=?HU!6Q zU}eC=X5+LD^QH_EEs}`@Oz7(e@VTtuTR@8EQvr?>mTWMQ`d1c;k;{0OR^6TN`Zu6H zx*pAV%vAy)^!>fN?;8Tm`1W&fjmR8DcMAC-7lbRwHJLj;4~k2ZcX_Z@?dC#wc7zH7 zpj4W0)QUtgvOvGTK&)DTs3s z9(W}KnedO|L-}rIp2*K093VUW7-Y%dg5)*X?4y)k{p43w$Z>~dq%GLLSHWI3zvd%g z1*yx05M=ad>y;d_*y!8LLFsLjS10Q#vYnza7-!LjvO0V7YQIwI%VRzSRM&+)F90e* zd8Uz~cq#ku6=jxgF}n_HvjH?TG+>czhn_+n`VTJ|OtH`CRgn9CXHJpgQf`*(5HUD- zLI%xgApVG=9h{iD-2R7w_!a&yw&8sl*WviD$L*YzVn854}N{?4VX76p=z(!H6+U zzoD9~D!+=cFo)n@R)^Ss|n%iNMk@v=ZAnIkJ; z1SmJgXy~u;SuVr^PxFTm z04+Vo5`d*e;pjDcsZU*e9NXGxm&itD4-Cq*Cw0cNqZd$#?x|0dsW|~4B89j{o-780 z9ggUQO{OfsrOS7NbJL)_Pd(rM;q~(=rs9cKj8U%6Qbcn*=ljR){|$$DQ_JFipW|yE zwr*6&^O~1-OqMr8mxOO){|ry4aiz@34+x6qw8C+MV?Kavku11AiAh*mq_175d$m|1pZ=iq3%f)Gyh{Xid`kAJ$ZDG+0j%^v^sGQPleS4Hszbv;99)r%}Bf z7-)r^pfbpez(7!&2&27KIVFEnHp+LR2Rh^b!0TKc(t+&|_`H8(8NOjdlIKl}ppxp3 z#jgt&VcfBINxDL}yBoWcAx%hr(Z#j<^wo;?0P}*YvQ`f~#v)()K|-Uw`nO&Zcci#r zy-s2z=%x&Ks__RZjWsBF(c8a044wt=^d1LT^0AH$`%W%Z%{MnOFVGMKL71$Z4{_ni#Z0-tt{$7GsaErdB~Kod{g?6fEF zWdAb^A$)HVPfIw$?&j0fX(qg6Td)pRBH1~&PK{@e+}utcTsiA#v3y}My0y0E6j)hY zuJK(B*o}iP=(>2c2#f(%6rZ*6a}7|nadoZg(M}{Q3|VTGR|rHKrdf~lb}!)*7!v26 zcfO1RjUOprGKLdY0a^zKL-H7^fdSOUVFdv664Zi@yE}c7OrIxc$yi=LI=-!XL=S5o zSFUH!`wLE|e^4-97wc0H4Q` zECK5=s~tJX@Bg83Fef(kkwh}4R&rG^r+Q#ygcmJaKF}Gx z5uepj|JY$C1(-{U71I1EKi=^YHCr%Be0p6;k&BQry&xjEBu>Txctlm%9riqo&f+?e zGaon%Y}MfxX^1=*+u677bVNS@H96)MC~nI5lVaf?@OT zD|ZtTPK1BbfJx1v#@j@Uv2467U^7SWhqxmSN3qDMh9Qj;;P$zHuSx);PCiV0k8$m?Oa8I=Q2b%Ga`zGtR{rY2F9v6WOOrFt2?JWCrhH>|n{8b5Uq zDk%^oi?k~Gyd>YoSo{*lHh8gr3jaq{$;JEI_z-TNS+scx!4i6>8a1*TopFZ0O>aZ#3+AxTO){#Z5E45}|BmHS9gR%e!gX zabCUiWUDwiN3}6rM?PG(-kTdatO8TxD_yANV{sC;uFdlV+vvkYyj0#QY-g(q5oHxF zD!mi;w=klxB6eBDqXU%rqKwqsyVP-tWY5gH*Wsv6td#;U3E^p;X7qj?N^XRzu6`3} z&#$DYPNUwo^g56GO-jk)XHgdT?B|?>JW7&Ua~v&03}zNGOrn9io_#>A>LF*7mO*ZdviTy%2VvLV zkD5mIQM2u+B=0z+fToZ}5=q7X1~8gJsEe6)ld-WM1SZoF#^^aKW^ppBRGWdYQnYin z6X*OUTEdDcwu-)?BfY_;0%cX?zcE>JWrQB+t&`VZ?2;Hj)tMxQL@UmQ*vP zBdhMsp0W&0KDcC{ifRQf@Kzp2c@HKMaI{BvY;y{1?Iz;@Th-6(u7f%e>~D&ZVs;I= zEP)=;I=Bxqxo*|?WolBE0}t$Zi_h}8_wwD}!6{o0Xq4a^Q4Ba)H!~6EN>uPImEwVI z_JKxMJ;w|jox_Kvt3JgGwq<^Zx~UB8=wI1(g05-x5#6lW)SXICOl-k|PP~(AUNbIH z`?-%R!)2~fYeHQRjgO!QRM8jxQ&EgM+}B-F4r)c-Siy_@Sw>xsLyGhXJfM#DrK~_k1U?~9GF7jsjPX-M1FCVu! zC|aoG?y7gMf|W59T#vE~bdu>xw`x2=y7S_q{wGTKf5iHWQK8V@4mi*89Ld0R*?DyX}b$l5NuL z3FE4$&;&tih6lJ>&D84Mta)Sg?wPO7-9_wAzUNSB4)|rsfZCpgk4U~hZZUcv6ceCE zS?Cj%gMbsVba0UUu|y#j*lu2f%Ry$(BI~CxDtFgi|A-O!amVSpbv{~0b^GGw6y7QQ zx?sGdt4s2VRI-EbquL6G$-~0XJA9`L%p=O)Nu!`hGd?lCecI!hx7_nZ^TFkA&ed%5 z#_^$=NG5-I+Bfw?u>q$yg8O_UP-Fa63-Jw%dT9%AZn8#*tl{HP)HRs(3-ySkeOkxKRm|+qS6RS1l}je9#SO*?im_X6;SGh z&6NG5qz9&O>^DjF;Zl}wl^U-T%zn$18!mCR+ZRu+e zflqK;K*H`4o&X$hD?n?XTW4uFidNPk{5`tWdB4uk)7bYon@IviqcIwY+DK$m8+R-^ zO?)uQxRrfafza-XTZ*(bH8fvR~!b1)|>f6hx=tupnD(L#MvB%H4SbuRuPXUVPxmB>E!tA`SPWrqkq z=D5zI?01#8rKII6#qE#pHfVi`cPng;hz{LXW+KA}l5>sR^{@C$XD!Yoo0E11j_6y_ z^d;UOEBw(=LL#H+XYV<;P&U_H>akl+Win!>0lIZLo)(;DF^E~`>o9jqZ4&1^=aF_> zgTh2t7Cd<^Oh~w(eXZrn7DDfga4_En@sr@Gw#*+{`%e9&!O;@@^pIYnl3!a&dUOvZ z1tK8e;>BHh{!sqtc_>ckVeO4OcpfjhF#lX+eD~tuUNIk8$Ptu8Rx+^?eHrS$SnH#r za`#k|H!vSux|v~vqmT1Fi-rzpiJXBZ#)$Yvxnng@!c`S0fdJAx->fh=u*f+yY>=pC zN>#TH-i~a5IwjV`gA46!*GLR7oJuD~uhu0}H$kQZpGp)!C2Q599boa(qB_9UQz0nI zimkc@f+U-fH*Mf=zE2YVSvhwpSwN8UVy?Q~QC9>OkQ4HI%CI-efi;l&_@%P3O#BJ}D!xwzp!g6n|*>Yej4p&oDF&@1E6 zaLvzToCV!*3;?p$eh#)B)|I3c?Ch=sfSS-EtjZt^)AXO)-5o*P9za*s397PEj<83+ z^=MLNwhyx_896Rt=MT-mam*Y&(O(BCJ*wD1%Q)Ga`#7Di6W{QKRA7m1P=m~kklS}8 z9y$2-xSKZf-jWmpK~8EoY?a2<*isBBW{xIXQqP5pRK@^YLKcv>EuO|c%3biwcT%2@ zTA7q$DHzESmD|ZM%_HLx5sw#XTibiX?@i~cA(6DTR2?maa@Sv?87Jc6$)U=z;^V4L zRptYOc?a{`kvoFLrtr?Ha_{9k;!p0R9y2*?-3#(MXCf(#tN7Bk8y^JX1Qxx0v{Ve{ z7enm%jpMHbN)MGEHIbF>O`~IJ2{;C!SXTqK^qqr~ssJ9IM2pll`+Z!=8L3p|=wjZ* z=){i3plFW8S|f6@ z{w@9vW8_B_A+#8VVkXZ>FoLCy*8YGq=tQ|ta$m{q%Ywb(YROEU$G{x>LRdH6H7Kjf zm)6ALtUQKisFY1i&f2uW(Vd#m@{L}~J7iK%pc3~9K3z3)6{ZB38M0>RzHz6!yM#ym z({M93-n0OW`uoeL(5s^+%vnNn=z&vi9d2@>^+M|g!7H0_=PA?>lIW;x?T0X2a(vyK z$hGq}qj$sS(x^@7G5%;wsvg8Npmzz*kGA2L_8ZgOC(1L&4G)a-hD1Et*w;Sz$nc<@ zrDP4t7DDhNK}-`s32G^^98Iq;McSSelzBadT)@Va27maD83fD?uS3z5d#)4GAKH(H zQGbw|Er_X@F&0IFmq~E*NS=1S`sA55sGJ6XkJ0%8lcg%Gozz&ppI_Ua)xrnZFVX&ZeE1IEGuX^7iC8g< zGc9_8Y<-g6c-2X{;FV>pero|8SgS|0si3F$7U0+G+~^v@r=`pC=SG@mnB8sm8F7nYyTx_r z4Y`|KGLaQ$;fPoH_emu|jY|S2q2rDbxVy77*|>aIV_}{I&ixP<(uhZ78NME7F4gb= ztj2WE1+6iR+&$gs=OE)8VLl|3DFRk8spU`uf_yLDopp1_B0{)-X#r6>|>SNFI7R)Y5YuwTt}#Ii2V2eiQ)X zijNph@4u%c^<|cu)+7#Utdr*iWbalQmMqIh&g(ydPn2#)VQn)UgFl_9Y%|XYp=xW) z%}c~8EyaySnubb?w2-)Suso?8vgBJ|K8HtyCw(2aOZaP1&pHscj?hq3Tr`)YI{4T7 z1z7`=Ky3y|j|}-o7MLVA4Ro+U_$oQU^|FZND(Lrx&_-l-3}?ne*^n+nM`q&48O6KZ zUjW44kIWVS9;(B#KRG?W%=w2WEOYo8Vm4ZT+m3Z>E=8Nk3em@;#(N{f3d!7vC&c#p z>lVGluy>mhrCv)Go)U-bI`@X|gHSV6aN9#e&neiVlQMFQrSb9Bf||4GYNgvyEZQ^;i2;c6Mzo7HI^b5al~qY(T!oe4WCu*EK(u%@L;Kp3)|zMd#c9#Fc0mghLOP6>MxgpBkz{njQ) zf)l#ncKBz)=h^gJQFLEI>#D%D0~lFDu-Q;0Lf?_~nH?c8TG|VHJ^*j*jDfmb z&>;P_Bk)VxglppX*fM>kl7+E28fUJpK`DGYBs1O=4WD#Tsu=(m8Y*-I^md%~YK36UM^o z(IY*y#wr?%yx-kzrOf_(dc=EeJhxWUM*IXAgJ16yzvh1+J(xLt)?dAm0JY3ADo>#g zUn-aWKh~+~%Bk7K%|O619lpCMdX#KPMfB`0?zCWZ8>m%*F}9y#F`71@(+CC{i*wP^ zYA^5IO}ZAloi9-BcHJB;OWdqZ?G*pls@e!{0jmwF{;sF*s$_c8s~O?ic2a#t8_EP! zAC-1g?K@AY`8qGG#q3fog$a5_VHfF|n>RX=;Zfmy(3==PxkfW=>NMiq<2{qW+VZ?9 zaLbw<)n+cd-`}%yK2o?d{Gc|*uAgGisnyD)TR!MMoa4T8MKdAM=xE^s^Hjjk@G{OV zDsMN&PX$6Z7L#wM^zeh%Z?!JGe^|wgw(HKXvQ@@4%!sMkN69)XOoySIq|!9CS_pmo zfF|0L5e3Cu4}=+gXQn{N9cE^r^LF;a7;HJM!IUM4i&)iNx7DSv*b;@U`5Fxw&07s2 zWaQ#V0obxw)GWve8NJrqml!YcGw^@sOg*NZJpWYNyU zQ$jc%OtgjSa!F1OfcgB;CD0iOuJetv?hz=|)Vi>I=?cNJ@lQAOxU@r^;NzS=(3QAL z@VSN;Vn#!Z9n1I9QMKuq=MoVs`+SkF^C~%e%rW|shx!k0?6&Ti>#+yIi_kYou_`<3 z4C>T)n!lh==HpFM;pS*=VYd>0L6=a|Fy8M`ARx;m#y%4M#=5IkL!Rm60tOB_{7iS+q1csOE4F6)uuQ8QePVh#q zQ}DW^pNE<|&39zW&TNuig7VEB_iASIFUW&t#|Z}7s5*(&xCgusIIV!u7_;HABa`8V zk|yL1MG84S&_y1$z@gbEk0mi1`*0SuN9k~)bt%rEHdSmq~~GnJPAqk0s3;1tXEj(m8p&2WcHcj7q1C8*Dt z@tiD*Qcvmszaz|V-5-$v}0y=GlxcR>+QE0?|7^{Q9$Ibm-x^^ z&d>(IAy97~h+&LG4y!Y+0~>9^T-Ee7o}YH3gg{iYMUT!CUwxH{MfXgI_6y!oEZ%0t z^I--n0FCYX=!hLTNn|(#hri%TmqnU%5azpX(NO``4_4X4cW;6 zz8PH@h5|6o*zx(&qdvIqkEJkCvFDk}^!mdtsdO)(M}fI#qSDW3G^l9Gs+nJ^%>?O5 zZdh(W?17`gOy#2q17Dx*LXmVZ-P9RT>UayU=^0%g#h$_5vNDCZ(~ft<6Mp{-j9Njr{e>5<%NznElohKG$l5Y=aGl{ zcgM@iA07)r8P8t7`Sc5n0KajmYhMw6@o1{p(p~VZ8~iyr@HE2L9K_(BLHz^1W`3Wa z>#fDL=sW;j)W3K@7YLU&Pu1I8H2#TFv#nCQH^WnpgR{@;YoL2w#i$$1IG=cr%{#_% zG4#+R6e4d}KTbr`RXGD}K*_P|1k(v1Ii z9w!PD)`JA@V^<)hLM%Ms3;MNHVRtV919dkHNlTCTn(MS}zwObB7>ERy zB&THV9he`tPm^VdnuG8V-k$3I9eed_xYCU#c9;@(Zt&YE?4S*BOrxV ztAjKTqDkzMIAsk7{4ZAr?6X4m#JsoiK0ez3*#iy~C90H8mX)StV-O9n{K78*-Z^xD z0I<1LDLZAW1t#IY;oC4Dp?SqB3{9Fu_ z*sw`2aSeU4lfMMeA=b+Z=LfjNF+w@1oCd6eVRTt?Ff0K5R>-l=+4UKCPN)B|c<(E;HMK4FY%v}h@}g}q4+z$80;@=! zBDaR0c*rhSJ0j1m;e(?Aa3(l^Tz+Yv;Qx0m=;S#OVo1qBd`=4Q zTv3_di}@A<=qIkYiGrqGpJdcIX2rWiN{uhds*KkE>pf>)Qp7U3i-2Fg3ti;ay!j7(#jt|kG$Y=GeI=5pVh)k^TkP@!O~R)6PAm7H$kMVJ^)gQ1#P zNQ(Y{0{_P5E$d^uK)<|!M*#$7ChaTCCjGVMVV+$Y-s0VkjuK|3QW$^cYqC7a*Ie_C zTSP`USP7Lf>)VfpuqT%j91D@kh;i#P(0!9sbQnulZL5*j(csW<&R5@&eXr^+xVb02 z4f9qHlo>+iCGhB_otSmx@dMpb8dC6}na4*q{@X_di5Tmr2#*%#OHhZbVIpi^#hn~O zey1o7(A)wK(zd!NUk)DTWS(gxCL;HiMQx@ zK137Z;}Sogw50;@yVFOiBvl2q1;AJMYe`dTx?Nv>zLmy1qBX4jTnr`^w3b;kvXl(b z82lp;cXG^Y*CahtyHl(_(6pC$_1G1^6|14h1J4N!OBYn{5F(&uOg86P zX$r8sM9z)rVTDV7x&amIa%_@gm?5#J9xaQ64Pr)P2?egmWYaXwEWntr5XIQ1*8a(8 z$g0iHug~PJ@X4u&oR)gebLmT^V&@`@pC2R1R=C$iKlU3>PF<13#nHvdP1^pMRH9-y8uoEMK=w*#8 zZQK#^ho1{pUl#1^BgMo|kAUyJ3jrAu<~!X1zhl@NI7>>Mbh4UdR6B2CN`?oBq2Uf-xsFAmF90+xBMQ7Ciy3>VzULBCNfU#v|nWwY~ z?3ACQ_XS7@e`av&?Yv_1eAuyKj-7ILbKg&MCkOl2XKK_uxDi0s)$}YLo)4sRlel-)n*Ps(pF&)v zX>PDYP(8+X)a7GE{EZ(Wz*_{lJ4DKTGe==OGx!Rzq2pp7i6*uKU)`t-$j_v1RZ(IP zx#1sgeh76D1?geV@lUCu|3uYI`s!c#Pc5VE3b{%6nGpWA%t{RLjr^T-RhVo7+mZ92 z)Re=%P|FE+jpvXfY)bE{e7^G@{)nXb0w;4-DI<(Vg;X?CPZ$!Tvkld5z@SA`0U0Mp zTTg?iyRPs#pv?%4^^hXGc?-nV`akKw9;V-0wKW05>d~q@9=vVXXKb=rnZ0Eeg<8eW zD>X2`+=%B&S~8*E$hwsFc@LpstqHs?1-*xJuxx>s$x5O#Xs4NnL5~nG^ZXc{%-1DI87dS0#YaYsrl*hUFE-xmOYsv8^ z((>72b&5d&9n28I@j03orNp36Qq-%#D;p~t z_5={UP8!TQC_{w1rI7r&9)zxO$`c*wJSKf`!g>u9UPY-0FIo1UF${F|7xxr;B?H|-VFfdFQ zNBo6WPOg+2gbTJOl3U6+*ARZ2>gw;S$6@)DQ2!G4U$7x2(T|`*{@Coxvk_DOOWlvL zp_^ma;C^?{Yh9Z>epCUhsHM48cPP{qT9G+li&q3(Z~Fy%q%OSS-r@+nuNWaJz_v!J z@;V)uVBM&W@r3)Z@Dkz>s_14|9+jiFB&*VQJyz@zl zi=pn`CD&LfFz113u&Wy<`P0ga@!&`KAA?{}4>=*W zOmNfN4a-6k3dl25Hg>(R=XK5g1ZMBI3}p2R$#ut-_&yZP4dT3yP)`Mkm1Qf~Ao>L~ z*${1fGC>%tWxrJXp63LM}^ z`gBkfwJwe+dxW$t)9A*Zf?2F!DLvOgZT@Fqqn3qqS=<8yOK*Oalz3;(S@^l>lTB^h zVfY0GUx!v^oqg5R?)iq;&c8*4Mvr87>i6!*pSwGgcg9ol*CVK2YR7jR_Fbv>?nr%< z#&mn-=_w9WDNKnvTUlhzYi*|xJAsRg7f!ZE0o*G#;i~DBi2tbkEv_t`)oE^gN2A2CnxcHUP#jrvC+jhuSC!xhDCt(xr!e>R!9ZFe zYhGzp!q(&u!4h?vsEgp8P|r}K6zmZHtx}wke&|Kd2P7Ho(!6v@kC7d83Kfz8)7g!k zU>9g*wx{=ME1$Cg$gwwCWSe&<#DFtgBw^B=g;trrbO36G4GdYI{#|DUJnkEUEPLbN z{6NK}1X^A8MTt>h^}o9ROa@iA*)gmG##@DHqm~;9S7(S&dewoER0gqLxw#$qyF={i z_F~JgEs0=FiOg~?cOQj&WR3MaGN5ib{Xdk{kE?k{sWs1YE;$oRrS{WJ(p0X8>>(Bx zBL${NL&En}bp?MGlz1PpXB))dyd+ZOez31JMUrGh_ah4Q;Sk4pY%1oXr80lec$O_K zWbB5wMYeu*pQGDp*QL4|{8#ISA<1VG+i*n~6o7pd^?qIJ{I0{tSz=n|8A#&{b$VX2 zdl2^?Npgk%?X4NgV0ok|*a-*ran9+-{Q13?o^C@%r5n!phvalQs*H;dSrW8=2cw z+sXVSM@Xr8rI;WebjXm(cQ(dA%DSY!Je@^?j?ceA1k}r`F&acwp|yjwQE4~T8WJwV z6e^$&8BeZK=lG+X!4Os36C^WKZ~ke&a~k_6zB4T|<%zMQHCSZxVFXVurpu=Jvl0Jg z_)3GQ*F7q*@osWL^HXM&WUW5~tTM4t*emL)@x&7G8)u%=;GXIHldWaTQ=n}y;54$l zYdxg!&{lGXe#f@sd_uQ&Rld`i5UJ7;)?LWdQlOqaXV(J#K}PotI*VmBl=cLY-$l5w zP;uZryKbw(CoW8DiY0{}V(k2(vut?j8CTB_FZ84J{ydYY#flS8J*(A`{k}pp8829i zcDhC9m8$(PF&NYG?OE6!#=$-JYT8Xgdr)8302zrr0ja9+A_w>}to#PzjXa#Dw(jUR z;SrC^xAtPX<%KL565ps)CgE{ah++8*Zo}sGztlI}w72IIrh}H&upB%Y$Q+-qMy;aF&8JMH`bgO*dTc^#9z08wjhN%-Ako^%4Nu8c|KC zT1Wi@xM_)wE*Czn!T$o zsQGlH6Qa@xu;qtCU^}5dl&|yAbOo=*)N1^!e5+=JGAN5)ics@rKhDVjoldA=r&?Q- z%yE7FGCj9e(`d^z{6UV5T+Q*Ce423B+N7}VpWOd|O(*t(!x$f}aC4nLo#9h~g&hRz zXlPO!S#)>Iu7>3#%0nn&ew+>$uy<%-h0IlqKnXU27qyAtF*sGW7`9wJY)hgqF?0k6HtH^F?&!vZMh@;NR!E=2!skPn`K}x$X$vrQVisejx6eXB9n@ z#7ZFp{TmHe12&%SP`E)e12WA7snjs)SVTN@FQoYX(<>Gs>8~B3PHoL&20cGFKb)Il zbdS97lp0aF?z|E(zpPIbUZ6N%ux9JJz04w#EhNdP=N2r=co7MH*rh?pLK7(L?TfFt ze)4mI(TAZsBbMDjGe<77)Sf!Y6OZq0CtdjvWX?jx`8|BDh%2;&hof zg-&Xj3|@dVN;HfIh0(S`2>fz`ikZ5#h==-fwz|8<`sAE#%Dq|Q&5IrP+>>h|(2P2N z6pdYJ!p3YO!arWSQO?$5Sbqax)lzM2 zL=Hh_lzR}S7WU+&o$h1LWvYV4^H9{wljQp9WLXwD375gq=Wx7+{0y*rw1P06Le=OZ zoB%I#-wZ`n;+&qCqSEyIwlXa7xjP|u1G1E`&fl%`7iR^A5`bVJpS~}YT4d;5Q+*s~ zQgBBw`a9>Ol>%7U@>!qQ2PxALzG8z5!umk{{6RkTNR+A^Ys+zoL(KBw3_8}`NA?ks ziZ}4Km;#T7`d_%~^K3IttRuMXb@A=zoHkOu^1$_&%(@Hajp(Srjwy(-;o@_y>Z-+| zw8U~CV{J$&)xN%a;*ly$(!D=A=>;FL62ItW%xM+hkbfse9P+S(%#5|OowBe(a z%^LuWDy>lDZ8nf}tFVljn1EmVx#qloA_oWF9v3V8W@87vp#5f$Dcm!%!NW<|B+phO zHXzg0jRezeaKi*+T9;7Ut)on7sQ9O9NXlK*5k86%qkOxpng3Tv+(HGrQ>%Xnl4D8I zGm_`sU9$J83^{|yqtYZbI1fS(uJ)+6I&N}56A8BOtfT1?5&EBl{AiuV7_|vF>Rm(J zq*5Ioj~>2A*h0dY94Nh^ci?D(;@Kw?HwP5XEt2ifvt z_*-lwii(~bDD?QIZ3VG`x14&4Z-QtWOcj`n$tIRpX1b4PKH$daFBia*jESX}&PccH z(nJw(IyIj511?FHM5CdItGNdfN*;E$CZPR}+_7+eaKOM?qo=!);&Vkjue)o6;A+Iv zyk){Ck=mw3v6#KA!&-Vri?nW3=*6ZVB0q%RMyZvbWS7w7TAlbQyD$OKpe3Ybs?6hl zwg2oed1o9n3&dEEbB~%11r}HppcNSfq2n-Ysnw%=IH4ZPzhCfS!GjoFsPsZP`ZhTiQ<@u zMH)!0F$l9S^t1fUbr3OsN5)G_meZU4wAcXWPy5LSU%txv64^Pj--BugEB*Ln-04}g zRYw?cxDfd0QKy5g_EAjeKQYua1$391yAJ=8AAFY(*jv32iOwt-WZFVaez!VSEjimQ|u%wF}ssb!K%DOaRzQ=v`3tDqr8JbWIP&m&f$Qa6GO2S6^k>rhf zX0%I+nItQvOobtFOdXhB*r&ekodz(9G-~@7!@8Y7Jp@lwd~_M&=G#>%w+mp$fd#*E zN??%x?jI(Ug&Dj?>q`7I;H{38BtkDtL;=J4PrLQVJ5g};}5RU4%_6@Sp-X!F%)|!!DZMws0VzBh?cY!|x4R7htaR%tk%C1GoMKe!WbTDRE@ujBjW$vCIae(V)$;o5FOv~N;Z$7f zK4f=U@Jv=6@gi}mk9Ly?4?GnKSPtu^*Bzx9cp+&+AqL0xe8O7;S`jWyGZq3;|JY#N zev(0_I0HJ9-EU$T;=b3^wm_Qo;BT7v7l0X4+yHmj!;A7wB6QCYly^#>d82a=-^t?W z2xr#y6E-yQyoZn${sB|;5E;-OkXz(7gkpIj1^Y5w|M!DZt=Ika9o!>4Pc9KEh?~2Sm>b~a$0|0_Lw{|+e&wrDiF*#WazUt)ahotPlucb68JBm5>#Bx z!&U*{x|&)^=+&vA6*A_e;(fc*vq{hz>sJgSk!%T&$y&eCJ-3T>rt?EGh=735mfsC- zbaww^1bZAsDwVGZ$AL0{Y86M~SZf+Vs-n|uXRIyob)X1|UUX#NRYk)SjvK8sIr)cl z;rT^ut(LUA%Hy;9&h{PZ*aks-2*uhw?$(g-5+4^L4HUt_=bte(78|hSy+{nF#9-T3 zzC9a~M4DySok8AS_zJ`$hhF*l ze_0va3W*YjNvZ@KpoKzhvPe6W^EC@x?{`dK*&z{NYEFZq3n|5=htn2cv9Y&CZ8ksw zhu8U&wwyu|29n@fX)_&Qguh_N@T*c8+^)T5HiF)*l+!!I#QX($P3#}&mA(xay9kY? zwAm5Qj_}cIW7YsiK)Ao~%vY-5F1LR-sWW$WSqhEd|N8&dH9s$YoXyYcpoqsPuSL~l zFx7kfLf{Z9^a_eXf8e23BH^SAuE`-nLHin=&eR7DfOdoF!d-=4+_YMhu!G9)D52~a zs70c%ITjRMYV@#DAU%Ei8{9c`lc4-$P}eC~Nb&;duH!sPBVu8AJrBaZAnzb@M8qa( zuqrJaNDtOH)A8`nIha==gHnycxN#yqp?#CtQtiEr@W$$0IMFaA1)3s%?Ykd2d^|KbnK3zuR~j4pWR3e8i9Uobmmp%sn(sy?GSE5 ze{Md7Be>qp#HiAT#o%oX%t8L-R9ao$hy?)iyx6A?HQnY;A_~9FIu^Z1VyKK`lyk8! z=&xb=zm2f__Jud$0)jsnOYv*KwQ6>g4N}3c$8{-wnvxyo@|tVEgIcFKK|<9H*M-2X z^2joVS`OBY>i+~PL6FVjDkBWYE`*~_bL9Xau#-_=0csLyzbQ*YQzmG~=;$Sc(9w8Hby;B$DVcu_t92=->!Gzg!;ATn1UAcQ*-iJZdw9INLHY^ zGcVqIL6;Xs(oR$)%lzAPDKu{bv@jJeM73d~cX}!iJz47%9I^u!bhKm6J4&lf5q`Zd zM^ve_Rju0AfD!|}{8+)o^64ckj@7}>sp(bAqBSc|Rk$t}Wu++G6_g$0E_Y&N5;(m) zo3#$PKN^XO*Sjl6YHgTLVhyk_P8X8QhSK z9$K|>P8?dtyny=Xl7YkeGb8v>Ehtc=p#f&&w(Yd0*;oD{Nh-d&*%GphiC^JU?F&J0 z3&9!q-aW=A)NTgzT)dVV$em^3yb4^Kn+9Eu;U*o`HSfQFu=!0?&GgCTCZrX>PASi>>htI@bG8H5<%`)yXRXT}%{%); ze#N{n6h{rwhdQk&(8%4sjeA|>FUR5#ud!(EWT`c2wi0Ta7nXy8SSx2)Xr6q@lh`|VhBYU~~O(wAaUA&iPb zsZ)XpF`9}Kjg+fQFQf#u5xTmvD$pN&cB+*}dNqzH9MXvUHDNuo7w}L}k2muTn))yc z9^9%@r6JPHQ&&P#Q)57xJKKAl)s27jUk&Nc`6Xe`EYLH_0bDZhGoXBg5{fAtWYL)T zGrbrpT%Vv+9kmL2W!S=UL9N6d<9$8~_^5&aDIvhULvJUO|#B?zY2UCv)@$hp_s&dbX%{@zhfM; zJFn5AUrcjlfo<|szAtsFlH`qe`)rx80|BI{^e+iCtWVt#OrS+755|s)H=-cbER{;> z0yj9HtQj0EF-}~>ie>WR%j4B@PAmYi@GQC;9iU@J+mLqBzp`yhCW&YIe@rgI>6NeB z{lmZGt5ZvLV)8MHj1sIA%#clstE~Huw#fdUvc}`T>$Y4yi2(s^qP7;uT|6<>Q82?$ zqVpHUmT}(y?VsA)g#P$>*SBw#qkWIEWN&{j-ODjBwwPjXIUFebyDZOXpnLvz#L9wV z0+qyCrncrxO!47nl^LihiZ&L^QczDYh8m-tGvKqF19k5Lonq{qZz;Q4R-LipR%qr6 z7@CD+0O#Oj@)tlcit9$M(F7%V0c$DaDyb`^bUrosucV>1kQ}s5!hVtXe4-(v)u@ub2>NL` z2ktXGRNeq{d|f?y%QM^=kWm8}Sjg?ay@&9ZiXF9gQenz?BAt?DI92g$JKzM^b5mY2 z9qq5Rs#jv1pfT;Q&-ZcKob^YRJ-0me-wjqredU*dxUYfDnec5uDV5Y}zdK0zisH}@ zb8O(^9E+aH)%BKW@8{sOwrGShn7(0QqWuo0SBcY>9=9?faE-m_*AniDp*%S+#QN{* zmFeT>3H8;|apPb2bW18&(jYTA2UV#Oy?43wi&$$!QAP>LJF)FJuUOyXM=c8K^)#an z%h|25O%o-AlJdYYHK{tqFPmw#Sacl9v<8;htl4#ApWL~L&tw`6PNaQfJDx~xO9N0M zzEKWS^mir?dvYJl7^xpArvN1P)j+!3s-dv#-weAv=?Sip|o=^WsZglT-aXor!5BNCo zw2j$K{JD3BK^NSx#OM$WJIlPZ$dGqV!@ZXhR_w=~mY1Tz%lH9hK3zO`6^0UkKBcMVOP+YeCd(?aJ!A@DcN_gkO9d zvBcwnVqh_+TYv;H->UM8Xmz;mZiPFJTddV_-_p~j>NMIx)S-iT^8b2+>VKKtJguB6 zU~Exz2~J#M#1$8LoGV#!@hB_fbD&MA5xP|WkbO)Ev+)Me9CvW1mr=R4Cu-zCBa>Nb zFus0Wu4tN0x~6C@FrD3(L2ZUCIE(3FIy_WrW#vXgtt{WF$(cCyQ}NQA-#j?r#Ae$| zgm4FTcRno1xEl_^vXZ)v8;ZNJ*Z(Y_m=$XC!UR0%z=XTx>Q>qkmUe#|A3CEzq`_SJ zgl9V7wVIzkSCwdJ*B(ikrXDJy%l^txIh2?8fo#hm6ASx@s2Yoj-e$Sb zC6JMbCL^O4df_INgOY>SUL||X^K74h8G%+>>K+v4uaY^VyrFh4eaWdo-_0Ix8^z@( z*VZaNDh>~GknJDuNBKHod$NkJb|&cm?PB_y2p)W~G_wiOWEQJuo@jcu z05sLsZs~GDIw_mxe?Qu9Cg#sOs#Lh`VA39LTn|{%dzR?X=JHVpUw;U;8z*e$eaNNg z`gR1OBfE=G59E@1R{c?dgJ$RU;XktA;EiLdE3>_tk!coAzBU*~^nQuS+Z%aSqirn! zY+-|cllD`37LUBn0Y7xBrOSy`gd+EER-Lb6@dsH|m*3Zg2q!~hUKj>B~A*V1@xZad$W|YnM!hza@T&esgPCgJ*p&nIMUxJ zpIk&hCw7{2SLZ_}0gr#+tHmh{h_Ie$*SKoKuA;7=3 zHut(9N)y7V4l6SJog7?3_*URQiOs7HAz8m8ol-{5CIg1!{);$DW*v7f-4||yxD%Bf zItTh_sT7u-Ud0a;6v*SaL0?Q7xS&7TLOoP$09ydrHW#(_Jrtf>uz?lWwgoJ;ozOuS zhzrqxX7Q###3k`?HHXsDbw!u(R+b2kBn{;oo6IJ@4{VaHH-aP^A3i@Fe%&!M5=3O% zA8$~D7z}iQ9%P!(M-}$(E`HME0c$jnui(kNNBR05&PQrz+*bAs2I=xRqN64ed2d%Um9QE;twaV?AW?HWj=3@5(W;0;#HjyymJ1r8Y z8~!kE9Z^kxvYztVyx^Uwv)()ZpT=!M_;8o1IwMYrYlO@_Z4io$Bm%0FcrqR zm1O#Kd$@X5qI;$G7qXv^A?J9Ln*=k6CH0^*hq4wVTGgPk?Ss9y?#Gi`TM=?bCL$ct9e&I$Qp(#u&pshY$ul>gzDpkoJ$cB&4S}3v z5HTlZ-zg&V?KO(=V=tiGg4BKPB^P*u`)esGQj0>-t}+cz@^7pr)2ZHVCUuK8Z)9-( zC|+!Zv+s*1)O7j)q;-|0ZbGCDq#x7sWtHRIvnjtS`w+-uPuP9RIzGY2lj8dKB}fh^ zoIi;T0VzM~#-rSakwF&yz&)8gZ4u>myoy}QlY!zoU}j^R`Yk)Ueu>dimHrOF4YDEL zhlJlP{9yv3dUr+&5WBKSE{jR87$}u#@XvC#_-pjM;<70LG;-}r04<_a5Rn^cvEm>g zZL!^uRaGhVX}aIi$yu!gS;MlU0b*%qze(5Z;<|^9SmUL{B_AVXJ4GFd<}oufYBk-y zg-lICGv_k9U4steZ=*kM2ZU1*E-?B zlpDhT)@v|kI~dc))Iitw_iq1J+T5 zym8`!{Y@#V(aaFKPcEc1-H7-q6ReOl!?N}^(SMp9y6a5A2C_wBk3fi*3frmO1M+Rh zgsWCUl~Ei}U9(~xNwu>cE1jUt{JGNLUTF$Dvqx?(71m)+w@haadyK4{{Q}dS`H_=- zos~q(FS%?5(a;QSnUek?Lq@@l@j3&u3}dZY)63AOYZAMTp?@R}Xcm5#q|E|6AC9dl z(F(jhk6kD1Oy}#3MmL8e>kgs7DM1gUt9L&Jx#D|r^4Ed(O@Ckmi0UTpSCn+pKe~Gp zZA=CF>$tgYR!$_DO6=$Anlp|pKPfbIo{&w%0#hJ4=dfP3k zzfpEjldRng6ccC|vxe+X(X$|xj)_aK^EtwqTX_@bzxD?RvC2xDK+68II?HxC$!$3N z?(oMx_GCHNP~;?4=-L(l*)s-&jQU>5-f+6HDeuIqpwyY|Z`$;T2Tc}9J0|<^hwEs) zs~&Z=Neu+A_^7~jl35Je>ayg0(M3q)VK9q)L@aHK)jsXOYG5DOG3M)k^!i5v_&~Zb z61Kxqke(r&@w_T=k#|i=h`l28^0WPbyCHATDj!8lay>g)AKiNFE6K=nJA7M-Puj(J zzO2=;%wkR@P1{53M$j2T++ zV#km*n@B(0Wlqo4Yo@e;#64S8*ptY+pHZ`*Yu@U%mg)uz8qx+#>Y#Xlg(M$2ZpT0o zi;8TM;EOC2iSD+a^hgyQ#68F=dIisqL@uZsqA#60qne)%NSl^;FHbLSRl{hX5K5q+ z%s*~tOCJf}Vix~uG9ta=|BLJZlrw&LeI0S&WdZN6&WljhbosEgN;NT=Db?TQeT)Gu zL!W=#B)4~~b;@mdofx*9&sg0Q(@A{wU{7IfxOzS&@2(ryMWs*CRG2ckvO#t(+ z&3F`xOJcV>Q^p4{;9mtEPQ}}pPNutfqBlm2*>%zARVC+}mpJfc_J*#E8fKQP;6^(P zdv=u?khsU(|q1lMnG+v!r~Ln@ZcNhRZd0)=Z3~;!IdCz-$&A?hiX) ze^y2nKJONPok!mlD0%VOQ( zn;-kmKR6q)+CAGiPtI1^;P&o6p4bz~zM<-ltsMCYPOde&el26D1pYv%Uyyys$b|`G zKduCBsvM!wS_4+MZArAPkN_k|08fzA=#WtH8s>(%O`at=ksP0AuBX#g){HrXABo)^ zFgE^z!(VVYxHkrntGDwO&B_{a>EH7+unmt(e1k>Qu3Lja)V@d3c+>wfCQ5^qAJNvP zRLAIi!9D7Z>UT86TyGjYzCuC&w>7I)C;+Sv<}~#(TJ)Le;N%B2>KjakV+@^`VTX`S z-VS4k(LNQkrDeXz%QmX*`gZ}^OCZEl^qJfeA%P0XZNd}`SYs1Es%r|CURe{oHiO1y zx8fZ?w^>Mjv+M0{DnxyDe&4ldr?4D%Tfup)2(^;&4PehnFt?_MTTg{?x7;BSldPuW-8=^ASX#O4A@~Ceika93iBR$HlTGGbQVVMvT4up znU-I%$Sd2gO~@ICb!{@XyD+>CT<)EzFl$Nw#gRUU5Uow&lKZ9(*?;$6){64l^>G} zdkA*~QcpoTPccKfQeXa^A+d=1Ns+)Rh`v08gm}_306@L%_-)9(d7DQi9e@QAFWI^H zkryXOTFW(~S_vS%zcFo#XV;2GG8T^HmTBU0&r&6S1*!{d<9Uzx@gc^TA?ng&bt)i3 zZt0$Fqi#1(TGd&Yw#>Nn`wufyzL78RlAJFjD^?XwWcOe1hpa30*=hZne?}!z;wK#8 zRfy|TY7dk7?ko;cny-{;uX@>9@vG&o%;%E~)KoO9iMVlA6huw^F;$JTh&%#@Mt+lxgx2p6dUijikv9|`-eFmZk!SZt_c1FsRfSypV~@zMhM7 zbD9?#xnfJPKTJo1$Q5QB**LwdjlZpToOY-l&!zK+<{G+PQ7wP(sU08+TJvF3KtmEB zFHD=NB0q%awZxNuhR5_#wT8&RGF2&bJzuppoWiW{GO^AdE+Nx_Ra;2!)`u(5b1XnT z1fCBWp>Or#(?+|GE@(i~#za~Md#mKu$20B#qBY8y9DiE*R=;c609zVq?{j$=ybrKt zfb_!*)6X7>&-d`|r%FTjP-Y*Vj1#)KK%?2-ATAmEzP^5=987ztD-72NA_(9MM$@n< z3Fyi#cJI_tUMd88ZW+rRk3lJA{l2t#*&DyTXL*%2T1NY`oLnJ1DLjy5PUE)(4nwz^ zU_+I_r8(q9^8dRO`<0UN$=XcwoP}*Wf@kZ)K&&7yw6h`u+ZFBu-ngtipWs$;F;KSw z?fr;TagXtj>2r;Gr}7^zRBA`?eNX8OK2DQyNf7nwZcLjvAwD*WY&+Y%0jl`vFfEa?7H{>Mk&SzE8 ze8md&j~K~vH-KybuR0c?*Y{nPT0(@91UJ^Aqc>|_ ztT9Y3q_IFMbO|3Dx-x;~>F3jof*VeyXFM0I^?@0dy)F_@FkpPht(9K*!-L%R*UUcqudf znVS<`V;by#KM_7}&Dp1$kx=qeE~z~%@VWp%YUInrO=ndBfql+iOn*UHVEt2~^aNHN zmm%n^vo|9jOd|g$Y{JOkFjQ3jqCD5X&7wHdw>B(4+ z+L?-|rBojuAa{Oz4930T93Rrnl(I01!6_IT0KFONFAbeur=E6!Vz1L{I)+lDIV+mW zrN6ADCX&|1QCk&U%f4}BMc_@~XnabG4yQJy9QJm?5AQ(T28LWnEn$QGYmy^C2-}U> z7JwyMtGa06*3; z{%)1;X;&GMDMPS$-B)QVz?|TQ&Wg(zpf-n3Dm@)bExiKfe=CpUv#4ax_BigfSdb>6 zI?RawC#RYS_p)1$3m?LDqFdG?2AN?eZfjwD2|!o@(#ekc#eC!(9elJqaXNWxeOq|& z!4%#e-`fZP#s^3pSWqkX{P;8dH$cn@mG*^sB{h0=8VoYc@2WfBtIWbRVaW6T+A33( zr<9uOIz!eg&rg||G%_utHNZT3&&@$(O#~=-)6@*8GK({hhfu-&X=5$-){TAIXRB4v z4t;YoAl#3>*KPn6G3bFNbFp%3wi>t+fg7n|SWPFWY0o3B^w z=7M35+8v@9M1Nx4P$nL`?Y*#JvF&KP2J zfAckZ9$3hTs;aJ@J41ST%cbxq1ZjGecJTMQU;3X3Z#E7zz+zCdXWXWQE>)}DgbsCV zGVRB(lv0P!3OrxP-5Ovaf4whqDIad_cA_5ajCzX_GI}V6P&(gkG}v;8U_OU9w|xZ7 zkTv!Ip*%gI$)TK}*sPc-k83|^7Fv`!(%tarUc;gXQOkU=u#nCOd{5g#9b zZ&AWW*kjm(tr=2wC|P-6$CCS_|DkQf=>+!{=u5YiRUGT**`m5YE3OzSllIH@N0+g3 z(mD?11EwjKqV9>4igNZowTwg%kA_n{Ywv_}`l(aHe;L@`tM#h=+)5&Df0@_8Z%;#G+Sa=B2 z6F;7&TRanEsrO9)F_GQ>Hk4RLZlBrh{fW_BLo)w#R~k|U;tDBb3ogq|wq`>L{|M|K zMCYfhAzNxe`J8P4>G}eQ2kFV^|Aq28m7&y;T`1NMENgBU&K4u8LF!db@5*B_kBipa z8pw|c^KzR0^>t{5)#{rpPm$J_;em+EX>XcopmAggWGQ#?V7R*dO^AMtfBPK&}x zCbBz5H`0zmf9&ou$78T~L{RQrT^GxRP_-`VtVKrPX}6fk6Mn44ConBWldDV^%A;BAXI-Go(&E#~lhTNHlXdNY z>aMAC?C|8#EaNx?2_-Lcz(K=awql=c|2+Ti3oR-v!6+Y1-pPd|7TJ29FG_V#WN-?B zF;Hxh`SNFN6QKJ+gxW!wXI|lB*7Hasc}WFlK&6|XmsaEjNhOhf zM{AeVE2Ax@EN$t^2<#e*pLJ`JP9Y!0tTTYuJTZEb9$gVvtx$$?SeRH*VNg`Dt#y#L ztEVQ(_1d`%hIdkekn+9B<@3~`Q!4A?wPL8dKub!0-nUSm7ad*G$X0?B1A_VasTEi* zjIJB;-{Q`O65xefqC($~45mE-C*rbVcrttI(CX7Q#>oFF^Q^nAg)TOpP1V_%&4>-} z;lX?sa$>PHHvxF)JWjdw?PsOOeiziqUt8JB>M`jFdf|WcHoJh?TN7xgNx~KGrG-4h zm4a4AMcReKIZ{jT=^}lERRGU@gQnlr!?8H1*ciAmd;X!jSe%=lktO&&4imWyu4)R? z3Mb??kJW)&9m3N~<8Xf(myO5E3$0`G@0v)@EJHL@cibeI zC)@{l*2M+pbqm{yp`RgW#_!N6ZlgmUe2F7>Gl-)7CLgx(iEp8vsOXcKNDj8YOCAHv zLYdpw0x$OnNXj6-Jg;>KS5mVy*jvGi8l>g6y`2@iO@2pT-u>}*jaO|tJ2p$WDj^AL zKE)wF3mp^YN`(-2Dv1qGlY1>D|`BnN<3!OixCuzxfwWbKA1> z*HtwVKDURh#^5ul(9W4yOCXsL{Q1p;*R%0F(kkzC55Z^PqZ?mD0}jji^@#(^=X>f8 z{yR@AFC~FK^B&sEkiN^Y8M57K;+?@BDR~}56W)YGW*3A(Lg&;s86XWVTNdy~93b7| zYJEgG61SCk);+XNa{5~Y^L;FC6N$HUk++k=p}Zo4uw=(7IYN!um_D=E6Kw#4eVUuO z0eae3yly;aJt2VNygmqGW@?ItW9CSWPPOoE!TP(Q7SpL=08b{IJ6_bGY9vpzDa7w+ z%^K}gZJeQ|2m?R*HN4j#&%mwHRZABf6y&VSJFXES6>u%jC;mM1kV zOE^$|kf??*qZ!OQ0ez~W=+PFNHZB@F{9Tqh@4OzAKoqU>quO%7w@aVQpaSCI3?vH>MCTvBVX?K1-Co&WW5Z zKYrqxmaJw}OnZ?g9ZZx@4f6w0Js98~gy8-I9MsmFIv?a}hcOzaFU7WgdIjMXy?j$| zzGe?QL!w3C@FrMi#6&w#O1Qf225nnq^Va?Os0b010=Mp8U1~^980zlhnRiHPnbb^w z?kNkL-^hMT476RNXhiMeY~K3%2^_)-*zA!*$Xd42pIxN~x`sDRarhqDE|81!q_(-$4JG9Ajj0}U;^sli_`3v}c9kX;Ws~)%5sDq}$rWwGvD30NsL( z4;;w#xyCzle(lp|0N<2CGFF(7$g^p~|ISeRw%JJMW+D(`NgKRjx>DD7tyS#*m2?Oh zC`BRnwq5j)(#i+eH=%!0eH-4CFQd5p_1%hV8jvs@iT+E4Lizj?ThnN1VAwvLdsH$Q zAUUQ}FwT?qF%-ru<~w({y~e;GmwIpUFl5@;=k#M6W3efWVDXV2dgw+p5QNmtc3@iA zzlpW4>4%)!>7#GO+*I>mlEfwVPi^~`#M;CI1MqEr3?K3USAPEX%Y`B^mEocJZ@^o~ zJ0i$UBWED18;c6buOydxwsk9_0%m}cDu-ie8nU&j>#|m})`f<*3(O zGRH}H>ScA7sVT7kX?~(hhc(wH1gNHuhaJ_;G|d0rKxTdhfG8^0F)A#UqoxOS;WGM- z#L4k-lA0-QB7ZOTG=TL)xmLw7WZe-8=$CiLxfe0-wV>TiK~fI z6`hXf{#gd}aM2xd?br&`1QkYxP-A;VM3vU6z5{NQlu}cdl4mn&N80c=DWxMOdQZ}@ zOSzN(x4~VNR#8k%hcCgj-IKgKctSfETy7_!ZA%0Vuxh*B-vK7om_HH;^m8Kmc_XsK z=I;qs1B%~NvV5Cz|4WfW5pF37wl2O=oo9Aa2kBnZX0|_2r4W^# zvCb!+V9FTl_Pe^QnSKl8MS(ew^}iQt)@mg0QnOO@cvgS)uE}RYLH((L69gVX+!Fu7 zI*4%zE2quzoS_}YslcQdh_3+)x~HF;*MzT{Q1AOA^b1qMd=H+`^X&pLoWfw7*@bMJ zf+?QKs_?@67;p@IUI#v$G6{}~>>kEf9C?dR+Kdqk6Knn9NGLu_^P21`U*wS6(Ie`} zj+FsB3oGnI6{zkG=kRwigE`?*S)pIwcOW+x5%voMQM8xXR0PrC61cq2t(4S6TSz*B za4ZGplZ$G*ZF?A09JE$c=h6fOHl;Fa7g{Llwi@Bv>Dc3bA-5T; zP6f;W2Pm1=7$PRIUy=DjOVX)a?wxbr4!Uhuj{G0)AWbYT`GwkaSL>X5-oDeSoNeZR7987Al{PN> zg3O>eZbRN%w{+Gw@Njj<4o8S-Mg|ViW4P5sOWye|`!_rJzkIFL8*H(pau8EA*786+ zM{8X|K6o+ZpNS{frLZWl9K~iE#dGres9-Adhnz0zPEfy8qLT`vSQ`Sge4*PzH-8Ga zNph3Re%+km@5~fntCma)MA~sM8g5#pTk1Es=|{H~_mEf3fj5p;Rt@sjs|d(X&dsdN zaW!FtZv?TIt%3&xeGe^kGk!Pnk|Gj7QRb*pl9+V?7EWR^6&9AQC~8z#{W?a`Q08$x zq%6;~;w6P`O8X(KP`!@_!?%0|M?F|YXoJ0{DJ%;!N zv9U8euV{em5;(oXyhhx^A0Ylgem zev@5D1*B{PLRDao2ryT6rZmrtmd;0aNG!jFg_fM%a2 zs^7XxPxXn=m%6kCJj>JFfNdOcazd>0G)tm3;|97pM>~5Kz=8|^CxZcy0$G+)d}eIz z3M*$C4f1NvGo&Ye zxJ)Bmvm$&J$h~^{up7T?i`m|4&TY zwH9u-b(BAT00W;%7npup0aSf%YHlkLT)F_%=s(O*Zo3~e5lhVtmKr4O74p1_Re()7 z!I@-&%A7w&li3o!#)HXFddpL%ayNT>SS(zE@jnuLPu9!Y< z0nJyY<|KcpM4jZ+v=Ow(ptnb4Cg;orCOS>A{#=``j+;MzDceh+sw?n|7m}dQAlem- zV}bCF&)Y2xXWM)GKarY*W`nqdkFX;Im6RD2CsSk7>0zboacnMQQslU#v?i!7U3wVh zRSvlLs1nilpb+nWQC{QeiT@_PhAA?c%x9Gy3%eP&0OnX5LEdCb=_=&i=x*;Abo#07^ ztlLbgTFr`HcC{9I4&MnsAYZNV<(h`rc!tx~q>t=)B2N()J{e3hkMI?5 z_ixkGVRfev;ZtBnfxF;FeZwq)G?y-kj6lENc#=x=0B_fft|%ASv|BkYalf&E8Scf*OIC z5ji^+wRlZL4~;OyA2wcmx7Z_dqK(}@w~OcJQO&8$@5c9`67|*B-5bu#tiIFT=K3&4 z_|L|9xQ2|dE%r07KK@ZHp>gE9YoSQDWDAy~8LAr&`-UqUch&>^w;}DDF`NajP2|zH z(F}9jAv_8f?_^Wdr&0ovSo&{L`#$o=J=KNdimhj(MtZ?9Ra%ofZ{6O_yrn+q;RS-C zFQi2pU(j1C%kX8OrGcY~o7x)+UBxruZ-O@1HjE)I(Mx*OO!>pHH@2B%38Q-PM$sS# zZtRTl3bXa7qZ3#ApuxzL`+7%BuSpL-obFFdw_z3Z?V$tyJ=eb4jMbFu* *a>9xS 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�IzdrI);q3_ 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⁢ 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

!Tkh`$rKWUH(h+%@ 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%0D(;s#-y>s;@HzD#r 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 kB(B~1oIF_AdpgBz-%+*`m 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 J(f>%Q*u98%I+_3g literal 0 HcmV?d00001 diff --git a/bsp/renesas/ra8m1-ek/.settings/language.settings.xml b/bsp/renesas/ra8m1-ek/.settings/language.settings.xml new file mode 100644 index 000000000000..860c3fd8bb83 --- /dev/null +++ b/bsp/renesas/ra8m1-ek/.settings/language.settings.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/bsp/renesas/ra8m1-ek/.settings/org.eclipse.core.runtime.prefs b/bsp/renesas/ra8m1-ek/.settings/org.eclipse.core.runtime.prefs new file mode 100644 index 000000000000..9f1acfcfba24 --- /dev/null +++ b/bsp/renesas/ra8m1-ek/.settings/org.eclipse.core.runtime.prefs @@ -0,0 +1,3 @@ +content-types/enabled=true +content-types/org.eclipse.cdt.core.asmSource/file-extensions=s +eclipse.preferences.version=1 \ No newline at end of file diff --git a/bsp/renesas/ra8m1-ek/.settings/projcfg.ini b/bsp/renesas/ra8m1-ek/.settings/projcfg.ini new file mode 100644 index 000000000000..c5a64cce535d --- /dev/null +++ b/bsp/renesas/ra8m1-ek/.settings/projcfg.ini @@ -0,0 +1,19 @@ +#RT-Thread Studio Project Configuration +#Tue Jan 10 14:37:39 CST 2023 +cfg_version=v3.0 +board_name=ra6m3-ek +example_name= +hardware_adapter=J-Link +board_base_nano_proj=false +project_type=rt-thread +chip_name=R7FA6M3AH\n +selected_rtt_version=latest +bsp_version= +os_branch=master +project_base_rtt_bsp=true +output_project_path=E\:softwareRT-ThreadStudioworkspace\ra6m3-temp +is_base_example_project=false +is_use_scons_build=true +project_name=ra6m3-temp +os_version=latest +bsp_path= diff --git a/bsp/renesas/ra8m1-ek/.settings/ra6m3-temp.JLink.Debug.rttlaunch b/bsp/renesas/ra8m1-ek/.settings/ra6m3-temp.JLink.Debug.rttlaunch new file mode 100644 index 000000000000..5cae09bdb064 --- /dev/null +++ b/bsp/renesas/ra8m1-ek/.settings/ra6m3-temp.JLink.Debug.rttlaunch @@ -0,0 +1,90 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/bsp/renesas/ra8m1-ek/.settings/standalone.prefs b/bsp/renesas/ra8m1-ek/.settings/standalone.prefs new file mode 100644 index 000000000000..9fc6950881c0 --- /dev/null +++ b/bsp/renesas/ra8m1-ek/.settings/standalone.prefs @@ -0,0 +1,21 @@ +#Mon Oct 30 16:09:15 CST 2023 +com.renesas.cdt.ddsc.packs.componentfiles/Renesas\#\#HAL\ Drivers\#\#all\#\#r_sci_b_uart\#\#\#\#5.0.0/libraries= +com.renesas.cdt.ddsc.packs.componentfiles/Renesas\#\#HAL\ Drivers\#\#all\#\#r_ioport\#\#\#\#5.0.0/all=1896254027,ra/fsp/inc/api/r_ioport_api.h|3058606325,ra/fsp/inc/instances/r_ioport.h|3002446768,ra/fsp/src/r_ioport/r_ioport.c +com.renesas.cdt.ddsc.content/com.renesas.cdt.ddsc.content.defaultlinkerscript=script/fsp.scat +com.renesas.cdt.ddsc.contentgen.options/options/suppresswarningspaths=ra/arm +com.renesas.cdt.ddsc.packs.componentfiles/Renesas\#\#BSP\#\#ra8m1\#\#device\#\#R7FA8M1AHECBD\#\#5.0.0/libraries= +com.renesas.cdt.ddsc.settingseditor/com.renesas.cdt.ddsc.settingseditor.active_page=ELCConfigurator +com.renesas.cdt.ddsc.packs.componentfiles/Renesas\#\#BSP\#\#ra8m1\#\#device\#\#\#\#5.0.0/all=3557931260,ra/fsp/src/bsp/cmsis/Device/RENESAS/Include/R7FA8M1AH.h +com.renesas.cdt.ddsc.packs.componentfiles/Renesas\#\#Common\#\#all\#\#fsp_common\#\#\#\#5.0.0/libraries= +com.renesas.cdt.ddsc.packs.componentfiles/Renesas\#\#BSP\#\#ra8m1\#\#fsp\#\#\#\#5.0.0/all=4143092756,script/fsp.scat|346195372,script/ac6/fsp_keep.via|934437302,ra/fsp/inc/fsp_features.h|3058606325,ra/fsp/inc/instances/r_ioport.h|1171232788,ra/fsp/src/bsp/cmsis/Device/RENESAS/Source/system.c|543620856,ra/fsp/src/bsp/cmsis/Device/RENESAS/Source/startup.c|1277668127,ra/fsp/src/bsp/mcu/ra8m1/bsp_mcu_info.h|3527988232,ra/fsp/src/bsp/mcu/ra8m1/bsp_override.h|1726006039,ra/fsp/src/bsp/mcu/ra8m1/bsp_elc.h|2183999466,ra/fsp/src/bsp/mcu/ra8m1/bsp_feature.h|1884526901,ra/fsp/src/bsp/mcu/all/bsp_register_protection.h|1437525339,ra/fsp/src/bsp/mcu/all/bsp_register_protection.c|248082807,ra/fsp/src/bsp/mcu/all/bsp_compiler_support.h|3324174567,ra/fsp/src/bsp/mcu/all/bsp_exceptions.h|2550773705,ra/fsp/src/bsp/mcu/all/bsp_tfu.h|271204625,ra/fsp/src/bsp/mcu/all/bsp_mcu_api.h|1668386995,ra/fsp/src/bsp/mcu/all/bsp_security.h|690210506,ra/fsp/src/bsp/mcu/all/bsp_irq.h|2942105346,ra/fsp/src/bsp/mcu/all/bsp_irq.c|296810838,ra/fsp/src/bsp/mcu/all/bsp_guard.c|1246740431,ra/fsp/src/bsp/mcu/all/bsp_delay.h|1331691689,ra/fsp/src/bsp/mcu/all/bsp_rom_registers.c|3569788004,ra/fsp/src/bsp/mcu/all/bsp_io.h|3610800851,ra/fsp/src/bsp/mcu/all/bsp_guard.h|2964028862,ra/fsp/src/bsp/mcu/all/bsp_common.h|3881030941,ra/fsp/src/bsp/mcu/all/bsp_clocks.h|3171976222,ra/fsp/src/bsp/mcu/all/bsp_security.c|429234293,ra/fsp/src/bsp/mcu/all/bsp_common.c|1872304413,ra/fsp/src/bsp/mcu/all/bsp_clocks.c|4092753007,ra/fsp/src/bsp/mcu/all/bsp_delay.c|2702335218,ra/fsp/src/bsp/mcu/all/bsp_group_irq.c|3085135894,ra/fsp/src/bsp/mcu/all/bsp_group_irq.h|2365965045,ra/fsp/src/bsp/mcu/all/bsp_sbrk.c|1835725510,ra/fsp/src/bsp/mcu/all/bsp_io.c|2551036977,ra/fsp/src/bsp/mcu/all/bsp_module_stop.h +com.renesas.cdt.ddsc.packs.componentfiles/Renesas\#\#BSP\#\#ra8m1\#\#fsp\#\#\#\#5.0.0/libraries= +com.renesas.cdt.ddsc.packs.componentfiles/Arm\#\#CMSIS\#\#CMSIS5\#\#CoreM\#\#\#\#5.9.0+renesas.0.fsp.5.0.0/libraries= +com.renesas.cdt.ddsc.packs.componentfiles/Arm\#\#CMSIS\#\#CMSIS5\#\#CoreM\#\#\#\#5.9.0+renesas.0.fsp.5.0.0/all=1441545198,ra/arm/CMSIS_5/LICENSE.txt|304461792,ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm3.h|1480183821,ra/arm/CMSIS_5/CMSIS/Core/Include/cmsis_version.h|3898569239,ra/arm/CMSIS_5/CMSIS/Core/Include/cmsis_armclang.h|2327633156,ra/arm/CMSIS_5/CMSIS/Core/Include/core_sc000.h|1608305587,ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm85.h|2701379970,ra/arm/CMSIS_5/CMSIS/Core/Include/mpu_armv8.h|3778515955,ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm55.h|965562395,ra/arm/CMSIS_5/CMSIS/Core/Include/cmsis_gcc.h|3007265674,ra/arm/CMSIS_5/CMSIS/Core/Include/core_armv8mbl.h|1577199483,ra/arm/CMSIS_5/CMSIS/Core/Include/cmsis_iccarm.h|2635219934,ra/arm/CMSIS_5/CMSIS/Core/Include/tz_context.h|1438162915,ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm35p.h|4290386133,ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm0plus.h|3358993753,ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm4.h|1017116116,ra/arm/CMSIS_5/CMSIS/Core/Include/cmsis_compiler.h|1745843273,ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm0.h|364344841,ra/arm/CMSIS_5/CMSIS/Core/Include/core_sc300.h|4084823319,ra/arm/CMSIS_5/CMSIS/Core/Include/pac_armv81.h|302860276,ra/arm/CMSIS_5/CMSIS/Core/Include/cachel1_armv7.h|3163610011,ra/arm/CMSIS_5/CMSIS/Core/Include/pmu_armv8.h|4147548732,ra/arm/CMSIS_5/CMSIS/Core/Include/core_armv81mml.h|1564341101,ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm7.h|1290634672,ra/arm/CMSIS_5/CMSIS/Core/Include/core_armv8mml.h|1494441116,ra/arm/CMSIS_5/CMSIS/Core/Include/mpu_armv7.h|1372010515,ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm23.h|1924015782,ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm33.h|2851112248,ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm1.h|3911746910,ra/arm/CMSIS_5/CMSIS/Core/Include/cmsis_armclang_ltm.h|2675617387,ra/arm/CMSIS_5/CMSIS/Core/Include/core_starmc1.h|1044777225,ra/arm/CMSIS_5/CMSIS/Core/Include/cmsis_armcc.h +com.renesas.cdt.ddsc.packs.componentfiles/Renesas\#\#HAL\ Drivers\#\#all\#\#r_sci_b_uart\#\#\#\#5.0.0/all=3115705082,ra/fsp/inc/api/r_transfer_api.h|1476071459,ra/fsp/inc/api/r_uart_api.h|419014891,ra/fsp/inc/instances/r_sci_b_uart.h|3063216256,ra/fsp/src/r_sci_b_uart/r_sci_b_uart.c +com.renesas.cdt.ddsc.packs.componentfiles/Renesas\#\#HAL\ Drivers\#\#all\#\#r_ioport\#\#\#\#5.0.0/libraries= +com.renesas.cdt.ddsc.packs.componentfiles/Renesas\#\#BSP\#\#ra8m1\#\#device\#\#R7FA8M1AHECBD\#\#5.0.0/all= +com.renesas.cdt.ddsc.packs.componentfiles/Renesas\#\#Common\#\#all\#\#fsp_common\#\#\#\#5.0.0/all=107063585,ra/fsp/inc/fsp_version.h|2560512765,ra/fsp/inc/api/bsp_api.h|1896254027,ra/fsp/inc/api/r_ioport_api.h|1037141086,ra/fsp/inc/api/fsp_common_api.h|4290340792,ra/fsp/src/bsp/cmsis/Device/RENESAS/Include/system.h|3566655744,ra/fsp/src/bsp/cmsis/Device/RENESAS/Include/renesas.h +com.renesas.cdt.ddsc.packs.componentfiles/Renesas\#\#BSP\#\#Board\#\#ra8m1_ek\#\#\#\#5.0.0/all=2370294288,ra/board/ra8m1_ek/board_init.h|3816945414,ra/board/ra8m1_ek/board_init.c|3071464958,ra/board/ra8m1_ek/board_leds.h|3090459819,ra/board/ra8m1_ek/board_leds.c|106221315,ra/board/ra8m1_ek/board.h|1919213143,ra/board/ra8m1_ek/board_ethernet_phy.h +com.renesas.cdt.ddsc.packs.componentfiles/Renesas\#\#BSP\#\#Board\#\#ra8m1_ek\#\#\#\#5.0.0/libraries= +com.renesas.cdt.ddsc.packs.componentfiles/Renesas\#\#BSP\#\#ra8m1\#\#device\#\#\#\#5.0.0/libraries= +com.renesas.cdt.ddsc.threads.configurator/collapse/module.driver.uart_on_sci_b_uart.1514241209=false diff --git a/bsp/renesas/ra8m1-ek/EventRecorderStub.scvd b/bsp/renesas/ra8m1-ek/EventRecorderStub.scvd new file mode 100644 index 000000000000..2956b2968389 --- /dev/null +++ b/bsp/renesas/ra8m1-ek/EventRecorderStub.scvd @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/bsp/renesas/ra8m1-ek/JLinkLog.txt b/bsp/renesas/ra8m1-ek/JLinkLog.txt new file mode 100644 index 000000000000..013c4a8868c2 --- /dev/null +++ b/bsp/renesas/ra8m1-ek/JLinkLog.txt @@ -0,0 +1,3918 @@ +T174FC 000:010.865 SEGGER J-Link V7.92k Log File +T174FC 000:011.081 DLL Compiled: Oct 18 2023 14:58:31 +T174FC 000:011.086 Logging started @ 2023-10-30 08:14 +T174FC 000:011.091 Process: E:\software\keil\keil_Core\UV4\UV4.exe +T174FC 000:011.098 - 11.095ms +T174FC 000:011.107 JLINK_SetWarnOutHandler(...) +T174FC 000:011.111 - 0.006ms +T174FC 000:011.117 JLINK_OpenEx(...) +T174FC 000:014.709 Firmware: J-Link OB-RA4M2 compiled Sep 13 2023 14:47:46 +T174FC 000:015.026 Firmware: J-Link OB-RA4M2 compiled Sep 13 2023 14:47:46 +T174FC 000:027.125 Hardware: V1.00 +T174FC 000:027.143 S/N: 1081652787 +T174FC 000:027.150 OEM: SEGGER +T174FC 000:027.163 Feature(s): None +T174FC 000:027.851 Bootloader: 2021 May 14 +T174FC 000:028.294 USB speed mode: Full speed (12 MBit/s) +T174FC 000:028.637 TELNET listener socket opened on port 19021 +T174FC 000:028.734 WEBSRV WEBSRV_Init(): Starting webserver thread(s) +T174FC 000:028.998 WEBSRV Webserver running on local port 19080 +T174FC 000:029.088 Looking for J-Link GUI Server exe at: E:\software\keil\keil_Core\ARM\Segger\JLinkGUIServer.exe +T174FC 000:029.106 Forking J-Link GUI Server: E:\software\keil\keil_Core\ARM\Segger\JLinkGUIServer.exe +T174FC 000:335.735 Failed to connect to J-Link GUI Server. +T174FC 000:335.764 - 324.634ms returns "O.K." +T174FC 000:335.778 JLINK_GetEmuCaps() +T174FC 000:335.786 - 0.005ms returns 0xB8EA5A33 +T174FC 000:335.794 JLINK_TIF_GetAvailable(...) +T174FC 000:335.957 - 0.163ms +T174FC 000:335.968 JLINK_SetErrorOutHandler(...) +T174FC 000:335.972 - 0.004ms +T174FC 000:336.003 JLINK_ExecCommand("ProjectFile = "E:\workspace_work\rt-thread-5.0\bsp\renesas\ra8m1-ek\JLinkSettings.ini"", ...). +T174FC 000:347.880 Ref file found at: E:\software\keil\keil_Core\ARM\Segger\JLinkDevices.ref +T174FC 000:348.014 REF file references invalid XML file: C:\Program Files\SEGGER\JLink\JLinkDevices.xml +T174FC 000:348.067 XML file found at: E:\software\keil\keil_Core\ARM\Segger\JLinkDevices.xml +T174FC 000:348.536 E:\software\keil\keil_Core\ARM\Segger\JLinkDevices.xml evaluated successfully. +T174FC 000:348.547 Device entry created: CYCLONE V +T174FC 000:348.556 ChipInfo: +T174FC 000:348.563 Vendor: Altera +T174FC 000:348.570 Name: CYCLONE V +T174FC 000:348.578 Core: JLINK_CORE_CORTEX_A9 +T174FC 000:348.599 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\Altera\Cyclone_V\Altera_Cyclone_V.JLinkScript +T174FC 000:348.611 Device entry modified: AMAPH1KK-KBR +T174FC 000:348.626 ChipInfo: +T174FC 000:348.634 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\AmbiqMicro\AmbiqMicro_Apollo2.pex +T174FC 000:348.642 Device entry modified: AMAPH1KK-KCR +T174FC 000:348.656 ChipInfo: +T174FC 000:348.663 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\AmbiqMicro\AmbiqMicro_Apollo2.pex +T174FC 000:348.672 Device entry modified: ATSAMA5D21C +T174FC 000:348.687 ChipInfo: +T174FC 000:348.694 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\ATMEL\Atmel_ATSAMA5D2x.pex +T174FC 000:348.704 Device entry modified: ATSAMA5D22C +T174FC 000:348.717 ChipInfo: +T174FC 000:348.725 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\ATMEL\Atmel_ATSAMA5D2x.pex +T174FC 000:348.732 Device entry modified: ATSAMA5D23C +T174FC 000:348.745 ChipInfo: +T174FC 000:348.753 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\ATMEL\Atmel_ATSAMA5D2x.pex +T174FC 000:348.760 Device entry modified: ATSAMA5D24C +T174FC 000:348.774 ChipInfo: +T174FC 000:348.781 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\ATMEL\Atmel_ATSAMA5D2x.pex +T174FC 000:348.788 Device entry modified: ATSAMA5D25C +T174FC 000:348.801 ChipInfo: +T174FC 000:348.809 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\ATMEL\Atmel_ATSAMA5D2x.pex +T174FC 000:348.816 Device entry modified: ATSAMA5D26C +T174FC 000:348.829 ChipInfo: +T174FC 000:348.874 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\ATMEL\Atmel_ATSAMA5D2x.pex +T174FC 000:348.882 Device entry modified: ATSAMA5D27C +T174FC 000:348.904 ChipInfo: +T174FC 000:348.912 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\ATMEL\Atmel_ATSAMA5D2x.pex +T174FC 000:348.919 FlashBankInfo: +T174FC 000:348.926 Name: QSPI Flash +T174FC 000:348.933 BaseAddr: 0xD0000000 +T174FC 000:348.996 LoaderInfo: +T174FC 000:349.004 Name: QSPI_Flash +T174FC 000:349.011 MaxSize: 0x02000000 +T174FC 000:349.018 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\ATMEL\SAMA5D2\SAMA5D2XPLAINED_QSPI.elf +T174FC 000:349.024 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:349.032 Device entry modified: ATSAMA5D28C +T174FC 000:349.047 ChipInfo: +T174FC 000:349.055 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\ATMEL\Atmel_ATSAMA5D2x.pex +T174FC 000:349.063 Device entry modified: BCM43907 +T174FC 000:349.076 ChipInfo: +T174FC 000:349.083 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\Broadcom\BCM43907.JLinkScript +T174FC 000:349.092 Device entry modified: CR600 +T174FC 000:349.105 ChipInfo: +T174FC 000:349.112 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\ClouderSemi\CR600\CR600.JLinkScript +T174FC 000:349.119 FlashBankInfo: +T174FC 000:349.125 Name: QSPI flash +T174FC 000:349.132 BaseAddr: 0x20000000 +T174FC 000:349.173 LoaderInfo: +T174FC 000:349.181 Name: QSPI_flash +T174FC 000:349.188 MaxSize: 0x00800000 +T174FC 000:349.195 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\ClouderSemi\CR600\CR600.FLM +T174FC 000:349.201 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:349.209 Device entry modified: CYW43907 +T174FC 000:349.230 ChipInfo: +T174FC 000:349.238 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\Broadcom\BCM43907.JLinkScript +T174FC 000:349.247 Device entry modified: S6J328CK +T174FC 000:349.261 ChipInfo: +T174FC 000:349.268 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\Cypress\Cypress_S6J328.pex +T174FC 000:349.276 Device entry modified: S6J328CL +T174FC 000:349.288 ChipInfo: +T174FC 000:349.295 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\Cypress\Cypress_S6J328.pex +T174FC 000:349.303 Device entry modified: S6J324CKSM +T174FC 000:349.316 ChipInfo: +T174FC 000:349.323 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\Cypress\Traveo_S6J3300\Cypress_S6J33xx.pex +T174FC 000:349.330 Device entry modified: S6J331EKC +T174FC 000:349.348 ChipInfo: +T174FC 000:349.356 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\Cypress\Traveo_S6J3300\Cypress_S6J33xx.pex +T174FC 000:349.364 Device entry modified: S6J331EJA +T174FC 000:349.377 ChipInfo: +T174FC 000:349.384 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\Cypress\Traveo_S6J3300\Cypress_S6J33xx.pex +T174FC 000:349.391 Device entry modified: S6J331EKE +T174FC 000:349.404 ChipInfo: +T174FC 000:349.411 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\Cypress\Traveo_S6J3300\Cypress_S6J33xx.pex +T174FC 000:349.419 Device entry modified: S6J332CJB +T174FC 000:349.432 ChipInfo: +T174FC 000:349.439 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\Cypress\Traveo_S6J3300\Cypress_S6J33xx.pex +T174FC 000:349.446 Device entry modified: S6J332CJT +T174FC 000:349.459 ChipInfo: +T174FC 000:349.466 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\Cypress\Traveo_S6J3300\Cypress_S6J33xx.pex +T174FC 000:349.474 Device entry modified: S6J332CKS +T174FC 000:349.486 ChipInfo: +T174FC 000:349.493 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\Cypress\Traveo_S6J3300\Cypress_S6J33xx.pex +T174FC 000:349.504 Device entry modified: S6J332EJB +T174FC 000:349.517 ChipInfo: +T174FC 000:349.525 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\Cypress\Traveo_S6J3300\Cypress_S6J33xx.pex +T174FC 000:349.532 Device entry modified: S6J334BJD +T174FC 000:349.545 ChipInfo: +T174FC 000:349.552 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\Cypress\Traveo_S6J3300\Cypress_S6J33xx.pex +T174FC 000:349.560 Device entry modified: S6J334CHB +T174FC 000:349.572 ChipInfo: +T174FC 000:349.580 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\Cypress\Traveo_S6J3300\Cypress_S6J33xx.pex +T174FC 000:349.587 Device entry modified: S6J334CJE +T174FC 000:349.600 ChipInfo: +T174FC 000:349.607 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\Cypress\Traveo_S6J3300\Cypress_S6J33xx.pex +T174FC 000:349.614 Device entry modified: S6J334CJT +T174FC 000:349.627 ChipInfo: +T174FC 000:349.634 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\Cypress\Traveo_S6J3300\Cypress_S6J33xx.pex +T174FC 000:349.641 Device entry modified: S6J334CKS +T174FC 000:349.654 ChipInfo: +T174FC 000:349.661 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\Cypress\Traveo_S6J3300\Cypress_S6J33xx.pex +T174FC 000:349.668 Device entry modified: S6J334DJE +T174FC 000:349.681 ChipInfo: +T174FC 000:349.688 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\Cypress\Traveo_S6J3300\Cypress_S6J33xx.pex +T174FC 000:349.696 Device entry modified: S6J334DJT +T174FC 000:349.710 ChipInfo: +T174FC 000:349.717 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\Cypress\Traveo_S6J3300\Cypress_S6J33xx.pex +T174FC 000:349.724 Device entry modified: S6J334EJA +T174FC 000:349.737 ChipInfo: +T174FC 000:349.744 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\Cypress\Traveo_S6J3300\Cypress_S6J33xx.pex +T174FC 000:349.751 Device entry modified: S6J334EJE +T174FC 000:349.764 ChipInfo: +T174FC 000:349.771 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\Cypress\Traveo_S6J3300\Cypress_S6J33xx.pex +T174FC 000:349.778 Device entry modified: S6J334EJT +T174FC 000:349.790 ChipInfo: +T174FC 000:349.797 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\Cypress\Traveo_S6J3300\Cypress_S6J33xx.pex +T174FC 000:349.805 Device entry modified: CEC1702 +T174FC 000:349.814 FlashBankInfo: +T174FC 000:349.820 Name: SPI Flash +T174FC 000:349.827 BaseAddr: 0x60000000 +T174FC 000:349.871 LoaderInfo: +T174FC 000:349.879 Name: SPI_Flash +T174FC 000:349.886 MaxSize: 0x00200000 +T174FC 000:349.893 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\Microchip\CEC1702\Microchip_CEC1702_Clicker_QSPI_ES.elf +T174FC 000:349.899 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:349.908 Device entry modified: nRF52832_xxAA +T174FC 000:349.923 ChipInfo: +T174FC 000:349.931 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\NordicSemi\nRF52.pex +T174FC 000:349.939 Device entry modified: nRF52832_xxAB +T174FC 000:349.952 ChipInfo: +T174FC 000:349.959 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\NordicSemi\nRF52.pex +T174FC 000:349.967 Device entry modified: nRF52840_xxAA +T174FC 000:349.979 ChipInfo: +T174FC 000:349.987 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\NordicSemi\nRF52.pex +T174FC 000:349.995 Device entry modified: MCIMX6X1_A9 +T174FC 000:350.018 ChipInfo: +T174FC 000:350.026 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\NXP\iMX6SX\iMX6SX_CortexA9.JLinkScript +T174FC 000:350.033 FlashBankInfo: +T174FC 000:350.039 Name: QSPI Flash +T174FC 000:350.048 BaseAddr: 0x70000000 +T174FC 000:350.099 LoaderInfo: +T174FC 000:350.107 Name: QSPI_Flash +T174FC 000:350.114 MaxSize: 0x02000000 +T174FC 000:350.121 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\NXP\iMX6SX\NXP_iMX6SX_SABRE_Board_QSPI.elf +T174FC 000:350.127 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:350.136 Device entry modified: MCIMX6X1_M4 +T174FC 000:350.151 ChipInfo: +T174FC 000:350.158 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\NXP\iMX6SX\iMX6SX_CortexM4.JLinkScript +T174FC 000:350.166 Device entry modified: MCIMX6X2_A9 +T174FC 000:350.178 ChipInfo: +T174FC 000:350.186 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\NXP\iMX6SX\iMX6SX_CortexA9.JLinkScript +T174FC 000:350.193 FlashBankInfo: +T174FC 000:350.199 Name: QSPI Flash +T174FC 000:350.206 BaseAddr: 0x70000000 +T174FC 000:350.226 LoaderInfo: +T174FC 000:350.233 Name: QSPI_Flash +T174FC 000:350.240 MaxSize: 0x02000000 +T174FC 000:350.247 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\NXP\iMX6SX\NXP_iMX6SX_SABRE_Board_QSPI.elf +T174FC 000:350.253 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:350.261 Device entry modified: MCIMX6X2_M4 +T174FC 000:350.274 ChipInfo: +T174FC 000:350.281 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\NXP\iMX6SX\iMX6SX_CortexM4.JLinkScript +T174FC 000:350.289 Device entry modified: MCIMX6X3_A9 +T174FC 000:350.301 ChipInfo: +T174FC 000:350.309 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\NXP\iMX6SX\iMX6SX_CortexA9.JLinkScript +T174FC 000:350.316 FlashBankInfo: +T174FC 000:350.322 Name: QSPI Flash +T174FC 000:350.329 BaseAddr: 0x70000000 +T174FC 000:350.348 LoaderInfo: +T174FC 000:350.355 Name: QSPI_Flash +T174FC 000:350.362 MaxSize: 0x02000000 +T174FC 000:350.368 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\NXP\iMX6SX\NXP_iMX6SX_SABRE_Board_QSPI.elf +T174FC 000:350.375 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:350.383 Device entry modified: MCIMX6X3_M4 +T174FC 000:350.395 ChipInfo: +T174FC 000:350.403 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\NXP\iMX6SX\iMX6SX_CortexM4.JLinkScript +T174FC 000:350.410 Device entry modified: MCIMX6X4_A9 +T174FC 000:350.422 ChipInfo: +T174FC 000:350.430 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\NXP\iMX6SX\iMX6SX_CortexA9.JLinkScript +T174FC 000:350.436 FlashBankInfo: +T174FC 000:350.443 Name: QSPI Flash +T174FC 000:350.450 BaseAddr: 0x70000000 +T174FC 000:350.469 LoaderInfo: +T174FC 000:350.476 Name: QSPI_Flash +T174FC 000:350.483 MaxSize: 0x02000000 +T174FC 000:350.489 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\NXP\iMX6SX\NXP_iMX6SX_SABRE_Board_QSPI.elf +T174FC 000:350.496 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:350.503 Device entry modified: MCIMX6X4_M4 +T174FC 000:350.516 ChipInfo: +T174FC 000:350.524 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\NXP\iMX6SX\iMX6SX_CortexM4.JLinkScript +T174FC 000:350.531 Device entry modified: MCIMX6G0 +T174FC 000:350.557 ChipInfo: +T174FC 000:350.564 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\NXP\iMX6UL\NXP_iMX6ULL.JLinkScript +T174FC 000:350.571 FlashBankInfo: +T174FC 000:350.578 Name: QSPI flash +T174FC 000:350.585 BaseAddr: 0x60000000 +T174FC 000:350.625 LoaderInfo: +T174FC 000:350.633 Name: QSPI_flash +T174FC 000:350.639 MaxSize: 0x02000000 +T174FC 000:350.646 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\NXP\iMX6UL\NXP_iMX6UL_EVK_QSPI.elf +T174FC 000:350.686 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:350.694 Device entry modified: MCIMX6G1 +T174FC 000:350.711 ChipInfo: +T174FC 000:350.719 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\NXP\iMX6UL\NXP_iMX6ULL.JLinkScript +T174FC 000:350.726 FlashBankInfo: +T174FC 000:350.733 Name: QSPI flash +T174FC 000:350.739 BaseAddr: 0x60000000 +T174FC 000:350.759 LoaderInfo: +T174FC 000:350.785 Name: QSPI_flash +T174FC 000:350.792 MaxSize: 0x02000000 +T174FC 000:350.799 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\NXP\iMX6UL\NXP_iMX6UL_EVK_QSPI.elf +T174FC 000:350.805 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:350.813 Device entry modified: MCIMX6G2 +T174FC 000:350.825 ChipInfo: +T174FC 000:350.839 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\NXP\iMX6UL\NXP_iMX6ULL.JLinkScript +T174FC 000:350.846 FlashBankInfo: +T174FC 000:350.852 Name: QSPI flash +T174FC 000:350.859 BaseAddr: 0x60000000 +T174FC 000:350.878 LoaderInfo: +T174FC 000:350.885 Name: QSPI_flash +T174FC 000:350.892 MaxSize: 0x02000000 +T174FC 000:350.898 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\NXP\iMX6UL\NXP_iMX6UL_EVK_QSPI.elf +T174FC 000:350.905 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:350.912 Device entry modified: MCIMX6G3 +T174FC 000:350.924 ChipInfo: +T174FC 000:350.931 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\NXP\iMX6UL\NXP_iMX6ULL.JLinkScript +T174FC 000:350.938 FlashBankInfo: +T174FC 000:350.945 Name: QSPI flash +T174FC 000:350.951 BaseAddr: 0x60000000 +T174FC 000:350.970 LoaderInfo: +T174FC 000:350.985 Name: QSPI_flash +T174FC 000:350.992 MaxSize: 0x02000000 +T174FC 000:351.005 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\NXP\iMX6UL\NXP_iMX6UL_EVK_QSPI.elf +T174FC 000:351.012 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:351.020 Device entry modified: MCIMX6Y0 +T174FC 000:351.032 ChipInfo: +T174FC 000:351.039 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\NXP\iMX6UL\NXP_iMX6ULL.JLinkScript +T174FC 000:351.046 FlashBankInfo: +T174FC 000:351.052 Name: QSPI flash +T174FC 000:351.060 BaseAddr: 0x60000000 +T174FC 000:351.079 LoaderInfo: +T174FC 000:351.086 Name: QSPI_flash +T174FC 000:351.093 MaxSize: 0x02000000 +T174FC 000:351.099 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\NXP\iMX6UL\NXP_iMX6UL_EVK_QSPI.elf +T174FC 000:351.106 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:351.113 Device entry modified: MCIMX6Y1 +T174FC 000:351.134 ChipInfo: +T174FC 000:351.142 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\NXP\iMX6UL\NXP_iMX6ULL.JLinkScript +T174FC 000:351.153 FlashBankInfo: +T174FC 000:351.189 Name: QSPI flash +T174FC 000:351.196 BaseAddr: 0x60000000 +T174FC 000:351.215 LoaderInfo: +T174FC 000:351.223 Name: QSPI_flash +T174FC 000:351.229 MaxSize: 0x02000000 +T174FC 000:351.236 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\NXP\iMX6UL\NXP_iMX6UL_EVK_QSPI.elf +T174FC 000:351.247 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:351.265 Device entry modified: MCIMX6Y2 +T174FC 000:351.281 ChipInfo: +T174FC 000:351.290 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\NXP\iMX6UL\NXP_iMX6ULL.JLinkScript +T174FC 000:351.299 FlashBankInfo: +T174FC 000:351.306 Name: QSPI flash +T174FC 000:351.313 BaseAddr: 0x60000000 +T174FC 000:351.340 LoaderInfo: +T174FC 000:351.350 Name: QSPI_flash +T174FC 000:351.356 MaxSize: 0x02000000 +T174FC 000:351.363 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\NXP\iMX6UL\NXP_iMX6UL_EVK_QSPI.elf +T174FC 000:351.374 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:351.382 Device entry modified: MCIMX6Y7 +T174FC 000:351.394 ChipInfo: +T174FC 000:351.406 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\NXP\iMX6UL\NXP_iMX6ULL.JLinkScript +T174FC 000:351.412 FlashBankInfo: +T174FC 000:351.419 Name: QSPI flash +T174FC 000:351.426 BaseAddr: 0x60000000 +T174FC 000:351.447 LoaderInfo: +T174FC 000:351.454 Name: QSPI_flash +T174FC 000:351.461 MaxSize: 0x02000000 +T174FC 000:351.468 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\NXP\iMX6UL\NXP_iMX6UL_EVK_QSPI.elf +T174FC 000:351.474 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:351.483 Device entry modified: MCIMX7D3_A7_0 +T174FC 000:351.503 ChipInfo: +T174FC 000:351.527 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\NXP\iMX7D\NXP_iMX7D_Connect_CortexA7_0.JLinkScript +T174FC 000:351.534 FlashBankInfo: +T174FC 000:351.545 Name: QSPI flash +T174FC 000:351.552 BaseAddr: 0x60000000 +T174FC 000:351.593 LoaderInfo: +T174FC 000:351.601 Name: QSPI_flash +T174FC 000:351.608 MaxSize: 0x04000000 +T174FC 000:351.615 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\NXP\iMX7D\NXP_iMX7D_SABRE_Board_QSPI.elf +T174FC 000:351.622 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:351.631 Device entry modified: MCIMX7D3_A7_1 +T174FC 000:351.645 ChipInfo: +T174FC 000:351.653 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\NXP\iMX7D\NXP_iMX7D_Connect_CortexA7_1.JLinkScript +T174FC 000:351.660 FlashBankInfo: +T174FC 000:351.667 Name: QSPI flash +T174FC 000:351.676 BaseAddr: 0x60000000 +T174FC 000:351.703 LoaderInfo: +T174FC 000:351.710 Name: QSPI_flash +T174FC 000:351.717 MaxSize: 0x04000000 +T174FC 000:351.724 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\NXP\iMX7D\NXP_iMX7D_SABRE_Board_QSPI.elf +T174FC 000:351.730 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:351.738 Device entry modified: MCIMX7D3_M4 +T174FC 000:351.743 ChipInfo: +T174FC 000:351.750 WorkRAMAddr: 0x00900000 +T174FC 000:351.761 WorkRAMSize: 0x00020000 +T174FC 000:351.779 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\NXP\iMX7D\NXP_iMX7D_Connect_CortexM4.JLinkScript +T174FC 000:351.790 FlashBankInfo: +T174FC 000:351.802 Name: QSPI flash +T174FC 000:351.810 BaseAddr: 0x60000000 +T174FC 000:351.836 LoaderInfo: +T174FC 000:351.843 Name: QSPI_flash +T174FC 000:351.850 MaxSize: 0x04000000 +T174FC 000:351.857 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\NXP\iMX7D\NXP_iMX7D_SABRE_Board_QSPI.elf +T174FC 000:351.864 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:351.873 Device entry modified: MCIMX7D5_A7_0 +T174FC 000:351.887 ChipInfo: +T174FC 000:351.894 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\NXP\iMX7D\NXP_iMX7D_Connect_CortexA7_0.JLinkScript +T174FC 000:351.901 FlashBankInfo: +T174FC 000:351.907 Name: QSPI flash +T174FC 000:351.914 BaseAddr: 0x60000000 +T174FC 000:351.945 LoaderInfo: +T174FC 000:351.953 Name: QSPI_flash +T174FC 000:351.959 MaxSize: 0x04000000 +T174FC 000:351.966 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\NXP\iMX7D\NXP_iMX7D_SABRE_Board_QSPI.elf +T174FC 000:351.975 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:351.983 Device entry modified: MCIMX7D5_A7_1 +T174FC 000:351.996 ChipInfo: +T174FC 000:352.004 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\NXP\iMX7D\NXP_iMX7D_Connect_CortexA7_1.JLinkScript +T174FC 000:352.010 FlashBankInfo: +T174FC 000:352.017 Name: QSPI flash +T174FC 000:352.024 BaseAddr: 0x60000000 +T174FC 000:352.042 LoaderInfo: +T174FC 000:352.050 Name: QSPI_flash +T174FC 000:352.056 MaxSize: 0x04000000 +T174FC 000:352.063 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\NXP\iMX7D\NXP_iMX7D_SABRE_Board_QSPI.elf +T174FC 000:352.069 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:352.078 Device entry modified: MCIMX7D5_M4 +T174FC 000:352.083 ChipInfo: +T174FC 000:352.089 WorkRAMAddr: 0x00900000 +T174FC 000:352.096 WorkRAMSize: 0x00020000 +T174FC 000:352.111 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\NXP\iMX7D\NXP_iMX7D_Connect_CortexM4.JLinkScript +T174FC 000:352.119 FlashBankInfo: +T174FC 000:352.125 Name: QSPI flash +T174FC 000:352.132 BaseAddr: 0x60000000 +T174FC 000:352.150 LoaderInfo: +T174FC 000:352.158 Name: QSPI_flash +T174FC 000:352.164 MaxSize: 0x04000000 +T174FC 000:352.171 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\NXP\iMX7D\NXP_iMX7D_SABRE_Board_QSPI.elf +T174FC 000:352.177 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:352.185 Device entry modified: MCIMX7D7_A7_0 +T174FC 000:352.198 ChipInfo: +T174FC 000:352.205 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\NXP\iMX7D\NXP_iMX7D_Connect_CortexA7_0.JLinkScript +T174FC 000:352.212 FlashBankInfo: +T174FC 000:352.218 Name: QSPI flash +T174FC 000:352.225 BaseAddr: 0x60000000 +T174FC 000:352.243 LoaderInfo: +T174FC 000:352.251 Name: QSPI_flash +T174FC 000:352.257 MaxSize: 0x04000000 +T174FC 000:352.264 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\NXP\iMX7D\NXP_iMX7D_SABRE_Board_QSPI.elf +T174FC 000:352.270 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:352.278 Device entry modified: MCIMX7D7_A7_1 +T174FC 000:352.291 ChipInfo: +T174FC 000:352.298 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\NXP\iMX7D\NXP_iMX7D_Connect_CortexA7_1.JLinkScript +T174FC 000:352.306 FlashBankInfo: +T174FC 000:352.313 Name: QSPI flash +T174FC 000:352.319 BaseAddr: 0x60000000 +T174FC 000:352.343 LoaderInfo: +T174FC 000:352.350 Name: QSPI_flash +T174FC 000:352.357 MaxSize: 0x04000000 +T174FC 000:352.363 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\NXP\iMX7D\NXP_iMX7D_SABRE_Board_QSPI.elf +T174FC 000:352.370 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:352.378 Device entry modified: MCIMX7D7_M4 +T174FC 000:352.382 ChipInfo: +T174FC 000:352.389 WorkRAMAddr: 0x00900000 +T174FC 000:352.396 WorkRAMSize: 0x00020000 +T174FC 000:352.411 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\NXP\iMX7D\NXP_iMX7D_Connect_CortexM4.JLinkScript +T174FC 000:352.429 FlashBankInfo: +T174FC 000:352.435 Name: QSPI flash +T174FC 000:352.442 BaseAddr: 0x60000000 +T174FC 000:352.460 LoaderInfo: +T174FC 000:352.468 Name: QSPI_flash +T174FC 000:352.474 MaxSize: 0x04000000 +T174FC 000:352.481 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\NXP\iMX7D\NXP_iMX7D_SABRE_Board_QSPI.elf +T174FC 000:352.488 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:352.496 Device entry modified: MCIMX7U3_M4 +T174FC 000:352.511 ChipInfo: +T174FC 000:352.519 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\NXP\iMX7ULP\NXP_iMX7ULP_CortexM4.JLinkScript +T174FC 000:352.526 FlashBankInfo: +T174FC 000:352.532 Name: QSPI Flash +T174FC 000:352.539 BaseAddr: 0x04000000 +T174FC 000:352.579 LoaderInfo: +T174FC 000:352.587 Name: QSPI_Flash +T174FC 000:352.593 MaxSize: 0x08000000 +T174FC 000:352.600 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\NXP\iMX7ULP\NXP_iMX7ULP_BB_M4_QSPI.elf +T174FC 000:352.607 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:352.615 Device entry modified: MCIMX7U3_A7 +T174FC 000:352.628 ChipInfo: +T174FC 000:352.636 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\NXP\iMX7ULP\NXP_iMX7ULP_CortexA7.JLinkScript +T174FC 000:352.655 FlashBankInfo: +T174FC 000:352.662 Name: QSPI Flash +T174FC 000:352.669 BaseAddr: 0xC0000000 +T174FC 000:352.695 LoaderInfo: +T174FC 000:352.703 Name: QSPI_Flash +T174FC 000:352.709 MaxSize: 0x10000000 +T174FC 000:352.716 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\NXP\iMX7ULP\NXP_iMX7ULP_BB_A7_QSPI.elf +T174FC 000:352.722 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:352.731 Device entry modified: MCIMX7U5_M4 +T174FC 000:352.745 ChipInfo: +T174FC 000:352.752 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\NXP\iMX7ULP\NXP_iMX7ULP_CortexM4.JLinkScript +T174FC 000:352.759 FlashBankInfo: +T174FC 000:352.765 Name: QSPI Flash +T174FC 000:352.772 BaseAddr: 0x04000000 +T174FC 000:352.791 LoaderInfo: +T174FC 000:352.799 Name: QSPI_Flash +T174FC 000:352.805 MaxSize: 0x08000000 +T174FC 000:352.812 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\NXP\iMX7ULP\NXP_iMX7ULP_BB_M4_QSPI.elf +T174FC 000:352.818 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:352.828 Device entry modified: MCIMX7U5_A7 +T174FC 000:352.840 ChipInfo: +T174FC 000:352.848 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\NXP\iMX7ULP\NXP_iMX7ULP_CortexA7.JLinkScript +T174FC 000:352.855 FlashBankInfo: +T174FC 000:352.861 Name: QSPI Flash +T174FC 000:352.868 BaseAddr: 0xC0000000 +T174FC 000:352.887 LoaderInfo: +T174FC 000:352.895 Name: QSPI_Flash +T174FC 000:352.901 MaxSize: 0x10000000 +T174FC 000:352.908 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\NXP\iMX7ULP\NXP_iMX7ULP_BB_A7_QSPI.elf +T174FC 000:352.914 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:352.924 Device entry modified: MIMXRT1021xxx4A +T174FC 000:352.937 FlashBankInfo: +T174FC 000:352.944 Name: QSPI Flash +T174FC 000:352.951 BaseAddr: 0x60000000 +T174FC 000:352.989 LoaderInfo: +T174FC 000:352.997 Name: QSPI_Flash +T174FC 000:353.004 MaxSize: 0x00800000 +T174FC 000:353.010 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\NXP\iMXRT102x\NXP_iMXRT102x_QSPI.elf +T174FC 000:353.017 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:353.025 Device entry modified: MIMXRT1021xxx4A +T174FC 000:353.032 FlashBankInfo: +T174FC 000:353.038 Name: QSPI Flash +T174FC 000:353.045 BaseAddr: 0x60000000 +T174FC 000:353.065 LoaderInfo: +T174FC 000:353.072 Name: QSPI_Flash +T174FC 000:353.079 MaxSize: 0x00800000 +T174FC 000:353.086 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\NXP\iMXRT102x\NXP_iMXRT102x_QSPI.elf +T174FC 000:353.092 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:353.101 Device entry modified: MIMXRT1021xxx5A +T174FC 000:353.149 FlashBankInfo: +T174FC 000:353.156 Name: QSPI Flash +T174FC 000:353.162 BaseAddr: 0x60000000 +T174FC 000:353.185 LoaderInfo: +T174FC 000:353.193 Name: QSPI_Flash +T174FC 000:353.199 MaxSize: 0x00800000 +T174FC 000:353.206 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\NXP\iMXRT102x\NXP_iMXRT102x_QSPI.elf +T174FC 000:353.212 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:353.221 Device entry modified: MIMXRT1021xxx5A +T174FC 000:353.227 FlashBankInfo: +T174FC 000:353.234 Name: QSPI Flash +T174FC 000:353.241 BaseAddr: 0x60000000 +T174FC 000:353.260 LoaderInfo: +T174FC 000:353.267 Name: QSPI_Flash +T174FC 000:353.274 MaxSize: 0x00800000 +T174FC 000:353.280 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\NXP\iMXRT102x\NXP_iMXRT102x_QSPI.elf +T174FC 000:353.287 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:353.296 Device entry modified: MIMXRT1051xxxxA +T174FC 000:353.301 ChipInfo: +T174FC 000:353.308 WorkRAMSize: 0x00080000 +T174FC 000:353.316 FlashBankInfo: +T174FC 000:353.322 Name: HyperFlash +T174FC 000:353.329 BaseAddr: 0x60000000 +T174FC 000:353.369 LoaderInfo: +T174FC 000:353.377 Name: HyperFlash +T174FC 000:353.384 MaxSize: 0x04000000 +T174FC 000:353.391 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\NXP\iMXRT105x\NXP_iMXRT105x_HyperFlash.elf +T174FC 000:353.397 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:353.405 Device entry modified: MIMXRT1051xxxxA +T174FC 000:353.412 FlashBankInfo: +T174FC 000:353.418 Name: HyperFlash +T174FC 000:353.425 BaseAddr: 0x60000000 +T174FC 000:353.445 LoaderInfo: +T174FC 000:353.453 Name: HyperFlash +T174FC 000:353.459 MaxSize: 0x04000000 +T174FC 000:353.466 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\NXP\iMXRT105x\NXP_iMXRT105x_HyperFlash.elf +T174FC 000:353.473 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:353.481 Device entry modified: MIMXRT1051xxxxB +T174FC 000:353.486 ChipInfo: +T174FC 000:353.493 WorkRAMSize: 0x00080000 +T174FC 000:353.501 FlashBankInfo: +T174FC 000:353.508 Name: HyperFlash +T174FC 000:353.514 BaseAddr: 0x60000000 +T174FC 000:353.534 LoaderInfo: +T174FC 000:353.542 Name: HyperFlash +T174FC 000:353.548 MaxSize: 0x04000000 +T174FC 000:353.555 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\NXP\iMXRT105x\NXP_iMXRT105x_HyperFlash.elf +T174FC 000:353.562 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:353.570 Device entry modified: MIMXRT1052xxxxA +T174FC 000:353.575 ChipInfo: +T174FC 000:353.582 WorkRAMSize: 0x00080000 +T174FC 000:353.590 FlashBankInfo: +T174FC 000:353.596 Name: HyperFlash +T174FC 000:353.603 BaseAddr: 0x60000000 +T174FC 000:353.622 LoaderInfo: +T174FC 000:353.630 Name: HyperFlash +T174FC 000:353.636 MaxSize: 0x04000000 +T174FC 000:353.643 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\NXP\iMXRT105x\NXP_iMXRT105x_HyperFlash.elf +T174FC 000:353.649 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:353.658 Device entry modified: MIMXRT1052xxxxA +T174FC 000:353.664 FlashBankInfo: +T174FC 000:353.671 Name: HyperFlash +T174FC 000:353.678 BaseAddr: 0x60000000 +T174FC 000:353.697 LoaderInfo: +T174FC 000:353.704 Name: HyperFlash +T174FC 000:353.710 MaxSize: 0x04000000 +T174FC 000:353.717 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\NXP\iMXRT105x\NXP_iMXRT105x_HyperFlash.elf +T174FC 000:353.726 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:353.734 Device entry modified: MIMXRT1052xxxxB +T174FC 000:353.739 ChipInfo: +T174FC 000:353.746 WorkRAMSize: 0x00080000 +T174FC 000:353.754 FlashBankInfo: +T174FC 000:353.760 Name: HyperFlash +T174FC 000:353.767 BaseAddr: 0x60000000 +T174FC 000:353.787 LoaderInfo: +T174FC 000:353.794 Name: HyperFlash +T174FC 000:353.801 MaxSize: 0x04000000 +T174FC 000:353.807 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\NXP\iMXRT105x\NXP_iMXRT105x_HyperFlash.elf +T174FC 000:353.814 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:353.822 Device entry modified: LPC51U68 +T174FC 000:353.842 ChipInfo: +T174FC 000:353.850 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\NXP\LPC51U68\NXP_LPC51U68.pex +T174FC 000:353.859 Device entry modified: LPC54005 +T174FC 000:353.873 ChipInfo: +T174FC 000:353.880 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\NXP\LPC540xx\NXP_LPC540xx.pex +T174FC 000:353.888 Device entry modified: LPC54016 +T174FC 000:353.901 ChipInfo: +T174FC 000:353.908 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\NXP\LPC540xx\NXP_LPC540xx.pex +T174FC 000:353.916 Device entry modified: LPC54018 +T174FC 000:353.928 ChipInfo: +T174FC 000:353.936 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\NXP\LPC540xx\NXP_LPC540xx.pex +T174FC 000:353.944 Device entry modified: LPC54S005 +T174FC 000:353.957 ChipInfo: +T174FC 000:353.965 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\NXP\LPC540xx\NXP_LPC540xx.pex +T174FC 000:353.972 Device entry modified: LPC54S016 +T174FC 000:353.985 ChipInfo: +T174FC 000:353.992 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\NXP\LPC540xx\NXP_LPC540xx.pex +T174FC 000:354.000 Device entry modified: LPC54S018 +T174FC 000:354.012 ChipInfo: +T174FC 000:354.019 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\NXP\LPC540xx\NXP_LPC540xx.pex +T174FC 000:354.028 Device entry modified: LPC54101J256_M0 +T174FC 000:354.040 ChipInfo: +T174FC 000:354.047 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\NXP\LPC5411x\LPC5411x_M0.JLinkScript +T174FC 000:354.056 Device entry modified: LPC54101J512_M0 +T174FC 000:354.067 ChipInfo: +T174FC 000:354.074 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\NXP\LPC5411x\LPC5411x_M0.JLinkScript +T174FC 000:354.083 Device entry modified: LPC54102J256_M0 +T174FC 000:354.094 ChipInfo: +T174FC 000:354.101 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\NXP\LPC5411x\LPC5411x_M0.JLinkScript +T174FC 000:354.110 Device entry modified: LPC54102J512_M0 +T174FC 000:354.121 ChipInfo: +T174FC 000:354.128 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\NXP\LPC5411x\LPC5411x_M0.JLinkScript +T174FC 000:354.137 Device entry modified: LPC54111J128_M0 +T174FC 000:354.148 ChipInfo: +T174FC 000:354.156 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\NXP\LPC5411x\LPC5411x_M0.JLinkScript +T174FC 000:354.164 Device entry modified: LPC54111J256_M0 +T174FC 000:354.176 ChipInfo: +T174FC 000:354.183 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\NXP\LPC5411x\LPC5411x_M0.JLinkScript +T174FC 000:354.191 Device entry modified: LPC54112J256_M0 +T174FC 000:354.203 ChipInfo: +T174FC 000:354.210 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\NXP\LPC5411x\LPC5411x_M0.JLinkScript +T174FC 000:354.219 Device entry modified: LPC54113J128_M0 +T174FC 000:354.230 ChipInfo: +T174FC 000:354.237 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\NXP\LPC5411x\LPC5411x_M0.JLinkScript +T174FC 000:354.247 Device entry modified: LPC54113J256_M0 +T174FC 000:354.259 ChipInfo: +T174FC 000:354.266 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\NXP\LPC5411x\LPC5411x_M0.JLinkScript +T174FC 000:354.275 Device entry modified: LPC54114J256_M0 +T174FC 000:354.290 ChipInfo: +T174FC 000:354.297 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\NXP\LPC5411x\LPC5411x_M0.JLinkScript +T174FC 000:354.305 Device entry modified: R9A06G032 +T174FC 000:354.318 ChipInfo: +T174FC 000:354.326 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\Renesas\RZN1\Renesas_RZN1_Cortex-A7_CPU0.pex +T174FC 000:354.336 Device entry modified: R9A06G032_A7CPU0 +T174FC 000:354.348 ChipInfo: +T174FC 000:354.355 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\Renesas\RZN1\Renesas_RZN1_Cortex-A7_CPU0.pex +T174FC 000:354.363 Device entry modified: R9A06G032_A7CPU1 +T174FC 000:354.376 ChipInfo: +T174FC 000:354.390 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\Renesas\RZN1\Renesas_RZN1_Cortex-A7_CPU1.pex +T174FC 000:354.398 Device entry modified: R9A06G032_M3 +T174FC 000:354.410 ChipInfo: +T174FC 000:354.417 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\Renesas\RZN1\Renesas_RZN1_Cortex-M3.pex +T174FC 000:354.425 Device entry modified: R9A06G033 +T174FC 000:354.437 ChipInfo: +T174FC 000:354.444 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\Renesas\RZN1\Renesas_RZN1_Cortex-A7_CPU0.pex +T174FC 000:354.452 Device entry modified: R9A06G033_A7 +T174FC 000:354.464 ChipInfo: +T174FC 000:354.471 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\Renesas\RZN1\Renesas_RZN1_Cortex-A7_CPU0.pex +T174FC 000:354.479 Device entry modified: R9A06G033_M3 +T174FC 000:354.491 ChipInfo: +T174FC 000:354.498 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\Renesas\RZN1\Renesas_RZN1_Cortex-M3.pex +T174FC 000:354.506 Device entry modified: R9A06G034 +T174FC 000:354.517 ChipInfo: +T174FC 000:354.524 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\Renesas\RZN1\Renesas_RZN1_Cortex-M3.pex +T174FC 000:354.533 Device entry modified: R7S921040VCBG +T174FC 000:354.546 FlashBankInfo: +T174FC 000:354.553 Name: HyperFlash +T174FC 000:354.560 BaseAddr: 0x30000000 +T174FC 000:354.604 LoaderInfo: +T174FC 000:354.612 Name: HyperFlash +T174FC 000:354.619 MaxSize: 0x04000000 +T174FC 000:354.626 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\Renesas\RZ_A2M\Renesas_RZ_A2M_HyperFlash.elf +T174FC 000:354.632 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:354.641 Device entry modified: R7S921041VCBG +T174FC 000:354.646 FlashBankInfo: +T174FC 000:354.653 Name: HyperFlash +T174FC 000:354.660 BaseAddr: 0x30000000 +T174FC 000:354.680 LoaderInfo: +T174FC 000:354.688 Name: HyperFlash +T174FC 000:354.694 MaxSize: 0x04000000 +T174FC 000:354.701 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\Renesas\RZ_A2M\Renesas_RZ_A2M_HyperFlash.elf +T174FC 000:354.708 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:354.716 Device entry modified: R7S921042VCBG +T174FC 000:354.722 FlashBankInfo: +T174FC 000:354.728 Name: HyperFlash +T174FC 000:354.735 BaseAddr: 0x30000000 +T174FC 000:354.754 LoaderInfo: +T174FC 000:354.762 Name: HyperFlash +T174FC 000:354.768 MaxSize: 0x04000000 +T174FC 000:354.775 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\Renesas\RZ_A2M\Renesas_RZ_A2M_HyperFlash.elf +T174FC 000:354.782 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:354.790 Device entry modified: R7S921043VCBG +T174FC 000:354.797 FlashBankInfo: +T174FC 000:354.808 Name: HyperFlash +T174FC 000:354.815 BaseAddr: 0x30000000 +T174FC 000:354.835 LoaderInfo: +T174FC 000:354.842 Name: HyperFlash +T174FC 000:354.849 MaxSize: 0x04000000 +T174FC 000:354.868 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\Renesas\RZ_A2M\Renesas_RZ_A2M_HyperFlash.elf +T174FC 000:354.874 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:354.884 Device entry modified: R7S921051VCBG +T174FC 000:354.889 FlashBankInfo: +T174FC 000:354.896 Name: HyperFlash +T174FC 000:354.903 BaseAddr: 0x30000000 +T174FC 000:354.922 LoaderInfo: +T174FC 000:354.929 Name: HyperFlash +T174FC 000:354.936 MaxSize: 0x04000000 +T174FC 000:354.942 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\Renesas\RZ_A2M\Renesas_RZ_A2M_HyperFlash.elf +T174FC 000:354.949 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:354.957 Device entry modified: R7S921052VCBG +T174FC 000:354.962 FlashBankInfo: +T174FC 000:354.969 Name: HyperFlash +T174FC 000:354.975 BaseAddr: 0x30000000 +T174FC 000:354.994 LoaderInfo: +T174FC 000:355.002 Name: HyperFlash +T174FC 000:355.008 MaxSize: 0x04000000 +T174FC 000:355.015 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\Renesas\RZ_A2M\Renesas_RZ_A2M_HyperFlash.elf +T174FC 000:355.021 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:355.029 Device entry modified: R7S921053VCBG +T174FC 000:355.035 FlashBankInfo: +T174FC 000:355.042 Name: HyperFlash +T174FC 000:355.049 BaseAddr: 0x30000000 +T174FC 000:355.067 LoaderInfo: +T174FC 000:355.075 Name: HyperFlash +T174FC 000:355.081 MaxSize: 0x04000000 +T174FC 000:355.088 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\Renesas\RZ_A2M\Renesas_RZ_A2M_HyperFlash.elf +T174FC 000:355.094 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:355.103 Device entry modified: CC3200 +T174FC 000:355.122 ChipInfo: +T174FC 000:355.130 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\TI\TI_CC3200.JLinkScript +T174FC 000:355.139 Device entry modified: CC3220R +T174FC 000:355.157 ChipInfo: +T174FC 000:355.164 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\TI\TI_CC3200.JLinkScript +T174FC 000:355.171 WorkRAMSize: 0x00010000 +T174FC 000:355.179 Device entry modified: CC3220S +T174FC 000:355.192 ChipInfo: +T174FC 000:355.199 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\TI\TI_CC3200.JLinkScript +T174FC 000:355.206 WorkRAMSize: 0x00010000 +T174FC 000:355.214 Device entry modified: CC3220SF +T174FC 000:355.227 ChipInfo: +T174FC 000:355.234 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\TI\TI_CC3200.JLinkScript +T174FC 000:355.241 WorkRAMSize: 0x00010000 +T174FC 000:355.248 Device entry modified: DM3730 +T174FC 000:355.260 ChipInfo: +T174FC 000:355.267 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\TI\DM3730\TI_DM3730.pex +T174FC 000:355.275 Device entry modified: TLE9842 +T174FC 000:355.286 FlashBankInfo: +T174FC 000:355.293 Name: NACNAD +T174FC 000:355.300 BaseAddr: 0x10FFFFFC +T174FC 000:355.344 AlwaysPresent: 1 +T174FC 000:355.352 LoaderInfo: +T174FC 000:355.358 Name: NACNAD +T174FC 000:355.365 MaxSize: 0x00000004 +T174FC 000:355.372 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\Infineon\TLE984x\TLE984x_OPT.FLM +T174FC 000:355.378 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:355.385 FlashBankInfo: +T174FC 000:355.392 Name: Code Flash +T174FC 000:355.400 BaseAddr: 0x11000000 +T174FC 000:355.429 AlwaysPresent: 1 +T174FC 000:355.437 LoaderInfo: +T174FC 000:355.443 Name: Code_Flash +T174FC 000:355.450 MaxSize: 0x00008000 +T174FC 000:355.456 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\Infineon\TLE984x\TLE9842.FLM +T174FC 000:355.463 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:355.470 FlashBankInfo: +T174FC 000:355.476 Name: Data Flash +T174FC 000:355.483 BaseAddr: 0x11008000 +T174FC 000:355.510 AlwaysPresent: 1 +T174FC 000:355.518 LoaderInfo: +T174FC 000:355.524 Name: Data_Flash +T174FC 000:355.532 MaxSize: 0x00001000 +T174FC 000:355.538 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\Infineon\TLE984x\TLE9842_EEP.FLM +T174FC 000:355.545 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:355.556 Device entry modified: TLE9842-2 +T174FC 000:355.561 FlashBankInfo: +T174FC 000:355.568 Name: NACNAD +T174FC 000:355.575 BaseAddr: 0x10FFFFFC +T174FC 000:355.595 AlwaysPresent: 1 +T174FC 000:355.602 LoaderInfo: +T174FC 000:355.609 Name: NACNAD +T174FC 000:355.615 MaxSize: 0x00000004 +T174FC 000:355.622 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\Infineon\TLE984x\TLE984x_OPT.FLM +T174FC 000:355.628 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:355.635 FlashBankInfo: +T174FC 000:355.642 Name: Code Flash +T174FC 000:355.648 BaseAddr: 0x11000000 +T174FC 000:355.675 AlwaysPresent: 1 +T174FC 000:355.683 LoaderInfo: +T174FC 000:355.689 Name: Code_Flash +T174FC 000:355.696 MaxSize: 0x00009000 +T174FC 000:355.702 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\Infineon\TLE984x\TLE9842_2.FLM +T174FC 000:355.709 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:355.716 FlashBankInfo: +T174FC 000:355.722 Name: Data Flash +T174FC 000:355.729 BaseAddr: 0x11009000 +T174FC 000:355.756 AlwaysPresent: 1 +T174FC 000:355.763 LoaderInfo: +T174FC 000:355.770 Name: Data_Flash +T174FC 000:355.776 MaxSize: 0x00001000 +T174FC 000:355.783 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\Infineon\TLE984x\TLE9842_2_EEP.FLM +T174FC 000:355.790 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:355.798 Device entry modified: TLE9843 +T174FC 000:355.804 FlashBankInfo: +T174FC 000:355.810 Name: NACNAD +T174FC 000:355.817 BaseAddr: 0x10FFFFFC +T174FC 000:355.836 AlwaysPresent: 1 +T174FC 000:355.844 LoaderInfo: +T174FC 000:355.850 Name: NACNAD +T174FC 000:355.857 MaxSize: 0x00000004 +T174FC 000:355.865 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\Infineon\TLE984x\TLE984x_OPT.FLM +T174FC 000:355.871 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:355.878 FlashBankInfo: +T174FC 000:355.885 Name: Code Flash +T174FC 000:355.891 BaseAddr: 0x11000000 +T174FC 000:355.917 AlwaysPresent: 1 +T174FC 000:355.927 LoaderInfo: +T174FC 000:355.934 Name: Code_Flash +T174FC 000:355.941 MaxSize: 0x0000B000 +T174FC 000:355.947 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\Infineon\TLE984x\TLE9843.FLM +T174FC 000:355.955 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:355.962 FlashBankInfo: +T174FC 000:355.969 Name: Data Flash +T174FC 000:355.977 BaseAddr: 0x1100B000 +T174FC 000:356.003 AlwaysPresent: 1 +T174FC 000:356.011 LoaderInfo: +T174FC 000:356.020 Name: Data_Flash +T174FC 000:356.027 MaxSize: 0x00001000 +T174FC 000:356.033 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\Infineon\TLE984x\TLE9843_EEP.FLM +T174FC 000:356.040 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:356.048 Device entry modified: TLE9843-2 +T174FC 000:356.054 FlashBankInfo: +T174FC 000:356.061 Name: NACNAD +T174FC 000:356.067 BaseAddr: 0x10FFFFFC +T174FC 000:356.087 AlwaysPresent: 1 +T174FC 000:356.094 LoaderInfo: +T174FC 000:356.102 Name: NACNAD +T174FC 000:356.109 MaxSize: 0x00000004 +T174FC 000:356.115 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\Infineon\TLE984x\TLE984x_OPT.FLM +T174FC 000:356.122 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:356.129 FlashBankInfo: +T174FC 000:356.136 Name: Code Flash +T174FC 000:356.144 BaseAddr: 0x11000000 +T174FC 000:356.170 AlwaysPresent: 1 +T174FC 000:356.177 LoaderInfo: +T174FC 000:356.184 Name: Code_Flash +T174FC 000:356.191 MaxSize: 0x0000C000 +T174FC 000:356.197 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\Infineon\TLE984x\TLE9843_2.FLM +T174FC 000:356.204 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:356.210 FlashBankInfo: +T174FC 000:356.217 Name: Data Flash +T174FC 000:356.224 BaseAddr: 0x1100C000 +T174FC 000:356.249 AlwaysPresent: 1 +T174FC 000:356.257 LoaderInfo: +T174FC 000:356.263 Name: Data_Flash +T174FC 000:356.270 MaxSize: 0x00001000 +T174FC 000:356.276 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\Infineon\TLE984x\TLE9843_2_EEP.FLM +T174FC 000:356.283 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:356.291 Device entry modified: TLE9844 +T174FC 000:356.297 FlashBankInfo: +T174FC 000:356.304 Name: NACNAD +T174FC 000:356.310 BaseAddr: 0x10FFFFFC +T174FC 000:356.330 AlwaysPresent: 1 +T174FC 000:356.337 LoaderInfo: +T174FC 000:356.343 Name: NACNAD +T174FC 000:356.350 MaxSize: 0x00000004 +T174FC 000:356.357 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\Infineon\TLE984x\TLE984x_OPT.FLM +T174FC 000:356.363 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:356.371 FlashBankInfo: +T174FC 000:356.378 Name: Code Flash +T174FC 000:356.384 BaseAddr: 0x11000000 +T174FC 000:356.410 AlwaysPresent: 1 +T174FC 000:356.418 LoaderInfo: +T174FC 000:356.424 Name: Code_Flash +T174FC 000:356.431 MaxSize: 0x0000F000 +T174FC 000:356.437 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\Infineon\TLE984x\TLE9844.FLM +T174FC 000:356.444 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:356.451 FlashBankInfo: +T174FC 000:356.457 Name: Data Flash +T174FC 000:356.464 BaseAddr: 0x1100F000 +T174FC 000:356.494 AlwaysPresent: 1 +T174FC 000:356.501 LoaderInfo: +T174FC 000:356.508 Name: Data_Flash +T174FC 000:356.514 MaxSize: 0x00001000 +T174FC 000:356.521 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\Infineon\TLE984x\TLE9844_EEP.FLM +T174FC 000:356.527 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:356.536 Device entry modified: TLE9844 +T174FC 000:356.541 FlashBankInfo: +T174FC 000:356.548 Name: NACNAD +T174FC 000:356.554 BaseAddr: 0x10FFFFFC +T174FC 000:356.574 AlwaysPresent: 1 +T174FC 000:356.581 LoaderInfo: +T174FC 000:356.588 Name: NACNAD +T174FC 000:356.594 MaxSize: 0x00000004 +T174FC 000:356.603 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\Infineon\TLE984x\TLE984x_OPT.FLM +T174FC 000:356.609 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:356.616 FlashBankInfo: +T174FC 000:356.623 Name: Code Flash +T174FC 000:356.629 BaseAddr: 0x11000000 +T174FC 000:356.657 AlwaysPresent: 1 +T174FC 000:356.665 LoaderInfo: +T174FC 000:356.672 Name: Code_Flash +T174FC 000:356.678 MaxSize: 0x0000F000 +T174FC 000:356.685 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\Infineon\TLE984x\TLE9844_2.FLM +T174FC 000:356.691 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:356.698 FlashBankInfo: +T174FC 000:356.706 Name: Data Flash +T174FC 000:356.725 BaseAddr: 0x1100F000 +T174FC 000:356.753 AlwaysPresent: 1 +T174FC 000:356.761 LoaderInfo: +T174FC 000:356.768 Name: Data_Flash +T174FC 000:356.774 MaxSize: 0x00001000 +T174FC 000:356.781 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\Infineon\TLE984x\TLE9844_2_EEP.FLM +T174FC 000:356.799 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:356.807 Device entry modified: TLE9845 +T174FC 000:356.813 FlashBankInfo: +T174FC 000:356.820 Name: NACNAD +T174FC 000:356.826 BaseAddr: 0x10FFFFFC +T174FC 000:356.846 AlwaysPresent: 1 +T174FC 000:356.853 LoaderInfo: +T174FC 000:356.859 Name: NACNAD +T174FC 000:356.866 MaxSize: 0x00000004 +T174FC 000:356.873 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\Infineon\TLE984x\TLE984x_OPT.FLM +T174FC 000:356.879 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:356.886 FlashBankInfo: +T174FC 000:356.893 Name: Code Flash +T174FC 000:356.899 BaseAddr: 0x11000000 +T174FC 000:356.927 AlwaysPresent: 1 +T174FC 000:356.935 LoaderInfo: +T174FC 000:356.941 Name: Code_Flash +T174FC 000:356.948 MaxSize: 0x0000B000 +T174FC 000:356.954 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\Infineon\TLE984x\TLE9845.FLM +T174FC 000:356.961 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:356.968 FlashBankInfo: +T174FC 000:356.974 Name: Data Flash +T174FC 000:356.981 BaseAddr: 0x1100B000 +T174FC 000:357.008 AlwaysPresent: 1 +T174FC 000:357.016 LoaderInfo: +T174FC 000:357.022 Name: Data_Flash +T174FC 000:357.029 MaxSize: 0x00001000 +T174FC 000:357.035 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\Infineon\TLE984x\TLE9845_EEP.FLM +T174FC 000:357.042 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:357.052 Device entry modified: TLE9861 +T174FC 000:357.057 ChipInfo: +T174FC 000:357.063 WorkRAMAddr: 0x18000000 +T174FC 000:357.070 WorkRAMSize: 0x00000C00 +T174FC 000:357.078 Core: JLINK_CORE_CORTEX_M3_R2P0 +T174FC 000:357.084 FlashBankInfo: +T174FC 000:357.091 Name: Int. Flash +T174FC 000:357.097 BaseAddr: 0x11000000 +T174FC 000:357.139 AlwaysPresent: 1 +T174FC 000:357.152 LoaderInfo: +T174FC 000:357.161 Name: Int._Flash +T174FC 000:357.168 MaxSize: 0x00008000 +T174FC 000:357.174 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\Infineon\TLE986x\TLE9861.FLM +T174FC 000:357.181 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:357.190 Device entry created: TLE9863QXW20 +T174FC 000:357.195 ChipInfo: +T174FC 000:357.202 Vendor: Infineon +T174FC 000:357.210 Name: TLE9863QXW20 +T174FC 000:357.216 WorkRAMAddr: 0x18000000 +T174FC 000:357.225 WorkRAMSize: 0x00000C00 +T174FC 000:357.232 Core: JLINK_CORE_CORTEX_M3_R2P0 +T174FC 000:357.239 FlashBankInfo: +T174FC 000:357.246 Name: Int. Flash +T174FC 000:357.253 BaseAddr: 0x11000000 +T174FC 000:357.282 AlwaysPresent: 1 +T174FC 000:357.290 LoaderInfo: +T174FC 000:357.296 Name: Int._Flash +T174FC 000:357.303 MaxSize: 0x0000B000 +T174FC 000:357.310 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\Infineon\TLE986x\TLE9863.FLM +T174FC 000:357.317 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:357.346 Device entry modified: TLE9867 +T174FC 000:357.355 ChipInfo: +T174FC 000:357.361 WorkRAMAddr: 0x18000000 +T174FC 000:357.368 WorkRAMSize: 0x00001800 +T174FC 000:357.376 FlashBankInfo: +T174FC 000:357.382 Name: Int. Flash +T174FC 000:357.389 BaseAddr: 0x11000000 +T174FC 000:357.420 AlwaysPresent: 1 +T174FC 000:357.429 LoaderInfo: +T174FC 000:357.435 Name: Int._Flash +T174FC 000:357.442 MaxSize: 0x0000F000 +T174FC 000:357.448 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\Infineon\TLE986x\TLE9867.FLM +T174FC 000:357.455 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:357.463 Device entry modified: TLE9867 +T174FC 000:357.468 FlashBankInfo: +T174FC 000:357.475 Name: Int. Flash +T174FC 000:357.481 BaseAddr: 0x11000000 +T174FC 000:357.501 AlwaysPresent: 1 +T174FC 000:357.508 LoaderInfo: +T174FC 000:357.515 Name: Int._Flash +T174FC 000:357.522 MaxSize: 0x0000F000 +T174FC 000:357.528 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\Infineon\TLE986x\TLE9867.FLM +T174FC 000:357.535 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:357.543 Device entry modified: TLE9867 +T174FC 000:357.548 FlashBankInfo: +T174FC 000:357.566 Name: Int. Flash +T174FC 000:357.573 BaseAddr: 0x11000000 +T174FC 000:357.592 AlwaysPresent: 1 +T174FC 000:357.606 LoaderInfo: +T174FC 000:357.613 Name: Int._Flash +T174FC 000:357.621 MaxSize: 0x0000F000 +T174FC 000:357.627 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\Infineon\TLE986x\TLE9867.FLM +T174FC 000:357.634 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:357.642 Device entry modified: TLE9868 +T174FC 000:357.647 ChipInfo: +T174FC 000:357.653 WorkRAMAddr: 0x18000000 +T174FC 000:357.660 WorkRAMSize: 0x00001000 +T174FC 000:357.667 FlashBankInfo: +T174FC 000:357.673 Name: Int. Flash +T174FC 000:357.680 BaseAddr: 0x11000000 +T174FC 000:357.707 AlwaysPresent: 1 +T174FC 000:357.715 LoaderInfo: +T174FC 000:357.721 Name: Int._Flash +T174FC 000:357.728 MaxSize: 0x0001F000 +T174FC 000:357.735 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\Infineon\TLE986x\TLE9869.FLM +T174FC 000:357.741 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:357.750 Device entry modified: TLE9869 +T174FC 000:357.755 ChipInfo: +T174FC 000:357.761 WorkRAMAddr: 0x18000000 +T174FC 000:357.769 WorkRAMSize: 0x00001800 +T174FC 000:357.776 FlashBankInfo: +T174FC 000:357.783 Name: Int. Flash +T174FC 000:357.789 BaseAddr: 0x11000000 +T174FC 000:357.809 AlwaysPresent: 1 +T174FC 000:357.816 LoaderInfo: +T174FC 000:357.823 Name: Int._Flash +T174FC 000:357.830 MaxSize: 0x0001F000 +T174FC 000:357.836 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\Infineon\TLE986x\TLE9869.FLM +T174FC 000:357.844 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:357.921 Device entry modified: TLE9869 +T174FC 000:357.927 FlashBankInfo: +T174FC 000:357.934 Name: Int. Flash +T174FC 000:357.940 BaseAddr: 0x11000000 +T174FC 000:357.962 AlwaysPresent: 1 +T174FC 000:357.970 LoaderInfo: +T174FC 000:357.977 Name: Int._Flash +T174FC 000:357.983 MaxSize: 0x0001F000 +T174FC 000:357.994 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\Infineon\TLE986x\TLE9869.FLM +T174FC 000:358.003 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:358.012 Device entry modified: TLE9871 +T174FC 000:358.017 ChipInfo: +T174FC 000:358.023 WorkRAMAddr: 0x18000000 +T174FC 000:358.030 WorkRAMSize: 0x00000C00 +T174FC 000:358.037 Core: JLINK_CORE_CORTEX_M3_R2P0 +T174FC 000:358.044 FlashBankInfo: +T174FC 000:358.050 Name: Int. Flash +T174FC 000:358.057 BaseAddr: 0x11000000 +T174FC 000:358.099 AlwaysPresent: 1 +T174FC 000:358.107 LoaderInfo: +T174FC 000:358.113 Name: Int._Flash +T174FC 000:358.120 MaxSize: 0x00008000 +T174FC 000:358.126 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\Infineon\TLE987x\TLE9871.FLM +T174FC 000:358.133 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:358.141 Device entry modified: TLE9873 +T174FC 000:358.146 ChipInfo: +T174FC 000:358.153 WorkRAMAddr: 0x18000000 +T174FC 000:358.159 WorkRAMSize: 0x00000C00 +T174FC 000:358.166 FlashBankInfo: +T174FC 000:358.173 Name: Int. Flash +T174FC 000:358.179 BaseAddr: 0x11000000 +T174FC 000:358.206 AlwaysPresent: 1 +T174FC 000:358.214 LoaderInfo: +T174FC 000:358.220 Name: Int._Flash +T174FC 000:358.227 MaxSize: 0x0000B000 +T174FC 000:358.233 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\Infineon\TLE987x\TLE9873.FLM +T174FC 000:358.240 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:358.248 Device entry modified: TLE9873 +T174FC 000:358.254 FlashBankInfo: +T174FC 000:358.260 Name: Int. Flash +T174FC 000:358.267 BaseAddr: 0x11000000 +T174FC 000:358.286 AlwaysPresent: 1 +T174FC 000:358.294 LoaderInfo: +T174FC 000:358.300 Name: Int._Flash +T174FC 000:358.306 MaxSize: 0x0000B000 +T174FC 000:358.313 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\Infineon\TLE987x\TLE9873.FLM +T174FC 000:358.320 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:358.329 Device entry modified: TLE9877 +T174FC 000:358.333 ChipInfo: +T174FC 000:358.340 WorkRAMAddr: 0x18000000 +T174FC 000:358.348 WorkRAMSize: 0x00001800 +T174FC 000:358.355 FlashBankInfo: +T174FC 000:358.361 Name: Int. Flash +T174FC 000:358.368 BaseAddr: 0x11000000 +T174FC 000:358.394 AlwaysPresent: 1 +T174FC 000:358.402 LoaderInfo: +T174FC 000:358.408 Name: Int._Flash +T174FC 000:358.414 MaxSize: 0x0000F000 +T174FC 000:358.421 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\Infineon\TLE987x\TLE9877.FLM +T174FC 000:358.427 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:358.435 Device entry modified: TLE9877 +T174FC 000:358.441 FlashBankInfo: +T174FC 000:358.447 Name: Int. Flash +T174FC 000:358.454 BaseAddr: 0x11000000 +T174FC 000:358.473 AlwaysPresent: 1 +T174FC 000:358.480 LoaderInfo: +T174FC 000:358.487 Name: Int._Flash +T174FC 000:358.493 MaxSize: 0x0000F000 +T174FC 000:358.500 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\Infineon\TLE987x\TLE9877.FLM +T174FC 000:358.506 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:358.517 Device entry modified: TLE9877 +T174FC 000:358.522 FlashBankInfo: +T174FC 000:358.529 Name: Int. Flash +T174FC 000:358.536 BaseAddr: 0x11000000 +T174FC 000:358.555 AlwaysPresent: 1 +T174FC 000:358.562 LoaderInfo: +T174FC 000:358.569 Name: Int._Flash +T174FC 000:358.575 MaxSize: 0x0000F000 +T174FC 000:358.582 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\Infineon\TLE987x\TLE9877.FLM +T174FC 000:358.588 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:358.596 Device entry modified: TLE9877 +T174FC 000:358.602 FlashBankInfo: +T174FC 000:358.608 Name: Int. Flash +T174FC 000:358.615 BaseAddr: 0x11000000 +T174FC 000:358.633 AlwaysPresent: 1 +T174FC 000:358.640 LoaderInfo: +T174FC 000:358.647 Name: Int._Flash +T174FC 000:358.653 MaxSize: 0x0000F000 +T174FC 000:358.660 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\Infineon\TLE987x\TLE9877.FLM +T174FC 000:358.666 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:358.675 Device entry modified: TLE9879 +T174FC 000:358.680 ChipInfo: +T174FC 000:358.686 WorkRAMAddr: 0x18000000 +T174FC 000:358.693 WorkRAMSize: 0x00001800 +T174FC 000:358.700 FlashBankInfo: +T174FC 000:358.706 Name: Int. Flash +T174FC 000:358.713 BaseAddr: 0x11000000 +T174FC 000:358.739 AlwaysPresent: 1 +T174FC 000:358.746 LoaderInfo: +T174FC 000:358.754 Name: Int._Flash +T174FC 000:358.761 MaxSize: 0x0001F000 +T174FC 000:358.767 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\Infineon\TLE987x\TLE9879.FLM +T174FC 000:358.774 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:358.782 Device entry modified: TLE9879 +T174FC 000:358.787 FlashBankInfo: +T174FC 000:358.793 Name: Int. Flash +T174FC 000:358.800 BaseAddr: 0x11000000 +T174FC 000:358.820 AlwaysPresent: 1 +T174FC 000:358.827 LoaderInfo: +T174FC 000:358.834 Name: Int._Flash +T174FC 000:358.840 MaxSize: 0x0001F000 +T174FC 000:358.847 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\Infineon\TLE987x\TLE9879.FLM +T174FC 000:358.853 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:358.861 Device entry modified: TLE9879 +T174FC 000:358.867 FlashBankInfo: +T174FC 000:358.873 Name: Int. Flash +T174FC 000:358.880 BaseAddr: 0x11000000 +T174FC 000:358.898 AlwaysPresent: 1 +T174FC 000:358.906 LoaderInfo: +T174FC 000:358.912 Name: Int._Flash +T174FC 000:358.919 MaxSize: 0x0001F000 +T174FC 000:358.925 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\Infineon\TLE987x\TLE9879.FLM +T174FC 000:358.932 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:358.940 Device entry modified: TLE9879 +T174FC 000:358.945 FlashBankInfo: +T174FC 000:358.952 Name: Int. Flash +T174FC 000:358.958 BaseAddr: 0x11000000 +T174FC 000:358.977 AlwaysPresent: 1 +T174FC 000:358.984 LoaderInfo: +T174FC 000:358.991 Name: Int._Flash +T174FC 000:358.997 MaxSize: 0x0001F000 +T174FC 000:359.004 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\Infineon\TLE987x\TLE9879.FLM +T174FC 000:359.010 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:359.018 Device entry modified: TLE9879 +T174FC 000:359.023 FlashBankInfo: +T174FC 000:359.030 Name: Int. Flash +T174FC 000:359.036 BaseAddr: 0x11000000 +T174FC 000:359.055 AlwaysPresent: 1 +T174FC 000:359.062 LoaderInfo: +T174FC 000:359.068 Name: Int._Flash +T174FC 000:359.078 MaxSize: 0x0001F000 +T174FC 000:359.084 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\Infineon\TLE987x\TLE9879.FLM +T174FC 000:359.091 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:359.099 Device entry modified: TLE9851QXW +T174FC 000:359.112 ChipInfo: +T174FC 000:359.120 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\Infineon\TLE985x\Infineon_TLExxx.pex +T174FC 000:359.127 FlashBankInfo: +T174FC 000:359.133 Name: NACNAD +T174FC 000:359.140 BaseAddr: 0x10FFFFFC +T174FC 000:359.178 AlwaysPresent: 1 +T174FC 000:359.186 LoaderInfo: +T174FC 000:359.193 Name: NACNAD +T174FC 000:359.199 MaxSize: 0x00000004 +T174FC 000:359.206 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\Infineon\TLE985x\TLE985x_OPT.FLM +T174FC 000:359.212 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:359.219 FlashBankInfo: +T174FC 000:359.226 Name: Code Flash +T174FC 000:359.232 BaseAddr: 0x11000000 +T174FC 000:359.261 AlwaysPresent: 1 +T174FC 000:359.269 LoaderInfo: +T174FC 000:359.275 Name: Code_Flash +T174FC 000:359.281 MaxSize: 0x0000F000 +T174FC 000:359.288 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\Infineon\TLE985x\TLE9851.FLM +T174FC 000:359.295 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:359.301 FlashBankInfo: +T174FC 000:359.308 Name: Data Flash +T174FC 000:359.314 BaseAddr: 0x1100F000 +T174FC 000:359.341 AlwaysPresent: 1 +T174FC 000:359.349 LoaderInfo: +T174FC 000:359.356 Name: Data_Flash +T174FC 000:359.362 MaxSize: 0x00001000 +T174FC 000:359.369 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\Infineon\TLE985x\TLE9851_EEP.FLM +T174FC 000:359.375 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:359.384 Device entry modified: TLE9853QX +T174FC 000:359.404 ChipInfo: +T174FC 000:359.411 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\Infineon\TLE985x\Infineon_TLExxx.pex +T174FC 000:359.418 FlashBankInfo: +T174FC 000:359.425 Name: NACNAD +T174FC 000:359.431 BaseAddr: 0x10FFFFFC +T174FC 000:359.451 AlwaysPresent: 1 +T174FC 000:359.459 LoaderInfo: +T174FC 000:359.465 Name: NACNAD +T174FC 000:359.472 MaxSize: 0x00000004 +T174FC 000:359.478 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\Infineon\TLE985x\TLE985x_OPT.FLM +T174FC 000:359.485 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:359.492 FlashBankInfo: +T174FC 000:359.498 Name: Code Flash +T174FC 000:359.505 BaseAddr: 0x11000000 +T174FC 000:359.537 AlwaysPresent: 1 +T174FC 000:359.545 LoaderInfo: +T174FC 000:359.552 Name: Code_Flash +T174FC 000:359.558 MaxSize: 0x0000B000 +T174FC 000:359.565 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\Infineon\TLE985x\TLE9853.FLM +T174FC 000:359.571 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:359.578 FlashBankInfo: +T174FC 000:359.585 Name: Data Flash +T174FC 000:359.591 BaseAddr: 0x1100B000 +T174FC 000:359.619 AlwaysPresent: 1 +T174FC 000:359.626 LoaderInfo: +T174FC 000:359.633 Name: Data_Flash +T174FC 000:359.640 MaxSize: 0x00001000 +T174FC 000:359.646 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\Infineon\TLE985x\TLE9853_EEP.FLM +T174FC 000:359.653 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:359.661 Device entry modified: TLE9854QX +T174FC 000:359.676 ChipInfo: +T174FC 000:359.686 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\Infineon\TLE985x\Infineon_TLExxx.pex +T174FC 000:359.692 FlashBankInfo: +T174FC 000:359.699 Name: NACNAD +T174FC 000:359.706 BaseAddr: 0x10FFFFFC +T174FC 000:359.726 AlwaysPresent: 1 +T174FC 000:359.733 LoaderInfo: +T174FC 000:359.739 Name: NACNAD +T174FC 000:359.746 MaxSize: 0x00000004 +T174FC 000:359.752 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\Infineon\TLE985x\TLE985x_OPT.FLM +T174FC 000:359.759 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:359.766 FlashBankInfo: +T174FC 000:359.772 Name: Code Flash +T174FC 000:359.779 BaseAddr: 0x11000000 +T174FC 000:359.805 AlwaysPresent: 1 +T174FC 000:359.813 LoaderInfo: +T174FC 000:359.819 Name: Code_Flash +T174FC 000:359.826 MaxSize: 0x0000F000 +T174FC 000:359.833 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\Infineon\TLE985x\TLE9854.FLM +T174FC 000:359.839 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:359.846 FlashBankInfo: +T174FC 000:359.852 Name: Data Flash +T174FC 000:359.859 BaseAddr: 0x1100F000 +T174FC 000:359.885 AlwaysPresent: 1 +T174FC 000:359.893 LoaderInfo: +T174FC 000:359.900 Name: Data_Flash +T174FC 000:359.906 MaxSize: 0x00001000 +T174FC 000:359.913 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\Infineon\TLE985x\TLE9854_EEP.FLM +T174FC 000:359.919 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:359.927 Device entry modified: TLE9855QX +T174FC 000:359.940 ChipInfo: +T174FC 000:359.948 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\Infineon\TLE985x\Infineon_TLExxx.pex +T174FC 000:359.954 FlashBankInfo: +T174FC 000:359.961 Name: NACNAD +T174FC 000:359.968 BaseAddr: 0x10FFFFFC +T174FC 000:359.986 AlwaysPresent: 1 +T174FC 000:359.993 LoaderInfo: +T174FC 000:360.000 Name: NACNAD +T174FC 000:360.006 MaxSize: 0x00000004 +T174FC 000:360.013 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\Infineon\TLE985x\TLE985x_OPT.FLM +T174FC 000:360.019 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:360.026 FlashBankInfo: +T174FC 000:360.032 Name: Code Flash +T174FC 000:360.039 BaseAddr: 0x11000000 +T174FC 000:360.066 AlwaysPresent: 1 +T174FC 000:360.073 LoaderInfo: +T174FC 000:360.080 Name: Code_Flash +T174FC 000:360.086 MaxSize: 0x00017000 +T174FC 000:360.093 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\Infineon\TLE985x\TLE9855.FLM +T174FC 000:360.099 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:360.106 FlashBankInfo: +T174FC 000:360.112 Name: Data Flash +T174FC 000:360.119 BaseAddr: 0x11017000 +T174FC 000:360.146 AlwaysPresent: 1 +T174FC 000:360.153 LoaderInfo: +T174FC 000:360.160 Name: Data_Flash +T174FC 000:360.166 MaxSize: 0x00001000 +T174FC 000:360.174 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\Infineon\TLE985x\TLE9855_EEP.FLM +T174FC 000:360.181 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:360.191 Device entry modified: GP570NKDx +T174FC 000:360.210 ChipInfo: +T174FC 000:360.220 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\Qorvo\GPxxx\GPxxx.pex +T174FC 000:360.230 Device entry modified: GP570NMDx +T174FC 000:360.249 ChipInfo: +T174FC 000:360.256 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\Qorvo\GPxxx\GPxxx.pex +T174FC 000:360.265 Device entry modified: GP570NMEx +T174FC 000:360.283 ChipInfo: +T174FC 000:360.292 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\Qorvo\GPxxx\GPxxx.pex +T174FC 000:360.301 Device entry modified: GP870NKCG +T174FC 000:360.315 ChipInfo: +T174FC 000:360.322 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\Qorvo\GPxxx\GPxxx.pex +T174FC 000:360.331 Device entry modified: GP870NMDG +T174FC 000:360.344 ChipInfo: +T174FC 000:360.351 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\Qorvo\GPxxx\GPxxx.pex +T174FC 000:360.359 Device entry modified: GP870NMEG +T174FC 000:360.372 ChipInfo: +T174FC 000:360.379 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\Qorvo\GPxxx\GPxxx.pex +T174FC 000:360.388 Device entry modified: UE878NHCG +T174FC 000:360.406 ChipInfo: +T174FC 000:360.416 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\Qorvo\GPxxx\GPxxx.pex +T174FC 000:360.428 Device entry modified: UE878NKDx +T174FC 000:360.445 ChipInfo: +T174FC 000:360.452 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\Qorvo\GPxxx\GPxxx.pex +T174FC 000:360.460 Device entry modified: UE878NKEx +T174FC 000:360.473 ChipInfo: +T174FC 000:360.480 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\Qorvo\GPxxx\GPxxx.pex +T174FC 000:360.488 Device entry modified: UE878NMDx +T174FC 000:360.501 ChipInfo: +T174FC 000:360.508 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\Qorvo\GPxxx\GPxxx.pex +T174FC 000:360.516 Device entry modified: UE878NMEx +T174FC 000:360.532 ChipInfo: +T174FC 000:360.544 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\Qorvo\GPxxx\GPxxx.pex +T174FC 000:360.557 Device entry modified: QPG6095x +T174FC 000:360.572 ChipInfo: +T174FC 000:360.580 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\Qorvo\GPxxx\GPxxx.pex +T174FC 000:360.589 Device entry modified: CY8C6xx6_CM0p +T174FC 000:360.602 ChipInfo: +T174FC 000:360.609 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\Cypress\PSoC6\CY8C6xxx_CM0p.JLinkScript +T174FC 000:360.616 WorkRAMSize: 0x00080000 +T174FC 000:360.623 FlashBankInfo: +T174FC 000:360.630 Name: FLASH (Main) +T174FC 000:360.637 BaseAddr: 0x10000000 +T174FC 000:360.678 AlwaysPresent: 1 +T174FC 000:360.696 LoaderInfo: +T174FC 000:360.703 Name: FLASH__(Main) +T174FC 000:360.710 MaxSize: 0x00080000 +T174FC 000:360.717 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\Cypress\PSoC6\CY8C6xx6.FLM +T174FC 000:360.725 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:360.735 FlashBankInfo: +T174FC 000:360.743 Name: WFLASH (Work) +T174FC 000:360.750 BaseAddr: 0x14000000 +T174FC 000:360.783 AlwaysPresent: 1 +T174FC 000:360.791 LoaderInfo: +T174FC 000:360.798 Name: WFLASH_(Work) +T174FC 000:360.804 MaxSize: 0x00008000 +T174FC 000:360.811 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\Cypress\PSoC6\CY8C6xxx_WFLASH.FLM +T174FC 000:360.818 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:360.825 FlashBankInfo: +T174FC 000:360.831 Name: SFLASH: User Data +T174FC 000:360.838 BaseAddr: 0x16000800 +T174FC 000:360.868 AlwaysPresent: 1 +T174FC 000:360.876 LoaderInfo: +T174FC 000:360.883 Name: SFLASH:_User_Data +T174FC 000:360.889 MaxSize: 0x00000800 +T174FC 000:360.896 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\Cypress\PSoC6\CY8C6xxx_SFLASH_USER.FLM +T174FC 000:360.903 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:360.909 FlashBankInfo: +T174FC 000:360.916 Name: SFLASH: NAR +T174FC 000:360.923 BaseAddr: 0x16001A00 +T174FC 000:360.955 AlwaysPresent: 1 +T174FC 000:360.963 LoaderInfo: +T174FC 000:360.970 Name: SFLASH:_NAR +T174FC 000:360.976 MaxSize: 0x00000200 +T174FC 000:360.983 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\Cypress\PSoC6\CY8C6xxx_SFLASH_NAR.FLM +T174FC 000:360.989 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:360.996 FlashBankInfo: +T174FC 000:361.002 Name: SFLASH: Public Key +T174FC 000:361.009 BaseAddr: 0x16005A00 +T174FC 000:361.037 AlwaysPresent: 1 +T174FC 000:361.045 LoaderInfo: +T174FC 000:361.053 Name: SFLASH:_Public_Key +T174FC 000:361.060 MaxSize: 0x00000C00 +T174FC 000:361.067 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\Cypress\PSoC6\CY8C6xxx_SFLASH_PKEY.FLM +T174FC 000:361.073 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:361.080 FlashBankInfo: +T174FC 000:361.087 Name: SFLASH: TOC2 +T174FC 000:361.093 BaseAddr: 0x16007C00 +T174FC 000:361.120 AlwaysPresent: 1 +T174FC 000:361.128 LoaderInfo: +T174FC 000:361.135 Name: SFLASH:_TOC2 +T174FC 000:361.141 MaxSize: 0x00000400 +T174FC 000:361.148 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\Cypress\PSoC6\CY8C6xxx_SFLASH_TOC2.FLM +T174FC 000:361.154 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:361.162 FlashBankInfo: +T174FC 000:361.168 Name: SMIF +T174FC 000:361.175 BaseAddr: 0x18000000 +T174FC 000:361.202 LoaderInfo: +T174FC 000:361.209 Name: SMIF +T174FC 000:361.216 MaxSize: 0x08000000 +T174FC 000:361.222 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\Cypress\PSoC6\CY8C6xxx_SMIF.FLM +T174FC 000:361.229 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:361.239 Device entry modified: CY8C6xx6_CM0p_sect256KB +T174FC 000:361.251 ChipInfo: +T174FC 000:361.259 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\Cypress\PSoC6\CY8C6xxx_CM0p.JLinkScript +T174FC 000:361.266 WorkRAMSize: 0x00080000 +T174FC 000:361.273 FlashBankInfo: +T174FC 000:361.279 Name: FLASH (Main) +T174FC 000:361.286 BaseAddr: 0x10000000 +T174FC 000:361.313 AlwaysPresent: 1 +T174FC 000:361.321 LoaderInfo: +T174FC 000:361.327 Name: FLASH__(Main) +T174FC 000:361.334 MaxSize: 0x00080000 +T174FC 000:361.341 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\Cypress\PSoC6\CY8C6xx6_sect256KB.FLM +T174FC 000:361.347 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:361.354 FlashBankInfo: +T174FC 000:361.360 Name: WFLASH (Work) +T174FC 000:361.367 BaseAddr: 0x14000000 +T174FC 000:361.387 AlwaysPresent: 1 +T174FC 000:361.395 LoaderInfo: +T174FC 000:361.401 Name: WFLASH_(Work) +T174FC 000:361.408 MaxSize: 0x00008000 +T174FC 000:361.414 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\Cypress\PSoC6\CY8C6xxx_WFLASH.FLM +T174FC 000:361.421 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:361.428 FlashBankInfo: +T174FC 000:361.434 Name: SFLASH: User Data +T174FC 000:361.441 BaseAddr: 0x16000800 +T174FC 000:361.460 AlwaysPresent: 1 +T174FC 000:361.467 LoaderInfo: +T174FC 000:361.474 Name: SFLASH:_User_Data +T174FC 000:361.480 MaxSize: 0x00000800 +T174FC 000:361.487 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\Cypress\PSoC6\CY8C6xxx_SFLASH_USER.FLM +T174FC 000:361.493 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:361.500 FlashBankInfo: +T174FC 000:361.507 Name: SFLASH: NAR +T174FC 000:361.516 BaseAddr: 0x16001A00 +T174FC 000:361.535 AlwaysPresent: 1 +T174FC 000:361.543 LoaderInfo: +T174FC 000:361.549 Name: SFLASH:_NAR +T174FC 000:361.556 MaxSize: 0x00000200 +T174FC 000:361.562 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\Cypress\PSoC6\CY8C6xxx_SFLASH_NAR.FLM +T174FC 000:361.569 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:361.576 FlashBankInfo: +T174FC 000:361.582 Name: SFLASH: Public Key +T174FC 000:361.589 BaseAddr: 0x16005A00 +T174FC 000:361.608 AlwaysPresent: 1 +T174FC 000:361.615 LoaderInfo: +T174FC 000:361.622 Name: SFLASH:_Public_Key +T174FC 000:361.629 MaxSize: 0x00000C00 +T174FC 000:361.635 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\Cypress\PSoC6\CY8C6xxx_SFLASH_PKEY.FLM +T174FC 000:361.642 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:361.648 FlashBankInfo: +T174FC 000:361.655 Name: SFLASH: TOC2 +T174FC 000:361.662 BaseAddr: 0x16007C00 +T174FC 000:361.680 AlwaysPresent: 1 +T174FC 000:361.688 LoaderInfo: +T174FC 000:361.694 Name: SFLASH:_TOC2 +T174FC 000:361.701 MaxSize: 0x00000400 +T174FC 000:361.707 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\Cypress\PSoC6\CY8C6xxx_SFLASH_TOC2.FLM +T174FC 000:361.714 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:361.721 FlashBankInfo: +T174FC 000:361.727 Name: SMIF +T174FC 000:361.734 BaseAddr: 0x18000000 +T174FC 000:361.753 LoaderInfo: +T174FC 000:361.760 Name: SMIF +T174FC 000:361.767 MaxSize: 0x08000000 +T174FC 000:361.773 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\Cypress\PSoC6\CY8C6xxx_SMIF.FLM +T174FC 000:361.780 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:361.789 Device entry modified: CY8C6xx6_CM0p_tm +T174FC 000:361.801 ChipInfo: +T174FC 000:361.808 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\Cypress\PSoC6\CY8C6xxx_CM0p_tm_xA.JLinkScript +T174FC 000:361.816 WorkRAMSize: 0x00080000 +T174FC 000:361.823 FlashBankInfo: +T174FC 000:361.829 Name: FLASH (Main) +T174FC 000:361.836 BaseAddr: 0x10000000 +T174FC 000:361.855 AlwaysPresent: 1 +T174FC 000:361.862 LoaderInfo: +T174FC 000:361.869 Name: FLASH__(Main) +T174FC 000:361.875 MaxSize: 0x00080000 +T174FC 000:361.882 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\Cypress\PSoC6\CY8C6xx6.FLM +T174FC 000:361.888 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:361.895 FlashBankInfo: +T174FC 000:361.902 Name: WFLASH (Work) +T174FC 000:361.908 BaseAddr: 0x14000000 +T174FC 000:361.927 AlwaysPresent: 1 +T174FC 000:361.934 LoaderInfo: +T174FC 000:361.941 Name: WFLASH_(Work) +T174FC 000:361.947 MaxSize: 0x00008000 +T174FC 000:361.954 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\Cypress\PSoC6\CY8C6xxx_WFLASH.FLM +T174FC 000:361.960 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:361.967 FlashBankInfo: +T174FC 000:361.974 Name: SFLASH: User Data +T174FC 000:361.980 BaseAddr: 0x16000800 +T174FC 000:361.999 AlwaysPresent: 1 +T174FC 000:362.006 LoaderInfo: +T174FC 000:362.013 Name: SFLASH:_User_Data +T174FC 000:362.019 MaxSize: 0x00000800 +T174FC 000:362.026 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\Cypress\PSoC6\CY8C6xxx_SFLASH_USER.FLM +T174FC 000:362.032 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:362.039 FlashBankInfo: +T174FC 000:362.048 Name: SFLASH: NAR +T174FC 000:362.056 BaseAddr: 0x16001A00 +T174FC 000:362.075 AlwaysPresent: 1 +T174FC 000:362.083 LoaderInfo: +T174FC 000:362.090 Name: SFLASH:_NAR +T174FC 000:362.096 MaxSize: 0x00000200 +T174FC 000:362.103 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\Cypress\PSoC6\CY8C6xxx_SFLASH_NAR.FLM +T174FC 000:362.109 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:362.116 FlashBankInfo: +T174FC 000:362.123 Name: SFLASH: Public Key +T174FC 000:362.129 BaseAddr: 0x16005A00 +T174FC 000:362.148 AlwaysPresent: 1 +T174FC 000:362.155 LoaderInfo: +T174FC 000:362.162 Name: SFLASH:_Public_Key +T174FC 000:362.168 MaxSize: 0x00000C00 +T174FC 000:362.175 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\Cypress\PSoC6\CY8C6xxx_SFLASH_PKEY.FLM +T174FC 000:362.181 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:362.188 FlashBankInfo: +T174FC 000:362.195 Name: SFLASH: TOC2 +T174FC 000:362.201 BaseAddr: 0x16007C00 +T174FC 000:362.220 AlwaysPresent: 1 +T174FC 000:362.228 LoaderInfo: +T174FC 000:362.235 Name: SFLASH:_TOC2 +T174FC 000:362.241 MaxSize: 0x00000400 +T174FC 000:362.248 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\Cypress\PSoC6\CY8C6xxx_SFLASH_TOC2.FLM +T174FC 000:362.255 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:362.261 FlashBankInfo: +T174FC 000:362.268 Name: SMIF +T174FC 000:362.274 BaseAddr: 0x18000000 +T174FC 000:362.293 LoaderInfo: +T174FC 000:362.301 Name: SMIF +T174FC 000:362.307 MaxSize: 0x08000000 +T174FC 000:362.314 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\Cypress\PSoC6\CY8C6xxx_SMIF.FLM +T174FC 000:362.320 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:362.330 Device entry modified: CY8C6xx6_CM0p_sect256KB_tm +T174FC 000:362.342 ChipInfo: +T174FC 000:362.349 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\Cypress\PSoC6\CY8C6xxx_CM0p_tm_xA.JLinkScript +T174FC 000:362.356 WorkRAMSize: 0x00080000 +T174FC 000:362.363 FlashBankInfo: +T174FC 000:362.370 Name: FLASH (Main) +T174FC 000:362.376 BaseAddr: 0x10000000 +T174FC 000:362.395 AlwaysPresent: 1 +T174FC 000:362.403 LoaderInfo: +T174FC 000:362.409 Name: FLASH__(Main) +T174FC 000:362.416 MaxSize: 0x00080000 +T174FC 000:362.422 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\Cypress\PSoC6\CY8C6xx6_sect256KB.FLM +T174FC 000:362.429 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:362.435 FlashBankInfo: +T174FC 000:362.442 Name: WFLASH (Work) +T174FC 000:362.449 BaseAddr: 0x14000000 +T174FC 000:362.468 AlwaysPresent: 1 +T174FC 000:362.475 LoaderInfo: +T174FC 000:362.482 Name: WFLASH_(Work) +T174FC 000:362.488 MaxSize: 0x00008000 +T174FC 000:362.495 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\Cypress\PSoC6\CY8C6xxx_WFLASH.FLM +T174FC 000:362.501 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:362.508 FlashBankInfo: +T174FC 000:362.514 Name: SFLASH: User Data +T174FC 000:362.521 BaseAddr: 0x16000800 +T174FC 000:362.540 AlwaysPresent: 1 +T174FC 000:362.547 LoaderInfo: +T174FC 000:362.554 Name: SFLASH:_User_Data +T174FC 000:362.560 MaxSize: 0x00000800 +T174FC 000:362.567 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\Cypress\PSoC6\CY8C6xxx_SFLASH_USER.FLM +T174FC 000:362.573 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:362.582 FlashBankInfo: +T174FC 000:362.589 Name: SFLASH: NAR +T174FC 000:362.596 BaseAddr: 0x16001A00 +T174FC 000:362.615 AlwaysPresent: 1 +T174FC 000:362.622 LoaderInfo: +T174FC 000:362.629 Name: SFLASH:_NAR +T174FC 000:362.635 MaxSize: 0x00000200 +T174FC 000:362.642 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\Cypress\PSoC6\CY8C6xxx_SFLASH_NAR.FLM +T174FC 000:362.649 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:362.655 FlashBankInfo: +T174FC 000:362.662 Name: SFLASH: Public Key +T174FC 000:362.669 BaseAddr: 0x16005A00 +T174FC 000:362.687 AlwaysPresent: 1 +T174FC 000:362.694 LoaderInfo: +T174FC 000:362.701 Name: SFLASH:_Public_Key +T174FC 000:362.708 MaxSize: 0x00000C00 +T174FC 000:362.714 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\Cypress\PSoC6\CY8C6xxx_SFLASH_PKEY.FLM +T174FC 000:362.721 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:362.728 FlashBankInfo: +T174FC 000:362.734 Name: SFLASH: TOC2 +T174FC 000:362.741 BaseAddr: 0x16007C00 +T174FC 000:362.759 AlwaysPresent: 1 +T174FC 000:362.767 LoaderInfo: +T174FC 000:362.773 Name: SFLASH:_TOC2 +T174FC 000:362.780 MaxSize: 0x00000400 +T174FC 000:362.786 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\Cypress\PSoC6\CY8C6xxx_SFLASH_TOC2.FLM +T174FC 000:362.793 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:362.800 FlashBankInfo: +T174FC 000:362.806 Name: SMIF +T174FC 000:362.813 BaseAddr: 0x18000000 +T174FC 000:362.832 LoaderInfo: +T174FC 000:362.839 Name: SMIF +T174FC 000:362.846 MaxSize: 0x08000000 +T174FC 000:362.852 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\Cypress\PSoC6\CY8C6xxx_SMIF.FLM +T174FC 000:362.859 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:362.868 Device entry modified: CY8C6xx6_CM4 +T174FC 000:362.880 ChipInfo: +T174FC 000:362.887 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\Cypress\PSoC6\CY8C6xxx_CM4.JLinkScript +T174FC 000:362.894 WorkRAMSize: 0x00080000 +T174FC 000:362.903 FlashBankInfo: +T174FC 000:362.909 Name: FLASH (Main) +T174FC 000:362.916 BaseAddr: 0x10000000 +T174FC 000:362.934 AlwaysPresent: 1 +T174FC 000:362.942 LoaderInfo: +T174FC 000:362.948 Name: FLASH__(Main) +T174FC 000:362.955 MaxSize: 0x00080000 +T174FC 000:362.961 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\Cypress\PSoC6\CY8C6xx6.FLM +T174FC 000:362.968 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:362.975 FlashBankInfo: +T174FC 000:362.981 Name: WFLASH (Work) +T174FC 000:362.988 BaseAddr: 0x14000000 +T174FC 000:363.007 AlwaysPresent: 1 +T174FC 000:363.014 LoaderInfo: +T174FC 000:363.020 Name: WFLASH_(Work) +T174FC 000:363.027 MaxSize: 0x00008000 +T174FC 000:363.034 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\Cypress\PSoC6\CY8C6xxx_WFLASH.FLM +T174FC 000:363.040 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:363.047 FlashBankInfo: +T174FC 000:363.055 Name: SFLASH: User Data +T174FC 000:363.062 BaseAddr: 0x16000800 +T174FC 000:363.081 AlwaysPresent: 1 +T174FC 000:363.088 LoaderInfo: +T174FC 000:363.095 Name: SFLASH:_User_Data +T174FC 000:363.101 MaxSize: 0x00000800 +T174FC 000:363.108 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\Cypress\PSoC6\CY8C6xxx_SFLASH_USER.FLM +T174FC 000:363.117 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:363.124 FlashBankInfo: +T174FC 000:363.131 Name: SFLASH: NAR +T174FC 000:363.137 BaseAddr: 0x16001A00 +T174FC 000:363.157 AlwaysPresent: 1 +T174FC 000:363.164 LoaderInfo: +T174FC 000:363.170 Name: SFLASH:_NAR +T174FC 000:363.177 MaxSize: 0x00000200 +T174FC 000:363.184 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\Cypress\PSoC6\CY8C6xxx_SFLASH_NAR.FLM +T174FC 000:363.190 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:363.197 FlashBankInfo: +T174FC 000:363.204 Name: SFLASH: Public Key +T174FC 000:363.210 BaseAddr: 0x16005A00 +T174FC 000:363.230 AlwaysPresent: 1 +T174FC 000:363.237 LoaderInfo: +T174FC 000:363.243 Name: SFLASH:_Public_Key +T174FC 000:363.250 MaxSize: 0x00000C00 +T174FC 000:363.257 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\Cypress\PSoC6\CY8C6xxx_SFLASH_PKEY.FLM +T174FC 000:363.263 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:363.270 FlashBankInfo: +T174FC 000:363.277 Name: SFLASH: TOC2 +T174FC 000:363.283 BaseAddr: 0x16007C00 +T174FC 000:363.302 AlwaysPresent: 1 +T174FC 000:363.309 LoaderInfo: +T174FC 000:363.316 Name: SFLASH:_TOC2 +T174FC 000:363.322 MaxSize: 0x00000400 +T174FC 000:363.329 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\Cypress\PSoC6\CY8C6xxx_SFLASH_TOC2.FLM +T174FC 000:363.335 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:363.342 FlashBankInfo: +T174FC 000:363.348 Name: SMIF +T174FC 000:363.355 BaseAddr: 0x18000000 +T174FC 000:363.374 LoaderInfo: +T174FC 000:363.381 Name: SMIF +T174FC 000:363.387 MaxSize: 0x08000000 +T174FC 000:363.394 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\Cypress\PSoC6\CY8C6xxx_SMIF.FLM +T174FC 000:363.401 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:363.410 Device entry modified: CY8C6xx6_CM4_sect256KB +T174FC 000:363.422 ChipInfo: +T174FC 000:363.430 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\Cypress\PSoC6\CY8C6xxx_CM4.JLinkScript +T174FC 000:363.436 WorkRAMSize: 0x00080000 +T174FC 000:363.445 FlashBankInfo: +T174FC 000:363.451 Name: FLASH (Main) +T174FC 000:363.458 BaseAddr: 0x10000000 +T174FC 000:363.477 AlwaysPresent: 1 +T174FC 000:363.484 LoaderInfo: +T174FC 000:363.491 Name: FLASH__(Main) +T174FC 000:363.497 MaxSize: 0x00080000 +T174FC 000:363.504 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\Cypress\PSoC6\CY8C6xx6_sect256KB.FLM +T174FC 000:363.510 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:363.517 FlashBankInfo: +T174FC 000:363.524 Name: WFLASH (Work) +T174FC 000:363.530 BaseAddr: 0x14000000 +T174FC 000:363.549 AlwaysPresent: 1 +T174FC 000:363.557 LoaderInfo: +T174FC 000:363.563 Name: WFLASH_(Work) +T174FC 000:363.569 MaxSize: 0x00008000 +T174FC 000:363.576 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\Cypress\PSoC6\CY8C6xxx_WFLASH.FLM +T174FC 000:363.583 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:363.590 FlashBankInfo: +T174FC 000:363.596 Name: SFLASH: User Data +T174FC 000:363.603 BaseAddr: 0x16000800 +T174FC 000:363.622 AlwaysPresent: 1 +T174FC 000:363.629 LoaderInfo: +T174FC 000:363.635 Name: SFLASH:_User_Data +T174FC 000:363.642 MaxSize: 0x00000800 +T174FC 000:363.649 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\Cypress\PSoC6\CY8C6xxx_SFLASH_USER.FLM +T174FC 000:363.657 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:363.664 FlashBankInfo: +T174FC 000:363.670 Name: SFLASH: NAR +T174FC 000:363.677 BaseAddr: 0x16001A00 +T174FC 000:363.696 AlwaysPresent: 1 +T174FC 000:363.703 LoaderInfo: +T174FC 000:363.710 Name: SFLASH:_NAR +T174FC 000:363.716 MaxSize: 0x00000200 +T174FC 000:363.723 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\Cypress\PSoC6\CY8C6xxx_SFLASH_NAR.FLM +T174FC 000:363.730 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:363.736 FlashBankInfo: +T174FC 000:363.743 Name: SFLASH: Public Key +T174FC 000:363.749 BaseAddr: 0x16005A00 +T174FC 000:363.768 AlwaysPresent: 1 +T174FC 000:363.775 LoaderInfo: +T174FC 000:363.782 Name: SFLASH:_Public_Key +T174FC 000:363.788 MaxSize: 0x00000C00 +T174FC 000:363.795 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\Cypress\PSoC6\CY8C6xxx_SFLASH_PKEY.FLM +T174FC 000:363.801 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:363.808 FlashBankInfo: +T174FC 000:363.814 Name: SFLASH: TOC2 +T174FC 000:363.821 BaseAddr: 0x16007C00 +T174FC 000:363.840 AlwaysPresent: 1 +T174FC 000:363.847 LoaderInfo: +T174FC 000:363.854 Name: SFLASH:_TOC2 +T174FC 000:363.860 MaxSize: 0x00000400 +T174FC 000:363.867 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\Cypress\PSoC6\CY8C6xxx_SFLASH_TOC2.FLM +T174FC 000:363.873 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:363.880 FlashBankInfo: +T174FC 000:363.886 Name: SMIF +T174FC 000:363.893 BaseAddr: 0x18000000 +T174FC 000:363.912 LoaderInfo: +T174FC 000:363.919 Name: SMIF +T174FC 000:363.926 MaxSize: 0x08000000 +T174FC 000:363.932 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\Cypress\PSoC6\CY8C6xxx_SMIF.FLM +T174FC 000:363.939 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:363.948 Device entry modified: CY8C6xx7_CM0p +T174FC 000:363.960 ChipInfo: +T174FC 000:363.967 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\Cypress\PSoC6\CY8C6xxx_CM0p.JLinkScript +T174FC 000:363.974 WorkRAMSize: 0x00080000 +T174FC 000:363.981 FlashBankInfo: +T174FC 000:363.987 Name: FLASH (Main) +T174FC 000:363.994 BaseAddr: 0x10000000 +T174FC 000:364.022 AlwaysPresent: 1 +T174FC 000:364.030 LoaderInfo: +T174FC 000:364.037 Name: FLASH__(Main) +T174FC 000:364.043 MaxSize: 0x00100000 +T174FC 000:364.050 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\Cypress\PSoC6\CY8C6xx7.FLM +T174FC 000:364.058 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:364.065 FlashBankInfo: +T174FC 000:364.071 Name: WFLASH (Work) +T174FC 000:364.078 BaseAddr: 0x14000000 +T174FC 000:364.097 AlwaysPresent: 1 +T174FC 000:364.105 LoaderInfo: +T174FC 000:364.111 Name: WFLASH_(Work) +T174FC 000:364.118 MaxSize: 0x00008000 +T174FC 000:364.125 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\Cypress\PSoC6\CY8C6xxx_WFLASH.FLM +T174FC 000:364.131 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:364.138 FlashBankInfo: +T174FC 000:364.144 Name: SFLASH: User Data +T174FC 000:364.151 BaseAddr: 0x16000800 +T174FC 000:364.170 AlwaysPresent: 1 +T174FC 000:364.177 LoaderInfo: +T174FC 000:364.184 Name: SFLASH:_User_Data +T174FC 000:364.190 MaxSize: 0x00000800 +T174FC 000:364.198 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\Cypress\PSoC6\CY8C6xxx_SFLASH_USER.FLM +T174FC 000:364.205 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:364.212 FlashBankInfo: +T174FC 000:364.219 Name: SFLASH: NAR +T174FC 000:364.226 BaseAddr: 0x16001A00 +T174FC 000:364.245 AlwaysPresent: 1 +T174FC 000:364.252 LoaderInfo: +T174FC 000:364.259 Name: SFLASH:_NAR +T174FC 000:364.265 MaxSize: 0x00000200 +T174FC 000:364.272 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\Cypress\PSoC6\CY8C6xxx_SFLASH_NAR.FLM +T174FC 000:364.278 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:364.285 FlashBankInfo: +T174FC 000:364.292 Name: SFLASH: Public Key +T174FC 000:364.298 BaseAddr: 0x16005A00 +T174FC 000:364.317 AlwaysPresent: 1 +T174FC 000:364.325 LoaderInfo: +T174FC 000:364.331 Name: SFLASH:_Public_Key +T174FC 000:364.338 MaxSize: 0x00000C00 +T174FC 000:364.344 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\Cypress\PSoC6\CY8C6xxx_SFLASH_PKEY.FLM +T174FC 000:364.351 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:364.358 FlashBankInfo: +T174FC 000:364.364 Name: SFLASH: TOC2 +T174FC 000:364.371 BaseAddr: 0x16007C00 +T174FC 000:364.389 AlwaysPresent: 1 +T174FC 000:364.397 LoaderInfo: +T174FC 000:364.403 Name: SFLASH:_TOC2 +T174FC 000:364.410 MaxSize: 0x00000400 +T174FC 000:364.416 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\Cypress\PSoC6\CY8C6xxx_SFLASH_TOC2.FLM +T174FC 000:364.423 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:364.429 FlashBankInfo: +T174FC 000:364.436 Name: SMIF +T174FC 000:364.442 BaseAddr: 0x18000000 +T174FC 000:364.461 LoaderInfo: +T174FC 000:364.468 Name: SMIF +T174FC 000:364.475 MaxSize: 0x08000000 +T174FC 000:364.481 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\Cypress\PSoC6\CY8C6xxx_SMIF.FLM +T174FC 000:364.488 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:364.498 Device entry modified: CY8C6xx7_CM0p_sect256KB +T174FC 000:364.510 ChipInfo: +T174FC 000:364.517 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\Cypress\PSoC6\CY8C6xxx_CM0p.JLinkScript +T174FC 000:364.524 WorkRAMSize: 0x00080000 +T174FC 000:364.531 FlashBankInfo: +T174FC 000:364.537 Name: FLASH (Main) +T174FC 000:364.544 BaseAddr: 0x10000000 +T174FC 000:364.572 AlwaysPresent: 1 +T174FC 000:364.580 LoaderInfo: +T174FC 000:364.586 Name: FLASH__(Main) +T174FC 000:364.593 MaxSize: 0x00100000 +T174FC 000:364.600 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\Cypress\PSoC6\CY8C6xx7_sect256KB.FLM +T174FC 000:364.606 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:364.613 FlashBankInfo: +T174FC 000:364.619 Name: WFLASH (Work) +T174FC 000:364.626 BaseAddr: 0x14000000 +T174FC 000:364.645 AlwaysPresent: 1 +T174FC 000:364.653 LoaderInfo: +T174FC 000:364.659 Name: WFLASH_(Work) +T174FC 000:364.666 MaxSize: 0x00008000 +T174FC 000:364.672 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\Cypress\PSoC6\CY8C6xxx_WFLASH.FLM +T174FC 000:364.679 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:364.686 FlashBankInfo: +T174FC 000:364.692 Name: SFLASH: User Data +T174FC 000:364.699 BaseAddr: 0x16000800 +T174FC 000:364.717 AlwaysPresent: 1 +T174FC 000:364.725 LoaderInfo: +T174FC 000:364.731 Name: SFLASH:_User_Data +T174FC 000:364.740 MaxSize: 0x00000800 +T174FC 000:364.746 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\Cypress\PSoC6\CY8C6xxx_SFLASH_USER.FLM +T174FC 000:364.753 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:364.760 FlashBankInfo: +T174FC 000:364.766 Name: SFLASH: NAR +T174FC 000:364.773 BaseAddr: 0x16001A00 +T174FC 000:364.792 AlwaysPresent: 1 +T174FC 000:364.799 LoaderInfo: +T174FC 000:364.806 Name: SFLASH:_NAR +T174FC 000:364.812 MaxSize: 0x00000200 +T174FC 000:364.819 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\Cypress\PSoC6\CY8C6xxx_SFLASH_NAR.FLM +T174FC 000:364.826 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:364.833 FlashBankInfo: +T174FC 000:364.839 Name: SFLASH: Public Key +T174FC 000:364.846 BaseAddr: 0x16005A00 +T174FC 000:364.864 AlwaysPresent: 1 +T174FC 000:364.872 LoaderInfo: +T174FC 000:364.878 Name: SFLASH:_Public_Key +T174FC 000:364.885 MaxSize: 0x00000C00 +T174FC 000:364.891 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\Cypress\PSoC6\CY8C6xxx_SFLASH_PKEY.FLM +T174FC 000:364.898 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:364.905 FlashBankInfo: +T174FC 000:364.911 Name: SFLASH: TOC2 +T174FC 000:364.918 BaseAddr: 0x16007C00 +T174FC 000:364.936 AlwaysPresent: 1 +T174FC 000:364.944 LoaderInfo: +T174FC 000:364.950 Name: SFLASH:_TOC2 +T174FC 000:364.957 MaxSize: 0x00000400 +T174FC 000:364.963 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\Cypress\PSoC6\CY8C6xxx_SFLASH_TOC2.FLM +T174FC 000:364.970 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:364.977 FlashBankInfo: +T174FC 000:364.983 Name: SMIF +T174FC 000:364.990 BaseAddr: 0x18000000 +T174FC 000:365.009 LoaderInfo: +T174FC 000:365.016 Name: SMIF +T174FC 000:365.023 MaxSize: 0x08000000 +T174FC 000:365.029 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\Cypress\PSoC6\CY8C6xxx_SMIF.FLM +T174FC 000:365.036 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:365.045 Device entry modified: CY8C6xx7_CM0p_tm +T174FC 000:365.058 ChipInfo: +T174FC 000:365.066 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\Cypress\PSoC6\CY8C6xxx_CM0p_tm_xA.JLinkScript +T174FC 000:365.072 WorkRAMSize: 0x00080000 +T174FC 000:365.079 FlashBankInfo: +T174FC 000:365.086 Name: FLASH (Main) +T174FC 000:365.093 BaseAddr: 0x10000000 +T174FC 000:365.111 AlwaysPresent: 1 +T174FC 000:365.118 LoaderInfo: +T174FC 000:365.125 Name: FLASH__(Main) +T174FC 000:365.132 MaxSize: 0x00100000 +T174FC 000:365.138 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\Cypress\PSoC6\CY8C6xx7.FLM +T174FC 000:365.145 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:365.151 FlashBankInfo: +T174FC 000:365.158 Name: WFLASH (Work) +T174FC 000:365.165 BaseAddr: 0x14000000 +T174FC 000:365.183 AlwaysPresent: 1 +T174FC 000:365.190 LoaderInfo: +T174FC 000:365.197 Name: WFLASH_(Work) +T174FC 000:365.203 MaxSize: 0x00008000 +T174FC 000:365.210 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\Cypress\PSoC6\CY8C6xxx_WFLASH.FLM +T174FC 000:365.216 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:365.223 FlashBankInfo: +T174FC 000:365.230 Name: SFLASH: User Data +T174FC 000:365.236 BaseAddr: 0x16000800 +T174FC 000:365.255 AlwaysPresent: 1 +T174FC 000:365.262 LoaderInfo: +T174FC 000:365.269 Name: SFLASH:_User_Data +T174FC 000:365.277 MaxSize: 0x00000800 +T174FC 000:365.284 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\Cypress\PSoC6\CY8C6xxx_SFLASH_USER.FLM +T174FC 000:365.291 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:365.297 FlashBankInfo: +T174FC 000:365.304 Name: SFLASH: NAR +T174FC 000:365.310 BaseAddr: 0x16001A00 +T174FC 000:365.330 AlwaysPresent: 1 +T174FC 000:365.337 LoaderInfo: +T174FC 000:365.343 Name: SFLASH:_NAR +T174FC 000:365.350 MaxSize: 0x00000200 +T174FC 000:365.356 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\Cypress\PSoC6\CY8C6xxx_SFLASH_NAR.FLM +T174FC 000:365.363 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:365.378 FlashBankInfo: +T174FC 000:365.385 Name: SFLASH: Public Key +T174FC 000:365.392 BaseAddr: 0x16005A00 +T174FC 000:365.411 AlwaysPresent: 1 +T174FC 000:365.419 LoaderInfo: +T174FC 000:365.425 Name: SFLASH:_Public_Key +T174FC 000:365.432 MaxSize: 0x00000C00 +T174FC 000:365.438 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\Cypress\PSoC6\CY8C6xxx_SFLASH_PKEY.FLM +T174FC 000:365.445 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:365.451 FlashBankInfo: +T174FC 000:365.458 Name: SFLASH: TOC2 +T174FC 000:365.465 BaseAddr: 0x16007C00 +T174FC 000:365.483 AlwaysPresent: 1 +T174FC 000:365.490 LoaderInfo: +T174FC 000:365.497 Name: SFLASH:_TOC2 +T174FC 000:365.503 MaxSize: 0x00000400 +T174FC 000:365.510 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\Cypress\PSoC6\CY8C6xxx_SFLASH_TOC2.FLM +T174FC 000:365.516 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:365.523 FlashBankInfo: +T174FC 000:365.529 Name: SMIF +T174FC 000:365.536 BaseAddr: 0x18000000 +T174FC 000:365.555 LoaderInfo: +T174FC 000:365.562 Name: SMIF +T174FC 000:365.568 MaxSize: 0x08000000 +T174FC 000:365.575 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\Cypress\PSoC6\CY8C6xxx_SMIF.FLM +T174FC 000:365.581 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:365.591 Device entry modified: CY8C6xx7_CM0p_sect256KB_tm +T174FC 000:365.603 ChipInfo: +T174FC 000:365.610 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\Cypress\PSoC6\CY8C6xxx_CM0p_tm_xA.JLinkScript +T174FC 000:365.617 WorkRAMSize: 0x00080000 +T174FC 000:365.624 FlashBankInfo: +T174FC 000:365.630 Name: FLASH (Main) +T174FC 000:365.637 BaseAddr: 0x10000000 +T174FC 000:365.656 AlwaysPresent: 1 +T174FC 000:365.663 LoaderInfo: +T174FC 000:365.669 Name: FLASH__(Main) +T174FC 000:365.676 MaxSize: 0x00100000 +T174FC 000:365.683 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\Cypress\PSoC6\CY8C6xx7_sect256KB.FLM +T174FC 000:365.689 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:365.696 FlashBankInfo: +T174FC 000:365.702 Name: WFLASH (Work) +T174FC 000:365.709 BaseAddr: 0x14000000 +T174FC 000:365.728 AlwaysPresent: 1 +T174FC 000:365.735 LoaderInfo: +T174FC 000:365.741 Name: WFLASH_(Work) +T174FC 000:365.748 MaxSize: 0x00008000 +T174FC 000:365.754 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\Cypress\PSoC6\CY8C6xxx_WFLASH.FLM +T174FC 000:365.761 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:365.768 FlashBankInfo: +T174FC 000:365.774 Name: SFLASH: User Data +T174FC 000:365.781 BaseAddr: 0x16000800 +T174FC 000:365.800 AlwaysPresent: 1 +T174FC 000:365.809 LoaderInfo: +T174FC 000:365.816 Name: SFLASH:_User_Data +T174FC 000:365.822 MaxSize: 0x00000800 +T174FC 000:365.829 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\Cypress\PSoC6\CY8C6xxx_SFLASH_USER.FLM +T174FC 000:365.835 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:365.842 FlashBankInfo: +T174FC 000:365.848 Name: SFLASH: NAR +T174FC 000:365.855 BaseAddr: 0x16001A00 +T174FC 000:365.874 AlwaysPresent: 1 +T174FC 000:365.881 LoaderInfo: +T174FC 000:365.888 Name: SFLASH:_NAR +T174FC 000:365.895 MaxSize: 0x00000200 +T174FC 000:365.901 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\Cypress\PSoC6\CY8C6xxx_SFLASH_NAR.FLM +T174FC 000:365.908 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:365.914 FlashBankInfo: +T174FC 000:365.921 Name: SFLASH: Public Key +T174FC 000:365.928 BaseAddr: 0x16005A00 +T174FC 000:365.946 AlwaysPresent: 1 +T174FC 000:365.953 LoaderInfo: +T174FC 000:365.960 Name: SFLASH:_Public_Key +T174FC 000:365.966 MaxSize: 0x00000C00 +T174FC 000:365.973 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\Cypress\PSoC6\CY8C6xxx_SFLASH_PKEY.FLM +T174FC 000:365.980 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:365.986 FlashBankInfo: +T174FC 000:365.993 Name: SFLASH: TOC2 +T174FC 000:365.999 BaseAddr: 0x16007C00 +T174FC 000:366.018 AlwaysPresent: 1 +T174FC 000:366.025 LoaderInfo: +T174FC 000:366.032 Name: SFLASH:_TOC2 +T174FC 000:366.038 MaxSize: 0x00000400 +T174FC 000:366.045 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\Cypress\PSoC6\CY8C6xxx_SFLASH_TOC2.FLM +T174FC 000:366.053 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:366.060 FlashBankInfo: +T174FC 000:366.066 Name: SMIF +T174FC 000:366.073 BaseAddr: 0x18000000 +T174FC 000:366.092 LoaderInfo: +T174FC 000:366.099 Name: SMIF +T174FC 000:366.106 MaxSize: 0x08000000 +T174FC 000:366.113 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\Cypress\PSoC6\CY8C6xxx_SMIF.FLM +T174FC 000:366.119 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:366.128 Device entry modified: CY8C6xx7_CM4 +T174FC 000:366.139 ChipInfo: +T174FC 000:366.147 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\Cypress\PSoC6\CY8C6xxx_CM4.JLinkScript +T174FC 000:366.153 WorkRAMSize: 0x00080000 +T174FC 000:366.162 FlashBankInfo: +T174FC 000:366.168 Name: FLASH (Main) +T174FC 000:366.175 BaseAddr: 0x10000000 +T174FC 000:366.193 AlwaysPresent: 1 +T174FC 000:366.201 LoaderInfo: +T174FC 000:366.207 Name: FLASH__(Main) +T174FC 000:366.213 MaxSize: 0x00100000 +T174FC 000:366.220 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\Cypress\PSoC6\CY8C6xx7.FLM +T174FC 000:366.227 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:366.233 FlashBankInfo: +T174FC 000:366.240 Name: WFLASH (Work) +T174FC 000:366.246 BaseAddr: 0x14000000 +T174FC 000:366.265 AlwaysPresent: 1 +T174FC 000:366.272 LoaderInfo: +T174FC 000:366.279 Name: WFLASH_(Work) +T174FC 000:366.285 MaxSize: 0x00008000 +T174FC 000:366.292 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\Cypress\PSoC6\CY8C6xxx_WFLASH.FLM +T174FC 000:366.298 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:366.305 FlashBankInfo: +T174FC 000:366.312 Name: SFLASH: User Data +T174FC 000:366.318 BaseAddr: 0x16000800 +T174FC 000:366.339 AlwaysPresent: 1 +T174FC 000:366.347 LoaderInfo: +T174FC 000:366.353 Name: SFLASH:_User_Data +T174FC 000:366.360 MaxSize: 0x00000800 +T174FC 000:366.366 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\Cypress\PSoC6\CY8C6xxx_SFLASH_USER.FLM +T174FC 000:366.373 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:366.379 FlashBankInfo: +T174FC 000:366.386 Name: SFLASH: NAR +T174FC 000:366.393 BaseAddr: 0x16001A00 +T174FC 000:366.412 AlwaysPresent: 1 +T174FC 000:366.419 LoaderInfo: +T174FC 000:366.425 Name: SFLASH:_NAR +T174FC 000:366.432 MaxSize: 0x00000200 +T174FC 000:366.439 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\Cypress\PSoC6\CY8C6xxx_SFLASH_NAR.FLM +T174FC 000:366.445 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:366.452 FlashBankInfo: +T174FC 000:366.458 Name: SFLASH: Public Key +T174FC 000:366.465 BaseAddr: 0x16005A00 +T174FC 000:366.484 AlwaysPresent: 1 +T174FC 000:366.491 LoaderInfo: +T174FC 000:366.497 Name: SFLASH:_Public_Key +T174FC 000:366.504 MaxSize: 0x00000C00 +T174FC 000:366.510 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\Cypress\PSoC6\CY8C6xxx_SFLASH_PKEY.FLM +T174FC 000:366.517 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:366.524 FlashBankInfo: +T174FC 000:366.530 Name: SFLASH: TOC2 +T174FC 000:366.537 BaseAddr: 0x16007C00 +T174FC 000:366.555 AlwaysPresent: 1 +T174FC 000:366.563 LoaderInfo: +T174FC 000:366.569 Name: SFLASH:_TOC2 +T174FC 000:366.575 MaxSize: 0x00000400 +T174FC 000:366.582 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\Cypress\PSoC6\CY8C6xxx_SFLASH_TOC2.FLM +T174FC 000:366.589 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:366.595 FlashBankInfo: +T174FC 000:366.602 Name: SMIF +T174FC 000:366.608 BaseAddr: 0x18000000 +T174FC 000:366.627 LoaderInfo: +T174FC 000:366.634 Name: SMIF +T174FC 000:366.641 MaxSize: 0x08000000 +T174FC 000:366.647 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\Cypress\PSoC6\CY8C6xxx_SMIF.FLM +T174FC 000:366.654 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:366.663 Device entry modified: CY8C6xx7_CM4_sect256KB +T174FC 000:366.675 ChipInfo: +T174FC 000:366.682 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\Cypress\PSoC6\CY8C6xxx_CM4.JLinkScript +T174FC 000:366.689 WorkRAMSize: 0x00080000 +T174FC 000:366.697 FlashBankInfo: +T174FC 000:366.703 Name: FLASH (Main) +T174FC 000:366.710 BaseAddr: 0x10000000 +T174FC 000:366.729 AlwaysPresent: 1 +T174FC 000:366.736 LoaderInfo: +T174FC 000:366.742 Name: FLASH__(Main) +T174FC 000:366.749 MaxSize: 0x00100000 +T174FC 000:366.756 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\Cypress\PSoC6\CY8C6xx7_sect256KB.FLM +T174FC 000:366.762 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:366.769 FlashBankInfo: +T174FC 000:366.775 Name: WFLASH (Work) +T174FC 000:366.782 BaseAddr: 0x14000000 +T174FC 000:366.801 AlwaysPresent: 1 +T174FC 000:366.808 LoaderInfo: +T174FC 000:366.815 Name: WFLASH_(Work) +T174FC 000:366.821 MaxSize: 0x00008000 +T174FC 000:366.828 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\Cypress\PSoC6\CY8C6xxx_WFLASH.FLM +T174FC 000:366.834 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:366.841 FlashBankInfo: +T174FC 000:366.847 Name: SFLASH: User Data +T174FC 000:366.915 BaseAddr: 0x16000800 +T174FC 000:366.938 AlwaysPresent: 1 +T174FC 000:366.945 LoaderInfo: +T174FC 000:366.952 Name: SFLASH:_User_Data +T174FC 000:366.958 MaxSize: 0x00000800 +T174FC 000:366.990 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\Cypress\PSoC6\CY8C6xxx_SFLASH_USER.FLM +T174FC 000:366.996 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:367.003 FlashBankInfo: +T174FC 000:367.009 Name: SFLASH: NAR +T174FC 000:367.016 BaseAddr: 0x16001A00 +T174FC 000:367.036 AlwaysPresent: 1 +T174FC 000:367.043 LoaderInfo: +T174FC 000:367.050 Name: SFLASH:_NAR +T174FC 000:367.058 MaxSize: 0x00000200 +T174FC 000:367.064 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\Cypress\PSoC6\CY8C6xxx_SFLASH_NAR.FLM +T174FC 000:367.071 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:367.078 FlashBankInfo: +T174FC 000:367.084 Name: SFLASH: Public Key +T174FC 000:367.091 BaseAddr: 0x16005A00 +T174FC 000:367.110 AlwaysPresent: 1 +T174FC 000:367.117 LoaderInfo: +T174FC 000:367.123 Name: SFLASH:_Public_Key +T174FC 000:367.130 MaxSize: 0x00000C00 +T174FC 000:367.137 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\Cypress\PSoC6\CY8C6xxx_SFLASH_PKEY.FLM +T174FC 000:367.143 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:367.150 FlashBankInfo: +T174FC 000:367.156 Name: SFLASH: TOC2 +T174FC 000:367.163 BaseAddr: 0x16007C00 +T174FC 000:367.182 AlwaysPresent: 1 +T174FC 000:367.189 LoaderInfo: +T174FC 000:367.196 Name: SFLASH:_TOC2 +T174FC 000:367.202 MaxSize: 0x00000400 +T174FC 000:367.209 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\Cypress\PSoC6\CY8C6xxx_SFLASH_TOC2.FLM +T174FC 000:367.215 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:367.222 FlashBankInfo: +T174FC 000:367.228 Name: SMIF +T174FC 000:367.235 BaseAddr: 0x18000000 +T174FC 000:367.254 LoaderInfo: +T174FC 000:367.261 Name: SMIF +T174FC 000:367.267 MaxSize: 0x08000000 +T174FC 000:367.274 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\Cypress\PSoC6\CY8C6xxx_SMIF.FLM +T174FC 000:367.281 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:367.289 Device entry modified: RSL10 +T174FC 000:367.296 ChipInfo: +T174FC 000:367.303 Core: JLINK_CORE_CORTEX_M3_R2P1 +T174FC 000:367.317 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\ONSemiconductor\RSL10\ONSemiconductor_RSL10.JLinkScript +T174FC 000:367.325 FlashBankInfo: +T174FC 000:367.332 Name: Main Flash +T174FC 000:367.338 BaseAddr: 0x00100000 +T174FC 000:367.393 AlwaysPresent: 1 +T174FC 000:367.402 LoaderInfo: +T174FC 000:367.408 Name: Main_Flash +T174FC 000:367.415 MaxSize: 0x00060000 +T174FC 000:367.421 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\ONSemiconductor\RSL10\ONSemiconductor_RSL10_Main_Flash.elf +T174FC 000:367.428 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:367.435 FlashBankInfo: +T174FC 000:367.441 Name: NVR Flash +T174FC 000:367.448 BaseAddr: 0x00080000 +T174FC 000:367.478 LoaderInfo: +T174FC 000:367.485 Name: NVR_Flash +T174FC 000:367.492 MaxSize: 0x00001800 +T174FC 000:367.499 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\ONSemiconductor\RSL10\ONSemiconductor_RSL10_NVR_Flash.elf +T174FC 000:367.505 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:367.514 Device entry modified: E31ARTY +T174FC 000:367.554 ChipInfo: +T174FC 000:367.561 Core: JLINK_CORE_RISC_V +T174FC 000:367.568 FlashBankInfo: +T174FC 000:367.575 Name: QSPI Flash +T174FC 000:367.582 BaseAddr: 0x40000000 +T174FC 000:367.623 LoaderInfo: +T174FC 000:367.631 Name: QSPI_Flash +T174FC 000:367.637 MaxSize: 0x08000000 +T174FC 000:367.644 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\SiFive\SiFive_FE310_ARTYBoard_QSPI.elf +T174FC 000:367.650 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:367.657 + ***** Internal Error: +T174FC 000:367.664 Error in XML device description file: Unknown/Missing core identifier for device "E31ARTY" +T174FC 000:367.682 Device entry modified: STM32F469AE +T174FC 000:367.695 FlashBankInfo: +T174FC 000:367.702 Name: QSPI Flash +T174FC 000:367.708 BaseAddr: 0x90000000 +T174FC 000:367.754 LoaderInfo: +T174FC 000:367.762 Name: QSPI_Flash +T174FC 000:367.768 MaxSize: 0x01000000 +T174FC 000:367.775 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\ST\STM32F4\ST_STM32F469I_Disco_QSPI.elf +T174FC 000:367.782 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:367.791 Device entry modified: STM32F469AG +T174FC 000:367.797 FlashBankInfo: +T174FC 000:367.804 Name: QSPI Flash +T174FC 000:367.811 BaseAddr: 0x90000000 +T174FC 000:367.832 LoaderInfo: +T174FC 000:367.839 Name: QSPI_Flash +T174FC 000:367.846 MaxSize: 0x01000000 +T174FC 000:367.852 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\ST\STM32F4\ST_STM32F469I_Disco_QSPI.elf +T174FC 000:367.859 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:367.867 Device entry modified: STM32F469AI +T174FC 000:367.873 FlashBankInfo: +T174FC 000:367.880 Name: QSPI Flash +T174FC 000:367.887 BaseAddr: 0x90000000 +T174FC 000:367.906 LoaderInfo: +T174FC 000:367.913 Name: QSPI_Flash +T174FC 000:367.920 MaxSize: 0x01000000 +T174FC 000:367.927 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\ST\STM32F4\ST_STM32F469I_Disco_QSPI.elf +T174FC 000:367.933 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:367.942 Device entry modified: STM32F469BE +T174FC 000:367.948 FlashBankInfo: +T174FC 000:367.954 Name: QSPI Flash +T174FC 000:367.961 BaseAddr: 0x90000000 +T174FC 000:367.980 LoaderInfo: +T174FC 000:367.987 Name: QSPI_Flash +T174FC 000:367.994 MaxSize: 0x01000000 +T174FC 000:368.001 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\ST\STM32F4\ST_STM32F469I_Disco_QSPI.elf +T174FC 000:368.007 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:368.015 Device entry modified: STM32F469BG +T174FC 000:368.022 FlashBankInfo: +T174FC 000:368.028 Name: QSPI Flash +T174FC 000:368.035 BaseAddr: 0x90000000 +T174FC 000:368.055 LoaderInfo: +T174FC 000:368.063 Name: QSPI_Flash +T174FC 000:368.089 MaxSize: 0x01000000 +T174FC 000:368.096 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\ST\STM32F4\ST_STM32F469I_Disco_QSPI.elf +T174FC 000:368.102 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:368.111 Device entry modified: STM32F469BI +T174FC 000:368.117 FlashBankInfo: +T174FC 000:368.124 Name: QSPI Flash +T174FC 000:368.130 BaseAddr: 0x90000000 +T174FC 000:368.151 LoaderInfo: +T174FC 000:368.158 Name: QSPI_Flash +T174FC 000:368.165 MaxSize: 0x01000000 +T174FC 000:368.171 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\ST\STM32F4\ST_STM32F469I_Disco_QSPI.elf +T174FC 000:368.209 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:368.217 Device entry modified: STM32F469IE +T174FC 000:368.224 FlashBankInfo: +T174FC 000:368.230 Name: QSPI Flash +T174FC 000:368.237 BaseAddr: 0x90000000 +T174FC 000:368.259 LoaderInfo: +T174FC 000:368.266 Name: QSPI_Flash +T174FC 000:368.273 MaxSize: 0x01000000 +T174FC 000:368.279 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\ST\STM32F4\ST_STM32F469I_Disco_QSPI.elf +T174FC 000:368.286 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:368.294 Device entry modified: STM32F469IG +T174FC 000:368.300 FlashBankInfo: +T174FC 000:368.307 Name: QSPI Flash +T174FC 000:368.314 BaseAddr: 0x90000000 +T174FC 000:368.332 LoaderInfo: +T174FC 000:368.340 Name: QSPI_Flash +T174FC 000:368.346 MaxSize: 0x01000000 +T174FC 000:368.353 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\ST\STM32F4\ST_STM32F469I_Disco_QSPI.elf +T174FC 000:368.359 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:368.367 Device entry modified: STM32F469II +T174FC 000:368.374 FlashBankInfo: +T174FC 000:368.380 Name: QSPI Flash +T174FC 000:368.387 BaseAddr: 0x90000000 +T174FC 000:368.406 LoaderInfo: +T174FC 000:368.413 Name: QSPI_Flash +T174FC 000:368.420 MaxSize: 0x01000000 +T174FC 000:368.426 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\ST\STM32F4\ST_STM32F469I_Disco_QSPI.elf +T174FC 000:368.433 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:368.441 Device entry modified: STM32F469NE +T174FC 000:368.447 FlashBankInfo: +T174FC 000:368.454 Name: QSPI Flash +T174FC 000:368.461 BaseAddr: 0x90000000 +T174FC 000:368.479 LoaderInfo: +T174FC 000:368.487 Name: QSPI_Flash +T174FC 000:368.493 MaxSize: 0x01000000 +T174FC 000:368.500 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\ST\STM32F4\ST_STM32F469I_Disco_QSPI.elf +T174FC 000:368.507 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:368.515 Device entry modified: STM32F469NG +T174FC 000:368.521 FlashBankInfo: +T174FC 000:368.527 Name: QSPI Flash +T174FC 000:368.534 BaseAddr: 0x90000000 +T174FC 000:368.553 LoaderInfo: +T174FC 000:368.560 Name: QSPI_Flash +T174FC 000:368.567 MaxSize: 0x01000000 +T174FC 000:368.573 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\ST\STM32F4\ST_STM32F469I_Disco_QSPI.elf +T174FC 000:368.580 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:368.588 Device entry modified: STM32F469NI +T174FC 000:368.594 FlashBankInfo: +T174FC 000:368.600 Name: QSPI Flash +T174FC 000:368.607 BaseAddr: 0x90000000 +T174FC 000:368.626 LoaderInfo: +T174FC 000:368.633 Name: QSPI_Flash +T174FC 000:368.640 MaxSize: 0x01000000 +T174FC 000:368.646 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\ST\STM32F4\ST_STM32F469I_Disco_QSPI.elf +T174FC 000:368.653 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:368.661 Device entry modified: STM32F469VE +T174FC 000:368.667 FlashBankInfo: +T174FC 000:368.673 Name: QSPI Flash +T174FC 000:368.680 BaseAddr: 0x90000000 +T174FC 000:368.699 LoaderInfo: +T174FC 000:368.706 Name: QSPI_Flash +T174FC 000:368.713 MaxSize: 0x01000000 +T174FC 000:368.719 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\ST\STM32F4\ST_STM32F469I_Disco_QSPI.elf +T174FC 000:368.726 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:368.734 Device entry modified: STM32F469VG +T174FC 000:368.742 FlashBankInfo: +T174FC 000:368.749 Name: QSPI Flash +T174FC 000:368.756 BaseAddr: 0x90000000 +T174FC 000:368.775 LoaderInfo: +T174FC 000:368.782 Name: QSPI_Flash +T174FC 000:368.789 MaxSize: 0x01000000 +T174FC 000:368.795 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\ST\STM32F4\ST_STM32F469I_Disco_QSPI.elf +T174FC 000:368.802 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:368.810 Device entry modified: STM32F469VI +T174FC 000:368.816 FlashBankInfo: +T174FC 000:368.823 Name: QSPI Flash +T174FC 000:368.829 BaseAddr: 0x90000000 +T174FC 000:368.848 LoaderInfo: +T174FC 000:368.856 Name: QSPI_Flash +T174FC 000:368.862 MaxSize: 0x01000000 +T174FC 000:368.869 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\ST\STM32F4\ST_STM32F469I_Disco_QSPI.elf +T174FC 000:368.876 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:368.884 Device entry modified: STM32F469ZE +T174FC 000:368.890 FlashBankInfo: +T174FC 000:368.896 Name: QSPI Flash +T174FC 000:368.903 BaseAddr: 0x90000000 +T174FC 000:368.922 LoaderInfo: +T174FC 000:368.929 Name: QSPI_Flash +T174FC 000:368.936 MaxSize: 0x01000000 +T174FC 000:368.943 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\ST\STM32F4\ST_STM32F469I_Disco_QSPI.elf +T174FC 000:368.949 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:368.957 Device entry modified: STM32F469ZG +T174FC 000:368.963 FlashBankInfo: +T174FC 000:368.970 Name: QSPI Flash +T174FC 000:368.976 BaseAddr: 0x90000000 +T174FC 000:368.995 LoaderInfo: +T174FC 000:369.002 Name: QSPI_Flash +T174FC 000:369.009 MaxSize: 0x01000000 +T174FC 000:369.015 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\ST\STM32F4\ST_STM32F469I_Disco_QSPI.elf +T174FC 000:369.022 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:369.030 Device entry modified: STM32F469ZI +T174FC 000:369.036 FlashBankInfo: +T174FC 000:369.043 Name: QSPI Flash +T174FC 000:369.049 BaseAddr: 0x90000000 +T174FC 000:369.070 LoaderInfo: +T174FC 000:369.077 Name: QSPI_Flash +T174FC 000:369.083 MaxSize: 0x01000000 +T174FC 000:369.090 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\ST\STM32F4\ST_STM32F469I_Disco_QSPI.elf +T174FC 000:369.097 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:369.105 Device entry modified: STM32F745IE +T174FC 000:369.117 FlashBankInfo: +T174FC 000:369.124 Name: QSPI Flash +T174FC 000:369.131 BaseAddr: 0x90000000 +T174FC 000:369.178 LoaderInfo: +T174FC 000:369.186 Name: QSPI_Flash +T174FC 000:369.192 MaxSize: 0x01000000 +T174FC 000:369.199 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\ST\STM32F7\ST_STM32F746G_Disco_QSPI.elf +T174FC 000:369.206 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:369.214 Device entry modified: STM32F745IG +T174FC 000:369.221 FlashBankInfo: +T174FC 000:369.227 Name: QSPI Flash +T174FC 000:369.234 BaseAddr: 0x90000000 +T174FC 000:369.255 LoaderInfo: +T174FC 000:369.262 Name: QSPI_Flash +T174FC 000:369.269 MaxSize: 0x01000000 +T174FC 000:369.276 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\ST\STM32F7\ST_STM32F746G_Disco_QSPI.elf +T174FC 000:369.282 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:369.290 Device entry modified: STM32F745VE +T174FC 000:369.296 FlashBankInfo: +T174FC 000:369.303 Name: QSPI Flash +T174FC 000:369.312 BaseAddr: 0x90000000 +T174FC 000:369.331 LoaderInfo: +T174FC 000:369.339 Name: QSPI_Flash +T174FC 000:369.345 MaxSize: 0x01000000 +T174FC 000:369.352 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\ST\STM32F7\ST_STM32F746G_Disco_QSPI.elf +T174FC 000:369.358 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:369.366 Device entry modified: STM32F745VG +T174FC 000:369.373 FlashBankInfo: +T174FC 000:369.379 Name: QSPI Flash +T174FC 000:369.386 BaseAddr: 0x90000000 +T174FC 000:369.405 LoaderInfo: +T174FC 000:369.412 Name: QSPI_Flash +T174FC 000:369.418 MaxSize: 0x01000000 +T174FC 000:369.425 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\ST\STM32F7\ST_STM32F746G_Disco_QSPI.elf +T174FC 000:369.431 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:369.439 Device entry modified: STM32F745ZE +T174FC 000:369.446 FlashBankInfo: +T174FC 000:369.452 Name: QSPI Flash +T174FC 000:369.459 BaseAddr: 0x90000000 +T174FC 000:369.477 LoaderInfo: +T174FC 000:369.485 Name: QSPI_Flash +T174FC 000:369.491 MaxSize: 0x01000000 +T174FC 000:369.498 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\ST\STM32F7\ST_STM32F746G_Disco_QSPI.elf +T174FC 000:369.504 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:369.512 Device entry modified: STM32F745ZG +T174FC 000:369.519 FlashBankInfo: +T174FC 000:369.525 Name: QSPI Flash +T174FC 000:369.532 BaseAddr: 0x90000000 +T174FC 000:369.551 LoaderInfo: +T174FC 000:369.558 Name: QSPI_Flash +T174FC 000:369.565 MaxSize: 0x01000000 +T174FC 000:369.571 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\ST\STM32F7\ST_STM32F746G_Disco_QSPI.elf +T174FC 000:369.578 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:369.586 Device entry modified: STM32F746BE +T174FC 000:369.592 FlashBankInfo: +T174FC 000:369.599 Name: QSPI Flash +T174FC 000:369.605 BaseAddr: 0x90000000 +T174FC 000:369.624 LoaderInfo: +T174FC 000:369.631 Name: QSPI_Flash +T174FC 000:369.638 MaxSize: 0x01000000 +T174FC 000:369.645 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\ST\STM32F7\ST_STM32F746G_Disco_QSPI.elf +T174FC 000:369.651 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:369.659 Device entry modified: STM32F746BG +T174FC 000:369.665 FlashBankInfo: +T174FC 000:369.672 Name: QSPI Flash +T174FC 000:369.678 BaseAddr: 0x90000000 +T174FC 000:369.697 LoaderInfo: +T174FC 000:369.704 Name: QSPI_Flash +T174FC 000:369.711 MaxSize: 0x01000000 +T174FC 000:369.718 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\ST\STM32F7\ST_STM32F746G_Disco_QSPI.elf +T174FC 000:369.724 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:369.732 Device entry modified: STM32F746IE +T174FC 000:369.738 FlashBankInfo: +T174FC 000:369.745 Name: QSPI Flash +T174FC 000:369.752 BaseAddr: 0x90000000 +T174FC 000:369.771 LoaderInfo: +T174FC 000:369.778 Name: QSPI_Flash +T174FC 000:369.784 MaxSize: 0x01000000 +T174FC 000:369.791 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\ST\STM32F7\ST_STM32F746G_Disco_QSPI.elf +T174FC 000:369.798 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:369.805 Device entry modified: STM32F746IG +T174FC 000:369.812 FlashBankInfo: +T174FC 000:369.818 Name: QSPI Flash +T174FC 000:369.825 BaseAddr: 0x90000000 +T174FC 000:369.844 LoaderInfo: +T174FC 000:369.853 Name: QSPI_Flash +T174FC 000:369.859 MaxSize: 0x01000000 +T174FC 000:369.866 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\ST\STM32F7\ST_STM32F746G_Disco_QSPI.elf +T174FC 000:369.873 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:369.880 Device entry modified: STM32F746NE +T174FC 000:369.887 FlashBankInfo: +T174FC 000:369.893 Name: QSPI Flash +T174FC 000:369.900 BaseAddr: 0x90000000 +T174FC 000:369.919 LoaderInfo: +T174FC 000:369.926 Name: QSPI_Flash +T174FC 000:369.933 MaxSize: 0x01000000 +T174FC 000:369.940 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\ST\STM32F7\ST_STM32F746G_Disco_QSPI.elf +T174FC 000:369.946 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:369.954 Device entry modified: STM32F746NG +T174FC 000:369.961 FlashBankInfo: +T174FC 000:369.967 Name: QSPI Flash +T174FC 000:369.974 BaseAddr: 0x90000000 +T174FC 000:369.993 LoaderInfo: +T174FC 000:370.000 Name: QSPI_Flash +T174FC 000:370.006 MaxSize: 0x01000000 +T174FC 000:370.013 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\ST\STM32F7\ST_STM32F746G_Disco_QSPI.elf +T174FC 000:370.019 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:370.027 Device entry modified: STM32F746VE +T174FC 000:370.034 FlashBankInfo: +T174FC 000:370.041 Name: QSPI Flash +T174FC 000:370.047 BaseAddr: 0x90000000 +T174FC 000:370.068 LoaderInfo: +T174FC 000:370.075 Name: QSPI_Flash +T174FC 000:370.081 MaxSize: 0x01000000 +T174FC 000:370.088 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\ST\STM32F7\ST_STM32F746G_Disco_QSPI.elf +T174FC 000:370.095 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:370.103 Device entry modified: STM32F746VG +T174FC 000:370.109 FlashBankInfo: +T174FC 000:370.115 Name: QSPI Flash +T174FC 000:370.122 BaseAddr: 0x90000000 +T174FC 000:370.141 LoaderInfo: +T174FC 000:370.148 Name: QSPI_Flash +T174FC 000:370.154 MaxSize: 0x01000000 +T174FC 000:370.161 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\ST\STM32F7\ST_STM32F746G_Disco_QSPI.elf +T174FC 000:370.168 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:370.175 Device entry modified: STM32F746ZE +T174FC 000:370.181 FlashBankInfo: +T174FC 000:370.188 Name: QSPI Flash +T174FC 000:370.195 BaseAddr: 0x90000000 +T174FC 000:370.213 LoaderInfo: +T174FC 000:370.221 Name: QSPI_Flash +T174FC 000:370.227 MaxSize: 0x01000000 +T174FC 000:370.234 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\ST\STM32F7\ST_STM32F746G_Disco_QSPI.elf +T174FC 000:370.240 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:370.248 Device entry modified: STM32F746ZG +T174FC 000:370.254 FlashBankInfo: +T174FC 000:370.260 Name: QSPI Flash +T174FC 000:370.267 BaseAddr: 0x90000000 +T174FC 000:370.286 LoaderInfo: +T174FC 000:370.293 Name: QSPI_Flash +T174FC 000:370.299 MaxSize: 0x01000000 +T174FC 000:370.306 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\ST\STM32F7\ST_STM32F746G_Disco_QSPI.elf +T174FC 000:370.313 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:370.321 Device entry modified: STM32F756BE +T174FC 000:370.327 FlashBankInfo: +T174FC 000:370.334 Name: QSPI Flash +T174FC 000:370.340 BaseAddr: 0x90000000 +T174FC 000:370.359 LoaderInfo: +T174FC 000:370.366 Name: QSPI_Flash +T174FC 000:370.373 MaxSize: 0x01000000 +T174FC 000:370.381 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\ST\STM32F7\ST_STM32F746G_Disco_QSPI.elf +T174FC 000:370.388 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:370.397 Device entry modified: STM32F756BG +T174FC 000:370.408 FlashBankInfo: +T174FC 000:370.414 Name: QSPI Flash +T174FC 000:370.421 BaseAddr: 0x90000000 +T174FC 000:370.442 LoaderInfo: +T174FC 000:370.449 Name: QSPI_Flash +T174FC 000:370.456 MaxSize: 0x01000000 +T174FC 000:370.462 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\ST\STM32F7\ST_STM32F746G_Disco_QSPI.elf +T174FC 000:370.469 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:370.477 Device entry modified: STM32F756IE +T174FC 000:370.484 FlashBankInfo: +T174FC 000:370.490 Name: QSPI Flash +T174FC 000:370.497 BaseAddr: 0x90000000 +T174FC 000:370.516 LoaderInfo: +T174FC 000:370.523 Name: QSPI_Flash +T174FC 000:370.530 MaxSize: 0x01000000 +T174FC 000:370.536 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\ST\STM32F7\ST_STM32F746G_Disco_QSPI.elf +T174FC 000:370.543 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:370.551 Device entry modified: STM32F756IG +T174FC 000:370.564 FlashBankInfo: +T174FC 000:370.571 Name: QSPI Flash +T174FC 000:370.578 BaseAddr: 0x90000000 +T174FC 000:370.597 LoaderInfo: +T174FC 000:370.604 Name: QSPI_Flash +T174FC 000:370.611 MaxSize: 0x01000000 +T174FC 000:370.618 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\ST\STM32F7\ST_STM32F746G_Disco_QSPI.elf +T174FC 000:370.624 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:370.632 Device entry modified: STM32F756NE +T174FC 000:370.639 FlashBankInfo: +T174FC 000:370.645 Name: QSPI Flash +T174FC 000:370.652 BaseAddr: 0x90000000 +T174FC 000:370.671 LoaderInfo: +T174FC 000:370.678 Name: QSPI_Flash +T174FC 000:370.684 MaxSize: 0x01000000 +T174FC 000:370.691 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\ST\STM32F7\ST_STM32F746G_Disco_QSPI.elf +T174FC 000:370.697 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:370.705 Device entry modified: STM32F756NG +T174FC 000:370.711 FlashBankInfo: +T174FC 000:370.718 Name: QSPI Flash +T174FC 000:370.725 BaseAddr: 0x90000000 +T174FC 000:370.743 LoaderInfo: +T174FC 000:370.750 Name: QSPI_Flash +T174FC 000:370.757 MaxSize: 0x01000000 +T174FC 000:370.764 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\ST\STM32F7\ST_STM32F746G_Disco_QSPI.elf +T174FC 000:370.770 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:370.778 Device entry modified: STM32F756VE +T174FC 000:370.784 FlashBankInfo: +T174FC 000:370.791 Name: QSPI Flash +T174FC 000:370.797 BaseAddr: 0x90000000 +T174FC 000:370.816 LoaderInfo: +T174FC 000:370.823 Name: QSPI_Flash +T174FC 000:370.830 MaxSize: 0x01000000 +T174FC 000:370.836 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\ST\STM32F7\ST_STM32F746G_Disco_QSPI.elf +T174FC 000:370.843 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:370.851 Device entry modified: STM32F756VG +T174FC 000:370.857 FlashBankInfo: +T174FC 000:370.864 Name: QSPI Flash +T174FC 000:370.871 BaseAddr: 0x90000000 +T174FC 000:370.889 LoaderInfo: +T174FC 000:370.897 Name: QSPI_Flash +T174FC 000:370.903 MaxSize: 0x01000000 +T174FC 000:370.910 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\ST\STM32F7\ST_STM32F746G_Disco_QSPI.elf +T174FC 000:370.918 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:370.926 Device entry modified: STM32F756ZE +T174FC 000:370.933 FlashBankInfo: +T174FC 000:370.939 Name: QSPI Flash +T174FC 000:370.946 BaseAddr: 0x90000000 +T174FC 000:370.965 LoaderInfo: +T174FC 000:370.972 Name: QSPI_Flash +T174FC 000:370.979 MaxSize: 0x01000000 +T174FC 000:370.985 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\ST\STM32F7\ST_STM32F746G_Disco_QSPI.elf +T174FC 000:370.992 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:371.000 Device entry modified: STM32F756ZG +T174FC 000:371.006 FlashBankInfo: +T174FC 000:371.013 Name: QSPI Flash +T174FC 000:371.020 BaseAddr: 0x90000000 +T174FC 000:371.038 LoaderInfo: +T174FC 000:371.046 Name: QSPI_Flash +T174FC 000:371.053 MaxSize: 0x01000000 +T174FC 000:371.060 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\ST\STM32F7\ST_STM32F746G_Disco_QSPI.elf +T174FC 000:371.067 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:371.075 Device entry modified: STM32F765BG +T174FC 000:371.081 FlashBankInfo: +T174FC 000:371.088 Name: QSPI Flash +T174FC 000:371.094 BaseAddr: 0x90000000 +T174FC 000:371.114 LoaderInfo: +T174FC 000:371.121 Name: QSPI_Flash +T174FC 000:371.127 MaxSize: 0x01000000 +T174FC 000:371.134 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\ST\STM32F7\ST_STM32F746G_Disco_QSPI.elf +T174FC 000:371.140 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:371.149 Device entry modified: STM32F765BI +T174FC 000:371.155 FlashBankInfo: +T174FC 000:371.161 Name: QSPI Flash +T174FC 000:371.168 BaseAddr: 0x90000000 +T174FC 000:371.187 LoaderInfo: +T174FC 000:371.194 Name: QSPI_Flash +T174FC 000:371.201 MaxSize: 0x01000000 +T174FC 000:371.208 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\ST\STM32F7\ST_STM32F746G_Disco_QSPI.elf +T174FC 000:371.214 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:371.222 Device entry modified: STM32F765IG +T174FC 000:371.229 FlashBankInfo: +T174FC 000:371.235 Name: QSPI Flash +T174FC 000:371.242 BaseAddr: 0x90000000 +T174FC 000:371.261 LoaderInfo: +T174FC 000:371.268 Name: QSPI_Flash +T174FC 000:371.274 MaxSize: 0x01000000 +T174FC 000:371.281 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\ST\STM32F7\ST_STM32F746G_Disco_QSPI.elf +T174FC 000:371.287 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:371.295 Device entry modified: STM32F765II +T174FC 000:371.302 FlashBankInfo: +T174FC 000:371.308 Name: QSPI Flash +T174FC 000:371.315 BaseAddr: 0x90000000 +T174FC 000:371.333 LoaderInfo: +T174FC 000:371.341 Name: QSPI_Flash +T174FC 000:371.347 MaxSize: 0x01000000 +T174FC 000:371.354 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\ST\STM32F7\ST_STM32F746G_Disco_QSPI.elf +T174FC 000:371.360 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:371.368 Device entry modified: STM32F765NG +T174FC 000:371.374 FlashBankInfo: +T174FC 000:371.381 Name: QSPI Flash +T174FC 000:371.387 BaseAddr: 0x90000000 +T174FC 000:371.406 LoaderInfo: +T174FC 000:371.420 Name: QSPI_Flash +T174FC 000:371.426 MaxSize: 0x01000000 +T174FC 000:371.433 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\ST\STM32F7\ST_STM32F746G_Disco_QSPI.elf +T174FC 000:371.440 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:371.460 Device entry modified: STM32F765NI +T174FC 000:371.467 FlashBankInfo: +T174FC 000:371.475 Name: QSPI Flash +T174FC 000:371.481 BaseAddr: 0x90000000 +T174FC 000:371.503 LoaderInfo: +T174FC 000:371.510 Name: QSPI_Flash +T174FC 000:371.517 MaxSize: 0x01000000 +T174FC 000:371.549 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\ST\STM32F7\ST_STM32F746G_Disco_QSPI.elf +T174FC 000:371.555 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:371.563 Device entry modified: STM32F765VG +T174FC 000:371.570 FlashBankInfo: +T174FC 000:371.576 Name: QSPI Flash +T174FC 000:371.583 BaseAddr: 0x90000000 +T174FC 000:371.603 LoaderInfo: +T174FC 000:371.610 Name: QSPI_Flash +T174FC 000:371.617 MaxSize: 0x01000000 +T174FC 000:371.623 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\ST\STM32F7\ST_STM32F746G_Disco_QSPI.elf +T174FC 000:371.630 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:371.638 Device entry modified: STM32F765VI +T174FC 000:371.644 FlashBankInfo: +T174FC 000:371.650 Name: QSPI Flash +T174FC 000:371.657 BaseAddr: 0x90000000 +T174FC 000:371.676 LoaderInfo: +T174FC 000:371.683 Name: QSPI_Flash +T174FC 000:371.690 MaxSize: 0x01000000 +T174FC 000:371.696 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\ST\STM32F7\ST_STM32F746G_Disco_QSPI.elf +T174FC 000:371.703 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:371.711 Device entry modified: STM32F765ZG +T174FC 000:371.723 FlashBankInfo: +T174FC 000:371.730 Name: QSPI Flash +T174FC 000:371.742 BaseAddr: 0x90000000 +T174FC 000:371.766 LoaderInfo: +T174FC 000:371.774 Name: QSPI_Flash +T174FC 000:371.780 MaxSize: 0x01000000 +T174FC 000:371.787 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\ST\STM32F7\ST_STM32F746G_Disco_QSPI.elf +T174FC 000:371.793 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:371.801 Device entry modified: STM32F765ZI +T174FC 000:371.808 FlashBankInfo: +T174FC 000:371.814 Name: QSPI Flash +T174FC 000:371.821 BaseAddr: 0x90000000 +T174FC 000:371.847 LoaderInfo: +T174FC 000:371.854 Name: QSPI_Flash +T174FC 000:371.861 MaxSize: 0x01000000 +T174FC 000:371.867 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\ST\STM32F7\ST_STM32F746G_Disco_QSPI.elf +T174FC 000:371.874 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:371.882 Device entry modified: STM32F767BG +T174FC 000:371.889 FlashBankInfo: +T174FC 000:371.895 Name: QSPI Flash +T174FC 000:371.902 BaseAddr: 0x90000000 +T174FC 000:371.921 LoaderInfo: +T174FC 000:371.928 Name: QSPI_Flash +T174FC 000:371.935 MaxSize: 0x01000000 +T174FC 000:371.941 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\ST\STM32F7\ST_STM32F746G_Disco_QSPI.elf +T174FC 000:371.948 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:371.956 Device entry modified: STM32F767BI +T174FC 000:371.962 FlashBankInfo: +T174FC 000:371.969 Name: QSPI Flash +T174FC 000:371.975 BaseAddr: 0x90000000 +T174FC 000:371.994 LoaderInfo: +T174FC 000:372.001 Name: QSPI_Flash +T174FC 000:372.008 MaxSize: 0x01000000 +T174FC 000:372.014 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\ST\STM32F7\ST_STM32F746G_Disco_QSPI.elf +T174FC 000:372.021 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:372.029 Device entry modified: STM32F767IG +T174FC 000:372.035 FlashBankInfo: +T174FC 000:372.042 Name: QSPI Flash +T174FC 000:372.048 BaseAddr: 0x90000000 +T174FC 000:372.071 LoaderInfo: +T174FC 000:372.079 Name: QSPI_Flash +T174FC 000:372.085 MaxSize: 0x01000000 +T174FC 000:372.092 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\ST\STM32F7\ST_STM32F746G_Disco_QSPI.elf +T174FC 000:372.098 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:372.107 Device entry modified: STM32F767II +T174FC 000:372.113 FlashBankInfo: +T174FC 000:372.120 Name: QSPI Flash +T174FC 000:372.126 BaseAddr: 0x90000000 +T174FC 000:372.145 LoaderInfo: +T174FC 000:372.153 Name: QSPI_Flash +T174FC 000:372.159 MaxSize: 0x01000000 +T174FC 000:372.166 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\ST\STM32F7\ST_STM32F746G_Disco_QSPI.elf +T174FC 000:372.172 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:372.181 Device entry modified: STM32F767NG +T174FC 000:372.187 FlashBankInfo: +T174FC 000:372.194 Name: QSPI Flash +T174FC 000:372.200 BaseAddr: 0x90000000 +T174FC 000:372.219 LoaderInfo: +T174FC 000:372.226 Name: QSPI_Flash +T174FC 000:372.233 MaxSize: 0x01000000 +T174FC 000:372.239 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\ST\STM32F7\ST_STM32F746G_Disco_QSPI.elf +T174FC 000:372.246 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:372.254 Device entry modified: STM32F767NI +T174FC 000:372.260 FlashBankInfo: +T174FC 000:372.267 Name: QSPI Flash +T174FC 000:372.273 BaseAddr: 0x90000000 +T174FC 000:372.292 LoaderInfo: +T174FC 000:372.299 Name: QSPI_Flash +T174FC 000:372.306 MaxSize: 0x01000000 +T174FC 000:372.312 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\ST\STM32F7\ST_STM32F746G_Disco_QSPI.elf +T174FC 000:372.319 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:372.327 Device entry modified: STM32F767VG +T174FC 000:372.333 FlashBankInfo: +T174FC 000:372.339 Name: QSPI Flash +T174FC 000:372.346 BaseAddr: 0x90000000 +T174FC 000:372.364 LoaderInfo: +T174FC 000:372.372 Name: QSPI_Flash +T174FC 000:372.378 MaxSize: 0x01000000 +T174FC 000:372.385 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\ST\STM32F7\ST_STM32F746G_Disco_QSPI.elf +T174FC 000:372.391 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:372.399 Device entry modified: STM32F767VI +T174FC 000:372.406 FlashBankInfo: +T174FC 000:372.412 Name: QSPI Flash +T174FC 000:372.419 BaseAddr: 0x90000000 +T174FC 000:372.438 LoaderInfo: +T174FC 000:372.445 Name: QSPI_Flash +T174FC 000:372.452 MaxSize: 0x01000000 +T174FC 000:372.458 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\ST\STM32F7\ST_STM32F746G_Disco_QSPI.elf +T174FC 000:372.465 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:372.473 Device entry modified: STM32F767ZG +T174FC 000:372.479 FlashBankInfo: +T174FC 000:372.485 Name: QSPI Flash +T174FC 000:372.492 BaseAddr: 0x90000000 +T174FC 000:372.510 LoaderInfo: +T174FC 000:372.518 Name: QSPI_Flash +T174FC 000:372.524 MaxSize: 0x01000000 +T174FC 000:372.531 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\ST\STM32F7\ST_STM32F746G_Disco_QSPI.elf +T174FC 000:372.537 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:372.545 Device entry modified: STM32F767ZI +T174FC 000:372.551 FlashBankInfo: +T174FC 000:372.558 Name: QSPI Flash +T174FC 000:372.564 BaseAddr: 0x90000000 +T174FC 000:372.583 LoaderInfo: +T174FC 000:372.590 Name: QSPI_Flash +T174FC 000:372.598 MaxSize: 0x01000000 +T174FC 000:372.605 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\ST\STM32F7\ST_STM32F746G_Disco_QSPI.elf +T174FC 000:372.612 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:372.619 Device entry modified: STM32F768AI +T174FC 000:372.625 FlashBankInfo: +T174FC 000:372.632 Name: QSPI Flash +T174FC 000:372.639 BaseAddr: 0x90000000 +T174FC 000:372.658 LoaderInfo: +T174FC 000:372.665 Name: QSPI_Flash +T174FC 000:372.672 MaxSize: 0x01000000 +T174FC 000:372.678 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\ST\STM32F7\ST_STM32F746G_Disco_QSPI.elf +T174FC 000:372.685 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:372.693 Device entry modified: STM32F769AG +T174FC 000:372.699 FlashBankInfo: +T174FC 000:372.706 Name: QSPI Flash +T174FC 000:372.712 BaseAddr: 0x90000000 +T174FC 000:372.731 LoaderInfo: +T174FC 000:372.738 Name: QSPI_Flash +T174FC 000:372.745 MaxSize: 0x01000000 +T174FC 000:372.751 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\ST\STM32F7\ST_STM32F746G_Disco_QSPI.elf +T174FC 000:372.758 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:372.765 Device entry modified: STM32F769AI +T174FC 000:372.772 FlashBankInfo: +T174FC 000:372.778 Name: QSPI Flash +T174FC 000:372.785 BaseAddr: 0x90000000 +T174FC 000:372.803 LoaderInfo: +T174FC 000:372.811 Name: QSPI_Flash +T174FC 000:372.817 MaxSize: 0x01000000 +T174FC 000:372.824 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\ST\STM32F7\ST_STM32F746G_Disco_QSPI.elf +T174FC 000:372.830 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:372.838 Device entry modified: STM32F769BG +T174FC 000:372.845 FlashBankInfo: +T174FC 000:372.851 Name: QSPI Flash +T174FC 000:372.858 BaseAddr: 0x90000000 +T174FC 000:372.877 LoaderInfo: +T174FC 000:372.884 Name: QSPI_Flash +T174FC 000:372.890 MaxSize: 0x01000000 +T174FC 000:372.897 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\ST\STM32F7\ST_STM32F746G_Disco_QSPI.elf +T174FC 000:372.903 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:372.911 Device entry modified: STM32F769BI +T174FC 000:372.918 FlashBankInfo: +T174FC 000:372.924 Name: QSPI Flash +T174FC 000:372.931 BaseAddr: 0x90000000 +T174FC 000:372.949 LoaderInfo: +T174FC 000:372.956 Name: QSPI_Flash +T174FC 000:372.963 MaxSize: 0x01000000 +T174FC 000:372.970 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\ST\STM32F7\ST_STM32F746G_Disco_QSPI.elf +T174FC 000:372.976 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:372.984 Device entry modified: STM32F769IG +T174FC 000:372.991 FlashBankInfo: +T174FC 000:372.997 Name: QSPI Flash +T174FC 000:373.004 BaseAddr: 0x90000000 +T174FC 000:373.022 LoaderInfo: +T174FC 000:373.030 Name: QSPI_Flash +T174FC 000:373.036 MaxSize: 0x01000000 +T174FC 000:373.043 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\ST\STM32F7\ST_STM32F746G_Disco_QSPI.elf +T174FC 000:373.049 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:373.058 Device entry modified: STM32F769II +T174FC 000:373.065 FlashBankInfo: +T174FC 000:373.071 Name: QSPI Flash +T174FC 000:373.078 BaseAddr: 0x90000000 +T174FC 000:373.097 LoaderInfo: +T174FC 000:373.104 Name: QSPI_Flash +T174FC 000:373.111 MaxSize: 0x01000000 +T174FC 000:373.117 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\ST\STM32F7\ST_STM32F746G_Disco_QSPI.elf +T174FC 000:373.126 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:373.134 Device entry modified: STM32F769NG +T174FC 000:373.140 FlashBankInfo: +T174FC 000:373.147 Name: QSPI Flash +T174FC 000:373.153 BaseAddr: 0x90000000 +T174FC 000:373.173 LoaderInfo: +T174FC 000:373.180 Name: QSPI_Flash +T174FC 000:373.186 MaxSize: 0x01000000 +T174FC 000:373.193 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\ST\STM32F7\ST_STM32F746G_Disco_QSPI.elf +T174FC 000:373.200 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:373.207 Device entry modified: STM32F769NI +T174FC 000:373.214 FlashBankInfo: +T174FC 000:373.220 Name: QSPI Flash +T174FC 000:373.227 BaseAddr: 0x90000000 +T174FC 000:373.246 LoaderInfo: +T174FC 000:373.253 Name: QSPI_Flash +T174FC 000:373.260 MaxSize: 0x01000000 +T174FC 000:373.266 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\ST\STM32F7\ST_STM32F746G_Disco_QSPI.elf +T174FC 000:373.273 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:373.281 Device entry modified: STM32F777BI +T174FC 000:373.288 FlashBankInfo: +T174FC 000:373.294 Name: QSPI Flash +T174FC 000:373.301 BaseAddr: 0x90000000 +T174FC 000:373.319 LoaderInfo: +T174FC 000:373.327 Name: QSPI_Flash +T174FC 000:373.337 MaxSize: 0x01000000 +T174FC 000:373.345 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\ST\STM32F7\ST_STM32F746G_Disco_QSPI.elf +T174FC 000:373.352 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:373.360 Device entry modified: STM32F777II +T174FC 000:373.366 FlashBankInfo: +T174FC 000:373.373 Name: QSPI Flash +T174FC 000:373.379 BaseAddr: 0x90000000 +T174FC 000:373.400 LoaderInfo: +T174FC 000:373.407 Name: QSPI_Flash +T174FC 000:373.414 MaxSize: 0x01000000 +T174FC 000:373.420 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\ST\STM32F7\ST_STM32F746G_Disco_QSPI.elf +T174FC 000:373.427 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:373.435 Device entry modified: STM32F777NI +T174FC 000:373.442 FlashBankInfo: +T174FC 000:373.448 Name: QSPI Flash +T174FC 000:373.455 BaseAddr: 0x90000000 +T174FC 000:373.474 LoaderInfo: +T174FC 000:373.481 Name: QSPI_Flash +T174FC 000:373.488 MaxSize: 0x01000000 +T174FC 000:373.494 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\ST\STM32F7\ST_STM32F746G_Disco_QSPI.elf +T174FC 000:373.501 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:373.509 Device entry modified: STM32F777VI +T174FC 000:373.515 FlashBankInfo: +T174FC 000:373.522 Name: QSPI Flash +T174FC 000:373.529 BaseAddr: 0x90000000 +T174FC 000:373.547 LoaderInfo: +T174FC 000:373.555 Name: QSPI_Flash +T174FC 000:373.561 MaxSize: 0x01000000 +T174FC 000:373.568 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\ST\STM32F7\ST_STM32F746G_Disco_QSPI.elf +T174FC 000:373.574 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:373.582 Device entry modified: STM32F777ZI +T174FC 000:373.588 FlashBankInfo: +T174FC 000:373.595 Name: QSPI Flash +T174FC 000:373.602 BaseAddr: 0x90000000 +T174FC 000:373.620 LoaderInfo: +T174FC 000:373.628 Name: QSPI_Flash +T174FC 000:373.634 MaxSize: 0x01000000 +T174FC 000:373.641 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\ST\STM32F7\ST_STM32F746G_Disco_QSPI.elf +T174FC 000:373.647 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:373.658 Device entry modified: STM32F778AI +T174FC 000:373.664 FlashBankInfo: +T174FC 000:373.670 Name: QSPI Flash +T174FC 000:373.677 BaseAddr: 0x90000000 +T174FC 000:373.696 LoaderInfo: +T174FC 000:373.704 Name: QSPI_Flash +T174FC 000:373.710 MaxSize: 0x01000000 +T174FC 000:373.717 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\ST\STM32F7\ST_STM32F746G_Disco_QSPI.elf +T174FC 000:373.724 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:373.731 Device entry modified: STM32F779AI +T174FC 000:373.737 FlashBankInfo: +T174FC 000:373.744 Name: QSPI Flash +T174FC 000:373.751 BaseAddr: 0x90000000 +T174FC 000:373.770 LoaderInfo: +T174FC 000:373.777 Name: QSPI_Flash +T174FC 000:373.783 MaxSize: 0x01000000 +T174FC 000:373.790 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\ST\STM32F7\ST_STM32F746G_Disco_QSPI.elf +T174FC 000:373.797 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:373.805 Device entry modified: STM32F779BI +T174FC 000:373.811 FlashBankInfo: +T174FC 000:373.817 Name: QSPI Flash +T174FC 000:373.824 BaseAddr: 0x90000000 +T174FC 000:373.843 LoaderInfo: +T174FC 000:373.850 Name: QSPI_Flash +T174FC 000:373.857 MaxSize: 0x01000000 +T174FC 000:373.864 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\ST\STM32F7\ST_STM32F746G_Disco_QSPI.elf +T174FC 000:373.870 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:373.878 Device entry modified: STM32F779II +T174FC 000:373.885 FlashBankInfo: +T174FC 000:373.892 Name: QSPI Flash +T174FC 000:373.899 BaseAddr: 0x90000000 +T174FC 000:373.918 LoaderInfo: +T174FC 000:373.925 Name: QSPI_Flash +T174FC 000:373.932 MaxSize: 0x01000000 +T174FC 000:373.939 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\ST\STM32F7\ST_STM32F746G_Disco_QSPI.elf +T174FC 000:373.945 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:373.953 Device entry modified: STM32F779NI +T174FC 000:373.960 FlashBankInfo: +T174FC 000:373.966 Name: QSPI Flash +T174FC 000:373.973 BaseAddr: 0x90000000 +T174FC 000:373.992 LoaderInfo: +T174FC 000:373.999 Name: QSPI_Flash +T174FC 000:374.006 MaxSize: 0x01000000 +T174FC 000:374.013 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\ST\STM32F7\ST_STM32F746G_Disco_QSPI.elf +T174FC 000:374.019 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:374.027 Device entry modified: Z32F0642 +T174FC 000:374.033 ChipInfo: +T174FC 000:374.040 WorkRAMSize: 0x00002000 +T174FC 000:374.047 FlashBankInfo: +T174FC 000:374.055 Name: Internal Flash +T174FC 000:374.106 AlwaysPresent: 1 +T174FC 000:374.115 LoaderInfo: +T174FC 000:374.121 Name: Internal_Flash +T174FC 000:374.128 MaxSize: 0x00010000 +T174FC 000:374.134 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\Zilog\Z32F0642\Z32F0642.FLM +T174FC 000:374.141 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:374.150 Device entry modified: CM40z_128_512 +T174FC 000:374.173 ChipInfo: +T174FC 000:374.181 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\AnalogDevices\ADSP-CM40\Analog_CM40x.pex +T174FC 000:374.190 Device entry modified: CM40z_128_256 +T174FC 000:374.201 ChipInfo: +T174FC 000:374.209 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\AnalogDevices\ADSP-CM40\Analog_CM40x.pex +T174FC 000:374.217 Device entry modified: CM40z_384_2048 +T174FC 000:374.229 ChipInfo: +T174FC 000:374.236 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\AnalogDevices\ADSP-CM40\Analog_CM40x.pex +T174FC 000:374.247 Device entry modified: CM40z_128_512 +T174FC 000:374.260 Device entry modified: CM40z_128_256 +T174FC 000:374.273 Device entry modified: CM40z_384_2048 +T174FC 000:374.287 Device entry modified: CM40z_384_2048 +T174FC 000:374.300 Device entry modified: CM40z_128_1024 +T174FC 000:374.312 ChipInfo: +T174FC 000:374.319 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\AnalogDevices\ADSP-CM40\Analog_CM40x.pex +T174FC 000:374.327 Device entry modified: CM40z_384_2048 +T174FC 000:374.340 Device entry modified: CM40z_384_2048 +T174FC 000:374.353 Device entry modified: CM40z_384_2048 +T174FC 000:374.366 Device entry modified: CM40z_384_2048 +T174FC 000:374.380 Device entry modified: ADSP-CM416CSWZ-BF_M0 +T174FC 000:374.392 ChipInfo: +T174FC 000:374.399 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\AnalogDevices\ADSP-CM41\Analog_CM41x_M0.pex +T174FC 000:374.408 Device entry modified: ADSP-CM416CSWZ-CF_M0 +T174FC 000:374.419 ChipInfo: +T174FC 000:374.426 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\AnalogDevices\ADSP-CM41\Analog_CM41x_M0.pex +T174FC 000:374.435 Device entry modified: ADSP-CM417CSWZ-CF_M0 +T174FC 000:374.446 ChipInfo: +T174FC 000:374.453 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\AnalogDevices\ADSP-CM41\Analog_CM41x_M0.pex +T174FC 000:374.461 Device entry modified: ADSP-CM417CSWZ-DF_M0 +T174FC 000:374.472 ChipInfo: +T174FC 000:374.479 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\AnalogDevices\ADSP-CM41\Analog_CM41x_M0.pex +T174FC 000:374.488 Device entry modified: ADSP-CM418CBCZ-BF_M0 +T174FC 000:374.500 ChipInfo: +T174FC 000:374.507 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\AnalogDevices\ADSP-CM41\Analog_CM41x_M0.pex +T174FC 000:374.515 Device entry modified: ADSP-CM418CBCZ-CF_M0 +T174FC 000:374.527 ChipInfo: +T174FC 000:374.534 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\AnalogDevices\ADSP-CM41\Analog_CM41x_M0.pex +T174FC 000:374.543 Device entry modified: ADSP-CM419CBCZ-CF_M0 +T174FC 000:374.554 ChipInfo: +T174FC 000:374.561 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\AnalogDevices\ADSP-CM41\Analog_CM41x_M0.pex +T174FC 000:374.569 Device entry modified: ADSP-CM419CBCZ-DF_M0 +T174FC 000:374.580 ChipInfo: +T174FC 000:374.588 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\AnalogDevices\ADSP-CM41\Analog_CM41x_M0.pex +T174FC 000:374.596 Device entry modified: ADSP-CM411CBCZ-AF_M4 +T174FC 000:374.607 ChipInfo: +T174FC 000:374.614 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\AnalogDevices\ADSP-CM41\Analog_CM41x_M4.pex +T174FC 000:374.623 FlashBankInfo: +T174FC 000:374.630 Name: Flash Block A +T174FC 000:374.637 BaseAddr: 0x11000000 +T174FC 000:374.680 AlwaysPresent: 1 +T174FC 000:374.693 LoaderInfo: +T174FC 000:374.700 Name: Flash_Block_A +T174FC 000:374.707 MaxSize: 0x00020000 +T174FC 000:374.714 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\AnalogDevices\ADSP-CM41\CM41x_FlashA_128.FLM +T174FC 000:374.720 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:374.727 FlashBankInfo: +T174FC 000:374.733 Name: Flash Block B +T174FC 000:374.740 BaseAddr: 0x11080000 +T174FC 000:374.770 AlwaysPresent: 1 +T174FC 000:374.778 LoaderInfo: +T174FC 000:374.785 Name: Flash_Block_B +T174FC 000:374.791 MaxSize: 0x00020000 +T174FC 000:374.798 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\AnalogDevices\ADSP-CM41\CM41x_FlashB_128.FLM +T174FC 000:374.804 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:374.816 Device entry modified: ADSP-CM411CBCZ-BF_M4 +T174FC 000:374.829 ChipInfo: +T174FC 000:374.836 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\AnalogDevices\ADSP-CM41\Analog_CM41x_M4.pex +T174FC 000:374.845 FlashBankInfo: +T174FC 000:374.851 Name: Flash Block A +T174FC 000:374.858 BaseAddr: 0x11000000 +T174FC 000:374.877 AlwaysPresent: 1 +T174FC 000:374.885 LoaderInfo: +T174FC 000:374.891 Name: Flash_Block_A +T174FC 000:374.898 MaxSize: 0x00020000 +T174FC 000:374.904 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\AnalogDevices\ADSP-CM41\CM41x_FlashA_128.FLM +T174FC 000:374.911 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:374.918 FlashBankInfo: +T174FC 000:374.924 Name: Flash Block B +T174FC 000:374.931 BaseAddr: 0x11080000 +T174FC 000:374.950 AlwaysPresent: 1 +T174FC 000:374.957 LoaderInfo: +T174FC 000:374.963 Name: Flash_Block_B +T174FC 000:374.970 MaxSize: 0x00020000 +T174FC 000:374.977 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\AnalogDevices\ADSP-CM41\CM41x_FlashB_128.FLM +T174FC 000:374.983 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:374.992 Device entry modified: ADSP-CM412CSWZ-AF_M4 +T174FC 000:375.004 ChipInfo: +T174FC 000:375.011 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\AnalogDevices\ADSP-CM41\Analog_CM41x_M4.pex +T174FC 000:375.019 FlashBankInfo: +T174FC 000:375.026 Name: Flash Block A +T174FC 000:375.033 BaseAddr: 0x11000000 +T174FC 000:375.053 AlwaysPresent: 1 +T174FC 000:375.060 LoaderInfo: +T174FC 000:375.067 Name: Flash_Block_A +T174FC 000:375.076 MaxSize: 0x00020000 +T174FC 000:375.085 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\AnalogDevices\ADSP-CM41\CM41x_FlashA_128.FLM +T174FC 000:375.093 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:375.103 FlashBankInfo: +T174FC 000:375.112 Name: Flash Block B +T174FC 000:375.120 BaseAddr: 0x11080000 +T174FC 000:375.151 AlwaysPresent: 1 +T174FC 000:375.161 LoaderInfo: +T174FC 000:375.170 Name: Flash_Block_B +T174FC 000:375.176 MaxSize: 0x00020000 +T174FC 000:375.183 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\AnalogDevices\ADSP-CM41\CM41x_FlashB_128.FLM +T174FC 000:375.190 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:375.199 Device entry modified: ADSP-CM412CBCZ-BF_M4 +T174FC 000:375.213 ChipInfo: +T174FC 000:375.220 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\AnalogDevices\ADSP-CM41\Analog_CM41x_M4.pex +T174FC 000:375.229 FlashBankInfo: +T174FC 000:375.235 Name: Flash Block A +T174FC 000:375.242 BaseAddr: 0x11000000 +T174FC 000:375.261 AlwaysPresent: 1 +T174FC 000:375.269 LoaderInfo: +T174FC 000:375.275 Name: Flash_Block_A +T174FC 000:375.282 MaxSize: 0x00020000 +T174FC 000:375.288 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\AnalogDevices\ADSP-CM41\CM41x_FlashA_128.FLM +T174FC 000:375.295 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:375.301 FlashBankInfo: +T174FC 000:375.308 Name: Flash Block B +T174FC 000:375.314 BaseAddr: 0x11080000 +T174FC 000:375.333 AlwaysPresent: 1 +T174FC 000:375.340 LoaderInfo: +T174FC 000:375.347 Name: Flash_Block_B +T174FC 000:375.354 MaxSize: 0x00020000 +T174FC 000:375.360 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\AnalogDevices\ADSP-CM41\CM41x_FlashB_128.FLM +T174FC 000:375.367 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:375.378 Device entry modified: ADSP-CM413CSWZ-BF_M4 +T174FC 000:375.390 ChipInfo: +T174FC 000:375.398 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\AnalogDevices\ADSP-CM41\Analog_CM41x_M4.pex +T174FC 000:375.406 FlashBankInfo: +T174FC 000:375.412 Name: Flash Block A +T174FC 000:375.419 BaseAddr: 0x11000000 +T174FC 000:375.438 AlwaysPresent: 1 +T174FC 000:375.445 LoaderInfo: +T174FC 000:375.451 Name: Flash_Block_A +T174FC 000:375.458 MaxSize: 0x00020000 +T174FC 000:375.464 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\AnalogDevices\ADSP-CM41\CM41x_FlashA_128.FLM +T174FC 000:375.471 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:375.478 FlashBankInfo: +T174FC 000:375.484 Name: Flash Block B +T174FC 000:375.491 BaseAddr: 0x11080000 +T174FC 000:375.509 AlwaysPresent: 1 +T174FC 000:375.516 LoaderInfo: +T174FC 000:375.523 Name: Flash_Block_B +T174FC 000:375.529 MaxSize: 0x00020000 +T174FC 000:375.536 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\AnalogDevices\ADSP-CM41\CM41x_FlashB_128.FLM +T174FC 000:375.543 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:375.551 Device entry modified: ADSP-CM413CSWZ-CF_M4 +T174FC 000:375.563 ChipInfo: +T174FC 000:375.571 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\AnalogDevices\ADSP-CM41\Analog_CM41x_M4.pex +T174FC 000:375.587 FlashBankInfo: +T174FC 000:375.594 Name: Flash Block A +T174FC 000:375.601 BaseAddr: 0x11000000 +T174FC 000:375.631 AlwaysPresent: 1 +T174FC 000:375.639 LoaderInfo: +T174FC 000:375.646 Name: Flash_Block_A +T174FC 000:375.652 MaxSize: 0x00040000 +T174FC 000:375.659 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\AnalogDevices\ADSP-CM41\CM41x_FlashA_256.FLM +T174FC 000:375.665 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:375.672 FlashBankInfo: +T174FC 000:375.678 Name: Flash Block B +T174FC 000:375.685 BaseAddr: 0x11080000 +T174FC 000:375.713 AlwaysPresent: 1 +T174FC 000:375.721 LoaderInfo: +T174FC 000:375.727 Name: Flash_Block_B +T174FC 000:375.734 MaxSize: 0x00040000 +T174FC 000:375.740 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\AnalogDevices\ADSP-CM41\CM41x_FlashB_256.FLM +T174FC 000:375.747 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:375.756 Device entry modified: ADSP-CM416CSWZ-BF_M4 +T174FC 000:375.769 ChipInfo: +T174FC 000:375.776 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\AnalogDevices\ADSP-CM41\Analog_CM41x_M4.pex +T174FC 000:375.784 FlashBankInfo: +T174FC 000:375.791 Name: Flash Block A +T174FC 000:375.798 BaseAddr: 0x11000000 +T174FC 000:375.817 AlwaysPresent: 1 +T174FC 000:375.824 LoaderInfo: +T174FC 000:375.830 Name: Flash_Block_A +T174FC 000:375.837 MaxSize: 0x00020000 +T174FC 000:375.843 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\AnalogDevices\ADSP-CM41\CM41x_FlashA_128.FLM +T174FC 000:375.850 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:375.856 FlashBankInfo: +T174FC 000:375.863 Name: Flash Block B +T174FC 000:375.870 BaseAddr: 0x11080000 +T174FC 000:375.888 AlwaysPresent: 1 +T174FC 000:375.896 LoaderInfo: +T174FC 000:375.902 Name: Flash_Block_B +T174FC 000:375.909 MaxSize: 0x00020000 +T174FC 000:375.915 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\AnalogDevices\ADSP-CM41\CM41x_FlashB_128.FLM +T174FC 000:375.924 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:375.933 Device entry modified: ADSP-CM416CSWZ-CF_M4 +T174FC 000:375.945 ChipInfo: +T174FC 000:375.952 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\AnalogDevices\ADSP-CM41\Analog_CM41x_M4.pex +T174FC 000:375.961 FlashBankInfo: +T174FC 000:375.994 Name: Flash Block A +T174FC 000:376.001 BaseAddr: 0x11000000 +T174FC 000:376.021 AlwaysPresent: 1 +T174FC 000:376.028 LoaderInfo: +T174FC 000:376.035 Name: Flash_Block_A +T174FC 000:376.041 MaxSize: 0x00040000 +T174FC 000:376.048 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\AnalogDevices\ADSP-CM41\CM41x_FlashA_256.FLM +T174FC 000:376.056 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:376.062 FlashBankInfo: +T174FC 000:376.069 Name: Flash Block B +T174FC 000:376.076 BaseAddr: 0x11080000 +T174FC 000:376.095 AlwaysPresent: 1 +T174FC 000:376.102 LoaderInfo: +T174FC 000:376.108 Name: Flash_Block_B +T174FC 000:376.115 MaxSize: 0x00040000 +T174FC 000:376.122 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\AnalogDevices\ADSP-CM41\CM41x_FlashB_256.FLM +T174FC 000:376.128 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:376.137 Device entry modified: ADSP-CM417CSWZ-CF_M4 +T174FC 000:376.149 ChipInfo: +T174FC 000:376.156 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\AnalogDevices\ADSP-CM41\Analog_CM41x_M4.pex +T174FC 000:376.165 FlashBankInfo: +T174FC 000:376.171 Name: Flash Block A +T174FC 000:376.178 BaseAddr: 0x11000000 +T174FC 000:376.196 AlwaysPresent: 1 +T174FC 000:376.204 LoaderInfo: +T174FC 000:376.210 Name: Flash_Block_A +T174FC 000:376.217 MaxSize: 0x00040000 +T174FC 000:376.223 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\AnalogDevices\ADSP-CM41\CM41x_FlashA_256.FLM +T174FC 000:376.230 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:376.236 FlashBankInfo: +T174FC 000:376.243 Name: Flash Block B +T174FC 000:376.249 BaseAddr: 0x11080000 +T174FC 000:376.268 AlwaysPresent: 1 +T174FC 000:376.276 LoaderInfo: +T174FC 000:376.282 Name: Flash_Block_B +T174FC 000:376.289 MaxSize: 0x00040000 +T174FC 000:376.295 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\AnalogDevices\ADSP-CM41\CM41x_FlashB_256.FLM +T174FC 000:376.302 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:376.311 Device entry modified: ADSP-CM417CSWZ-DF_M4 +T174FC 000:376.322 ChipInfo: +T174FC 000:376.330 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\AnalogDevices\ADSP-CM41\Analog_CM41x_M4.pex +T174FC 000:376.338 FlashBankInfo: +T174FC 000:376.344 Name: Flash Block A +T174FC 000:376.351 BaseAddr: 0x11000000 +T174FC 000:376.379 AlwaysPresent: 1 +T174FC 000:376.386 LoaderInfo: +T174FC 000:376.393 Name: Flash_Block_A +T174FC 000:376.399 MaxSize: 0x00080000 +T174FC 000:376.406 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\AnalogDevices\ADSP-CM41\CM41x_FlashA_512.FLM +T174FC 000:376.413 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:376.419 FlashBankInfo: +T174FC 000:376.426 Name: Flash Block B +T174FC 000:376.433 BaseAddr: 0x11080000 +T174FC 000:376.460 AlwaysPresent: 1 +T174FC 000:376.467 LoaderInfo: +T174FC 000:376.474 Name: Flash_Block_B +T174FC 000:376.480 MaxSize: 0x00080000 +T174FC 000:376.487 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\AnalogDevices\ADSP-CM41\CM41x_FlashB_512.FLM +T174FC 000:376.496 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:376.504 Device entry modified: ADSP-CM418CBCZ-BF_M4 +T174FC 000:376.517 ChipInfo: +T174FC 000:376.525 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\AnalogDevices\ADSP-CM41\Analog_CM41x_M4.pex +T174FC 000:376.533 FlashBankInfo: +T174FC 000:376.540 Name: Flash Block A +T174FC 000:376.547 BaseAddr: 0x11000000 +T174FC 000:376.566 AlwaysPresent: 1 +T174FC 000:376.573 LoaderInfo: +T174FC 000:376.579 Name: Flash_Block_A +T174FC 000:376.586 MaxSize: 0x00020000 +T174FC 000:376.593 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\AnalogDevices\ADSP-CM41\CM41x_FlashA_128.FLM +T174FC 000:376.599 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:376.606 FlashBankInfo: +T174FC 000:376.613 Name: Flash Block B +T174FC 000:376.619 BaseAddr: 0x11080000 +T174FC 000:376.638 AlwaysPresent: 1 +T174FC 000:376.645 LoaderInfo: +T174FC 000:376.652 Name: Flash_Block_B +T174FC 000:376.658 MaxSize: 0x00020000 +T174FC 000:376.665 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\AnalogDevices\ADSP-CM41\CM41x_FlashB_128.FLM +T174FC 000:376.672 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:376.680 Device entry modified: ADSP-CM418CBCZ-CF_M4 +T174FC 000:376.692 ChipInfo: +T174FC 000:376.699 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\AnalogDevices\ADSP-CM41\Analog_CM41x_M4.pex +T174FC 000:376.707 FlashBankInfo: +T174FC 000:376.714 Name: Flash Block A +T174FC 000:376.720 BaseAddr: 0x11000000 +T174FC 000:376.739 AlwaysPresent: 1 +T174FC 000:376.746 LoaderInfo: +T174FC 000:376.753 Name: Flash_Block_A +T174FC 000:376.759 MaxSize: 0x00040000 +T174FC 000:376.766 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\AnalogDevices\ADSP-CM41\CM41x_FlashA_256.FLM +T174FC 000:376.773 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:376.779 FlashBankInfo: +T174FC 000:376.786 Name: Flash Block B +T174FC 000:376.792 BaseAddr: 0x11080000 +T174FC 000:376.811 AlwaysPresent: 1 +T174FC 000:376.818 LoaderInfo: +T174FC 000:376.825 Name: Flash_Block_B +T174FC 000:376.831 MaxSize: 0x00040000 +T174FC 000:376.838 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\AnalogDevices\ADSP-CM41\CM41x_FlashB_256.FLM +T174FC 000:376.844 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:376.853 Device entry modified: ADSP-CM419CBCZ-CF_M4 +T174FC 000:376.865 ChipInfo: +T174FC 000:376.872 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\AnalogDevices\ADSP-CM41\Analog_CM41x_M4.pex +T174FC 000:376.880 FlashBankInfo: +T174FC 000:376.887 Name: Flash Block A +T174FC 000:376.894 BaseAddr: 0x11000000 +T174FC 000:376.912 AlwaysPresent: 1 +T174FC 000:376.920 LoaderInfo: +T174FC 000:376.926 Name: Flash_Block_A +T174FC 000:376.933 MaxSize: 0x00040000 +T174FC 000:376.939 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\AnalogDevices\ADSP-CM41\CM41x_FlashA_256.FLM +T174FC 000:376.946 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:376.953 FlashBankInfo: +T174FC 000:376.971 Name: Flash Block B +T174FC 000:376.977 BaseAddr: 0x11080000 +T174FC 000:376.996 AlwaysPresent: 1 +T174FC 000:377.015 LoaderInfo: +T174FC 000:377.022 Name: Flash_Block_B +T174FC 000:377.028 MaxSize: 0x00040000 +T174FC 000:377.037 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\AnalogDevices\ADSP-CM41\CM41x_FlashB_256.FLM +T174FC 000:377.049 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:377.059 Device entry modified: ADSP-CM419CBCZ-DF_M4 +T174FC 000:377.075 ChipInfo: +T174FC 000:377.082 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\AnalogDevices\ADSP-CM41\Analog_CM41x_M4.pex +T174FC 000:377.091 FlashBankInfo: +T174FC 000:377.097 Name: Flash Block A +T174FC 000:377.104 BaseAddr: 0x11000000 +T174FC 000:377.123 AlwaysPresent: 1 +T174FC 000:377.131 LoaderInfo: +T174FC 000:377.137 Name: Flash_Block_A +T174FC 000:377.144 MaxSize: 0x00080000 +T174FC 000:377.150 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\AnalogDevices\ADSP-CM41\CM41x_FlashA_512.FLM +T174FC 000:377.157 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:377.164 FlashBankInfo: +T174FC 000:377.170 Name: Flash Block B +T174FC 000:377.177 BaseAddr: 0x11080000 +T174FC 000:377.196 AlwaysPresent: 1 +T174FC 000:377.204 LoaderInfo: +T174FC 000:377.210 Name: Flash_Block_B +T174FC 000:377.217 MaxSize: 0x00080000 +T174FC 000:377.223 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\AnalogDevices\ADSP-CM41\CM41x_FlashB_512.FLM +T174FC 000:377.230 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:377.239 Device entry modified: ADuCM4050 +T174FC 000:377.247 FlashBankInfo: +T174FC 000:377.253 Name: Flash Block +T174FC 000:377.297 AlwaysPresent: 1 +T174FC 000:377.305 LoaderInfo: +T174FC 000:377.311 Name: Flash_Block +T174FC 000:377.323 MaxSize: 0x00080000 +T174FC 000:377.330 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\AnalogDevices\ADUCM4x50\ADuCM4x50.axf +T174FC 000:377.337 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:377.346 Device entry modified: MAX32600 +T174FC 000:377.359 FlashBankInfo: +T174FC 000:377.366 Name: Internal Flash +T174FC 000:377.412 AlwaysPresent: 1 +T174FC 000:377.420 LoaderInfo: +T174FC 000:377.426 Name: Internal_Flash +T174FC 000:377.433 MaxSize: 0x00040000 +T174FC 000:377.439 Loader: E:\software\keil\keil_Core\ARM\Segger\Devices\Maxim\MAX32600\MAX32600.FLM +T174FC 000:377.446 LoaderType: FLASH_ALGO_TYPE_OPEN +T174FC 000:377.455 Device entry modified: ATSAML10D14A +T174FC 000:377.476 ChipInfo: +T174FC 000:377.484 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\ATMEL\SAML1x\Atmel_SAML1x.pex +T174FC 000:377.492 Device entry modified: ATSAML10D15A +T174FC 000:377.505 ChipInfo: +T174FC 000:377.512 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\ATMEL\SAML1x\Atmel_SAML1x.pex +T174FC 000:377.520 Device entry modified: ATSAML10D16A +T174FC 000:377.531 ChipInfo: +T174FC 000:377.539 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\ATMEL\SAML1x\Atmel_SAML1x.pex +T174FC 000:377.547 Device entry modified: ATSAML10E14A +T174FC 000:377.559 ChipInfo: +T174FC 000:377.566 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\ATMEL\SAML1x\Atmel_SAML1x.pex +T174FC 000:377.574 Device entry modified: ATSAML10E15A +T174FC 000:377.585 ChipInfo: +T174FC 000:377.592 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\ATMEL\SAML1x\Atmel_SAML1x.pex +T174FC 000:377.601 Device entry modified: ATSAML10E16A +T174FC 000:377.612 ChipInfo: +T174FC 000:377.619 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\ATMEL\SAML1x\Atmel_SAML1x.pex +T174FC 000:377.628 Device entry modified: ATSAML11D14A +T174FC 000:377.639 ChipInfo: +T174FC 000:377.646 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\ATMEL\SAML1x\Atmel_SAML1x.pex +T174FC 000:377.657 Device entry modified: ATSAML11D15A +T174FC 000:377.669 ChipInfo: +T174FC 000:377.676 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\ATMEL\SAML1x\Atmel_SAML1x.pex +T174FC 000:377.684 Device entry modified: ATSAML11D16A +T174FC 000:377.695 ChipInfo: +T174FC 000:377.702 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\ATMEL\SAML1x\Atmel_SAML1x.pex +T174FC 000:377.710 Device entry modified: ATSAML11E14A +T174FC 000:377.722 ChipInfo: +T174FC 000:377.729 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\ATMEL\SAML1x\Atmel_SAML1x.pex +T174FC 000:377.737 Device entry modified: ATSAML11E15A +T174FC 000:377.749 ChipInfo: +T174FC 000:377.756 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\ATMEL\SAML1x\Atmel_SAML1x.pex +T174FC 000:377.763 Device entry modified: ATSAML11E16A +T174FC 000:377.775 ChipInfo: +T174FC 000:377.782 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\ATMEL\SAML1x\Atmel_SAML1x.pex +T174FC 000:377.790 Device entry modified: ARTIK05X +T174FC 000:377.804 ChipInfo: +T174FC 000:377.811 Script: E:\software\keil\keil_Core\ARM\Segger\Devices\Samsung\ARTIK05X.JLinkScript +T174FC 000:377.961 - 41.958ms returns 0x00 +T174FC 000:378.492 JLINK_ExecCommand("Device = R7FA8M1AH", ...). +T174FC 000:378.807 Flash bank @ 0x00000000: SFL: Parsing sectorization info from ELF file +T174FC 000:378.817 FlashDevice.SectorInfo[0]: .SectorSize = 0x00000010, .SectorStartAddr = 0x00000000 +T174FC 000:378.824 FlashBank @0x0300A100: Sectorization info from SFL ELF file ignored because sectorization override from DLL / XML file is active. +T174FC 000:378.849 Flash bank @ 0x00000000: SFL: Parsing sectorization info from ELF file +T174FC 000:378.856 FlashDevice.SectorInfo[0]: .SectorSize = 0x00000010, .SectorStartAddr = 0x00000000 +T174FC 000:378.862 FlashBank @0x1300A180: Sectorization info from SFL ELF file ignored because sectorization override from DLL / XML file is active. +T174FC 000:378.880 Flash bank @ 0x00000000: SFL: Parsing sectorization info from ELF file +T174FC 000:378.887 FlashDevice.SectorInfo[0]: .SectorSize = 0x00000010, .SectorStartAddr = 0x00000000 +T174FC 000:378.894 FlashBank @0x27030080: Sectorization info from SFL ELF file ignored because sectorization override from DLL / XML file is active. +T174FC 000:378.916 Flash bank @ 0x02000000: SFL: Parsing sectorization info from ELF file +T174FC 000:378.922 FlashDevice.SectorInfo[0]: .SectorSize = 0x00002000, .SectorStartAddr = 0x00000000 +T174FC 000:378.929 FlashDevice.SectorInfo[1]: .SectorSize = 0x00008000, .SectorStartAddr = 0x00010000 +T174FC 000:378.936 FlashBank @0x02000000: Sectorization info from SFL ELF file ignored because sectorization override from DLL / XML file is active. +T174FC 000:379.261 Flash bank @ 0x02000000: SFL: Parsing sectorization info from ELF file +T174FC 000:379.269 FlashDevice.SectorInfo[0]: .SectorSize = 0x00002000, .SectorStartAddr = 0x00000000 +T174FC 000:379.276 FlashDevice.SectorInfo[1]: .SectorSize = 0x00008000, .SectorStartAddr = 0x00010000 +T174FC 000:379.283 FlashBank @0x12000000: Sectorization info from SFL ELF file ignored because sectorization override from DLL / XML file is active. +T174FC 000:379.620 Flash bank @ 0x27000000: SFL: Parsing sectorization info from ELF file +T174FC 000:379.629 FlashDevice.SectorInfo[0]: .SectorSize = 0x00000040, .SectorStartAddr = 0x00000000 +T174FC 000:379.636 FlashBank @0x27000000: Sectorization info from SFL ELF file ignored because sectorization override from DLL / XML file is active. +T174FC 000:379.659 Flash bank @ 0x27000000: SFL: Parsing sectorization info from ELF file +T174FC 000:379.666 FlashDevice.SectorInfo[0]: .SectorSize = 0x00000040, .SectorStartAddr = 0x00000000 +T174FC 000:379.672 FlashBank @0x37000000: Sectorization info from SFL ELF file ignored because sectorization override from DLL / XML file is active. +T174FC 000:379.749 Flash bank @ 0x80000000: SFL: Parsing sectorization info from ELF file +T174FC 000:379.756 FlashDevice.SectorInfo[0]: .SectorSize = 0x00010000, .SectorStartAddr = 0x00000000 +T174FC 000:397.728 Flash bank @ 0x90000000: SFL: Parsing sectorization info from ELF file +T174FC 000:397.746 FlashDevice.SectorInfo[0]: .SectorSize = 0x00010000, .SectorStartAddr = 0x00000000 +T174FC 000:409.341 Device "R7FA8M1AH" selected. +T174FC 000:409.869 - 31.364ms returns 0x00 +T174FC 000:409.893 JLINK_ExecCommand("DisableConnectionTimeout", ...). +T174FC 000:409.906 - 0.001ms returns 0x01 +T174FC 000:409.916 JLINK_GetHardwareVersion() +T174FC 000:409.923 - 0.006ms returns 10000 +T174FC 000:410.419 JLINK_GetDLLVersion() +T174FC 000:410.429 - 0.010ms returns 79211 +T174FC 000:410.435 JLINK_GetOEMString(...) +T174FC 000:410.441 JLINK_GetFirmwareString(...) +T174FC 000:410.446 - 0.004ms +T174FC 000:410.469 JLINK_GetDLLVersion() +T174FC 000:410.474 - 0.004ms returns 79211 +T174FC 000:410.480 JLINK_GetCompileDateTime() +T174FC 000:410.484 - 0.004ms +T174FC 000:410.493 JLINK_GetFirmwareString(...) +T174FC 000:410.498 - 0.004ms +T174FC 000:410.506 JLINK_GetHardwareVersion() +T174FC 000:410.511 - 0.004ms returns 10000 +T174FC 000:410.519 JLINK_GetSN() +T174FC 000:410.524 - 0.004ms returns 1081652787 +T174FC 000:410.531 JLINK_GetOEMString(...) +T174FC 000:410.540 JLINK_TIF_Select(JLINKARM_TIF_JTAG) +T174FC 000:411.190 - 0.650ms returns 0x00 +T174FC 000:411.203 JLINK_HasError() +T174FC 000:411.222 JLINK_SetSpeed(5000) +T174FC 000:411.290 - 0.069ms +T174FC 000:411.298 JLINK_GetIdData(pIdData) +T174FC 000:411.523 ConfigTargetSettings() start +T174FC 000:411.533 J-Link Script File: Executing ConfigTargetSettings() +T174FC 000:411.549 Configuring FlashDLNoRMWThreshold=0x200 in order to make sure that option bytes programming is done via read-modify-write +T174FC 000:423.183 ConfigTargetSettings() end - Took 11.6ms +T174FC 000:423.208 InitTarget() start +T174FC 000:423.219 J-Link Script File: Executing InitTarget() +T174FC 000:423.232 Identifying target device... +T174FC 000:423.248 JTAG selected. Identifying JTAG Chain... +T174FC 000:424.464 TotalIRLen = 4, IRPrint = 0x01 +T174FC 000:424.857 JTAG chain detection found 1 devices: +T174FC 000:424.876 #0 Id: 0x6BA00477, IRLen: 04, CoreSight JTAG-DP +T174FC 000:424.892 JTAG Chain Identified. Connecting to DAP TAP... +T174FC 000:424.909 Successfully connected to selected DAP TAP. +T174FC 000:424.925 Initializing DAP... +T174FC 000:425.953 DAP initialized successfully. +T174FC 000:425.975 Determining TrustZone configuration... +T174FC 000:426.802 Secure Debug: Enabled (SSD) +T174FC 000:426.819 Determining currently configured transfer type by reading the AHB-AP CSW register. +T174FC 000:427.562 --> Correct transfer type configured. Done. +T174FC 000:427.580 InitTarget() end - Took 4.35ms +T174FC 000:428.558 TotalIRLen = 4, IRPrint = 0x01 +T174FC 000:428.943 JTAG chain detection found 1 devices: +T174FC 000:428.955 #0 Id: 0x6BA00477, IRLen: 04, CoreSight JTAG-DP +T174FC 000:430.491 DPv0 detected +T174FC 000:430.505 Scanning AP map to find all available APs +T174FC 000:431.437 AP[2]: Stopped AP scan as end of AP map has been reached +T174FC 000:431.457 AP[0]: AHB-AP (IDR: 0x84770001) +T174FC 000:431.466 AP[1]: APB-AP (IDR: 0x54770002) +T174FC 000:431.476 Iterating through AP map to find AHB-AP to use +T174FC 000:432.295 AP[0]: Core found +T174FC 000:432.307 AP[0]: AHB-AP ROM base: 0xE00FE000 +T174FC 000:432.760 CPUID register: 0x410FD232. Implementer code: 0x41 (ARM) +T174FC 000:432.771 Feature set: Mainline +T174FC 000:433.205 Cache: L1 I/D-cache present +T174FC 000:433.222 Found Cortex-M85 r0p2, Little endian. +T174FC 000:433.615 -- Max. mem block: 0x0001D7F0 +T174FC 000:434.702 CPU_ReadMem(4 bytes @ 0xE000EDF0) +T174FC 000:435.221 CPU_WriteMem(4 bytes @ 0xE000EDF0) +T174FC 000:435.649 CPU_ReadMem(4 bytes @ 0xE0002000) +T174FC 000:436.078 FPUnit: 8 code (BP) slots and 0 literal slots +T174FC 000:436.092 CPU_ReadMem(4 bytes @ 0xE000EDFC) +T174FC 000:436.436 CPU_WriteMem(4 bytes @ 0xE000EDFC) +T174FC 000:436.740 CPU_ReadMem(4 bytes @ 0xE0001000) +T174FC 000:437.072 CPU_ReadMem(4 bytes @ 0xE0001000) +T174FC 000:437.409 CPU_ReadMem(4 bytes @ 0xE0001028) +T174FC 000:437.739 CPU_ReadMem(4 bytes @ 0xE0001038) +T174FC 000:438.065 CPU_ReadMem(4 bytes @ 0xE0001048) +T174FC 000:438.418 CPU_ReadMem(4 bytes @ 0xE0001058) +T174FC 000:438.813 CPU_ReadMem(4 bytes @ 0xE0001068) +T174FC 000:439.178 CPU_ReadMem(4 bytes @ 0xE0001078) +T174FC 000:439.540 CPU_ReadMem(4 bytes @ 0xE0001088) +T174FC 000:439.914 CPU_ReadMem(4 bytes @ 0xE0001098) +T174FC 000:440.211 CPU_WriteMem(4 bytes @ 0xE0001000) +T174FC 000:440.486 CPU_ReadMem(4 bytes @ 0xE000ED88) +T174FC 000:440.880 CPU_WriteMem(4 bytes @ 0xE000ED88) +T174FC 000:441.193 CPU_ReadMem(4 bytes @ 0xE000ED88) +T174FC 000:441.541 CPU_WriteMem(4 bytes @ 0xE000ED88) +T174FC 000:441.790 CPU_ReadMem(4 bytes @ 0xE000EFB8) +T174FC 000:442.191 Security extension: implemented +T174FC 000:442.202 Secure debug: enabled +T174FC 000:442.211 CoreSight components: +T174FC 000:442.220 ROMTbl[0] @ E00FE000 +T174FC 000:442.227 CPU_ReadMem(64 bytes @ 0xE00FE000) +T174FC 000:442.896 CPU_ReadMem(32 bytes @ 0xE00FFFE0) +T174FC 000:443.424 [0][0]: E00FF000 CID B105100D PID 000BB4D4 ROM Table +T174FC 000:443.437 ROMTbl[1] @ E00FF000 +T174FC 000:443.444 CPU_ReadMem(64 bytes @ 0xE00FF000) +T174FC 000:444.127 CPU_ReadMem(32 bytes @ 0xE000EFE0) +T174FC 000:444.609 CPU_ReadMem(4 bytes @ 0xE000EFBC) +T174FC 000:445.006 CPU_ReadMem(4 bytes @ 0xE000EFCC) +T174FC 000:445.325 [1][0]: E000E000 CID B105900D PID 000BBD23 DEVARCH 47702A04 DEVTYPE 00 ??? +T174FC 000:445.334 CPU_ReadMem(32 bytes @ 0xE0001FE0) +T174FC 000:445.858 CPU_ReadMem(4 bytes @ 0xE0001FBC) +T174FC 000:446.176 CPU_ReadMem(4 bytes @ 0xE0001FCC) +T174FC 000:446.528 [1][1]: E0001000 CID B105900D PID 000BBD23 DEVARCH 47711A02 DEVTYPE 00 DWT +T174FC 000:446.537 CPU_ReadMem(32 bytes @ 0xE0002FE0) +T174FC 000:447.065 CPU_ReadMem(4 bytes @ 0xE0002FBC) +T174FC 000:447.444 CPU_ReadMem(4 bytes @ 0xE0002FCC) +T174FC 000:447.781 [1][2]: E0002000 CID B105900D PID 000BBD23 DEVARCH 47701A03 DEVTYPE 00 FPB +T174FC 000:447.790 CPU_ReadMem(32 bytes @ 0xE0000FE0) +T174FC 000:448.339 CPU_ReadMem(4 bytes @ 0xE0000FBC) +T174FC 000:448.664 CPU_ReadMem(4 bytes @ 0xE0000FCC) +T174FC 000:449.025 [1][3]: E0000000 CID B105900D PID 000BBD23 DEVARCH 47701A01 DEVTYPE 43 ITM +T174FC 000:449.034 CPU_ReadMem(32 bytes @ 0xE0041FE0) +T174FC 000:449.501 CPU_ReadMem(4 bytes @ 0xE0041FBC) +T174FC 000:449.913 CPU_ReadMem(4 bytes @ 0xE0041FCC) +T174FC 000:450.299 [1][5]: E0041000 CID B105900D PID 002BBD23 DEVARCH 47754A13 DEVTYPE 13 ETM +T174FC 000:450.309 CPU_ReadMem(32 bytes @ 0xE0003FE0) +T174FC 000:450.795 CPU_ReadMem(4 bytes @ 0xE0003FBC) +T174FC 000:451.096 CPU_ReadMem(4 bytes @ 0xE0003FCC) +T174FC 000:451.536 [1][6]: E0003000 CID B105900D PID 000BBD23 DEVARCH 47700A06 DEVTYPE 16 ??? +T174FC 000:451.547 CPU_ReadMem(32 bytes @ 0xE0042FE0) +T174FC 000:452.033 CPU_ReadMem(4 bytes @ 0xE0042FBC) +T174FC 000:452.406 CPU_ReadMem(4 bytes @ 0xE0042FCC) +T174FC 000:452.718 [1][7]: E0042000 CID B105900D PID 000BBD23 DEVARCH 47701A14 DEVTYPE 14 CSS600-CTI +T174FC 000:452.727 CPU_ReadMem(32 bytes @ 0xE0040FE0) +T174FC 000:453.251 CPU_ReadMem(4 bytes @ 0xE0040FBC) +T174FC 000:453.622 CPU_ReadMem(4 bytes @ 0xE0040FCC) +T174FC 000:453.946 [0][1]: E0040000 CID B105900D PID 000BBD23 DEVARCH 00000000 DEVTYPE 11 TPIU +T174FC 000:453.955 CPU_WriteMem(4 bytes @ 0xE000ED84) +T174FC 000:454.210 CPU_ReadMem(4 bytes @ 0xE000ED80) +T174FC 000:454.545 I-Cache L1: 16 KB, 256 Sets, 32 Bytes/Line, 2-Way +T174FC 000:454.553 CPU_WriteMem(4 bytes @ 0xE000ED84) +T174FC 000:454.835 CPU_ReadMem(4 bytes @ 0xE000ED80) +T174FC 000:455.139 D-Cache L1: 16 KB, 128 Sets, 32 Bytes/Line, 4-Way +T174FC 000:455.185 pIdData->ScanLen=4 +T174FC 000:455.193 pIdData->NumDevices=1 +T174FC 000:455.199 pIdData->aId[0]=0x6BA00477 +T174FC 000:455.209 pIdData->aIrRead[0]=0 +T174FC 000:455.216 pIdData->aScanLen[0]=0 +T174FC 000:455.222 pIdData->aScanRead[0]=0 +T174FC 000:455.229 - 43.930ms +T174FC 000:455.742 JLINK_JTAG_GetDeviceID(DeviceIndex = 0) +T174FC 000:455.754 - 0.015ms returns 1805649015 +T174FC 000:455.760 JLINK_JTAG_GetDeviceInfo(DeviceIndex = 0) +T174FC 000:455.765 - 0.004ms returns 0 +T174FC 000:455.771 JLINK_GetDLLVersion() +T174FC 000:455.776 - 0.004ms returns 79211 +T174FC 000:455.781 JLINK_CORE_GetFound() +T174FC 000:455.786 - 0.004ms returns 0xE0500FF +T174FC 000:455.798 JLINK_GetDebugInfo(0x100 = JLINKARM_ROM_TABLE_ADDR_INDEX) +T174FC 000:455.804 Value=0xE00FE000 +T174FC 000:455.811 - 0.013ms returns 0 +T174FC 000:455.824 JLINK_GetDebugInfo(0x100 = JLINKARM_ROM_TABLE_ADDR_INDEX) +T174FC 000:455.830 Value=0xE00FE000 +T174FC 000:455.836 - 0.011ms returns 0 +T174FC 000:455.841 JLINK_GetDebugInfo(0x101 = JLINKARM_DEBUG_INFO_ETM_ADDR_INDEX) +T174FC 000:455.846 Value=0xE0041000 +T174FC 000:455.852 - 0.010ms returns 0 +T174FC 000:455.858 JLINK_ReadMemEx(0xE0041FD0, 0x20 Bytes, Flags = 0x02000004) +T174FC 000:455.886 CPU_ReadMem(32 bytes @ 0xE0041FD0) +T174FC 000:456.425 Data: 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ... +T174FC 000:456.435 - 0.577ms returns 32 (0x20) +T174FC 000:456.442 JLINK_GetDebugInfo(0x102 = JLINKARM_DEBUG_INFO_MTB_ADDR_INDEX) +T174FC 000:456.447 Value=0x00000000 +T174FC 000:456.453 - 0.011ms returns 0 +T174FC 000:456.459 JLINK_GetDebugInfo(0x103 = JLINKARM_DEBUG_INFO_TPIU_ADDR_INDEX) +T174FC 000:456.463 Value=0xE0040000 +T174FC 000:456.470 - 0.011ms returns 0 +T174FC 000:456.475 JLINK_GetDebugInfo(0x104 = JLINKARM_DEBUG_INFO_ITM_ADDR_INDEX) +T174FC 000:456.479 Value=0xE0000000 +T174FC 000:456.485 - 0.010ms returns 0 +T174FC 000:456.491 JLINK_GetDebugInfo(0x105 = JLINKARM_DEBUG_INFO_DWT_ADDR_INDEX) +T174FC 000:456.495 Value=0xE0001000 +T174FC 000:456.501 - 0.010ms returns 0 +T174FC 000:456.506 JLINK_GetDebugInfo(0x106 = JLINKARM_DEBUG_INFO_FPB_ADDR_INDEX) +T174FC 000:456.511 Value=0xE0002000 +T174FC 000:456.517 - 0.010ms returns 0 +T174FC 000:456.522 JLINK_GetDebugInfo(0x107 = JLINKARM_DEBUG_INFO_NVIC_ADDR_INDEX) +T174FC 000:456.527 Value=0xE000E000 +T174FC 000:456.533 - 0.010ms returns 0 +T174FC 000:456.538 JLINK_GetDebugInfo(0x10C = JLINKARM_DEBUG_INFO_DBG_ADDR_INDEX) +T174FC 000:456.543 Value=0xE000EDF0 +T174FC 000:456.549 - 0.010ms returns 0 +T174FC 000:456.558 JLINK_GetDebugInfo(0x01 = Unknown) +T174FC 000:456.563 Value=0x00000001 +T174FC 000:456.569 - 0.015ms returns 0 +T174FC 000:456.575 JLINK_ReadMemU32(0xE000ED00, 0x1 Items) +T174FC 000:456.585 CPU_ReadMem(4 bytes @ 0xE000ED00) +T174FC 000:456.983 Data: 32 D2 0F 41 +T174FC 000:456.991 Debug reg: CPUID +T174FC 000:456.998 - 0.422ms returns 1 (0x1) +T174FC 000:457.004 JLINK_GetDebugInfo(0x10F = JLINKARM_DEBUG_INFO_HAS_CORTEX_M_SECURITY_EXT_INDEX) +T174FC 000:457.009 Value=0x00000001 +T174FC 000:457.015 - 0.011ms returns 0 +T174FC 000:457.021 JLINK_HasError() +T174FC 000:457.027 JLINK_SetResetType(JLINKARM_CM3_RESET_TYPE_NORMAL) +T174FC 000:457.032 - 0.004ms returns JLINKARM_CM3_RESET_TYPE_NORMAL +T174FC 000:457.037 JLINK_Reset() +T174FC 000:457.054 CPU is running +T174FC 000:457.062 CPU_WriteMem(4 bytes @ 0xE000EDF0) +T174FC 000:457.405 CPU_ReadMem(4 bytes @ 0xE000ED44) +T174FC 000:457.715 CPU_ReadMem(4 bytes @ 0xE000EE08) +T174FC 000:458.038 CPU is running +T174FC 000:458.047 CPU_WriteMem(4 bytes @ 0xE000EE08) +T174FC 000:458.416 Reset: ARMv8M core with Security Extension enabled detected. +T174FC 000:458.426 CPU is running +T174FC 000:458.433 CPU_WriteMem(4 bytes @ 0xE000EDFC) +T174FC 000:458.718 Reset: Halt core after reset via DEMCR.VC_CORERESET. +T174FC 000:458.738 Reset: Reset device via AIRCR.SYSRESETREQ. +T174FC 000:458.745 CPU is running +T174FC 000:458.752 CPU_WriteMem(4 bytes @ 0xE000ED0C) +T174FC 000:511.447 CPU_ReadMem(4 bytes @ 0xE000EDF0) +T174FC 000:511.846 CPU_ReadMem(4 bytes @ 0xE000EDF0) +T174FC 000:517.301 CPU_WriteMem(4 bytes @ 0xE000EDFC) +T174FC 000:523.435 CPU_ReadMem(4 bytes @ 0xE000EDF0) +T174FC 000:528.699 CPU_WriteMem(4 bytes @ 0xE000EDFC) +T174FC 000:529.045 CPU_WriteMem(4 bytes @ 0xE0001028) +T174FC 000:529.300 CPU_WriteMem(4 bytes @ 0xE0001038) +T174FC 000:529.643 CPU_WriteMem(4 bytes @ 0xE0001048) +T174FC 000:529.915 CPU_WriteMem(4 bytes @ 0xE0001058) +T174FC 000:530.190 CPU_ReadMem(4 bytes @ 0xE000EE08) +T174FC 000:530.486 CPU_WriteMem(4 bytes @ 0xE0002000) +T174FC 000:530.837 CPU_ReadMem(4 bytes @ 0xE000EDFC) +T174FC 000:531.170 CPU_ReadMem(4 bytes @ 0xE0001000) +T174FC 000:531.542 CPU_ReadMem(4 bytes @ 0xE000EE08) +T174FC 000:531.854 - 74.816ms +T174FC 000:531.869 JLINK_HasError() +T174FC 000:531.882 JLINK_ReadReg(R15 (PC)) +T174FC 000:531.892 CPU_ReadMem(4 bytes @ 0xE000EE08) +T174FC 000:532.191 - 0.314ms returns 0x02009868 +T174FC 000:532.203 JLINK_ReadReg(XPSR) +T174FC 000:532.211 - 0.007ms returns 0x01000000 +T174FC 000:532.218 JLINK_Halt() +T174FC 000:532.222 - 0.004ms returns 0x00 +T174FC 000:532.228 JLINK_ReadMemU32(0xE000EDF0, 0x1 Items) +T174FC 000:532.237 CPU_ReadMem(4 bytes @ 0xE000EDF0) +T174FC 000:532.680 Data: 03 00 13 00 +T174FC 000:532.690 Debug reg: DHCSR +T174FC 000:532.697 - 0.469ms returns 1 (0x1) +T174FC 000:532.706 JLINK_WriteU32_64(0xE000EDF0, 0xA05F0003) +T174FC 000:532.711 Debug reg: DHCSR +T174FC 000:532.943 CPU_WriteMem(4 bytes @ 0xE000EDF0) +T174FC 000:533.209 - 0.502ms returns 0 (0x00000000) +T174FC 000:533.220 JLINK_WriteU32_64(0xE000EDFC, 0x01000000) +T174FC 000:533.225 Debug reg: DEMCR +T174FC 000:533.235 CPU_WriteMem(4 bytes @ 0xE000EDFC) +T174FC 000:533.646 - 0.425ms returns 0 (0x00000000) +T174FC 000:533.682 JLINK_GetHWStatus(...) +T174FC 000:533.892 - 0.209ms returns 0 +T174FC 000:533.917 JLINK_GetNumBPUnits(Type = 0xFFFFFF00) +T174FC 000:533.923 - 0.005ms returns 0x08 +T174FC 000:533.928 JLINK_GetNumBPUnits(Type = 0xF0) +T174FC 000:533.933 - 0.004ms returns 0x2000 +T174FC 000:533.938 JLINK_GetNumWPUnits() +T174FC 000:533.942 - 0.004ms returns 8 +T174FC 000:533.957 JLINK_GetSpeed() +T174FC 000:533.962 - 0.005ms returns 4000 +T174FC 000:533.971 JLINK_ReadMemU32(0xE000E004, 0x1 Items) +T174FC 000:533.980 CPU_ReadMem(4 bytes @ 0xE000E004) +T174FC 000:534.291 Data: 02 00 00 00 +T174FC 000:534.301 - 0.330ms returns 1 (0x1) +T174FC 000:534.310 JLINK_HasError() +T174FC 000:534.316 JLINK_ReadReg(R15 (PC)) +T174FC 000:534.324 - 0.007ms returns 0x02009868 +T174FC 000:534.329 JLINK_ReadReg(XPSR) +T174FC 000:534.335 - 0.005ms returns 0x01000000 +T174FC 000:541.207 JLINK_ReadMemEx(0xE0001004, 0x4 Bytes, Flags = 0x02000000) +T174FC 000:541.236 Data: 00 00 00 00 +T174FC 000:541.244 Debug reg: DWT_CYCCNT +T174FC 000:541.251 - 0.044ms returns 4 (0x4) +T174FC 000:586.561 JLINK_WriteMemEx(0x27030080, 0x00000300 Bytes, Flags = 0x02000000) +T174FC 000:586.582 Data: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ... +T174FC 000:586.798 -- Need to split memory access +T174FC 000:586.813 -- #0: 0x27030080, 0x00000000 bytes +T174FC 000:586.821 completely In flash +T174FC 000:586.829 -- #1: 0x27030360, 0x00000000 bytes +T174FC 000:586.842 CPU_WriteMem(32 bytes @ 0x27030360) +T174FC 000:588.173 - 1.612ms returns 0x300 +T174FC 000:648.353 JLINK_HasError() +T174FC 000:648.380 JLINK_SetResetType(JLINKARM_CM3_RESET_TYPE_NORMAL) +T174FC 000:648.387 - 0.006ms returns JLINKARM_CM3_RESET_TYPE_NORMAL +T174FC 000:648.392 JLINK_Reset() +T174FC 000:648.594 CPU_ReadMem(4 bytes @ 0xE000ED90) +T174FC 000:648.920 CPU_ReadMem(4 bytes @ 0xE000ED94) +T174FC 000:649.306 -- -------------------------------------- +T174FC 000:649.325 -- Start of determining flash info (Bank @ 0x27030080) +T174FC 000:649.337 -- End of determining flash info +T174FC 000:649.347 -- Start of determining dirty areas in flash cache +T174FC 000:649.361 -- Filling invalid ranges in sector buffer (flash cache) for sector @ 0x27030080 if necessary +T174FC 000:649.369 -- Filling invalid ranges in sector buffer (flash cache) for sector @ 0x27030090 if necessary +T174FC 000:649.376 -- Filling invalid ranges in sector buffer (flash cache) for sector @ 0x270300A0 if necessary +T174FC 000:649.387 -- Filling invalid ranges in sector buffer (flash cache) for sector @ 0x270300B0 if necessary +T174FC 000:649.395 -- Filling invalid ranges in sector buffer (flash cache) for sector @ 0x270300C0 if necessary +T174FC 000:649.402 -- Filling invalid ranges in sector buffer (flash cache) for sector @ 0x270300D0 if necessary +T174FC 000:649.437 -- Filling invalid ranges in sector buffer (flash cache) for sector @ 0x270300E0 if necessary +T174FC 000:649.444 -- Filling invalid ranges in sector buffer (flash cache) for sector @ 0x270300F0 if necessary +T174FC 000:649.451 -- Filling invalid ranges in sector buffer (flash cache) for sector @ 0x27030100 if necessary +T174FC 000:649.458 -- Filling invalid ranges in sector buffer (flash cache) for sector @ 0x27030110 if necessary +T174FC 000:649.465 -- Filling invalid ranges in sector buffer (flash cache) for sector @ 0x27030120 if necessary +T174FC 000:649.472 -- Filling invalid ranges in sector buffer (flash cache) for sector @ 0x27030130 if necessary +T174FC 000:649.479 -- Filling invalid ranges in sector buffer (flash cache) for sector @ 0x27030140 if necessary +T174FC 000:649.485 -- Filling invalid ranges in sector buffer (flash cache) for sector @ 0x27030150 if necessary +T174FC 000:649.492 -- Filling invalid ranges in sector buffer (flash cache) for sector @ 0x27030160 if necessary +T174FC 000:649.500 -- Filling invalid ranges in sector buffer (flash cache) for sector @ 0x27030170 if necessary +T174FC 000:649.506 -- Filling invalid ranges in sector buffer (flash cache) for sector @ 0x27030180 if necessary +T174FC 000:649.516 -- Filling invalid ranges in sector buffer (flash cache) for sector @ 0x27030190 if necessary +T174FC 000:649.524 -- Filling invalid ranges in sector buffer (flash cache) for sector @ 0x270301A0 if necessary +T174FC 000:649.531 -- Filling invalid ranges in sector buffer (flash cache) for sector @ 0x270301B0 if necessary +T174FC 000:649.538 -- Filling invalid ranges in sector buffer (flash cache) for sector @ 0x270301C0 if necessary +T174FC 000:649.545 -- Filling invalid ranges in sector buffer (flash cache) for sector @ 0x270301D0 if necessary +T174FC 000:649.552 -- Filling invalid ranges in sector buffer (flash cache) for sector @ 0x270301E0 if necessary +T174FC 000:649.559 -- Filling invalid ranges in sector buffer (flash cache) for sector @ 0x270301F0 if necessary +T174FC 000:649.566 -- Filling invalid ranges in sector buffer (flash cache) for sector @ 0x27030200 if necessary +T174FC 000:649.573 -- Filling invalid ranges in sector buffer (flash cache) for sector @ 0x27030210 if necessary +T174FC 000:649.579 -- Filling invalid ranges in sector buffer (flash cache) for sector @ 0x27030220 if necessary +T174FC 000:649.586 -- Filling invalid ranges in sector buffer (flash cache) for sector @ 0x27030230 if necessary +T174FC 000:649.593 -- Filling invalid ranges in sector buffer (flash cache) for sector @ 0x27030240 if necessary +T174FC 000:649.600 -- Filling invalid ranges in sector buffer (flash cache) for sector @ 0x27030250 if necessary +T174FC 000:649.607 -- Filling invalid ranges in sector buffer (flash cache) for sector @ 0x27030260 if necessary +T174FC 000:649.614 -- Filling invalid ranges in sector buffer (flash cache) for sector @ 0x27030270 if necessary +T174FC 000:649.621 -- Filling invalid ranges in sector buffer (flash cache) for sector @ 0x27030280 if necessary +T174FC 000:649.628 -- Filling invalid ranges in sector buffer (flash cache) for sector @ 0x27030290 if necessary +T174FC 000:649.635 -- Filling invalid ranges in sector buffer (flash cache) for sector @ 0x270302A0 if necessary +T174FC 000:649.642 -- Filling invalid ranges in sector buffer (flash cache) for sector @ 0x270302B0 if necessary +T174FC 000:649.649 -- Filling invalid ranges in sector buffer (flash cache) for sector @ 0x270302C0 if necessary +T174FC 000:649.656 -- Filling invalid ranges in sector buffer (flash cache) for sector @ 0x270302D0 if necessary +T174FC 000:649.665 -- Filling invalid ranges in sector buffer (flash cache) for sector @ 0x270302E0 if necessary +T174FC 000:649.672 -- Filling invalid ranges in sector buffer (flash cache) for sector @ 0x270302F0 if necessary +T174FC 000:649.679 -- Filling invalid ranges in sector buffer (flash cache) for sector @ 0x27030300 if necessary +T174FC 000:649.686 -- Filling invalid ranges in sector buffer (flash cache) for sector @ 0x27030310 if necessary +T174FC 000:649.692 -- Filling invalid ranges in sector buffer (flash cache) for sector @ 0x27030320 if necessary +T174FC 000:649.699 -- Filling invalid ranges in sector buffer (flash cache) for sector @ 0x27030330 if necessary +T174FC 000:649.706 -- Filling invalid ranges in sector buffer (flash cache) for sector @ 0x27030340 if necessary +T174FC 000:649.713 -- Filling invalid ranges in sector buffer (flash cache) for sector @ 0x27030350 if necessary +T174FC 000:649.726 -- End of determining dirty areas +T174FC 000:649.733 -- Start of preparing flash programming +T174FC 000:649.744 -- Preparing RAMCode +T174FC 000:649.750 -- Calculating RAM usage +T174FC 000:649.758 -- RAM usage = 4152 Bytes +T174FC 000:649.764 -- Preserving CPU registers +T174FC 000:649.796 -- Preparing memory +T174FC 000:649.803 -- Determining CPU clock frequency +T174FC 000:694.887 -- CPU frequency = 8372 kHz +T174FC 000:694.909 -- Preparing target +T174FC 000:694.916 -- Preserving target RAM temporarily used for programming +T174FC 000:730.326 -- Downloading RAMCode +T174FC 000:792.899 -- Initializing RAMCode (InitType: 3 = Verify) +T174FC 000:792.918 -- Executing Init(3) +T174FC 000:806.751 -- End of preparing flash programming +T174FC 000:806.796 + ***** Warning: +T174FC 000:806.803 CPU is running at low speed (8372 kHz). +T174FC 000:806.810 -- CPU is running at 8372 kHz. +T174FC 000:806.817 -- Start of comparing flash +T174FC 000:806.825 -- CRC check was estimated as fastest method +T174FC 000:806.833 -- Comparing range 0x27030080 - 0x2703035F (46 Sectors, 736 Bytes), using single-block CRC calculation +T174FC 000:809.520 -- CRC matches +T174FC 000:809.532 -- Comparing range 0x27030080 - 0x2703035F (46 Sectors, 736 Bytes), using alternative single-block CRC calculation +T174FC 000:812.289 -- CRC matches +T174FC 000:812.301 -- End of comparing flash +T174FC 000:812.309 -- Start of erasing sectors +T174FC 000:812.316 -- End of erasing sectors +T174FC 000:812.323 -- Start of flash programming +T174FC 000:812.335 -- End of flash programming +T174FC 000:812.343 -- Start of verifying flash +T174FC 000:812.349 -- End of verifying flash +T174FC 000:812.356 -- Start of restoring +T174FC 000:812.363 -- Executing UnInit() +T174FC 000:819.355 -- Restoring target memory +T174FC 000:878.540 -- Restoring CPU registers +T174FC 000:878.954 -- End of restoring +T174FC 000:878.985 -- Bank 2 @ 0x27030080: Skipped. Contents already match +T174FC 000:878.993 -- Bank 2 @ 0x27030080: Skipped. Contents already match +T174FC 000:948.641 CPU_WriteMem(4 bytes @ 0xE000EDF0) +T174FC 000:948.918 CPU_ReadMem(4 bytes @ 0xE000ED44) +T174FC 000:949.247 CPU_ReadMem(4 bytes @ 0xE000EE08) +T174FC 000:949.544 CPU_WriteMem(4 bytes @ 0xE000EE08) +T174FC 000:949.868 Reset: ARMv8M core with Security Extension enabled detected. +T174FC 000:949.879 CPU_WriteMem(4 bytes @ 0xE000EDFC) +T174FC 000:950.192 Reset: Halt core after reset via DEMCR.VC_CORERESET. +T174FC 000:950.205 Reset: Reset device via AIRCR.SYSRESETREQ. +T174FC 000:950.213 CPU_WriteMem(4 bytes @ 0xE000ED0C) +T174FC 001:002.631 CPU_ReadMem(4 bytes @ 0xE000EDF0) +T174FC 001:002.974 CPU_ReadMem(4 bytes @ 0xE000EDF0) +T174FC 001:003.410 CPU_WriteMem(4 bytes @ 0xE000EDFC) +T174FC 001:009.631 CPU_ReadMem(4 bytes @ 0xE000EDF0) +T174FC 001:014.907 CPU_WriteMem(4 bytes @ 0xE000EDFC) +T174FC 001:015.263 CPU_WriteMem(4 bytes @ 0xE0001028) +T174FC 001:015.597 CPU_WriteMem(4 bytes @ 0xE0001038) +T174FC 001:015.897 CPU_WriteMem(4 bytes @ 0xE0001048) +T174FC 001:016.217 CPU_WriteMem(4 bytes @ 0xE0001058) +T174FC 001:016.527 CPU_ReadMem(4 bytes @ 0xE000EE08) +T174FC 001:016.855 CPU_WriteMem(4 bytes @ 0xE0002000) +T174FC 001:017.149 CPU_ReadMem(4 bytes @ 0xE000EDFC) +T174FC 001:017.490 CPU_ReadMem(4 bytes @ 0xE0001000) +T174FC 001:017.821 CPU_ReadMem(4 bytes @ 0xE000EE08) +T174FC 001:018.143 - 369.750ms +T174FC 001:018.744 JLINK_HasError() +T174FC 001:018.758 JLINK_ReadReg(R15 (PC)) +T174FC 001:018.767 CPU_ReadMem(4 bytes @ 0xE000EE08) +T174FC 001:019.070 - 0.311ms returns 0x02009868 +T174FC 001:019.082 JLINK_ReadReg(XPSR) +T174FC 001:019.091 - 0.009ms returns 0x01000000 +T174FC 001:019.617 JLINK_ReadMemEx(0x02009868, 0x3C Bytes, Flags = 0x02000000) +T174FC 001:019.635 CPU_ReadMem(128 bytes @ 0x02009840) +T174FC 001:021.829 -- Updating C cache (128 bytes @ 0x02009840) +T174FC 001:021.841 -- Read from C cache (60 bytes @ 0x02009868) +T174FC 001:021.850 Data: 00 F0 DA F8 F8 F7 D8 FB FE E7 00 00 00 00 00 00 ... +T174FC 001:021.857 - 2.240ms returns 60 (0x3C) +T174FC 001:021.864 JLINK_ReadMemEx(0x02009868, 0x2 Bytes, Flags = 0x02000000) +T174FC 001:021.871 -- Read from C cache (2 bytes @ 0x02009868) +T174FC 001:021.877 Data: 00 F0 +T174FC 001:021.884 - 0.020ms returns 2 (0x2) +T174FC 001:021.951 JLINK_ReadMemEx(0x0200986A, 0x2 Bytes, Flags = 0x02000000) +T174FC 001:021.957 -- Read from C cache (2 bytes @ 0x0200986A) +T174FC 001:021.964 Data: DA F8 +T174FC 001:021.970 - 0.019ms returns 2 (0x2) +T174FC 001:021.999 JLINK_ReadMemEx(0x0200986C, 0x3C Bytes, Flags = 0x02000000) +T174FC 001:022.005 -- Read from C cache (60 bytes @ 0x0200986C) +T174FC 001:022.012 Data: F8 F7 D8 FB FE E7 00 00 00 00 00 00 70 B5 2D ED ... +T174FC 001:022.018 - 0.019ms returns 60 (0x3C) +T174FC 001:022.024 JLINK_ReadMemEx(0x0200986C, 0x2 Bytes, Flags = 0x02000000) +T174FC 001:022.029 -- Read from C cache (2 bytes @ 0x0200986C) +T174FC 001:022.035 Data: F8 F7 +T174FC 001:022.042 - 0.018ms returns 2 (0x2) +T174FC 001:022.047 JLINK_ReadMemEx(0x0200986E, 0x2 Bytes, Flags = 0x02000000) +T174FC 001:022.052 -- Read from C cache (2 bytes @ 0x0200986E) +T174FC 001:022.059 Data: D8 FB +T174FC 001:022.065 - 0.017ms returns 2 (0x2) +T174FC 001:022.435 JLINK_ReadMemEx(0x02009870, 0x3C Bytes, Flags = 0x02000000) +T174FC 001:022.443 -- Read from C cache (60 bytes @ 0x02009870) +T174FC 001:022.450 Data: FE E7 00 00 00 00 00 00 70 B5 2D ED 0C 8B 8E B0 ... +T174FC 001:022.457 - 0.022ms returns 60 (0x3C) +T174FC 001:022.462 JLINK_ReadMemEx(0x02009870, 0x2 Bytes, Flags = 0x02000000) +T174FC 001:022.467 -- Read from C cache (2 bytes @ 0x02009870) +T174FC 001:022.474 Data: FE E7 +T174FC 001:022.480 - 0.018ms returns 2 (0x2) +T174FC 001:022.486 JLINK_ReadMemEx(0x02009872, 0x2 Bytes, Flags = 0x02000000) +T174FC 001:022.491 -- Read from C cache (2 bytes @ 0x02009872) +T174FC 001:022.497 Data: 00 00 +T174FC 001:022.504 - 0.018ms returns 2 (0x2) +T174FC 001:022.518 JLINK_ReadMemEx(0x02009872, 0x2 Bytes, Flags = 0x02000000) +T174FC 001:022.523 -- Read from C cache (2 bytes @ 0x02009872) +T174FC 001:022.530 Data: 00 00 +T174FC 001:022.536 - 0.018ms returns 2 (0x2) +T174FC 001:022.542 JLINK_ReadMemEx(0x02009874, 0x3C Bytes, Flags = 0x02000000) +T174FC 001:022.547 -- Read from C cache (60 bytes @ 0x02009874) +T174FC 001:022.554 Data: 00 00 00 00 70 B5 2D ED 0C 8B 8E B0 30 EE E1 CA ... +T174FC 001:022.560 - 0.018ms returns 60 (0x3C) +T174FC 001:022.566 JLINK_ReadMemEx(0x02009874, 0x2 Bytes, Flags = 0x02000000) +T174FC 001:022.571 -- Read from C cache (2 bytes @ 0x02009874) +T174FC 001:022.577 Data: 00 00 +T174FC 001:022.583 - 0.017ms returns 2 (0x2) +T174FC 001:022.595 JLINK_ReadMemEx(0x02009874, 0x3C Bytes, Flags = 0x02000000) +T174FC 001:022.601 -- Read from C cache (60 bytes @ 0x02009874) +T174FC 001:022.608 Data: 00 00 00 00 70 B5 2D ED 0C 8B 8E B0 30 EE E1 CA ... +T174FC 001:022.616 - 0.021ms returns 60 (0x3C) +T174FC 001:022.622 JLINK_ReadMemEx(0x02009874, 0x2 Bytes, Flags = 0x02000000) +T174FC 001:022.633 -- Read from C cache (2 bytes @ 0x02009874) +T174FC 001:022.639 Data: 00 00 +T174FC 001:022.646 - 0.024ms returns 2 (0x2) +T174FC 001:022.651 JLINK_ReadMemEx(0x02009876, 0x2 Bytes, Flags = 0x02000000) +T174FC 001:022.656 -- Read from C cache (2 bytes @ 0x02009876) +T174FC 001:022.663 Data: 00 00 +T174FC 001:022.669 - 0.018ms returns 2 (0x2) +T174FC 002:737.884 JLINK_ReadMemEx(0x02009876, 0x2 Bytes, Flags = 0x02000000) +T174FC 002:737.910 -- Read from C cache (2 bytes @ 0x02009876) +T174FC 002:737.918 Data: 00 00 +T174FC 002:737.925 - 0.041ms returns 2 (0x2) +T174FC 002:737.931 JLINK_ReadMemEx(0x02009878, 0x3C Bytes, Flags = 0x02000000) +T174FC 002:737.937 -- Read from C cache (60 bytes @ 0x02009878) +T174FC 002:737.944 Data: 70 B5 2D ED 0C 8B 8E B0 30 EE E1 CA 30 EE 41 DA ... +T174FC 002:737.950 - 0.019ms returns 60 (0x3C) +T174FC 002:737.956 JLINK_ReadMemEx(0x02009878, 0x2 Bytes, Flags = 0x02000000) +T174FC 002:737.961 -- Read from C cache (2 bytes @ 0x02009878) +T174FC 002:737.967 Data: 70 B5 +T174FC 002:737.974 - 0.018ms returns 2 (0x2) +T174FC 002:737.998 JLINK_ReadMemEx(0x02009878, 0x3C Bytes, Flags = 0x02000000) +T174FC 002:738.004 -- Read from C cache (60 bytes @ 0x02009878) +T174FC 002:738.011 Data: 70 B5 2D ED 0C 8B 8E B0 30 EE E1 CA 30 EE 41 DA ... +T174FC 002:738.017 - 0.019ms returns 60 (0x3C) +T174FC 002:738.023 JLINK_ReadMemEx(0x02009878, 0x2 Bytes, Flags = 0x02000000) +T174FC 002:738.028 -- Read from C cache (2 bytes @ 0x02009878) +T174FC 002:738.034 Data: 70 B5 +T174FC 002:738.040 - 0.017ms returns 2 (0x2) +T174FC 002:738.046 JLINK_ReadMemEx(0x0200987A, 0x2 Bytes, Flags = 0x02000000) +T174FC 002:738.051 -- Read from C cache (2 bytes @ 0x0200987A) +T174FC 002:738.058 Data: 2D ED +T174FC 002:738.064 - 0.018ms returns 2 (0x2) +T9C40 003:035.037 JLINK_ReadMemEx(0x02009868, 0x2 Bytes, Flags = 0x02000000) +T9C40 003:035.059 -- Read from C cache (2 bytes @ 0x02009868) +T9C40 003:035.067 Data: 00 F0 +T9C40 003:035.075 - 0.038ms returns 2 (0x2) +T9C40 003:035.081 JLINK_HasError() +T9C40 003:035.089 JLINK_SetBPEx(Addr = 0x020037CC, Type = 0xFFFFFFF2) +T9C40 003:035.097 - 0.008ms returns 0x00000001 +T9C40 003:035.103 JLINK_HasError() +T9C40 003:035.108 JLINK_HasError() +T9C40 003:035.114 JLINK_Go() +T9C40 003:035.471 CPU_ReadMem(4 bytes @ 0xE0001000) +T9C40 003:035.886 CPU_WriteMem(4 bytes @ 0xE0002008) +T9C40 003:035.900 CPU_WriteMem(4 bytes @ 0xE000200C) +T9C40 003:035.906 CPU_WriteMem(4 bytes @ 0xE0002010) +T9C40 003:035.913 CPU_WriteMem(4 bytes @ 0xE0002014) +T9C40 003:035.919 CPU_WriteMem(4 bytes @ 0xE0002018) +T9C40 003:035.926 CPU_WriteMem(4 bytes @ 0xE000201C) +T9C40 003:035.933 CPU_WriteMem(4 bytes @ 0xE0002020) +T9C40 003:035.939 CPU_WriteMem(4 bytes @ 0xE0002024) +T9C40 003:037.421 CPU_WriteMem(4 bytes @ 0xE0001004) +T9C40 003:038.840 Memory map 'after startup completion point' is active +T9C40 003:038.853 - 3.739ms +T9C40 003:139.689 JLINK_HasError() +T9C40 003:139.709 JLINK_IsHalted() +T9C40 003:140.059 - 0.349ms returns FALSE +T9C40 003:240.703 JLINK_HasError() +T9C40 003:240.726 JLINK_IsHalted() +T9C40 003:241.053 - 0.325ms returns FALSE +T9C40 003:341.278 JLINK_HasError() +T9C40 003:341.298 JLINK_IsHalted() +T9C40 003:341.616 - 0.317ms returns FALSE +T9C40 003:442.056 JLINK_HasError() +T9C40 003:442.080 JLINK_IsHalted() +T9C40 003:442.408 - 0.328ms returns FALSE +T9C40 003:542.824 JLINK_HasError() +T9C40 003:542.848 JLINK_IsHalted() +T9C40 003:543.192 - 0.343ms returns FALSE +T9C40 003:643.828 JLINK_HasError() +T9C40 003:643.852 JLINK_HasError() +T9C40 003:644.043 JLINK_IsHalted() +T9C40 003:644.398 - 0.354ms returns FALSE +T9C40 003:744.496 JLINK_HasError() +T9C40 003:744.524 JLINK_IsHalted() +T9C40 003:744.972 - 0.448ms returns FALSE +T9C40 003:845.405 JLINK_HasError() +T9C40 003:845.426 JLINK_IsHalted() +T9C40 003:845.772 - 0.345ms returns FALSE +T9C40 003:946.460 JLINK_HasError() +T9C40 003:946.480 JLINK_IsHalted() +T9C40 003:946.794 - 0.314ms returns FALSE +T9C40 004:047.094 JLINK_HasError() +T9C40 004:047.114 JLINK_Halt() +T9C40 004:049.952 - 2.837ms returns 0x00 +T9C40 004:049.971 JLINK_IsHalted() +T9C40 004:049.977 - 0.006ms returns TRUE +T9C40 004:049.984 JLINK_IsHalted() +T9C40 004:049.990 - 0.005ms returns TRUE +T9C40 004:049.996 JLINK_IsHalted() +T9C40 004:050.002 - 0.005ms returns TRUE +T9C40 004:050.009 JLINK_HasError() +T9C40 004:050.017 JLINK_ReadReg(R15 (PC)) +T9C40 004:050.029 CPU_ReadMem(4 bytes @ 0xE000EE08) +T9C40 004:050.432 - 0.414ms returns 0x0200B5E6 +T9C40 004:050.443 JLINK_ReadReg(XPSR) +T9C40 004:050.453 - 0.009ms returns 0x61000000 +T9C40 004:050.464 JLINK_HasError() +T9C40 004:050.471 JLINK_ClrBPEx(BPHandle = 0x00000001) +T9C40 004:050.478 - 0.007ms returns 0x00 +T9C40 004:050.485 JLINK_HasError() +T9C40 004:050.492 JLINK_HasError() +T9C40 004:050.499 JLINK_ReadMemU32(0xE000ED30, 0x1 Items) +T9C40 004:050.511 CPU_ReadMem(4 bytes @ 0xE000ED30) +T9C40 004:050.842 Data: 01 00 00 00 +T9C40 004:050.855 - 0.356ms returns 1 (0x1) +T9C40 004:050.864 JLINK_ReadMemU32(0xE0001028, 0x1 Items) +T9C40 004:050.878 CPU_ReadMem(4 bytes @ 0xE0001028) +T9C40 004:051.197 Data: 00 00 00 58 +T9C40 004:051.212 Debug reg: DWT_FUNC[0] +T9C40 004:051.222 - 0.357ms returns 1 (0x1) +T9C40 004:051.231 JLINK_ReadMemU32(0xE0001038, 0x1 Items) +T9C40 004:051.244 CPU_ReadMem(4 bytes @ 0xE0001038) +T9C40 004:051.550 Data: 00 00 00 F0 +T9C40 004:051.564 Debug reg: DWT_FUNC[1] +T9C40 004:051.572 - 0.341ms returns 1 (0x1) +T9C40 004:051.582 JLINK_ReadMemU32(0xE0001048, 0x1 Items) +T9C40 004:051.594 CPU_ReadMem(4 bytes @ 0xE0001048) +T9C40 004:051.969 Data: 00 00 00 50 +T9C40 004:051.986 Debug reg: DWT_FUNC[2] +T9C40 004:051.995 - 0.413ms returns 1 (0x1) +T9C40 004:052.006 JLINK_ReadMemU32(0xE0001058, 0x1 Items) +T9C40 004:052.021 CPU_ReadMem(4 bytes @ 0xE0001058) +T9C40 004:052.411 Data: 00 00 00 F0 +T9C40 004:052.425 Debug reg: DWT_FUNC[3] +T9C40 004:052.435 - 0.428ms returns 1 (0x1) +T9C40 004:052.444 JLINK_ReadMemU32(0xE0001068, 0x1 Items) +T9C40 004:052.457 CPU_ReadMem(4 bytes @ 0xE0001068) +T9C40 004:052.760 Data: 00 00 00 50 +T9C40 004:052.774 - 0.329ms returns 1 (0x1) +T9C40 004:052.781 JLINK_ReadMemU32(0xE0001078, 0x1 Items) +T9C40 004:052.791 CPU_ReadMem(4 bytes @ 0xE0001078) +T9C40 004:053.136 Data: 00 00 00 D0 +T9C40 004:053.151 - 0.369ms returns 1 (0x1) +T9C40 004:053.160 JLINK_ReadMemU32(0xE0001088, 0x1 Items) +T9C40 004:053.173 CPU_ReadMem(4 bytes @ 0xE0001088) +T9C40 004:053.488 Data: 00 00 00 50 +T9C40 004:053.500 - 0.340ms returns 1 (0x1) +T9C40 004:053.507 JLINK_ReadMemU32(0xE0001098, 0x1 Items) +T9C40 004:053.519 CPU_ReadMem(4 bytes @ 0xE0001098) +T9C40 004:053.839 Data: 00 00 00 D0 +T9C40 004:053.856 - 0.348ms returns 1 (0x1) +T174FC 004:665.942 JLINK_HasError() +T174FC 004:668.669 JLINK_Close() +T174FC 004:669.669 CPU_WriteMem(4 bytes @ 0xE0002008) +T174FC 004:670.051 CPU_ReadMem(4 bytes @ 0xE0001000) +T174FC 004:695.862 - 27.192ms +T174FC 004:695.880 +T174FC 004:695.886 Closed diff --git a/bsp/renesas/ra8m1-ek/JLinkSettings.ini b/bsp/renesas/ra8m1-ek/JLinkSettings.ini new file mode 100644 index 000000000000..f0dc30d9793b --- /dev/null +++ b/bsp/renesas/ra8m1-ek/JLinkSettings.ini @@ -0,0 +1,47 @@ +[BREAKPOINTS] +ForceImpTypeAny = 0 +ShowInfoWin = 1 +EnableFlashBP = 2 +BPDuringExecution = 0 +[CFI] +CFISize = 0x00 +CFIAddr = 0x00 +[CPU] +MonModeVTableAddr = 0xFFFFFFFF +MonModeDebug = 0 +MaxNumAPs = 0 +LowPowerHandlingMode = 0 +OverrideMemMap = 0 +AllowSimulation = 1 +ScriptFile="" +[FLASH] +RMWThreshold = 0x200 +Loaders="" +EraseType = 0x00 +CacheExcludeSize = 0x00 +CacheExcludeAddr = 0x00 +MinNumBytesFlashDL = 0 +SkipProgOnCRCMatch = 1 +VerifyDownload = 1 +AllowCaching = 1 +EnableFlashDL = 2 +Override = 0 +Device="ARM7" +[GENERAL] +WorkRAMSize = 0x10000 +WorkRAMAddr = 0x22000000 +RAMUsageLimit = 0x00 +[SWO] +SWOLogFile="" +[MEM] +RdOverrideOrMask = 0x00 +RdOverrideAndMask = 0xFFFFFFFF +RdOverrideAddr = 0xFFFFFFFF +WrOverrideOrMask = 0x00 +WrOverrideAndMask = 0xFFFFFFFF +WrOverrideAddr = 0xFFFFFFFF +[RAM] +VerifyDownload = 0x00 +[MEM_MAP] +[DYN_MEM_MAP] +NumUserRegion = 0x00 diff --git a/bsp/renesas/ra8m1-ek/Kconfig b/bsp/renesas/ra8m1-ek/Kconfig new file mode 100644 index 000000000000..006f89db58a9 --- /dev/null +++ b/bsp/renesas/ra8m1-ek/Kconfig @@ -0,0 +1,29 @@ +mainmenu "RT-Thread Configuration" + +config BSP_DIR + string + option env="BSP_ROOT" + default "." + +config RTT_DIR + string + option env="RTT_ROOT" + default "../../.." + +# you can change the RTT_ROOT default "../.." to your rtthread_root, +# example : default "F:/git_repositories/rt-thread" + +config PKGS_DIR + string + option env="PKGS_ROOT" + default "packages" + +config ENV_DIR + string + option env="ENV_ROOT" + default "/" + +source "$RTT_DIR/Kconfig" +source "$PKGS_DIR/Kconfig" +source "../libraries/Kconfig" +source "$BSP_DIR/board/Kconfig" diff --git a/bsp/renesas/ra8m1-ek/README.md b/bsp/renesas/ra8m1-ek/README.md new file mode 100644 index 000000000000..6ba046f40f5b --- /dev/null +++ b/bsp/renesas/ra8m1-ek/README.md @@ -0,0 +1,151 @@ +# RA6M3-HMI-Board BSP Instruction + +[中文](README_ZH.md)|English + +## Introduction + +Get ready to dive into the world of the RA6M3-HMI-Board development board! This document provides all the juicy details on the BSP (Board Support Package) instructions. By checking out the Quick Start section, developers can hit the ground running with this BSP and have RT-Thread up and running on the development board in no time. + +Here’s what you can expect to find inside: + +• A comprehensive introduction to the development board + +• A handy BSP Quick Start Guide + +Let’s start with an introduction to the development board. The HMI-Board board, built on the foundation of the Renesas RA6M3 MCU, is a game-changer. With its flexible software package and IDE configuration, users can easily evaluate the features of the RA6M3 MCU group and develop cutting-edge embedded system applications. + +Curious about what it looks like? Check out the front view of the development board in the figure below: + +![](docs/picture/front.png) + +The back view: + +![](docs/picture/back.png) + +- ## Hardware Framework + +![img](https://miro.medium.com/v2/resize:fit:963/1*mogBeXeySQY9O4rFbPhy8g.png) + + - RA6M3(R7FA6M3AH3CFB): Cortex-M4F core, 120Mhz main frequency, with 2MB Flash/640KB RAM, integrated TFT controller, 2D accelerator, and JPEG decoder. + - 4.3 inch LCD (RGB 888) + - On-board emulator + - Ethernet + - RW007 (SPI high-speed WIFI) + - USB-Device + - TF Card + - CAN + - 1 microphone, 1 speaker + - Arduino expansion interface + - 2 PMOD expansion interfaces + - 4 buttons: 3 user buttons, one reset button + + + +### Peripheral Condition + +Each peripheral supporting condition for this BSP is as follows: + +| **On-chip Peripheral Drivers** | **Support** | Remark | +| ------------------------------ | ----------- | ------------------------------------- | +| UART | Support | UART9 is the default log output port. | +| GPIO | Support | | +| LCD | Support | | +| SDHI | Support | | +| JPEG | Support | | +| G2D | Support | | +| RW007 | Support | | +| ETH | Support | | +| SPI | Support | | +| I2C | Support | | +| CAN | Support | | + +## Instructions for Use + +The instructions for use are divided into the following two sections: + +• Quick Start + +This section is a user guide for newcomers to RT-Thread. By following simple steps, you can run the RT-Thread operating system on this development board and see the experimental results. + +• Advanced Use + +This section is for developers who want to enable more development board resources on the RT-Thread operating system. By using the ENV tool to configure the BSP, you can enable more on-board resources and achieve more advanced functions. + +## Quick Start + +This BSP currently only provides an MDK5 project. The following tutorial takes the MDK5 development environment as an example to introduce how to run the system. + +**Compile and Download** + +• Compile: Double-click the **project.uvprojx** file to open the MDK5 project and compile the program. + +• Download: Click the Debug button in MDK to download and debug + +**Running results** + +After the program is downloaded successfully, the system will automatically run and print system information. + +Connect the corresponding serial port of the development board to the PC, open the corresponding serial port (115200-8-1-N) in the terminal tool, reset the device, and you can see RT-Thread’s output information. Enter the help command can view the commands supported by the system. + +``` + \ | / +- RT - Thread Operating System + / | \ 5.0.0 build Jan 4 2023 10:14:56 + 2006 - 2022 Copyright by RT-Thread team +Hello RT-Thread! +msh > +msh >help +help - RT-Thread shell help. +ps - List threads in the system. +free - Show the memory usage in the system. +clear - clear the terminal screen +version - show RT-Thread version information +list - list objects + +msh > +``` + +**Application Entry Function** + +The entry function of the application layer is in **bsp\renesas\ra6m3-hmi-board\src\hal_entry.c** in `void hal_entry(void)`. Source files that you created can be placed directly in the src directory. + +``` +void hal_entry(void) +{ + rt_kprintf("\nHello RT-Thread!\n"); + + while (1) + { + rt_pin_write(LED3_PIN, PIN_HIGH); + rt_thread_mdelay(500); + rt_pin_write(LED3_PIN, PIN_LOW); + rt_thread_mdelay(500); + } +} +``` + +### Advanced Features + +**Resources & Documents** + +- [Development Board Overview](https://www.renesas.com/us/en/products/microcontrollers-microprocessors/ra-cortex-m-mcus/cpk-ra6m4-evaluation-board#overview) +- [User Guide](https://www2.renesas.cn/cn/zh/document/mah/1527156?language=zh&r=1527191) +- [RA MCU](https://www.renesas.com/us/en/document/gde/1520091) +- [RA6 MCU Quick Design Guide](https://www.renesas.com/us/en/document/apn/ra6-quick-design-guide) + +**ENV Configuration** + +• How to use the ENV tool: [RT-Thread env tool user manual](https://www.rt-thread.io/document/site/programming-manual/env/env/). + +This BSP only enables the function of UART7 by default. If you're looking for more advanced functions such as components and software packages, ENV tool for configuration is available. + +The steps are as follows: + +1. Open the env tool under bsp. +2. Enter the `menuconfig` command to configure the project, and save and exit after configuration. +3. Enter the `pkgs --update` command to update the software package. +4. Enter the `scons --target=mdk5` command to regenerate the project. + +## Contribute the Code + +If you’re interested in the HMI-Board and have some cool projects you’d like to share with everyone, we’d love for you to contribute your code! You can check out [how to contribute to RT-Thread’s code](https://www.rt-thread.io/contribution.html). Let’s make something awesome together! \ No newline at end of file diff --git a/bsp/renesas/ra8m1-ek/README_ZH.md b/bsp/renesas/ra8m1-ek/README_ZH.md new file mode 100644 index 000000000000..c5f6d5098bc3 --- /dev/null +++ b/bsp/renesas/ra8m1-ek/README_ZH.md @@ -0,0 +1,135 @@ +# 瑞萨 EK-RA8M1 开发板 BSP 说明 + +中文|[English](README.md) + +## 简介 + +本文档为 EK-RA8M1 开发板提供的 BSP (板级支持包) 说明。通过阅读快速上手章节开发者可以快速地上手该 BSP,将 RT-Thread 运行在开发板上。 + +主要内容如下: + +- 开发板介绍 +- BSP 快速上手指南 + +## 开发板介绍 + +基于瑞萨 RA8M1 MCU 开发的 EK-RA8M1 评估板,通过灵活配置软件包和 IDE,可帮助用户对 RA8 MCU 群组的特性轻松进行评估,并对嵌入系统应用程序进行开发。 + +开发板正面外观如下图: + +![](docs/picture/front.png) + +该开发板常用 **板载资源** 如下: + +- MCU:R7FA8M1AH,480MHz,**Arm®Cortex®-M85** 内核,2MB 代码闪存, 1MB SRAM +- Jlink OB +- OSPI FLASH(64MX8) +- USB-Host +- USB-Device +- CANFD +- 以太网接口 +- 2个PMOD+Arduino+micro BUS接口 +- 3个用户LED +- 3个按键:2个用户按键,1个复位按键 + +**更多详细资料及工具** + +## 外设支持 + +本 BSP 目前对外设的支持情况如下: + +| **片上外设** | **支持情况** | **备注** | +| :----------------: | :----------------: | :------------- | +| UART | 支持 | UART9 为默认日志输出端口 | +| GPIO | 支持 | | + +* 注意:仓库刚拉下来是最小系统,若需添加/使能其他外设需参考:[外设驱动使用教程 (rt-thread.org)](https://www.rt-thread.org/document/site/#/rt-thread-version/rt-thread-standard/tutorial/make-bsp/renesas-ra/RA系列BSP外设驱动使用教程) + +## 使用说明 + +使用说明分为如下两个章节: + +- 快速上手 + + 本章节是为刚接触 RT-Thread 的新手准备的使用说明,遵循简单的步骤即可将 RT-Thread 操作系统运行在该开发板上,看到实验效果 。 +- 进阶使用 + + 本章节是为需要在 RT-Thread 操作系统上使用更多开发板资源的开发者准备的。通过使用 ENV 工具对 BSP 进行配置,可以开启更多板载资源,实现更多高级功能。 + +### 快速上手 + +本 BSP 目前仅提供 MDK5 工程。下面以 MDK5 开发环境为例,介绍如何将系统运行起来。 + +**编译下载** + +- 编译:双击 project.uvprojx 文件,打开 MDK5 工程,编译程序。 + +- 下载:点击 MDK 的 Debug 按钮进行下载调试 + +**查看运行结果** + +下载程序成功之后,系统会自动运行并打印系统信息。 + +连接开发板对应串口到 PC , 在终端工具里打开相应的串口(115200-8-1-N),复位设备后,可以看到 RT-Thread 的输出信息。输入 help 命令可查看系统中支持的命令。 + +```bash +initialize rti_board_start:0 done + + \ | / +- RT - Thread Operating System + / | \ 5.1.0 build Oct 30 2023 16:14:05 + 2006 - 2022 Copyright by RT-Thread team +do components initialization. +initialize rti_board_end:0 done +initialize finsh_system_init:0 done + +Hello RT-Thread! +msh > +``` + +**应用入口函数** + +应用层的入口函数在 **bsp\renesas\ra8m1-ek\src\hal_entry.c** 中 的 `void hal_entry(void)` 。用户编写的源文件可直接放在 src 目录下。 + +```c +void hal_entry(void) +{ + rt_kprintf("\nHello RT-Thread!\n"); + + while (1) + { + rt_pin_write(LED3_PIN, PIN_HIGH); + rt_thread_mdelay(500); + rt_pin_write(LED3_PIN, PIN_LOW); + rt_thread_mdelay(500); + } +} +``` + +### 进阶使用 + +**资料及文档** + +- [开发板官网主页]([EK-RA8M1 - RA8M1 MCU 群组评估套件 | Renesas](https://www.renesas.cn/cn/zh/products/microcontrollers-microprocessors/ra-cortex-m-mcus/ek-ra8m1-evaluation-kit-ra8m1-mcu-group)) +- [开发板用户手册](https://www.renesas.cn/cn/zh/document/mat/ek-ra8m1-users-manual?r=25448206) +- [瑞萨RA MCU 基础知识](https://www2.renesas.cn/cn/zh/document/gde/1520091) + +**ENV 配置** + +- 如何使用 ENV 工具:[RT-Thread env 工具用户手册](https://www.rt-thread.org/document/site/#/development-tools/env/env) + +此 BSP 默认只开启了 UART9 的功能,如果需使用更多高级功能例如组件、软件包等,需要利用 ENV 工具进行配置。 + +步骤如下: +1. 在 bsp 下打开 env 工具。 +2. 输入`menuconfig`命令配置工程,配置好之后保存退出。 +3. 输入`pkgs --update`命令更新软件包。 +4. 输入`scons --target=mdk5` 命令重新生成工程。 + +## 联系人信息 + +在使用过程中若您有任何的想法和建议,建议您通过以下方式来联系到我们 [RT-Thread 社区论坛](https://club.rt-thread.org/) + +## 贡献代码 + +如果您对 EK-RA8M1 感兴趣,并且有一些好玩的项目愿意与大家分享的话欢迎给我们贡献代码,您可以参考 [如何向 RT-Thread 代码贡献](https://www.rt-thread.org/document/site/#/rt-thread-version/rt-thread-standard/development-guide/github/github)。 diff --git a/bsp/renesas/ra8m1-ek/SConscript b/bsp/renesas/ra8m1-ek/SConscript new file mode 100644 index 000000000000..ba761a6dc6c0 --- /dev/null +++ b/bsp/renesas/ra8m1-ek/SConscript @@ -0,0 +1,28 @@ +# for module compiling +import os +Import('RTT_ROOT') +Import('rtconfig') +from building import * +from gcc import * + +cwd = GetCurrentDir() +src = [] +CPPPATH = [] +list = os.listdir(cwd) + +if rtconfig.PLATFORM in ['iccarm']: + print("\nThe current project does not support IAR build\n") + Return('group') +elif rtconfig.PLATFORM in GetGCCLikePLATFORM(): + if GetOption('target') != 'mdk5': + CPPPATH = [cwd] + src = Glob('./src/*.c') + +group = DefineGroup('Applications', src, depend = [''], CPPPATH = CPPPATH) + +for d in list: + path = os.path.join(cwd, d) + if os.path.isfile(os.path.join(path, 'SConscript')): + group = group + SConscript(os.path.join(d, 'SConscript')) + +Return('group') diff --git a/bsp/renesas/ra8m1-ek/SConstruct b/bsp/renesas/ra8m1-ek/SConstruct new file mode 100644 index 000000000000..67511e3048ab --- /dev/null +++ b/bsp/renesas/ra8m1-ek/SConstruct @@ -0,0 +1,55 @@ +import os +import sys +import rtconfig + +if os.getenv('RTT_ROOT'): + RTT_ROOT = os.getenv('RTT_ROOT') +else: + RTT_ROOT = os.path.normpath(os.getcwd() + '/../../..') + +sys.path = sys.path + [os.path.join(RTT_ROOT, 'tools')] +try: + from building import * +except: + print('Cannot found RT-Thread root directory, please check RTT_ROOT') + print(RTT_ROOT) + exit(-1) + +TARGET = 'rtthread.' + rtconfig.TARGET_EXT + +DefaultEnvironment(tools=[]) +env = Environment(tools = ['mingw'], + AS = rtconfig.AS, ASFLAGS = rtconfig.AFLAGS, + CC = rtconfig.CC, CFLAGS = rtconfig.CFLAGS, + CXX = rtconfig.CXX, CXXFLAGS = rtconfig.CXXFLAGS, + AR = rtconfig.AR, ARFLAGS = '-rc', + LINK = rtconfig.LINK, LINKFLAGS = rtconfig.LFLAGS) +env.PrependENVPath('PATH', rtconfig.EXEC_PATH) + +if rtconfig.PLATFORM in ['iccarm']: + env.Replace(CCCOM = ['$CC $CFLAGS $CPPFLAGS $_CPPDEFFLAGS $_CPPINCFLAGS -o $TARGET $SOURCES']) + env.Replace(ARFLAGS = ['']) + env.Replace(LINKCOM = env["LINKCOM"] + ' --map project.map') + +Export('RTT_ROOT') +Export('rtconfig') + +SDK_ROOT = os.path.abspath('./') +if os.path.exists(SDK_ROOT + '/libraries'): + libraries_path_prefix = SDK_ROOT + '/libraries' +else: + libraries_path_prefix = os.path.dirname(SDK_ROOT) + '/libraries' + +SDK_LIB = libraries_path_prefix +Export('SDK_LIB') + +rtconfig.BSP_LIBRARY_TYPE = None + +# prepare building environment +objs = PrepareBuilding(env, RTT_ROOT, has_libcpu=False) + +# include drivers +objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript'))) + +# make a building +DoBuilding(TARGET, objs) diff --git a/bsp/renesas/ra8m1-ek/board/Kconfig b/bsp/renesas/ra8m1-ek/board/Kconfig new file mode 100644 index 000000000000..51c55395cec8 --- /dev/null +++ b/bsp/renesas/ra8m1-ek/board/Kconfig @@ -0,0 +1,488 @@ +menu "Hardware Drivers Config" + + config SOC_R7FA8M1AH + bool + select SOC_SERIES_R7FA8M85 + select RT_USING_COMPONENTS_INIT + select RT_USING_USER_MAIN + default y + + menu "Onboard Peripheral Drivers" + + endmenu + + menu "On-chip Peripheral Drivers" + + source "../libraries/HAL_Drivers/Kconfig" + + menuconfig BSP_USING_UART + bool "Enable UART" + default y + select RT_USING_SERIAL + select RT_USING_SERIAL_V2 + if BSP_USING_UART + menuconfig BSP_USING_UART3 + bool "Enable UART3" + default n + if BSP_USING_UART3 + config BSP_UART3_RX_USING_DMA + bool "Enable UART3 RX DMA" + depends on BSP_USING_UART3 && RT_SERIAL_USING_DMA + default n + + config BSP_UART3_TX_USING_DMA + bool "Enable UART3 TX DMA" + depends on BSP_USING_UART3 && RT_SERIAL_USING_DMA + default n + + config BSP_UART3_RX_BUFSIZE + int "Set UART3 RX buffer size" + range 64 65535 + depends on RT_USING_SERIAL_V2 + default 256 + + config BSP_UART3_TX_BUFSIZE + int "Set UART3 TX buffer size" + range 0 65535 + depends on RT_USING_SERIAL_V2 + default 0 + endif + menuconfig BSP_USING_UART9 + bool "Enable UART9" + default n + if BSP_USING_UART9 + config BSP_UART9_RX_USING_DMA + bool "Enable UART9 RX DMA" + depends on BSP_USING_UART9 && RT_SERIAL_USING_DMA + default n + + config BSP_UART9_TX_USING_DMA + bool "Enable UART9 TX DMA" + depends on BSP_USING_UART9 && RT_SERIAL_USING_DMA + default n + + config BSP_UART9_RX_BUFSIZE + int "Set UART9 RX buffer size" + range 64 65535 + depends on RT_USING_SERIAL_V2 + default 256 + + config BSP_UART9_TX_BUFSIZE + int "Set UART9 TX buffer size" + range 0 65535 + depends on RT_USING_SERIAL_V2 + default 0 + endif + endif + + menuconfig BSP_USING_SCI_SPI + bool "Enable SCI SPI BUS" + default n + select RT_USING_SPI + if BSP_USING_SCI_SPI + config BSP_USING_SCI_SPI0 + bool "Enable SCI SPI0 BUS" + default n + config BSP_USING_SCI_SPI1 + bool "Enable SCI SPI1 BUS" + default n + config BSP_USING_SCI_SPI2 + bool "Enable SCI SPI2 BUS" + default n + config BSP_USING_SCI_SPI3 + bool "Enable SCI SPI3 BUS" + default n + config BSP_USING_SCI_SPI6 + bool "Enable SCI SPI6 BUS" + default n + endif + + menuconfig BSP_USING_SCI + bool "Enable SCI Controller" + default n + config BSP_USING_SCIn_SPI + bool + default n + depends on BSP_USING_SCI + select RT_USING_SPI + + config BSP_USING_SCIn_I2C + bool + default n + depends on BSP_USING_SCI + select RT_USING_I2C + + config BSP_USING_SCIn_UART + bool + default n + depends on BSP_USING_SCI + select RT_USING_SERIAL + select RT_USING_SERIAL_V2 + + if BSP_USING_SCI + config BSP_USING_SCI0 + bool "Enable SCI0" + default n + if BSP_USING_SCI0 + choice + prompt "choice sci mode" + default BSP_USING_SCI0_SPI + config BSP_USING_SCI0_SPI + select BSP_USING_SCIn_SPI + bool "SPI mode" + config BSP_USING_SCI0_I2C + select BSP_USING_SCIn_I2C + bool "I2C mode" + config BSP_USING_SCI0_UART + select BSP_USING_SCIn_UART + bool "UART mode" + endchoice + if BSP_USING_SCI0_UART + config BSP_SCI0_UART_RX_BUFSIZE + int "Set UART0 RX buffer size" + range 64 65535 + depends on RT_USING_SERIAL_V2 + default 256 + + config BSP_SCI0_UART_TX_BUFSIZE + int "Set UART0 TX buffer size" + range 0 65535 + depends on RT_USING_SERIAL_V2 + default 0 + endif + endif + config BSP_USING_SCI1 + bool "Enable SCI1" + default n + if BSP_USING_SCI1 + choice + prompt "choice sci mode" + default BSP_USING_SCI1_SPI + config BSP_USING_SCI1_SPI + select BSP_USING_SCIn_SPI + bool "SPI mode" + config BSP_USING_SCI1_I2C + select BSP_USING_SCIn_I2C + bool "I2C mode" + config BSP_USING_SCI1_UART + select BSP_USING_SCIn_UART + bool "UART mode" + endchoice + if BSP_USING_SCI1_UART + config BSP_SCI1_UART_RX_BUFSIZE + int "Set UART1 RX buffer size" + range 64 65535 + depends on RT_USING_SERIAL_V2 + default 256 + + config BSP_SCI1_UART_TX_BUFSIZE + int "Set UART1 TX buffer size" + range 0 65535 + depends on RT_USING_SERIAL_V2 + default 0 + endif + endif + config BSP_USING_SCI2 + bool "Enable SCI2" + default n + if BSP_USING_SCI2 + choice + prompt "choice sci mode" + default BSP_USING_SCI2_SPI + config BSP_USING_SCI2_SPI + select BSP_USING_SCIn_SPI + bool "SPI mode" + config BSP_USING_SCI2_I2C + select BSP_USING_SCIn_I2C + bool "I2C mode" + config BSP_USING_SCI2_UART + select BSP_USING_SCIn_UART + bool "UART mode" + endchoice + if BSP_USING_SCI2_UART + config BSP_SCI2_UART_RX_BUFSIZE + int "Set UART2 RX buffer size" + range 64 65535 + depends on RT_USING_SERIAL_V2 + default 256 + + config BSP_SCI2_UART_TX_BUFSIZE + int "Set UART2 TX buffer size" + range 0 65535 + depends on RT_USING_SERIAL_V2 + default 0 + endif + endif + config BSP_USING_SCI3 + bool "Enable SCI3" + default n + if BSP_USING_SCI3 + choice + prompt "choice sci mode" + default BSP_USING_SCI3_SPI + config BSP_USING_SCI3_SPI + select BSP_USING_SCIn_SPI + bool "SPI mode" + config BSP_USING_SCI3_I2C + select BSP_USING_SCIn_I2C + bool "I2C mode" + config BSP_USING_SCI3_UART + select BSP_USING_SCIn_UART + bool "UART mode" + endchoice + if BSP_USING_SCI3_UART + config BSP_SCI3_UART_RX_BUFSIZE + int "Set UART3 RX buffer size" + range 64 65535 + depends on RT_USING_SERIAL_V2 + default 256 + + config BSP_SCI3_UART_TX_BUFSIZE + int "Set UART3 TX buffer size" + range 0 65535 + depends on RT_USING_SERIAL_V2 + default 0 + endif + endif + config BSP_USING_SCI4 + bool "Enable SCI4" + default n + if BSP_USING_SCI4 + choice + prompt "choice sci mode" + default BSP_USING_SCI4_SPI + config BSP_USING_SCI4_SPI + select BSP_USING_SCIn_SPI + bool "SPI mode" + config BSP_USING_SCI4_I2C + select BSP_USING_SCIn_I2C + bool "I2C mode" + config BSP_USING_SCI4_UART + select BSP_USING_SCIn_UART + bool "UART mode" + endchoice + if BSP_USING_SCI4_UART + config BSP_SCI4_UART_RX_BUFSIZE + int "Set UART4 RX buffer size" + range 64 65535 + depends on RT_USING_SERIAL_V2 + default 256 + + config BSP_SCI4_UART_TX_BUFSIZE + int "Set UART4 TX buffer size" + range 0 65535 + depends on RT_USING_SERIAL_V2 + default 0 + endif + endif + config BSP_USING_SCI5 + bool "Enable SCI5" + default n + if BSP_USING_SCI5 + choice + prompt "choice sci mode" + default BSP_USING_SCI5_SPI + config BSP_USING_SCI5_SPI + select BSP_USING_SCIn_SPI + bool "SPI mode" + config BSP_USING_SCI5_I2C + select BSP_USING_SCIn_I2C + bool "I2C mode" + config BSP_USING_SCI5_UART + select BSP_USING_SCIn_UART + bool "UART mode" + endchoice + if BSP_USING_SCI5_UART + config BSP_SCI5_UART_RX_BUFSIZE + int "Set UART5 RX buffer size" + range 64 65535 + depends on RT_USING_SERIAL_V2 + default 256 + + config BSP_SCI5_UART_TX_BUFSIZE + int "Set UART5 TX buffer size" + range 0 65535 + depends on RT_USING_SERIAL_V2 + default 0 + endif + endif + config BSP_USING_SCI6 + bool "Enable SCI6" + default n + if BSP_USING_SCI6 + choice + prompt "choice sci mode" + default BSP_USING_SCI6_SPI + config BSP_USING_SCI6_SPI + select BSP_USING_SCIn_SPI + bool "SPI mode" + config BSP_USING_SCI6_I2C + select BSP_USING_SCIn_I2C + bool "I2C mode" + config BSP_USING_SCI6_UART + select BSP_USING_SCIn_UART + bool "UART mode" + endchoice + if BSP_USING_SCI6_UART + config BSP_SCI6_UART_RX_BUFSIZE + int "Set UART6 RX buffer size" + range 64 65535 + depends on RT_USING_SERIAL_V2 + default 256 + + config BSP_SCI6_UART_TX_BUFSIZE + int "Set UART6 TX buffer size" + range 0 65535 + depends on RT_USING_SERIAL_V2 + default 0 + endif + endif + config BSP_USING_SCI7 + bool "Enable SCI7" + default n + if BSP_USING_SCI7 + choice + prompt "choice sci mode" + default BSP_USING_SCI7_SPI + config BSP_USING_SCI7_SPI + select BSP_USING_SCIn_SPI + bool "SPI mode" + config BSP_USING_SCI7_I2C + select BSP_USING_SCIn_I2C + bool "I2C mode" + config BSP_USING_SCI7_UART + select BSP_USING_SCIn_UART + bool "UART mode" + endchoice + if BSP_USING_SCI7_UART + config BSP_SCI7_UART_RX_BUFSIZE + int "Set UART7 RX buffer size" + range 64 65535 + depends on RT_USING_SERIAL_V2 + default 256 + + config BSP_SCI7_UART_TX_BUFSIZE + int "Set UART7 TX buffer size" + range 0 65535 + depends on RT_USING_SERIAL_V2 + default 0 + endif + endif + config BSP_USING_SCI8 + bool "Enable SCI8" + default n + if BSP_USING_SCI8 + choice + prompt "choice sci mode" + default BSP_USING_SCI8_SPI + config BSP_USING_SCI8_SPI + select BSP_USING_SCIn_SPI + bool "SPI mode" + config BSP_USING_SCI8_I2C + select BSP_USING_SCIn_I2C + bool "I2C mode" + config BSP_USING_SCI8_UART + select BSP_USING_SCIn_UART + bool "UART mode" + endchoice + if BSP_USING_SCI8_UART + config BSP_SCI8_UART_RX_BUFSIZE + int "Set UART8 RX buffer size" + range 64 65535 + depends on RT_USING_SERIAL_V2 + default 256 + + config BSP_SCI8_UART_TX_BUFSIZE + int "Set UART8 TX buffer size" + range 0 65535 + depends on RT_USING_SERIAL_V2 + default 0 + endif + endif + config BSP_USING_SCI9 + bool "Enable SCI9" + default n + if BSP_USING_SCI9 + choice + prompt "choice sci mode" + default BSP_USING_SCI9_SPI + config BSP_USING_SCI9_SPI + select BSP_USING_SCIn_SPI + bool "SPI mode" + config BSP_USING_SCI9_I2C + select BSP_USING_SCIn_I2C + bool "I2C mode" + config BSP_USING_SCI9_UART + select BSP_USING_SCIn_UART + bool "UART mode" + endchoice + if BSP_USING_SCI9_UART + config BSP_SCI9_UART_RX_BUFSIZE + int "Set UART9 RX buffer size" + range 64 65535 + depends on RT_USING_SERIAL_V2 + default 256 + + config BSP_SCI9_UART_TX_BUFSIZE + int "Set UART9 TX buffer size" + range 0 65535 + depends on RT_USING_SERIAL_V2 + default 0 + endif + endif + endif + + menuconfig BSP_USING_SPI + bool "Enable SPI BUS" + default n + select RT_USING_SPI + if BSP_USING_SPI + config BSP_USING_SPI0 + bool "Enable SPI0 BUS" + default n + config BSP_USING_SPI1 + bool "Enable SPI1 BUS" + default n + endif + + menuconfig BSP_USING_I2C + bool "Enable I2C BUS" + default n + select RT_USING_I2C + select RT_USING_I2C_BITOPS + select RT_USING_PIN + if BSP_USING_I2C + config BSP_USING_HW_I2C + bool "Enable Hardware I2C BUS" + default n + if BSP_USING_HW_I2C + config BSP_USING_HW_I2C1 + bool "Enable Hardware I2C1 BUS" + default n + endif + endif + + menuconfig BSP_USING_FS + bool "Enable filesystem" + default n + if BSP_USING_FS + config BSP_USING_SPICARD_FS + bool "Enable SPI FLASH filesystem" + select BSP_USING_SPI + select BSP_USING_SCI_SPI6 + select RT_USING_SPI_MSD + select RT_USING_DFS_ELMFAT + default n + endif + + menuconfig BSP_USING_PWM + bool "Enable PWM" + default n + select RT_USING_PWM + if BSP_USING_PWM + config BSP_USING_PWM12 + bool "Enable GPT12 (16-Bits) output PWM" + default n + endif + endmenu +endmenu diff --git a/bsp/renesas/ra8m1-ek/board/SConscript b/bsp/renesas/ra8m1-ek/board/SConscript new file mode 100644 index 000000000000..aec708ed6ba9 --- /dev/null +++ b/bsp/renesas/ra8m1-ek/board/SConscript @@ -0,0 +1,19 @@ +import os +from building import * + +objs = [] +cwd = GetCurrentDir() +list = os.listdir(cwd) +CPPPATH = [cwd] +src = Glob('*.c') + +if GetDepend(['BSP_USING_FS']): + src += Glob('ports/mnt.c') + +objs = DefineGroup('Drivers', src, depend = [''], CPPPATH = CPPPATH) + +for item in list: + if os.path.isfile(os.path.join(cwd, item, 'SConscript')): + objs = objs + SConscript(os.path.join(item, 'SConscript')) + +Return('objs') diff --git a/bsp/renesas/ra8m1-ek/board/board.h b/bsp/renesas/ra8m1-ek/board/board.h new file mode 100644 index 000000000000..ea8fb0372979 --- /dev/null +++ b/bsp/renesas/ra8m1-ek/board/board.h @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2006-2023, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2021-10-10 Sherman first version + */ + +#ifndef __BOARD_H__ +#define __BOARD_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +#define RA_SRAM_SIZE 896 /* The SRAM size of the chip needs to be modified */ +#define RA_SRAM_END (0x22000000 + RA_SRAM_SIZE * 1024) + +#ifdef __ARMCC_VERSION +extern int Image$$RAM_END$$ZI$$Base; +#define HEAP_BEGIN ((void *)&Image$$RAM_END$$ZI$$Base) +#elif __ICCARM__ +#pragma section="CSTACK" +#define HEAP_BEGIN (__segment_end("CSTACK")) +#else +extern int __RAM_segment_used_end__; +#define HEAP_BEGIN (&__RAM_segment_used_end__) +#endif + +#define HEAP_END RA_SRAM_END + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/bsp/renesas/ra8m1-ek/board/lvgl/SConscript b/bsp/renesas/ra8m1-ek/board/lvgl/SConscript new file mode 100644 index 000000000000..79d9772177a0 --- /dev/null +++ b/bsp/renesas/ra8m1-ek/board/lvgl/SConscript @@ -0,0 +1,16 @@ +from building import * +import os + +cwd = GetCurrentDir() +group = [] +src = Glob('*.c') +CPPPATH = [cwd] + +list = os.listdir(cwd) +for d in list: + path = os.path.join(cwd, d) + if os.path.isfile(os.path.join(path, 'SConscript')): + group = group + SConscript(os.path.join(d, 'SConscript')) + +group = group + DefineGroup('LVGL-port', src, depend = ['BSP_USING_LVGL'], CPPPATH = CPPPATH) +Return('group') diff --git a/bsp/renesas/ra8m1-ek/board/lvgl/demo/SConscript b/bsp/renesas/ra8m1-ek/board/lvgl/demo/SConscript new file mode 100644 index 000000000000..9c1b6d1ebd0b --- /dev/null +++ b/bsp/renesas/ra8m1-ek/board/lvgl/demo/SConscript @@ -0,0 +1,17 @@ +from building import * +import os + +cwd = GetCurrentDir() +group = [] +src = Glob('*.c') +CPPPATH = [cwd] + +list = os.listdir(cwd) +for d in list: + path = os.path.join(cwd, d) + if os.path.isfile(os.path.join(path, 'SConscript')): + group = group + SConscript(os.path.join(d, 'SConscript')) + +group = group + DefineGroup('LVGL-demo', src, depend = ['BSP_USING_LVGL', 'BSP_USING_LVGL_DEMO'], CPPPATH = CPPPATH) + +Return('group') diff --git a/bsp/renesas/ra8m1-ek/board/lvgl/demo/lv_demo.c b/bsp/renesas/ra8m1-ek/board/lvgl/demo/lv_demo.c new file mode 100644 index 000000000000..4aa62e224860 --- /dev/null +++ b/bsp/renesas/ra8m1-ek/board/lvgl/demo/lv_demo.c @@ -0,0 +1,18 @@ +/* + * Copyright (c) 2006-2023, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2021-10-17 Meco Man First version + * 2022-05-10 Meco Man improve rt-thread initialization process + */ +#include "rtconfig.h" + +void lv_user_gui_init(void) +{ + /* display demo; you may replace with your LVGL application at here */ + extern void lv_demo_music(void); + lv_demo_music(); +} diff --git a/bsp/renesas/ra8m1-ek/board/lvgl/lv_conf.h b/bsp/renesas/ra8m1-ek/board/lvgl/lv_conf.h new file mode 100644 index 000000000000..2f5bb46792aa --- /dev/null +++ b/bsp/renesas/ra8m1-ek/board/lvgl/lv_conf.h @@ -0,0 +1,66 @@ +/* + * Copyright (c) 2006-2023, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2023-02-22 Rbb666 First version + */ + +#ifndef LV_CONF_H +#define LV_CONF_H + +#include + +/* Enable additional color format support */ +#define DLG_LVGL_CF 1 + +/* Enable sub byte color formats to be swapped. If disabled, which is recommended for + * performance, bitmaps need to be in correct order */ +#define DLG_LVGL_CF_SUB_BYTE_SWAP 0 + +#define DLG_LVGL_USE_GPU_RA6M3 0 + +#define LV_USE_PERF_MONITOR 1 +#define LV_COLOR_DEPTH 16 + +#ifdef PKG_USING_ILI9341 + #define LV_HOR_RES_MAX 240 + #define LV_VER_RES_MAX 320 + #define LV_COLOR_16_SWAP 1 + #define LV_DPI_DEF 99 +#else + #define LV_HOR_RES_MAX 480 + #define LV_VER_RES_MAX 272 + #define LV_DPI_DEF 89 +#endif + +#ifdef BSP_USING_LVGL_VIDEO_DEMO +#define LV_USE_FILE_EXPLORER 1 +#if LV_USE_FILE_EXPLORER + /*Maximum length of path*/ + #define LV_FILE_EXPLORER_PATH_MAX_LEN (128) + /*Quick access bar, 1:use, 0:not use*/ + /*Requires: lv_list*/ + #define LV_FILE_EXPLORER_QUICK_ACCESS 0 +#endif + +#define LV_USE_FS_STDIO 1 +#if LV_USE_FS_STDIO + #define LV_FS_STDIO_LETTER '/' /*Set an upper cased letter on which the drive will accessible (e.g. 'A')*/ + #define LV_FS_STDIO_PATH "/" /*Set the working directory. File/directory paths will be appended to it.*/ + #define LV_FS_STDIO_CACHE_SIZE 0 /*>0 to cache this number of bytes in lv_fs_read()*/ +#endif +#endif + +#ifdef PKG_USING_LV_MUSIC_DEMO +/* music player demo */ +#define LV_USE_DEMO_RTT_MUSIC 1 +#define LV_DEMO_RTT_MUSIC_AUTO_PLAY 1 +#define LV_FONT_MONTSERRAT_12 1 +#define LV_FONT_MONTSERRAT_16 1 +#define LV_COLOR_SCREEN_TRANSP 0 +#endif /* PKG_USING_LV_MUSIC_DEMO */ + +#endif diff --git a/bsp/renesas/ra8m1-ek/board/lvgl/lv_port_disp.c b/bsp/renesas/ra8m1-ek/board/lvgl/lv_port_disp.c new file mode 100644 index 000000000000..b76922229ea6 --- /dev/null +++ b/bsp/renesas/ra8m1-ek/board/lvgl/lv_port_disp.c @@ -0,0 +1,146 @@ +/* + * Copyright (c) 2006-2023, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2021-11-24 Rbb666 The first version + */ +#include +#include "hal_data.h" + +#if DLG_LVGL_USE_GPU_RA6M3 + #include "drv_g2d.h" +#endif + +#ifdef PKG_USING_ILI9341 + #include "lcd_ili9341.h" +#else + #include "lcd_port.h" +#endif + +#define COLOR_BUFFER (LV_HOR_RES_MAX * LV_VER_RES_MAX / 4) + +/*A static or global variable to store the buffers*/ +static lv_disp_draw_buf_t disp_buf; + +/*Descriptor of a display driver*/ +static lv_disp_drv_t disp_drv; +static struct rt_device_graphic_info info; + +/*Static or global buffer(s). The second buffer is optional*/ +// 0x1FFE0000 0x20040000 +lv_color_t buf_1[COLOR_BUFFER]; + +#if !DLG_LVGL_USE_GPU_RA6M3 +static void color_to16_maybe(lv_color16_t *dst, lv_color_t *src) +{ +#if (LV_COLOR_DEPTH == 16) + dst->full = src->full; +#else + dst->ch.blue = src->ch.blue; + dst->ch.green = src->ch.green; + dst->ch.red = src->ch.red; +#endif +} +#endif + +void _ra_port_display_callback(display_callback_args_t *p_args) +{ + /* TFT-Callback */ +} + +static void disp_flush(lv_disp_drv_t *disp_drv, const lv_area_t *area, lv_color_t *color_p) +{ +#ifdef PKG_USING_ILI9341 + lcd_fill_array_spi(area->x1, area->y1, area->x2, area->y2, color_p); +#elif DLG_LVGL_USE_GPU_RA6M3 + lv_port_gpu_blit(area->x1, area->y1, color_p, area); +#else + int x1, x2, y1, y2; + + x1 = area->x1; + x2 = area->x2; + y1 = area->y1; + y2 = area->y2; + + /*Return if the area is out the screen*/ + if (x2 < 0) + return; + if (y2 < 0) + return; + if (x1 > info.width - 1) + return; + if (y1 > info.height - 1) + return; + + /*Truncate the area to the screen*/ + int32_t act_x1 = x1 < 0 ? 0 : x1; + int32_t act_y1 = y1 < 0 ? 0 : y1; + int32_t act_x2 = x2 > info.width - 1 ? info.width - 1 : x2; + int32_t act_y2 = y2 > info.height - 1 ? info.height - 1 : y2; + + uint32_t x; + uint32_t y; + long int location = 0; + + /* color_p is a buffer pointer; the buffer is provided by LVGL */ + lv_color16_t *fbp16 = (lv_color16_t *)info.framebuffer; + + for (y = act_y1; y <= act_y2; y++) + { + for (x = act_x1; x <= act_x2; x++) + { + location = (x) + (y) * info.width; + color_to16_maybe(&fbp16[location], color_p); + color_p++; + } + + color_p += x2 - act_x2; + } +#endif + lv_disp_flush_ready(disp_drv); +} + +void lv_port_disp_init(void) +{ +#ifdef PKG_USING_ILI9341 + spi_lcd_init(20); +#else + static rt_device_t device; + /* LCD Device Init */ + device = rt_device_find("lcd"); + RT_ASSERT(device != RT_NULL); + + if (rt_device_open(device, RT_DEVICE_OFLAG_RDWR) == RT_EOK) + { + rt_device_control(device, RTGRAPHIC_CTRL_GET_INFO, &info); + } + + RT_ASSERT(info.bits_per_pixel == 8 || info.bits_per_pixel == 16 || + info.bits_per_pixel == 24 || info.bits_per_pixel == 32); +#endif + /*Initialize `disp_buf` with the buffer(s). With only one buffer use NULL instead buf_2 */ + lv_disp_draw_buf_init(&disp_buf, buf_1, NULL, COLOR_BUFFER); + + lv_disp_drv_init(&disp_drv); /*Basic initialization*/ + + /*Set the resolution of the display*/ + disp_drv.hor_res = LV_HOR_RES_MAX; + disp_drv.ver_res = LV_VER_RES_MAX; + + /*Set a display buffer*/ + disp_drv.draw_buf = &disp_buf; + + /*Used to copy the buffer's content to the display*/ + disp_drv.flush_cb = disp_flush; + +#if DLG_LVGL_USE_GPU_RA6M3 + /* Initialize GPU module */ + G2d_Drv_HWInit(); +#endif /* LV_PORT_DISP_GPU_EN */ + + /*Finally register the driver*/ + lv_disp_drv_register(&disp_drv); +} diff --git a/bsp/renesas/ra8m1-ek/board/lvgl/lv_port_indev.c b/bsp/renesas/ra8m1-ek/board/lvgl/lv_port_indev.c new file mode 100644 index 000000000000..21d2f1f4b47a --- /dev/null +++ b/bsp/renesas/ra8m1-ek/board/lvgl/lv_port_indev.c @@ -0,0 +1,136 @@ +/* + * Copyright (c) 2006-2023, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2023-03-09 Rbb666 The first version + */ +#include +#include + +#include "gt911.h" + +#define DBG_TAG "lv_port_indev" +#define DBG_LVL DBG_LOG +#include + +#include "hal_data.h" + +#define GT911_IRQ_PIN BSP_IO_PORT_00_PIN_04 +#define GT911_RST_PIN BSP_IO_PORT_08_PIN_01 + +static rt_device_t touch_dev; +static lv_indev_t *touch_indev; +struct rt_touch_data *read_data; + +volatile static rt_uint8_t touch_detect_flag = 0; + +static void touchpad_read(lv_indev_drv_t *indev, lv_indev_data_t *data) +{ + if (touch_detect_flag != 1) + return; + + rt_device_read(touch_dev, 0, read_data, 1); + + if (read_data->event == RT_TOUCH_EVENT_NONE) + return; + + data->point.x = read_data->x_coordinate; + data->point.y = read_data->y_coordinate; + + if (read_data->event == RT_TOUCH_EVENT_DOWN) + data->state = LV_INDEV_STATE_PR; + if (read_data->event == RT_TOUCH_EVENT_MOVE) + data->state = LV_INDEV_STATE_PR; + if (read_data->event == RT_TOUCH_EVENT_UP) + data->state = LV_INDEV_STATE_REL; + + touch_detect_flag = 0; + rt_device_control(touch_dev, RT_TOUCH_CTRL_ENABLE_INT, RT_NULL); +} + +static rt_err_t rx_callback(rt_device_t dev, rt_size_t size) +{ + touch_detect_flag = 1; + rt_device_control(dev, RT_TOUCH_CTRL_DISABLE_INT, RT_NULL); + return 0; +} + +rt_err_t gt911_probe(rt_uint16_t x, rt_uint16_t y) +{ + void *id; + + touch_dev = rt_device_find("gt911"); + if (touch_dev == RT_NULL) + { + rt_kprintf("can't find device gt911\n"); + return -1; + } + + if (rt_device_open(touch_dev, RT_DEVICE_FLAG_INT_RX) != RT_EOK) + { + rt_kprintf("open device failed!"); + return -1; + } + + id = rt_malloc(sizeof(rt_uint8_t) * 8); + rt_device_control(touch_dev, RT_TOUCH_CTRL_GET_ID, id); + rt_uint8_t *read_id = (rt_uint8_t *)id; + rt_kprintf("id = GT%d%d%d \n", read_id[0] - '0', read_id[1] - '0', read_id[2] - '0'); + + rt_device_control(touch_dev, RT_TOUCH_CTRL_SET_X_RANGE, &x); /* if possible you can set your x y coordinate*/ + rt_device_control(touch_dev, RT_TOUCH_CTRL_SET_Y_RANGE, &y); + rt_device_control(touch_dev, RT_TOUCH_CTRL_GET_INFO, id); + rt_kprintf("range_x = %d \n", (*(struct rt_touch_info *)id).range_x); + rt_kprintf("range_y = %d \n", (*(struct rt_touch_info *)id).range_y); + rt_kprintf("point_num = %d \n", (*(struct rt_touch_info *)id).point_num); + rt_free(id); + + rt_device_set_rx_indicate(touch_dev, rx_callback); + + read_data = (struct rt_touch_data *)rt_calloc(1, sizeof(struct rt_touch_data)); + if (!read_data) + { + return -RT_ENOMEM; + } + + return RT_EOK; +} + +#define RST_PIN "p801" +#define INT_PIN "p004" + +rt_err_t rt_hw_gt911_register(void) +{ + struct rt_touch_config cfg; + rt_base_t int_pin = rt_pin_get(INT_PIN); + rt_base_t rst_pin = rt_pin_get(RST_PIN); + + cfg.dev_name = "i2c1"; + cfg.irq_pin.pin = int_pin; + cfg.irq_pin.mode = PIN_MODE_INPUT_PULLDOWN; + cfg.user_data = &rst_pin; + + rt_hw_gt911_init("gt911", &cfg); + + gt911_probe(480, 272); + + return RT_EOK; +} + +void lv_port_indev_init(void) +{ + static lv_indev_drv_t indev_drv; /* Descriptor of a input device driver */ + lv_indev_drv_init(&indev_drv); /* Basic initialization */ + indev_drv.type = LV_INDEV_TYPE_POINTER; /* Touch pad is a pointer-like device */ + indev_drv.read_cb = touchpad_read; /* Set your driver function */ + + /* Register the driver in LVGL and save the created input device object */ + touch_indev = lv_indev_drv_register(&indev_drv); + + /* Register touch device */ + rt_err_t res = rt_hw_gt911_register(); + RT_ASSERT(res == RT_EOK); +} diff --git a/bsp/renesas/ra8m1-ek/board/ports/SConscript b/bsp/renesas/ra8m1-ek/board/ports/SConscript new file mode 100644 index 000000000000..09bd4c2582f6 --- /dev/null +++ b/bsp/renesas/ra8m1-ek/board/ports/SConscript @@ -0,0 +1,16 @@ +import os +from building import * + +src = [] +objs = [] +cwd = GetCurrentDir() +CPPPATH = [cwd] + +objs = DefineGroup('Drivers', src, depend = [''], CPPPATH = CPPPATH) + +list = os.listdir(cwd) +for item in list: + if os.path.isfile(os.path.join(cwd, item, 'SConscript')): + objs = objs + SConscript(os.path.join(item, 'SConscript')) + +Return('objs') diff --git a/bsp/renesas/ra8m1-ek/board/ports/gpio_cfg.h b/bsp/renesas/ra8m1-ek/board/ports/gpio_cfg.h new file mode 100644 index 000000000000..a85c88569a70 --- /dev/null +++ b/bsp/renesas/ra8m1-ek/board/ports/gpio_cfg.h @@ -0,0 +1,82 @@ +/* + * Copyright (c) 2006-2023, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2022-01-19 Sherman first version + */ + +/* Number of IRQ channels on the device */ +#define RA_IRQ_MAX 16 + +/* PIN to IRQx table */ +#define PIN2IRQX_TABLE(pin) \ +{ \ + switch (pin) \ + { \ + case BSP_IO_PORT_04_PIN_00: \ + case BSP_IO_PORT_02_PIN_06: \ + case BSP_IO_PORT_01_PIN_05: \ + return 0; \ + case BSP_IO_PORT_02_PIN_05: \ + case BSP_IO_PORT_01_PIN_01: \ + case BSP_IO_PORT_01_PIN_04: \ + return 1; \ + case BSP_IO_PORT_02_PIN_03: \ + case BSP_IO_PORT_01_PIN_00: \ + case BSP_IO_PORT_02_PIN_13: \ + return 2; \ + case BSP_IO_PORT_02_PIN_02: \ + case BSP_IO_PORT_01_PIN_10: \ + case BSP_IO_PORT_02_PIN_12: \ + return 3; \ + case BSP_IO_PORT_04_PIN_02: \ + case BSP_IO_PORT_01_PIN_11: \ + case BSP_IO_PORT_04_PIN_11: \ + return 4; \ + case BSP_IO_PORT_04_PIN_01: \ + case BSP_IO_PORT_03_PIN_02: \ + case BSP_IO_PORT_04_PIN_10: \ + return 5; \ + case BSP_IO_PORT_03_PIN_01: \ + case BSP_IO_PORT_00_PIN_00: \ + case BSP_IO_PORT_04_PIN_09: \ + return 6; \ + case BSP_IO_PORT_00_PIN_01: \ + case BSP_IO_PORT_04_PIN_08: \ + return 7; \ + case BSP_IO_PORT_00_PIN_02: \ + case BSP_IO_PORT_03_PIN_05: \ + case BSP_IO_PORT_04_PIN_15: \ + return 8; \ + case BSP_IO_PORT_00_PIN_04: \ + case BSP_IO_PORT_03_PIN_04: \ + case BSP_IO_PORT_04_PIN_14: \ + return 9; \ + case BSP_IO_PORT_00_PIN_05: \ + case BSP_IO_PORT_07_PIN_09: \ + return 10; \ + case BSP_IO_PORT_05_PIN_01: \ + case BSP_IO_PORT_00_PIN_06: \ + case BSP_IO_PORT_07_PIN_08: \ + return 11; \ + case BSP_IO_PORT_05_PIN_02: \ + case BSP_IO_PORT_00_PIN_08: \ + return 12; \ + case BSP_IO_PORT_00_PIN_15: \ + case BSP_IO_PORT_00_PIN_09: \ + return 13; \ + case BSP_IO_PORT_04_PIN_03: \ + case BSP_IO_PORT_05_PIN_12: \ + case BSP_IO_PORT_05_PIN_05: \ + return 14; \ + case BSP_IO_PORT_04_PIN_04: \ + case BSP_IO_PORT_05_PIN_11: \ + case BSP_IO_PORT_05_PIN_06: \ + return 15; \ + default : \ + return -1; \ + } \ +} diff --git a/bsp/renesas/ra8m1-ek/board/ports/mnt.c b/bsp/renesas/ra8m1-ek/board/ports/mnt.c new file mode 100644 index 000000000000..dceced4bcc60 --- /dev/null +++ b/bsp/renesas/ra8m1-ek/board/ports/mnt.c @@ -0,0 +1,130 @@ +#include +#include "hal_data.h" + +#ifdef BSP_USING_FS + +#include + +#define DBG_TAG "app.filesystem" +#define DBG_LVL DBG_INFO +#include + +#ifdef BSP_USING_SDCARD_FS +#include + +/* SD Card hot plug detection pin */ +#define SD_CHECK_PIN "p405" + +static rt_base_t sd_check_pin = 0; + +static void _sdcard_mount(void) +{ + rt_device_t device; + + device = rt_device_find("sd"); + rt_kprintf("rt_device_find %x \r\n", device); + if (device == NULL) + { + mmcsd_wait_cd_changed(0); + sdcard_change(); + mmcsd_wait_cd_changed(RT_WAITING_FOREVER); + device = rt_device_find("sd"); + } + + if (device != RT_NULL) + { + if (dfs_mount("sd", "/", "elm", 0, 0) == RT_EOK) + { + LOG_I("sd card mount to '/'"); + } + else + { + LOG_W("sd card mount to '/' failed!"); + } + } +} + +static void _sdcard_unmount(void) +{ + rt_thread_mdelay(200); + dfs_unmount("/sdcard"); + LOG_I("Unmount \"/sdcard\""); + + mmcsd_wait_cd_changed(0); + sdcard_change(); + mmcsd_wait_cd_changed(RT_WAITING_FOREVER); +} + +static void sd_auto_mount(void *parameter) +{ + rt_uint8_t re_sd_check_pin = 1; + rt_thread_mdelay(20); + + if (!rt_pin_read(sd_check_pin)) + { + _sdcard_mount(); + } + + while (1) + { + rt_thread_mdelay(200); + + if (re_sd_check_pin && (re_sd_check_pin = rt_pin_read(sd_check_pin)) == 0) + { + _sdcard_mount(); + } + + if (!re_sd_check_pin && (re_sd_check_pin = rt_pin_read(sd_check_pin)) != 0) + { + _sdcard_unmount(); + } + } +} + +static void sd_mount(void) +{ + rt_thread_t tid; + + sd_check_pin = rt_pin_get(SD_CHECK_PIN); + rt_pin_mode(sd_check_pin, PIN_MODE_INPUT_PULLUP); + + tid = rt_thread_create("sd_mount", sd_auto_mount, RT_NULL, + 2048, RT_THREAD_PRIORITY_MAX - 2, 20); + if (tid != RT_NULL) + { + rt_thread_startup(tid); + } + else + { + LOG_E("create sd_mount thread err!"); + return; + } +} + +#else +#include +#include "drv_sci_spi.h" +int sd_mount(void) +{ + uint32_t cs_pin = BSP_IO_PORT_06_PIN_11; + rt_hw_sci_spi_device_attach("scpi7", "scpi70", cs_pin); + msd_init("sd0", "scpi70"); + if (dfs_mount("sd0", "/", "elm", 0, 0) == 0) + { + LOG_I("Mount \"/dev/sd0\" on \"/\"\n"); + } + else + { + LOG_W("sd card mount to '/' failed!"); + } + return 0; +} +#endif /* BSP_USING_SDCARD_FS */ + +int mount_init(void) +{ + sd_mount(); + return RT_EOK; +} +INIT_ENV_EXPORT(mount_init); +#endif diff --git a/bsp/renesas/ra8m1-ek/board/ra8_it.c b/bsp/renesas/ra8m1-ek/board/ra8_it.c new file mode 100644 index 000000000000..097206540001 --- /dev/null +++ b/bsp/renesas/ra8m1-ek/board/ra8_it.c @@ -0,0 +1,20 @@ +#include +#include "hal_data.h" + +#ifdef BSP_USING_SCI_SPI +rt_weak void sci_spi3_callback(spi_callback_args_t *p_args) +{ +} + +rt_weak void sci_spi4_callback(spi_callback_args_t *p_args) +{ +} + +rt_weak void sci_spi6_callback(spi_callback_args_t *p_args) +{ +} + +rt_weak void sci_spi7_callback(spi_callback_args_t *p_args) +{ +} +#endif diff --git a/bsp/renesas/ra8m1-ek/buildinfo.gpdsc b/bsp/renesas/ra8m1-ek/buildinfo.gpdsc new file mode 100644 index 000000000000..feb125de3d71 --- /dev/null +++ b/bsp/renesas/ra8m1-ek/buildinfo.gpdsc @@ -0,0 +1,161 @@ + + + Renesas + Project Content + Project content managed by the Renesas Smart Configurator + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/bsp/renesas/ra8m1-ek/configuration.xml b/bsp/renesas/ra8m1-ek/configuration.xml new file mode 100644 index 000000000000..34cb5f083751 --- /dev/null +++ b/bsp/renesas/ra8m1-ek/configuration.xml @@ -0,0 +1,640 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Board support package for R7FA8M1AHECBD + Renesas.RA_mcu_ra8m1.5.0.0.pack + + + Board support package for RA8M1 + Renesas.RA_mcu_ra8m1.5.0.0.pack + + + Board support package for RA8M1 - FSP Data + Renesas.RA_mcu_ra8m1.5.0.0.pack + + + Board Support Package Common Files + Renesas.RA.5.0.0.pack + + + I/O Port + Renesas.RA.5.0.0.pack + + + SCI UART + Renesas.RA.5.0.0.pack + + + Arm CMSIS Version 5 - Core (M) + Arm.CMSIS5.5.9.0+renesas.0.fsp.5.0.0.pack + + + RA8M1-EK Board Support Files + Renesas.RA_board_ra8m1_ek.5.0.0.pack + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/bsp/renesas/ra8m1-ek/docs/picture/front.png b/bsp/renesas/ra8m1-ek/docs/picture/front.png new file mode 100644 index 0000000000000000000000000000000000000000..1574b4f1d844b9e7a812165e2281f608a32c52fa GIT binary patch literal 122469 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 literal 0 HcmV?d00001 diff --git a/bsp/renesas/ra8m1-ek/memory_regions.scat b/bsp/renesas/ra8m1-ek/memory_regions.scat new file mode 100644 index 000000000000..2993b52037d1 --- /dev/null +++ b/bsp/renesas/ra8m1-ek/memory_regions.scat @@ -0,0 +1,30 @@ + + /* generated memory regions file - do not edit */ + #define RAM_START 0x22000000 + #define RAM_LENGTH 0xE0000 + #define FLASH_START 0x02000000 + #define FLASH_LENGTH 0x1F8000 + #define DATA_FLASH_START 0x27000000 + #define DATA_FLASH_LENGTH 0x3000 + #define OPTION_SETTING_START 0x0300A100 + #define OPTION_SETTING_LENGTH 0x100 + #define OPTION_SETTING_S_START 0x0300A200 + #define OPTION_SETTING_S_LENGTH 0x100 + #define OPTION_SETTING_DATA_FLASH_S_START 0x27030080 + #define OPTION_SETTING_DATA_FLASH_S_LENGTH 0x800 + #define ID_CODE_START 0x00000000 + #define ID_CODE_LENGTH 0x0 + #define SDRAM_START 0x68000000 + #define SDRAM_LENGTH 0x8000000 + #define QSPI_FLASH_START 0x60000000 + #define QSPI_FLASH_LENGTH 0x0 + #define OSPI_DEVICE_0_START 0x80000000 + #define OSPI_DEVICE_0_LENGTH 0x10000000 + #define OSPI_DEVICE_1_START 0x90000000 + #define OSPI_DEVICE_1_LENGTH 0x10000000 + #define ITCM_START 0x00000000 + #define ITCM_LENGTH 0x10000 + #define DTCM_START 0x20000000 + #define DTCM_LENGTH 0x10000 + #define NS_OFFSET_START 0x10000000 + #define NS_OFFSET_LENGTH 0x0 diff --git a/bsp/renesas/ra8m1-ek/project.uvguix.RTT b/bsp/renesas/ra8m1-ek/project.uvguix.RTT new file mode 100644 index 000000000000..765111b4455a --- /dev/null +++ b/bsp/renesas/ra8m1-ek/project.uvguix.RTT @@ -0,0 +1,3601 @@ + + + + -6.1 + +

### uVision Project, (C) Keil Software
+ + + E:\workspace_work\rt-thread-5.0\bsp\renesas\ra6m3-ek + + + + + + + 38003 + Registers + 140 90 + + + 346 + Code Coverage + 1010 160 + + + 204 + Performance Analyzer + 1170 + + + + + + 35141 + Event Statistics + + 200 50 700 + + + 1506 + Symbols + + 80 80 80 + + + 1936 + Watch 1 + + 200 133 133 + + + 1937 + Watch 2 + + 200 133 133 + + + 1935 + Call Stack + Locals + + 200 133 133 + + + 2506 + Trace Data + + 75 135 130 95 70 230 200 150 + + + 466 + Source Browser + 500 + 300 + + + + + + + + 0 + 0 + 0 + 50 + 16 + + + + + + + 44 + 2 + 3 + + -1 + -1 + + + -1 + -1 + + + -8 + -8 + 1710 + 1037 + + + + 0 + + 60 + 010000000400000001000000010000000100000001000000000000000200000000000000010000000100000000000000280000002800000000000000 + + + + 0 + Build + + -1 + -1 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F40000004F00000090050000E0000000 + + + 16 + F40000006600000090050000F7000000 + + + + 1005 + 1005 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000066000000ED00000042030000 + + + 16 + 70000000870000006001000054010000 + + + + 109 + 109 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000066000000ED00000042030000 + + + 16 + 70000000870000008C010000CE020000 + + + + 1465 + 1465 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000370200008D050000AC020000 + + + 16 + 70000000870000003803000018010000 + + + + 1466 + 1466 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000370200008D050000AC020000 + + + 16 + 70000000870000003803000018010000 + + + + 1467 + 1467 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000370200008D050000AC020000 + + + 16 + 70000000870000003803000018010000 + + + + 1468 + 1468 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000370200008D050000AC020000 + + + 16 + 70000000870000003803000018010000 + + + + 1506 + 1506 + 0 + 0 + 0 + 0 + 32767 + 0 + 16384 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 70000000870000006001000054010000 + + + + 1913 + 1913 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000008D050000C7000000 + + + 16 + 70000000870000003803000018010000 + + + + 1935 + 1935 + 0 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 03000000370200008D050000AC020000 + + + 16 + 70000000870000006001000054010000 + + + + 1936 + 1936 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000370200008D050000AC020000 + + + 16 + 70000000870000006001000054010000 + + + + 1937 + 1937 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000370200008D050000AC020000 + + + 16 + 70000000870000006001000054010000 + + + + 1939 + 1939 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000370200008D050000AC020000 + + + 16 + 70000000870000003803000018010000 + + + + 1940 + 1940 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000370200008D050000AC020000 + + + 16 + 70000000870000003803000018010000 + + + + 1941 + 1941 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000370200008D050000AC020000 + + + 16 + 70000000870000003803000018010000 + + + + 1942 + 1942 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000370200008D050000AC020000 + + + 16 + 70000000870000003803000018010000 + + + + 195 + 195 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000066000000ED00000042030000 + + + 16 + 70000000870000008C010000CE020000 + + + + 196 + 196 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000066000000ED00000042030000 + + + 16 + 70000000870000008C010000CE020000 + + + + 197 + 197 + 1 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 03000000760300007D070000D7030000 + + + 16 + 70000000870000003803000018010000 + + + + 198 + 198 + 0 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 000000002002000090050000C5020000 + + + 16 + 70000000870000003803000018010000 + + + + 199 + 199 + 1 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 03000000760300007D070000D7030000 + + + 16 + 70000000870000003803000018010000 + + + + 203 + 203 + 0 + 0 + 0 + 0 + 32767 + 0 + 8192 + 0 + + 16 + F7000000660000008D050000C7000000 + + + 16 + 70000000870000003803000018010000 + + + + 204 + 204 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000008D050000C7000000 + + + 16 + 70000000870000003803000018010000 + + + + 221 + 221 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 00000000000000000000000000000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 2506 + 2506 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 70000000870000006001000054010000 + + + + 2507 + 2507 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000370200008D050000AC020000 + + + 16 + 70000000870000003803000018010000 + + + + 343 + 343 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000008D050000C7000000 + + + 16 + 70000000870000003803000018010000 + + + + 346 + 346 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000008D050000C7000000 + + + 16 + 70000000870000003803000018010000 + + + + 35141 + 35141 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000008D050000C7000000 + + + 16 + 70000000870000006001000054010000 + + + + 35824 + 35824 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000008D050000C7000000 + + + 16 + 70000000870000003803000018010000 + + + + 35885 + 35885 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 70000000870000006001000054010000 + + + + 35886 + 35886 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 70000000870000006001000054010000 + + + + 35887 + 35887 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 70000000870000006001000054010000 + + + + 35888 + 35888 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 70000000870000006001000054010000 + + + + 35889 + 35889 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 70000000870000006001000054010000 + + + + 35890 + 35890 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 70000000870000006001000054010000 + + + + 35891 + 35891 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 70000000870000006001000054010000 + + + + 35892 + 35892 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 70000000870000006001000054010000 + + + + 35893 + 35893 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 70000000870000006001000054010000 + + + + 35894 + 35894 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 70000000870000006001000054010000 + + + + 35895 + 35895 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 70000000870000006001000054010000 + + + + 35896 + 35896 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 70000000870000006001000054010000 + + + + 35897 + 35897 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 70000000870000006001000054010000 + + + + 35898 + 35898 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 70000000870000006001000054010000 + + + + 35899 + 35899 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 70000000870000006001000054010000 + + + + 35900 + 35900 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 70000000870000006001000054010000 + + + + 35901 + 35901 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 70000000870000006001000054010000 + + + + 35902 + 35902 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 70000000870000006001000054010000 + + + + 35903 + 35903 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 70000000870000006001000054010000 + + + + 35904 + 35904 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 70000000870000006001000054010000 + + + + 35905 + 35905 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 70000000870000006001000054010000 + + + + 38003 + 38003 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000066000000ED00000042030000 + + + 16 + 70000000870000008C010000CE020000 + + + + 38007 + 38007 + 0 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 03000000760300007D070000D7030000 + + + 16 + 70000000870000003803000018010000 + + + + 436 + 436 + 0 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 03000000760300007D070000D7030000 + + + 16 + 70000000870000008C010000CE020000 + + + + 437 + 437 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000370200008D050000AC020000 + + + 16 + 70000000870000006001000054010000 + + + + 440 + 440 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000370200008D050000AC020000 + + + 16 + 70000000870000006001000054010000 + + + + 463 + 463 + 0 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 03000000760300007D070000D7030000 + + + 16 + 70000000870000008C010000CE020000 + + + + 466 + 466 + 0 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 03000000760300007D070000D7030000 + + + 16 + 70000000870000008C010000CE020000 + + + + 470 + 470 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000008D050000C7000000 + + + 16 + 70000000870000003803000018010000 + + + + 50000 + 50000 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 70000000870000006001000054010000 + + + + 50001 + 50001 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 70000000870000006001000054010000 + + + + 50002 + 50002 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 70000000870000006001000054010000 + + + + 50003 + 50003 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 70000000870000006001000054010000 + + + + 50004 + 50004 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 70000000870000006001000054010000 + + + + 50005 + 50005 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 70000000870000006001000054010000 + + + + 50006 + 50006 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 70000000870000006001000054010000 + + + + 50007 + 50007 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 70000000870000006001000054010000 + + + + 50008 + 50008 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 70000000870000006001000054010000 + + + + 50009 + 50009 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 70000000870000006001000054010000 + + + + 50010 + 50010 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 70000000870000006001000054010000 + + + + 50011 + 50011 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 70000000870000006001000054010000 + + + + 50012 + 50012 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 70000000870000006001000054010000 + + + + 50013 + 50013 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 70000000870000006001000054010000 + + + + 50014 + 50014 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 70000000870000006001000054010000 + + + + 50015 + 50015 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 70000000870000006001000054010000 + + + + 50016 + 50016 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 70000000870000006001000054010000 + + + + 50017 + 50017 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 70000000870000006001000054010000 + + + + 50018 + 50018 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 70000000870000006001000054010000 + + + + 50019 + 50019 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 70000000870000006001000054010000 + + + + 59392 + 59392 + 1 + 0 + 0 + 0 + 966 + 0 + 8192 + 0 + + 16 + 0000000000000000D10300001C000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 59393 + 0 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 00000000F00300008007000003040000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 59399 + 59399 + 1 + 0 + 0 + 0 + 476 + 0 + 8192 + 1 + + 16 + 000000001C000000E701000038000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 59400 + 59400 + 0 + 0 + 0 + 0 + 612 + 0 + 8192 + 2 + + 16 + 00000000380000006F02000054000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 824 + 824 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000370200008D050000AC020000 + + + 16 + 70000000870000006001000054010000 + + + + 3312 + 000000000B000000000000000020000000000000FFFFFFFFFFFFFFFFF4000000E000000090050000E4000000000000000100000004000000010000000000000000000000FFFFFFFF08000000CB00000057010000CC000000F08B00005A01000079070000D601000045890000FFFF02000B004354616262656450616E650020000000000000F40000006600000090050000F7000000F40000004F00000090050000E00000000000000040280046080000000B446973617373656D626C7900000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFF0F53797374656D20416E616C797A657200000000D601000001000000FFFFFFFFFFFFFFFF104576656E742053746174697374696373000000004589000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFF9C0400004F000000A004000030020000000000000200000004000000010000000000000000000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C3000001800040000000000000A0040000660000009005000047020000A00400004F000000900500003002000000000000404100462B0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFFF00000004F000000F40000005B030000010000000200001004000000010000000000000000000000FFFFFFFF05000000ED0300006D000000C3000000C400000073940000018000100000010000000000000066000000F000000072030000000000004F000000F00000005B0300000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73010000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7301000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657301000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273000000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000000000000FFFFFFFFFFFFFFFF000000001C020000900500002002000000000000010000000400000001000000000000000000000000000000000000000000000001000000C6000000FFFFFFFF0F0000008F070000930700009407000095070000960700009007000091070000B5010000B801000038030000B9050000BA050000BB050000BC050000CB09000001800080000000000000000000003702000090050000DC020000000000002002000090050000C502000000000000404100460F0000001343616C6C20537461636B202B204C6F63616C73000000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF09554C494E4B706C7573000000003803000001000000FFFFFFFFFFFFFFFF084D656D6F7279203100000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFFFFFFFFFF0000000001000000000000000000000001000000FFFFFFFFC802000020020000CC020000C502000000000000020000000400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000001000000FFFFFFFFFFFFFFFF000000005B030000800700005F030000010000000100001004000000010000000000000000000000FFFFFFFF06000000C5000000C7000000B4010000D2010000CF010000779400000180008000000100000000000000760300008007000007040000000000005F03000080070000F00300000000000040820056060000000C4275696C64204F757470757401000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657301000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0E536F757263652042726F7773657200000000D201000001000000FFFFFFFFFFFFFFFF0E416C6C205265666572656E63657300000000CF01000001000000FFFFFFFFFFFFFFFF0742726F77736572000000007794000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000 + + + 59392 + File + + 2992 + 00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000400020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000004000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000004000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000004000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000004000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE803000000000400000000000000000000000000000000000001000000010000009600000002002050000000000E6463645F656470745F7374616C6C960000000000000014000E6463645F656470745F7374616C6C057374616C6C0D5F5F6275696C74696E5F63747A0F747573625F626F6172645F696E6974075553455F534F460D504950455F3153545F42554C4B14776169745F706970655F6669666F5F656D7074790F6463645F696E745F68616E646C657213725F6F7370695F625F7374617475735F7375621177726974655F696E5F70726F67726573730C675F77726974655F646174610C7573625F6364635F696E69741B7370695F666C6173685F6469726563745F7472616E736665725F74156F7370695F625F776169745F6F7065726174696F6E1A52545F4446535F454C4D5F4D41585F534543544F525F53495A450C7475645F6D6F756E745F6362117475645F6D73635F7265616431305F63620F524541444D455F434F4E54454E54531C504B475F54494E595553425F4445564943455F4D53435F45504E554D21504B475F54494E595553425F4445564943455F4D53435F45505F42554653495A450000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000004001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E2280000002000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B46350000000000000000000000000100000001000000000000000000000001000000020021802280000000000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B4635000000000000000000000000010000000100000000000000000000000100000000002180E0010000000000007500000021456E65726779204D6561737572656D656E742026776974686F75742044656275670000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000400160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000003002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000000002180E50100000000000078000000264B696C6C20416C6C20427265616B706F696E747320696E204163746976652050726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180E601000000000000790000002F4B696C6C20416C6C20427265616B706F696E747320696E204D756C74692D50726F6A65637420576F726B73706163650000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000021804C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002180DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002180E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002180E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000218018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000021800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002180D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002180E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65C6030000 + + + 1423 + 2800FFFF01001100434D4643546F6F6C426172427574746F6E00E1000000000000FFFFFFFF000100000000000000010000000000000001000000018001E1000000000000FFFFFFFF000100000000000000010000000000000001000000018003E1000000000000FFFFFFFF0001000000000000000100000000000000010000000180CD7F000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF000000000000000000010000000000000001000000018023E1000000000000FFFFFFFF000100000000000000010000000000000001000000018022E1000000000000FFFFFFFF000100000000000000010000000000000001000000018025E1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001802BE1000000000000FFFFFFFF00010000000000000001000000000000000100000001802CE1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001807A8A000000000000FFFFFFFF00010000000000000001000000000000000100000001807B8A000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180D3B0000000000000FFFFFFFF000100000000000000010000000000000001000000018015B1000000000000FFFFFFFF0001000000000000000100000000000000010000000180F4B0000000000000FFFFFFFF000100000000000000010000000000000001000000018036B1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180FF88000000000000FFFFFFFF0001000000000000000100000000000000010000000180FE88000000000000FFFFFFFF00010000000000000001000000000000000100000001800B81000000000000FFFFFFFF00010000000000000001000000000000000100000001800C81000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180F088000000000000FFFFFFFF0001000000000000000100000000000000010000000180EE7F000000000000FFFFFFFF000100000000000000010000000000000001000000018024E1000000000000FFFFFFFF00010000000000000001000000000000000100000001800A81000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001802280000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180C488000000000000FFFFFFFF0001000000000000000100000000000000010000000180C988000000000000FFFFFFFF0001000000000000000100000000000000010000000180C788000000000000FFFFFFFF0001000000000000000100000000000000010000000180C888000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180DD88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180FB7F000000000000FFFFFFFF000100000000000000010000000000000001000000 + + + 1423 + 2800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000000004000000000000000000000000000000000100000001000000018022E100000000000005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000000000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000000000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000000000C0000000000000000000000000000000001000000010000000180F4B00000000000000D000000000000000000000000000000000100000001000000018036B10000000000000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF880000000000000F0000000000000000000000000000000001000000010000000180FE880000000000001000000000000000000000000000000000010000000100000001800B810000000000001100000000000000000000000000000000010000000100000001800C810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F088000000000000130000000000000000000000000000000001000000010000000180EE7F00000000000014000000000000000000000000000000000100000001000000018024E10000000000001500000000000000000000000000000000010000000100000001800A810000000000001600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018022800000000000001700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000180000000000000000000000000000000001000000010000000180C988000000000000190000000000000000000000000000000001000000010000000180C7880000000000001A0000000000000000000000000000000001000000010000000180C8880000000000001B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180DD880000000000001C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001D000000000000000000000000000000000100000001000000 + + + + 59399 + Build + + 976 + 00200000010000001000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F0000000004001C0000000000000000000000000000000001000000010000000180D07F0000000000001D000000000000000000000000000000000100000001000000018030800000000002001E000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6EC7040000000000006A0000000C4261746368204275696C2664000000000000000000000000010000000100000000000000000000000100000004000580C7040000000000006A0000000C4261746368204275696C266400000000000000000000000001000000010000000000000000000000010000000000058046070000000000006B0000000D42617463682052656275696C640000000000000000000000000100000001000000000000000000000001000000000005804707000000000000FFFFFFFF0B426174636820436C65616E0100000000000000000000000100000001000000000000000000000001000000000005809E8A0000000000001F0000000F4261746326682053657475702E2E2E000000000000000000000000010000000100000000000000000000000100000000000180D17F0000000004002000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000002100000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6EBA000000000000000000000000000000000000000000000000010000000100000096000000030020500000000008546172676574203196000000000000000100085461726765742031000000000180EB880000000000002200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000230000000000000000000000000000000001000000010000000180B08A000000000400240000000000000000000000000000000001000000010000000180A8010000000000004E00000000000000000000000000000000010000000100000001807202000000000000530000000000000000000000000000000001000000010000000180BE010000000000005000000000000000000000000000000000010000000100000000000000054275696C64DC010000 + + + 583 + 1000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F000000000000FFFFFFFF0001000000000000000100000000000000010000000180D07F000000000000FFFFFFFF00010000000000000001000000000000000100000001803080000000000000FFFFFFFF00010000000000000001000000000000000100000001809E8A000000000000FFFFFFFF0001000000000000000100000000000000010000000180D17F000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001804C8A000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001806680000000000000FFFFFFFF0001000000000000000100000000000000010000000180EB88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180C07F000000000000FFFFFFFF0001000000000000000100000000000000010000000180B08A000000000000FFFFFFFF0001000000000000000100000000000000010000000180A801000000000000FFFFFFFF00010000000000000001000000000000000100000001807202000000000000FFFFFFFF0001000000000000000100000000000000010000000180BE01000000000000FFFFFFFF000100000000000000010000000000000001000000 + + + 583 + 1000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F000000000000000000000000000000000000000000000001000000010000000180D07F00000000000001000000000000000000000000000000000100000001000000018030800000000000000200000000000000000000000000000000010000000100000001809E8A000000000000030000000000000000000000000000000001000000010000000180D17F0000000000000400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000000500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001806680000000000000060000000000000000000000000000000001000000010000000180EB880000000000000700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000080000000000000000000000000000000001000000010000000180B08A000000000000090000000000000000000000000000000001000000010000000180A8010000000000000A000000000000000000000000000000000100000001000000018072020000000000000B0000000000000000000000000000000001000000010000000180BE010000000000000C000000000000000000000000000000000100000001000000 + + + + 59400 + Debug + + 2373 + 00200000000000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000000002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000000000002D0000000000000000000000000000000001000000010000000180F07F0000000000002E0000000000000000000000000000000001000000010000000180E8880000000000003700000000000000000000000000000000010000000100000001803B010000000000002F0000000000000000000000000000000001000000010000000180BB8A00000000000030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000000000000310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380D88B00000000000031000000085761746368202631000000000000000000000000010000000100000000000000000000000100000000001380D98B00000000000031000000085761746368202632000000000000000000000000010000000100000000000000000000000100000000001380CE01000000000000FFFFFFFF0C576174636820416E63686F720000000000000000010000000000000001000000000000000000000001000000000013800F01000000000000320000000E4D656D6F72792057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000094D656D6F7279202632000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000094D656D6F7279202633000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000094D656D6F72792026340000000000000000000000000100000001000000000000000000000001000000000013801001000000000000330000000E53657269616C2057696E646F77730000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000000013809407000000000000330000000855415254202326320000000000000000000000000100000001000000000000000000000001000000000013809507000000000000330000000855415254202326330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000001626446562756720287072696E746629205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000007200000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380658A000000000000340000000F264C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E0000001526506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000E26436F646520436F766572616765000000000000000000000000010000000100000000000000000000000100000000001380CD01000000000000FFFFFFFF0F416E616C7973697320416E63686F7200000000000000000100000000000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720000000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720000000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000013800189000000000000360000000F26546F6F6C626F782057696E646F7700000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730000000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F72000000000000000001000000000000000100000000000000000000000100000000000000000005446562756764020000 + + + 898 + 1900FFFF01001100434D4643546F6F6C426172427574746F6ECC88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001801780000000000000FFFFFFFF00010000000000000001000000000000000100000001801D80000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001801A80000000000000FFFFFFFF00010000000000000001000000000000000100000001801B80000000000000FFFFFFFF0001000000000000000100000000000000010000000180E57F000000000000FFFFFFFF00010000000000000001000000000000000100000001801C80000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001800089000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180E48B000000000000FFFFFFFF0001000000000000000100000000000000010000000180F07F000000000000FFFFFFFF0001000000000000000100000000000000010000000180E888000000000000FFFFFFFF00010000000000000001000000000000000100000001803B01000000000000FFFFFFFF0001000000000000000100000000000000010000000180BB8A000000000000FFFFFFFF0001000000000000000100000000000000010000000180D88B000000000000FFFFFFFF0001000000000000000100000000000000010000000180D28B000000000000FFFFFFFF00010000000000000001000000000000000100000001809307000000000000FFFFFFFF0001000000000000000100000000000000010000000180658A000000000000FFFFFFFF0001000000000000000100000000000000010000000180C18A000000000000FFFFFFFF0001000000000000000100000000000000010000000180EE8B000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001800189000000000000FFFFFFFF000100000000000000010000000000000001000000 + + + 898 + 1900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000000000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000000100000000000000000000000000000000010000000100000001801D800000000000000200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000000300000000000000000000000000000000010000000100000001801B80000000000000040000000000000000000000000000000001000000010000000180E57F0000000000000500000000000000000000000000000000010000000100000001801C800000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000000700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B000000000000080000000000000000000000000000000001000000010000000180F07F000000000000090000000000000000000000000000000001000000010000000180E8880000000000000A00000000000000000000000000000000010000000100000001803B010000000000000B0000000000000000000000000000000001000000010000000180BB8A0000000000000C0000000000000000000000000000000001000000010000000180D88B0000000000000D0000000000000000000000000000000001000000010000000180D28B0000000000000E000000000000000000000000000000000100000001000000018093070000000000000F0000000000000000000000000000000001000000010000000180658A000000000000100000000000000000000000000000000001000000010000000180C18A000000000000110000000000000000000000000000000001000000010000000180EE8B0000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180018900000000000013000000000000000000000000000000000100000001000000 + + + + 0 + 1920 + 1080 + + + + 1 + Debug + + -1 + -1 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 370100004F00000080070000E0000000 + + + 16 + 370100006600000080070000F7000000 + + + + 1005 + 1005 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000660000003001000099020000 + + + 16 + 560000006D000000460100003A010000 + + + + 109 + 109 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000660000003001000099020000 + + + 16 + 560000006D00000072010000B4020000 + + + + 1465 + 1465 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + C7030000CD0200007D070000D7030000 + + + 16 + 560000006D0000001E030000FE000000 + + + + 1466 + 1466 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + C7030000CD0200007D070000D7030000 + + + 16 + 560000006D0000001E030000FE000000 + + + + 1467 + 1467 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + C7030000CD0200007D070000D7030000 + + + 16 + 560000006D0000001E030000FE000000 + + + + 1468 + 1468 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + C7030000CD0200007D070000D7030000 + + + 16 + 560000006D0000001E030000FE000000 + + + + 1506 + 1506 + 0 + 0 + 0 + 0 + 32767 + 0 + 16384 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 560000006D000000460100003A010000 + + + + 1913 + 1913 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 3A010000660000007D070000C7000000 + + + 16 + 560000006D0000001E030000FE000000 + + + + 1935 + 1935 + 1 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + C7030000CD0200007D070000D7030000 + + + 16 + 560000006D000000460100003A010000 + + + + 1936 + 1936 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + C7030000CD0200007D070000D7030000 + + + 16 + 560000006D000000460100003A010000 + + + + 1937 + 1937 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + C7030000CD0200007D070000D7030000 + + + 16 + 560000006D000000460100003A010000 + + + + 1939 + 1939 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + C7030000CD0200007D070000D7030000 + + + 16 + 560000006D0000001E030000FE000000 + + + + 1940 + 1940 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + C7030000CD0200007D070000D7030000 + + + 16 + 560000006D0000001E030000FE000000 + + + + 1941 + 1941 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + C7030000CD0200007D070000D7030000 + + + 16 + 560000006D0000001E030000FE000000 + + + + 1942 + 1942 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + C7030000CD0200007D070000D7030000 + + + 16 + 560000006D0000001E030000FE000000 + + + + 195 + 195 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000660000003001000099020000 + + + 16 + 560000006D00000072010000B4020000 + + + + 196 + 196 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000660000003001000099020000 + + + 16 + 560000006D00000072010000B4020000 + + + + 197 + 197 + 0 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 030000004B0200008D050000AC020000 + + + 16 + 560000006D0000001E030000FE000000 + + + + 198 + 198 + 1 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 00000000B6020000C0030000F0030000 + + + 16 + 560000006D0000001E030000FE000000 + + + + 199 + 199 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 030000004B0200008D050000AC020000 + + + 16 + 560000006D0000001E030000FE000000 + + + + 203 + 203 + 1 + 0 + 0 + 0 + 32767 + 0 + 8192 + 0 + + 16 + 370100006300000080070000E0000000 + + + 16 + 560000006D0000001E030000FE000000 + + + + 204 + 204 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 3A010000660000007D070000C7000000 + + + 16 + 560000006D0000001E030000FE000000 + + + + 221 + 221 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 00000000000000000000000000000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 2506 + 2506 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 560000006D000000460100003A010000 + + + + 2507 + 2507 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + C7030000CD0200007D070000D7030000 + + + 16 + 560000006D0000001E030000FE000000 + + + + 343 + 343 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 3A010000660000007D070000C7000000 + + + 16 + 560000006D0000001E030000FE000000 + + + + 346 + 346 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 3A010000660000007D070000C7000000 + + + 16 + 560000006D0000001E030000FE000000 + + + + 35141 + 35141 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 3A010000660000007D070000C7000000 + + + 16 + 560000006D000000460100003A010000 + + + + 35824 + 35824 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 3A010000660000007D070000C7000000 + + + 16 + 560000006D0000001E030000FE000000 + + + + 35885 + 35885 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 560000006D000000460100003A010000 + + + + 35886 + 35886 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 560000006D000000460100003A010000 + + + + 35887 + 35887 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 560000006D000000460100003A010000 + + + + 35888 + 35888 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 560000006D000000460100003A010000 + + + + 35889 + 35889 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 560000006D000000460100003A010000 + + + + 35890 + 35890 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 560000006D000000460100003A010000 + + + + 35891 + 35891 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 560000006D000000460100003A010000 + + + + 35892 + 35892 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 560000006D000000460100003A010000 + + + + 35893 + 35893 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 560000006D000000460100003A010000 + + + + 35894 + 35894 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 560000006D000000460100003A010000 + + + + 35895 + 35895 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 560000006D000000460100003A010000 + + + + 35896 + 35896 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 560000006D000000460100003A010000 + + + + 35897 + 35897 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 560000006D000000460100003A010000 + + + + 35898 + 35898 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 560000006D000000460100003A010000 + + + + 35899 + 35899 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 560000006D000000460100003A010000 + + + + 35900 + 35900 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 560000006D000000460100003A010000 + + + + 35901 + 35901 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 560000006D000000460100003A010000 + + + + 35902 + 35902 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 560000006D000000460100003A010000 + + + + 35903 + 35903 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 560000006D000000460100003A010000 + + + + 35904 + 35904 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 560000006D000000460100003A010000 + + + + 35905 + 35905 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 560000006D000000460100003A010000 + + + + 38003 + 38003 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000660000003001000099020000 + + + 16 + 560000006D00000072010000B4020000 + + + + 38007 + 38007 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 030000004B0200008D050000AC020000 + + + 16 + 560000006D0000001E030000FE000000 + + + + 436 + 436 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 030000004B0200008D050000AC020000 + + + 16 + 560000006D00000072010000B4020000 + + + + 437 + 437 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + C7030000CD0200007D070000D7030000 + + + 16 + 560000006D000000460100003A010000 + + + + 440 + 440 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + C7030000CD0200007D070000D7030000 + + + 16 + 560000006D000000460100003A010000 + + + + 463 + 463 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 030000004B0200008D050000AC020000 + + + 16 + 560000006D00000072010000B4020000 + + + + 466 + 466 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 030000004B0200008D050000AC020000 + + + 16 + 560000006D00000072010000B4020000 + + + + 470 + 470 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 3A010000660000007D070000C7000000 + + + 16 + 560000006D0000001E030000FE000000 + + + + 50000 + 50000 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 560000006D000000460100003A010000 + + + + 50001 + 50001 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 560000006D000000460100003A010000 + + + + 50002 + 50002 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 560000006D000000460100003A010000 + + + + 50003 + 50003 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 560000006D000000460100003A010000 + + + + 50004 + 50004 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 560000006D000000460100003A010000 + + + + 50005 + 50005 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 560000006D000000460100003A010000 + + + + 50006 + 50006 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 560000006D000000460100003A010000 + + + + 50007 + 50007 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 560000006D000000460100003A010000 + + + + 50008 + 50008 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 560000006D000000460100003A010000 + + + + 50009 + 50009 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 560000006D000000460100003A010000 + + + + 50010 + 50010 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 560000006D000000460100003A010000 + + + + 50011 + 50011 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 560000006D000000460100003A010000 + + + + 50012 + 50012 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 560000006D000000460100003A010000 + + + + 50013 + 50013 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 560000006D000000460100003A010000 + + + + 50014 + 50014 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 560000006D000000460100003A010000 + + + + 50015 + 50015 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 560000006D000000460100003A010000 + + + + 50016 + 50016 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 560000006D000000460100003A010000 + + + + 50017 + 50017 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 560000006D000000460100003A010000 + + + + 50018 + 50018 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 560000006D000000460100003A010000 + + + + 50019 + 50019 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 560000006D000000460100003A010000 + + + + 59392 + 59392 + 1 + 0 + 0 + 0 + 966 + 0 + 8192 + 0 + + 16 + 0000000000000000D10300001C000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 59393 + 0 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 00000000F00300008007000003040000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 59399 + 59399 + 0 + 0 + 0 + 0 + 476 + 0 + 8192 + 1 + + 16 + 000000001C000000E701000038000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 59400 + 59400 + 1 + 0 + 0 + 0 + 612 + 0 + 8192 + 2 + + 16 + 000000001C0000006F02000038000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 824 + 824 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + C7030000CD0200007D070000D7030000 + + + 16 + 560000006D000000460100003A010000 + + + + 3311 + 000000000B000000000000000020000001000000FFFFFFFFFFFFFFFF37010000E000000080070000E4000000010000000100001004000000010000000000000000000000FFFFFFFF08000000CB00000057010000CC000000F08B00005A01000079070000D601000045890000FFFF02000B004354616262656450616E650020000001000000370100006600000080070000F7000000370100004F00000080070000E00000000000000040280056080000000B446973617373656D626C7901000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFF0F53797374656D20416E616C797A657200000000D601000001000000FFFFFFFFFFFFFFFF104576656E742053746174697374696373000000004589000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFF9C0400004F000000A004000030020000000000000200000004000000010000000000000000000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C3000001800040000000000000A0040000660000009005000047020000A00400004F000000900500003002000000000000404100462B0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFF330100004F00000037010000B20200000100000002000010040000000100000012FFFFFF87060000FFFFFFFF05000000ED0300006D000000C3000000C40000007394000001800010000001000000000000006600000033010000C9020000000000004F00000033010000B20200000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73000000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7300000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657300000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273010000007394000001000000FFFFFFFFFFFFFFFF04000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000001000000FFFFFFFFFFFFFFFF00000000B202000080070000B6020000010000000100001004000000010000006DFEFFFF0B01000000000000000000000000000001000000C6000000FFFFFFFF0F0000008F070000930700009407000095070000960700009007000091070000B5010000B801000038030000B9050000BA050000BB050000BC050000CB09000001800080000001000000C4030000CD0200008007000007040000C4030000B602000080070000F003000000000000404100560F0000001343616C6C20537461636B202B204C6F63616C73010000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF09554C494E4B706C7573000000003803000001000000FFFFFFFFFFFFFFFF084D656D6F7279203101000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFF000000000000000001000000000000000100000001000000FFFFFFFFC0030000B6020000C4030000F003000001000000020000100400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000000000000FFFFFFFFFFFFFFFF00000000300200009005000034020000000000000100000004000000010000000000000000000000FFFFFFFF06000000C5000000C7000000B4010000D2010000CF0100007794000001800080000000000000000000004B02000090050000DC020000000000003402000090050000C50200000000000040820046060000000C4275696C64204F757470757400000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657300000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0E536F757263652042726F7773657200000000D201000001000000FFFFFFFFFFFFFFFF0E416C6C205265666572656E63657300000000CF01000001000000FFFFFFFFFFFFFFFF0642726F777365000000007794000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000 + + + 59392 + File + + 2568 + 00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE803000000000000000000000000000000000000000000000001000000010000009600000002002050000000000D5F5F6275696C74696E5F63747A960000000000000001000D5F5F6275696C74696E5F63747A00000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E2280000002000100150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B46350000000000000000000000000100000001000000000000000000000001000000020021802280000000000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B4635000000000000000000000000010000000100000000000000000000000100000000002180E0010000000000007500000021456E65726779204D6561737572656D656E742026776974686F75742044656275670000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000400160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000003002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000000002180E50100000000000078000000264B696C6C20416C6C20427265616B706F696E747320696E204163746976652050726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180E601000000000000790000002F4B696C6C20416C6C20427265616B706F696E747320696E204D756C74692D50726F6A65637420576F726B73706163650000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000021804C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002180DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002180E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002180E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000218018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000021800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002180D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002180E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65C6030000 + + + 1423 + 2800FFFF01001100434D4643546F6F6C426172427574746F6E00E1000000000000FFFFFFFF000100000000000000010000000000000001000000018001E1000000000000FFFFFFFF000100000000000000010000000000000001000000018003E1000000000000FFFFFFFF0001000000000000000100000000000000010000000180CD7F000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF000000000000000000010000000000000001000000018023E1000000000000FFFFFFFF000100000000000000010000000000000001000000018022E1000000000000FFFFFFFF000100000000000000010000000000000001000000018025E1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001802BE1000000000000FFFFFFFF00010000000000000001000000000000000100000001802CE1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001807A8A000000000000FFFFFFFF00010000000000000001000000000000000100000001807B8A000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180D3B0000000000000FFFFFFFF000100000000000000010000000000000001000000018015B1000000000000FFFFFFFF0001000000000000000100000000000000010000000180F4B0000000000000FFFFFFFF000100000000000000010000000000000001000000018036B1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180FF88000000000000FFFFFFFF0001000000000000000100000000000000010000000180FE88000000000000FFFFFFFF00010000000000000001000000000000000100000001800B81000000000000FFFFFFFF00010000000000000001000000000000000100000001800C81000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180F088000000000000FFFFFFFF0001000000000000000100000000000000010000000180EE7F000000000000FFFFFFFF000100000000000000010000000000000001000000018024E1000000000000FFFFFFFF00010000000000000001000000000000000100000001800A81000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001802280000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180C488000000000000FFFFFFFF0001000000000000000100000000000000010000000180C988000000000000FFFFFFFF0001000000000000000100000000000000010000000180C788000000000000FFFFFFFF0001000000000000000100000000000000010000000180C888000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180DD88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180FB7F000000000000FFFFFFFF000100000000000000010000000000000001000000 + + + 1423 + 2800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000000004000000000000000000000000000000000100000001000000018022E100000000000005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000000000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000000000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000000000C0000000000000000000000000000000001000000010000000180F4B00000000000000D000000000000000000000000000000000100000001000000018036B10000000000000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF880000000000000F0000000000000000000000000000000001000000010000000180FE880000000000001000000000000000000000000000000000010000000100000001800B810000000000001100000000000000000000000000000000010000000100000001800C810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F088000000000000130000000000000000000000000000000001000000010000000180EE7F00000000000014000000000000000000000000000000000100000001000000018024E10000000000001500000000000000000000000000000000010000000100000001800A810000000000001600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018022800000000000001700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000180000000000000000000000000000000001000000010000000180C988000000000000190000000000000000000000000000000001000000010000000180C7880000000000001A0000000000000000000000000000000001000000010000000180C8880000000000001B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180DD880000000000001C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001D000000000000000000000000000000000100000001000000 + + + + 59399 + Build + + 955 + 00200000000000001000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F0000000000001C0000000000000000000000000000000001000000010000000180D07F0000000000001D000000000000000000000000000000000100000001000000018030800000000000001E000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6EC7040000000000006A0000000C4261746368204275696C2664000000000000000000000000010000000100000000000000000000000100000004000580C7040000000000006A0000000C4261746368204275696C266400000000000000000000000001000000010000000000000000000000010000000000058046070000000000006B0000000D42617463682052656275696C640000000000000000000000000100000001000000000000000000000001000000000005804707000000000000FFFFFFFF0B426174636820436C65616E0000000000000000010000000000000001000000000000000000000001000000000005809E8A0000000000001F0000000F4261746326682053657475702E2E2E000000000000000000000000010000000100000000000000000000000100000000000180D17F0000000000002000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000002100000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6EBA00000000000000000000000000000000000000000000000001000000010000009600000003002050FFFFFFFF00960000000000000000000180EB880000000000002200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000230000000000000000000000000000000001000000010000000180B08A000000000000240000000000000000000000000000000001000000010000000180A8010000000000004E00000000000000000000000000000000010000000100000001807202000000000000530000000000000000000000000000000001000000010000000180BE010000000000005000000000000000000000000000000000010000000100000000000000054275696C64DC010000 + + + 583 + 1000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F000000000000FFFFFFFF0001000000000000000100000000000000010000000180D07F000000000000FFFFFFFF00010000000000000001000000000000000100000001803080000000000000FFFFFFFF00010000000000000001000000000000000100000001809E8A000000000000FFFFFFFF0001000000000000000100000000000000010000000180D17F000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001804C8A000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001806680000000000000FFFFFFFF0001000000000000000100000000000000010000000180EB88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180C07F000000000000FFFFFFFF0001000000000000000100000000000000010000000180B08A000000000000FFFFFFFF0001000000000000000100000000000000010000000180A801000000000000FFFFFFFF00010000000000000001000000000000000100000001807202000000000000FFFFFFFF0001000000000000000100000000000000010000000180BE01000000000000FFFFFFFF000100000000000000010000000000000001000000 + + + 583 + 1000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F000000000000000000000000000000000000000000000001000000010000000180D07F00000000000001000000000000000000000000000000000100000001000000018030800000000000000200000000000000000000000000000000010000000100000001809E8A000000000000030000000000000000000000000000000001000000010000000180D17F0000000000000400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000000500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001806680000000000000060000000000000000000000000000000001000000010000000180EB880000000000000700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000080000000000000000000000000000000001000000010000000180B08A000000000000090000000000000000000000000000000001000000010000000180A8010000000000000A000000000000000000000000000000000100000001000000018072020000000000000B0000000000000000000000000000000001000000010000000180BE010000000000000C000000000000000000000000000000000100000001000000 + + + + 59400 + Debug + + 2362 + 00200000010000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000004002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000004002A00000000000000000000000000000000010000000100000001801C800000000004002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000020001002D0000000000000000000000000000000001000000010000000180F07F0000020001002E0000000000000000000000000000000001000000010000000180E8880000020000003700000000000000000000000000000000010000000100000001803B010000020001002F0000000000000000000000000000000001000000010000000180BB8A00000200010030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000002000000310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380D88B00000000000031000000085761746368202631000000000000000000000000010000000100000000000000000000000100000000001380D98B00000000000031000000085761746368202632000000000000000000000000010000000100000000000000000000000100000000001380CE01000000000000FFFFFFFF0C576174636820416E63686F720000000000000000010000000000000001000000000000000000000001000000000013800F0100000200010032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000094D656D6F7279202632000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000094D656D6F7279202633000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000094D656D6F72792026340000000000000000000000000100000001000000000000000000000001000000000013801001000002000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000000013809407000000000000330000000855415254202326320000000000000000000000000100000001000000000000000000000001000000000013809507000000000000330000000855415254202326330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000001626446562756720287072696E746629205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000007200000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380658A000000000000340000000F264C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E0000001526506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000E26436F646520436F766572616765000000000000000000000000010000000100000000000000000000000100000000001380CD01000000000000FFFFFFFF0F416E616C7973697320416E63686F7200000000000000000100000000000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720000000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720000000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000013800189000002000000360000000F26546F6F6C626F782057696E646F7700000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730000000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F72000000000000000001000000000000000100000000000000000000000100000000000000000005446562756764020000 + + + 898 + 1900FFFF01001100434D4643546F6F6C426172427574746F6ECC88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001801780000000000000FFFFFFFF00010000000000000001000000000000000100000001801D80000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001801A80000000000000FFFFFFFF00010000000000000001000000000000000100000001801B80000000000000FFFFFFFF0001000000000000000100000000000000010000000180E57F000000000000FFFFFFFF00010000000000000001000000000000000100000001801C80000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001800089000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180E48B000000000000FFFFFFFF0001000000000000000100000000000000010000000180F07F000000000000FFFFFFFF0001000000000000000100000000000000010000000180E888000000000000FFFFFFFF00010000000000000001000000000000000100000001803B01000000000000FFFFFFFF0001000000000000000100000000000000010000000180BB8A000000000000FFFFFFFF0001000000000000000100000000000000010000000180D88B000000000000FFFFFFFF0001000000000000000100000000000000010000000180D28B000000000000FFFFFFFF00010000000000000001000000000000000100000001809307000000000000FFFFFFFF0001000000000000000100000000000000010000000180658A000000000000FFFFFFFF0001000000000000000100000000000000010000000180C18A000000000000FFFFFFFF0001000000000000000100000000000000010000000180EE8B000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001800189000000000000FFFFFFFF000100000000000000010000000000000001000000 + + + 898 + 1900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000000000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000000100000000000000000000000000000000010000000100000001801D800000000000000200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000000300000000000000000000000000000000010000000100000001801B80000000000000040000000000000000000000000000000001000000010000000180E57F0000000000000500000000000000000000000000000000010000000100000001801C800000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000000700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B000000000000080000000000000000000000000000000001000000010000000180F07F000000000000090000000000000000000000000000000001000000010000000180E8880000000000000A00000000000000000000000000000000010000000100000001803B010000000000000B0000000000000000000000000000000001000000010000000180BB8A0000000000000C0000000000000000000000000000000001000000010000000180D88B0000000000000D0000000000000000000000000000000001000000010000000180D28B0000000000000E000000000000000000000000000000000100000001000000018093070000000000000F0000000000000000000000000000000001000000010000000180658A000000000000100000000000000000000000000000000001000000010000000180C18A000000000000110000000000000000000000000000000001000000010000000180EE8B0000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180018900000000000013000000000000000000000000000000000100000001000000 + + + + 0 + 1920 + 1080 + + + + + diff --git a/bsp/renesas/ra8m1-ek/project.uvoptx b/bsp/renesas/ra8m1-ek/project.uvoptx new file mode 100644 index 000000000000..aa530e537267 --- /dev/null +++ b/bsp/renesas/ra8m1-ek/project.uvoptx @@ -0,0 +1,752 @@ + + + + 1.0 + +
### uVision Project, (C) Keil Software
+ + + *.c + *.s*; *.src; *.a* + *.obj; *.o + *.lib + *.txt; *.h; *.inc; *.md + *.plm + *.cpp + 0 + + + + 0 + 0 + + + + Target 1 + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 0 + 1 + 1 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\Listings\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 1 + + 255 + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 0 + 4 + + + + + + + + + + + Segger\JL2CM3.dll + + + + 0 + UL2V8M + UL2V8M(-S0 -C0 -P0 ) -FN3 -FC2000 -FD22000000 -FF0RA8D1_2M -FF1RA8D1_DATA_C2M -FF2RA8D1_CCONF -FL01F8000 -FL13000 -FL2200 -FS02000000 -FS127000000 -FS2300A100 -FP0($$Device:R7FA8D1BH$Flash\RA8D1_2M.FLM) -FP1($$Device:R7FA8D1BH$Flash\RA8D1_DATA_C2M.FLM) -FP2($$Device:R7FA8D1BH$Flash\RA8D1_CCONF.FLM) + + + + + 0 + + + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + 0 + 0 + 0 + + + + + + + + + + + + + Compiler + 0 + 0 + 0 + 0 + + 1 + 1 + 1 + 0 + 0 + 0 + ..\..\..\components\libc\compilers\armlibc\syscall_mem.c + syscall_mem.c + 0 + 0 + + + 1 + 2 + 1 + 0 + 0 + 0 + ..\..\..\components\libc\compilers\armlibc\syscalls.c + syscalls.c + 0 + 0 + + + 1 + 3 + 1 + 0 + 0 + 0 + ..\..\..\components\libc\compilers\common\cctype.c + cctype.c + 0 + 0 + + + 1 + 4 + 1 + 0 + 0 + 0 + ..\..\..\components\libc\compilers\common\cstdlib.c + cstdlib.c + 0 + 0 + + + 1 + 5 + 1 + 0 + 0 + 0 + ..\..\..\components\libc\compilers\common\cstring.c + cstring.c + 0 + 0 + + + 1 + 6 + 1 + 0 + 0 + 0 + ..\..\..\components\libc\compilers\common\ctime.c + ctime.c + 0 + 0 + + + 1 + 7 + 1 + 0 + 0 + 0 + ..\..\..\components\libc\compilers\common\cunistd.c + cunistd.c + 0 + 0 + + + 1 + 8 + 1 + 0 + 0 + 0 + ..\..\..\components\libc\compilers\common\cwchar.c + cwchar.c + 0 + 0 + + + + + CPU + 0 + 0 + 0 + 0 + + 2 + 9 + 1 + 0 + 0 + 0 + ..\..\..\libcpu\arm\common\atomic_arm.c + atomic_arm.c + 0 + 0 + + + 2 + 10 + 1 + 0 + 0 + 0 + ..\..\..\libcpu\arm\common\div0.c + div0.c + 0 + 0 + + + 2 + 11 + 1 + 0 + 0 + 0 + ..\..\..\libcpu\arm\common\showmem.c + showmem.c + 0 + 0 + + + 2 + 12 + 2 + 0 + 0 + 0 + ..\..\..\libcpu\arm\cortex-m85\context_rvds.S + context_rvds.S + 0 + 0 + + + 2 + 13 + 1 + 0 + 0 + 0 + ..\..\..\libcpu\arm\cortex-m85\cpuport.c + cpuport.c + 0 + 0 + + + + + DeviceDrivers + 0 + 0 + 0 + 0 + + 3 + 14 + 1 + 0 + 0 + 0 + ..\..\..\components\drivers\core\device.c + device.c + 0 + 0 + + + 3 + 15 + 1 + 0 + 0 + 0 + ..\..\..\components\drivers\ipc\completion.c + completion.c + 0 + 0 + + + 3 + 16 + 1 + 0 + 0 + 0 + ..\..\..\components\drivers\ipc\dataqueue.c + dataqueue.c + 0 + 0 + + + 3 + 17 + 1 + 0 + 0 + 0 + ..\..\..\components\drivers\ipc\pipe.c + pipe.c + 0 + 0 + + + 3 + 18 + 1 + 0 + 0 + 0 + ..\..\..\components\drivers\ipc\ringblk_buf.c + ringblk_buf.c + 0 + 0 + + + 3 + 19 + 1 + 0 + 0 + 0 + ..\..\..\components\drivers\ipc\ringbuffer.c + ringbuffer.c + 0 + 0 + + + 3 + 20 + 1 + 0 + 0 + 0 + ..\..\..\components\drivers\ipc\waitqueue.c + waitqueue.c + 0 + 0 + + + 3 + 21 + 1 + 0 + 0 + 0 + ..\..\..\components\drivers\ipc\workqueue.c + workqueue.c + 0 + 0 + + + 3 + 22 + 1 + 0 + 0 + 0 + ..\..\..\components\drivers\misc\pin.c + pin.c + 0 + 0 + + + 3 + 23 + 1 + 0 + 0 + 0 + ..\..\..\components\drivers\serial\serial_v2.c + serial_v2.c + 0 + 0 + + + + + Drivers + 0 + 0 + 0 + 0 + + 4 + 24 + 1 + 0 + 0 + 0 + board\ra8_it.c + ra8_it.c + 0 + 0 + + + 4 + 25 + 1 + 0 + 0 + 0 + ..\libraries\HAL_Drivers\drv_common.c + drv_common.c + 0 + 0 + + + 4 + 26 + 1 + 0 + 0 + 0 + ..\libraries\HAL_Drivers\drv_gpio.c + drv_gpio.c + 0 + 0 + + + 4 + 27 + 1 + 0 + 0 + 0 + ..\libraries\HAL_Drivers\drv_usart_v2.c + drv_usart_v2.c + 0 + 0 + + + + + Finsh + 0 + 0 + 0 + 0 + + 5 + 28 + 1 + 0 + 0 + 0 + ..\..\..\components\finsh\shell.c + shell.c + 0 + 0 + + + 5 + 29 + 1 + 0 + 0 + 0 + ..\..\..\components\finsh\msh.c + msh.c + 0 + 0 + + + 5 + 30 + 1 + 0 + 0 + 0 + ..\..\..\components\finsh\msh_parse.c + msh_parse.c + 0 + 0 + + + 5 + 31 + 1 + 0 + 0 + 0 + ..\..\..\components\finsh\cmd.c + cmd.c + 0 + 0 + + + + + Kernel + 0 + 0 + 0 + 0 + + 6 + 32 + 1 + 0 + 0 + 0 + ..\..\..\src\clock.c + clock.c + 0 + 0 + + + 6 + 33 + 1 + 0 + 0 + 0 + ..\..\..\src\components.c + components.c + 0 + 0 + + + 6 + 34 + 1 + 0 + 0 + 0 + ..\..\..\src\idle.c + idle.c + 0 + 0 + + + 6 + 35 + 1 + 0 + 0 + 0 + ..\..\..\src\ipc.c + ipc.c + 0 + 0 + + + 6 + 36 + 1 + 0 + 0 + 0 + ..\..\..\src\irq.c + irq.c + 0 + 0 + + + 6 + 37 + 1 + 0 + 0 + 0 + ..\..\..\src\kservice.c + kservice.c + 0 + 0 + + + 6 + 38 + 1 + 0 + 0 + 0 + ..\..\..\src\mem.c + mem.c + 0 + 0 + + + 6 + 39 + 1 + 0 + 0 + 0 + ..\..\..\src\object.c + object.c + 0 + 0 + + + 6 + 40 + 1 + 0 + 0 + 0 + ..\..\..\src\scheduler_up.c + scheduler_up.c + 0 + 0 + + + 6 + 41 + 1 + 0 + 0 + 0 + ..\..\..\src\thread.c + thread.c + 0 + 0 + + + 6 + 42 + 1 + 0 + 0 + 0 + ..\..\..\src\timer.c + timer.c + 0 + 0 + + + + + :Renesas RA Smart Configurator:Common Sources + 0 + 0 + 0 + 0 + + 7 + 43 + 1 + 0 + 0 + 0 + .\src\hal_entry.c + hal_entry.c + 0 + 0 + + + + + ::Flex Software + 0 + 0 + 0 + 1 + + +
diff --git a/bsp/renesas/ra8m1-ek/project.uvprojx b/bsp/renesas/ra8m1-ek/project.uvprojx new file mode 100644 index 000000000000..75f0c99deab1 --- /dev/null +++ b/bsp/renesas/ra8m1-ek/project.uvprojx @@ -0,0 +1,670 @@ + + + + 2.1 + +
### uVision Project, (C) Keil Software
+ + + + Target 1 + 0x4 + ARM-ADS + 6190000::V6.19::ARMCLANG + 1 + + + R7FA8M1AH + Renesas + Renesas.RA_DFP.5.0.0 + https://www2.renesas.eu/Keil_MDK_Packs/ + CPUTYPE("Cortex-M85") DSP TZ MVE(FP) FPU3(DFPU) PACBTI CLOCK(12000000) ELITTLE + + + + 0 + + + + + + + + + + + $$Device:R7FA8M1AH$SVD\R7FA8M1AH.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\Objects\ + ra8m1 + 1 + 0 + 1 + 1 + 1 + .\Listings\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 1 + 0 + cmd /c "start "Renesas" /w cmd /c ""$Slauncher\rasc_launcher.bat" "$Prasc_version.txt" -nosplash --launcher.suppressErrors --gensmartbundle --compiler ARMv6 "$Pconfiguration.xml" "$L%L" 2> "%%TEMP%%\rasc_stderr.out""" + + 0 + 0 + 2 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMV8M.DLL + -MPU + DCM.DLL + -pCM4 + SARMV8M.DLL + -MPU + TCM.DLL + -pCM85 + + + + 1 + 0 + 0 + 0 + 16 + + + + + 0 + 1 + 0 + 0 + 1 + -1 + + 1 + + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M85" + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 3 + 2 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 6 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + + -Wno-license-management -Wuninitialized -Wall -Wmissing-declarations -Wpointer-arith -Waggregate-return -Wfloat-equal + RT_USING_LIBC, RT_USING_ARMLIBC, __STDC_LIMIT_MACROS, __RTTHREAD__, __CLK_TCK=RT_TICK_PER_SECOND + + board\ports;..\..\..\components\finsh;..\..\..\components\libc\compilers\common\extension\fcntl\octal;..\..\..\include;..\..\..\components\libc\posix\io\eventfd;..\libraries\HAL_Drivers\config;..\..\..\components\drivers\include;..\..\..\components\drivers\include;..\..\..\components\drivers\include;..\..\..\libcpu\arm\common;..\..\..\libcpu\arm\cortex-m85;..\..\..\components\libc\posix\io\epoll;..\libraries\HAL_Drivers;..\..\..\components\libc\posix\ipc;..\..\..\components\drivers\include;..\..\..\components\libc\compilers\common\extension;board;..\..\..\components\libc\posix\io\poll;..\..\..\components\libc\compilers\common\include;. + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 2 + + + + + + + + + 0 + 0 + 0 + 0 + 0 + 0 + + + + .\script\fsp.scat + + + + + 6319,6314 + + + + + + Compiler + + + syscall_mem.c + 1 + ..\..\..\components\libc\compilers\armlibc\syscall_mem.c + + + syscalls.c + 1 + ..\..\..\components\libc\compilers\armlibc\syscalls.c + + + cctype.c + 1 + ..\..\..\components\libc\compilers\common\cctype.c + + + cstdlib.c + 1 + ..\..\..\components\libc\compilers\common\cstdlib.c + + + cstring.c + 1 + ..\..\..\components\libc\compilers\common\cstring.c + + + ctime.c + 1 + ..\..\..\components\libc\compilers\common\ctime.c + + + cunistd.c + 1 + ..\..\..\components\libc\compilers\common\cunistd.c + + + cwchar.c + 1 + ..\..\..\components\libc\compilers\common\cwchar.c + + + + + CPU + + + atomic_arm.c + 1 + ..\..\..\libcpu\arm\common\atomic_arm.c + + + div0.c + 1 + ..\..\..\libcpu\arm\common\div0.c + + + showmem.c + 1 + ..\..\..\libcpu\arm\common\showmem.c + + + context_rvds.S + 2 + ..\..\..\libcpu\arm\cortex-m85\context_rvds.S + + + cpuport.c + 1 + ..\..\..\libcpu\arm\cortex-m85\cpuport.c + + + + + DeviceDrivers + + + device.c + 1 + ..\..\..\components\drivers\core\device.c + + + completion.c + 1 + ..\..\..\components\drivers\ipc\completion.c + + + dataqueue.c + 1 + ..\..\..\components\drivers\ipc\dataqueue.c + + + pipe.c + 1 + ..\..\..\components\drivers\ipc\pipe.c + + + ringblk_buf.c + 1 + ..\..\..\components\drivers\ipc\ringblk_buf.c + + + ringbuffer.c + 1 + ..\..\..\components\drivers\ipc\ringbuffer.c + + + waitqueue.c + 1 + ..\..\..\components\drivers\ipc\waitqueue.c + + + workqueue.c + 1 + ..\..\..\components\drivers\ipc\workqueue.c + + + pin.c + 1 + ..\..\..\components\drivers\misc\pin.c + + + serial_v2.c + 1 + ..\..\..\components\drivers\serial\serial_v2.c + + + + + Drivers + + + ra8_it.c + 1 + board\ra8_it.c + + + drv_common.c + 1 + ..\libraries\HAL_Drivers\drv_common.c + + + drv_gpio.c + 1 + ..\libraries\HAL_Drivers\drv_gpio.c + + + drv_usart_v2.c + 1 + ..\libraries\HAL_Drivers\drv_usart_v2.c + + + + + Finsh + + + shell.c + 1 + ..\..\..\components\finsh\shell.c + + + msh.c + 1 + ..\..\..\components\finsh\msh.c + + + msh_parse.c + 1 + ..\..\..\components\finsh\msh_parse.c + + + cmd.c + 1 + ..\..\..\components\finsh\cmd.c + + + + + Kernel + + + clock.c + 1 + ..\..\..\src\clock.c + + + components.c + 1 + ..\..\..\src\components.c + + + idle.c + 1 + ..\..\..\src\idle.c + + + ipc.c + 1 + ..\..\..\src\ipc.c + + + irq.c + 1 + ..\..\..\src\irq.c + + + kservice.c + 1 + ..\..\..\src\kservice.c + + + mem.c + 1 + ..\..\..\src\mem.c + + + object.c + 1 + ..\..\..\src\object.c + + + scheduler_up.c + 1 + ..\..\..\src\scheduler_up.c + + + thread.c + 1 + ..\..\..\src\thread.c + + + timer.c + 1 + ..\..\..\src\timer.c + + + + + :Renesas RA Smart Configurator:Common Sources + + + hal_entry.c + 1 + .\src\hal_entry.c + + + + + ::Flex Software + + + + + + + + + + + + + + + + + + + + + + + + + + + + + project + 1 + + + + +
diff --git a/bsp/renesas/ra8m1-ek/ra/SConscript b/bsp/renesas/ra8m1-ek/ra/SConscript new file mode 100644 index 000000000000..52e96ac900d8 --- /dev/null +++ b/bsp/renesas/ra8m1-ek/ra/SConscript @@ -0,0 +1,26 @@ +Import('RTT_ROOT') +Import('rtconfig') +from building import * +from gcc import * + +cwd = GetCurrentDir() +src = [] +group = [] +CPPPATH = [] + +if rtconfig.PLATFORM in ['iccarm']: + print("\nThe current project does not support IAR build\n") + Return('group') +elif rtconfig.PLATFORM in GetGCCLikePLATFORM(): + if GetOption('target') != 'mdk5': + src += Glob(cwd + '/fsp/src/bsp/mcu/all/*.c') + src += [cwd + '/fsp/src/bsp/cmsis/Device/RENESAS/Source/system.c'] + src += [cwd + '/fsp/src/bsp/cmsis/Device/RENESAS/Source/startup.c'] + src += Glob(cwd + '/fsp/src/r_*/*.c') + CPPPATH = [ cwd + '/arm/CMSIS_5/CMSIS/Core/Include', + cwd + '/fsp/inc', + cwd + '/fsp/inc/api', + cwd + '/fsp/inc/instances',] + +group = DefineGroup('ra', src, depend = [''], CPPPATH = CPPPATH) +Return('group') diff --git a/bsp/renesas/ra8m1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/cachel1_armv7.h b/bsp/renesas/ra8m1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/cachel1_armv7.h new file mode 100644 index 000000000000..abebc95f9460 --- /dev/null +++ b/bsp/renesas/ra8m1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/cachel1_armv7.h @@ -0,0 +1,411 @@ +/****************************************************************************** + * @file cachel1_armv7.h + * @brief CMSIS Level 1 Cache API for Armv7-M and later + * @version V1.0.1 + * @date 19. April 2021 + ******************************************************************************/ +/* + * Copyright (c) 2020-2021 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#elif defined (__clang__) + #pragma clang system_header /* treat file as system include file */ +#endif + +#ifndef ARM_CACHEL1_ARMV7_H +#define ARM_CACHEL1_ARMV7_H + +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_CacheFunctions Cache Functions + \brief Functions that configure Instruction and Data cache. + @{ + */ + +/* Cache Size ID Register Macros */ +#define CCSIDR_WAYS(x) (((x) & SCB_CCSIDR_ASSOCIATIVITY_Msk) >> SCB_CCSIDR_ASSOCIATIVITY_Pos) +#define CCSIDR_SETS(x) (((x) & SCB_CCSIDR_NUMSETS_Msk ) >> SCB_CCSIDR_NUMSETS_Pos ) + +#ifndef __SCB_DCACHE_LINE_SIZE +#define __SCB_DCACHE_LINE_SIZE 32U /*!< Cortex-M7 cache line size is fixed to 32 bytes (8 words). See also register SCB_CCSIDR */ +#endif + +#ifndef __SCB_ICACHE_LINE_SIZE +#define __SCB_ICACHE_LINE_SIZE 32U /*!< Cortex-M7 cache line size is fixed to 32 bytes (8 words). See also register SCB_CCSIDR */ +#endif + +/** + \brief Enable I-Cache + \details Turns on I-Cache + */ +__STATIC_FORCEINLINE void SCB_EnableICache (void) +{ + #if defined (__ICACHE_PRESENT) && (__ICACHE_PRESENT == 1U) + if (SCB->CCR & SCB_CCR_IC_Msk) return; /* return if ICache is already enabled */ + + __DSB(); + __ISB(); + SCB->ICIALLU = 0UL; /* invalidate I-Cache */ + __DSB(); + __ISB(); + SCB->CCR |= (uint32_t)SCB_CCR_IC_Msk; /* enable I-Cache */ + __DSB(); + __ISB(); + #endif +} + + +/** + \brief Disable I-Cache + \details Turns off I-Cache + */ +__STATIC_FORCEINLINE void SCB_DisableICache (void) +{ + #if defined (__ICACHE_PRESENT) && (__ICACHE_PRESENT == 1U) + __DSB(); + __ISB(); + SCB->CCR &= ~(uint32_t)SCB_CCR_IC_Msk; /* disable I-Cache */ + SCB->ICIALLU = 0UL; /* invalidate I-Cache */ + __DSB(); + __ISB(); + #endif +} + + +/** + \brief Invalidate I-Cache + \details Invalidates I-Cache + */ +__STATIC_FORCEINLINE void SCB_InvalidateICache (void) +{ + #if defined (__ICACHE_PRESENT) && (__ICACHE_PRESENT == 1U) + __DSB(); + __ISB(); + SCB->ICIALLU = 0UL; + __DSB(); + __ISB(); + #endif +} + + +/** + \brief I-Cache Invalidate by address + \details Invalidates I-Cache for the given address. + I-Cache is invalidated starting from a 32 byte aligned address in 32 byte granularity. + I-Cache memory blocks which are part of given address + given size are invalidated. + \param[in] addr address + \param[in] isize size of memory block (in number of bytes) +*/ +__STATIC_FORCEINLINE void SCB_InvalidateICache_by_Addr (volatile void *addr, int32_t isize) +{ + #if defined (__ICACHE_PRESENT) && (__ICACHE_PRESENT == 1U) + if ( isize > 0 ) { + int32_t op_size = isize + (((uint32_t)addr) & (__SCB_ICACHE_LINE_SIZE - 1U)); + uint32_t op_addr = (uint32_t)addr /* & ~(__SCB_ICACHE_LINE_SIZE - 1U) */; + + __DSB(); + + do { + SCB->ICIMVAU = op_addr; /* register accepts only 32byte aligned values, only bits 31..5 are valid */ + op_addr += __SCB_ICACHE_LINE_SIZE; + op_size -= __SCB_ICACHE_LINE_SIZE; + } while ( op_size > 0 ); + + __DSB(); + __ISB(); + } + #endif +} + + +/** + \brief Enable D-Cache + \details Turns on D-Cache + */ +__STATIC_FORCEINLINE void SCB_EnableDCache (void) +{ + #if defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U) + uint32_t ccsidr; + uint32_t sets; + uint32_t ways; + + if (SCB->CCR & SCB_CCR_DC_Msk) return; /* return if DCache is already enabled */ + + SCB->CSSELR = 0U; /* select Level 1 data cache */ + __DSB(); + + ccsidr = SCB->CCSIDR; + + /* invalidate D-Cache */ + sets = (uint32_t)(CCSIDR_SETS(ccsidr)); + do { + ways = (uint32_t)(CCSIDR_WAYS(ccsidr)); + do { + SCB->DCISW = (((sets << SCB_DCISW_SET_Pos) & SCB_DCISW_SET_Msk) | + ((ways << SCB_DCISW_WAY_Pos) & SCB_DCISW_WAY_Msk) ); + #if defined ( __CC_ARM ) + __schedule_barrier(); + #endif + } while (ways-- != 0U); + } while(sets-- != 0U); + __DSB(); + + SCB->CCR |= (uint32_t)SCB_CCR_DC_Msk; /* enable D-Cache */ + + __DSB(); + __ISB(); + #endif +} + + +/** + \brief Disable D-Cache + \details Turns off D-Cache + */ +__STATIC_FORCEINLINE void SCB_DisableDCache (void) +{ + #if defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U) + uint32_t ccsidr; + uint32_t sets; + uint32_t ways; + + SCB->CSSELR = 0U; /* select Level 1 data cache */ + __DSB(); + + SCB->CCR &= ~(uint32_t)SCB_CCR_DC_Msk; /* disable D-Cache */ + __DSB(); + + ccsidr = SCB->CCSIDR; + + /* clean & invalidate D-Cache */ + sets = (uint32_t)(CCSIDR_SETS(ccsidr)); + do { + ways = (uint32_t)(CCSIDR_WAYS(ccsidr)); + do { + SCB->DCCISW = (((sets << SCB_DCCISW_SET_Pos) & SCB_DCCISW_SET_Msk) | + ((ways << SCB_DCCISW_WAY_Pos) & SCB_DCCISW_WAY_Msk) ); + #if defined ( __CC_ARM ) + __schedule_barrier(); + #endif + } while (ways-- != 0U); + } while(sets-- != 0U); + + __DSB(); + __ISB(); + #endif +} + + +/** + \brief Invalidate D-Cache + \details Invalidates D-Cache + */ +__STATIC_FORCEINLINE void SCB_InvalidateDCache (void) +{ + #if defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U) + uint32_t ccsidr; + uint32_t sets; + uint32_t ways; + + SCB->CSSELR = 0U; /* select Level 1 data cache */ + __DSB(); + + ccsidr = SCB->CCSIDR; + + /* invalidate D-Cache */ + sets = (uint32_t)(CCSIDR_SETS(ccsidr)); + do { + ways = (uint32_t)(CCSIDR_WAYS(ccsidr)); + do { + SCB->DCISW = (((sets << SCB_DCISW_SET_Pos) & SCB_DCISW_SET_Msk) | + ((ways << SCB_DCISW_WAY_Pos) & SCB_DCISW_WAY_Msk) ); + #if defined ( __CC_ARM ) + __schedule_barrier(); + #endif + } while (ways-- != 0U); + } while(sets-- != 0U); + + __DSB(); + __ISB(); + #endif +} + + +/** + \brief Clean D-Cache + \details Cleans D-Cache + */ +__STATIC_FORCEINLINE void SCB_CleanDCache (void) +{ + #if defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U) + uint32_t ccsidr; + uint32_t sets; + uint32_t ways; + + SCB->CSSELR = 0U; /* select Level 1 data cache */ + __DSB(); + + ccsidr = SCB->CCSIDR; + + /* clean D-Cache */ + sets = (uint32_t)(CCSIDR_SETS(ccsidr)); + do { + ways = (uint32_t)(CCSIDR_WAYS(ccsidr)); + do { + SCB->DCCSW = (((sets << SCB_DCCSW_SET_Pos) & SCB_DCCSW_SET_Msk) | + ((ways << SCB_DCCSW_WAY_Pos) & SCB_DCCSW_WAY_Msk) ); + #if defined ( __CC_ARM ) + __schedule_barrier(); + #endif + } while (ways-- != 0U); + } while(sets-- != 0U); + + __DSB(); + __ISB(); + #endif +} + + +/** + \brief Clean & Invalidate D-Cache + \details Cleans and Invalidates D-Cache + */ +__STATIC_FORCEINLINE void SCB_CleanInvalidateDCache (void) +{ + #if defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U) + uint32_t ccsidr; + uint32_t sets; + uint32_t ways; + + SCB->CSSELR = 0U; /* select Level 1 data cache */ + __DSB(); + + ccsidr = SCB->CCSIDR; + + /* clean & invalidate D-Cache */ + sets = (uint32_t)(CCSIDR_SETS(ccsidr)); + do { + ways = (uint32_t)(CCSIDR_WAYS(ccsidr)); + do { + SCB->DCCISW = (((sets << SCB_DCCISW_SET_Pos) & SCB_DCCISW_SET_Msk) | + ((ways << SCB_DCCISW_WAY_Pos) & SCB_DCCISW_WAY_Msk) ); + #if defined ( __CC_ARM ) + __schedule_barrier(); + #endif + } while (ways-- != 0U); + } while(sets-- != 0U); + + __DSB(); + __ISB(); + #endif +} + + +/** + \brief D-Cache Invalidate by address + \details Invalidates D-Cache for the given address. + D-Cache is invalidated starting from a 32 byte aligned address in 32 byte granularity. + D-Cache memory blocks which are part of given address + given size are invalidated. + \param[in] addr address + \param[in] dsize size of memory block (in number of bytes) +*/ +__STATIC_FORCEINLINE void SCB_InvalidateDCache_by_Addr (volatile void *addr, int32_t dsize) +{ + #if defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U) + if ( dsize > 0 ) { + int32_t op_size = dsize + (((uint32_t)addr) & (__SCB_DCACHE_LINE_SIZE - 1U)); + uint32_t op_addr = (uint32_t)addr /* & ~(__SCB_DCACHE_LINE_SIZE - 1U) */; + + __DSB(); + + do { + SCB->DCIMVAC = op_addr; /* register accepts only 32byte aligned values, only bits 31..5 are valid */ + op_addr += __SCB_DCACHE_LINE_SIZE; + op_size -= __SCB_DCACHE_LINE_SIZE; + } while ( op_size > 0 ); + + __DSB(); + __ISB(); + } + #endif +} + + +/** + \brief D-Cache Clean by address + \details Cleans D-Cache for the given address + D-Cache is cleaned starting from a 32 byte aligned address in 32 byte granularity. + D-Cache memory blocks which are part of given address + given size are cleaned. + \param[in] addr address + \param[in] dsize size of memory block (in number of bytes) +*/ +__STATIC_FORCEINLINE void SCB_CleanDCache_by_Addr (volatile void *addr, int32_t dsize) +{ + #if defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U) + if ( dsize > 0 ) { + int32_t op_size = dsize + (((uint32_t)addr) & (__SCB_DCACHE_LINE_SIZE - 1U)); + uint32_t op_addr = (uint32_t)addr /* & ~(__SCB_DCACHE_LINE_SIZE - 1U) */; + + __DSB(); + + do { + SCB->DCCMVAC = op_addr; /* register accepts only 32byte aligned values, only bits 31..5 are valid */ + op_addr += __SCB_DCACHE_LINE_SIZE; + op_size -= __SCB_DCACHE_LINE_SIZE; + } while ( op_size > 0 ); + + __DSB(); + __ISB(); + } + #endif +} + + +/** + \brief D-Cache Clean and Invalidate by address + \details Cleans and invalidates D_Cache for the given address + D-Cache is cleaned and invalidated starting from a 32 byte aligned address in 32 byte granularity. + D-Cache memory blocks which are part of given address + given size are cleaned and invalidated. + \param[in] addr address (aligned to 32-byte boundary) + \param[in] dsize size of memory block (in number of bytes) +*/ +__STATIC_FORCEINLINE void SCB_CleanInvalidateDCache_by_Addr (volatile void *addr, int32_t dsize) +{ + #if defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U) + if ( dsize > 0 ) { + int32_t op_size = dsize + (((uint32_t)addr) & (__SCB_DCACHE_LINE_SIZE - 1U)); + uint32_t op_addr = (uint32_t)addr /* & ~(__SCB_DCACHE_LINE_SIZE - 1U) */; + + __DSB(); + + do { + SCB->DCCIMVAC = op_addr; /* register accepts only 32byte aligned values, only bits 31..5 are valid */ + op_addr += __SCB_DCACHE_LINE_SIZE; + op_size -= __SCB_DCACHE_LINE_SIZE; + } while ( op_size > 0 ); + + __DSB(); + __ISB(); + } + #endif +} + +/*@} end of CMSIS_Core_CacheFunctions */ + +#endif /* ARM_CACHEL1_ARMV7_H */ diff --git a/bsp/renesas/ra8m1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/cmsis_armcc.h b/bsp/renesas/ra8m1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/cmsis_armcc.h new file mode 100644 index 000000000000..a955d4713911 --- /dev/null +++ b/bsp/renesas/ra8m1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/cmsis_armcc.h @@ -0,0 +1,888 @@ +/**************************************************************************//** + * @file cmsis_armcc.h + * @brief CMSIS compiler ARMCC (Arm Compiler 5) header file + * @version V5.3.2 + * @date 27. May 2021 + ******************************************************************************/ +/* + * Copyright (c) 2009-2021 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef __CMSIS_ARMCC_H +#define __CMSIS_ARMCC_H + + +#if defined(__ARMCC_VERSION) && (__ARMCC_VERSION < 400677) + #error "Please use Arm Compiler Toolchain V4.0.677 or later!" +#endif + +/* CMSIS compiler control architecture macros */ +#if ((defined (__TARGET_ARCH_6_M ) && (__TARGET_ARCH_6_M == 1)) || \ + (defined (__TARGET_ARCH_6S_M ) && (__TARGET_ARCH_6S_M == 1)) ) + #define __ARM_ARCH_6M__ 1 +#endif + +#if (defined (__TARGET_ARCH_7_M ) && (__TARGET_ARCH_7_M == 1)) + #define __ARM_ARCH_7M__ 1 +#endif + +#if (defined (__TARGET_ARCH_7E_M) && (__TARGET_ARCH_7E_M == 1)) + #define __ARM_ARCH_7EM__ 1 +#endif + + /* __ARM_ARCH_8M_BASE__ not applicable */ + /* __ARM_ARCH_8M_MAIN__ not applicable */ + /* __ARM_ARCH_8_1M_MAIN__ not applicable */ + +/* CMSIS compiler control DSP macros */ +#if ((defined (__ARM_ARCH_7EM__) && (__ARM_ARCH_7EM__ == 1)) ) + #define __ARM_FEATURE_DSP 1 +#endif + +/* CMSIS compiler specific defines */ +#ifndef __ASM + #define __ASM __asm +#endif +#ifndef __INLINE + #define __INLINE __inline +#endif +#ifndef __STATIC_INLINE + #define __STATIC_INLINE static __inline +#endif +#ifndef __STATIC_FORCEINLINE + #define __STATIC_FORCEINLINE static __forceinline +#endif +#ifndef __NO_RETURN + #define __NO_RETURN __declspec(noreturn) +#endif +#ifndef __USED + #define __USED __attribute__((used)) +#endif +#ifndef __WEAK + #define __WEAK __attribute__((weak)) +#endif +#ifndef __PACKED + #define __PACKED __attribute__((packed)) +#endif +#ifndef __PACKED_STRUCT + #define __PACKED_STRUCT __packed struct +#endif +#ifndef __PACKED_UNION + #define __PACKED_UNION __packed union +#endif +#ifndef __UNALIGNED_UINT32 /* deprecated */ + #define __UNALIGNED_UINT32(x) (*((__packed uint32_t *)(x))) +#endif +#ifndef __UNALIGNED_UINT16_WRITE + #define __UNALIGNED_UINT16_WRITE(addr, val) ((*((__packed uint16_t *)(addr))) = (val)) +#endif +#ifndef __UNALIGNED_UINT16_READ + #define __UNALIGNED_UINT16_READ(addr) (*((const __packed uint16_t *)(addr))) +#endif +#ifndef __UNALIGNED_UINT32_WRITE + #define __UNALIGNED_UINT32_WRITE(addr, val) ((*((__packed uint32_t *)(addr))) = (val)) +#endif +#ifndef __UNALIGNED_UINT32_READ + #define __UNALIGNED_UINT32_READ(addr) (*((const __packed uint32_t *)(addr))) +#endif +#ifndef __ALIGNED + #define __ALIGNED(x) __attribute__((aligned(x))) +#endif +#ifndef __RESTRICT + #define __RESTRICT __restrict +#endif +#ifndef __COMPILER_BARRIER + #define __COMPILER_BARRIER() __memory_changed() +#endif + +/* ######################### Startup and Lowlevel Init ######################## */ + +#ifndef __PROGRAM_START +#define __PROGRAM_START __main +#endif + +#ifndef __INITIAL_SP +#define __INITIAL_SP Image$$ARM_LIB_STACK$$ZI$$Limit +#endif + +#ifndef __STACK_LIMIT +#define __STACK_LIMIT Image$$ARM_LIB_STACK$$ZI$$Base +#endif + +#ifndef __VECTOR_TABLE +#define __VECTOR_TABLE __Vectors +#endif + +#ifndef __VECTOR_TABLE_ATTRIBUTE +#define __VECTOR_TABLE_ATTRIBUTE __attribute__((used, section("RESET"))) +#endif + +/* ########################## Core Instruction Access ######################### */ +/** \defgroup CMSIS_Core_InstructionInterface CMSIS Core Instruction Interface + Access to dedicated instructions + @{ +*/ + +/** + \brief No Operation + \details No Operation does nothing. This instruction can be used for code alignment purposes. + */ +#define __NOP __nop + + +/** + \brief Wait For Interrupt + \details Wait For Interrupt is a hint instruction that suspends execution until one of a number of events occurs. + */ +#define __WFI __wfi + + +/** + \brief Wait For Event + \details Wait For Event is a hint instruction that permits the processor to enter + a low-power state until one of a number of events occurs. + */ +#define __WFE __wfe + + +/** + \brief Send Event + \details Send Event is a hint instruction. It causes an event to be signaled to the CPU. + */ +#define __SEV __sev + + +/** + \brief Instruction Synchronization Barrier + \details Instruction Synchronization Barrier flushes the pipeline in the processor, + so that all instructions following the ISB are fetched from cache or memory, + after the instruction has been completed. + */ +#define __ISB() __isb(0xF) + +/** + \brief Data Synchronization Barrier + \details Acts as a special kind of Data Memory Barrier. + It completes when all explicit memory accesses before this instruction complete. + */ +#define __DSB() __dsb(0xF) + +/** + \brief Data Memory Barrier + \details Ensures the apparent order of the explicit memory operations before + and after the instruction, without ensuring their completion. + */ +#define __DMB() __dmb(0xF) + + +/** + \brief Reverse byte order (32 bit) + \details Reverses the byte order in unsigned integer value. For example, 0x12345678 becomes 0x78563412. + \param [in] value Value to reverse + \return Reversed value + */ +#define __REV __rev + + +/** + \brief Reverse byte order (16 bit) + \details Reverses the byte order within each halfword of a word. For example, 0x12345678 becomes 0x34127856. + \param [in] value Value to reverse + \return Reversed value + */ +#ifndef __NO_EMBEDDED_ASM +__attribute__((section(".rev16_text"))) __STATIC_INLINE __ASM uint32_t __REV16(uint32_t value) +{ + rev16 r0, r0 + bx lr +} +#endif + + +/** + \brief Reverse byte order (16 bit) + \details Reverses the byte order in a 16-bit value and returns the signed 16-bit result. For example, 0x0080 becomes 0x8000. + \param [in] value Value to reverse + \return Reversed value + */ +#ifndef __NO_EMBEDDED_ASM +__attribute__((section(".revsh_text"))) __STATIC_INLINE __ASM int16_t __REVSH(int16_t value) +{ + revsh r0, r0 + bx lr +} +#endif + + +/** + \brief Rotate Right in unsigned value (32 bit) + \details Rotate Right (immediate) provides the value of the contents of a register rotated by a variable number of bits. + \param [in] op1 Value to rotate + \param [in] op2 Number of Bits to rotate + \return Rotated value + */ +#define __ROR __ror + + +/** + \brief Breakpoint + \details Causes the processor to enter Debug state. + Debug tools can use this to investigate system state when the instruction at a particular address is reached. + \param [in] value is ignored by the processor. + If required, a debugger can use it to store additional information about the breakpoint. + */ +#define __BKPT(value) __breakpoint(value) + + +/** + \brief Reverse bit order of value + \details Reverses the bit order of the given value. + \param [in] value Value to reverse + \return Reversed value + */ +#if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__) && (__ARM_ARCH_7EM__ == 1)) ) + #define __RBIT __rbit +#else +__attribute__((always_inline)) __STATIC_INLINE uint32_t __RBIT(uint32_t value) +{ + uint32_t result; + uint32_t s = (4U /*sizeof(v)*/ * 8U) - 1U; /* extra shift needed at end */ + + result = value; /* r will be reversed bits of v; first get LSB of v */ + for (value >>= 1U; value != 0U; value >>= 1U) + { + result <<= 1U; + result |= value & 1U; + s--; + } + result <<= s; /* shift when v's highest bits are zero */ + return result; +} +#endif + + +/** + \brief Count leading zeros + \details Counts the number of leading zeros of a data value. + \param [in] value Value to count the leading zeros + \return number of leading zeros in value + */ +#define __CLZ __clz + + +#if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__) && (__ARM_ARCH_7EM__ == 1)) ) + +/** + \brief LDR Exclusive (8 bit) + \details Executes a exclusive LDR instruction for 8 bit value. + \param [in] ptr Pointer to data + \return value of type uint8_t at (*ptr) + */ +#if defined(__ARMCC_VERSION) && (__ARMCC_VERSION < 5060020) + #define __LDREXB(ptr) ((uint8_t ) __ldrex(ptr)) +#else + #define __LDREXB(ptr) _Pragma("push") _Pragma("diag_suppress 3731") ((uint8_t ) __ldrex(ptr)) _Pragma("pop") +#endif + + +/** + \brief LDR Exclusive (16 bit) + \details Executes a exclusive LDR instruction for 16 bit values. + \param [in] ptr Pointer to data + \return value of type uint16_t at (*ptr) + */ +#if defined(__ARMCC_VERSION) && (__ARMCC_VERSION < 5060020) + #define __LDREXH(ptr) ((uint16_t) __ldrex(ptr)) +#else + #define __LDREXH(ptr) _Pragma("push") _Pragma("diag_suppress 3731") ((uint16_t) __ldrex(ptr)) _Pragma("pop") +#endif + + +/** + \brief LDR Exclusive (32 bit) + \details Executes a exclusive LDR instruction for 32 bit values. + \param [in] ptr Pointer to data + \return value of type uint32_t at (*ptr) + */ +#if defined(__ARMCC_VERSION) && (__ARMCC_VERSION < 5060020) + #define __LDREXW(ptr) ((uint32_t ) __ldrex(ptr)) +#else + #define __LDREXW(ptr) _Pragma("push") _Pragma("diag_suppress 3731") ((uint32_t ) __ldrex(ptr)) _Pragma("pop") +#endif + + +/** + \brief STR Exclusive (8 bit) + \details Executes a exclusive STR instruction for 8 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + \return 0 Function succeeded + \return 1 Function failed + */ +#if defined(__ARMCC_VERSION) && (__ARMCC_VERSION < 5060020) + #define __STREXB(value, ptr) __strex(value, ptr) +#else + #define __STREXB(value, ptr) _Pragma("push") _Pragma("diag_suppress 3731") __strex(value, ptr) _Pragma("pop") +#endif + + +/** + \brief STR Exclusive (16 bit) + \details Executes a exclusive STR instruction for 16 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + \return 0 Function succeeded + \return 1 Function failed + */ +#if defined(__ARMCC_VERSION) && (__ARMCC_VERSION < 5060020) + #define __STREXH(value, ptr) __strex(value, ptr) +#else + #define __STREXH(value, ptr) _Pragma("push") _Pragma("diag_suppress 3731") __strex(value, ptr) _Pragma("pop") +#endif + + +/** + \brief STR Exclusive (32 bit) + \details Executes a exclusive STR instruction for 32 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + \return 0 Function succeeded + \return 1 Function failed + */ +#if defined(__ARMCC_VERSION) && (__ARMCC_VERSION < 5060020) + #define __STREXW(value, ptr) __strex(value, ptr) +#else + #define __STREXW(value, ptr) _Pragma("push") _Pragma("diag_suppress 3731") __strex(value, ptr) _Pragma("pop") +#endif + + +/** + \brief Remove the exclusive lock + \details Removes the exclusive lock which is created by LDREX. + */ +#define __CLREX __clrex + + +/** + \brief Signed Saturate + \details Saturates a signed value. + \param [in] value Value to be saturated + \param [in] sat Bit position to saturate to (1..32) + \return Saturated value + */ +#define __SSAT __ssat + + +/** + \brief Unsigned Saturate + \details Saturates an unsigned value. + \param [in] value Value to be saturated + \param [in] sat Bit position to saturate to (0..31) + \return Saturated value + */ +#define __USAT __usat + + +/** + \brief Rotate Right with Extend (32 bit) + \details Moves each bit of a bitstring right by one bit. + The carry input is shifted in at the left end of the bitstring. + \param [in] value Value to rotate + \return Rotated value + */ +#ifndef __NO_EMBEDDED_ASM +__attribute__((section(".rrx_text"))) __STATIC_INLINE __ASM uint32_t __RRX(uint32_t value) +{ + rrx r0, r0 + bx lr +} +#endif + + +/** + \brief LDRT Unprivileged (8 bit) + \details Executes a Unprivileged LDRT instruction for 8 bit value. + \param [in] ptr Pointer to data + \return value of type uint8_t at (*ptr) + */ +#define __LDRBT(ptr) ((uint8_t ) __ldrt(ptr)) + + +/** + \brief LDRT Unprivileged (16 bit) + \details Executes a Unprivileged LDRT instruction for 16 bit values. + \param [in] ptr Pointer to data + \return value of type uint16_t at (*ptr) + */ +#define __LDRHT(ptr) ((uint16_t) __ldrt(ptr)) + + +/** + \brief LDRT Unprivileged (32 bit) + \details Executes a Unprivileged LDRT instruction for 32 bit values. + \param [in] ptr Pointer to data + \return value of type uint32_t at (*ptr) + */ +#define __LDRT(ptr) ((uint32_t ) __ldrt(ptr)) + + +/** + \brief STRT Unprivileged (8 bit) + \details Executes a Unprivileged STRT instruction for 8 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + */ +#define __STRBT(value, ptr) __strt(value, ptr) + + +/** + \brief STRT Unprivileged (16 bit) + \details Executes a Unprivileged STRT instruction for 16 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + */ +#define __STRHT(value, ptr) __strt(value, ptr) + + +/** + \brief STRT Unprivileged (32 bit) + \details Executes a Unprivileged STRT instruction for 32 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + */ +#define __STRT(value, ptr) __strt(value, ptr) + +#else /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__) && (__ARM_ARCH_7EM__ == 1)) ) */ + +/** + \brief Signed Saturate + \details Saturates a signed value. + \param [in] value Value to be saturated + \param [in] sat Bit position to saturate to (1..32) + \return Saturated value + */ +__attribute__((always_inline)) __STATIC_INLINE int32_t __SSAT(int32_t val, uint32_t sat) +{ + if ((sat >= 1U) && (sat <= 32U)) + { + const int32_t max = (int32_t)((1U << (sat - 1U)) - 1U); + const int32_t min = -1 - max ; + if (val > max) + { + return max; + } + else if (val < min) + { + return min; + } + } + return val; +} + +/** + \brief Unsigned Saturate + \details Saturates an unsigned value. + \param [in] value Value to be saturated + \param [in] sat Bit position to saturate to (0..31) + \return Saturated value + */ +__attribute__((always_inline)) __STATIC_INLINE uint32_t __USAT(int32_t val, uint32_t sat) +{ + if (sat <= 31U) + { + const uint32_t max = ((1U << sat) - 1U); + if (val > (int32_t)max) + { + return max; + } + else if (val < 0) + { + return 0U; + } + } + return (uint32_t)val; +} + +#endif /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__) && (__ARM_ARCH_7EM__ == 1)) ) */ + +/*@}*/ /* end of group CMSIS_Core_InstructionInterface */ + + +/* ########################### Core Function Access ########################### */ +/** \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_RegAccFunctions CMSIS Core Register Access Functions + @{ + */ + +/** + \brief Enable IRQ Interrupts + \details Enables IRQ interrupts by clearing special-purpose register PRIMASK. + Can only be executed in Privileged modes. + */ +/* intrinsic void __enable_irq(); */ + + +/** + \brief Disable IRQ Interrupts + \details Disables IRQ interrupts by setting special-purpose register PRIMASK. + Can only be executed in Privileged modes. + */ +/* intrinsic void __disable_irq(); */ + +/** + \brief Get Control Register + \details Returns the content of the Control Register. + \return Control Register value + */ +__STATIC_INLINE uint32_t __get_CONTROL(void) +{ + register uint32_t __regControl __ASM("control"); + return(__regControl); +} + + +/** + \brief Set Control Register + \details Writes the given value to the Control Register. + \param [in] control Control Register value to set + */ +__STATIC_INLINE void __set_CONTROL(uint32_t control) +{ + register uint32_t __regControl __ASM("control"); + __regControl = control; + __ISB(); +} + + +/** + \brief Get IPSR Register + \details Returns the content of the IPSR Register. + \return IPSR Register value + */ +__STATIC_INLINE uint32_t __get_IPSR(void) +{ + register uint32_t __regIPSR __ASM("ipsr"); + return(__regIPSR); +} + + +/** + \brief Get APSR Register + \details Returns the content of the APSR Register. + \return APSR Register value + */ +__STATIC_INLINE uint32_t __get_APSR(void) +{ + register uint32_t __regAPSR __ASM("apsr"); + return(__regAPSR); +} + + +/** + \brief Get xPSR Register + \details Returns the content of the xPSR Register. + \return xPSR Register value + */ +__STATIC_INLINE uint32_t __get_xPSR(void) +{ + register uint32_t __regXPSR __ASM("xpsr"); + return(__regXPSR); +} + + +/** + \brief Get Process Stack Pointer + \details Returns the current value of the Process Stack Pointer (PSP). + \return PSP Register value + */ +__STATIC_INLINE uint32_t __get_PSP(void) +{ + register uint32_t __regProcessStackPointer __ASM("psp"); + return(__regProcessStackPointer); +} + + +/** + \brief Set Process Stack Pointer + \details Assigns the given value to the Process Stack Pointer (PSP). + \param [in] topOfProcStack Process Stack Pointer value to set + */ +__STATIC_INLINE void __set_PSP(uint32_t topOfProcStack) +{ + register uint32_t __regProcessStackPointer __ASM("psp"); + __regProcessStackPointer = topOfProcStack; +} + + +/** + \brief Get Main Stack Pointer + \details Returns the current value of the Main Stack Pointer (MSP). + \return MSP Register value + */ +__STATIC_INLINE uint32_t __get_MSP(void) +{ + register uint32_t __regMainStackPointer __ASM("msp"); + return(__regMainStackPointer); +} + + +/** + \brief Set Main Stack Pointer + \details Assigns the given value to the Main Stack Pointer (MSP). + \param [in] topOfMainStack Main Stack Pointer value to set + */ +__STATIC_INLINE void __set_MSP(uint32_t topOfMainStack) +{ + register uint32_t __regMainStackPointer __ASM("msp"); + __regMainStackPointer = topOfMainStack; +} + + +/** + \brief Get Priority Mask + \details Returns the current state of the priority mask bit from the Priority Mask Register. + \return Priority Mask value + */ +__STATIC_INLINE uint32_t __get_PRIMASK(void) +{ + register uint32_t __regPriMask __ASM("primask"); + return(__regPriMask); +} + + +/** + \brief Set Priority Mask + \details Assigns the given value to the Priority Mask Register. + \param [in] priMask Priority Mask + */ +__STATIC_INLINE void __set_PRIMASK(uint32_t priMask) +{ + register uint32_t __regPriMask __ASM("primask"); + __regPriMask = (priMask); +} + + +#if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__) && (__ARM_ARCH_7EM__ == 1)) ) + +/** + \brief Enable FIQ + \details Enables FIQ interrupts by clearing special-purpose register FAULTMASK. + Can only be executed in Privileged modes. + */ +#define __enable_fault_irq __enable_fiq + + +/** + \brief Disable FIQ + \details Disables FIQ interrupts by setting special-purpose register FAULTMASK. + Can only be executed in Privileged modes. + */ +#define __disable_fault_irq __disable_fiq + + +/** + \brief Get Base Priority + \details Returns the current value of the Base Priority register. + \return Base Priority register value + */ +__STATIC_INLINE uint32_t __get_BASEPRI(void) +{ + register uint32_t __regBasePri __ASM("basepri"); + return(__regBasePri); +} + + +/** + \brief Set Base Priority + \details Assigns the given value to the Base Priority register. + \param [in] basePri Base Priority value to set + */ +__STATIC_INLINE void __set_BASEPRI(uint32_t basePri) +{ + register uint32_t __regBasePri __ASM("basepri"); + __regBasePri = (basePri & 0xFFU); +} + + +/** + \brief Set Base Priority with condition + \details Assigns the given value to the Base Priority register only if BASEPRI masking is disabled, + or the new value increases the BASEPRI priority level. + \param [in] basePri Base Priority value to set + */ +__STATIC_INLINE void __set_BASEPRI_MAX(uint32_t basePri) +{ + register uint32_t __regBasePriMax __ASM("basepri_max"); + __regBasePriMax = (basePri & 0xFFU); +} + + +/** + \brief Get Fault Mask + \details Returns the current value of the Fault Mask register. + \return Fault Mask register value + */ +__STATIC_INLINE uint32_t __get_FAULTMASK(void) +{ + register uint32_t __regFaultMask __ASM("faultmask"); + return(__regFaultMask); +} + + +/** + \brief Set Fault Mask + \details Assigns the given value to the Fault Mask register. + \param [in] faultMask Fault Mask value to set + */ +__STATIC_INLINE void __set_FAULTMASK(uint32_t faultMask) +{ + register uint32_t __regFaultMask __ASM("faultmask"); + __regFaultMask = (faultMask & (uint32_t)1U); +} + +#endif /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__) && (__ARM_ARCH_7EM__ == 1)) ) */ + + +/** + \brief Get FPSCR + \details Returns the current value of the Floating Point Status/Control register. + \return Floating Point Status/Control register value + */ +__STATIC_INLINE uint32_t __get_FPSCR(void) +{ +#if ((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \ + (defined (__FPU_USED ) && (__FPU_USED == 1U)) ) + register uint32_t __regfpscr __ASM("fpscr"); + return(__regfpscr); +#else + return(0U); +#endif +} + + +/** + \brief Set FPSCR + \details Assigns the given value to the Floating Point Status/Control register. + \param [in] fpscr Floating Point Status/Control value to set + */ +__STATIC_INLINE void __set_FPSCR(uint32_t fpscr) +{ +#if ((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \ + (defined (__FPU_USED ) && (__FPU_USED == 1U)) ) + register uint32_t __regfpscr __ASM("fpscr"); + __regfpscr = (fpscr); +#else + (void)fpscr; +#endif +} + + +/*@} end of CMSIS_Core_RegAccFunctions */ + + +/* ################### Compiler specific Intrinsics ########################### */ +/** \defgroup CMSIS_SIMD_intrinsics CMSIS SIMD Intrinsics + Access to dedicated SIMD instructions + @{ +*/ + +#if ((defined (__ARM_ARCH_7EM__) && (__ARM_ARCH_7EM__ == 1)) ) + +#define __SADD8 __sadd8 +#define __QADD8 __qadd8 +#define __SHADD8 __shadd8 +#define __UADD8 __uadd8 +#define __UQADD8 __uqadd8 +#define __UHADD8 __uhadd8 +#define __SSUB8 __ssub8 +#define __QSUB8 __qsub8 +#define __SHSUB8 __shsub8 +#define __USUB8 __usub8 +#define __UQSUB8 __uqsub8 +#define __UHSUB8 __uhsub8 +#define __SADD16 __sadd16 +#define __QADD16 __qadd16 +#define __SHADD16 __shadd16 +#define __UADD16 __uadd16 +#define __UQADD16 __uqadd16 +#define __UHADD16 __uhadd16 +#define __SSUB16 __ssub16 +#define __QSUB16 __qsub16 +#define __SHSUB16 __shsub16 +#define __USUB16 __usub16 +#define __UQSUB16 __uqsub16 +#define __UHSUB16 __uhsub16 +#define __SASX __sasx +#define __QASX __qasx +#define __SHASX __shasx +#define __UASX __uasx +#define __UQASX __uqasx +#define __UHASX __uhasx +#define __SSAX __ssax +#define __QSAX __qsax +#define __SHSAX __shsax +#define __USAX __usax +#define __UQSAX __uqsax +#define __UHSAX __uhsax +#define __USAD8 __usad8 +#define __USADA8 __usada8 +#define __SSAT16 __ssat16 +#define __USAT16 __usat16 +#define __UXTB16 __uxtb16 +#define __UXTAB16 __uxtab16 +#define __SXTB16 __sxtb16 +#define __SXTAB16 __sxtab16 +#define __SMUAD __smuad +#define __SMUADX __smuadx +#define __SMLAD __smlad +#define __SMLADX __smladx +#define __SMLALD __smlald +#define __SMLALDX __smlaldx +#define __SMUSD __smusd +#define __SMUSDX __smusdx +#define __SMLSD __smlsd +#define __SMLSDX __smlsdx +#define __SMLSLD __smlsld +#define __SMLSLDX __smlsldx +#define __SEL __sel +#define __QADD __qadd +#define __QSUB __qsub + +#define __PKHBT(ARG1,ARG2,ARG3) ( ((((uint32_t)(ARG1)) ) & 0x0000FFFFUL) | \ + ((((uint32_t)(ARG2)) << (ARG3)) & 0xFFFF0000UL) ) + +#define __PKHTB(ARG1,ARG2,ARG3) ( ((((uint32_t)(ARG1)) ) & 0xFFFF0000UL) | \ + ((((uint32_t)(ARG2)) >> (ARG3)) & 0x0000FFFFUL) ) + +#define __SMMLA(ARG1,ARG2,ARG3) ( (int32_t)((((int64_t)(ARG1) * (ARG2)) + \ + ((int64_t)(ARG3) << 32U) ) >> 32U)) + +#define __SXTB16_RORn(ARG1, ARG2) __SXTB16(__ROR(ARG1, ARG2)) + +#define __SXTAB16_RORn(ARG1, ARG2, ARG3) __SXTAB16(ARG1, __ROR(ARG2, ARG3)) + +#endif /* ((defined (__ARM_ARCH_7EM__) && (__ARM_ARCH_7EM__ == 1)) ) */ +/*@} end of group CMSIS_SIMD_intrinsics */ + + +#endif /* __CMSIS_ARMCC_H */ diff --git a/bsp/renesas/ra8m1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/cmsis_armclang.h b/bsp/renesas/ra8m1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/cmsis_armclang.h new file mode 100644 index 000000000000..691141774773 --- /dev/null +++ b/bsp/renesas/ra8m1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/cmsis_armclang.h @@ -0,0 +1,1503 @@ +/**************************************************************************//** + * @file cmsis_armclang.h + * @brief CMSIS compiler armclang (Arm Compiler 6) header file + * @version V5.4.3 + * @date 27. May 2021 + ******************************************************************************/ +/* + * Copyright (c) 2009-2021 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/*lint -esym(9058, IRQn)*/ /* disable MISRA 2012 Rule 2.4 for IRQn */ + +#ifndef __CMSIS_ARMCLANG_H +#define __CMSIS_ARMCLANG_H + +#pragma clang system_header /* treat file as system include file */ + +/* CMSIS compiler specific defines */ +#ifndef __ASM + #define __ASM __asm +#endif +#ifndef __INLINE + #define __INLINE __inline +#endif +#ifndef __STATIC_INLINE + #define __STATIC_INLINE static __inline +#endif +#ifndef __STATIC_FORCEINLINE + #define __STATIC_FORCEINLINE __attribute__((always_inline)) static __inline +#endif +#ifndef __NO_RETURN + #define __NO_RETURN __attribute__((__noreturn__)) +#endif +#ifndef __USED + #define __USED __attribute__((used)) +#endif +#ifndef __WEAK + #define __WEAK __attribute__((weak)) +#endif +#ifndef __PACKED + #define __PACKED __attribute__((packed, aligned(1))) +#endif +#ifndef __PACKED_STRUCT + #define __PACKED_STRUCT struct __attribute__((packed, aligned(1))) +#endif +#ifndef __PACKED_UNION + #define __PACKED_UNION union __attribute__((packed, aligned(1))) +#endif +#ifndef __UNALIGNED_UINT32 /* deprecated */ + #pragma clang diagnostic push + #pragma clang diagnostic ignored "-Wpacked" +/*lint -esym(9058, T_UINT32)*/ /* disable MISRA 2012 Rule 2.4 for T_UINT32 */ + struct __attribute__((packed)) T_UINT32 { uint32_t v; }; + #pragma clang diagnostic pop + #define __UNALIGNED_UINT32(x) (((struct T_UINT32 *)(x))->v) +#endif +#ifndef __UNALIGNED_UINT16_WRITE + #pragma clang diagnostic push + #pragma clang diagnostic ignored "-Wpacked" +/*lint -esym(9058, T_UINT16_WRITE)*/ /* disable MISRA 2012 Rule 2.4 for T_UINT16_WRITE */ + __PACKED_STRUCT T_UINT16_WRITE { uint16_t v; }; + #pragma clang diagnostic pop + #define __UNALIGNED_UINT16_WRITE(addr, val) (void)((((struct T_UINT16_WRITE *)(void *)(addr))->v) = (val)) +#endif +#ifndef __UNALIGNED_UINT16_READ + #pragma clang diagnostic push + #pragma clang diagnostic ignored "-Wpacked" +/*lint -esym(9058, T_UINT16_READ)*/ /* disable MISRA 2012 Rule 2.4 for T_UINT16_READ */ + __PACKED_STRUCT T_UINT16_READ { uint16_t v; }; + #pragma clang diagnostic pop + #define __UNALIGNED_UINT16_READ(addr) (((const struct T_UINT16_READ *)(const void *)(addr))->v) +#endif +#ifndef __UNALIGNED_UINT32_WRITE + #pragma clang diagnostic push + #pragma clang diagnostic ignored "-Wpacked" +/*lint -esym(9058, T_UINT32_WRITE)*/ /* disable MISRA 2012 Rule 2.4 for T_UINT32_WRITE */ + __PACKED_STRUCT T_UINT32_WRITE { uint32_t v; }; + #pragma clang diagnostic pop + #define __UNALIGNED_UINT32_WRITE(addr, val) (void)((((struct T_UINT32_WRITE *)(void *)(addr))->v) = (val)) +#endif +#ifndef __UNALIGNED_UINT32_READ + #pragma clang diagnostic push + #pragma clang diagnostic ignored "-Wpacked" +/*lint -esym(9058, T_UINT32_READ)*/ /* disable MISRA 2012 Rule 2.4 for T_UINT32_READ */ + __PACKED_STRUCT T_UINT32_READ { uint32_t v; }; + #pragma clang diagnostic pop + #define __UNALIGNED_UINT32_READ(addr) (((const struct T_UINT32_READ *)(const void *)(addr))->v) +#endif +#ifndef __ALIGNED + #define __ALIGNED(x) __attribute__((aligned(x))) +#endif +#ifndef __RESTRICT + #define __RESTRICT __restrict +#endif +#ifndef __COMPILER_BARRIER + #define __COMPILER_BARRIER() __ASM volatile("":::"memory") +#endif + +/* ######################### Startup and Lowlevel Init ######################## */ + +#ifndef __PROGRAM_START +#define __PROGRAM_START __main +#endif + +#ifndef __INITIAL_SP +#define __INITIAL_SP Image$$ARM_LIB_STACK$$ZI$$Limit +#endif + +#ifndef __STACK_LIMIT +#define __STACK_LIMIT Image$$ARM_LIB_STACK$$ZI$$Base +#endif + +#ifndef __VECTOR_TABLE +#define __VECTOR_TABLE __Vectors +#endif + +#ifndef __VECTOR_TABLE_ATTRIBUTE +#define __VECTOR_TABLE_ATTRIBUTE __attribute__((used, section("RESET"))) +#endif + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +#ifndef __STACK_SEAL +#define __STACK_SEAL Image$$STACKSEAL$$ZI$$Base +#endif + +#ifndef __TZ_STACK_SEAL_SIZE +#define __TZ_STACK_SEAL_SIZE 8U +#endif + +#ifndef __TZ_STACK_SEAL_VALUE +#define __TZ_STACK_SEAL_VALUE 0xFEF5EDA5FEF5EDA5ULL +#endif + + +__STATIC_FORCEINLINE void __TZ_set_STACKSEAL_S (uint32_t* stackTop) { + *((uint64_t *)stackTop) = __TZ_STACK_SEAL_VALUE; +} +#endif + + +/* ########################## Core Instruction Access ######################### */ +/** \defgroup CMSIS_Core_InstructionInterface CMSIS Core Instruction Interface + Access to dedicated instructions + @{ +*/ + +/* Define macros for porting to both thumb1 and thumb2. + * For thumb1, use low register (r0-r7), specified by constraint "l" + * Otherwise, use general registers, specified by constraint "r" */ +#if defined (__thumb__) && !defined (__thumb2__) +#define __CMSIS_GCC_OUT_REG(r) "=l" (r) +#define __CMSIS_GCC_RW_REG(r) "+l" (r) +#define __CMSIS_GCC_USE_REG(r) "l" (r) +#else +#define __CMSIS_GCC_OUT_REG(r) "=r" (r) +#define __CMSIS_GCC_RW_REG(r) "+r" (r) +#define __CMSIS_GCC_USE_REG(r) "r" (r) +#endif + +/** + \brief No Operation + \details No Operation does nothing. This instruction can be used for code alignment purposes. + */ +#define __NOP __builtin_arm_nop + +/** + \brief Wait For Interrupt + \details Wait For Interrupt is a hint instruction that suspends execution until one of a number of events occurs. + */ +#define __WFI __builtin_arm_wfi + + +/** + \brief Wait For Event + \details Wait For Event is a hint instruction that permits the processor to enter + a low-power state until one of a number of events occurs. + */ +#define __WFE __builtin_arm_wfe + + +/** + \brief Send Event + \details Send Event is a hint instruction. It causes an event to be signaled to the CPU. + */ +#define __SEV __builtin_arm_sev + + +/** + \brief Instruction Synchronization Barrier + \details Instruction Synchronization Barrier flushes the pipeline in the processor, + so that all instructions following the ISB are fetched from cache or memory, + after the instruction has been completed. + */ +#define __ISB() __builtin_arm_isb(0xF) + +/** + \brief Data Synchronization Barrier + \details Acts as a special kind of Data Memory Barrier. + It completes when all explicit memory accesses before this instruction complete. + */ +#define __DSB() __builtin_arm_dsb(0xF) + + +/** + \brief Data Memory Barrier + \details Ensures the apparent order of the explicit memory operations before + and after the instruction, without ensuring their completion. + */ +#define __DMB() __builtin_arm_dmb(0xF) + + +/** + \brief Reverse byte order (32 bit) + \details Reverses the byte order in unsigned integer value. For example, 0x12345678 becomes 0x78563412. + \param [in] value Value to reverse + \return Reversed value + */ +#define __REV(value) __builtin_bswap32(value) + + +/** + \brief Reverse byte order (16 bit) + \details Reverses the byte order within each halfword of a word. For example, 0x12345678 becomes 0x34127856. + \param [in] value Value to reverse + \return Reversed value + */ +#define __REV16(value) __ROR(__REV(value), 16) + + +/** + \brief Reverse byte order (16 bit) + \details Reverses the byte order in a 16-bit value and returns the signed 16-bit result. For example, 0x0080 becomes 0x8000. + \param [in] value Value to reverse + \return Reversed value + */ +#define __REVSH(value) (int16_t)__builtin_bswap16(value) + + +/** + \brief Rotate Right in unsigned value (32 bit) + \details Rotate Right (immediate) provides the value of the contents of a register rotated by a variable number of bits. + \param [in] op1 Value to rotate + \param [in] op2 Number of Bits to rotate + \return Rotated value + */ +__STATIC_FORCEINLINE uint32_t __ROR(uint32_t op1, uint32_t op2) +{ + op2 %= 32U; + if (op2 == 0U) + { + return op1; + } + return (op1 >> op2) | (op1 << (32U - op2)); +} + + +/** + \brief Breakpoint + \details Causes the processor to enter Debug state. + Debug tools can use this to investigate system state when the instruction at a particular address is reached. + \param [in] value is ignored by the processor. + If required, a debugger can use it to store additional information about the breakpoint. + */ +#define __BKPT(value) __ASM volatile ("bkpt "#value) + + +/** + \brief Reverse bit order of value + \details Reverses the bit order of the given value. + \param [in] value Value to reverse + \return Reversed value + */ +#define __RBIT __builtin_arm_rbit + +/** + \brief Count leading zeros + \details Counts the number of leading zeros of a data value. + \param [in] value Value to count the leading zeros + \return number of leading zeros in value + */ +__STATIC_FORCEINLINE uint8_t __CLZ(uint32_t value) +{ + /* Even though __builtin_clz produces a CLZ instruction on ARM, formally + __builtin_clz(0) is undefined behaviour, so handle this case specially. + This guarantees ARM-compatible results if happening to compile on a non-ARM + target, and ensures the compiler doesn't decide to activate any + optimisations using the logic "value was passed to __builtin_clz, so it + is non-zero". + ARM Compiler 6.10 and possibly earlier will optimise this test away, leaving a + single CLZ instruction. + */ + if (value == 0U) + { + return 32U; + } + return __builtin_clz(value); +} + + +#if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) || \ + (defined (__ARM_ARCH_8_1M_MAIN__) && (__ARM_ARCH_8_1M_MAIN__ == 1)) ) + +/** + \brief LDR Exclusive (8 bit) + \details Executes a exclusive LDR instruction for 8 bit value. + \param [in] ptr Pointer to data + \return value of type uint8_t at (*ptr) + */ +#define __LDREXB (uint8_t)__builtin_arm_ldrex + + +/** + \brief LDR Exclusive (16 bit) + \details Executes a exclusive LDR instruction for 16 bit values. + \param [in] ptr Pointer to data + \return value of type uint16_t at (*ptr) + */ +#define __LDREXH (uint16_t)__builtin_arm_ldrex + + +/** + \brief LDR Exclusive (32 bit) + \details Executes a exclusive LDR instruction for 32 bit values. + \param [in] ptr Pointer to data + \return value of type uint32_t at (*ptr) + */ +#define __LDREXW (uint32_t)__builtin_arm_ldrex + + +/** + \brief STR Exclusive (8 bit) + \details Executes a exclusive STR instruction for 8 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + \return 0 Function succeeded + \return 1 Function failed + */ +#define __STREXB (uint32_t)__builtin_arm_strex + + +/** + \brief STR Exclusive (16 bit) + \details Executes a exclusive STR instruction for 16 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + \return 0 Function succeeded + \return 1 Function failed + */ +#define __STREXH (uint32_t)__builtin_arm_strex + + +/** + \brief STR Exclusive (32 bit) + \details Executes a exclusive STR instruction for 32 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + \return 0 Function succeeded + \return 1 Function failed + */ +#define __STREXW (uint32_t)__builtin_arm_strex + + +/** + \brief Remove the exclusive lock + \details Removes the exclusive lock which is created by LDREX. + */ +#define __CLREX __builtin_arm_clrex + +#endif /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) || \ + (defined (__ARM_ARCH_8_1M_MAIN__) && (__ARM_ARCH_8_1M_MAIN__ == 1)) ) */ + + +#if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8_1M_MAIN__) && (__ARM_ARCH_8_1M_MAIN__ == 1)) ) + +/** + \brief Signed Saturate + \details Saturates a signed value. + \param [in] value Value to be saturated + \param [in] sat Bit position to saturate to (1..32) + \return Saturated value + */ +#define __SSAT __builtin_arm_ssat + + +/** + \brief Unsigned Saturate + \details Saturates an unsigned value. + \param [in] value Value to be saturated + \param [in] sat Bit position to saturate to (0..31) + \return Saturated value + */ +#define __USAT __builtin_arm_usat + + +/** + \brief Rotate Right with Extend (32 bit) + \details Moves each bit of a bitstring right by one bit. + The carry input is shifted in at the left end of the bitstring. + \param [in] value Value to rotate + \return Rotated value + */ +__STATIC_FORCEINLINE uint32_t __RRX(uint32_t value) +{ + uint32_t result; + + __ASM volatile ("rrx %0, %1" : __CMSIS_GCC_OUT_REG (result) : __CMSIS_GCC_USE_REG (value) ); + return(result); +} + + +/** + \brief LDRT Unprivileged (8 bit) + \details Executes a Unprivileged LDRT instruction for 8 bit value. + \param [in] ptr Pointer to data + \return value of type uint8_t at (*ptr) + */ +__STATIC_FORCEINLINE uint8_t __LDRBT(volatile uint8_t *ptr) +{ + uint32_t result; + + __ASM volatile ("ldrbt %0, %1" : "=r" (result) : "Q" (*ptr) ); + return ((uint8_t) result); /* Add explicit type cast here */ +} + + +/** + \brief LDRT Unprivileged (16 bit) + \details Executes a Unprivileged LDRT instruction for 16 bit values. + \param [in] ptr Pointer to data + \return value of type uint16_t at (*ptr) + */ +__STATIC_FORCEINLINE uint16_t __LDRHT(volatile uint16_t *ptr) +{ + uint32_t result; + + __ASM volatile ("ldrht %0, %1" : "=r" (result) : "Q" (*ptr) ); + return ((uint16_t) result); /* Add explicit type cast here */ +} + + +/** + \brief LDRT Unprivileged (32 bit) + \details Executes a Unprivileged LDRT instruction for 32 bit values. + \param [in] ptr Pointer to data + \return value of type uint32_t at (*ptr) + */ +__STATIC_FORCEINLINE uint32_t __LDRT(volatile uint32_t *ptr) +{ + uint32_t result; + + __ASM volatile ("ldrt %0, %1" : "=r" (result) : "Q" (*ptr) ); + return(result); +} + + +/** + \brief STRT Unprivileged (8 bit) + \details Executes a Unprivileged STRT instruction for 8 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + */ +__STATIC_FORCEINLINE void __STRBT(uint8_t value, volatile uint8_t *ptr) +{ + __ASM volatile ("strbt %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) ); +} + + +/** + \brief STRT Unprivileged (16 bit) + \details Executes a Unprivileged STRT instruction for 16 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + */ +__STATIC_FORCEINLINE void __STRHT(uint16_t value, volatile uint16_t *ptr) +{ + __ASM volatile ("strht %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) ); +} + + +/** + \brief STRT Unprivileged (32 bit) + \details Executes a Unprivileged STRT instruction for 32 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + */ +__STATIC_FORCEINLINE void __STRT(uint32_t value, volatile uint32_t *ptr) +{ + __ASM volatile ("strt %1, %0" : "=Q" (*ptr) : "r" (value) ); +} + +#else /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8_1M_MAIN__) && (__ARM_ARCH_8_1M_MAIN__ == 1)) ) */ + +/** + \brief Signed Saturate + \details Saturates a signed value. + \param [in] value Value to be saturated + \param [in] sat Bit position to saturate to (1..32) + \return Saturated value + */ +__STATIC_FORCEINLINE int32_t __SSAT(int32_t val, uint32_t sat) +{ + if ((sat >= 1U) && (sat <= 32U)) + { + const int32_t max = (int32_t)((1U << (sat - 1U)) - 1U); + const int32_t min = -1 - max ; + if (val > max) + { + return max; + } + else if (val < min) + { + return min; + } + } + return val; +} + +/** + \brief Unsigned Saturate + \details Saturates an unsigned value. + \param [in] value Value to be saturated + \param [in] sat Bit position to saturate to (0..31) + \return Saturated value + */ +__STATIC_FORCEINLINE uint32_t __USAT(int32_t val, uint32_t sat) +{ + if (sat <= 31U) + { + const uint32_t max = ((1U << sat) - 1U); + if (val > (int32_t)max) + { + return max; + } + else if (val < 0) + { + return 0U; + } + } + return (uint32_t)val; +} + +#endif /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8_1M_MAIN__) && (__ARM_ARCH_8_1M_MAIN__ == 1)) ) */ + + +#if ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) || \ + (defined (__ARM_ARCH_8_1M_MAIN__) && (__ARM_ARCH_8_1M_MAIN__ == 1)) ) + +/** + \brief Load-Acquire (8 bit) + \details Executes a LDAB instruction for 8 bit value. + \param [in] ptr Pointer to data + \return value of type uint8_t at (*ptr) + */ +__STATIC_FORCEINLINE uint8_t __LDAB(volatile uint8_t *ptr) +{ + uint32_t result; + + __ASM volatile ("ldab %0, %1" : "=r" (result) : "Q" (*ptr) : "memory" ); + return ((uint8_t) result); +} + + +/** + \brief Load-Acquire (16 bit) + \details Executes a LDAH instruction for 16 bit values. + \param [in] ptr Pointer to data + \return value of type uint16_t at (*ptr) + */ +__STATIC_FORCEINLINE uint16_t __LDAH(volatile uint16_t *ptr) +{ + uint32_t result; + + __ASM volatile ("ldah %0, %1" : "=r" (result) : "Q" (*ptr) : "memory" ); + return ((uint16_t) result); +} + + +/** + \brief Load-Acquire (32 bit) + \details Executes a LDA instruction for 32 bit values. + \param [in] ptr Pointer to data + \return value of type uint32_t at (*ptr) + */ +__STATIC_FORCEINLINE uint32_t __LDA(volatile uint32_t *ptr) +{ + uint32_t result; + + __ASM volatile ("lda %0, %1" : "=r" (result) : "Q" (*ptr) : "memory" ); + return(result); +} + + +/** + \brief Store-Release (8 bit) + \details Executes a STLB instruction for 8 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + */ +__STATIC_FORCEINLINE void __STLB(uint8_t value, volatile uint8_t *ptr) +{ + __ASM volatile ("stlb %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) : "memory" ); +} + + +/** + \brief Store-Release (16 bit) + \details Executes a STLH instruction for 16 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + */ +__STATIC_FORCEINLINE void __STLH(uint16_t value, volatile uint16_t *ptr) +{ + __ASM volatile ("stlh %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) : "memory" ); +} + + +/** + \brief Store-Release (32 bit) + \details Executes a STL instruction for 32 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + */ +__STATIC_FORCEINLINE void __STL(uint32_t value, volatile uint32_t *ptr) +{ + __ASM volatile ("stl %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) : "memory" ); +} + + +/** + \brief Load-Acquire Exclusive (8 bit) + \details Executes a LDAB exclusive instruction for 8 bit value. + \param [in] ptr Pointer to data + \return value of type uint8_t at (*ptr) + */ +#define __LDAEXB (uint8_t)__builtin_arm_ldaex + + +/** + \brief Load-Acquire Exclusive (16 bit) + \details Executes a LDAH exclusive instruction for 16 bit values. + \param [in] ptr Pointer to data + \return value of type uint16_t at (*ptr) + */ +#define __LDAEXH (uint16_t)__builtin_arm_ldaex + + +/** + \brief Load-Acquire Exclusive (32 bit) + \details Executes a LDA exclusive instruction for 32 bit values. + \param [in] ptr Pointer to data + \return value of type uint32_t at (*ptr) + */ +#define __LDAEX (uint32_t)__builtin_arm_ldaex + + +/** + \brief Store-Release Exclusive (8 bit) + \details Executes a STLB exclusive instruction for 8 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + \return 0 Function succeeded + \return 1 Function failed + */ +#define __STLEXB (uint32_t)__builtin_arm_stlex + + +/** + \brief Store-Release Exclusive (16 bit) + \details Executes a STLH exclusive instruction for 16 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + \return 0 Function succeeded + \return 1 Function failed + */ +#define __STLEXH (uint32_t)__builtin_arm_stlex + + +/** + \brief Store-Release Exclusive (32 bit) + \details Executes a STL exclusive instruction for 32 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + \return 0 Function succeeded + \return 1 Function failed + */ +#define __STLEX (uint32_t)__builtin_arm_stlex + +#endif /* ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) || \ + (defined (__ARM_ARCH_8_1M_MAIN__) && (__ARM_ARCH_8_1M_MAIN__ == 1)) ) */ + +/*@}*/ /* end of group CMSIS_Core_InstructionInterface */ + + +/* ########################### Core Function Access ########################### */ +/** \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_RegAccFunctions CMSIS Core Register Access Functions + @{ + */ + +/** + \brief Enable IRQ Interrupts + \details Enables IRQ interrupts by clearing special-purpose register PRIMASK. + Can only be executed in Privileged modes. + */ +#ifndef __ARM_COMPAT_H +__STATIC_FORCEINLINE void __enable_irq(void) +{ + __ASM volatile ("cpsie i" : : : "memory"); +} +#endif + + +/** + \brief Disable IRQ Interrupts + \details Disables IRQ interrupts by setting special-purpose register PRIMASK. + Can only be executed in Privileged modes. + */ +#ifndef __ARM_COMPAT_H +__STATIC_FORCEINLINE void __disable_irq(void) +{ + __ASM volatile ("cpsid i" : : : "memory"); +} +#endif + + +/** + \brief Get Control Register + \details Returns the content of the Control Register. + \return Control Register value + */ +__STATIC_FORCEINLINE uint32_t __get_CONTROL(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, control" : "=r" (result) ); + return(result); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Control Register (non-secure) + \details Returns the content of the non-secure Control Register when in secure mode. + \return non-secure Control Register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_CONTROL_NS(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, control_ns" : "=r" (result) ); + return(result); +} +#endif + + +/** + \brief Set Control Register + \details Writes the given value to the Control Register. + \param [in] control Control Register value to set + */ +__STATIC_FORCEINLINE void __set_CONTROL(uint32_t control) +{ + __ASM volatile ("MSR control, %0" : : "r" (control) : "memory"); + __ISB(); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Control Register (non-secure) + \details Writes the given value to the non-secure Control Register when in secure state. + \param [in] control Control Register value to set + */ +__STATIC_FORCEINLINE void __TZ_set_CONTROL_NS(uint32_t control) +{ + __ASM volatile ("MSR control_ns, %0" : : "r" (control) : "memory"); + __ISB(); +} +#endif + + +/** + \brief Get IPSR Register + \details Returns the content of the IPSR Register. + \return IPSR Register value + */ +__STATIC_FORCEINLINE uint32_t __get_IPSR(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, ipsr" : "=r" (result) ); + return(result); +} + + +/** + \brief Get APSR Register + \details Returns the content of the APSR Register. + \return APSR Register value + */ +__STATIC_FORCEINLINE uint32_t __get_APSR(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, apsr" : "=r" (result) ); + return(result); +} + + +/** + \brief Get xPSR Register + \details Returns the content of the xPSR Register. + \return xPSR Register value + */ +__STATIC_FORCEINLINE uint32_t __get_xPSR(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, xpsr" : "=r" (result) ); + return(result); +} + + +/** + \brief Get Process Stack Pointer + \details Returns the current value of the Process Stack Pointer (PSP). + \return PSP Register value + */ +__STATIC_FORCEINLINE uint32_t __get_PSP(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, psp" : "=r" (result) ); + return(result); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Process Stack Pointer (non-secure) + \details Returns the current value of the non-secure Process Stack Pointer (PSP) when in secure state. + \return PSP Register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_PSP_NS(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, psp_ns" : "=r" (result) ); + return(result); +} +#endif + + +/** + \brief Set Process Stack Pointer + \details Assigns the given value to the Process Stack Pointer (PSP). + \param [in] topOfProcStack Process Stack Pointer value to set + */ +__STATIC_FORCEINLINE void __set_PSP(uint32_t topOfProcStack) +{ + __ASM volatile ("MSR psp, %0" : : "r" (topOfProcStack) : ); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Process Stack Pointer (non-secure) + \details Assigns the given value to the non-secure Process Stack Pointer (PSP) when in secure state. + \param [in] topOfProcStack Process Stack Pointer value to set + */ +__STATIC_FORCEINLINE void __TZ_set_PSP_NS(uint32_t topOfProcStack) +{ + __ASM volatile ("MSR psp_ns, %0" : : "r" (topOfProcStack) : ); +} +#endif + + +/** + \brief Get Main Stack Pointer + \details Returns the current value of the Main Stack Pointer (MSP). + \return MSP Register value + */ +__STATIC_FORCEINLINE uint32_t __get_MSP(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, msp" : "=r" (result) ); + return(result); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Main Stack Pointer (non-secure) + \details Returns the current value of the non-secure Main Stack Pointer (MSP) when in secure state. + \return MSP Register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_MSP_NS(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, msp_ns" : "=r" (result) ); + return(result); +} +#endif + + +/** + \brief Set Main Stack Pointer + \details Assigns the given value to the Main Stack Pointer (MSP). + \param [in] topOfMainStack Main Stack Pointer value to set + */ +__STATIC_FORCEINLINE void __set_MSP(uint32_t topOfMainStack) +{ + __ASM volatile ("MSR msp, %0" : : "r" (topOfMainStack) : ); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Main Stack Pointer (non-secure) + \details Assigns the given value to the non-secure Main Stack Pointer (MSP) when in secure state. + \param [in] topOfMainStack Main Stack Pointer value to set + */ +__STATIC_FORCEINLINE void __TZ_set_MSP_NS(uint32_t topOfMainStack) +{ + __ASM volatile ("MSR msp_ns, %0" : : "r" (topOfMainStack) : ); +} +#endif + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Stack Pointer (non-secure) + \details Returns the current value of the non-secure Stack Pointer (SP) when in secure state. + \return SP Register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_SP_NS(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, sp_ns" : "=r" (result) ); + return(result); +} + + +/** + \brief Set Stack Pointer (non-secure) + \details Assigns the given value to the non-secure Stack Pointer (SP) when in secure state. + \param [in] topOfStack Stack Pointer value to set + */ +__STATIC_FORCEINLINE void __TZ_set_SP_NS(uint32_t topOfStack) +{ + __ASM volatile ("MSR sp_ns, %0" : : "r" (topOfStack) : ); +} +#endif + + +/** + \brief Get Priority Mask + \details Returns the current state of the priority mask bit from the Priority Mask Register. + \return Priority Mask value + */ +__STATIC_FORCEINLINE uint32_t __get_PRIMASK(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, primask" : "=r" (result) ); + return(result); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Priority Mask (non-secure) + \details Returns the current state of the non-secure priority mask bit from the Priority Mask Register when in secure state. + \return Priority Mask value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_PRIMASK_NS(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, primask_ns" : "=r" (result) ); + return(result); +} +#endif + + +/** + \brief Set Priority Mask + \details Assigns the given value to the Priority Mask Register. + \param [in] priMask Priority Mask + */ +__STATIC_FORCEINLINE void __set_PRIMASK(uint32_t priMask) +{ + __ASM volatile ("MSR primask, %0" : : "r" (priMask) : "memory"); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Priority Mask (non-secure) + \details Assigns the given value to the non-secure Priority Mask Register when in secure state. + \param [in] priMask Priority Mask + */ +__STATIC_FORCEINLINE void __TZ_set_PRIMASK_NS(uint32_t priMask) +{ + __ASM volatile ("MSR primask_ns, %0" : : "r" (priMask) : "memory"); +} +#endif + + +#if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8_1M_MAIN__) && (__ARM_ARCH_8_1M_MAIN__ == 1)) ) +/** + \brief Enable FIQ + \details Enables FIQ interrupts by clearing special-purpose register FAULTMASK. + Can only be executed in Privileged modes. + */ +__STATIC_FORCEINLINE void __enable_fault_irq(void) +{ + __ASM volatile ("cpsie f" : : : "memory"); +} + + +/** + \brief Disable FIQ + \details Disables FIQ interrupts by setting special-purpose register FAULTMASK. + Can only be executed in Privileged modes. + */ +__STATIC_FORCEINLINE void __disable_fault_irq(void) +{ + __ASM volatile ("cpsid f" : : : "memory"); +} + + +/** + \brief Get Base Priority + \details Returns the current value of the Base Priority register. + \return Base Priority register value + */ +__STATIC_FORCEINLINE uint32_t __get_BASEPRI(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, basepri" : "=r" (result) ); + return(result); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Base Priority (non-secure) + \details Returns the current value of the non-secure Base Priority register when in secure state. + \return Base Priority register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_BASEPRI_NS(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, basepri_ns" : "=r" (result) ); + return(result); +} +#endif + + +/** + \brief Set Base Priority + \details Assigns the given value to the Base Priority register. + \param [in] basePri Base Priority value to set + */ +__STATIC_FORCEINLINE void __set_BASEPRI(uint32_t basePri) +{ + __ASM volatile ("MSR basepri, %0" : : "r" (basePri) : "memory"); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Base Priority (non-secure) + \details Assigns the given value to the non-secure Base Priority register when in secure state. + \param [in] basePri Base Priority value to set + */ +__STATIC_FORCEINLINE void __TZ_set_BASEPRI_NS(uint32_t basePri) +{ + __ASM volatile ("MSR basepri_ns, %0" : : "r" (basePri) : "memory"); +} +#endif + + +/** + \brief Set Base Priority with condition + \details Assigns the given value to the Base Priority register only if BASEPRI masking is disabled, + or the new value increases the BASEPRI priority level. + \param [in] basePri Base Priority value to set + */ +__STATIC_FORCEINLINE void __set_BASEPRI_MAX(uint32_t basePri) +{ + __ASM volatile ("MSR basepri_max, %0" : : "r" (basePri) : "memory"); +} + + +/** + \brief Get Fault Mask + \details Returns the current value of the Fault Mask register. + \return Fault Mask register value + */ +__STATIC_FORCEINLINE uint32_t __get_FAULTMASK(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, faultmask" : "=r" (result) ); + return(result); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Fault Mask (non-secure) + \details Returns the current value of the non-secure Fault Mask register when in secure state. + \return Fault Mask register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_FAULTMASK_NS(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, faultmask_ns" : "=r" (result) ); + return(result); +} +#endif + + +/** + \brief Set Fault Mask + \details Assigns the given value to the Fault Mask register. + \param [in] faultMask Fault Mask value to set + */ +__STATIC_FORCEINLINE void __set_FAULTMASK(uint32_t faultMask) +{ + __ASM volatile ("MSR faultmask, %0" : : "r" (faultMask) : "memory"); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Fault Mask (non-secure) + \details Assigns the given value to the non-secure Fault Mask register when in secure state. + \param [in] faultMask Fault Mask value to set + */ +__STATIC_FORCEINLINE void __TZ_set_FAULTMASK_NS(uint32_t faultMask) +{ + __ASM volatile ("MSR faultmask_ns, %0" : : "r" (faultMask) : "memory"); +} +#endif + +#endif /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8_1M_MAIN__) && (__ARM_ARCH_8_1M_MAIN__ == 1)) ) */ + + +#if ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) || \ + (defined (__ARM_ARCH_8_1M_MAIN__) && (__ARM_ARCH_8_1M_MAIN__ == 1)) ) + +/** + \brief Get Process Stack Pointer Limit + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence zero is returned always in non-secure + mode. + + \details Returns the current value of the Process Stack Pointer Limit (PSPLIM). + \return PSPLIM Register value + */ +__STATIC_FORCEINLINE uint32_t __get_PSPLIM(void) +{ +#if (!((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8_1M_MAIN__ ) && (__ARM_ARCH_8_1M_MAIN__ == 1)) ) && \ + (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) + // without main extensions, the non-secure PSPLIM is RAZ/WI + return 0U; +#else + uint32_t result; + __ASM volatile ("MRS %0, psplim" : "=r" (result) ); + return result; +#endif +} + +#if (defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Process Stack Pointer Limit (non-secure) + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence zero is returned always in non-secure + mode. + + \details Returns the current value of the non-secure Process Stack Pointer Limit (PSPLIM) when in secure state. + \return PSPLIM Register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_PSPLIM_NS(void) +{ +#if (!((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8_1M_MAIN__ ) && (__ARM_ARCH_8_1M_MAIN__ == 1)) ) ) + // without main extensions, the non-secure PSPLIM is RAZ/WI + return 0U; +#else + uint32_t result; + __ASM volatile ("MRS %0, psplim_ns" : "=r" (result) ); + return result; +#endif +} +#endif + + +/** + \brief Set Process Stack Pointer Limit + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence the write is silently ignored in non-secure + mode. + + \details Assigns the given value to the Process Stack Pointer Limit (PSPLIM). + \param [in] ProcStackPtrLimit Process Stack Pointer Limit value to set + */ +__STATIC_FORCEINLINE void __set_PSPLIM(uint32_t ProcStackPtrLimit) +{ +#if (!((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8_1M_MAIN__ ) && (__ARM_ARCH_8_1M_MAIN__ == 1)) ) && \ + (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) + // without main extensions, the non-secure PSPLIM is RAZ/WI + (void)ProcStackPtrLimit; +#else + __ASM volatile ("MSR psplim, %0" : : "r" (ProcStackPtrLimit)); +#endif +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Process Stack Pointer (non-secure) + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence the write is silently ignored in non-secure + mode. + + \details Assigns the given value to the non-secure Process Stack Pointer Limit (PSPLIM) when in secure state. + \param [in] ProcStackPtrLimit Process Stack Pointer Limit value to set + */ +__STATIC_FORCEINLINE void __TZ_set_PSPLIM_NS(uint32_t ProcStackPtrLimit) +{ +#if (!((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8_1M_MAIN__ ) && (__ARM_ARCH_8_1M_MAIN__ == 1)) ) ) + // without main extensions, the non-secure PSPLIM is RAZ/WI + (void)ProcStackPtrLimit; +#else + __ASM volatile ("MSR psplim_ns, %0\n" : : "r" (ProcStackPtrLimit)); +#endif +} +#endif + + +/** + \brief Get Main Stack Pointer Limit + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence zero is returned always. + + \details Returns the current value of the Main Stack Pointer Limit (MSPLIM). + \return MSPLIM Register value + */ +__STATIC_FORCEINLINE uint32_t __get_MSPLIM(void) +{ +#if (!((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8_1M_MAIN__ ) && (__ARM_ARCH_8_1M_MAIN__ == 1)) ) && \ + (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) + // without main extensions, the non-secure MSPLIM is RAZ/WI + return 0U; +#else + uint32_t result; + __ASM volatile ("MRS %0, msplim" : "=r" (result) ); + return result; +#endif +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Main Stack Pointer Limit (non-secure) + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence zero is returned always. + + \details Returns the current value of the non-secure Main Stack Pointer Limit(MSPLIM) when in secure state. + \return MSPLIM Register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_MSPLIM_NS(void) +{ +#if (!((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8_1M_MAIN__ ) && (__ARM_ARCH_8_1M_MAIN__ == 1)) ) ) + // without main extensions, the non-secure MSPLIM is RAZ/WI + return 0U; +#else + uint32_t result; + __ASM volatile ("MRS %0, msplim_ns" : "=r" (result) ); + return result; +#endif +} +#endif + + +/** + \brief Set Main Stack Pointer Limit + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence the write is silently ignored. + + \details Assigns the given value to the Main Stack Pointer Limit (MSPLIM). + \param [in] MainStackPtrLimit Main Stack Pointer Limit value to set + */ +__STATIC_FORCEINLINE void __set_MSPLIM(uint32_t MainStackPtrLimit) +{ +#if (!((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8_1M_MAIN__ ) && (__ARM_ARCH_8_1M_MAIN__ == 1)) ) && \ + (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) + // without main extensions, the non-secure MSPLIM is RAZ/WI + (void)MainStackPtrLimit; +#else + __ASM volatile ("MSR msplim, %0" : : "r" (MainStackPtrLimit)); +#endif +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Main Stack Pointer Limit (non-secure) + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence the write is silently ignored. + + \details Assigns the given value to the non-secure Main Stack Pointer Limit (MSPLIM) when in secure state. + \param [in] MainStackPtrLimit Main Stack Pointer value to set + */ +__STATIC_FORCEINLINE void __TZ_set_MSPLIM_NS(uint32_t MainStackPtrLimit) +{ +#if (!((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8_1M_MAIN__ ) && (__ARM_ARCH_8_1M_MAIN__ == 1)) ) ) + // without main extensions, the non-secure MSPLIM is RAZ/WI + (void)MainStackPtrLimit; +#else + __ASM volatile ("MSR msplim_ns, %0" : : "r" (MainStackPtrLimit)); +#endif +} +#endif + +#endif /* ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) || \ + (defined (__ARM_ARCH_8_1M_MAIN__) && (__ARM_ARCH_8_1M_MAIN__ == 1)) ) */ + +/** + \brief Get FPSCR + \details Returns the current value of the Floating Point Status/Control register. + \return Floating Point Status/Control register value + */ +#if ((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \ + (defined (__FPU_USED ) && (__FPU_USED == 1U)) ) +#define __get_FPSCR (uint32_t)__builtin_arm_get_fpscr +#else +#define __get_FPSCR() ((uint32_t)0U) +#endif + +/** + \brief Set FPSCR + \details Assigns the given value to the Floating Point Status/Control register. + \param [in] fpscr Floating Point Status/Control value to set + */ +#if ((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \ + (defined (__FPU_USED ) && (__FPU_USED == 1U)) ) +#define __set_FPSCR __builtin_arm_set_fpscr +#else +#define __set_FPSCR(x) ((void)(x)) +#endif + + +/*@} end of CMSIS_Core_RegAccFunctions */ + + +/* ################### Compiler specific Intrinsics ########################### */ +/** \defgroup CMSIS_SIMD_intrinsics CMSIS SIMD Intrinsics + Access to dedicated SIMD instructions + @{ +*/ + +#if (defined (__ARM_FEATURE_DSP) && (__ARM_FEATURE_DSP == 1)) + +#define __SADD8 __builtin_arm_sadd8 +#define __QADD8 __builtin_arm_qadd8 +#define __SHADD8 __builtin_arm_shadd8 +#define __UADD8 __builtin_arm_uadd8 +#define __UQADD8 __builtin_arm_uqadd8 +#define __UHADD8 __builtin_arm_uhadd8 +#define __SSUB8 __builtin_arm_ssub8 +#define __QSUB8 __builtin_arm_qsub8 +#define __SHSUB8 __builtin_arm_shsub8 +#define __USUB8 __builtin_arm_usub8 +#define __UQSUB8 __builtin_arm_uqsub8 +#define __UHSUB8 __builtin_arm_uhsub8 +#define __SADD16 __builtin_arm_sadd16 +#define __QADD16 __builtin_arm_qadd16 +#define __SHADD16 __builtin_arm_shadd16 +#define __UADD16 __builtin_arm_uadd16 +#define __UQADD16 __builtin_arm_uqadd16 +#define __UHADD16 __builtin_arm_uhadd16 +#define __SSUB16 __builtin_arm_ssub16 +#define __QSUB16 __builtin_arm_qsub16 +#define __SHSUB16 __builtin_arm_shsub16 +#define __USUB16 __builtin_arm_usub16 +#define __UQSUB16 __builtin_arm_uqsub16 +#define __UHSUB16 __builtin_arm_uhsub16 +#define __SASX __builtin_arm_sasx +#define __QASX __builtin_arm_qasx +#define __SHASX __builtin_arm_shasx +#define __UASX __builtin_arm_uasx +#define __UQASX __builtin_arm_uqasx +#define __UHASX __builtin_arm_uhasx +#define __SSAX __builtin_arm_ssax +#define __QSAX __builtin_arm_qsax +#define __SHSAX __builtin_arm_shsax +#define __USAX __builtin_arm_usax +#define __UQSAX __builtin_arm_uqsax +#define __UHSAX __builtin_arm_uhsax +#define __USAD8 __builtin_arm_usad8 +#define __USADA8 __builtin_arm_usada8 +#define __SSAT16 __builtin_arm_ssat16 +#define __USAT16 __builtin_arm_usat16 +#define __UXTB16 __builtin_arm_uxtb16 +#define __UXTAB16 __builtin_arm_uxtab16 +#define __SXTB16 __builtin_arm_sxtb16 +#define __SXTAB16 __builtin_arm_sxtab16 +#define __SMUAD __builtin_arm_smuad +#define __SMUADX __builtin_arm_smuadx +#define __SMLAD __builtin_arm_smlad +#define __SMLADX __builtin_arm_smladx +#define __SMLALD __builtin_arm_smlald +#define __SMLALDX __builtin_arm_smlaldx +#define __SMUSD __builtin_arm_smusd +#define __SMUSDX __builtin_arm_smusdx +#define __SMLSD __builtin_arm_smlsd +#define __SMLSDX __builtin_arm_smlsdx +#define __SMLSLD __builtin_arm_smlsld +#define __SMLSLDX __builtin_arm_smlsldx +#define __SEL __builtin_arm_sel +#define __QADD __builtin_arm_qadd +#define __QSUB __builtin_arm_qsub + +#define __PKHBT(ARG1,ARG2,ARG3) ( ((((uint32_t)(ARG1)) ) & 0x0000FFFFUL) | \ + ((((uint32_t)(ARG2)) << (ARG3)) & 0xFFFF0000UL) ) + +#define __PKHTB(ARG1,ARG2,ARG3) ( ((((uint32_t)(ARG1)) ) & 0xFFFF0000UL) | \ + ((((uint32_t)(ARG2)) >> (ARG3)) & 0x0000FFFFUL) ) + +#define __SXTB16_RORn(ARG1, ARG2) __SXTB16(__ROR(ARG1, ARG2)) + +#define __SXTAB16_RORn(ARG1, ARG2, ARG3) __SXTAB16(ARG1, __ROR(ARG2, ARG3)) + +__STATIC_FORCEINLINE int32_t __SMMLA (int32_t op1, int32_t op2, int32_t op3) +{ + int32_t result; + + __ASM volatile ("smmla %0, %1, %2, %3" : "=r" (result): "r" (op1), "r" (op2), "r" (op3) ); + return(result); +} + +#endif /* (__ARM_FEATURE_DSP == 1) */ +/*@} end of group CMSIS_SIMD_intrinsics */ + + +#endif /* __CMSIS_ARMCLANG_H */ diff --git a/bsp/renesas/ra8m1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/cmsis_armclang_ltm.h b/bsp/renesas/ra8m1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/cmsis_armclang_ltm.h new file mode 100644 index 000000000000..1e255d5907f6 --- /dev/null +++ b/bsp/renesas/ra8m1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/cmsis_armclang_ltm.h @@ -0,0 +1,1928 @@ +/**************************************************************************//** + * @file cmsis_armclang_ltm.h + * @brief CMSIS compiler armclang (Arm Compiler 6) header file + * @version V1.5.3 + * @date 27. May 2021 + ******************************************************************************/ +/* + * Copyright (c) 2018-2021 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/*lint -esym(9058, IRQn)*/ /* disable MISRA 2012 Rule 2.4 for IRQn */ + +#ifndef __CMSIS_ARMCLANG_H +#define __CMSIS_ARMCLANG_H + +#pragma clang system_header /* treat file as system include file */ + +/* CMSIS compiler specific defines */ +#ifndef __ASM + #define __ASM __asm +#endif +#ifndef __INLINE + #define __INLINE __inline +#endif +#ifndef __STATIC_INLINE + #define __STATIC_INLINE static __inline +#endif +#ifndef __STATIC_FORCEINLINE + #define __STATIC_FORCEINLINE __attribute__((always_inline)) static __inline +#endif +#ifndef __NO_RETURN + #define __NO_RETURN __attribute__((__noreturn__)) +#endif +#ifndef __USED + #define __USED __attribute__((used)) +#endif +#ifndef __WEAK + #define __WEAK __attribute__((weak)) +#endif +#ifndef __PACKED + #define __PACKED __attribute__((packed, aligned(1))) +#endif +#ifndef __PACKED_STRUCT + #define __PACKED_STRUCT struct __attribute__((packed, aligned(1))) +#endif +#ifndef __PACKED_UNION + #define __PACKED_UNION union __attribute__((packed, aligned(1))) +#endif +#ifndef __UNALIGNED_UINT32 /* deprecated */ + #pragma clang diagnostic push + #pragma clang diagnostic ignored "-Wpacked" +/*lint -esym(9058, T_UINT32)*/ /* disable MISRA 2012 Rule 2.4 for T_UINT32 */ + struct __attribute__((packed)) T_UINT32 { uint32_t v; }; + #pragma clang diagnostic pop + #define __UNALIGNED_UINT32(x) (((struct T_UINT32 *)(x))->v) +#endif +#ifndef __UNALIGNED_UINT16_WRITE + #pragma clang diagnostic push + #pragma clang diagnostic ignored "-Wpacked" +/*lint -esym(9058, T_UINT16_WRITE)*/ /* disable MISRA 2012 Rule 2.4 for T_UINT16_WRITE */ + __PACKED_STRUCT T_UINT16_WRITE { uint16_t v; }; + #pragma clang diagnostic pop + #define __UNALIGNED_UINT16_WRITE(addr, val) (void)((((struct T_UINT16_WRITE *)(void *)(addr))->v) = (val)) +#endif +#ifndef __UNALIGNED_UINT16_READ + #pragma clang diagnostic push + #pragma clang diagnostic ignored "-Wpacked" +/*lint -esym(9058, T_UINT16_READ)*/ /* disable MISRA 2012 Rule 2.4 for T_UINT16_READ */ + __PACKED_STRUCT T_UINT16_READ { uint16_t v; }; + #pragma clang diagnostic pop + #define __UNALIGNED_UINT16_READ(addr) (((const struct T_UINT16_READ *)(const void *)(addr))->v) +#endif +#ifndef __UNALIGNED_UINT32_WRITE + #pragma clang diagnostic push + #pragma clang diagnostic ignored "-Wpacked" +/*lint -esym(9058, T_UINT32_WRITE)*/ /* disable MISRA 2012 Rule 2.4 for T_UINT32_WRITE */ + __PACKED_STRUCT T_UINT32_WRITE { uint32_t v; }; + #pragma clang diagnostic pop + #define __UNALIGNED_UINT32_WRITE(addr, val) (void)((((struct T_UINT32_WRITE *)(void *)(addr))->v) = (val)) +#endif +#ifndef __UNALIGNED_UINT32_READ + #pragma clang diagnostic push + #pragma clang diagnostic ignored "-Wpacked" +/*lint -esym(9058, T_UINT32_READ)*/ /* disable MISRA 2012 Rule 2.4 for T_UINT32_READ */ + __PACKED_STRUCT T_UINT32_READ { uint32_t v; }; + #pragma clang diagnostic pop + #define __UNALIGNED_UINT32_READ(addr) (((const struct T_UINT32_READ *)(const void *)(addr))->v) +#endif +#ifndef __ALIGNED + #define __ALIGNED(x) __attribute__((aligned(x))) +#endif +#ifndef __RESTRICT + #define __RESTRICT __restrict +#endif +#ifndef __COMPILER_BARRIER + #define __COMPILER_BARRIER() __ASM volatile("":::"memory") +#endif + +/* ######################### Startup and Lowlevel Init ######################## */ + +#ifndef __PROGRAM_START +#define __PROGRAM_START __main +#endif + +#ifndef __INITIAL_SP +#define __INITIAL_SP Image$$ARM_LIB_STACK$$ZI$$Limit +#endif + +#ifndef __STACK_LIMIT +#define __STACK_LIMIT Image$$ARM_LIB_STACK$$ZI$$Base +#endif + +#ifndef __VECTOR_TABLE +#define __VECTOR_TABLE __Vectors +#endif + +#ifndef __VECTOR_TABLE_ATTRIBUTE +#define __VECTOR_TABLE_ATTRIBUTE __attribute__((used, section("RESET"))) +#endif + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +#ifndef __STACK_SEAL +#define __STACK_SEAL Image$$STACKSEAL$$ZI$$Base +#endif + +#ifndef __TZ_STACK_SEAL_SIZE +#define __TZ_STACK_SEAL_SIZE 8U +#endif + +#ifndef __TZ_STACK_SEAL_VALUE +#define __TZ_STACK_SEAL_VALUE 0xFEF5EDA5FEF5EDA5ULL +#endif + + +__STATIC_FORCEINLINE void __TZ_set_STACKSEAL_S (uint32_t* stackTop) { + *((uint64_t *)stackTop) = __TZ_STACK_SEAL_VALUE; +} +#endif + + +/* ########################## Core Instruction Access ######################### */ +/** \defgroup CMSIS_Core_InstructionInterface CMSIS Core Instruction Interface + Access to dedicated instructions + @{ +*/ + +/* Define macros for porting to both thumb1 and thumb2. + * For thumb1, use low register (r0-r7), specified by constraint "l" + * Otherwise, use general registers, specified by constraint "r" */ +#if defined (__thumb__) && !defined (__thumb2__) +#define __CMSIS_GCC_OUT_REG(r) "=l" (r) +#define __CMSIS_GCC_USE_REG(r) "l" (r) +#else +#define __CMSIS_GCC_OUT_REG(r) "=r" (r) +#define __CMSIS_GCC_USE_REG(r) "r" (r) +#endif + +/** + \brief No Operation + \details No Operation does nothing. This instruction can be used for code alignment purposes. + */ +#define __NOP __builtin_arm_nop + +/** + \brief Wait For Interrupt + \details Wait For Interrupt is a hint instruction that suspends execution until one of a number of events occurs. + */ +#define __WFI __builtin_arm_wfi + + +/** + \brief Wait For Event + \details Wait For Event is a hint instruction that permits the processor to enter + a low-power state until one of a number of events occurs. + */ +#define __WFE __builtin_arm_wfe + + +/** + \brief Send Event + \details Send Event is a hint instruction. It causes an event to be signaled to the CPU. + */ +#define __SEV __builtin_arm_sev + + +/** + \brief Instruction Synchronization Barrier + \details Instruction Synchronization Barrier flushes the pipeline in the processor, + so that all instructions following the ISB are fetched from cache or memory, + after the instruction has been completed. + */ +#define __ISB() __builtin_arm_isb(0xF) + +/** + \brief Data Synchronization Barrier + \details Acts as a special kind of Data Memory Barrier. + It completes when all explicit memory accesses before this instruction complete. + */ +#define __DSB() __builtin_arm_dsb(0xF) + + +/** + \brief Data Memory Barrier + \details Ensures the apparent order of the explicit memory operations before + and after the instruction, without ensuring their completion. + */ +#define __DMB() __builtin_arm_dmb(0xF) + + +/** + \brief Reverse byte order (32 bit) + \details Reverses the byte order in unsigned integer value. For example, 0x12345678 becomes 0x78563412. + \param [in] value Value to reverse + \return Reversed value + */ +#define __REV(value) __builtin_bswap32(value) + + +/** + \brief Reverse byte order (16 bit) + \details Reverses the byte order within each halfword of a word. For example, 0x12345678 becomes 0x34127856. + \param [in] value Value to reverse + \return Reversed value + */ +#define __REV16(value) __ROR(__REV(value), 16) + + +/** + \brief Reverse byte order (16 bit) + \details Reverses the byte order in a 16-bit value and returns the signed 16-bit result. For example, 0x0080 becomes 0x8000. + \param [in] value Value to reverse + \return Reversed value + */ +#define __REVSH(value) (int16_t)__builtin_bswap16(value) + + +/** + \brief Rotate Right in unsigned value (32 bit) + \details Rotate Right (immediate) provides the value of the contents of a register rotated by a variable number of bits. + \param [in] op1 Value to rotate + \param [in] op2 Number of Bits to rotate + \return Rotated value + */ +__STATIC_FORCEINLINE uint32_t __ROR(uint32_t op1, uint32_t op2) +{ + op2 %= 32U; + if (op2 == 0U) + { + return op1; + } + return (op1 >> op2) | (op1 << (32U - op2)); +} + + +/** + \brief Breakpoint + \details Causes the processor to enter Debug state. + Debug tools can use this to investigate system state when the instruction at a particular address is reached. + \param [in] value is ignored by the processor. + If required, a debugger can use it to store additional information about the breakpoint. + */ +#define __BKPT(value) __ASM volatile ("bkpt "#value) + + +/** + \brief Reverse bit order of value + \details Reverses the bit order of the given value. + \param [in] value Value to reverse + \return Reversed value + */ +#define __RBIT __builtin_arm_rbit + +/** + \brief Count leading zeros + \details Counts the number of leading zeros of a data value. + \param [in] value Value to count the leading zeros + \return number of leading zeros in value + */ +__STATIC_FORCEINLINE uint8_t __CLZ(uint32_t value) +{ + /* Even though __builtin_clz produces a CLZ instruction on ARM, formally + __builtin_clz(0) is undefined behaviour, so handle this case specially. + This guarantees ARM-compatible results if happening to compile on a non-ARM + target, and ensures the compiler doesn't decide to activate any + optimisations using the logic "value was passed to __builtin_clz, so it + is non-zero". + ARM Compiler 6.10 and possibly earlier will optimise this test away, leaving a + single CLZ instruction. + */ + if (value == 0U) + { + return 32U; + } + return __builtin_clz(value); +} + + +#if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) +/** + \brief LDR Exclusive (8 bit) + \details Executes a exclusive LDR instruction for 8 bit value. + \param [in] ptr Pointer to data + \return value of type uint8_t at (*ptr) + */ +#define __LDREXB (uint8_t)__builtin_arm_ldrex + + +/** + \brief LDR Exclusive (16 bit) + \details Executes a exclusive LDR instruction for 16 bit values. + \param [in] ptr Pointer to data + \return value of type uint16_t at (*ptr) + */ +#define __LDREXH (uint16_t)__builtin_arm_ldrex + + +/** + \brief LDR Exclusive (32 bit) + \details Executes a exclusive LDR instruction for 32 bit values. + \param [in] ptr Pointer to data + \return value of type uint32_t at (*ptr) + */ +#define __LDREXW (uint32_t)__builtin_arm_ldrex + + +/** + \brief STR Exclusive (8 bit) + \details Executes a exclusive STR instruction for 8 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + \return 0 Function succeeded + \return 1 Function failed + */ +#define __STREXB (uint32_t)__builtin_arm_strex + + +/** + \brief STR Exclusive (16 bit) + \details Executes a exclusive STR instruction for 16 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + \return 0 Function succeeded + \return 1 Function failed + */ +#define __STREXH (uint32_t)__builtin_arm_strex + + +/** + \brief STR Exclusive (32 bit) + \details Executes a exclusive STR instruction for 32 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + \return 0 Function succeeded + \return 1 Function failed + */ +#define __STREXW (uint32_t)__builtin_arm_strex + + +/** + \brief Remove the exclusive lock + \details Removes the exclusive lock which is created by LDREX. + */ +#define __CLREX __builtin_arm_clrex + +#endif /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) */ + + +#if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) ) + +/** + \brief Signed Saturate + \details Saturates a signed value. + \param [in] value Value to be saturated + \param [in] sat Bit position to saturate to (1..32) + \return Saturated value + */ +#define __SSAT __builtin_arm_ssat + + +/** + \brief Unsigned Saturate + \details Saturates an unsigned value. + \param [in] value Value to be saturated + \param [in] sat Bit position to saturate to (0..31) + \return Saturated value + */ +#define __USAT __builtin_arm_usat + + +/** + \brief Rotate Right with Extend (32 bit) + \details Moves each bit of a bitstring right by one bit. + The carry input is shifted in at the left end of the bitstring. + \param [in] value Value to rotate + \return Rotated value + */ +__STATIC_FORCEINLINE uint32_t __RRX(uint32_t value) +{ + uint32_t result; + + __ASM volatile ("rrx %0, %1" : __CMSIS_GCC_OUT_REG (result) : __CMSIS_GCC_USE_REG (value) ); + return(result); +} + + +/** + \brief LDRT Unprivileged (8 bit) + \details Executes a Unprivileged LDRT instruction for 8 bit value. + \param [in] ptr Pointer to data + \return value of type uint8_t at (*ptr) + */ +__STATIC_FORCEINLINE uint8_t __LDRBT(volatile uint8_t *ptr) +{ + uint32_t result; + + __ASM volatile ("ldrbt %0, %1" : "=r" (result) : "Q" (*ptr) ); + return ((uint8_t) result); /* Add explicit type cast here */ +} + + +/** + \brief LDRT Unprivileged (16 bit) + \details Executes a Unprivileged LDRT instruction for 16 bit values. + \param [in] ptr Pointer to data + \return value of type uint16_t at (*ptr) + */ +__STATIC_FORCEINLINE uint16_t __LDRHT(volatile uint16_t *ptr) +{ + uint32_t result; + + __ASM volatile ("ldrht %0, %1" : "=r" (result) : "Q" (*ptr) ); + return ((uint16_t) result); /* Add explicit type cast here */ +} + + +/** + \brief LDRT Unprivileged (32 bit) + \details Executes a Unprivileged LDRT instruction for 32 bit values. + \param [in] ptr Pointer to data + \return value of type uint32_t at (*ptr) + */ +__STATIC_FORCEINLINE uint32_t __LDRT(volatile uint32_t *ptr) +{ + uint32_t result; + + __ASM volatile ("ldrt %0, %1" : "=r" (result) : "Q" (*ptr) ); + return(result); +} + + +/** + \brief STRT Unprivileged (8 bit) + \details Executes a Unprivileged STRT instruction for 8 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + */ +__STATIC_FORCEINLINE void __STRBT(uint8_t value, volatile uint8_t *ptr) +{ + __ASM volatile ("strbt %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) ); +} + + +/** + \brief STRT Unprivileged (16 bit) + \details Executes a Unprivileged STRT instruction for 16 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + */ +__STATIC_FORCEINLINE void __STRHT(uint16_t value, volatile uint16_t *ptr) +{ + __ASM volatile ("strht %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) ); +} + + +/** + \brief STRT Unprivileged (32 bit) + \details Executes a Unprivileged STRT instruction for 32 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + */ +__STATIC_FORCEINLINE void __STRT(uint32_t value, volatile uint32_t *ptr) +{ + __ASM volatile ("strt %1, %0" : "=Q" (*ptr) : "r" (value) ); +} + +#else /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) ) */ + +/** + \brief Signed Saturate + \details Saturates a signed value. + \param [in] value Value to be saturated + \param [in] sat Bit position to saturate to (1..32) + \return Saturated value + */ +__STATIC_FORCEINLINE int32_t __SSAT(int32_t val, uint32_t sat) +{ + if ((sat >= 1U) && (sat <= 32U)) + { + const int32_t max = (int32_t)((1U << (sat - 1U)) - 1U); + const int32_t min = -1 - max ; + if (val > max) + { + return max; + } + else if (val < min) + { + return min; + } + } + return val; +} + +/** + \brief Unsigned Saturate + \details Saturates an unsigned value. + \param [in] value Value to be saturated + \param [in] sat Bit position to saturate to (0..31) + \return Saturated value + */ +__STATIC_FORCEINLINE uint32_t __USAT(int32_t val, uint32_t sat) +{ + if (sat <= 31U) + { + const uint32_t max = ((1U << sat) - 1U); + if (val > (int32_t)max) + { + return max; + } + else if (val < 0) + { + return 0U; + } + } + return (uint32_t)val; +} + +#endif /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) ) */ + + +#if ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) +/** + \brief Load-Acquire (8 bit) + \details Executes a LDAB instruction for 8 bit value. + \param [in] ptr Pointer to data + \return value of type uint8_t at (*ptr) + */ +__STATIC_FORCEINLINE uint8_t __LDAB(volatile uint8_t *ptr) +{ + uint32_t result; + + __ASM volatile ("ldab %0, %1" : "=r" (result) : "Q" (*ptr) : "memory" ); + return ((uint8_t) result); +} + + +/** + \brief Load-Acquire (16 bit) + \details Executes a LDAH instruction for 16 bit values. + \param [in] ptr Pointer to data + \return value of type uint16_t at (*ptr) + */ +__STATIC_FORCEINLINE uint16_t __LDAH(volatile uint16_t *ptr) +{ + uint32_t result; + + __ASM volatile ("ldah %0, %1" : "=r" (result) : "Q" (*ptr) : "memory" ); + return ((uint16_t) result); +} + + +/** + \brief Load-Acquire (32 bit) + \details Executes a LDA instruction for 32 bit values. + \param [in] ptr Pointer to data + \return value of type uint32_t at (*ptr) + */ +__STATIC_FORCEINLINE uint32_t __LDA(volatile uint32_t *ptr) +{ + uint32_t result; + + __ASM volatile ("lda %0, %1" : "=r" (result) : "Q" (*ptr) : "memory" ); + return(result); +} + + +/** + \brief Store-Release (8 bit) + \details Executes a STLB instruction for 8 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + */ +__STATIC_FORCEINLINE void __STLB(uint8_t value, volatile uint8_t *ptr) +{ + __ASM volatile ("stlb %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) : "memory" ); +} + + +/** + \brief Store-Release (16 bit) + \details Executes a STLH instruction for 16 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + */ +__STATIC_FORCEINLINE void __STLH(uint16_t value, volatile uint16_t *ptr) +{ + __ASM volatile ("stlh %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) : "memory" ); +} + + +/** + \brief Store-Release (32 bit) + \details Executes a STL instruction for 32 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + */ +__STATIC_FORCEINLINE void __STL(uint32_t value, volatile uint32_t *ptr) +{ + __ASM volatile ("stl %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) : "memory" ); +} + + +/** + \brief Load-Acquire Exclusive (8 bit) + \details Executes a LDAB exclusive instruction for 8 bit value. + \param [in] ptr Pointer to data + \return value of type uint8_t at (*ptr) + */ +#define __LDAEXB (uint8_t)__builtin_arm_ldaex + + +/** + \brief Load-Acquire Exclusive (16 bit) + \details Executes a LDAH exclusive instruction for 16 bit values. + \param [in] ptr Pointer to data + \return value of type uint16_t at (*ptr) + */ +#define __LDAEXH (uint16_t)__builtin_arm_ldaex + + +/** + \brief Load-Acquire Exclusive (32 bit) + \details Executes a LDA exclusive instruction for 32 bit values. + \param [in] ptr Pointer to data + \return value of type uint32_t at (*ptr) + */ +#define __LDAEX (uint32_t)__builtin_arm_ldaex + + +/** + \brief Store-Release Exclusive (8 bit) + \details Executes a STLB exclusive instruction for 8 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + \return 0 Function succeeded + \return 1 Function failed + */ +#define __STLEXB (uint32_t)__builtin_arm_stlex + + +/** + \brief Store-Release Exclusive (16 bit) + \details Executes a STLH exclusive instruction for 16 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + \return 0 Function succeeded + \return 1 Function failed + */ +#define __STLEXH (uint32_t)__builtin_arm_stlex + + +/** + \brief Store-Release Exclusive (32 bit) + \details Executes a STL exclusive instruction for 32 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + \return 0 Function succeeded + \return 1 Function failed + */ +#define __STLEX (uint32_t)__builtin_arm_stlex + +#endif /* ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) */ + +/*@}*/ /* end of group CMSIS_Core_InstructionInterface */ + + +/* ########################### Core Function Access ########################### */ +/** \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_RegAccFunctions CMSIS Core Register Access Functions + @{ + */ + +/** + \brief Enable IRQ Interrupts + \details Enables IRQ interrupts by clearing special-purpose register PRIMASK. + Can only be executed in Privileged modes. + */ +#ifndef __ARM_COMPAT_H +__STATIC_FORCEINLINE void __enable_irq(void) +{ + __ASM volatile ("cpsie i" : : : "memory"); +} +#endif + + +/** + \brief Disable IRQ Interrupts + \details Disables IRQ interrupts by setting special-purpose register PRIMASK. + Can only be executed in Privileged modes. + */ +#ifndef __ARM_COMPAT_H +__STATIC_FORCEINLINE void __disable_irq(void) +{ + __ASM volatile ("cpsid i" : : : "memory"); +} +#endif + + +/** + \brief Get Control Register + \details Returns the content of the Control Register. + \return Control Register value + */ +__STATIC_FORCEINLINE uint32_t __get_CONTROL(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, control" : "=r" (result) ); + return(result); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Control Register (non-secure) + \details Returns the content of the non-secure Control Register when in secure mode. + \return non-secure Control Register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_CONTROL_NS(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, control_ns" : "=r" (result) ); + return(result); +} +#endif + + +/** + \brief Set Control Register + \details Writes the given value to the Control Register. + \param [in] control Control Register value to set + */ +__STATIC_FORCEINLINE void __set_CONTROL(uint32_t control) +{ + __ASM volatile ("MSR control, %0" : : "r" (control) : "memory"); + __ISB(); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Control Register (non-secure) + \details Writes the given value to the non-secure Control Register when in secure state. + \param [in] control Control Register value to set + */ +__STATIC_FORCEINLINE void __TZ_set_CONTROL_NS(uint32_t control) +{ + __ASM volatile ("MSR control_ns, %0" : : "r" (control) : "memory"); + __ISB(); +} +#endif + + +/** + \brief Get IPSR Register + \details Returns the content of the IPSR Register. + \return IPSR Register value + */ +__STATIC_FORCEINLINE uint32_t __get_IPSR(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, ipsr" : "=r" (result) ); + return(result); +} + + +/** + \brief Get APSR Register + \details Returns the content of the APSR Register. + \return APSR Register value + */ +__STATIC_FORCEINLINE uint32_t __get_APSR(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, apsr" : "=r" (result) ); + return(result); +} + + +/** + \brief Get xPSR Register + \details Returns the content of the xPSR Register. + \return xPSR Register value + */ +__STATIC_FORCEINLINE uint32_t __get_xPSR(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, xpsr" : "=r" (result) ); + return(result); +} + + +/** + \brief Get Process Stack Pointer + \details Returns the current value of the Process Stack Pointer (PSP). + \return PSP Register value + */ +__STATIC_FORCEINLINE uint32_t __get_PSP(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, psp" : "=r" (result) ); + return(result); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Process Stack Pointer (non-secure) + \details Returns the current value of the non-secure Process Stack Pointer (PSP) when in secure state. + \return PSP Register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_PSP_NS(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, psp_ns" : "=r" (result) ); + return(result); +} +#endif + + +/** + \brief Set Process Stack Pointer + \details Assigns the given value to the Process Stack Pointer (PSP). + \param [in] topOfProcStack Process Stack Pointer value to set + */ +__STATIC_FORCEINLINE void __set_PSP(uint32_t topOfProcStack) +{ + __ASM volatile ("MSR psp, %0" : : "r" (topOfProcStack) : ); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Process Stack Pointer (non-secure) + \details Assigns the given value to the non-secure Process Stack Pointer (PSP) when in secure state. + \param [in] topOfProcStack Process Stack Pointer value to set + */ +__STATIC_FORCEINLINE void __TZ_set_PSP_NS(uint32_t topOfProcStack) +{ + __ASM volatile ("MSR psp_ns, %0" : : "r" (topOfProcStack) : ); +} +#endif + + +/** + \brief Get Main Stack Pointer + \details Returns the current value of the Main Stack Pointer (MSP). + \return MSP Register value + */ +__STATIC_FORCEINLINE uint32_t __get_MSP(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, msp" : "=r" (result) ); + return(result); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Main Stack Pointer (non-secure) + \details Returns the current value of the non-secure Main Stack Pointer (MSP) when in secure state. + \return MSP Register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_MSP_NS(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, msp_ns" : "=r" (result) ); + return(result); +} +#endif + + +/** + \brief Set Main Stack Pointer + \details Assigns the given value to the Main Stack Pointer (MSP). + \param [in] topOfMainStack Main Stack Pointer value to set + */ +__STATIC_FORCEINLINE void __set_MSP(uint32_t topOfMainStack) +{ + __ASM volatile ("MSR msp, %0" : : "r" (topOfMainStack) : ); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Main Stack Pointer (non-secure) + \details Assigns the given value to the non-secure Main Stack Pointer (MSP) when in secure state. + \param [in] topOfMainStack Main Stack Pointer value to set + */ +__STATIC_FORCEINLINE void __TZ_set_MSP_NS(uint32_t topOfMainStack) +{ + __ASM volatile ("MSR msp_ns, %0" : : "r" (topOfMainStack) : ); +} +#endif + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Stack Pointer (non-secure) + \details Returns the current value of the non-secure Stack Pointer (SP) when in secure state. + \return SP Register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_SP_NS(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, sp_ns" : "=r" (result) ); + return(result); +} + + +/** + \brief Set Stack Pointer (non-secure) + \details Assigns the given value to the non-secure Stack Pointer (SP) when in secure state. + \param [in] topOfStack Stack Pointer value to set + */ +__STATIC_FORCEINLINE void __TZ_set_SP_NS(uint32_t topOfStack) +{ + __ASM volatile ("MSR sp_ns, %0" : : "r" (topOfStack) : ); +} +#endif + + +/** + \brief Get Priority Mask + \details Returns the current state of the priority mask bit from the Priority Mask Register. + \return Priority Mask value + */ +__STATIC_FORCEINLINE uint32_t __get_PRIMASK(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, primask" : "=r" (result) ); + return(result); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Priority Mask (non-secure) + \details Returns the current state of the non-secure priority mask bit from the Priority Mask Register when in secure state. + \return Priority Mask value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_PRIMASK_NS(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, primask_ns" : "=r" (result) ); + return(result); +} +#endif + + +/** + \brief Set Priority Mask + \details Assigns the given value to the Priority Mask Register. + \param [in] priMask Priority Mask + */ +__STATIC_FORCEINLINE void __set_PRIMASK(uint32_t priMask) +{ + __ASM volatile ("MSR primask, %0" : : "r" (priMask) : "memory"); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Priority Mask (non-secure) + \details Assigns the given value to the non-secure Priority Mask Register when in secure state. + \param [in] priMask Priority Mask + */ +__STATIC_FORCEINLINE void __TZ_set_PRIMASK_NS(uint32_t priMask) +{ + __ASM volatile ("MSR primask_ns, %0" : : "r" (priMask) : "memory"); +} +#endif + + +#if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) ) +/** + \brief Enable FIQ + \details Enables FIQ interrupts by clearing special-purpose register FAULTMASK. + Can only be executed in Privileged modes. + */ +__STATIC_FORCEINLINE void __enable_fault_irq(void) +{ + __ASM volatile ("cpsie f" : : : "memory"); +} + + +/** + \brief Disable FIQ + \details Disables FIQ interrupts by setting special-purpose register FAULTMASK. + Can only be executed in Privileged modes. + */ +__STATIC_FORCEINLINE void __disable_fault_irq(void) +{ + __ASM volatile ("cpsid f" : : : "memory"); +} + + +/** + \brief Get Base Priority + \details Returns the current value of the Base Priority register. + \return Base Priority register value + */ +__STATIC_FORCEINLINE uint32_t __get_BASEPRI(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, basepri" : "=r" (result) ); + return(result); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Base Priority (non-secure) + \details Returns the current value of the non-secure Base Priority register when in secure state. + \return Base Priority register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_BASEPRI_NS(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, basepri_ns" : "=r" (result) ); + return(result); +} +#endif + + +/** + \brief Set Base Priority + \details Assigns the given value to the Base Priority register. + \param [in] basePri Base Priority value to set + */ +__STATIC_FORCEINLINE void __set_BASEPRI(uint32_t basePri) +{ + __ASM volatile ("MSR basepri, %0" : : "r" (basePri) : "memory"); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Base Priority (non-secure) + \details Assigns the given value to the non-secure Base Priority register when in secure state. + \param [in] basePri Base Priority value to set + */ +__STATIC_FORCEINLINE void __TZ_set_BASEPRI_NS(uint32_t basePri) +{ + __ASM volatile ("MSR basepri_ns, %0" : : "r" (basePri) : "memory"); +} +#endif + + +/** + \brief Set Base Priority with condition + \details Assigns the given value to the Base Priority register only if BASEPRI masking is disabled, + or the new value increases the BASEPRI priority level. + \param [in] basePri Base Priority value to set + */ +__STATIC_FORCEINLINE void __set_BASEPRI_MAX(uint32_t basePri) +{ + __ASM volatile ("MSR basepri_max, %0" : : "r" (basePri) : "memory"); +} + + +/** + \brief Get Fault Mask + \details Returns the current value of the Fault Mask register. + \return Fault Mask register value + */ +__STATIC_FORCEINLINE uint32_t __get_FAULTMASK(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, faultmask" : "=r" (result) ); + return(result); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Fault Mask (non-secure) + \details Returns the current value of the non-secure Fault Mask register when in secure state. + \return Fault Mask register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_FAULTMASK_NS(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, faultmask_ns" : "=r" (result) ); + return(result); +} +#endif + + +/** + \brief Set Fault Mask + \details Assigns the given value to the Fault Mask register. + \param [in] faultMask Fault Mask value to set + */ +__STATIC_FORCEINLINE void __set_FAULTMASK(uint32_t faultMask) +{ + __ASM volatile ("MSR faultmask, %0" : : "r" (faultMask) : "memory"); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Fault Mask (non-secure) + \details Assigns the given value to the non-secure Fault Mask register when in secure state. + \param [in] faultMask Fault Mask value to set + */ +__STATIC_FORCEINLINE void __TZ_set_FAULTMASK_NS(uint32_t faultMask) +{ + __ASM volatile ("MSR faultmask_ns, %0" : : "r" (faultMask) : "memory"); +} +#endif + +#endif /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) ) */ + + +#if ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) + +/** + \brief Get Process Stack Pointer Limit + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence zero is returned always in non-secure + mode. + + \details Returns the current value of the Process Stack Pointer Limit (PSPLIM). + \return PSPLIM Register value + */ +__STATIC_FORCEINLINE uint32_t __get_PSPLIM(void) +{ +#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) + // without main extensions, the non-secure PSPLIM is RAZ/WI + return 0U; +#else + uint32_t result; + __ASM volatile ("MRS %0, psplim" : "=r" (result) ); + return result; +#endif +} + +#if (defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Process Stack Pointer Limit (non-secure) + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence zero is returned always in non-secure + mode. + + \details Returns the current value of the non-secure Process Stack Pointer Limit (PSPLIM) when in secure state. + \return PSPLIM Register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_PSPLIM_NS(void) +{ +#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))) + // without main extensions, the non-secure PSPLIM is RAZ/WI + return 0U; +#else + uint32_t result; + __ASM volatile ("MRS %0, psplim_ns" : "=r" (result) ); + return result; +#endif +} +#endif + + +/** + \brief Set Process Stack Pointer Limit + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence the write is silently ignored in non-secure + mode. + + \details Assigns the given value to the Process Stack Pointer Limit (PSPLIM). + \param [in] ProcStackPtrLimit Process Stack Pointer Limit value to set + */ +__STATIC_FORCEINLINE void __set_PSPLIM(uint32_t ProcStackPtrLimit) +{ +#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) + // without main extensions, the non-secure PSPLIM is RAZ/WI + (void)ProcStackPtrLimit; +#else + __ASM volatile ("MSR psplim, %0" : : "r" (ProcStackPtrLimit)); +#endif +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Process Stack Pointer (non-secure) + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence the write is silently ignored in non-secure + mode. + + \details Assigns the given value to the non-secure Process Stack Pointer Limit (PSPLIM) when in secure state. + \param [in] ProcStackPtrLimit Process Stack Pointer Limit value to set + */ +__STATIC_FORCEINLINE void __TZ_set_PSPLIM_NS(uint32_t ProcStackPtrLimit) +{ +#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))) + // without main extensions, the non-secure PSPLIM is RAZ/WI + (void)ProcStackPtrLimit; +#else + __ASM volatile ("MSR psplim_ns, %0\n" : : "r" (ProcStackPtrLimit)); +#endif +} +#endif + + +/** + \brief Get Main Stack Pointer Limit + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence zero is returned always. + + \details Returns the current value of the Main Stack Pointer Limit (MSPLIM). + \return MSPLIM Register value + */ +__STATIC_FORCEINLINE uint32_t __get_MSPLIM(void) +{ +#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) + // without main extensions, the non-secure MSPLIM is RAZ/WI + return 0U; +#else + uint32_t result; + __ASM volatile ("MRS %0, msplim" : "=r" (result) ); + return result; +#endif +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Main Stack Pointer Limit (non-secure) + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence zero is returned always. + + \details Returns the current value of the non-secure Main Stack Pointer Limit(MSPLIM) when in secure state. + \return MSPLIM Register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_MSPLIM_NS(void) +{ +#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))) + // without main extensions, the non-secure MSPLIM is RAZ/WI + return 0U; +#else + uint32_t result; + __ASM volatile ("MRS %0, msplim_ns" : "=r" (result) ); + return result; +#endif +} +#endif + + +/** + \brief Set Main Stack Pointer Limit + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence the write is silently ignored. + + \details Assigns the given value to the Main Stack Pointer Limit (MSPLIM). + \param [in] MainStackPtrLimit Main Stack Pointer Limit value to set + */ +__STATIC_FORCEINLINE void __set_MSPLIM(uint32_t MainStackPtrLimit) +{ +#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) + // without main extensions, the non-secure MSPLIM is RAZ/WI + (void)MainStackPtrLimit; +#else + __ASM volatile ("MSR msplim, %0" : : "r" (MainStackPtrLimit)); +#endif +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Main Stack Pointer Limit (non-secure) + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence the write is silently ignored. + + \details Assigns the given value to the non-secure Main Stack Pointer Limit (MSPLIM) when in secure state. + \param [in] MainStackPtrLimit Main Stack Pointer value to set + */ +__STATIC_FORCEINLINE void __TZ_set_MSPLIM_NS(uint32_t MainStackPtrLimit) +{ +#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))) + // without main extensions, the non-secure MSPLIM is RAZ/WI + (void)MainStackPtrLimit; +#else + __ASM volatile ("MSR msplim_ns, %0" : : "r" (MainStackPtrLimit)); +#endif +} +#endif + +#endif /* ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) */ + +/** + \brief Get FPSCR + \details Returns the current value of the Floating Point Status/Control register. + \return Floating Point Status/Control register value + */ +#if ((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \ + (defined (__FPU_USED ) && (__FPU_USED == 1U)) ) +#define __get_FPSCR (uint32_t)__builtin_arm_get_fpscr +#else +#define __get_FPSCR() ((uint32_t)0U) +#endif + +/** + \brief Set FPSCR + \details Assigns the given value to the Floating Point Status/Control register. + \param [in] fpscr Floating Point Status/Control value to set + */ +#if ((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \ + (defined (__FPU_USED ) && (__FPU_USED == 1U)) ) +#define __set_FPSCR __builtin_arm_set_fpscr +#else +#define __set_FPSCR(x) ((void)(x)) +#endif + + +/*@} end of CMSIS_Core_RegAccFunctions */ + + +/* ################### Compiler specific Intrinsics ########################### */ +/** \defgroup CMSIS_SIMD_intrinsics CMSIS SIMD Intrinsics + Access to dedicated SIMD instructions + @{ +*/ + +#if (defined (__ARM_FEATURE_DSP) && (__ARM_FEATURE_DSP == 1)) + +__STATIC_FORCEINLINE uint32_t __SADD8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("sadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __QADD8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("qadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SHADD8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("shadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UADD8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UQADD8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uqadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UHADD8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uhadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + + +__STATIC_FORCEINLINE uint32_t __SSUB8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("ssub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __QSUB8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("qsub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SHSUB8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("shsub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __USUB8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("usub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UQSUB8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uqsub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UHSUB8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uhsub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + + +__STATIC_FORCEINLINE uint32_t __SADD16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("sadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __QADD16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("qadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SHADD16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("shadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UADD16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UQADD16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uqadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UHADD16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uhadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SSUB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("ssub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __QSUB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("qsub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SHSUB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("shsub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __USUB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("usub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UQSUB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uqsub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UHSUB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uhsub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SASX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("sasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __QASX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("qasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SHASX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("shasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UASX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UQASX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uqasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UHASX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uhasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SSAX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("ssax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __QSAX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("qsax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SHSAX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("shsax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __USAX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("usax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UQSAX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uqsax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UHSAX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uhsax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __USAD8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("usad8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __USADA8(uint32_t op1, uint32_t op2, uint32_t op3) +{ + uint32_t result; + + __ASM volatile ("usada8 %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) ); + return(result); +} + +#define __SSAT16(ARG1,ARG2) \ +({ \ + int32_t __RES, __ARG1 = (ARG1); \ + __ASM ("ssat16 %0, %1, %2" : "=r" (__RES) : "I" (ARG2), "r" (__ARG1) ); \ + __RES; \ + }) + +#define __USAT16(ARG1,ARG2) \ +({ \ + uint32_t __RES, __ARG1 = (ARG1); \ + __ASM ("usat16 %0, %1, %2" : "=r" (__RES) : "I" (ARG2), "r" (__ARG1) ); \ + __RES; \ + }) + +__STATIC_FORCEINLINE uint32_t __UXTB16(uint32_t op1) +{ + uint32_t result; + + __ASM volatile ("uxtb16 %0, %1" : "=r" (result) : "r" (op1)); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UXTAB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uxtab16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SXTB16(uint32_t op1) +{ + uint32_t result; + + __ASM volatile ("sxtb16 %0, %1" : "=r" (result) : "r" (op1)); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SXTAB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("sxtab16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SMUAD (uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("smuad %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SMUADX (uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("smuadx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SMLAD (uint32_t op1, uint32_t op2, uint32_t op3) +{ + uint32_t result; + + __ASM volatile ("smlad %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SMLADX (uint32_t op1, uint32_t op2, uint32_t op3) +{ + uint32_t result; + + __ASM volatile ("smladx %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) ); + return(result); +} + +__STATIC_FORCEINLINE uint64_t __SMLALD (uint32_t op1, uint32_t op2, uint64_t acc) +{ + union llreg_u{ + uint32_t w32[2]; + uint64_t w64; + } llr; + llr.w64 = acc; + +#ifndef __ARMEB__ /* Little endian */ + __ASM volatile ("smlald %0, %1, %2, %3" : "=r" (llr.w32[0]), "=r" (llr.w32[1]): "r" (op1), "r" (op2) , "0" (llr.w32[0]), "1" (llr.w32[1]) ); +#else /* Big endian */ + __ASM volatile ("smlald %0, %1, %2, %3" : "=r" (llr.w32[1]), "=r" (llr.w32[0]): "r" (op1), "r" (op2) , "0" (llr.w32[1]), "1" (llr.w32[0]) ); +#endif + + return(llr.w64); +} + +__STATIC_FORCEINLINE uint64_t __SMLALDX (uint32_t op1, uint32_t op2, uint64_t acc) +{ + union llreg_u{ + uint32_t w32[2]; + uint64_t w64; + } llr; + llr.w64 = acc; + +#ifndef __ARMEB__ /* Little endian */ + __ASM volatile ("smlaldx %0, %1, %2, %3" : "=r" (llr.w32[0]), "=r" (llr.w32[1]): "r" (op1), "r" (op2) , "0" (llr.w32[0]), "1" (llr.w32[1]) ); +#else /* Big endian */ + __ASM volatile ("smlaldx %0, %1, %2, %3" : "=r" (llr.w32[1]), "=r" (llr.w32[0]): "r" (op1), "r" (op2) , "0" (llr.w32[1]), "1" (llr.w32[0]) ); +#endif + + return(llr.w64); +} + +__STATIC_FORCEINLINE uint32_t __SMUSD (uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("smusd %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SMUSDX (uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("smusdx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SMLSD (uint32_t op1, uint32_t op2, uint32_t op3) +{ + uint32_t result; + + __ASM volatile ("smlsd %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SMLSDX (uint32_t op1, uint32_t op2, uint32_t op3) +{ + uint32_t result; + + __ASM volatile ("smlsdx %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) ); + return(result); +} + +__STATIC_FORCEINLINE uint64_t __SMLSLD (uint32_t op1, uint32_t op2, uint64_t acc) +{ + union llreg_u{ + uint32_t w32[2]; + uint64_t w64; + } llr; + llr.w64 = acc; + +#ifndef __ARMEB__ /* Little endian */ + __ASM volatile ("smlsld %0, %1, %2, %3" : "=r" (llr.w32[0]), "=r" (llr.w32[1]): "r" (op1), "r" (op2) , "0" (llr.w32[0]), "1" (llr.w32[1]) ); +#else /* Big endian */ + __ASM volatile ("smlsld %0, %1, %2, %3" : "=r" (llr.w32[1]), "=r" (llr.w32[0]): "r" (op1), "r" (op2) , "0" (llr.w32[1]), "1" (llr.w32[0]) ); +#endif + + return(llr.w64); +} + +__STATIC_FORCEINLINE uint64_t __SMLSLDX (uint32_t op1, uint32_t op2, uint64_t acc) +{ + union llreg_u{ + uint32_t w32[2]; + uint64_t w64; + } llr; + llr.w64 = acc; + +#ifndef __ARMEB__ /* Little endian */ + __ASM volatile ("smlsldx %0, %1, %2, %3" : "=r" (llr.w32[0]), "=r" (llr.w32[1]): "r" (op1), "r" (op2) , "0" (llr.w32[0]), "1" (llr.w32[1]) ); +#else /* Big endian */ + __ASM volatile ("smlsldx %0, %1, %2, %3" : "=r" (llr.w32[1]), "=r" (llr.w32[0]): "r" (op1), "r" (op2) , "0" (llr.w32[1]), "1" (llr.w32[0]) ); +#endif + + return(llr.w64); +} + +__STATIC_FORCEINLINE uint32_t __SEL (uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("sel %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE int32_t __QADD( int32_t op1, int32_t op2) +{ + int32_t result; + + __ASM volatile ("qadd %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE int32_t __QSUB( int32_t op1, int32_t op2) +{ + int32_t result; + + __ASM volatile ("qsub %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +#define __PKHBT(ARG1,ARG2,ARG3) ( ((((uint32_t)(ARG1)) ) & 0x0000FFFFUL) | \ + ((((uint32_t)(ARG2)) << (ARG3)) & 0xFFFF0000UL) ) + +#define __PKHTB(ARG1,ARG2,ARG3) ( ((((uint32_t)(ARG1)) ) & 0xFFFF0000UL) | \ + ((((uint32_t)(ARG2)) >> (ARG3)) & 0x0000FFFFUL) ) + +#define __SXTB16_RORn(ARG1, ARG2) __SXTB16(__ROR(ARG1, ARG2)) + +#define __SXTAB16_RORn(ARG1, ARG2, ARG3) __SXTAB16(ARG1, __ROR(ARG2, ARG3)) + +__STATIC_FORCEINLINE int32_t __SMMLA (int32_t op1, int32_t op2, int32_t op3) +{ + int32_t result; + + __ASM volatile ("smmla %0, %1, %2, %3" : "=r" (result): "r" (op1), "r" (op2), "r" (op3) ); + return(result); +} + +#endif /* (__ARM_FEATURE_DSP == 1) */ +/*@} end of group CMSIS_SIMD_intrinsics */ + + +#endif /* __CMSIS_ARMCLANG_H */ diff --git a/bsp/renesas/ra8m1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/cmsis_compiler.h b/bsp/renesas/ra8m1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/cmsis_compiler.h new file mode 100644 index 000000000000..adbf296f15a4 --- /dev/null +++ b/bsp/renesas/ra8m1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/cmsis_compiler.h @@ -0,0 +1,283 @@ +/**************************************************************************//** + * @file cmsis_compiler.h + * @brief CMSIS compiler generic header file + * @version V5.1.0 + * @date 09. October 2018 + ******************************************************************************/ +/* + * Copyright (c) 2009-2018 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef __CMSIS_COMPILER_H +#define __CMSIS_COMPILER_H + +#include + +/* + * Arm Compiler 4/5 + */ +#if defined ( __CC_ARM ) + #include "cmsis_armcc.h" + + +/* + * Arm Compiler 6.6 LTM (armclang) + */ +#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) && (__ARMCC_VERSION < 6100100) + #include "cmsis_armclang_ltm.h" + + /* + * Arm Compiler above 6.10.1 (armclang) + */ +#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6100100) + #include "cmsis_armclang.h" + + +/* + * GNU Compiler + */ +#elif defined ( __GNUC__ ) + #include "cmsis_gcc.h" + + +/* + * IAR Compiler + */ +#elif defined ( __ICCARM__ ) + #include + + +/* + * TI Arm Compiler + */ +#elif defined ( __TI_ARM__ ) + #include + + #ifndef __ASM + #define __ASM __asm + #endif + #ifndef __INLINE + #define __INLINE inline + #endif + #ifndef __STATIC_INLINE + #define __STATIC_INLINE static inline + #endif + #ifndef __STATIC_FORCEINLINE + #define __STATIC_FORCEINLINE __STATIC_INLINE + #endif + #ifndef __NO_RETURN + #define __NO_RETURN __attribute__((noreturn)) + #endif + #ifndef __USED + #define __USED __attribute__((used)) + #endif + #ifndef __WEAK + #define __WEAK __attribute__((weak)) + #endif + #ifndef __PACKED + #define __PACKED __attribute__((packed)) + #endif + #ifndef __PACKED_STRUCT + #define __PACKED_STRUCT struct __attribute__((packed)) + #endif + #ifndef __PACKED_UNION + #define __PACKED_UNION union __attribute__((packed)) + #endif + #ifndef __UNALIGNED_UINT32 /* deprecated */ + struct __attribute__((packed)) T_UINT32 { uint32_t v; }; + #define __UNALIGNED_UINT32(x) (((struct T_UINT32 *)(x))->v) + #endif + #ifndef __UNALIGNED_UINT16_WRITE + __PACKED_STRUCT T_UINT16_WRITE { uint16_t v; }; + #define __UNALIGNED_UINT16_WRITE(addr, val) (void)((((struct T_UINT16_WRITE *)(void*)(addr))->v) = (val)) + #endif + #ifndef __UNALIGNED_UINT16_READ + __PACKED_STRUCT T_UINT16_READ { uint16_t v; }; + #define __UNALIGNED_UINT16_READ(addr) (((const struct T_UINT16_READ *)(const void *)(addr))->v) + #endif + #ifndef __UNALIGNED_UINT32_WRITE + __PACKED_STRUCT T_UINT32_WRITE { uint32_t v; }; + #define __UNALIGNED_UINT32_WRITE(addr, val) (void)((((struct T_UINT32_WRITE *)(void *)(addr))->v) = (val)) + #endif + #ifndef __UNALIGNED_UINT32_READ + __PACKED_STRUCT T_UINT32_READ { uint32_t v; }; + #define __UNALIGNED_UINT32_READ(addr) (((const struct T_UINT32_READ *)(const void *)(addr))->v) + #endif + #ifndef __ALIGNED + #define __ALIGNED(x) __attribute__((aligned(x))) + #endif + #ifndef __RESTRICT + #define __RESTRICT __restrict + #endif + #ifndef __COMPILER_BARRIER + #warning No compiler specific solution for __COMPILER_BARRIER. __COMPILER_BARRIER is ignored. + #define __COMPILER_BARRIER() (void)0 + #endif + + +/* + * TASKING Compiler + */ +#elif defined ( __TASKING__ ) + /* + * The CMSIS functions have been implemented as intrinsics in the compiler. + * Please use "carm -?i" to get an up to date list of all intrinsics, + * Including the CMSIS ones. + */ + + #ifndef __ASM + #define __ASM __asm + #endif + #ifndef __INLINE + #define __INLINE inline + #endif + #ifndef __STATIC_INLINE + #define __STATIC_INLINE static inline + #endif + #ifndef __STATIC_FORCEINLINE + #define __STATIC_FORCEINLINE __STATIC_INLINE + #endif + #ifndef __NO_RETURN + #define __NO_RETURN __attribute__((noreturn)) + #endif + #ifndef __USED + #define __USED __attribute__((used)) + #endif + #ifndef __WEAK + #define __WEAK __attribute__((weak)) + #endif + #ifndef __PACKED + #define __PACKED __packed__ + #endif + #ifndef __PACKED_STRUCT + #define __PACKED_STRUCT struct __packed__ + #endif + #ifndef __PACKED_UNION + #define __PACKED_UNION union __packed__ + #endif + #ifndef __UNALIGNED_UINT32 /* deprecated */ + struct __packed__ T_UINT32 { uint32_t v; }; + #define __UNALIGNED_UINT32(x) (((struct T_UINT32 *)(x))->v) + #endif + #ifndef __UNALIGNED_UINT16_WRITE + __PACKED_STRUCT T_UINT16_WRITE { uint16_t v; }; + #define __UNALIGNED_UINT16_WRITE(addr, val) (void)((((struct T_UINT16_WRITE *)(void *)(addr))->v) = (val)) + #endif + #ifndef __UNALIGNED_UINT16_READ + __PACKED_STRUCT T_UINT16_READ { uint16_t v; }; + #define __UNALIGNED_UINT16_READ(addr) (((const struct T_UINT16_READ *)(const void *)(addr))->v) + #endif + #ifndef __UNALIGNED_UINT32_WRITE + __PACKED_STRUCT T_UINT32_WRITE { uint32_t v; }; + #define __UNALIGNED_UINT32_WRITE(addr, val) (void)((((struct T_UINT32_WRITE *)(void *)(addr))->v) = (val)) + #endif + #ifndef __UNALIGNED_UINT32_READ + __PACKED_STRUCT T_UINT32_READ { uint32_t v; }; + #define __UNALIGNED_UINT32_READ(addr) (((const struct T_UINT32_READ *)(const void *)(addr))->v) + #endif + #ifndef __ALIGNED + #define __ALIGNED(x) __align(x) + #endif + #ifndef __RESTRICT + #warning No compiler specific solution for __RESTRICT. __RESTRICT is ignored. + #define __RESTRICT + #endif + #ifndef __COMPILER_BARRIER + #warning No compiler specific solution for __COMPILER_BARRIER. __COMPILER_BARRIER is ignored. + #define __COMPILER_BARRIER() (void)0 + #endif + + +/* + * COSMIC Compiler + */ +#elif defined ( __CSMC__ ) + #include + + #ifndef __ASM + #define __ASM _asm + #endif + #ifndef __INLINE + #define __INLINE inline + #endif + #ifndef __STATIC_INLINE + #define __STATIC_INLINE static inline + #endif + #ifndef __STATIC_FORCEINLINE + #define __STATIC_FORCEINLINE __STATIC_INLINE + #endif + #ifndef __NO_RETURN + // NO RETURN is automatically detected hence no warning here + #define __NO_RETURN + #endif + #ifndef __USED + #warning No compiler specific solution for __USED. __USED is ignored. + #define __USED + #endif + #ifndef __WEAK + #define __WEAK __weak + #endif + #ifndef __PACKED + #define __PACKED @packed + #endif + #ifndef __PACKED_STRUCT + #define __PACKED_STRUCT @packed struct + #endif + #ifndef __PACKED_UNION + #define __PACKED_UNION @packed union + #endif + #ifndef __UNALIGNED_UINT32 /* deprecated */ + @packed struct T_UINT32 { uint32_t v; }; + #define __UNALIGNED_UINT32(x) (((struct T_UINT32 *)(x))->v) + #endif + #ifndef __UNALIGNED_UINT16_WRITE + __PACKED_STRUCT T_UINT16_WRITE { uint16_t v; }; + #define __UNALIGNED_UINT16_WRITE(addr, val) (void)((((struct T_UINT16_WRITE *)(void *)(addr))->v) = (val)) + #endif + #ifndef __UNALIGNED_UINT16_READ + __PACKED_STRUCT T_UINT16_READ { uint16_t v; }; + #define __UNALIGNED_UINT16_READ(addr) (((const struct T_UINT16_READ *)(const void *)(addr))->v) + #endif + #ifndef __UNALIGNED_UINT32_WRITE + __PACKED_STRUCT T_UINT32_WRITE { uint32_t v; }; + #define __UNALIGNED_UINT32_WRITE(addr, val) (void)((((struct T_UINT32_WRITE *)(void *)(addr))->v) = (val)) + #endif + #ifndef __UNALIGNED_UINT32_READ + __PACKED_STRUCT T_UINT32_READ { uint32_t v; }; + #define __UNALIGNED_UINT32_READ(addr) (((const struct T_UINT32_READ *)(const void *)(addr))->v) + #endif + #ifndef __ALIGNED + #warning No compiler specific solution for __ALIGNED. __ALIGNED is ignored. + #define __ALIGNED(x) + #endif + #ifndef __RESTRICT + #warning No compiler specific solution for __RESTRICT. __RESTRICT is ignored. + #define __RESTRICT + #endif + #ifndef __COMPILER_BARRIER + #warning No compiler specific solution for __COMPILER_BARRIER. __COMPILER_BARRIER is ignored. + #define __COMPILER_BARRIER() (void)0 + #endif + + +#else + #error Unknown compiler. +#endif + + +#endif /* __CMSIS_COMPILER_H */ + diff --git a/bsp/renesas/ra8m1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/cmsis_gcc.h b/bsp/renesas/ra8m1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/cmsis_gcc.h new file mode 100644 index 000000000000..67bda4ef3c38 --- /dev/null +++ b/bsp/renesas/ra8m1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/cmsis_gcc.h @@ -0,0 +1,2211 @@ +/**************************************************************************//** + * @file cmsis_gcc.h + * @brief CMSIS compiler GCC header file + * @version V5.4.1 + * @date 27. May 2021 + ******************************************************************************/ +/* + * Copyright (c) 2009-2021 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef __CMSIS_GCC_H +#define __CMSIS_GCC_H + +/* ignore some GCC warnings */ +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wsign-conversion" +#pragma GCC diagnostic ignored "-Wconversion" +#pragma GCC diagnostic ignored "-Wunused-parameter" + +/* Fallback for __has_builtin */ +#ifndef __has_builtin + #define __has_builtin(x) (0) +#endif + +/* CMSIS compiler specific defines */ +#ifndef __ASM + #define __ASM __asm +#endif +#ifndef __INLINE + #define __INLINE inline +#endif +#ifndef __STATIC_INLINE + #define __STATIC_INLINE static inline +#endif +#ifndef __STATIC_FORCEINLINE + #define __STATIC_FORCEINLINE __attribute__((always_inline)) static inline +#endif +#ifndef __NO_RETURN + #define __NO_RETURN __attribute__((__noreturn__)) +#endif +#ifndef __USED + #define __USED __attribute__((used)) +#endif +#ifndef __WEAK + #define __WEAK __attribute__((weak)) +#endif +#ifndef __PACKED + #define __PACKED __attribute__((packed, aligned(1))) +#endif +#ifndef __PACKED_STRUCT + #define __PACKED_STRUCT struct __attribute__((packed, aligned(1))) +#endif +#ifndef __PACKED_UNION + #define __PACKED_UNION union __attribute__((packed, aligned(1))) +#endif +#ifndef __UNALIGNED_UINT32 /* deprecated */ + #pragma GCC diagnostic push + #pragma GCC diagnostic ignored "-Wpacked" + #pragma GCC diagnostic ignored "-Wattributes" + struct __attribute__((packed)) T_UINT32 { uint32_t v; }; + #pragma GCC diagnostic pop + #define __UNALIGNED_UINT32(x) (((struct T_UINT32 *)(x))->v) +#endif +#ifndef __UNALIGNED_UINT16_WRITE + #pragma GCC diagnostic push + #pragma GCC diagnostic ignored "-Wpacked" + #pragma GCC diagnostic ignored "-Wattributes" + __PACKED_STRUCT T_UINT16_WRITE { uint16_t v; }; + #pragma GCC diagnostic pop + #define __UNALIGNED_UINT16_WRITE(addr, val) (void)((((struct T_UINT16_WRITE *)(void *)(addr))->v) = (val)) +#endif +#ifndef __UNALIGNED_UINT16_READ + #pragma GCC diagnostic push + #pragma GCC diagnostic ignored "-Wpacked" + #pragma GCC diagnostic ignored "-Wattributes" + __PACKED_STRUCT T_UINT16_READ { uint16_t v; }; + #pragma GCC diagnostic pop + #define __UNALIGNED_UINT16_READ(addr) (((const struct T_UINT16_READ *)(const void *)(addr))->v) +#endif +#ifndef __UNALIGNED_UINT32_WRITE + #pragma GCC diagnostic push + #pragma GCC diagnostic ignored "-Wpacked" + #pragma GCC diagnostic ignored "-Wattributes" + __PACKED_STRUCT T_UINT32_WRITE { uint32_t v; }; + #pragma GCC diagnostic pop + #define __UNALIGNED_UINT32_WRITE(addr, val) (void)((((struct T_UINT32_WRITE *)(void *)(addr))->v) = (val)) +#endif +#ifndef __UNALIGNED_UINT32_READ + #pragma GCC diagnostic push + #pragma GCC diagnostic ignored "-Wpacked" + #pragma GCC diagnostic ignored "-Wattributes" + __PACKED_STRUCT T_UINT32_READ { uint32_t v; }; + #pragma GCC diagnostic pop + #define __UNALIGNED_UINT32_READ(addr) (((const struct T_UINT32_READ *)(const void *)(addr))->v) +#endif +#ifndef __ALIGNED + #define __ALIGNED(x) __attribute__((aligned(x))) +#endif +#ifndef __RESTRICT + #define __RESTRICT __restrict +#endif +#ifndef __COMPILER_BARRIER + #define __COMPILER_BARRIER() __ASM volatile("":::"memory") +#endif + +/* ######################### Startup and Lowlevel Init ######################## */ + +#ifndef __PROGRAM_START + +/** + \brief Initializes data and bss sections + \details This default implementations initialized all data and additional bss + sections relying on .copy.table and .zero.table specified properly + in the used linker script. + + */ +__STATIC_FORCEINLINE __NO_RETURN void __cmsis_start(void) +{ + extern void _start(void) __NO_RETURN; + + typedef struct { + uint32_t const* src; + uint32_t* dest; + uint32_t wlen; + } __copy_table_t; + + typedef struct { + uint32_t* dest; + uint32_t wlen; + } __zero_table_t; + + extern const __copy_table_t __copy_table_start__; + extern const __copy_table_t __copy_table_end__; + extern const __zero_table_t __zero_table_start__; + extern const __zero_table_t __zero_table_end__; + + for (__copy_table_t const* pTable = &__copy_table_start__; pTable < &__copy_table_end__; ++pTable) { + for(uint32_t i=0u; iwlen; ++i) { + pTable->dest[i] = pTable->src[i]; + } + } + + for (__zero_table_t const* pTable = &__zero_table_start__; pTable < &__zero_table_end__; ++pTable) { + for(uint32_t i=0u; iwlen; ++i) { + pTable->dest[i] = 0u; + } + } + + _start(); +} + +#define __PROGRAM_START __cmsis_start +#endif + +#ifndef __INITIAL_SP +#define __INITIAL_SP __StackTop +#endif + +#ifndef __STACK_LIMIT +#define __STACK_LIMIT __StackLimit +#endif + +#ifndef __VECTOR_TABLE +#define __VECTOR_TABLE __Vectors +#endif + +#ifndef __VECTOR_TABLE_ATTRIBUTE +#define __VECTOR_TABLE_ATTRIBUTE __attribute__((used, section(".vectors"))) +#endif + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +#ifndef __STACK_SEAL +#define __STACK_SEAL __StackSeal +#endif + +#ifndef __TZ_STACK_SEAL_SIZE +#define __TZ_STACK_SEAL_SIZE 8U +#endif + +#ifndef __TZ_STACK_SEAL_VALUE +#define __TZ_STACK_SEAL_VALUE 0xFEF5EDA5FEF5EDA5ULL +#endif + + +__STATIC_FORCEINLINE void __TZ_set_STACKSEAL_S (uint32_t* stackTop) { + *((uint64_t *)stackTop) = __TZ_STACK_SEAL_VALUE; +} +#endif + + +/* ########################## Core Instruction Access ######################### */ +/** \defgroup CMSIS_Core_InstructionInterface CMSIS Core Instruction Interface + Access to dedicated instructions + @{ +*/ + +/* Define macros for porting to both thumb1 and thumb2. + * For thumb1, use low register (r0-r7), specified by constraint "l" + * Otherwise, use general registers, specified by constraint "r" */ +#if defined (__thumb__) && !defined (__thumb2__) +#define __CMSIS_GCC_OUT_REG(r) "=l" (r) +#define __CMSIS_GCC_RW_REG(r) "+l" (r) +#define __CMSIS_GCC_USE_REG(r) "l" (r) +#else +#define __CMSIS_GCC_OUT_REG(r) "=r" (r) +#define __CMSIS_GCC_RW_REG(r) "+r" (r) +#define __CMSIS_GCC_USE_REG(r) "r" (r) +#endif + +/** + \brief No Operation + \details No Operation does nothing. This instruction can be used for code alignment purposes. + */ +#define __NOP() __ASM volatile ("nop") + +/** + \brief Wait For Interrupt + \details Wait For Interrupt is a hint instruction that suspends execution until one of a number of events occurs. + */ +#define __WFI() __ASM volatile ("wfi":::"memory") + + +/** + \brief Wait For Event + \details Wait For Event is a hint instruction that permits the processor to enter + a low-power state until one of a number of events occurs. + */ +#define __WFE() __ASM volatile ("wfe":::"memory") + + +/** + \brief Send Event + \details Send Event is a hint instruction. It causes an event to be signaled to the CPU. + */ +#define __SEV() __ASM volatile ("sev") + + +/** + \brief Instruction Synchronization Barrier + \details Instruction Synchronization Barrier flushes the pipeline in the processor, + so that all instructions following the ISB are fetched from cache or memory, + after the instruction has been completed. + */ +__STATIC_FORCEINLINE void __ISB(void) +{ + __ASM volatile ("isb 0xF":::"memory"); +} + + +/** + \brief Data Synchronization Barrier + \details Acts as a special kind of Data Memory Barrier. + It completes when all explicit memory accesses before this instruction complete. + */ +__STATIC_FORCEINLINE void __DSB(void) +{ + __ASM volatile ("dsb 0xF":::"memory"); +} + + +/** + \brief Data Memory Barrier + \details Ensures the apparent order of the explicit memory operations before + and after the instruction, without ensuring their completion. + */ +__STATIC_FORCEINLINE void __DMB(void) +{ + __ASM volatile ("dmb 0xF":::"memory"); +} + + +/** + \brief Reverse byte order (32 bit) + \details Reverses the byte order in unsigned integer value. For example, 0x12345678 becomes 0x78563412. + \param [in] value Value to reverse + \return Reversed value + */ +__STATIC_FORCEINLINE uint32_t __REV(uint32_t value) +{ +#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 5) + return __builtin_bswap32(value); +#else + uint32_t result; + + __ASM ("rev %0, %1" : __CMSIS_GCC_OUT_REG (result) : __CMSIS_GCC_USE_REG (value) ); + return result; +#endif +} + + +/** + \brief Reverse byte order (16 bit) + \details Reverses the byte order within each halfword of a word. For example, 0x12345678 becomes 0x34127856. + \param [in] value Value to reverse + \return Reversed value + */ +__STATIC_FORCEINLINE uint32_t __REV16(uint32_t value) +{ + uint32_t result; + + __ASM ("rev16 %0, %1" : __CMSIS_GCC_OUT_REG (result) : __CMSIS_GCC_USE_REG (value) ); + return result; +} + + +/** + \brief Reverse byte order (16 bit) + \details Reverses the byte order in a 16-bit value and returns the signed 16-bit result. For example, 0x0080 becomes 0x8000. + \param [in] value Value to reverse + \return Reversed value + */ +__STATIC_FORCEINLINE int16_t __REVSH(int16_t value) +{ +#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8) + return (int16_t)__builtin_bswap16(value); +#else + int16_t result; + + __ASM ("revsh %0, %1" : __CMSIS_GCC_OUT_REG (result) : __CMSIS_GCC_USE_REG (value) ); + return result; +#endif +} + + +/** + \brief Rotate Right in unsigned value (32 bit) + \details Rotate Right (immediate) provides the value of the contents of a register rotated by a variable number of bits. + \param [in] op1 Value to rotate + \param [in] op2 Number of Bits to rotate + \return Rotated value + */ +__STATIC_FORCEINLINE uint32_t __ROR(uint32_t op1, uint32_t op2) +{ + op2 %= 32U; + if (op2 == 0U) + { + return op1; + } + return (op1 >> op2) | (op1 << (32U - op2)); +} + + +/** + \brief Breakpoint + \details Causes the processor to enter Debug state. + Debug tools can use this to investigate system state when the instruction at a particular address is reached. + \param [in] value is ignored by the processor. + If required, a debugger can use it to store additional information about the breakpoint. + */ +#define __BKPT(value) __ASM volatile ("bkpt "#value) + + +/** + \brief Reverse bit order of value + \details Reverses the bit order of the given value. + \param [in] value Value to reverse + \return Reversed value + */ +__STATIC_FORCEINLINE uint32_t __RBIT(uint32_t value) +{ + uint32_t result; + +#if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) ) + __ASM ("rbit %0, %1" : "=r" (result) : "r" (value) ); +#else + uint32_t s = (4U /*sizeof(v)*/ * 8U) - 1U; /* extra shift needed at end */ + + result = value; /* r will be reversed bits of v; first get LSB of v */ + for (value >>= 1U; value != 0U; value >>= 1U) + { + result <<= 1U; + result |= value & 1U; + s--; + } + result <<= s; /* shift when v's highest bits are zero */ +#endif + return result; +} + + +/** + \brief Count leading zeros + \details Counts the number of leading zeros of a data value. + \param [in] value Value to count the leading zeros + \return number of leading zeros in value + */ +__STATIC_FORCEINLINE uint8_t __CLZ(uint32_t value) +{ + /* Even though __builtin_clz produces a CLZ instruction on ARM, formally + __builtin_clz(0) is undefined behaviour, so handle this case specially. + This guarantees ARM-compatible results if happening to compile on a non-ARM + target, and ensures the compiler doesn't decide to activate any + optimisations using the logic "value was passed to __builtin_clz, so it + is non-zero". + ARM GCC 7.3 and possibly earlier will optimise this test away, leaving a + single CLZ instruction. + */ + if (value == 0U) + { + return 32U; + } + return __builtin_clz(value); +} + + +#if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) +/** + \brief LDR Exclusive (8 bit) + \details Executes a exclusive LDR instruction for 8 bit value. + \param [in] ptr Pointer to data + \return value of type uint8_t at (*ptr) + */ +__STATIC_FORCEINLINE uint8_t __LDREXB(volatile uint8_t *addr) +{ + uint32_t result; + +#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8) + __ASM volatile ("ldrexb %0, %1" : "=r" (result) : "Q" (*addr) ); +#else + /* Prior to GCC 4.8, "Q" will be expanded to [rx, #0] which is not + accepted by assembler. So has to use following less efficient pattern. + */ + __ASM volatile ("ldrexb %0, [%1]" : "=r" (result) : "r" (addr) : "memory" ); +#endif + return ((uint8_t) result); /* Add explicit type cast here */ +} + + +/** + \brief LDR Exclusive (16 bit) + \details Executes a exclusive LDR instruction for 16 bit values. + \param [in] ptr Pointer to data + \return value of type uint16_t at (*ptr) + */ +__STATIC_FORCEINLINE uint16_t __LDREXH(volatile uint16_t *addr) +{ + uint32_t result; + +#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8) + __ASM volatile ("ldrexh %0, %1" : "=r" (result) : "Q" (*addr) ); +#else + /* Prior to GCC 4.8, "Q" will be expanded to [rx, #0] which is not + accepted by assembler. So has to use following less efficient pattern. + */ + __ASM volatile ("ldrexh %0, [%1]" : "=r" (result) : "r" (addr) : "memory" ); +#endif + return ((uint16_t) result); /* Add explicit type cast here */ +} + + +/** + \brief LDR Exclusive (32 bit) + \details Executes a exclusive LDR instruction for 32 bit values. + \param [in] ptr Pointer to data + \return value of type uint32_t at (*ptr) + */ +__STATIC_FORCEINLINE uint32_t __LDREXW(volatile uint32_t *addr) +{ + uint32_t result; + + __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); + return(result); +} + + +/** + \brief STR Exclusive (8 bit) + \details Executes a exclusive STR instruction for 8 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + \return 0 Function succeeded + \return 1 Function failed + */ +__STATIC_FORCEINLINE uint32_t __STREXB(uint8_t value, volatile uint8_t *addr) +{ + uint32_t result; + + __ASM volatile ("strexb %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" ((uint32_t)value) ); + return(result); +} + + +/** + \brief STR Exclusive (16 bit) + \details Executes a exclusive STR instruction for 16 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + \return 0 Function succeeded + \return 1 Function failed + */ +__STATIC_FORCEINLINE uint32_t __STREXH(uint16_t value, volatile uint16_t *addr) +{ + uint32_t result; + + __ASM volatile ("strexh %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" ((uint32_t)value) ); + return(result); +} + + +/** + \brief STR Exclusive (32 bit) + \details Executes a exclusive STR instruction for 32 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + \return 0 Function succeeded + \return 1 Function failed + */ +__STATIC_FORCEINLINE uint32_t __STREXW(uint32_t value, volatile uint32_t *addr) +{ + uint32_t result; + + __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); + return(result); +} + + +/** + \brief Remove the exclusive lock + \details Removes the exclusive lock which is created by LDREX. + */ +__STATIC_FORCEINLINE void __CLREX(void) +{ + __ASM volatile ("clrex" ::: "memory"); +} + +#endif /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) */ + + +#if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) ) +/** + \brief Signed Saturate + \details Saturates a signed value. + \param [in] ARG1 Value to be saturated + \param [in] ARG2 Bit position to saturate to (1..32) + \return Saturated value + */ +#define __SSAT(ARG1, ARG2) \ +__extension__ \ +({ \ + int32_t __RES, __ARG1 = (ARG1); \ + __ASM volatile ("ssat %0, %1, %2" : "=r" (__RES) : "I" (ARG2), "r" (__ARG1) : "cc" ); \ + __RES; \ + }) + + +/** + \brief Unsigned Saturate + \details Saturates an unsigned value. + \param [in] ARG1 Value to be saturated + \param [in] ARG2 Bit position to saturate to (0..31) + \return Saturated value + */ +#define __USAT(ARG1, ARG2) \ +__extension__ \ +({ \ + uint32_t __RES, __ARG1 = (ARG1); \ + __ASM volatile ("usat %0, %1, %2" : "=r" (__RES) : "I" (ARG2), "r" (__ARG1) : "cc" ); \ + __RES; \ + }) + + +/** + \brief Rotate Right with Extend (32 bit) + \details Moves each bit of a bitstring right by one bit. + The carry input is shifted in at the left end of the bitstring. + \param [in] value Value to rotate + \return Rotated value + */ +__STATIC_FORCEINLINE uint32_t __RRX(uint32_t value) +{ + uint32_t result; + + __ASM volatile ("rrx %0, %1" : __CMSIS_GCC_OUT_REG (result) : __CMSIS_GCC_USE_REG (value) ); + return(result); +} + + +/** + \brief LDRT Unprivileged (8 bit) + \details Executes a Unprivileged LDRT instruction for 8 bit value. + \param [in] ptr Pointer to data + \return value of type uint8_t at (*ptr) + */ +__STATIC_FORCEINLINE uint8_t __LDRBT(volatile uint8_t *ptr) +{ + uint32_t result; + +#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8) + __ASM volatile ("ldrbt %0, %1" : "=r" (result) : "Q" (*ptr) ); +#else + /* Prior to GCC 4.8, "Q" will be expanded to [rx, #0] which is not + accepted by assembler. So has to use following less efficient pattern. + */ + __ASM volatile ("ldrbt %0, [%1]" : "=r" (result) : "r" (ptr) : "memory" ); +#endif + return ((uint8_t) result); /* Add explicit type cast here */ +} + + +/** + \brief LDRT Unprivileged (16 bit) + \details Executes a Unprivileged LDRT instruction for 16 bit values. + \param [in] ptr Pointer to data + \return value of type uint16_t at (*ptr) + */ +__STATIC_FORCEINLINE uint16_t __LDRHT(volatile uint16_t *ptr) +{ + uint32_t result; + +#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8) + __ASM volatile ("ldrht %0, %1" : "=r" (result) : "Q" (*ptr) ); +#else + /* Prior to GCC 4.8, "Q" will be expanded to [rx, #0] which is not + accepted by assembler. So has to use following less efficient pattern. + */ + __ASM volatile ("ldrht %0, [%1]" : "=r" (result) : "r" (ptr) : "memory" ); +#endif + return ((uint16_t) result); /* Add explicit type cast here */ +} + + +/** + \brief LDRT Unprivileged (32 bit) + \details Executes a Unprivileged LDRT instruction for 32 bit values. + \param [in] ptr Pointer to data + \return value of type uint32_t at (*ptr) + */ +__STATIC_FORCEINLINE uint32_t __LDRT(volatile uint32_t *ptr) +{ + uint32_t result; + + __ASM volatile ("ldrt %0, %1" : "=r" (result) : "Q" (*ptr) ); + return(result); +} + + +/** + \brief STRT Unprivileged (8 bit) + \details Executes a Unprivileged STRT instruction for 8 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + */ +__STATIC_FORCEINLINE void __STRBT(uint8_t value, volatile uint8_t *ptr) +{ + __ASM volatile ("strbt %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) ); +} + + +/** + \brief STRT Unprivileged (16 bit) + \details Executes a Unprivileged STRT instruction for 16 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + */ +__STATIC_FORCEINLINE void __STRHT(uint16_t value, volatile uint16_t *ptr) +{ + __ASM volatile ("strht %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) ); +} + + +/** + \brief STRT Unprivileged (32 bit) + \details Executes a Unprivileged STRT instruction for 32 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + */ +__STATIC_FORCEINLINE void __STRT(uint32_t value, volatile uint32_t *ptr) +{ + __ASM volatile ("strt %1, %0" : "=Q" (*ptr) : "r" (value) ); +} + +#else /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) ) */ + +/** + \brief Signed Saturate + \details Saturates a signed value. + \param [in] value Value to be saturated + \param [in] sat Bit position to saturate to (1..32) + \return Saturated value + */ +__STATIC_FORCEINLINE int32_t __SSAT(int32_t val, uint32_t sat) +{ + if ((sat >= 1U) && (sat <= 32U)) + { + const int32_t max = (int32_t)((1U << (sat - 1U)) - 1U); + const int32_t min = -1 - max ; + if (val > max) + { + return max; + } + else if (val < min) + { + return min; + } + } + return val; +} + +/** + \brief Unsigned Saturate + \details Saturates an unsigned value. + \param [in] value Value to be saturated + \param [in] sat Bit position to saturate to (0..31) + \return Saturated value + */ +__STATIC_FORCEINLINE uint32_t __USAT(int32_t val, uint32_t sat) +{ + if (sat <= 31U) + { + const uint32_t max = ((1U << sat) - 1U); + if (val > (int32_t)max) + { + return max; + } + else if (val < 0) + { + return 0U; + } + } + return (uint32_t)val; +} + +#endif /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) ) */ + + +#if ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) +/** + \brief Load-Acquire (8 bit) + \details Executes a LDAB instruction for 8 bit value. + \param [in] ptr Pointer to data + \return value of type uint8_t at (*ptr) + */ +__STATIC_FORCEINLINE uint8_t __LDAB(volatile uint8_t *ptr) +{ + uint32_t result; + + __ASM volatile ("ldab %0, %1" : "=r" (result) : "Q" (*ptr) : "memory" ); + return ((uint8_t) result); +} + + +/** + \brief Load-Acquire (16 bit) + \details Executes a LDAH instruction for 16 bit values. + \param [in] ptr Pointer to data + \return value of type uint16_t at (*ptr) + */ +__STATIC_FORCEINLINE uint16_t __LDAH(volatile uint16_t *ptr) +{ + uint32_t result; + + __ASM volatile ("ldah %0, %1" : "=r" (result) : "Q" (*ptr) : "memory" ); + return ((uint16_t) result); +} + + +/** + \brief Load-Acquire (32 bit) + \details Executes a LDA instruction for 32 bit values. + \param [in] ptr Pointer to data + \return value of type uint32_t at (*ptr) + */ +__STATIC_FORCEINLINE uint32_t __LDA(volatile uint32_t *ptr) +{ + uint32_t result; + + __ASM volatile ("lda %0, %1" : "=r" (result) : "Q" (*ptr) : "memory" ); + return(result); +} + + +/** + \brief Store-Release (8 bit) + \details Executes a STLB instruction for 8 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + */ +__STATIC_FORCEINLINE void __STLB(uint8_t value, volatile uint8_t *ptr) +{ + __ASM volatile ("stlb %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) : "memory" ); +} + + +/** + \brief Store-Release (16 bit) + \details Executes a STLH instruction for 16 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + */ +__STATIC_FORCEINLINE void __STLH(uint16_t value, volatile uint16_t *ptr) +{ + __ASM volatile ("stlh %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) : "memory" ); +} + + +/** + \brief Store-Release (32 bit) + \details Executes a STL instruction for 32 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + */ +__STATIC_FORCEINLINE void __STL(uint32_t value, volatile uint32_t *ptr) +{ + __ASM volatile ("stl %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) : "memory" ); +} + + +/** + \brief Load-Acquire Exclusive (8 bit) + \details Executes a LDAB exclusive instruction for 8 bit value. + \param [in] ptr Pointer to data + \return value of type uint8_t at (*ptr) + */ +__STATIC_FORCEINLINE uint8_t __LDAEXB(volatile uint8_t *ptr) +{ + uint32_t result; + + __ASM volatile ("ldaexb %0, %1" : "=r" (result) : "Q" (*ptr) : "memory" ); + return ((uint8_t) result); +} + + +/** + \brief Load-Acquire Exclusive (16 bit) + \details Executes a LDAH exclusive instruction for 16 bit values. + \param [in] ptr Pointer to data + \return value of type uint16_t at (*ptr) + */ +__STATIC_FORCEINLINE uint16_t __LDAEXH(volatile uint16_t *ptr) +{ + uint32_t result; + + __ASM volatile ("ldaexh %0, %1" : "=r" (result) : "Q" (*ptr) : "memory" ); + return ((uint16_t) result); +} + + +/** + \brief Load-Acquire Exclusive (32 bit) + \details Executes a LDA exclusive instruction for 32 bit values. + \param [in] ptr Pointer to data + \return value of type uint32_t at (*ptr) + */ +__STATIC_FORCEINLINE uint32_t __LDAEX(volatile uint32_t *ptr) +{ + uint32_t result; + + __ASM volatile ("ldaex %0, %1" : "=r" (result) : "Q" (*ptr) : "memory" ); + return(result); +} + + +/** + \brief Store-Release Exclusive (8 bit) + \details Executes a STLB exclusive instruction for 8 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + \return 0 Function succeeded + \return 1 Function failed + */ +__STATIC_FORCEINLINE uint32_t __STLEXB(uint8_t value, volatile uint8_t *ptr) +{ + uint32_t result; + + __ASM volatile ("stlexb %0, %2, %1" : "=&r" (result), "=Q" (*ptr) : "r" ((uint32_t)value) : "memory" ); + return(result); +} + + +/** + \brief Store-Release Exclusive (16 bit) + \details Executes a STLH exclusive instruction for 16 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + \return 0 Function succeeded + \return 1 Function failed + */ +__STATIC_FORCEINLINE uint32_t __STLEXH(uint16_t value, volatile uint16_t *ptr) +{ + uint32_t result; + + __ASM volatile ("stlexh %0, %2, %1" : "=&r" (result), "=Q" (*ptr) : "r" ((uint32_t)value) : "memory" ); + return(result); +} + + +/** + \brief Store-Release Exclusive (32 bit) + \details Executes a STL exclusive instruction for 32 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + \return 0 Function succeeded + \return 1 Function failed + */ +__STATIC_FORCEINLINE uint32_t __STLEX(uint32_t value, volatile uint32_t *ptr) +{ + uint32_t result; + + __ASM volatile ("stlex %0, %2, %1" : "=&r" (result), "=Q" (*ptr) : "r" ((uint32_t)value) : "memory" ); + return(result); +} + +#endif /* ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) */ + +/*@}*/ /* end of group CMSIS_Core_InstructionInterface */ + + +/* ########################### Core Function Access ########################### */ +/** \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_RegAccFunctions CMSIS Core Register Access Functions + @{ + */ + +/** + \brief Enable IRQ Interrupts + \details Enables IRQ interrupts by clearing special-purpose register PRIMASK. + Can only be executed in Privileged modes. + */ +__STATIC_FORCEINLINE void __enable_irq(void) +{ + __ASM volatile ("cpsie i" : : : "memory"); +} + + +/** + \brief Disable IRQ Interrupts + \details Disables IRQ interrupts by setting special-purpose register PRIMASK. + Can only be executed in Privileged modes. + */ +__STATIC_FORCEINLINE void __disable_irq(void) +{ + __ASM volatile ("cpsid i" : : : "memory"); +} + + +/** + \brief Get Control Register + \details Returns the content of the Control Register. + \return Control Register value + */ +__STATIC_FORCEINLINE uint32_t __get_CONTROL(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, control" : "=r" (result) ); + return(result); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Control Register (non-secure) + \details Returns the content of the non-secure Control Register when in secure mode. + \return non-secure Control Register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_CONTROL_NS(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, control_ns" : "=r" (result) ); + return(result); +} +#endif + + +/** + \brief Set Control Register + \details Writes the given value to the Control Register. + \param [in] control Control Register value to set + */ +__STATIC_FORCEINLINE void __set_CONTROL(uint32_t control) +{ + __ASM volatile ("MSR control, %0" : : "r" (control) : "memory"); + __ISB(); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Control Register (non-secure) + \details Writes the given value to the non-secure Control Register when in secure state. + \param [in] control Control Register value to set + */ +__STATIC_FORCEINLINE void __TZ_set_CONTROL_NS(uint32_t control) +{ + __ASM volatile ("MSR control_ns, %0" : : "r" (control) : "memory"); + __ISB(); +} +#endif + + +/** + \brief Get IPSR Register + \details Returns the content of the IPSR Register. + \return IPSR Register value + */ +__STATIC_FORCEINLINE uint32_t __get_IPSR(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, ipsr" : "=r" (result) ); + return(result); +} + + +/** + \brief Get APSR Register + \details Returns the content of the APSR Register. + \return APSR Register value + */ +__STATIC_FORCEINLINE uint32_t __get_APSR(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, apsr" : "=r" (result) ); + return(result); +} + + +/** + \brief Get xPSR Register + \details Returns the content of the xPSR Register. + \return xPSR Register value + */ +__STATIC_FORCEINLINE uint32_t __get_xPSR(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, xpsr" : "=r" (result) ); + return(result); +} + + +/** + \brief Get Process Stack Pointer + \details Returns the current value of the Process Stack Pointer (PSP). + \return PSP Register value + */ +__STATIC_FORCEINLINE uint32_t __get_PSP(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, psp" : "=r" (result) ); + return(result); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Process Stack Pointer (non-secure) + \details Returns the current value of the non-secure Process Stack Pointer (PSP) when in secure state. + \return PSP Register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_PSP_NS(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, psp_ns" : "=r" (result) ); + return(result); +} +#endif + + +/** + \brief Set Process Stack Pointer + \details Assigns the given value to the Process Stack Pointer (PSP). + \param [in] topOfProcStack Process Stack Pointer value to set + */ +__STATIC_FORCEINLINE void __set_PSP(uint32_t topOfProcStack) +{ + __ASM volatile ("MSR psp, %0" : : "r" (topOfProcStack) : ); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Process Stack Pointer (non-secure) + \details Assigns the given value to the non-secure Process Stack Pointer (PSP) when in secure state. + \param [in] topOfProcStack Process Stack Pointer value to set + */ +__STATIC_FORCEINLINE void __TZ_set_PSP_NS(uint32_t topOfProcStack) +{ + __ASM volatile ("MSR psp_ns, %0" : : "r" (topOfProcStack) : ); +} +#endif + + +/** + \brief Get Main Stack Pointer + \details Returns the current value of the Main Stack Pointer (MSP). + \return MSP Register value + */ +__STATIC_FORCEINLINE uint32_t __get_MSP(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, msp" : "=r" (result) ); + return(result); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Main Stack Pointer (non-secure) + \details Returns the current value of the non-secure Main Stack Pointer (MSP) when in secure state. + \return MSP Register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_MSP_NS(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, msp_ns" : "=r" (result) ); + return(result); +} +#endif + + +/** + \brief Set Main Stack Pointer + \details Assigns the given value to the Main Stack Pointer (MSP). + \param [in] topOfMainStack Main Stack Pointer value to set + */ +__STATIC_FORCEINLINE void __set_MSP(uint32_t topOfMainStack) +{ + __ASM volatile ("MSR msp, %0" : : "r" (topOfMainStack) : ); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Main Stack Pointer (non-secure) + \details Assigns the given value to the non-secure Main Stack Pointer (MSP) when in secure state. + \param [in] topOfMainStack Main Stack Pointer value to set + */ +__STATIC_FORCEINLINE void __TZ_set_MSP_NS(uint32_t topOfMainStack) +{ + __ASM volatile ("MSR msp_ns, %0" : : "r" (topOfMainStack) : ); +} +#endif + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Stack Pointer (non-secure) + \details Returns the current value of the non-secure Stack Pointer (SP) when in secure state. + \return SP Register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_SP_NS(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, sp_ns" : "=r" (result) ); + return(result); +} + + +/** + \brief Set Stack Pointer (non-secure) + \details Assigns the given value to the non-secure Stack Pointer (SP) when in secure state. + \param [in] topOfStack Stack Pointer value to set + */ +__STATIC_FORCEINLINE void __TZ_set_SP_NS(uint32_t topOfStack) +{ + __ASM volatile ("MSR sp_ns, %0" : : "r" (topOfStack) : ); +} +#endif + + +/** + \brief Get Priority Mask + \details Returns the current state of the priority mask bit from the Priority Mask Register. + \return Priority Mask value + */ +__STATIC_FORCEINLINE uint32_t __get_PRIMASK(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, primask" : "=r" (result) ); + return(result); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Priority Mask (non-secure) + \details Returns the current state of the non-secure priority mask bit from the Priority Mask Register when in secure state. + \return Priority Mask value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_PRIMASK_NS(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, primask_ns" : "=r" (result) ); + return(result); +} +#endif + + +/** + \brief Set Priority Mask + \details Assigns the given value to the Priority Mask Register. + \param [in] priMask Priority Mask + */ +__STATIC_FORCEINLINE void __set_PRIMASK(uint32_t priMask) +{ + __ASM volatile ("MSR primask, %0" : : "r" (priMask) : "memory"); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Priority Mask (non-secure) + \details Assigns the given value to the non-secure Priority Mask Register when in secure state. + \param [in] priMask Priority Mask + */ +__STATIC_FORCEINLINE void __TZ_set_PRIMASK_NS(uint32_t priMask) +{ + __ASM volatile ("MSR primask_ns, %0" : : "r" (priMask) : "memory"); +} +#endif + + +#if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) ) +/** + \brief Enable FIQ + \details Enables FIQ interrupts by clearing special-purpose register FAULTMASK. + Can only be executed in Privileged modes. + */ +__STATIC_FORCEINLINE void __enable_fault_irq(void) +{ + __ASM volatile ("cpsie f" : : : "memory"); +} + + +/** + \brief Disable FIQ + \details Disables FIQ interrupts by setting special-purpose register FAULTMASK. + Can only be executed in Privileged modes. + */ +__STATIC_FORCEINLINE void __disable_fault_irq(void) +{ + __ASM volatile ("cpsid f" : : : "memory"); +} + + +/** + \brief Get Base Priority + \details Returns the current value of the Base Priority register. + \return Base Priority register value + */ +__STATIC_FORCEINLINE uint32_t __get_BASEPRI(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, basepri" : "=r" (result) ); + return(result); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Base Priority (non-secure) + \details Returns the current value of the non-secure Base Priority register when in secure state. + \return Base Priority register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_BASEPRI_NS(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, basepri_ns" : "=r" (result) ); + return(result); +} +#endif + + +/** + \brief Set Base Priority + \details Assigns the given value to the Base Priority register. + \param [in] basePri Base Priority value to set + */ +__STATIC_FORCEINLINE void __set_BASEPRI(uint32_t basePri) +{ + __ASM volatile ("MSR basepri, %0" : : "r" (basePri) : "memory"); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Base Priority (non-secure) + \details Assigns the given value to the non-secure Base Priority register when in secure state. + \param [in] basePri Base Priority value to set + */ +__STATIC_FORCEINLINE void __TZ_set_BASEPRI_NS(uint32_t basePri) +{ + __ASM volatile ("MSR basepri_ns, %0" : : "r" (basePri) : "memory"); +} +#endif + + +/** + \brief Set Base Priority with condition + \details Assigns the given value to the Base Priority register only if BASEPRI masking is disabled, + or the new value increases the BASEPRI priority level. + \param [in] basePri Base Priority value to set + */ +__STATIC_FORCEINLINE void __set_BASEPRI_MAX(uint32_t basePri) +{ + __ASM volatile ("MSR basepri_max, %0" : : "r" (basePri) : "memory"); +} + + +/** + \brief Get Fault Mask + \details Returns the current value of the Fault Mask register. + \return Fault Mask register value + */ +__STATIC_FORCEINLINE uint32_t __get_FAULTMASK(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, faultmask" : "=r" (result) ); + return(result); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Fault Mask (non-secure) + \details Returns the current value of the non-secure Fault Mask register when in secure state. + \return Fault Mask register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_FAULTMASK_NS(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, faultmask_ns" : "=r" (result) ); + return(result); +} +#endif + + +/** + \brief Set Fault Mask + \details Assigns the given value to the Fault Mask register. + \param [in] faultMask Fault Mask value to set + */ +__STATIC_FORCEINLINE void __set_FAULTMASK(uint32_t faultMask) +{ + __ASM volatile ("MSR faultmask, %0" : : "r" (faultMask) : "memory"); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Fault Mask (non-secure) + \details Assigns the given value to the non-secure Fault Mask register when in secure state. + \param [in] faultMask Fault Mask value to set + */ +__STATIC_FORCEINLINE void __TZ_set_FAULTMASK_NS(uint32_t faultMask) +{ + __ASM volatile ("MSR faultmask_ns, %0" : : "r" (faultMask) : "memory"); +} +#endif + +#endif /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) ) */ + + +#if ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) + +/** + \brief Get Process Stack Pointer Limit + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence zero is returned always in non-secure + mode. + + \details Returns the current value of the Process Stack Pointer Limit (PSPLIM). + \return PSPLIM Register value + */ +__STATIC_FORCEINLINE uint32_t __get_PSPLIM(void) +{ +#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) + // without main extensions, the non-secure PSPLIM is RAZ/WI + return 0U; +#else + uint32_t result; + __ASM volatile ("MRS %0, psplim" : "=r" (result) ); + return result; +#endif +} + +#if (defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Process Stack Pointer Limit (non-secure) + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence zero is returned always. + + \details Returns the current value of the non-secure Process Stack Pointer Limit (PSPLIM) when in secure state. + \return PSPLIM Register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_PSPLIM_NS(void) +{ +#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))) + // without main extensions, the non-secure PSPLIM is RAZ/WI + return 0U; +#else + uint32_t result; + __ASM volatile ("MRS %0, psplim_ns" : "=r" (result) ); + return result; +#endif +} +#endif + + +/** + \brief Set Process Stack Pointer Limit + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence the write is silently ignored in non-secure + mode. + + \details Assigns the given value to the Process Stack Pointer Limit (PSPLIM). + \param [in] ProcStackPtrLimit Process Stack Pointer Limit value to set + */ +__STATIC_FORCEINLINE void __set_PSPLIM(uint32_t ProcStackPtrLimit) +{ +#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) + // without main extensions, the non-secure PSPLIM is RAZ/WI + (void)ProcStackPtrLimit; +#else + __ASM volatile ("MSR psplim, %0" : : "r" (ProcStackPtrLimit)); +#endif +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Process Stack Pointer (non-secure) + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence the write is silently ignored. + + \details Assigns the given value to the non-secure Process Stack Pointer Limit (PSPLIM) when in secure state. + \param [in] ProcStackPtrLimit Process Stack Pointer Limit value to set + */ +__STATIC_FORCEINLINE void __TZ_set_PSPLIM_NS(uint32_t ProcStackPtrLimit) +{ +#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))) + // without main extensions, the non-secure PSPLIM is RAZ/WI + (void)ProcStackPtrLimit; +#else + __ASM volatile ("MSR psplim_ns, %0\n" : : "r" (ProcStackPtrLimit)); +#endif +} +#endif + + +/** + \brief Get Main Stack Pointer Limit + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence zero is returned always in non-secure + mode. + + \details Returns the current value of the Main Stack Pointer Limit (MSPLIM). + \return MSPLIM Register value + */ +__STATIC_FORCEINLINE uint32_t __get_MSPLIM(void) +{ +#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) + // without main extensions, the non-secure MSPLIM is RAZ/WI + return 0U; +#else + uint32_t result; + __ASM volatile ("MRS %0, msplim" : "=r" (result) ); + return result; +#endif +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Main Stack Pointer Limit (non-secure) + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence zero is returned always. + + \details Returns the current value of the non-secure Main Stack Pointer Limit(MSPLIM) when in secure state. + \return MSPLIM Register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_MSPLIM_NS(void) +{ +#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))) + // without main extensions, the non-secure MSPLIM is RAZ/WI + return 0U; +#else + uint32_t result; + __ASM volatile ("MRS %0, msplim_ns" : "=r" (result) ); + return result; +#endif +} +#endif + + +/** + \brief Set Main Stack Pointer Limit + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence the write is silently ignored in non-secure + mode. + + \details Assigns the given value to the Main Stack Pointer Limit (MSPLIM). + \param [in] MainStackPtrLimit Main Stack Pointer Limit value to set + */ +__STATIC_FORCEINLINE void __set_MSPLIM(uint32_t MainStackPtrLimit) +{ +#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) + // without main extensions, the non-secure MSPLIM is RAZ/WI + (void)MainStackPtrLimit; +#else + __ASM volatile ("MSR msplim, %0" : : "r" (MainStackPtrLimit)); +#endif +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Main Stack Pointer Limit (non-secure) + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence the write is silently ignored. + + \details Assigns the given value to the non-secure Main Stack Pointer Limit (MSPLIM) when in secure state. + \param [in] MainStackPtrLimit Main Stack Pointer value to set + */ +__STATIC_FORCEINLINE void __TZ_set_MSPLIM_NS(uint32_t MainStackPtrLimit) +{ +#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))) + // without main extensions, the non-secure MSPLIM is RAZ/WI + (void)MainStackPtrLimit; +#else + __ASM volatile ("MSR msplim_ns, %0" : : "r" (MainStackPtrLimit)); +#endif +} +#endif + +#endif /* ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) */ + + +/** + \brief Get FPSCR + \details Returns the current value of the Floating Point Status/Control register. + \return Floating Point Status/Control register value + */ +__STATIC_FORCEINLINE uint32_t __get_FPSCR(void) +{ +#if ((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \ + (defined (__FPU_USED ) && (__FPU_USED == 1U)) ) +#if __has_builtin(__builtin_arm_get_fpscr) +// Re-enable using built-in when GCC has been fixed +// || (__GNUC__ > 7) || (__GNUC__ == 7 && __GNUC_MINOR__ >= 2) + /* see https://gcc.gnu.org/ml/gcc-patches/2017-04/msg00443.html */ + return __builtin_arm_get_fpscr(); +#else + uint32_t result; + + __ASM volatile ("VMRS %0, fpscr" : "=r" (result) ); + return(result); +#endif +#else + return(0U); +#endif +} + + +/** + \brief Set FPSCR + \details Assigns the given value to the Floating Point Status/Control register. + \param [in] fpscr Floating Point Status/Control value to set + */ +__STATIC_FORCEINLINE void __set_FPSCR(uint32_t fpscr) +{ +#if ((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \ + (defined (__FPU_USED ) && (__FPU_USED == 1U)) ) +#if __has_builtin(__builtin_arm_set_fpscr) +// Re-enable using built-in when GCC has been fixed +// || (__GNUC__ > 7) || (__GNUC__ == 7 && __GNUC_MINOR__ >= 2) + /* see https://gcc.gnu.org/ml/gcc-patches/2017-04/msg00443.html */ + __builtin_arm_set_fpscr(fpscr); +#else + __ASM volatile ("VMSR fpscr, %0" : : "r" (fpscr) : "vfpcc", "memory"); +#endif +#else + (void)fpscr; +#endif +} + + +/*@} end of CMSIS_Core_RegAccFunctions */ + + +/* ################### Compiler specific Intrinsics ########################### */ +/** \defgroup CMSIS_SIMD_intrinsics CMSIS SIMD Intrinsics + Access to dedicated SIMD instructions + @{ +*/ + +#if (defined (__ARM_FEATURE_DSP) && (__ARM_FEATURE_DSP == 1)) + +__STATIC_FORCEINLINE uint32_t __SADD8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("sadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __QADD8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM ("qadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SHADD8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM ("shadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UADD8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UQADD8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM ("uqadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UHADD8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM ("uhadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + + +__STATIC_FORCEINLINE uint32_t __SSUB8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("ssub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __QSUB8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM ("qsub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SHSUB8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM ("shsub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __USUB8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("usub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UQSUB8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM ("uqsub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UHSUB8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM ("uhsub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + + +__STATIC_FORCEINLINE uint32_t __SADD16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("sadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __QADD16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM ("qadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SHADD16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM ("shadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UADD16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UQADD16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM ("uqadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UHADD16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM ("uhadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SSUB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("ssub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __QSUB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM ("qsub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SHSUB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM ("shsub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __USUB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("usub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UQSUB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM ("uqsub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UHSUB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM ("uhsub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SASX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("sasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __QASX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM ("qasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SHASX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM ("shasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UASX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UQASX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM ("uqasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UHASX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM ("uhasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SSAX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("ssax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __QSAX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM ("qsax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SHSAX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM ("shsax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __USAX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("usax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UQSAX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM ("uqsax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UHSAX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM ("uhsax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __USAD8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM ("usad8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __USADA8(uint32_t op1, uint32_t op2, uint32_t op3) +{ + uint32_t result; + + __ASM ("usada8 %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) ); + return(result); +} + +#define __SSAT16(ARG1, ARG2) \ +__extension__ \ +({ \ + int32_t __RES, __ARG1 = (ARG1); \ + __ASM volatile ("ssat16 %0, %1, %2" : "=r" (__RES) : "I" (ARG2), "r" (__ARG1) : "cc" ); \ + __RES; \ + }) + +#define __USAT16(ARG1, ARG2) \ +__extension__ \ +({ \ + uint32_t __RES, __ARG1 = (ARG1); \ + __ASM volatile ("usat16 %0, %1, %2" : "=r" (__RES) : "I" (ARG2), "r" (__ARG1) : "cc" ); \ + __RES; \ + }) + +__STATIC_FORCEINLINE uint32_t __UXTB16(uint32_t op1) +{ + uint32_t result; + + __ASM ("uxtb16 %0, %1" : "=r" (result) : "r" (op1)); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UXTAB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM ("uxtab16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SXTB16(uint32_t op1) +{ + uint32_t result; + + __ASM ("sxtb16 %0, %1" : "=r" (result) : "r" (op1)); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SXTB16_RORn(uint32_t op1, uint32_t rotate) +{ + uint32_t result; + if (__builtin_constant_p(rotate) && ((rotate == 8U) || (rotate == 16U) || (rotate == 24U))) { + __ASM volatile ("sxtb16 %0, %1, ROR %2" : "=r" (result) : "r" (op1), "i" (rotate) ); + } else { + result = __SXTB16(__ROR(op1, rotate)) ; + } + return result; +} + +__STATIC_FORCEINLINE uint32_t __SXTAB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM ("sxtab16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SXTAB16_RORn(uint32_t op1, uint32_t op2, uint32_t rotate) +{ + uint32_t result; + if (__builtin_constant_p(rotate) && ((rotate == 8U) || (rotate == 16U) || (rotate == 24U))) { + __ASM volatile ("sxtab16 %0, %1, %2, ROR %3" : "=r" (result) : "r" (op1) , "r" (op2) , "i" (rotate)); + } else { + result = __SXTAB16(op1, __ROR(op2, rotate)); + } + return result; +} + + +__STATIC_FORCEINLINE uint32_t __SMUAD (uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("smuad %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SMUADX (uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("smuadx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SMLAD (uint32_t op1, uint32_t op2, uint32_t op3) +{ + uint32_t result; + + __ASM volatile ("smlad %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SMLADX (uint32_t op1, uint32_t op2, uint32_t op3) +{ + uint32_t result; + + __ASM volatile ("smladx %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) ); + return(result); +} + +__STATIC_FORCEINLINE uint64_t __SMLALD (uint32_t op1, uint32_t op2, uint64_t acc) +{ + union llreg_u{ + uint32_t w32[2]; + uint64_t w64; + } llr; + llr.w64 = acc; + +#ifndef __ARMEB__ /* Little endian */ + __ASM volatile ("smlald %0, %1, %2, %3" : "=r" (llr.w32[0]), "=r" (llr.w32[1]): "r" (op1), "r" (op2) , "0" (llr.w32[0]), "1" (llr.w32[1]) ); +#else /* Big endian */ + __ASM volatile ("smlald %0, %1, %2, %3" : "=r" (llr.w32[1]), "=r" (llr.w32[0]): "r" (op1), "r" (op2) , "0" (llr.w32[1]), "1" (llr.w32[0]) ); +#endif + + return(llr.w64); +} + +__STATIC_FORCEINLINE uint64_t __SMLALDX (uint32_t op1, uint32_t op2, uint64_t acc) +{ + union llreg_u{ + uint32_t w32[2]; + uint64_t w64; + } llr; + llr.w64 = acc; + +#ifndef __ARMEB__ /* Little endian */ + __ASM volatile ("smlaldx %0, %1, %2, %3" : "=r" (llr.w32[0]), "=r" (llr.w32[1]): "r" (op1), "r" (op2) , "0" (llr.w32[0]), "1" (llr.w32[1]) ); +#else /* Big endian */ + __ASM volatile ("smlaldx %0, %1, %2, %3" : "=r" (llr.w32[1]), "=r" (llr.w32[0]): "r" (op1), "r" (op2) , "0" (llr.w32[1]), "1" (llr.w32[0]) ); +#endif + + return(llr.w64); +} + +__STATIC_FORCEINLINE uint32_t __SMUSD (uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("smusd %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SMUSDX (uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("smusdx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SMLSD (uint32_t op1, uint32_t op2, uint32_t op3) +{ + uint32_t result; + + __ASM volatile ("smlsd %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SMLSDX (uint32_t op1, uint32_t op2, uint32_t op3) +{ + uint32_t result; + + __ASM volatile ("smlsdx %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) ); + return(result); +} + +__STATIC_FORCEINLINE uint64_t __SMLSLD (uint32_t op1, uint32_t op2, uint64_t acc) +{ + union llreg_u{ + uint32_t w32[2]; + uint64_t w64; + } llr; + llr.w64 = acc; + +#ifndef __ARMEB__ /* Little endian */ + __ASM volatile ("smlsld %0, %1, %2, %3" : "=r" (llr.w32[0]), "=r" (llr.w32[1]): "r" (op1), "r" (op2) , "0" (llr.w32[0]), "1" (llr.w32[1]) ); +#else /* Big endian */ + __ASM volatile ("smlsld %0, %1, %2, %3" : "=r" (llr.w32[1]), "=r" (llr.w32[0]): "r" (op1), "r" (op2) , "0" (llr.w32[1]), "1" (llr.w32[0]) ); +#endif + + return(llr.w64); +} + +__STATIC_FORCEINLINE uint64_t __SMLSLDX (uint32_t op1, uint32_t op2, uint64_t acc) +{ + union llreg_u{ + uint32_t w32[2]; + uint64_t w64; + } llr; + llr.w64 = acc; + +#ifndef __ARMEB__ /* Little endian */ + __ASM volatile ("smlsldx %0, %1, %2, %3" : "=r" (llr.w32[0]), "=r" (llr.w32[1]): "r" (op1), "r" (op2) , "0" (llr.w32[0]), "1" (llr.w32[1]) ); +#else /* Big endian */ + __ASM volatile ("smlsldx %0, %1, %2, %3" : "=r" (llr.w32[1]), "=r" (llr.w32[0]): "r" (op1), "r" (op2) , "0" (llr.w32[1]), "1" (llr.w32[0]) ); +#endif + + return(llr.w64); +} + +__STATIC_FORCEINLINE uint32_t __SEL (uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("sel %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE int32_t __QADD( int32_t op1, int32_t op2) +{ + int32_t result; + + __ASM volatile ("qadd %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE int32_t __QSUB( int32_t op1, int32_t op2) +{ + int32_t result; + + __ASM volatile ("qsub %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + + +#define __PKHBT(ARG1,ARG2,ARG3) \ +__extension__ \ +({ \ + uint32_t __RES, __ARG1 = (ARG1), __ARG2 = (ARG2); \ + __ASM ("pkhbt %0, %1, %2, lsl %3" : "=r" (__RES) : "r" (__ARG1), "r" (__ARG2), "I" (ARG3) ); \ + __RES; \ + }) + +#define __PKHTB(ARG1,ARG2,ARG3) \ +__extension__ \ +({ \ + uint32_t __RES, __ARG1 = (ARG1), __ARG2 = (ARG2); \ + if (ARG3 == 0) \ + __ASM ("pkhtb %0, %1, %2" : "=r" (__RES) : "r" (__ARG1), "r" (__ARG2) ); \ + else \ + __ASM ("pkhtb %0, %1, %2, asr %3" : "=r" (__RES) : "r" (__ARG1), "r" (__ARG2), "I" (ARG3) ); \ + __RES; \ + }) + + +__STATIC_FORCEINLINE int32_t __SMMLA (int32_t op1, int32_t op2, int32_t op3) +{ + int32_t result; + + __ASM ("smmla %0, %1, %2, %3" : "=r" (result): "r" (op1), "r" (op2), "r" (op3) ); + return(result); +} + +#endif /* (__ARM_FEATURE_DSP == 1) */ +/*@} end of group CMSIS_SIMD_intrinsics */ + + +#pragma GCC diagnostic pop + +#endif /* __CMSIS_GCC_H */ diff --git a/bsp/renesas/ra8m1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/cmsis_iccarm.h b/bsp/renesas/ra8m1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/cmsis_iccarm.h new file mode 100644 index 000000000000..65b824b009ca --- /dev/null +++ b/bsp/renesas/ra8m1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/cmsis_iccarm.h @@ -0,0 +1,1002 @@ +/**************************************************************************//** + * @file cmsis_iccarm.h + * @brief CMSIS compiler ICCARM (IAR Compiler for Arm) header file + * @version V5.3.0 + * @date 14. April 2021 + ******************************************************************************/ + +//------------------------------------------------------------------------------ +// +// Copyright (c) 2017-2021 IAR Systems +// Copyright (c) 2017-2021 Arm Limited. All rights reserved. +// +// SPDX-License-Identifier: Apache-2.0 +// +// Licensed under the Apache License, Version 2.0 (the "License") +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//------------------------------------------------------------------------------ + + +#ifndef __CMSIS_ICCARM_H__ +#define __CMSIS_ICCARM_H__ + +#ifndef __ICCARM__ + #error This file should only be compiled by ICCARM +#endif + +#pragma system_include + +#define __IAR_FT _Pragma("inline=forced") __intrinsic + +#if (__VER__ >= 8000000) + #define __ICCARM_V8 1 +#else + #define __ICCARM_V8 0 +#endif + +#ifndef __ALIGNED + #if __ICCARM_V8 + #define __ALIGNED(x) __attribute__((aligned(x))) + #elif (__VER__ >= 7080000) + /* Needs IAR language extensions */ + #define __ALIGNED(x) __attribute__((aligned(x))) + #else + #warning No compiler specific solution for __ALIGNED.__ALIGNED is ignored. + #define __ALIGNED(x) + #endif +#endif + + +/* Define compiler macros for CPU architecture, used in CMSIS 5. + */ +#if __ARM_ARCH_6M__ || __ARM_ARCH_7M__ || __ARM_ARCH_7EM__ || __ARM_ARCH_8M_BASE__ || __ARM_ARCH_8M_MAIN__ +/* Macros already defined */ +#else + #if defined(__ARM8M_MAINLINE__) || defined(__ARM8EM_MAINLINE__) + #define __ARM_ARCH_8M_MAIN__ 1 + #elif defined(__ARM8M_BASELINE__) + #define __ARM_ARCH_8M_BASE__ 1 + #elif defined(__ARM_ARCH_PROFILE) && __ARM_ARCH_PROFILE == 'M' + #if __ARM_ARCH == 6 + #define __ARM_ARCH_6M__ 1 + #elif __ARM_ARCH == 7 + #if __ARM_FEATURE_DSP + #define __ARM_ARCH_7EM__ 1 + #else + #define __ARM_ARCH_7M__ 1 + #endif + #endif /* __ARM_ARCH */ + #endif /* __ARM_ARCH_PROFILE == 'M' */ +#endif + +/* Alternativ core deduction for older ICCARM's */ +#if !defined(__ARM_ARCH_6M__) && !defined(__ARM_ARCH_7M__) && !defined(__ARM_ARCH_7EM__) && \ + !defined(__ARM_ARCH_8M_BASE__) && !defined(__ARM_ARCH_8M_MAIN__) + #if defined(__ARM6M__) && (__CORE__ == __ARM6M__) + #define __ARM_ARCH_6M__ 1 + #elif defined(__ARM7M__) && (__CORE__ == __ARM7M__) + #define __ARM_ARCH_7M__ 1 + #elif defined(__ARM7EM__) && (__CORE__ == __ARM7EM__) + #define __ARM_ARCH_7EM__ 1 + #elif defined(__ARM8M_BASELINE__) && (__CORE == __ARM8M_BASELINE__) + #define __ARM_ARCH_8M_BASE__ 1 + #elif defined(__ARM8M_MAINLINE__) && (__CORE == __ARM8M_MAINLINE__) + #define __ARM_ARCH_8M_MAIN__ 1 + #elif defined(__ARM8EM_MAINLINE__) && (__CORE == __ARM8EM_MAINLINE__) + #define __ARM_ARCH_8M_MAIN__ 1 + #else + #error "Unknown target." + #endif +#endif + + + +#if defined(__ARM_ARCH_6M__) && __ARM_ARCH_6M__==1 + #define __IAR_M0_FAMILY 1 +#elif defined(__ARM_ARCH_8M_BASE__) && __ARM_ARCH_8M_BASE__==1 + #define __IAR_M0_FAMILY 1 +#else + #define __IAR_M0_FAMILY 0 +#endif + + +#ifndef __ASM + #define __ASM __asm +#endif + +#ifndef __COMPILER_BARRIER + #define __COMPILER_BARRIER() __ASM volatile("":::"memory") +#endif + +#ifndef __INLINE + #define __INLINE inline +#endif + +#ifndef __NO_RETURN + #if __ICCARM_V8 + #define __NO_RETURN __attribute__((__noreturn__)) + #else + #define __NO_RETURN _Pragma("object_attribute=__noreturn") + #endif +#endif + +#ifndef __PACKED + #if __ICCARM_V8 + #define __PACKED __attribute__((packed, aligned(1))) + #else + /* Needs IAR language extensions */ + #define __PACKED __packed + #endif +#endif + +#ifndef __PACKED_STRUCT + #if __ICCARM_V8 + #define __PACKED_STRUCT struct __attribute__((packed, aligned(1))) + #else + /* Needs IAR language extensions */ + #define __PACKED_STRUCT __packed struct + #endif +#endif + +#ifndef __PACKED_UNION + #if __ICCARM_V8 + #define __PACKED_UNION union __attribute__((packed, aligned(1))) + #else + /* Needs IAR language extensions */ + #define __PACKED_UNION __packed union + #endif +#endif + +#ifndef __RESTRICT + #if __ICCARM_V8 + #define __RESTRICT __restrict + #else + /* Needs IAR language extensions */ + #define __RESTRICT restrict + #endif +#endif + +#ifndef __STATIC_INLINE + #define __STATIC_INLINE static inline +#endif + +#ifndef __FORCEINLINE + #define __FORCEINLINE _Pragma("inline=forced") +#endif + +#ifndef __STATIC_FORCEINLINE + #define __STATIC_FORCEINLINE __FORCEINLINE __STATIC_INLINE +#endif + +#ifndef __UNALIGNED_UINT16_READ +#pragma language=save +#pragma language=extended +__IAR_FT uint16_t __iar_uint16_read(void const *ptr) +{ + return *(__packed uint16_t*)(ptr); +} +#pragma language=restore +#define __UNALIGNED_UINT16_READ(PTR) __iar_uint16_read(PTR) +#endif + + +#ifndef __UNALIGNED_UINT16_WRITE +#pragma language=save +#pragma language=extended +__IAR_FT void __iar_uint16_write(void const *ptr, uint16_t val) +{ + *(__packed uint16_t*)(ptr) = val;; +} +#pragma language=restore +#define __UNALIGNED_UINT16_WRITE(PTR,VAL) __iar_uint16_write(PTR,VAL) +#endif + +#ifndef __UNALIGNED_UINT32_READ +#pragma language=save +#pragma language=extended +__IAR_FT uint32_t __iar_uint32_read(void const *ptr) +{ + return *(__packed uint32_t*)(ptr); +} +#pragma language=restore +#define __UNALIGNED_UINT32_READ(PTR) __iar_uint32_read(PTR) +#endif + +#ifndef __UNALIGNED_UINT32_WRITE +#pragma language=save +#pragma language=extended +__IAR_FT void __iar_uint32_write(void const *ptr, uint32_t val) +{ + *(__packed uint32_t*)(ptr) = val;; +} +#pragma language=restore +#define __UNALIGNED_UINT32_WRITE(PTR,VAL) __iar_uint32_write(PTR,VAL) +#endif + +#ifndef __UNALIGNED_UINT32 /* deprecated */ +#pragma language=save +#pragma language=extended +__packed struct __iar_u32 { uint32_t v; }; +#pragma language=restore +#define __UNALIGNED_UINT32(PTR) (((struct __iar_u32 *)(PTR))->v) +#endif + +#ifndef __USED + #if __ICCARM_V8 + #define __USED __attribute__((used)) + #else + #define __USED _Pragma("__root") + #endif +#endif + +#undef __WEAK /* undo the definition from DLib_Defaults.h */ +#ifndef __WEAK + #if __ICCARM_V8 + #define __WEAK __attribute__((weak)) + #else + #define __WEAK _Pragma("__weak") + #endif +#endif + +#ifndef __PROGRAM_START +#define __PROGRAM_START __iar_program_start +#endif + +#ifndef __INITIAL_SP +#define __INITIAL_SP CSTACK$$Limit +#endif + +#ifndef __STACK_LIMIT +#define __STACK_LIMIT CSTACK$$Base +#endif + +#ifndef __VECTOR_TABLE +#define __VECTOR_TABLE __vector_table +#endif + +#ifndef __VECTOR_TABLE_ATTRIBUTE +#define __VECTOR_TABLE_ATTRIBUTE @".intvec" +#endif + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +#ifndef __STACK_SEAL +#define __STACK_SEAL STACKSEAL$$Base +#endif + +#ifndef __TZ_STACK_SEAL_SIZE +#define __TZ_STACK_SEAL_SIZE 8U +#endif + +#ifndef __TZ_STACK_SEAL_VALUE +#define __TZ_STACK_SEAL_VALUE 0xFEF5EDA5FEF5EDA5ULL +#endif + +__STATIC_FORCEINLINE void __TZ_set_STACKSEAL_S (uint32_t* stackTop) { + *((uint64_t *)stackTop) = __TZ_STACK_SEAL_VALUE; +} +#endif + +#ifndef __ICCARM_INTRINSICS_VERSION__ + #define __ICCARM_INTRINSICS_VERSION__ 0 +#endif + +#if __ICCARM_INTRINSICS_VERSION__ == 2 + + #if defined(__CLZ) + #undef __CLZ + #endif + #if defined(__REVSH) + #undef __REVSH + #endif + #if defined(__RBIT) + #undef __RBIT + #endif + #if defined(__SSAT) + #undef __SSAT + #endif + #if defined(__USAT) + #undef __USAT + #endif + + #include "iccarm_builtin.h" + + #define __disable_fault_irq __iar_builtin_disable_fiq + #define __disable_irq __iar_builtin_disable_interrupt + #define __enable_fault_irq __iar_builtin_enable_fiq + #define __enable_irq __iar_builtin_enable_interrupt + #define __arm_rsr __iar_builtin_rsr + #define __arm_wsr __iar_builtin_wsr + + + #define __get_APSR() (__arm_rsr("APSR")) + #define __get_BASEPRI() (__arm_rsr("BASEPRI")) + #define __get_CONTROL() (__arm_rsr("CONTROL")) + #define __get_FAULTMASK() (__arm_rsr("FAULTMASK")) + + #if ((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \ + (defined (__FPU_USED ) && (__FPU_USED == 1U)) ) + #define __get_FPSCR() (__arm_rsr("FPSCR")) + #define __set_FPSCR(VALUE) (__arm_wsr("FPSCR", (VALUE))) + #else + #define __get_FPSCR() ( 0 ) + #define __set_FPSCR(VALUE) ((void)VALUE) + #endif + + #define __get_IPSR() (__arm_rsr("IPSR")) + #define __get_MSP() (__arm_rsr("MSP")) + #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) + // without main extensions, the non-secure MSPLIM is RAZ/WI + #define __get_MSPLIM() (0U) + #else + #define __get_MSPLIM() (__arm_rsr("MSPLIM")) + #endif + #define __get_PRIMASK() (__arm_rsr("PRIMASK")) + #define __get_PSP() (__arm_rsr("PSP")) + + #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) + // without main extensions, the non-secure PSPLIM is RAZ/WI + #define __get_PSPLIM() (0U) + #else + #define __get_PSPLIM() (__arm_rsr("PSPLIM")) + #endif + + #define __get_xPSR() (__arm_rsr("xPSR")) + + #define __set_BASEPRI(VALUE) (__arm_wsr("BASEPRI", (VALUE))) + #define __set_BASEPRI_MAX(VALUE) (__arm_wsr("BASEPRI_MAX", (VALUE))) + +__STATIC_FORCEINLINE void __set_CONTROL(uint32_t control) +{ + __arm_wsr("CONTROL", control); + __iar_builtin_ISB(); +} + + #define __set_FAULTMASK(VALUE) (__arm_wsr("FAULTMASK", (VALUE))) + #define __set_MSP(VALUE) (__arm_wsr("MSP", (VALUE))) + + #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) + // without main extensions, the non-secure MSPLIM is RAZ/WI + #define __set_MSPLIM(VALUE) ((void)(VALUE)) + #else + #define __set_MSPLIM(VALUE) (__arm_wsr("MSPLIM", (VALUE))) + #endif + #define __set_PRIMASK(VALUE) (__arm_wsr("PRIMASK", (VALUE))) + #define __set_PSP(VALUE) (__arm_wsr("PSP", (VALUE))) + #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) + // without main extensions, the non-secure PSPLIM is RAZ/WI + #define __set_PSPLIM(VALUE) ((void)(VALUE)) + #else + #define __set_PSPLIM(VALUE) (__arm_wsr("PSPLIM", (VALUE))) + #endif + + #define __TZ_get_CONTROL_NS() (__arm_rsr("CONTROL_NS")) + +__STATIC_FORCEINLINE void __TZ_set_CONTROL_NS(uint32_t control) +{ + __arm_wsr("CONTROL_NS", control); + __iar_builtin_ISB(); +} + + #define __TZ_get_PSP_NS() (__arm_rsr("PSP_NS")) + #define __TZ_set_PSP_NS(VALUE) (__arm_wsr("PSP_NS", (VALUE))) + #define __TZ_get_MSP_NS() (__arm_rsr("MSP_NS")) + #define __TZ_set_MSP_NS(VALUE) (__arm_wsr("MSP_NS", (VALUE))) + #define __TZ_get_SP_NS() (__arm_rsr("SP_NS")) + #define __TZ_set_SP_NS(VALUE) (__arm_wsr("SP_NS", (VALUE))) + #define __TZ_get_PRIMASK_NS() (__arm_rsr("PRIMASK_NS")) + #define __TZ_set_PRIMASK_NS(VALUE) (__arm_wsr("PRIMASK_NS", (VALUE))) + #define __TZ_get_BASEPRI_NS() (__arm_rsr("BASEPRI_NS")) + #define __TZ_set_BASEPRI_NS(VALUE) (__arm_wsr("BASEPRI_NS", (VALUE))) + #define __TZ_get_FAULTMASK_NS() (__arm_rsr("FAULTMASK_NS")) + #define __TZ_set_FAULTMASK_NS(VALUE)(__arm_wsr("FAULTMASK_NS", (VALUE))) + + #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) + // without main extensions, the non-secure PSPLIM is RAZ/WI + #define __TZ_get_PSPLIM_NS() (0U) + #define __TZ_set_PSPLIM_NS(VALUE) ((void)(VALUE)) + #else + #define __TZ_get_PSPLIM_NS() (__arm_rsr("PSPLIM_NS")) + #define __TZ_set_PSPLIM_NS(VALUE) (__arm_wsr("PSPLIM_NS", (VALUE))) + #endif + + #define __TZ_get_MSPLIM_NS() (__arm_rsr("MSPLIM_NS")) + #define __TZ_set_MSPLIM_NS(VALUE) (__arm_wsr("MSPLIM_NS", (VALUE))) + + #define __NOP __iar_builtin_no_operation + + #define __CLZ __iar_builtin_CLZ + #define __CLREX __iar_builtin_CLREX + + #define __DMB __iar_builtin_DMB + #define __DSB __iar_builtin_DSB + #define __ISB __iar_builtin_ISB + + #define __LDREXB __iar_builtin_LDREXB + #define __LDREXH __iar_builtin_LDREXH + #define __LDREXW __iar_builtin_LDREX + + #define __RBIT __iar_builtin_RBIT + #define __REV __iar_builtin_REV + #define __REV16 __iar_builtin_REV16 + + __IAR_FT int16_t __REVSH(int16_t val) + { + return (int16_t) __iar_builtin_REVSH(val); + } + + #define __ROR __iar_builtin_ROR + #define __RRX __iar_builtin_RRX + + #define __SEV __iar_builtin_SEV + + #if !__IAR_M0_FAMILY + #define __SSAT __iar_builtin_SSAT + #endif + + #define __STREXB __iar_builtin_STREXB + #define __STREXH __iar_builtin_STREXH + #define __STREXW __iar_builtin_STREX + + #if !__IAR_M0_FAMILY + #define __USAT __iar_builtin_USAT + #endif + + #define __WFE __iar_builtin_WFE + #define __WFI __iar_builtin_WFI + + #if __ARM_MEDIA__ + #define __SADD8 __iar_builtin_SADD8 + #define __QADD8 __iar_builtin_QADD8 + #define __SHADD8 __iar_builtin_SHADD8 + #define __UADD8 __iar_builtin_UADD8 + #define __UQADD8 __iar_builtin_UQADD8 + #define __UHADD8 __iar_builtin_UHADD8 + #define __SSUB8 __iar_builtin_SSUB8 + #define __QSUB8 __iar_builtin_QSUB8 + #define __SHSUB8 __iar_builtin_SHSUB8 + #define __USUB8 __iar_builtin_USUB8 + #define __UQSUB8 __iar_builtin_UQSUB8 + #define __UHSUB8 __iar_builtin_UHSUB8 + #define __SADD16 __iar_builtin_SADD16 + #define __QADD16 __iar_builtin_QADD16 + #define __SHADD16 __iar_builtin_SHADD16 + #define __UADD16 __iar_builtin_UADD16 + #define __UQADD16 __iar_builtin_UQADD16 + #define __UHADD16 __iar_builtin_UHADD16 + #define __SSUB16 __iar_builtin_SSUB16 + #define __QSUB16 __iar_builtin_QSUB16 + #define __SHSUB16 __iar_builtin_SHSUB16 + #define __USUB16 __iar_builtin_USUB16 + #define __UQSUB16 __iar_builtin_UQSUB16 + #define __UHSUB16 __iar_builtin_UHSUB16 + #define __SASX __iar_builtin_SASX + #define __QASX __iar_builtin_QASX + #define __SHASX __iar_builtin_SHASX + #define __UASX __iar_builtin_UASX + #define __UQASX __iar_builtin_UQASX + #define __UHASX __iar_builtin_UHASX + #define __SSAX __iar_builtin_SSAX + #define __QSAX __iar_builtin_QSAX + #define __SHSAX __iar_builtin_SHSAX + #define __USAX __iar_builtin_USAX + #define __UQSAX __iar_builtin_UQSAX + #define __UHSAX __iar_builtin_UHSAX + #define __USAD8 __iar_builtin_USAD8 + #define __USADA8 __iar_builtin_USADA8 + #define __SSAT16 __iar_builtin_SSAT16 + #define __USAT16 __iar_builtin_USAT16 + #define __UXTB16 __iar_builtin_UXTB16 + #define __UXTAB16 __iar_builtin_UXTAB16 + #define __SXTB16 __iar_builtin_SXTB16 + #define __SXTAB16 __iar_builtin_SXTAB16 + #define __SMUAD __iar_builtin_SMUAD + #define __SMUADX __iar_builtin_SMUADX + #define __SMMLA __iar_builtin_SMMLA + #define __SMLAD __iar_builtin_SMLAD + #define __SMLADX __iar_builtin_SMLADX + #define __SMLALD __iar_builtin_SMLALD + #define __SMLALDX __iar_builtin_SMLALDX + #define __SMUSD __iar_builtin_SMUSD + #define __SMUSDX __iar_builtin_SMUSDX + #define __SMLSD __iar_builtin_SMLSD + #define __SMLSDX __iar_builtin_SMLSDX + #define __SMLSLD __iar_builtin_SMLSLD + #define __SMLSLDX __iar_builtin_SMLSLDX + #define __SEL __iar_builtin_SEL + #define __QADD __iar_builtin_QADD + #define __QSUB __iar_builtin_QSUB + #define __PKHBT __iar_builtin_PKHBT + #define __PKHTB __iar_builtin_PKHTB + #endif + +#else /* __ICCARM_INTRINSICS_VERSION__ == 2 */ + + #if __IAR_M0_FAMILY + /* Avoid clash between intrinsics.h and arm_math.h when compiling for Cortex-M0. */ + #define __CLZ __cmsis_iar_clz_not_active + #define __SSAT __cmsis_iar_ssat_not_active + #define __USAT __cmsis_iar_usat_not_active + #define __RBIT __cmsis_iar_rbit_not_active + #define __get_APSR __cmsis_iar_get_APSR_not_active + #endif + + + #if (!((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \ + (defined (__FPU_USED ) && (__FPU_USED == 1U)) )) + #define __get_FPSCR __cmsis_iar_get_FPSR_not_active + #define __set_FPSCR __cmsis_iar_set_FPSR_not_active + #endif + + #ifdef __INTRINSICS_INCLUDED + #error intrinsics.h is already included previously! + #endif + + #include + + #if __IAR_M0_FAMILY + /* Avoid clash between intrinsics.h and arm_math.h when compiling for Cortex-M0. */ + #undef __CLZ + #undef __SSAT + #undef __USAT + #undef __RBIT + #undef __get_APSR + + __STATIC_INLINE uint8_t __CLZ(uint32_t data) + { + if (data == 0U) { return 32U; } + + uint32_t count = 0U; + uint32_t mask = 0x80000000U; + + while ((data & mask) == 0U) + { + count += 1U; + mask = mask >> 1U; + } + return count; + } + + __STATIC_INLINE uint32_t __RBIT(uint32_t v) + { + uint8_t sc = 31U; + uint32_t r = v; + for (v >>= 1U; v; v >>= 1U) + { + r <<= 1U; + r |= v & 1U; + sc--; + } + return (r << sc); + } + + __STATIC_INLINE uint32_t __get_APSR(void) + { + uint32_t res; + __asm("MRS %0,APSR" : "=r" (res)); + return res; + } + + #endif + + #if (!((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \ + (defined (__FPU_USED ) && (__FPU_USED == 1U)) )) + #undef __get_FPSCR + #undef __set_FPSCR + #define __get_FPSCR() (0) + #define __set_FPSCR(VALUE) ((void)VALUE) + #endif + + #pragma diag_suppress=Pe940 + #pragma diag_suppress=Pe177 + + #define __enable_irq __enable_interrupt + #define __disable_irq __disable_interrupt + #define __NOP __no_operation + + #define __get_xPSR __get_PSR + + #if (!defined(__ARM_ARCH_6M__) || __ARM_ARCH_6M__==0) + + __IAR_FT uint32_t __LDREXW(uint32_t volatile *ptr) + { + return __LDREX((unsigned long *)ptr); + } + + __IAR_FT uint32_t __STREXW(uint32_t value, uint32_t volatile *ptr) + { + return __STREX(value, (unsigned long *)ptr); + } + #endif + + + /* __CORTEX_M is defined in core_cm0.h, core_cm3.h and core_cm4.h. */ + #if (__CORTEX_M >= 0x03) + + __IAR_FT uint32_t __RRX(uint32_t value) + { + uint32_t result; + __ASM volatile("RRX %0, %1" : "=r"(result) : "r" (value)); + return(result); + } + + __IAR_FT void __set_BASEPRI_MAX(uint32_t value) + { + __asm volatile("MSR BASEPRI_MAX,%0"::"r" (value)); + } + + + #define __enable_fault_irq __enable_fiq + #define __disable_fault_irq __disable_fiq + + + #endif /* (__CORTEX_M >= 0x03) */ + + __IAR_FT uint32_t __ROR(uint32_t op1, uint32_t op2) + { + return (op1 >> op2) | (op1 << ((sizeof(op1)*8)-op2)); + } + + #if ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) + + __IAR_FT uint32_t __get_MSPLIM(void) + { + uint32_t res; + #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + (!defined (__ARM_FEATURE_CMSE ) || (__ARM_FEATURE_CMSE < 3))) + // without main extensions, the non-secure MSPLIM is RAZ/WI + res = 0U; + #else + __asm volatile("MRS %0,MSPLIM" : "=r" (res)); + #endif + return res; + } + + __IAR_FT void __set_MSPLIM(uint32_t value) + { + #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + (!defined (__ARM_FEATURE_CMSE ) || (__ARM_FEATURE_CMSE < 3))) + // without main extensions, the non-secure MSPLIM is RAZ/WI + (void)value; + #else + __asm volatile("MSR MSPLIM,%0" :: "r" (value)); + #endif + } + + __IAR_FT uint32_t __get_PSPLIM(void) + { + uint32_t res; + #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + (!defined (__ARM_FEATURE_CMSE ) || (__ARM_FEATURE_CMSE < 3))) + // without main extensions, the non-secure PSPLIM is RAZ/WI + res = 0U; + #else + __asm volatile("MRS %0,PSPLIM" : "=r" (res)); + #endif + return res; + } + + __IAR_FT void __set_PSPLIM(uint32_t value) + { + #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + (!defined (__ARM_FEATURE_CMSE ) || (__ARM_FEATURE_CMSE < 3))) + // without main extensions, the non-secure PSPLIM is RAZ/WI + (void)value; + #else + __asm volatile("MSR PSPLIM,%0" :: "r" (value)); + #endif + } + + __IAR_FT uint32_t __TZ_get_CONTROL_NS(void) + { + uint32_t res; + __asm volatile("MRS %0,CONTROL_NS" : "=r" (res)); + return res; + } + + __IAR_FT void __TZ_set_CONTROL_NS(uint32_t value) + { + __asm volatile("MSR CONTROL_NS,%0" :: "r" (value)); + __iar_builtin_ISB(); + } + + __IAR_FT uint32_t __TZ_get_PSP_NS(void) + { + uint32_t res; + __asm volatile("MRS %0,PSP_NS" : "=r" (res)); + return res; + } + + __IAR_FT void __TZ_set_PSP_NS(uint32_t value) + { + __asm volatile("MSR PSP_NS,%0" :: "r" (value)); + } + + __IAR_FT uint32_t __TZ_get_MSP_NS(void) + { + uint32_t res; + __asm volatile("MRS %0,MSP_NS" : "=r" (res)); + return res; + } + + __IAR_FT void __TZ_set_MSP_NS(uint32_t value) + { + __asm volatile("MSR MSP_NS,%0" :: "r" (value)); + } + + __IAR_FT uint32_t __TZ_get_SP_NS(void) + { + uint32_t res; + __asm volatile("MRS %0,SP_NS" : "=r" (res)); + return res; + } + __IAR_FT void __TZ_set_SP_NS(uint32_t value) + { + __asm volatile("MSR SP_NS,%0" :: "r" (value)); + } + + __IAR_FT uint32_t __TZ_get_PRIMASK_NS(void) + { + uint32_t res; + __asm volatile("MRS %0,PRIMASK_NS" : "=r" (res)); + return res; + } + + __IAR_FT void __TZ_set_PRIMASK_NS(uint32_t value) + { + __asm volatile("MSR PRIMASK_NS,%0" :: "r" (value)); + } + + __IAR_FT uint32_t __TZ_get_BASEPRI_NS(void) + { + uint32_t res; + __asm volatile("MRS %0,BASEPRI_NS" : "=r" (res)); + return res; + } + + __IAR_FT void __TZ_set_BASEPRI_NS(uint32_t value) + { + __asm volatile("MSR BASEPRI_NS,%0" :: "r" (value)); + } + + __IAR_FT uint32_t __TZ_get_FAULTMASK_NS(void) + { + uint32_t res; + __asm volatile("MRS %0,FAULTMASK_NS" : "=r" (res)); + return res; + } + + __IAR_FT void __TZ_set_FAULTMASK_NS(uint32_t value) + { + __asm volatile("MSR FAULTMASK_NS,%0" :: "r" (value)); + } + + __IAR_FT uint32_t __TZ_get_PSPLIM_NS(void) + { + uint32_t res; + #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + (!defined (__ARM_FEATURE_CMSE ) || (__ARM_FEATURE_CMSE < 3))) + // without main extensions, the non-secure PSPLIM is RAZ/WI + res = 0U; + #else + __asm volatile("MRS %0,PSPLIM_NS" : "=r" (res)); + #endif + return res; + } + + __IAR_FT void __TZ_set_PSPLIM_NS(uint32_t value) + { + #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + (!defined (__ARM_FEATURE_CMSE ) || (__ARM_FEATURE_CMSE < 3))) + // without main extensions, the non-secure PSPLIM is RAZ/WI + (void)value; + #else + __asm volatile("MSR PSPLIM_NS,%0" :: "r" (value)); + #endif + } + + __IAR_FT uint32_t __TZ_get_MSPLIM_NS(void) + { + uint32_t res; + __asm volatile("MRS %0,MSPLIM_NS" : "=r" (res)); + return res; + } + + __IAR_FT void __TZ_set_MSPLIM_NS(uint32_t value) + { + __asm volatile("MSR MSPLIM_NS,%0" :: "r" (value)); + } + + #endif /* __ARM_ARCH_8M_MAIN__ or __ARM_ARCH_8M_BASE__ */ + +#endif /* __ICCARM_INTRINSICS_VERSION__ == 2 */ + +#define __BKPT(value) __asm volatile ("BKPT %0" : : "i"(value)) + +#if __IAR_M0_FAMILY + __STATIC_INLINE int32_t __SSAT(int32_t val, uint32_t sat) + { + if ((sat >= 1U) && (sat <= 32U)) + { + const int32_t max = (int32_t)((1U << (sat - 1U)) - 1U); + const int32_t min = -1 - max ; + if (val > max) + { + return max; + } + else if (val < min) + { + return min; + } + } + return val; + } + + __STATIC_INLINE uint32_t __USAT(int32_t val, uint32_t sat) + { + if (sat <= 31U) + { + const uint32_t max = ((1U << sat) - 1U); + if (val > (int32_t)max) + { + return max; + } + else if (val < 0) + { + return 0U; + } + } + return (uint32_t)val; + } +#endif + +#if (__CORTEX_M >= 0x03) /* __CORTEX_M is defined in core_cm0.h, core_cm3.h and core_cm4.h. */ + + __IAR_FT uint8_t __LDRBT(volatile uint8_t *addr) + { + uint32_t res; + __ASM volatile ("LDRBT %0, [%1]" : "=r" (res) : "r" (addr) : "memory"); + return ((uint8_t)res); + } + + __IAR_FT uint16_t __LDRHT(volatile uint16_t *addr) + { + uint32_t res; + __ASM volatile ("LDRHT %0, [%1]" : "=r" (res) : "r" (addr) : "memory"); + return ((uint16_t)res); + } + + __IAR_FT uint32_t __LDRT(volatile uint32_t *addr) + { + uint32_t res; + __ASM volatile ("LDRT %0, [%1]" : "=r" (res) : "r" (addr) : "memory"); + return res; + } + + __IAR_FT void __STRBT(uint8_t value, volatile uint8_t *addr) + { + __ASM volatile ("STRBT %1, [%0]" : : "r" (addr), "r" ((uint32_t)value) : "memory"); + } + + __IAR_FT void __STRHT(uint16_t value, volatile uint16_t *addr) + { + __ASM volatile ("STRHT %1, [%0]" : : "r" (addr), "r" ((uint32_t)value) : "memory"); + } + + __IAR_FT void __STRT(uint32_t value, volatile uint32_t *addr) + { + __ASM volatile ("STRT %1, [%0]" : : "r" (addr), "r" (value) : "memory"); + } + +#endif /* (__CORTEX_M >= 0x03) */ + +#if ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) + + + __IAR_FT uint8_t __LDAB(volatile uint8_t *ptr) + { + uint32_t res; + __ASM volatile ("LDAB %0, [%1]" : "=r" (res) : "r" (ptr) : "memory"); + return ((uint8_t)res); + } + + __IAR_FT uint16_t __LDAH(volatile uint16_t *ptr) + { + uint32_t res; + __ASM volatile ("LDAH %0, [%1]" : "=r" (res) : "r" (ptr) : "memory"); + return ((uint16_t)res); + } + + __IAR_FT uint32_t __LDA(volatile uint32_t *ptr) + { + uint32_t res; + __ASM volatile ("LDA %0, [%1]" : "=r" (res) : "r" (ptr) : "memory"); + return res; + } + + __IAR_FT void __STLB(uint8_t value, volatile uint8_t *ptr) + { + __ASM volatile ("STLB %1, [%0]" :: "r" (ptr), "r" (value) : "memory"); + } + + __IAR_FT void __STLH(uint16_t value, volatile uint16_t *ptr) + { + __ASM volatile ("STLH %1, [%0]" :: "r" (ptr), "r" (value) : "memory"); + } + + __IAR_FT void __STL(uint32_t value, volatile uint32_t *ptr) + { + __ASM volatile ("STL %1, [%0]" :: "r" (ptr), "r" (value) : "memory"); + } + + __IAR_FT uint8_t __LDAEXB(volatile uint8_t *ptr) + { + uint32_t res; + __ASM volatile ("LDAEXB %0, [%1]" : "=r" (res) : "r" (ptr) : "memory"); + return ((uint8_t)res); + } + + __IAR_FT uint16_t __LDAEXH(volatile uint16_t *ptr) + { + uint32_t res; + __ASM volatile ("LDAEXH %0, [%1]" : "=r" (res) : "r" (ptr) : "memory"); + return ((uint16_t)res); + } + + __IAR_FT uint32_t __LDAEX(volatile uint32_t *ptr) + { + uint32_t res; + __ASM volatile ("LDAEX %0, [%1]" : "=r" (res) : "r" (ptr) : "memory"); + return res; + } + + __IAR_FT uint32_t __STLEXB(uint8_t value, volatile uint8_t *ptr) + { + uint32_t res; + __ASM volatile ("STLEXB %0, %2, [%1]" : "=r" (res) : "r" (ptr), "r" (value) : "memory"); + return res; + } + + __IAR_FT uint32_t __STLEXH(uint16_t value, volatile uint16_t *ptr) + { + uint32_t res; + __ASM volatile ("STLEXH %0, %2, [%1]" : "=r" (res) : "r" (ptr), "r" (value) : "memory"); + return res; + } + + __IAR_FT uint32_t __STLEX(uint32_t value, volatile uint32_t *ptr) + { + uint32_t res; + __ASM volatile ("STLEX %0, %2, [%1]" : "=r" (res) : "r" (ptr), "r" (value) : "memory"); + return res; + } + +#endif /* __ARM_ARCH_8M_MAIN__ or __ARM_ARCH_8M_BASE__ */ + +#undef __IAR_FT +#undef __IAR_M0_FAMILY +#undef __ICCARM_V8 + +#pragma diag_default=Pe940 +#pragma diag_default=Pe177 + +#define __SXTB16_RORn(ARG1, ARG2) __SXTB16(__ROR(ARG1, ARG2)) + +#define __SXTAB16_RORn(ARG1, ARG2, ARG3) __SXTAB16(ARG1, __ROR(ARG2, ARG3)) + +#endif /* __CMSIS_ICCARM_H__ */ diff --git a/bsp/renesas/ra8m1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/cmsis_version.h b/bsp/renesas/ra8m1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/cmsis_version.h new file mode 100644 index 000000000000..8b4765f186ef --- /dev/null +++ b/bsp/renesas/ra8m1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/cmsis_version.h @@ -0,0 +1,39 @@ +/**************************************************************************//** + * @file cmsis_version.h + * @brief CMSIS Core(M) Version definitions + * @version V5.0.5 + * @date 02. February 2022 + ******************************************************************************/ +/* + * Copyright (c) 2009-2022 ARM Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#elif defined (__clang__) + #pragma clang system_header /* treat file as system include file */ +#endif + +#ifndef __CMSIS_VERSION_H +#define __CMSIS_VERSION_H + +/* CMSIS Version definitions */ +#define __CM_CMSIS_VERSION_MAIN ( 5U) /*!< [31:16] CMSIS Core(M) main version */ +#define __CM_CMSIS_VERSION_SUB ( 6U) /*!< [15:0] CMSIS Core(M) sub version */ +#define __CM_CMSIS_VERSION ((__CM_CMSIS_VERSION_MAIN << 16U) | \ + __CM_CMSIS_VERSION_SUB ) /*!< CMSIS Core(M) version number */ +#endif diff --git a/bsp/renesas/ra8m1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/core_armv81mml.h b/bsp/renesas/ra8m1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/core_armv81mml.h new file mode 100644 index 000000000000..94128a1a7095 --- /dev/null +++ b/bsp/renesas/ra8m1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/core_armv81mml.h @@ -0,0 +1,4228 @@ +/**************************************************************************//** + * @file core_armv81mml.h + * @brief CMSIS Armv8.1-M Mainline Core Peripheral Access Layer Header File + * @version V1.4.2 + * @date 13. October 2021 + ******************************************************************************/ +/* + * Copyright (c) 2018-2021 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#elif defined (__clang__) + #pragma clang system_header /* treat file as system include file */ +#elif defined ( __GNUC__ ) + #pragma GCC diagnostic ignored "-Wpedantic" /* disable pedantic warning due to unnamed structs/unions */ +#endif + +#ifndef __CORE_ARMV81MML_H_GENERIC +#define __CORE_ARMV81MML_H_GENERIC + +#include + +#ifdef __cplusplus + extern "C" { +#endif + +/** + \page CMSIS_MISRA_Exceptions MISRA-C:2004 Compliance Exceptions + CMSIS violates the following MISRA-C:2004 rules: + + \li Required Rule 8.5, object/function definition in header file.
+ Function definitions in header files are used to allow 'inlining'. + + \li Required Rule 18.4, declaration of union type or object of union type: '{...}'.
+ Unions are used for effective representation of core registers. + + \li Advisory Rule 19.7, Function-like macro defined.
+ Function-like macros are used to allow more efficient code. + */ + + +/******************************************************************************* + * CMSIS definitions + ******************************************************************************/ +/** + \ingroup Cortex_ARMV81MML + @{ + */ + +#include "cmsis_version.h" + +/* CMSIS ARMV81MML definitions */ +#define __ARMv81MML_CMSIS_VERSION_MAIN (__CM_CMSIS_VERSION_MAIN) /*!< \deprecated [31:16] CMSIS HAL main version */ +#define __ARMv81MML_CMSIS_VERSION_SUB (__CM_CMSIS_VERSION_SUB) /*!< \deprecated [15:0] CMSIS HAL sub version */ +#define __ARMv81MML_CMSIS_VERSION ((__ARMv81MML_CMSIS_VERSION_MAIN << 16U) | \ + __ARMv81MML_CMSIS_VERSION_SUB ) /*!< \deprecated CMSIS HAL version number */ + +#define __CORTEX_M (81U) /*!< Cortex-M Core */ + +#if defined ( __CC_ARM ) + #error Legacy Arm Compiler does not support Armv8.1-M target architecture. +#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) + #if defined __ARM_FP + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + + #if defined(__ARM_FEATURE_DSP) + #if defined(__DSP_PRESENT) && (__DSP_PRESENT == 1U) + #define __DSP_USED 1U + #else + #error "Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)" + #define __DSP_USED 0U + #endif + #else + #define __DSP_USED 0U + #endif + +#elif defined ( __GNUC__ ) + #if defined (__VFP_FP__) && !defined(__SOFTFP__) + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + + #if defined(__ARM_FEATURE_DSP) + #if defined(__DSP_PRESENT) && (__DSP_PRESENT == 1U) + #define __DSP_USED 1U + #else + #error "Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)" + #define __DSP_USED 0U + #endif + #else + #define __DSP_USED 0U + #endif + +#elif defined ( __ICCARM__ ) + #if defined __ARMVFP__ + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + + #if defined(__ARM_FEATURE_DSP) + #if defined(__DSP_PRESENT) && (__DSP_PRESENT == 1U) + #define __DSP_USED 1U + #else + #error "Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)" + #define __DSP_USED 0U + #endif + #else + #define __DSP_USED 0U + #endif + +#elif defined ( __TI_ARM__ ) + #if defined __TI_VFP_SUPPORT__ + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined ( __TASKING__ ) + #if defined __FPU_VFP__ + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined ( __CSMC__ ) + #if ( __CSMC__ & 0x400U) + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#endif + +#include "cmsis_compiler.h" /* CMSIS compiler specific defines */ + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_ARMV81MML_H_GENERIC */ + +#ifndef __CMSIS_GENERIC + +#ifndef __CORE_ARMV81MML_H_DEPENDANT +#define __CORE_ARMV81MML_H_DEPENDANT + +#ifdef __cplusplus + extern "C" { +#endif + +/* check device defines and use defaults */ +#if defined __CHECK_DEVICE_DEFINES + #ifndef __ARMv81MML_REV + #define __ARMv81MML_REV 0x0000U + #warning "__ARMv81MML_REV not defined in device header file; using default!" + #endif + + #ifndef __FPU_PRESENT + #define __FPU_PRESENT 0U + #warning "__FPU_PRESENT not defined in device header file; using default!" + #endif + + #if __FPU_PRESENT != 0U + #ifndef __FPU_DP + #define __FPU_DP 0U + #warning "__FPU_DP not defined in device header file; using default!" + #endif + #endif + + #ifndef __MPU_PRESENT + #define __MPU_PRESENT 0U + #warning "__MPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __ICACHE_PRESENT + #define __ICACHE_PRESENT 0U + #warning "__ICACHE_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __DCACHE_PRESENT + #define __DCACHE_PRESENT 0U + #warning "__DCACHE_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __PMU_PRESENT + #define __PMU_PRESENT 0U + #warning "__PMU_PRESENT not defined in device header file; using default!" + #endif + + #if __PMU_PRESENT != 0U + #ifndef __PMU_NUM_EVENTCNT + #define __PMU_NUM_EVENTCNT 2U + #warning "__PMU_NUM_EVENTCNT not defined in device header file; using default!" + #elif (__PMU_NUM_EVENTCNT > 31 || __PMU_NUM_EVENTCNT < 2) + #error "__PMU_NUM_EVENTCNT is out of range in device header file!" */ + #endif + #endif + + #ifndef __SAUREGION_PRESENT + #define __SAUREGION_PRESENT 0U + #warning "__SAUREGION_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __DSP_PRESENT + #define __DSP_PRESENT 0U + #warning "__DSP_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __VTOR_PRESENT + #define __VTOR_PRESENT 1U + #warning "__VTOR_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __NVIC_PRIO_BITS + #define __NVIC_PRIO_BITS 3U + #warning "__NVIC_PRIO_BITS not defined in device header file; using default!" + #endif + + #ifndef __Vendor_SysTickConfig + #define __Vendor_SysTickConfig 0U + #warning "__Vendor_SysTickConfig not defined in device header file; using default!" + #endif +#endif + +/* IO definitions (access restrictions to peripheral registers) */ +/** + \defgroup CMSIS_glob_defs CMSIS Global Defines + + IO Type Qualifiers are used + \li to specify the access to peripheral variables. + \li for automatic generation of peripheral register debug information. +*/ +#ifdef __cplusplus + #define __I volatile /*!< Defines 'read only' permissions */ +#else + #define __I volatile const /*!< Defines 'read only' permissions */ +#endif +#define __O volatile /*!< Defines 'write only' permissions */ +#define __IO volatile /*!< Defines 'read / write' permissions */ + +/* following defines should be used for structure members */ +#define __IM volatile const /*! Defines 'read only' structure member permissions */ +#define __OM volatile /*! Defines 'write only' structure member permissions */ +#define __IOM volatile /*! Defines 'read / write' structure member permissions */ + +/*@} end of group ARMv81MML */ + + + +/******************************************************************************* + * Register Abstraction + Core Register contain: + - Core Register + - Core NVIC Register + - Core SCB Register + - Core SysTick Register + - Core Debug Register + - Core MPU Register + - Core SAU Register + - Core FPU Register + ******************************************************************************/ +/** + \defgroup CMSIS_core_register Defines and Type Definitions + \brief Type definitions and defines for Cortex-M processor based devices. +*/ + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CORE Status and Control Registers + \brief Core Register type definitions. + @{ + */ + +/** + \brief Union type to access the Application Program Status Register (APSR). + */ +typedef union +{ + struct + { + uint32_t _reserved0:16; /*!< bit: 0..15 Reserved */ + uint32_t GE:4; /*!< bit: 16..19 Greater than or Equal flags */ + uint32_t _reserved1:7; /*!< bit: 20..26 Reserved */ + uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} APSR_Type; + +/* APSR Register Definitions */ +#define APSR_N_Pos 31U /*!< APSR: N Position */ +#define APSR_N_Msk (1UL << APSR_N_Pos) /*!< APSR: N Mask */ + +#define APSR_Z_Pos 30U /*!< APSR: Z Position */ +#define APSR_Z_Msk (1UL << APSR_Z_Pos) /*!< APSR: Z Mask */ + +#define APSR_C_Pos 29U /*!< APSR: C Position */ +#define APSR_C_Msk (1UL << APSR_C_Pos) /*!< APSR: C Mask */ + +#define APSR_V_Pos 28U /*!< APSR: V Position */ +#define APSR_V_Msk (1UL << APSR_V_Pos) /*!< APSR: V Mask */ + +#define APSR_Q_Pos 27U /*!< APSR: Q Position */ +#define APSR_Q_Msk (1UL << APSR_Q_Pos) /*!< APSR: Q Mask */ + +#define APSR_GE_Pos 16U /*!< APSR: GE Position */ +#define APSR_GE_Msk (0xFUL << APSR_GE_Pos) /*!< APSR: GE Mask */ + + +/** + \brief Union type to access the Interrupt Program Status Register (IPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:23; /*!< bit: 9..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} IPSR_Type; + +/* IPSR Register Definitions */ +#define IPSR_ISR_Pos 0U /*!< IPSR: ISR Position */ +#define IPSR_ISR_Msk (0x1FFUL /*<< IPSR_ISR_Pos*/) /*!< IPSR: ISR Mask */ + + +/** + \brief Union type to access the Special-Purpose Program Status Registers (xPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:7; /*!< bit: 9..15 Reserved */ + uint32_t GE:4; /*!< bit: 16..19 Greater than or Equal flags */ + uint32_t _reserved1:4; /*!< bit: 20..23 Reserved */ + uint32_t T:1; /*!< bit: 24 Thumb bit (read 0) */ + uint32_t IT:2; /*!< bit: 25..26 saved IT state (read 0) */ + uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} xPSR_Type; + +/* xPSR Register Definitions */ +#define xPSR_N_Pos 31U /*!< xPSR: N Position */ +#define xPSR_N_Msk (1UL << xPSR_N_Pos) /*!< xPSR: N Mask */ + +#define xPSR_Z_Pos 30U /*!< xPSR: Z Position */ +#define xPSR_Z_Msk (1UL << xPSR_Z_Pos) /*!< xPSR: Z Mask */ + +#define xPSR_C_Pos 29U /*!< xPSR: C Position */ +#define xPSR_C_Msk (1UL << xPSR_C_Pos) /*!< xPSR: C Mask */ + +#define xPSR_V_Pos 28U /*!< xPSR: V Position */ +#define xPSR_V_Msk (1UL << xPSR_V_Pos) /*!< xPSR: V Mask */ + +#define xPSR_Q_Pos 27U /*!< xPSR: Q Position */ +#define xPSR_Q_Msk (1UL << xPSR_Q_Pos) /*!< xPSR: Q Mask */ + +#define xPSR_IT_Pos 25U /*!< xPSR: IT Position */ +#define xPSR_IT_Msk (3UL << xPSR_IT_Pos) /*!< xPSR: IT Mask */ + +#define xPSR_T_Pos 24U /*!< xPSR: T Position */ +#define xPSR_T_Msk (1UL << xPSR_T_Pos) /*!< xPSR: T Mask */ + +#define xPSR_GE_Pos 16U /*!< xPSR: GE Position */ +#define xPSR_GE_Msk (0xFUL << xPSR_GE_Pos) /*!< xPSR: GE Mask */ + +#define xPSR_ISR_Pos 0U /*!< xPSR: ISR Position */ +#define xPSR_ISR_Msk (0x1FFUL /*<< xPSR_ISR_Pos*/) /*!< xPSR: ISR Mask */ + + +/** + \brief Union type to access the Control Registers (CONTROL). + */ +typedef union +{ + struct + { + uint32_t nPRIV:1; /*!< bit: 0 Execution privilege in Thread mode */ + uint32_t SPSEL:1; /*!< bit: 1 Stack-pointer select */ + uint32_t FPCA:1; /*!< bit: 2 Floating-point context active */ + uint32_t SFPA:1; /*!< bit: 3 Secure floating-point active */ + uint32_t _reserved1:28; /*!< bit: 4..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} CONTROL_Type; + +/* CONTROL Register Definitions */ +#define CONTROL_SFPA_Pos 3U /*!< CONTROL: SFPA Position */ +#define CONTROL_SFPA_Msk (1UL << CONTROL_SFPA_Pos) /*!< CONTROL: SFPA Mask */ + +#define CONTROL_FPCA_Pos 2U /*!< CONTROL: FPCA Position */ +#define CONTROL_FPCA_Msk (1UL << CONTROL_FPCA_Pos) /*!< CONTROL: FPCA Mask */ + +#define CONTROL_SPSEL_Pos 1U /*!< CONTROL: SPSEL Position */ +#define CONTROL_SPSEL_Msk (1UL << CONTROL_SPSEL_Pos) /*!< CONTROL: SPSEL Mask */ + +#define CONTROL_nPRIV_Pos 0U /*!< CONTROL: nPRIV Position */ +#define CONTROL_nPRIV_Msk (1UL /*<< CONTROL_nPRIV_Pos*/) /*!< CONTROL: nPRIV Mask */ + +/*@} end of group CMSIS_CORE */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_NVIC Nested Vectored Interrupt Controller (NVIC) + \brief Type definitions for the NVIC Registers + @{ + */ + +/** + \brief Structure type to access the Nested Vectored Interrupt Controller (NVIC). + */ +typedef struct +{ + __IOM uint32_t ISER[16U]; /*!< Offset: 0x000 (R/W) Interrupt Set Enable Register */ + uint32_t RESERVED0[16U]; + __IOM uint32_t ICER[16U]; /*!< Offset: 0x080 (R/W) Interrupt Clear Enable Register */ + uint32_t RSERVED1[16U]; + __IOM uint32_t ISPR[16U]; /*!< Offset: 0x100 (R/W) Interrupt Set Pending Register */ + uint32_t RESERVED2[16U]; + __IOM uint32_t ICPR[16U]; /*!< Offset: 0x180 (R/W) Interrupt Clear Pending Register */ + uint32_t RESERVED3[16U]; + __IOM uint32_t IABR[16U]; /*!< Offset: 0x200 (R/W) Interrupt Active bit Register */ + uint32_t RESERVED4[16U]; + __IOM uint32_t ITNS[16U]; /*!< Offset: 0x280 (R/W) Interrupt Non-Secure State Register */ + uint32_t RESERVED5[16U]; + __IOM uint8_t IPR[496U]; /*!< Offset: 0x300 (R/W) Interrupt Priority Register (8Bit wide) */ + uint32_t RESERVED6[580U]; + __OM uint32_t STIR; /*!< Offset: 0xE00 ( /W) Software Trigger Interrupt Register */ +} NVIC_Type; + +/* Software Triggered Interrupt Register Definitions */ +#define NVIC_STIR_INTID_Pos 0U /*!< STIR: INTLINESNUM Position */ +#define NVIC_STIR_INTID_Msk (0x1FFUL /*<< NVIC_STIR_INTID_Pos*/) /*!< STIR: INTLINESNUM Mask */ + +/*@} end of group CMSIS_NVIC */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SCB System Control Block (SCB) + \brief Type definitions for the System Control Block Registers + @{ + */ + +/** + \brief Structure type to access the System Control Block (SCB). + */ +typedef struct +{ + __IM uint32_t CPUID; /*!< Offset: 0x000 (R/ ) CPUID Base Register */ + __IOM uint32_t ICSR; /*!< Offset: 0x004 (R/W) Interrupt Control and State Register */ + __IOM uint32_t VTOR; /*!< Offset: 0x008 (R/W) Vector Table Offset Register */ + __IOM uint32_t AIRCR; /*!< Offset: 0x00C (R/W) Application Interrupt and Reset Control Register */ + __IOM uint32_t SCR; /*!< Offset: 0x010 (R/W) System Control Register */ + __IOM uint32_t CCR; /*!< Offset: 0x014 (R/W) Configuration Control Register */ + __IOM uint8_t SHPR[12U]; /*!< Offset: 0x018 (R/W) System Handlers Priority Registers (4-7, 8-11, 12-15) */ + __IOM uint32_t SHCSR; /*!< Offset: 0x024 (R/W) System Handler Control and State Register */ + __IOM uint32_t CFSR; /*!< Offset: 0x028 (R/W) Configurable Fault Status Register */ + __IOM uint32_t HFSR; /*!< Offset: 0x02C (R/W) HardFault Status Register */ + __IOM uint32_t DFSR; /*!< Offset: 0x030 (R/W) Debug Fault Status Register */ + __IOM uint32_t MMFAR; /*!< Offset: 0x034 (R/W) MemManage Fault Address Register */ + __IOM uint32_t BFAR; /*!< Offset: 0x038 (R/W) BusFault Address Register */ + __IOM uint32_t AFSR; /*!< Offset: 0x03C (R/W) Auxiliary Fault Status Register */ + __IM uint32_t ID_PFR[2U]; /*!< Offset: 0x040 (R/ ) Processor Feature Register */ + __IM uint32_t ID_DFR; /*!< Offset: 0x048 (R/ ) Debug Feature Register */ + __IM uint32_t ID_AFR; /*!< Offset: 0x04C (R/ ) Auxiliary Feature Register */ + __IM uint32_t ID_MMFR[4U]; /*!< Offset: 0x050 (R/ ) Memory Model Feature Register */ + __IM uint32_t ID_ISAR[6U]; /*!< Offset: 0x060 (R/ ) Instruction Set Attributes Register */ + __IM uint32_t CLIDR; /*!< Offset: 0x078 (R/ ) Cache Level ID register */ + __IM uint32_t CTR; /*!< Offset: 0x07C (R/ ) Cache Type register */ + __IM uint32_t CCSIDR; /*!< Offset: 0x080 (R/ ) Cache Size ID Register */ + __IOM uint32_t CSSELR; /*!< Offset: 0x084 (R/W) Cache Size Selection Register */ + __IOM uint32_t CPACR; /*!< Offset: 0x088 (R/W) Coprocessor Access Control Register */ + __IOM uint32_t NSACR; /*!< Offset: 0x08C (R/W) Non-Secure Access Control Register */ + uint32_t RESERVED7[21U]; + __IOM uint32_t SFSR; /*!< Offset: 0x0E4 (R/W) Secure Fault Status Register */ + __IOM uint32_t SFAR; /*!< Offset: 0x0E8 (R/W) Secure Fault Address Register */ + uint32_t RESERVED3[69U]; + __OM uint32_t STIR; /*!< Offset: 0x200 ( /W) Software Triggered Interrupt Register */ + __IOM uint32_t RFSR; /*!< Offset: 0x204 (R/W) RAS Fault Status Register */ + uint32_t RESERVED4[14U]; + __IM uint32_t MVFR0; /*!< Offset: 0x240 (R/ ) Media and VFP Feature Register 0 */ + __IM uint32_t MVFR1; /*!< Offset: 0x244 (R/ ) Media and VFP Feature Register 1 */ + __IM uint32_t MVFR2; /*!< Offset: 0x248 (R/ ) Media and VFP Feature Register 2 */ + uint32_t RESERVED5[1U]; + __OM uint32_t ICIALLU; /*!< Offset: 0x250 ( /W) I-Cache Invalidate All to PoU */ + uint32_t RESERVED6[1U]; + __OM uint32_t ICIMVAU; /*!< Offset: 0x258 ( /W) I-Cache Invalidate by MVA to PoU */ + __OM uint32_t DCIMVAC; /*!< Offset: 0x25C ( /W) D-Cache Invalidate by MVA to PoC */ + __OM uint32_t DCISW; /*!< Offset: 0x260 ( /W) D-Cache Invalidate by Set-way */ + __OM uint32_t DCCMVAU; /*!< Offset: 0x264 ( /W) D-Cache Clean by MVA to PoU */ + __OM uint32_t DCCMVAC; /*!< Offset: 0x268 ( /W) D-Cache Clean by MVA to PoC */ + __OM uint32_t DCCSW; /*!< Offset: 0x26C ( /W) D-Cache Clean by Set-way */ + __OM uint32_t DCCIMVAC; /*!< Offset: 0x270 ( /W) D-Cache Clean and Invalidate by MVA to PoC */ + __OM uint32_t DCCISW; /*!< Offset: 0x274 ( /W) D-Cache Clean and Invalidate by Set-way */ + __OM uint32_t BPIALL; /*!< Offset: 0x278 ( /W) Branch Predictor Invalidate All */ +} SCB_Type; + +/* SCB CPUID Register Definitions */ +#define SCB_CPUID_IMPLEMENTER_Pos 24U /*!< SCB CPUID: IMPLEMENTER Position */ +#define SCB_CPUID_IMPLEMENTER_Msk (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos) /*!< SCB CPUID: IMPLEMENTER Mask */ + +#define SCB_CPUID_VARIANT_Pos 20U /*!< SCB CPUID: VARIANT Position */ +#define SCB_CPUID_VARIANT_Msk (0xFUL << SCB_CPUID_VARIANT_Pos) /*!< SCB CPUID: VARIANT Mask */ + +#define SCB_CPUID_ARCHITECTURE_Pos 16U /*!< SCB CPUID: ARCHITECTURE Position */ +#define SCB_CPUID_ARCHITECTURE_Msk (0xFUL << SCB_CPUID_ARCHITECTURE_Pos) /*!< SCB CPUID: ARCHITECTURE Mask */ + +#define SCB_CPUID_PARTNO_Pos 4U /*!< SCB CPUID: PARTNO Position */ +#define SCB_CPUID_PARTNO_Msk (0xFFFUL << SCB_CPUID_PARTNO_Pos) /*!< SCB CPUID: PARTNO Mask */ + +#define SCB_CPUID_REVISION_Pos 0U /*!< SCB CPUID: REVISION Position */ +#define SCB_CPUID_REVISION_Msk (0xFUL /*<< SCB_CPUID_REVISION_Pos*/) /*!< SCB CPUID: REVISION Mask */ + +/* SCB Interrupt Control State Register Definitions */ +#define SCB_ICSR_PENDNMISET_Pos 31U /*!< SCB ICSR: PENDNMISET Position */ +#define SCB_ICSR_PENDNMISET_Msk (1UL << SCB_ICSR_PENDNMISET_Pos) /*!< SCB ICSR: PENDNMISET Mask */ + +#define SCB_ICSR_NMIPENDSET_Pos SCB_ICSR_PENDNMISET_Pos /*!< SCB ICSR: NMIPENDSET Position, backward compatibility */ +#define SCB_ICSR_NMIPENDSET_Msk SCB_ICSR_PENDNMISET_Msk /*!< SCB ICSR: NMIPENDSET Mask, backward compatibility */ + +#define SCB_ICSR_PENDNMICLR_Pos 30U /*!< SCB ICSR: PENDNMICLR Position */ +#define SCB_ICSR_PENDNMICLR_Msk (1UL << SCB_ICSR_PENDNMICLR_Pos) /*!< SCB ICSR: PENDNMICLR Mask */ + +#define SCB_ICSR_PENDSVSET_Pos 28U /*!< SCB ICSR: PENDSVSET Position */ +#define SCB_ICSR_PENDSVSET_Msk (1UL << SCB_ICSR_PENDSVSET_Pos) /*!< SCB ICSR: PENDSVSET Mask */ + +#define SCB_ICSR_PENDSVCLR_Pos 27U /*!< SCB ICSR: PENDSVCLR Position */ +#define SCB_ICSR_PENDSVCLR_Msk (1UL << SCB_ICSR_PENDSVCLR_Pos) /*!< SCB ICSR: PENDSVCLR Mask */ + +#define SCB_ICSR_PENDSTSET_Pos 26U /*!< SCB ICSR: PENDSTSET Position */ +#define SCB_ICSR_PENDSTSET_Msk (1UL << SCB_ICSR_PENDSTSET_Pos) /*!< SCB ICSR: PENDSTSET Mask */ + +#define SCB_ICSR_PENDSTCLR_Pos 25U /*!< SCB ICSR: PENDSTCLR Position */ +#define SCB_ICSR_PENDSTCLR_Msk (1UL << SCB_ICSR_PENDSTCLR_Pos) /*!< SCB ICSR: PENDSTCLR Mask */ + +#define SCB_ICSR_STTNS_Pos 24U /*!< SCB ICSR: STTNS Position (Security Extension) */ +#define SCB_ICSR_STTNS_Msk (1UL << SCB_ICSR_STTNS_Pos) /*!< SCB ICSR: STTNS Mask (Security Extension) */ + +#define SCB_ICSR_ISRPREEMPT_Pos 23U /*!< SCB ICSR: ISRPREEMPT Position */ +#define SCB_ICSR_ISRPREEMPT_Msk (1UL << SCB_ICSR_ISRPREEMPT_Pos) /*!< SCB ICSR: ISRPREEMPT Mask */ + +#define SCB_ICSR_ISRPENDING_Pos 22U /*!< SCB ICSR: ISRPENDING Position */ +#define SCB_ICSR_ISRPENDING_Msk (1UL << SCB_ICSR_ISRPENDING_Pos) /*!< SCB ICSR: ISRPENDING Mask */ + +#define SCB_ICSR_VECTPENDING_Pos 12U /*!< SCB ICSR: VECTPENDING Position */ +#define SCB_ICSR_VECTPENDING_Msk (0x1FFUL << SCB_ICSR_VECTPENDING_Pos) /*!< SCB ICSR: VECTPENDING Mask */ + +#define SCB_ICSR_RETTOBASE_Pos 11U /*!< SCB ICSR: RETTOBASE Position */ +#define SCB_ICSR_RETTOBASE_Msk (1UL << SCB_ICSR_RETTOBASE_Pos) /*!< SCB ICSR: RETTOBASE Mask */ + +#define SCB_ICSR_VECTACTIVE_Pos 0U /*!< SCB ICSR: VECTACTIVE Position */ +#define SCB_ICSR_VECTACTIVE_Msk (0x1FFUL /*<< SCB_ICSR_VECTACTIVE_Pos*/) /*!< SCB ICSR: VECTACTIVE Mask */ + +/* SCB Vector Table Offset Register Definitions */ +#define SCB_VTOR_TBLOFF_Pos 7U /*!< SCB VTOR: TBLOFF Position */ +#define SCB_VTOR_TBLOFF_Msk (0x1FFFFFFUL << SCB_VTOR_TBLOFF_Pos) /*!< SCB VTOR: TBLOFF Mask */ + +/* SCB Application Interrupt and Reset Control Register Definitions */ +#define SCB_AIRCR_VECTKEY_Pos 16U /*!< SCB AIRCR: VECTKEY Position */ +#define SCB_AIRCR_VECTKEY_Msk (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos) /*!< SCB AIRCR: VECTKEY Mask */ + +#define SCB_AIRCR_VECTKEYSTAT_Pos 16U /*!< SCB AIRCR: VECTKEYSTAT Position */ +#define SCB_AIRCR_VECTKEYSTAT_Msk (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos) /*!< SCB AIRCR: VECTKEYSTAT Mask */ + +#define SCB_AIRCR_ENDIANESS_Pos 15U /*!< SCB AIRCR: ENDIANESS Position */ +#define SCB_AIRCR_ENDIANESS_Msk (1UL << SCB_AIRCR_ENDIANESS_Pos) /*!< SCB AIRCR: ENDIANESS Mask */ + +#define SCB_AIRCR_PRIS_Pos 14U /*!< SCB AIRCR: PRIS Position */ +#define SCB_AIRCR_PRIS_Msk (1UL << SCB_AIRCR_PRIS_Pos) /*!< SCB AIRCR: PRIS Mask */ + +#define SCB_AIRCR_BFHFNMINS_Pos 13U /*!< SCB AIRCR: BFHFNMINS Position */ +#define SCB_AIRCR_BFHFNMINS_Msk (1UL << SCB_AIRCR_BFHFNMINS_Pos) /*!< SCB AIRCR: BFHFNMINS Mask */ + +#define SCB_AIRCR_PRIGROUP_Pos 8U /*!< SCB AIRCR: PRIGROUP Position */ +#define SCB_AIRCR_PRIGROUP_Msk (7UL << SCB_AIRCR_PRIGROUP_Pos) /*!< SCB AIRCR: PRIGROUP Mask */ + +#define SCB_AIRCR_IESB_Pos 5U /*!< SCB AIRCR: Implicit ESB Enable Position */ +#define SCB_AIRCR_IESB_Msk (1UL << SCB_AIRCR_IESB_Pos) /*!< SCB AIRCR: Implicit ESB Enable Mask */ + +#define SCB_AIRCR_DIT_Pos 4U /*!< SCB AIRCR: Data Independent Timing Position */ +#define SCB_AIRCR_DIT_Msk (1UL << SCB_AIRCR_DIT_Pos) /*!< SCB AIRCR: Data Independent Timing Mask */ + +#define SCB_AIRCR_SYSRESETREQS_Pos 3U /*!< SCB AIRCR: SYSRESETREQS Position */ +#define SCB_AIRCR_SYSRESETREQS_Msk (1UL << SCB_AIRCR_SYSRESETREQS_Pos) /*!< SCB AIRCR: SYSRESETREQS Mask */ + +#define SCB_AIRCR_SYSRESETREQ_Pos 2U /*!< SCB AIRCR: SYSRESETREQ Position */ +#define SCB_AIRCR_SYSRESETREQ_Msk (1UL << SCB_AIRCR_SYSRESETREQ_Pos) /*!< SCB AIRCR: SYSRESETREQ Mask */ + +#define SCB_AIRCR_VECTCLRACTIVE_Pos 1U /*!< SCB AIRCR: VECTCLRACTIVE Position */ +#define SCB_AIRCR_VECTCLRACTIVE_Msk (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos) /*!< SCB AIRCR: VECTCLRACTIVE Mask */ + +/* SCB System Control Register Definitions */ +#define SCB_SCR_SEVONPEND_Pos 4U /*!< SCB SCR: SEVONPEND Position */ +#define SCB_SCR_SEVONPEND_Msk (1UL << SCB_SCR_SEVONPEND_Pos) /*!< SCB SCR: SEVONPEND Mask */ + +#define SCB_SCR_SLEEPDEEPS_Pos 3U /*!< SCB SCR: SLEEPDEEPS Position */ +#define SCB_SCR_SLEEPDEEPS_Msk (1UL << SCB_SCR_SLEEPDEEPS_Pos) /*!< SCB SCR: SLEEPDEEPS Mask */ + +#define SCB_SCR_SLEEPDEEP_Pos 2U /*!< SCB SCR: SLEEPDEEP Position */ +#define SCB_SCR_SLEEPDEEP_Msk (1UL << SCB_SCR_SLEEPDEEP_Pos) /*!< SCB SCR: SLEEPDEEP Mask */ + +#define SCB_SCR_SLEEPONEXIT_Pos 1U /*!< SCB SCR: SLEEPONEXIT Position */ +#define SCB_SCR_SLEEPONEXIT_Msk (1UL << SCB_SCR_SLEEPONEXIT_Pos) /*!< SCB SCR: SLEEPONEXIT Mask */ + +/* SCB Configuration Control Register Definitions */ +#define SCB_CCR_TRD_Pos 20U /*!< SCB CCR: TRD Position */ +#define SCB_CCR_TRD_Msk (1UL << SCB_CCR_TRD_Pos) /*!< SCB CCR: TRD Mask */ + +#define SCB_CCR_LOB_Pos 19U /*!< SCB CCR: LOB Position */ +#define SCB_CCR_LOB_Msk (1UL << SCB_CCR_LOB_Pos) /*!< SCB CCR: LOB Mask */ + +#define SCB_CCR_BP_Pos 18U /*!< SCB CCR: BP Position */ +#define SCB_CCR_BP_Msk (1UL << SCB_CCR_BP_Pos) /*!< SCB CCR: BP Mask */ + +#define SCB_CCR_IC_Pos 17U /*!< SCB CCR: IC Position */ +#define SCB_CCR_IC_Msk (1UL << SCB_CCR_IC_Pos) /*!< SCB CCR: IC Mask */ + +#define SCB_CCR_DC_Pos 16U /*!< SCB CCR: DC Position */ +#define SCB_CCR_DC_Msk (1UL << SCB_CCR_DC_Pos) /*!< SCB CCR: DC Mask */ + +#define SCB_CCR_STKOFHFNMIGN_Pos 10U /*!< SCB CCR: STKOFHFNMIGN Position */ +#define SCB_CCR_STKOFHFNMIGN_Msk (1UL << SCB_CCR_STKOFHFNMIGN_Pos) /*!< SCB CCR: STKOFHFNMIGN Mask */ + +#define SCB_CCR_BFHFNMIGN_Pos 8U /*!< SCB CCR: BFHFNMIGN Position */ +#define SCB_CCR_BFHFNMIGN_Msk (1UL << SCB_CCR_BFHFNMIGN_Pos) /*!< SCB CCR: BFHFNMIGN Mask */ + +#define SCB_CCR_DIV_0_TRP_Pos 4U /*!< SCB CCR: DIV_0_TRP Position */ +#define SCB_CCR_DIV_0_TRP_Msk (1UL << SCB_CCR_DIV_0_TRP_Pos) /*!< SCB CCR: DIV_0_TRP Mask */ + +#define SCB_CCR_UNALIGN_TRP_Pos 3U /*!< SCB CCR: UNALIGN_TRP Position */ +#define SCB_CCR_UNALIGN_TRP_Msk (1UL << SCB_CCR_UNALIGN_TRP_Pos) /*!< SCB CCR: UNALIGN_TRP Mask */ + +#define SCB_CCR_USERSETMPEND_Pos 1U /*!< SCB CCR: USERSETMPEND Position */ +#define SCB_CCR_USERSETMPEND_Msk (1UL << SCB_CCR_USERSETMPEND_Pos) /*!< SCB CCR: USERSETMPEND Mask */ + +/* SCB System Handler Control and State Register Definitions */ +#define SCB_SHCSR_HARDFAULTPENDED_Pos 21U /*!< SCB SHCSR: HARDFAULTPENDED Position */ +#define SCB_SHCSR_HARDFAULTPENDED_Msk (1UL << SCB_SHCSR_HARDFAULTPENDED_Pos) /*!< SCB SHCSR: HARDFAULTPENDED Mask */ + +#define SCB_SHCSR_SECUREFAULTPENDED_Pos 20U /*!< SCB SHCSR: SECUREFAULTPENDED Position */ +#define SCB_SHCSR_SECUREFAULTPENDED_Msk (1UL << SCB_SHCSR_SECUREFAULTPENDED_Pos) /*!< SCB SHCSR: SECUREFAULTPENDED Mask */ + +#define SCB_SHCSR_SECUREFAULTENA_Pos 19U /*!< SCB SHCSR: SECUREFAULTENA Position */ +#define SCB_SHCSR_SECUREFAULTENA_Msk (1UL << SCB_SHCSR_SECUREFAULTENA_Pos) /*!< SCB SHCSR: SECUREFAULTENA Mask */ + +#define SCB_SHCSR_USGFAULTENA_Pos 18U /*!< SCB SHCSR: USGFAULTENA Position */ +#define SCB_SHCSR_USGFAULTENA_Msk (1UL << SCB_SHCSR_USGFAULTENA_Pos) /*!< SCB SHCSR: USGFAULTENA Mask */ + +#define SCB_SHCSR_BUSFAULTENA_Pos 17U /*!< SCB SHCSR: BUSFAULTENA Position */ +#define SCB_SHCSR_BUSFAULTENA_Msk (1UL << SCB_SHCSR_BUSFAULTENA_Pos) /*!< SCB SHCSR: BUSFAULTENA Mask */ + +#define SCB_SHCSR_MEMFAULTENA_Pos 16U /*!< SCB SHCSR: MEMFAULTENA Position */ +#define SCB_SHCSR_MEMFAULTENA_Msk (1UL << SCB_SHCSR_MEMFAULTENA_Pos) /*!< SCB SHCSR: MEMFAULTENA Mask */ + +#define SCB_SHCSR_SVCALLPENDED_Pos 15U /*!< SCB SHCSR: SVCALLPENDED Position */ +#define SCB_SHCSR_SVCALLPENDED_Msk (1UL << SCB_SHCSR_SVCALLPENDED_Pos) /*!< SCB SHCSR: SVCALLPENDED Mask */ + +#define SCB_SHCSR_BUSFAULTPENDED_Pos 14U /*!< SCB SHCSR: BUSFAULTPENDED Position */ +#define SCB_SHCSR_BUSFAULTPENDED_Msk (1UL << SCB_SHCSR_BUSFAULTPENDED_Pos) /*!< SCB SHCSR: BUSFAULTPENDED Mask */ + +#define SCB_SHCSR_MEMFAULTPENDED_Pos 13U /*!< SCB SHCSR: MEMFAULTPENDED Position */ +#define SCB_SHCSR_MEMFAULTPENDED_Msk (1UL << SCB_SHCSR_MEMFAULTPENDED_Pos) /*!< SCB SHCSR: MEMFAULTPENDED Mask */ + +#define SCB_SHCSR_USGFAULTPENDED_Pos 12U /*!< SCB SHCSR: USGFAULTPENDED Position */ +#define SCB_SHCSR_USGFAULTPENDED_Msk (1UL << SCB_SHCSR_USGFAULTPENDED_Pos) /*!< SCB SHCSR: USGFAULTPENDED Mask */ + +#define SCB_SHCSR_SYSTICKACT_Pos 11U /*!< SCB SHCSR: SYSTICKACT Position */ +#define SCB_SHCSR_SYSTICKACT_Msk (1UL << SCB_SHCSR_SYSTICKACT_Pos) /*!< SCB SHCSR: SYSTICKACT Mask */ + +#define SCB_SHCSR_PENDSVACT_Pos 10U /*!< SCB SHCSR: PENDSVACT Position */ +#define SCB_SHCSR_PENDSVACT_Msk (1UL << SCB_SHCSR_PENDSVACT_Pos) /*!< SCB SHCSR: PENDSVACT Mask */ + +#define SCB_SHCSR_MONITORACT_Pos 8U /*!< SCB SHCSR: MONITORACT Position */ +#define SCB_SHCSR_MONITORACT_Msk (1UL << SCB_SHCSR_MONITORACT_Pos) /*!< SCB SHCSR: MONITORACT Mask */ + +#define SCB_SHCSR_SVCALLACT_Pos 7U /*!< SCB SHCSR: SVCALLACT Position */ +#define SCB_SHCSR_SVCALLACT_Msk (1UL << SCB_SHCSR_SVCALLACT_Pos) /*!< SCB SHCSR: SVCALLACT Mask */ + +#define SCB_SHCSR_NMIACT_Pos 5U /*!< SCB SHCSR: NMIACT Position */ +#define SCB_SHCSR_NMIACT_Msk (1UL << SCB_SHCSR_NMIACT_Pos) /*!< SCB SHCSR: NMIACT Mask */ + +#define SCB_SHCSR_SECUREFAULTACT_Pos 4U /*!< SCB SHCSR: SECUREFAULTACT Position */ +#define SCB_SHCSR_SECUREFAULTACT_Msk (1UL << SCB_SHCSR_SECUREFAULTACT_Pos) /*!< SCB SHCSR: SECUREFAULTACT Mask */ + +#define SCB_SHCSR_USGFAULTACT_Pos 3U /*!< SCB SHCSR: USGFAULTACT Position */ +#define SCB_SHCSR_USGFAULTACT_Msk (1UL << SCB_SHCSR_USGFAULTACT_Pos) /*!< SCB SHCSR: USGFAULTACT Mask */ + +#define SCB_SHCSR_HARDFAULTACT_Pos 2U /*!< SCB SHCSR: HARDFAULTACT Position */ +#define SCB_SHCSR_HARDFAULTACT_Msk (1UL << SCB_SHCSR_HARDFAULTACT_Pos) /*!< SCB SHCSR: HARDFAULTACT Mask */ + +#define SCB_SHCSR_BUSFAULTACT_Pos 1U /*!< SCB SHCSR: BUSFAULTACT Position */ +#define SCB_SHCSR_BUSFAULTACT_Msk (1UL << SCB_SHCSR_BUSFAULTACT_Pos) /*!< SCB SHCSR: BUSFAULTACT Mask */ + +#define SCB_SHCSR_MEMFAULTACT_Pos 0U /*!< SCB SHCSR: MEMFAULTACT Position */ +#define SCB_SHCSR_MEMFAULTACT_Msk (1UL /*<< SCB_SHCSR_MEMFAULTACT_Pos*/) /*!< SCB SHCSR: MEMFAULTACT Mask */ + +/* SCB Configurable Fault Status Register Definitions */ +#define SCB_CFSR_USGFAULTSR_Pos 16U /*!< SCB CFSR: Usage Fault Status Register Position */ +#define SCB_CFSR_USGFAULTSR_Msk (0xFFFFUL << SCB_CFSR_USGFAULTSR_Pos) /*!< SCB CFSR: Usage Fault Status Register Mask */ + +#define SCB_CFSR_BUSFAULTSR_Pos 8U /*!< SCB CFSR: Bus Fault Status Register Position */ +#define SCB_CFSR_BUSFAULTSR_Msk (0xFFUL << SCB_CFSR_BUSFAULTSR_Pos) /*!< SCB CFSR: Bus Fault Status Register Mask */ + +#define SCB_CFSR_MEMFAULTSR_Pos 0U /*!< SCB CFSR: Memory Manage Fault Status Register Position */ +#define SCB_CFSR_MEMFAULTSR_Msk (0xFFUL /*<< SCB_CFSR_MEMFAULTSR_Pos*/) /*!< SCB CFSR: Memory Manage Fault Status Register Mask */ + +/* MemManage Fault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_MMARVALID_Pos (SCB_CFSR_MEMFAULTSR_Pos + 7U) /*!< SCB CFSR (MMFSR): MMARVALID Position */ +#define SCB_CFSR_MMARVALID_Msk (1UL << SCB_CFSR_MMARVALID_Pos) /*!< SCB CFSR (MMFSR): MMARVALID Mask */ + +#define SCB_CFSR_MLSPERR_Pos (SCB_CFSR_MEMFAULTSR_Pos + 5U) /*!< SCB CFSR (MMFSR): MLSPERR Position */ +#define SCB_CFSR_MLSPERR_Msk (1UL << SCB_CFSR_MLSPERR_Pos) /*!< SCB CFSR (MMFSR): MLSPERR Mask */ + +#define SCB_CFSR_MSTKERR_Pos (SCB_CFSR_MEMFAULTSR_Pos + 4U) /*!< SCB CFSR (MMFSR): MSTKERR Position */ +#define SCB_CFSR_MSTKERR_Msk (1UL << SCB_CFSR_MSTKERR_Pos) /*!< SCB CFSR (MMFSR): MSTKERR Mask */ + +#define SCB_CFSR_MUNSTKERR_Pos (SCB_CFSR_MEMFAULTSR_Pos + 3U) /*!< SCB CFSR (MMFSR): MUNSTKERR Position */ +#define SCB_CFSR_MUNSTKERR_Msk (1UL << SCB_CFSR_MUNSTKERR_Pos) /*!< SCB CFSR (MMFSR): MUNSTKERR Mask */ + +#define SCB_CFSR_DACCVIOL_Pos (SCB_CFSR_MEMFAULTSR_Pos + 1U) /*!< SCB CFSR (MMFSR): DACCVIOL Position */ +#define SCB_CFSR_DACCVIOL_Msk (1UL << SCB_CFSR_DACCVIOL_Pos) /*!< SCB CFSR (MMFSR): DACCVIOL Mask */ + +#define SCB_CFSR_IACCVIOL_Pos (SCB_CFSR_MEMFAULTSR_Pos + 0U) /*!< SCB CFSR (MMFSR): IACCVIOL Position */ +#define SCB_CFSR_IACCVIOL_Msk (1UL /*<< SCB_CFSR_IACCVIOL_Pos*/) /*!< SCB CFSR (MMFSR): IACCVIOL Mask */ + +/* BusFault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_BFARVALID_Pos (SCB_CFSR_BUSFAULTSR_Pos + 7U) /*!< SCB CFSR (BFSR): BFARVALID Position */ +#define SCB_CFSR_BFARVALID_Msk (1UL << SCB_CFSR_BFARVALID_Pos) /*!< SCB CFSR (BFSR): BFARVALID Mask */ + +#define SCB_CFSR_LSPERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 5U) /*!< SCB CFSR (BFSR): LSPERR Position */ +#define SCB_CFSR_LSPERR_Msk (1UL << SCB_CFSR_LSPERR_Pos) /*!< SCB CFSR (BFSR): LSPERR Mask */ + +#define SCB_CFSR_STKERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 4U) /*!< SCB CFSR (BFSR): STKERR Position */ +#define SCB_CFSR_STKERR_Msk (1UL << SCB_CFSR_STKERR_Pos) /*!< SCB CFSR (BFSR): STKERR Mask */ + +#define SCB_CFSR_UNSTKERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 3U) /*!< SCB CFSR (BFSR): UNSTKERR Position */ +#define SCB_CFSR_UNSTKERR_Msk (1UL << SCB_CFSR_UNSTKERR_Pos) /*!< SCB CFSR (BFSR): UNSTKERR Mask */ + +#define SCB_CFSR_IMPRECISERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 2U) /*!< SCB CFSR (BFSR): IMPRECISERR Position */ +#define SCB_CFSR_IMPRECISERR_Msk (1UL << SCB_CFSR_IMPRECISERR_Pos) /*!< SCB CFSR (BFSR): IMPRECISERR Mask */ + +#define SCB_CFSR_PRECISERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 1U) /*!< SCB CFSR (BFSR): PRECISERR Position */ +#define SCB_CFSR_PRECISERR_Msk (1UL << SCB_CFSR_PRECISERR_Pos) /*!< SCB CFSR (BFSR): PRECISERR Mask */ + +#define SCB_CFSR_IBUSERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 0U) /*!< SCB CFSR (BFSR): IBUSERR Position */ +#define SCB_CFSR_IBUSERR_Msk (1UL << SCB_CFSR_IBUSERR_Pos) /*!< SCB CFSR (BFSR): IBUSERR Mask */ + +/* UsageFault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_DIVBYZERO_Pos (SCB_CFSR_USGFAULTSR_Pos + 9U) /*!< SCB CFSR (UFSR): DIVBYZERO Position */ +#define SCB_CFSR_DIVBYZERO_Msk (1UL << SCB_CFSR_DIVBYZERO_Pos) /*!< SCB CFSR (UFSR): DIVBYZERO Mask */ + +#define SCB_CFSR_UNALIGNED_Pos (SCB_CFSR_USGFAULTSR_Pos + 8U) /*!< SCB CFSR (UFSR): UNALIGNED Position */ +#define SCB_CFSR_UNALIGNED_Msk (1UL << SCB_CFSR_UNALIGNED_Pos) /*!< SCB CFSR (UFSR): UNALIGNED Mask */ + +#define SCB_CFSR_STKOF_Pos (SCB_CFSR_USGFAULTSR_Pos + 4U) /*!< SCB CFSR (UFSR): STKOF Position */ +#define SCB_CFSR_STKOF_Msk (1UL << SCB_CFSR_STKOF_Pos) /*!< SCB CFSR (UFSR): STKOF Mask */ + +#define SCB_CFSR_NOCP_Pos (SCB_CFSR_USGFAULTSR_Pos + 3U) /*!< SCB CFSR (UFSR): NOCP Position */ +#define SCB_CFSR_NOCP_Msk (1UL << SCB_CFSR_NOCP_Pos) /*!< SCB CFSR (UFSR): NOCP Mask */ + +#define SCB_CFSR_INVPC_Pos (SCB_CFSR_USGFAULTSR_Pos + 2U) /*!< SCB CFSR (UFSR): INVPC Position */ +#define SCB_CFSR_INVPC_Msk (1UL << SCB_CFSR_INVPC_Pos) /*!< SCB CFSR (UFSR): INVPC Mask */ + +#define SCB_CFSR_INVSTATE_Pos (SCB_CFSR_USGFAULTSR_Pos + 1U) /*!< SCB CFSR (UFSR): INVSTATE Position */ +#define SCB_CFSR_INVSTATE_Msk (1UL << SCB_CFSR_INVSTATE_Pos) /*!< SCB CFSR (UFSR): INVSTATE Mask */ + +#define SCB_CFSR_UNDEFINSTR_Pos (SCB_CFSR_USGFAULTSR_Pos + 0U) /*!< SCB CFSR (UFSR): UNDEFINSTR Position */ +#define SCB_CFSR_UNDEFINSTR_Msk (1UL << SCB_CFSR_UNDEFINSTR_Pos) /*!< SCB CFSR (UFSR): UNDEFINSTR Mask */ + +/* SCB Hard Fault Status Register Definitions */ +#define SCB_HFSR_DEBUGEVT_Pos 31U /*!< SCB HFSR: DEBUGEVT Position */ +#define SCB_HFSR_DEBUGEVT_Msk (1UL << SCB_HFSR_DEBUGEVT_Pos) /*!< SCB HFSR: DEBUGEVT Mask */ + +#define SCB_HFSR_FORCED_Pos 30U /*!< SCB HFSR: FORCED Position */ +#define SCB_HFSR_FORCED_Msk (1UL << SCB_HFSR_FORCED_Pos) /*!< SCB HFSR: FORCED Mask */ + +#define SCB_HFSR_VECTTBL_Pos 1U /*!< SCB HFSR: VECTTBL Position */ +#define SCB_HFSR_VECTTBL_Msk (1UL << SCB_HFSR_VECTTBL_Pos) /*!< SCB HFSR: VECTTBL Mask */ + +/* SCB Debug Fault Status Register Definitions */ +#define SCB_DFSR_PMU_Pos 5U /*!< SCB DFSR: PMU Position */ +#define SCB_DFSR_PMU_Msk (1UL << SCB_DFSR_PMU_Pos) /*!< SCB DFSR: PMU Mask */ + +#define SCB_DFSR_EXTERNAL_Pos 4U /*!< SCB DFSR: EXTERNAL Position */ +#define SCB_DFSR_EXTERNAL_Msk (1UL << SCB_DFSR_EXTERNAL_Pos) /*!< SCB DFSR: EXTERNAL Mask */ + +#define SCB_DFSR_VCATCH_Pos 3U /*!< SCB DFSR: VCATCH Position */ +#define SCB_DFSR_VCATCH_Msk (1UL << SCB_DFSR_VCATCH_Pos) /*!< SCB DFSR: VCATCH Mask */ + +#define SCB_DFSR_DWTTRAP_Pos 2U /*!< SCB DFSR: DWTTRAP Position */ +#define SCB_DFSR_DWTTRAP_Msk (1UL << SCB_DFSR_DWTTRAP_Pos) /*!< SCB DFSR: DWTTRAP Mask */ + +#define SCB_DFSR_BKPT_Pos 1U /*!< SCB DFSR: BKPT Position */ +#define SCB_DFSR_BKPT_Msk (1UL << SCB_DFSR_BKPT_Pos) /*!< SCB DFSR: BKPT Mask */ + +#define SCB_DFSR_HALTED_Pos 0U /*!< SCB DFSR: HALTED Position */ +#define SCB_DFSR_HALTED_Msk (1UL /*<< SCB_DFSR_HALTED_Pos*/) /*!< SCB DFSR: HALTED Mask */ + +/* SCB Non-Secure Access Control Register Definitions */ +#define SCB_NSACR_CP11_Pos 11U /*!< SCB NSACR: CP11 Position */ +#define SCB_NSACR_CP11_Msk (1UL << SCB_NSACR_CP11_Pos) /*!< SCB NSACR: CP11 Mask */ + +#define SCB_NSACR_CP10_Pos 10U /*!< SCB NSACR: CP10 Position */ +#define SCB_NSACR_CP10_Msk (1UL << SCB_NSACR_CP10_Pos) /*!< SCB NSACR: CP10 Mask */ + +#define SCB_NSACR_CP7_Pos 7U /*!< SCB NSACR: CP7 Position */ +#define SCB_NSACR_CP7_Msk (1UL << SCB_NSACR_CP7_Pos) /*!< SCB NSACR: CP7 Mask */ + +#define SCB_NSACR_CP6_Pos 6U /*!< SCB NSACR: CP6 Position */ +#define SCB_NSACR_CP6_Msk (1UL << SCB_NSACR_CP6_Pos) /*!< SCB NSACR: CP6 Mask */ + +#define SCB_NSACR_CP5_Pos 5U /*!< SCB NSACR: CP5 Position */ +#define SCB_NSACR_CP5_Msk (1UL << SCB_NSACR_CP5_Pos) /*!< SCB NSACR: CP5 Mask */ + +#define SCB_NSACR_CP4_Pos 4U /*!< SCB NSACR: CP4 Position */ +#define SCB_NSACR_CP4_Msk (1UL << SCB_NSACR_CP4_Pos) /*!< SCB NSACR: CP4 Mask */ + +#define SCB_NSACR_CP3_Pos 3U /*!< SCB NSACR: CP3 Position */ +#define SCB_NSACR_CP3_Msk (1UL << SCB_NSACR_CP3_Pos) /*!< SCB NSACR: CP3 Mask */ + +#define SCB_NSACR_CP2_Pos 2U /*!< SCB NSACR: CP2 Position */ +#define SCB_NSACR_CP2_Msk (1UL << SCB_NSACR_CP2_Pos) /*!< SCB NSACR: CP2 Mask */ + +#define SCB_NSACR_CP1_Pos 1U /*!< SCB NSACR: CP1 Position */ +#define SCB_NSACR_CP1_Msk (1UL << SCB_NSACR_CP1_Pos) /*!< SCB NSACR: CP1 Mask */ + +#define SCB_NSACR_CP0_Pos 0U /*!< SCB NSACR: CP0 Position */ +#define SCB_NSACR_CP0_Msk (1UL /*<< SCB_NSACR_CP0_Pos*/) /*!< SCB NSACR: CP0 Mask */ + +/* SCB Debug Feature Register 0 Definitions */ +#define SCB_ID_DFR_UDE_Pos 28U /*!< SCB ID_DFR: UDE Position */ +#define SCB_ID_DFR_UDE_Msk (0xFUL << SCB_ID_DFR_UDE_Pos) /*!< SCB ID_DFR: UDE Mask */ + +#define SCB_ID_DFR_MProfDbg_Pos 20U /*!< SCB ID_DFR: MProfDbg Position */ +#define SCB_ID_DFR_MProfDbg_Msk (0xFUL << SCB_ID_DFR_MProfDbg_Pos) /*!< SCB ID_DFR: MProfDbg Mask */ + +/* SCB Cache Level ID Register Definitions */ +#define SCB_CLIDR_LOUU_Pos 27U /*!< SCB CLIDR: LoUU Position */ +#define SCB_CLIDR_LOUU_Msk (7UL << SCB_CLIDR_LOUU_Pos) /*!< SCB CLIDR: LoUU Mask */ + +#define SCB_CLIDR_LOC_Pos 24U /*!< SCB CLIDR: LoC Position */ +#define SCB_CLIDR_LOC_Msk (7UL << SCB_CLIDR_LOC_Pos) /*!< SCB CLIDR: LoC Mask */ + +/* SCB Cache Type Register Definitions */ +#define SCB_CTR_FORMAT_Pos 29U /*!< SCB CTR: Format Position */ +#define SCB_CTR_FORMAT_Msk (7UL << SCB_CTR_FORMAT_Pos) /*!< SCB CTR: Format Mask */ + +#define SCB_CTR_CWG_Pos 24U /*!< SCB CTR: CWG Position */ +#define SCB_CTR_CWG_Msk (0xFUL << SCB_CTR_CWG_Pos) /*!< SCB CTR: CWG Mask */ + +#define SCB_CTR_ERG_Pos 20U /*!< SCB CTR: ERG Position */ +#define SCB_CTR_ERG_Msk (0xFUL << SCB_CTR_ERG_Pos) /*!< SCB CTR: ERG Mask */ + +#define SCB_CTR_DMINLINE_Pos 16U /*!< SCB CTR: DminLine Position */ +#define SCB_CTR_DMINLINE_Msk (0xFUL << SCB_CTR_DMINLINE_Pos) /*!< SCB CTR: DminLine Mask */ + +#define SCB_CTR_IMINLINE_Pos 0U /*!< SCB CTR: ImInLine Position */ +#define SCB_CTR_IMINLINE_Msk (0xFUL /*<< SCB_CTR_IMINLINE_Pos*/) /*!< SCB CTR: ImInLine Mask */ + +/* SCB Cache Size ID Register Definitions */ +#define SCB_CCSIDR_WT_Pos 31U /*!< SCB CCSIDR: WT Position */ +#define SCB_CCSIDR_WT_Msk (1UL << SCB_CCSIDR_WT_Pos) /*!< SCB CCSIDR: WT Mask */ + +#define SCB_CCSIDR_WB_Pos 30U /*!< SCB CCSIDR: WB Position */ +#define SCB_CCSIDR_WB_Msk (1UL << SCB_CCSIDR_WB_Pos) /*!< SCB CCSIDR: WB Mask */ + +#define SCB_CCSIDR_RA_Pos 29U /*!< SCB CCSIDR: RA Position */ +#define SCB_CCSIDR_RA_Msk (1UL << SCB_CCSIDR_RA_Pos) /*!< SCB CCSIDR: RA Mask */ + +#define SCB_CCSIDR_WA_Pos 28U /*!< SCB CCSIDR: WA Position */ +#define SCB_CCSIDR_WA_Msk (1UL << SCB_CCSIDR_WA_Pos) /*!< SCB CCSIDR: WA Mask */ + +#define SCB_CCSIDR_NUMSETS_Pos 13U /*!< SCB CCSIDR: NumSets Position */ +#define SCB_CCSIDR_NUMSETS_Msk (0x7FFFUL << SCB_CCSIDR_NUMSETS_Pos) /*!< SCB CCSIDR: NumSets Mask */ + +#define SCB_CCSIDR_ASSOCIATIVITY_Pos 3U /*!< SCB CCSIDR: Associativity Position */ +#define SCB_CCSIDR_ASSOCIATIVITY_Msk (0x3FFUL << SCB_CCSIDR_ASSOCIATIVITY_Pos) /*!< SCB CCSIDR: Associativity Mask */ + +#define SCB_CCSIDR_LINESIZE_Pos 0U /*!< SCB CCSIDR: LineSize Position */ +#define SCB_CCSIDR_LINESIZE_Msk (7UL /*<< SCB_CCSIDR_LINESIZE_Pos*/) /*!< SCB CCSIDR: LineSize Mask */ + +/* SCB Cache Size Selection Register Definitions */ +#define SCB_CSSELR_LEVEL_Pos 1U /*!< SCB CSSELR: Level Position */ +#define SCB_CSSELR_LEVEL_Msk (7UL << SCB_CSSELR_LEVEL_Pos) /*!< SCB CSSELR: Level Mask */ + +#define SCB_CSSELR_IND_Pos 0U /*!< SCB CSSELR: InD Position */ +#define SCB_CSSELR_IND_Msk (1UL /*<< SCB_CSSELR_IND_Pos*/) /*!< SCB CSSELR: InD Mask */ + +/* SCB Software Triggered Interrupt Register Definitions */ +#define SCB_STIR_INTID_Pos 0U /*!< SCB STIR: INTID Position */ +#define SCB_STIR_INTID_Msk (0x1FFUL /*<< SCB_STIR_INTID_Pos*/) /*!< SCB STIR: INTID Mask */ + +/* SCB RAS Fault Status Register Definitions */ +#define SCB_RFSR_V_Pos 31U /*!< SCB RFSR: V Position */ +#define SCB_RFSR_V_Msk (1UL << SCB_RFSR_V_Pos) /*!< SCB RFSR: V Mask */ + +#define SCB_RFSR_IS_Pos 16U /*!< SCB RFSR: IS Position */ +#define SCB_RFSR_IS_Msk (0x7FFFUL << SCB_RFSR_IS_Pos) /*!< SCB RFSR: IS Mask */ + +#define SCB_RFSR_UET_Pos 0U /*!< SCB RFSR: UET Position */ +#define SCB_RFSR_UET_Msk (3UL /*<< SCB_RFSR_UET_Pos*/) /*!< SCB RFSR: UET Mask */ + +/* SCB D-Cache Invalidate by Set-way Register Definitions */ +#define SCB_DCISW_WAY_Pos 30U /*!< SCB DCISW: Way Position */ +#define SCB_DCISW_WAY_Msk (3UL << SCB_DCISW_WAY_Pos) /*!< SCB DCISW: Way Mask */ + +#define SCB_DCISW_SET_Pos 5U /*!< SCB DCISW: Set Position */ +#define SCB_DCISW_SET_Msk (0x1FFUL << SCB_DCISW_SET_Pos) /*!< SCB DCISW: Set Mask */ + +/* SCB D-Cache Clean by Set-way Register Definitions */ +#define SCB_DCCSW_WAY_Pos 30U /*!< SCB DCCSW: Way Position */ +#define SCB_DCCSW_WAY_Msk (3UL << SCB_DCCSW_WAY_Pos) /*!< SCB DCCSW: Way Mask */ + +#define SCB_DCCSW_SET_Pos 5U /*!< SCB DCCSW: Set Position */ +#define SCB_DCCSW_SET_Msk (0x1FFUL << SCB_DCCSW_SET_Pos) /*!< SCB DCCSW: Set Mask */ + +/* SCB D-Cache Clean and Invalidate by Set-way Register Definitions */ +#define SCB_DCCISW_WAY_Pos 30U /*!< SCB DCCISW: Way Position */ +#define SCB_DCCISW_WAY_Msk (3UL << SCB_DCCISW_WAY_Pos) /*!< SCB DCCISW: Way Mask */ + +#define SCB_DCCISW_SET_Pos 5U /*!< SCB DCCISW: Set Position */ +#define SCB_DCCISW_SET_Msk (0x1FFUL << SCB_DCCISW_SET_Pos) /*!< SCB DCCISW: Set Mask */ + +/*@} end of group CMSIS_SCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SCnSCB System Controls not in SCB (SCnSCB) + \brief Type definitions for the System Control and ID Register not in the SCB + @{ + */ + +/** + \brief Structure type to access the System Control and ID Register not in the SCB. + */ +typedef struct +{ + uint32_t RESERVED0[1U]; + __IM uint32_t ICTR; /*!< Offset: 0x004 (R/ ) Interrupt Controller Type Register */ + __IOM uint32_t ACTLR; /*!< Offset: 0x008 (R/W) Auxiliary Control Register */ + __IOM uint32_t CPPWR; /*!< Offset: 0x00C (R/W) Coprocessor Power Control Register */ +} SCnSCB_Type; + +/* Interrupt Controller Type Register Definitions */ +#define SCnSCB_ICTR_INTLINESNUM_Pos 0U /*!< ICTR: INTLINESNUM Position */ +#define SCnSCB_ICTR_INTLINESNUM_Msk (0xFUL /*<< SCnSCB_ICTR_INTLINESNUM_Pos*/) /*!< ICTR: INTLINESNUM Mask */ + +/*@} end of group CMSIS_SCnotSCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SysTick System Tick Timer (SysTick) + \brief Type definitions for the System Timer Registers. + @{ + */ + +/** + \brief Structure type to access the System Timer (SysTick). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SysTick Control and Status Register */ + __IOM uint32_t LOAD; /*!< Offset: 0x004 (R/W) SysTick Reload Value Register */ + __IOM uint32_t VAL; /*!< Offset: 0x008 (R/W) SysTick Current Value Register */ + __IM uint32_t CALIB; /*!< Offset: 0x00C (R/ ) SysTick Calibration Register */ +} SysTick_Type; + +/* SysTick Control / Status Register Definitions */ +#define SysTick_CTRL_COUNTFLAG_Pos 16U /*!< SysTick CTRL: COUNTFLAG Position */ +#define SysTick_CTRL_COUNTFLAG_Msk (1UL << SysTick_CTRL_COUNTFLAG_Pos) /*!< SysTick CTRL: COUNTFLAG Mask */ + +#define SysTick_CTRL_CLKSOURCE_Pos 2U /*!< SysTick CTRL: CLKSOURCE Position */ +#define SysTick_CTRL_CLKSOURCE_Msk (1UL << SysTick_CTRL_CLKSOURCE_Pos) /*!< SysTick CTRL: CLKSOURCE Mask */ + +#define SysTick_CTRL_TICKINT_Pos 1U /*!< SysTick CTRL: TICKINT Position */ +#define SysTick_CTRL_TICKINT_Msk (1UL << SysTick_CTRL_TICKINT_Pos) /*!< SysTick CTRL: TICKINT Mask */ + +#define SysTick_CTRL_ENABLE_Pos 0U /*!< SysTick CTRL: ENABLE Position */ +#define SysTick_CTRL_ENABLE_Msk (1UL /*<< SysTick_CTRL_ENABLE_Pos*/) /*!< SysTick CTRL: ENABLE Mask */ + +/* SysTick Reload Register Definitions */ +#define SysTick_LOAD_RELOAD_Pos 0U /*!< SysTick LOAD: RELOAD Position */ +#define SysTick_LOAD_RELOAD_Msk (0xFFFFFFUL /*<< SysTick_LOAD_RELOAD_Pos*/) /*!< SysTick LOAD: RELOAD Mask */ + +/* SysTick Current Register Definitions */ +#define SysTick_VAL_CURRENT_Pos 0U /*!< SysTick VAL: CURRENT Position */ +#define SysTick_VAL_CURRENT_Msk (0xFFFFFFUL /*<< SysTick_VAL_CURRENT_Pos*/) /*!< SysTick VAL: CURRENT Mask */ + +/* SysTick Calibration Register Definitions */ +#define SysTick_CALIB_NOREF_Pos 31U /*!< SysTick CALIB: NOREF Position */ +#define SysTick_CALIB_NOREF_Msk (1UL << SysTick_CALIB_NOREF_Pos) /*!< SysTick CALIB: NOREF Mask */ + +#define SysTick_CALIB_SKEW_Pos 30U /*!< SysTick CALIB: SKEW Position */ +#define SysTick_CALIB_SKEW_Msk (1UL << SysTick_CALIB_SKEW_Pos) /*!< SysTick CALIB: SKEW Mask */ + +#define SysTick_CALIB_TENMS_Pos 0U /*!< SysTick CALIB: TENMS Position */ +#define SysTick_CALIB_TENMS_Msk (0xFFFFFFUL /*<< SysTick_CALIB_TENMS_Pos*/) /*!< SysTick CALIB: TENMS Mask */ + +/*@} end of group CMSIS_SysTick */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_ITM Instrumentation Trace Macrocell (ITM) + \brief Type definitions for the Instrumentation Trace Macrocell (ITM) + @{ + */ + +/** + \brief Structure type to access the Instrumentation Trace Macrocell Register (ITM). + */ +typedef struct +{ + __OM union + { + __OM uint8_t u8; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 8-bit */ + __OM uint16_t u16; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 16-bit */ + __OM uint32_t u32; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 32-bit */ + } PORT [32U]; /*!< Offset: 0x000 ( /W) ITM Stimulus Port Registers */ + uint32_t RESERVED0[864U]; + __IOM uint32_t TER; /*!< Offset: 0xE00 (R/W) ITM Trace Enable Register */ + uint32_t RESERVED1[15U]; + __IOM uint32_t TPR; /*!< Offset: 0xE40 (R/W) ITM Trace Privilege Register */ + uint32_t RESERVED2[15U]; + __IOM uint32_t TCR; /*!< Offset: 0xE80 (R/W) ITM Trace Control Register */ + uint32_t RESERVED3[32U]; + uint32_t RESERVED4[43U]; + __OM uint32_t LAR; /*!< Offset: 0xFB0 ( /W) ITM Lock Access Register */ + __IM uint32_t LSR; /*!< Offset: 0xFB4 (R/ ) ITM Lock Status Register */ + uint32_t RESERVED5[1U]; + __IM uint32_t DEVARCH; /*!< Offset: 0xFBC (R/ ) ITM Device Architecture Register */ + uint32_t RESERVED6[3U]; + __IM uint32_t DEVTYPE; /*!< Offset: 0xFCC (R/ ) ITM Device Type Register */ + __IM uint32_t PID4; /*!< Offset: 0xFD0 (R/ ) ITM Peripheral Identification Register #4 */ + __IM uint32_t PID5; /*!< Offset: 0xFD4 (R/ ) ITM Peripheral Identification Register #5 */ + __IM uint32_t PID6; /*!< Offset: 0xFD8 (R/ ) ITM Peripheral Identification Register #6 */ + __IM uint32_t PID7; /*!< Offset: 0xFDC (R/ ) ITM Peripheral Identification Register #7 */ + __IM uint32_t PID0; /*!< Offset: 0xFE0 (R/ ) ITM Peripheral Identification Register #0 */ + __IM uint32_t PID1; /*!< Offset: 0xFE4 (R/ ) ITM Peripheral Identification Register #1 */ + __IM uint32_t PID2; /*!< Offset: 0xFE8 (R/ ) ITM Peripheral Identification Register #2 */ + __IM uint32_t PID3; /*!< Offset: 0xFEC (R/ ) ITM Peripheral Identification Register #3 */ + __IM uint32_t CID0; /*!< Offset: 0xFF0 (R/ ) ITM Component Identification Register #0 */ + __IM uint32_t CID1; /*!< Offset: 0xFF4 (R/ ) ITM Component Identification Register #1 */ + __IM uint32_t CID2; /*!< Offset: 0xFF8 (R/ ) ITM Component Identification Register #2 */ + __IM uint32_t CID3; /*!< Offset: 0xFFC (R/ ) ITM Component Identification Register #3 */ +} ITM_Type; + +/* ITM Stimulus Port Register Definitions */ +#define ITM_STIM_DISABLED_Pos 1U /*!< ITM STIM: DISABLED Position */ +#define ITM_STIM_DISABLED_Msk (0x1UL << ITM_STIM_DISABLED_Pos) /*!< ITM STIM: DISABLED Mask */ + +#define ITM_STIM_FIFOREADY_Pos 0U /*!< ITM STIM: FIFOREADY Position */ +#define ITM_STIM_FIFOREADY_Msk (0x1UL /*<< ITM_STIM_FIFOREADY_Pos*/) /*!< ITM STIM: FIFOREADY Mask */ + +/* ITM Trace Privilege Register Definitions */ +#define ITM_TPR_PRIVMASK_Pos 0U /*!< ITM TPR: PRIVMASK Position */ +#define ITM_TPR_PRIVMASK_Msk (0xFUL /*<< ITM_TPR_PRIVMASK_Pos*/) /*!< ITM TPR: PRIVMASK Mask */ + +/* ITM Trace Control Register Definitions */ +#define ITM_TCR_BUSY_Pos 23U /*!< ITM TCR: BUSY Position */ +#define ITM_TCR_BUSY_Msk (1UL << ITM_TCR_BUSY_Pos) /*!< ITM TCR: BUSY Mask */ + +#define ITM_TCR_TRACEBUSID_Pos 16U /*!< ITM TCR: ATBID Position */ +#define ITM_TCR_TRACEBUSID_Msk (0x7FUL << ITM_TCR_TRACEBUSID_Pos) /*!< ITM TCR: ATBID Mask */ + +#define ITM_TCR_GTSFREQ_Pos 10U /*!< ITM TCR: Global timestamp frequency Position */ +#define ITM_TCR_GTSFREQ_Msk (3UL << ITM_TCR_GTSFREQ_Pos) /*!< ITM TCR: Global timestamp frequency Mask */ + +#define ITM_TCR_TSPRESCALE_Pos 8U /*!< ITM TCR: TSPRESCALE Position */ +#define ITM_TCR_TSPRESCALE_Msk (3UL << ITM_TCR_TSPRESCALE_Pos) /*!< ITM TCR: TSPRESCALE Mask */ + +#define ITM_TCR_STALLENA_Pos 5U /*!< ITM TCR: STALLENA Position */ +#define ITM_TCR_STALLENA_Msk (1UL << ITM_TCR_STALLENA_Pos) /*!< ITM TCR: STALLENA Mask */ + +#define ITM_TCR_SWOENA_Pos 4U /*!< ITM TCR: SWOENA Position */ +#define ITM_TCR_SWOENA_Msk (1UL << ITM_TCR_SWOENA_Pos) /*!< ITM TCR: SWOENA Mask */ + +#define ITM_TCR_DWTENA_Pos 3U /*!< ITM TCR: DWTENA Position */ +#define ITM_TCR_DWTENA_Msk (1UL << ITM_TCR_DWTENA_Pos) /*!< ITM TCR: DWTENA Mask */ + +#define ITM_TCR_SYNCENA_Pos 2U /*!< ITM TCR: SYNCENA Position */ +#define ITM_TCR_SYNCENA_Msk (1UL << ITM_TCR_SYNCENA_Pos) /*!< ITM TCR: SYNCENA Mask */ + +#define ITM_TCR_TSENA_Pos 1U /*!< ITM TCR: TSENA Position */ +#define ITM_TCR_TSENA_Msk (1UL << ITM_TCR_TSENA_Pos) /*!< ITM TCR: TSENA Mask */ + +#define ITM_TCR_ITMENA_Pos 0U /*!< ITM TCR: ITM Enable bit Position */ +#define ITM_TCR_ITMENA_Msk (1UL /*<< ITM_TCR_ITMENA_Pos*/) /*!< ITM TCR: ITM Enable bit Mask */ + +/* ITM Lock Status Register Definitions */ +#define ITM_LSR_ByteAcc_Pos 2U /*!< ITM LSR: ByteAcc Position */ +#define ITM_LSR_ByteAcc_Msk (1UL << ITM_LSR_ByteAcc_Pos) /*!< ITM LSR: ByteAcc Mask */ + +#define ITM_LSR_Access_Pos 1U /*!< ITM LSR: Access Position */ +#define ITM_LSR_Access_Msk (1UL << ITM_LSR_Access_Pos) /*!< ITM LSR: Access Mask */ + +#define ITM_LSR_Present_Pos 0U /*!< ITM LSR: Present Position */ +#define ITM_LSR_Present_Msk (1UL /*<< ITM_LSR_Present_Pos*/) /*!< ITM LSR: Present Mask */ + +/*@}*/ /* end of group CMSIS_ITM */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_DWT Data Watchpoint and Trace (DWT) + \brief Type definitions for the Data Watchpoint and Trace (DWT) + @{ + */ + +/** + \brief Structure type to access the Data Watchpoint and Trace Register (DWT). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) Control Register */ + __IOM uint32_t CYCCNT; /*!< Offset: 0x004 (R/W) Cycle Count Register */ + __IOM uint32_t CPICNT; /*!< Offset: 0x008 (R/W) CPI Count Register */ + __IOM uint32_t EXCCNT; /*!< Offset: 0x00C (R/W) Exception Overhead Count Register */ + __IOM uint32_t SLEEPCNT; /*!< Offset: 0x010 (R/W) Sleep Count Register */ + __IOM uint32_t LSUCNT; /*!< Offset: 0x014 (R/W) LSU Count Register */ + __IOM uint32_t FOLDCNT; /*!< Offset: 0x018 (R/W) Folded-instruction Count Register */ + __IM uint32_t PCSR; /*!< Offset: 0x01C (R/ ) Program Counter Sample Register */ + __IOM uint32_t COMP0; /*!< Offset: 0x020 (R/W) Comparator Register 0 */ + uint32_t RESERVED1[1U]; + __IOM uint32_t FUNCTION0; /*!< Offset: 0x028 (R/W) Function Register 0 */ + uint32_t RESERVED2[1U]; + __IOM uint32_t COMP1; /*!< Offset: 0x030 (R/W) Comparator Register 1 */ + uint32_t RESERVED3[1U]; + __IOM uint32_t FUNCTION1; /*!< Offset: 0x038 (R/W) Function Register 1 */ + uint32_t RESERVED4[1U]; + __IOM uint32_t COMP2; /*!< Offset: 0x040 (R/W) Comparator Register 2 */ + uint32_t RESERVED5[1U]; + __IOM uint32_t FUNCTION2; /*!< Offset: 0x048 (R/W) Function Register 2 */ + uint32_t RESERVED6[1U]; + __IOM uint32_t COMP3; /*!< Offset: 0x050 (R/W) Comparator Register 3 */ + uint32_t RESERVED7[1U]; + __IOM uint32_t FUNCTION3; /*!< Offset: 0x058 (R/W) Function Register 3 */ + uint32_t RESERVED8[1U]; + __IOM uint32_t COMP4; /*!< Offset: 0x060 (R/W) Comparator Register 4 */ + uint32_t RESERVED9[1U]; + __IOM uint32_t FUNCTION4; /*!< Offset: 0x068 (R/W) Function Register 4 */ + uint32_t RESERVED10[1U]; + __IOM uint32_t COMP5; /*!< Offset: 0x070 (R/W) Comparator Register 5 */ + uint32_t RESERVED11[1U]; + __IOM uint32_t FUNCTION5; /*!< Offset: 0x078 (R/W) Function Register 5 */ + uint32_t RESERVED12[1U]; + __IOM uint32_t COMP6; /*!< Offset: 0x080 (R/W) Comparator Register 6 */ + uint32_t RESERVED13[1U]; + __IOM uint32_t FUNCTION6; /*!< Offset: 0x088 (R/W) Function Register 6 */ + uint32_t RESERVED14[1U]; + __IOM uint32_t COMP7; /*!< Offset: 0x090 (R/W) Comparator Register 7 */ + uint32_t RESERVED15[1U]; + __IOM uint32_t FUNCTION7; /*!< Offset: 0x098 (R/W) Function Register 7 */ + uint32_t RESERVED16[1U]; + __IOM uint32_t COMP8; /*!< Offset: 0x0A0 (R/W) Comparator Register 8 */ + uint32_t RESERVED17[1U]; + __IOM uint32_t FUNCTION8; /*!< Offset: 0x0A8 (R/W) Function Register 8 */ + uint32_t RESERVED18[1U]; + __IOM uint32_t COMP9; /*!< Offset: 0x0B0 (R/W) Comparator Register 9 */ + uint32_t RESERVED19[1U]; + __IOM uint32_t FUNCTION9; /*!< Offset: 0x0B8 (R/W) Function Register 9 */ + uint32_t RESERVED20[1U]; + __IOM uint32_t COMP10; /*!< Offset: 0x0C0 (R/W) Comparator Register 10 */ + uint32_t RESERVED21[1U]; + __IOM uint32_t FUNCTION10; /*!< Offset: 0x0C8 (R/W) Function Register 10 */ + uint32_t RESERVED22[1U]; + __IOM uint32_t COMP11; /*!< Offset: 0x0D0 (R/W) Comparator Register 11 */ + uint32_t RESERVED23[1U]; + __IOM uint32_t FUNCTION11; /*!< Offset: 0x0D8 (R/W) Function Register 11 */ + uint32_t RESERVED24[1U]; + __IOM uint32_t COMP12; /*!< Offset: 0x0E0 (R/W) Comparator Register 12 */ + uint32_t RESERVED25[1U]; + __IOM uint32_t FUNCTION12; /*!< Offset: 0x0E8 (R/W) Function Register 12 */ + uint32_t RESERVED26[1U]; + __IOM uint32_t COMP13; /*!< Offset: 0x0F0 (R/W) Comparator Register 13 */ + uint32_t RESERVED27[1U]; + __IOM uint32_t FUNCTION13; /*!< Offset: 0x0F8 (R/W) Function Register 13 */ + uint32_t RESERVED28[1U]; + __IOM uint32_t COMP14; /*!< Offset: 0x100 (R/W) Comparator Register 14 */ + uint32_t RESERVED29[1U]; + __IOM uint32_t FUNCTION14; /*!< Offset: 0x108 (R/W) Function Register 14 */ + uint32_t RESERVED30[1U]; + __IOM uint32_t COMP15; /*!< Offset: 0x110 (R/W) Comparator Register 15 */ + uint32_t RESERVED31[1U]; + __IOM uint32_t FUNCTION15; /*!< Offset: 0x118 (R/W) Function Register 15 */ + uint32_t RESERVED32[934U]; + __IM uint32_t LSR; /*!< Offset: 0xFB4 (R ) Lock Status Register */ + uint32_t RESERVED33[1U]; + __IM uint32_t DEVARCH; /*!< Offset: 0xFBC (R/ ) Device Architecture Register */ +} DWT_Type; + +/* DWT Control Register Definitions */ +#define DWT_CTRL_NUMCOMP_Pos 28U /*!< DWT CTRL: NUMCOMP Position */ +#define DWT_CTRL_NUMCOMP_Msk (0xFUL << DWT_CTRL_NUMCOMP_Pos) /*!< DWT CTRL: NUMCOMP Mask */ + +#define DWT_CTRL_NOTRCPKT_Pos 27U /*!< DWT CTRL: NOTRCPKT Position */ +#define DWT_CTRL_NOTRCPKT_Msk (0x1UL << DWT_CTRL_NOTRCPKT_Pos) /*!< DWT CTRL: NOTRCPKT Mask */ + +#define DWT_CTRL_NOEXTTRIG_Pos 26U /*!< DWT CTRL: NOEXTTRIG Position */ +#define DWT_CTRL_NOEXTTRIG_Msk (0x1UL << DWT_CTRL_NOEXTTRIG_Pos) /*!< DWT CTRL: NOEXTTRIG Mask */ + +#define DWT_CTRL_NOCYCCNT_Pos 25U /*!< DWT CTRL: NOCYCCNT Position */ +#define DWT_CTRL_NOCYCCNT_Msk (0x1UL << DWT_CTRL_NOCYCCNT_Pos) /*!< DWT CTRL: NOCYCCNT Mask */ + +#define DWT_CTRL_NOPRFCNT_Pos 24U /*!< DWT CTRL: NOPRFCNT Position */ +#define DWT_CTRL_NOPRFCNT_Msk (0x1UL << DWT_CTRL_NOPRFCNT_Pos) /*!< DWT CTRL: NOPRFCNT Mask */ + +#define DWT_CTRL_CYCDISS_Pos 23U /*!< DWT CTRL: CYCDISS Position */ +#define DWT_CTRL_CYCDISS_Msk (0x1UL << DWT_CTRL_CYCDISS_Pos) /*!< DWT CTRL: CYCDISS Mask */ + +#define DWT_CTRL_CYCEVTENA_Pos 22U /*!< DWT CTRL: CYCEVTENA Position */ +#define DWT_CTRL_CYCEVTENA_Msk (0x1UL << DWT_CTRL_CYCEVTENA_Pos) /*!< DWT CTRL: CYCEVTENA Mask */ + +#define DWT_CTRL_FOLDEVTENA_Pos 21U /*!< DWT CTRL: FOLDEVTENA Position */ +#define DWT_CTRL_FOLDEVTENA_Msk (0x1UL << DWT_CTRL_FOLDEVTENA_Pos) /*!< DWT CTRL: FOLDEVTENA Mask */ + +#define DWT_CTRL_LSUEVTENA_Pos 20U /*!< DWT CTRL: LSUEVTENA Position */ +#define DWT_CTRL_LSUEVTENA_Msk (0x1UL << DWT_CTRL_LSUEVTENA_Pos) /*!< DWT CTRL: LSUEVTENA Mask */ + +#define DWT_CTRL_SLEEPEVTENA_Pos 19U /*!< DWT CTRL: SLEEPEVTENA Position */ +#define DWT_CTRL_SLEEPEVTENA_Msk (0x1UL << DWT_CTRL_SLEEPEVTENA_Pos) /*!< DWT CTRL: SLEEPEVTENA Mask */ + +#define DWT_CTRL_EXCEVTENA_Pos 18U /*!< DWT CTRL: EXCEVTENA Position */ +#define DWT_CTRL_EXCEVTENA_Msk (0x1UL << DWT_CTRL_EXCEVTENA_Pos) /*!< DWT CTRL: EXCEVTENA Mask */ + +#define DWT_CTRL_CPIEVTENA_Pos 17U /*!< DWT CTRL: CPIEVTENA Position */ +#define DWT_CTRL_CPIEVTENA_Msk (0x1UL << DWT_CTRL_CPIEVTENA_Pos) /*!< DWT CTRL: CPIEVTENA Mask */ + +#define DWT_CTRL_EXCTRCENA_Pos 16U /*!< DWT CTRL: EXCTRCENA Position */ +#define DWT_CTRL_EXCTRCENA_Msk (0x1UL << DWT_CTRL_EXCTRCENA_Pos) /*!< DWT CTRL: EXCTRCENA Mask */ + +#define DWT_CTRL_PCSAMPLENA_Pos 12U /*!< DWT CTRL: PCSAMPLENA Position */ +#define DWT_CTRL_PCSAMPLENA_Msk (0x1UL << DWT_CTRL_PCSAMPLENA_Pos) /*!< DWT CTRL: PCSAMPLENA Mask */ + +#define DWT_CTRL_SYNCTAP_Pos 10U /*!< DWT CTRL: SYNCTAP Position */ +#define DWT_CTRL_SYNCTAP_Msk (0x3UL << DWT_CTRL_SYNCTAP_Pos) /*!< DWT CTRL: SYNCTAP Mask */ + +#define DWT_CTRL_CYCTAP_Pos 9U /*!< DWT CTRL: CYCTAP Position */ +#define DWT_CTRL_CYCTAP_Msk (0x1UL << DWT_CTRL_CYCTAP_Pos) /*!< DWT CTRL: CYCTAP Mask */ + +#define DWT_CTRL_POSTINIT_Pos 5U /*!< DWT CTRL: POSTINIT Position */ +#define DWT_CTRL_POSTINIT_Msk (0xFUL << DWT_CTRL_POSTINIT_Pos) /*!< DWT CTRL: POSTINIT Mask */ + +#define DWT_CTRL_POSTPRESET_Pos 1U /*!< DWT CTRL: POSTPRESET Position */ +#define DWT_CTRL_POSTPRESET_Msk (0xFUL << DWT_CTRL_POSTPRESET_Pos) /*!< DWT CTRL: POSTPRESET Mask */ + +#define DWT_CTRL_CYCCNTENA_Pos 0U /*!< DWT CTRL: CYCCNTENA Position */ +#define DWT_CTRL_CYCCNTENA_Msk (0x1UL /*<< DWT_CTRL_CYCCNTENA_Pos*/) /*!< DWT CTRL: CYCCNTENA Mask */ + +/* DWT CPI Count Register Definitions */ +#define DWT_CPICNT_CPICNT_Pos 0U /*!< DWT CPICNT: CPICNT Position */ +#define DWT_CPICNT_CPICNT_Msk (0xFFUL /*<< DWT_CPICNT_CPICNT_Pos*/) /*!< DWT CPICNT: CPICNT Mask */ + +/* DWT Exception Overhead Count Register Definitions */ +#define DWT_EXCCNT_EXCCNT_Pos 0U /*!< DWT EXCCNT: EXCCNT Position */ +#define DWT_EXCCNT_EXCCNT_Msk (0xFFUL /*<< DWT_EXCCNT_EXCCNT_Pos*/) /*!< DWT EXCCNT: EXCCNT Mask */ + +/* DWT Sleep Count Register Definitions */ +#define DWT_SLEEPCNT_SLEEPCNT_Pos 0U /*!< DWT SLEEPCNT: SLEEPCNT Position */ +#define DWT_SLEEPCNT_SLEEPCNT_Msk (0xFFUL /*<< DWT_SLEEPCNT_SLEEPCNT_Pos*/) /*!< DWT SLEEPCNT: SLEEPCNT Mask */ + +/* DWT LSU Count Register Definitions */ +#define DWT_LSUCNT_LSUCNT_Pos 0U /*!< DWT LSUCNT: LSUCNT Position */ +#define DWT_LSUCNT_LSUCNT_Msk (0xFFUL /*<< DWT_LSUCNT_LSUCNT_Pos*/) /*!< DWT LSUCNT: LSUCNT Mask */ + +/* DWT Folded-instruction Count Register Definitions */ +#define DWT_FOLDCNT_FOLDCNT_Pos 0U /*!< DWT FOLDCNT: FOLDCNT Position */ +#define DWT_FOLDCNT_FOLDCNT_Msk (0xFFUL /*<< DWT_FOLDCNT_FOLDCNT_Pos*/) /*!< DWT FOLDCNT: FOLDCNT Mask */ + +/* DWT Comparator Function Register Definitions */ +#define DWT_FUNCTION_ID_Pos 27U /*!< DWT FUNCTION: ID Position */ +#define DWT_FUNCTION_ID_Msk (0x1FUL << DWT_FUNCTION_ID_Pos) /*!< DWT FUNCTION: ID Mask */ + +#define DWT_FUNCTION_MATCHED_Pos 24U /*!< DWT FUNCTION: MATCHED Position */ +#define DWT_FUNCTION_MATCHED_Msk (0x1UL << DWT_FUNCTION_MATCHED_Pos) /*!< DWT FUNCTION: MATCHED Mask */ + +#define DWT_FUNCTION_DATAVSIZE_Pos 10U /*!< DWT FUNCTION: DATAVSIZE Position */ +#define DWT_FUNCTION_DATAVSIZE_Msk (0x3UL << DWT_FUNCTION_DATAVSIZE_Pos) /*!< DWT FUNCTION: DATAVSIZE Mask */ + +#define DWT_FUNCTION_ACTION_Pos 4U /*!< DWT FUNCTION: ACTION Position */ +#define DWT_FUNCTION_ACTION_Msk (0x1UL << DWT_FUNCTION_ACTION_Pos) /*!< DWT FUNCTION: ACTION Mask */ + +#define DWT_FUNCTION_MATCH_Pos 0U /*!< DWT FUNCTION: MATCH Position */ +#define DWT_FUNCTION_MATCH_Msk (0xFUL /*<< DWT_FUNCTION_MATCH_Pos*/) /*!< DWT FUNCTION: MATCH Mask */ + +/*@}*/ /* end of group CMSIS_DWT */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_TPI Trace Port Interface (TPI) + \brief Type definitions for the Trace Port Interface (TPI) + @{ + */ + +/** + \brief Structure type to access the Trace Port Interface Register (TPI). + */ +typedef struct +{ + __IM uint32_t SSPSR; /*!< Offset: 0x000 (R/ ) Supported Parallel Port Sizes Register */ + __IOM uint32_t CSPSR; /*!< Offset: 0x004 (R/W) Current Parallel Port Sizes Register */ + uint32_t RESERVED0[2U]; + __IOM uint32_t ACPR; /*!< Offset: 0x010 (R/W) Asynchronous Clock Prescaler Register */ + uint32_t RESERVED1[55U]; + __IOM uint32_t SPPR; /*!< Offset: 0x0F0 (R/W) Selected Pin Protocol Register */ + uint32_t RESERVED2[131U]; + __IM uint32_t FFSR; /*!< Offset: 0x300 (R/ ) Formatter and Flush Status Register */ + __IOM uint32_t FFCR; /*!< Offset: 0x304 (R/W) Formatter and Flush Control Register */ + __IOM uint32_t PSCR; /*!< Offset: 0x308 (R/W) Periodic Synchronization Control Register */ + uint32_t RESERVED3[809U]; + __OM uint32_t LAR; /*!< Offset: 0xFB0 ( /W) Software Lock Access Register */ + __IM uint32_t LSR; /*!< Offset: 0xFB4 (R/ ) Software Lock Status Register */ + uint32_t RESERVED4[4U]; + __IM uint32_t TYPE; /*!< Offset: 0xFC8 (R/ ) Device Identifier Register */ + __IM uint32_t DEVTYPE; /*!< Offset: 0xFCC (R/ ) Device Type Register */ +} TPI_Type; + +/* TPI Asynchronous Clock Prescaler Register Definitions */ +#define TPI_ACPR_SWOSCALER_Pos 0U /*!< TPI ACPR: SWOSCALER Position */ +#define TPI_ACPR_SWOSCALER_Msk (0xFFFFUL /*<< TPI_ACPR_SWOSCALER_Pos*/) /*!< TPI ACPR: SWOSCALER Mask */ + +/* TPI Selected Pin Protocol Register Definitions */ +#define TPI_SPPR_TXMODE_Pos 0U /*!< TPI SPPR: TXMODE Position */ +#define TPI_SPPR_TXMODE_Msk (0x3UL /*<< TPI_SPPR_TXMODE_Pos*/) /*!< TPI SPPR: TXMODE Mask */ + +/* TPI Formatter and Flush Status Register Definitions */ +#define TPI_FFSR_FtNonStop_Pos 3U /*!< TPI FFSR: FtNonStop Position */ +#define TPI_FFSR_FtNonStop_Msk (0x1UL << TPI_FFSR_FtNonStop_Pos) /*!< TPI FFSR: FtNonStop Mask */ + +#define TPI_FFSR_TCPresent_Pos 2U /*!< TPI FFSR: TCPresent Position */ +#define TPI_FFSR_TCPresent_Msk (0x1UL << TPI_FFSR_TCPresent_Pos) /*!< TPI FFSR: TCPresent Mask */ + +#define TPI_FFSR_FtStopped_Pos 1U /*!< TPI FFSR: FtStopped Position */ +#define TPI_FFSR_FtStopped_Msk (0x1UL << TPI_FFSR_FtStopped_Pos) /*!< TPI FFSR: FtStopped Mask */ + +#define TPI_FFSR_FlInProg_Pos 0U /*!< TPI FFSR: FlInProg Position */ +#define TPI_FFSR_FlInProg_Msk (0x1UL /*<< TPI_FFSR_FlInProg_Pos*/) /*!< TPI FFSR: FlInProg Mask */ + +/* TPI Formatter and Flush Control Register Definitions */ +#define TPI_FFCR_TrigIn_Pos 8U /*!< TPI FFCR: TrigIn Position */ +#define TPI_FFCR_TrigIn_Msk (0x1UL << TPI_FFCR_TrigIn_Pos) /*!< TPI FFCR: TrigIn Mask */ + +#define TPI_FFCR_FOnMan_Pos 6U /*!< TPI FFCR: FOnMan Position */ +#define TPI_FFCR_FOnMan_Msk (0x1UL << TPI_FFCR_FOnMan_Pos) /*!< TPI FFCR: FOnMan Mask */ + +#define TPI_FFCR_EnFmt_Pos 0U /*!< TPI FFCR: EnFmt Position */ +#define TPI_FFCR_EnFmt_Msk (0x3UL << /*TPI_FFCR_EnFmt_Pos*/) /*!< TPI FFCR: EnFmt Mask */ + +/* TPI Periodic Synchronization Control Register Definitions */ +#define TPI_PSCR_PSCount_Pos 0U /*!< TPI PSCR: PSCount Position */ +#define TPI_PSCR_PSCount_Msk (0x1FUL /*<< TPI_PSCR_PSCount_Pos*/) /*!< TPI PSCR: TPSCount Mask */ + +/* TPI Software Lock Status Register Definitions */ +#define TPI_LSR_nTT_Pos 1U /*!< TPI LSR: Not thirty-two bit. Position */ +#define TPI_LSR_nTT_Msk (0x1UL << TPI_LSR_nTT_Pos) /*!< TPI LSR: Not thirty-two bit. Mask */ + +#define TPI_LSR_SLK_Pos 1U /*!< TPI LSR: Software Lock status Position */ +#define TPI_LSR_SLK_Msk (0x1UL << TPI_LSR_SLK_Pos) /*!< TPI LSR: Software Lock status Mask */ + +#define TPI_LSR_SLI_Pos 0U /*!< TPI LSR: Software Lock implemented Position */ +#define TPI_LSR_SLI_Msk (0x1UL /*<< TPI_LSR_SLI_Pos*/) /*!< TPI LSR: Software Lock implemented Mask */ + +/* TPI DEVID Register Definitions */ +#define TPI_DEVID_NRZVALID_Pos 11U /*!< TPI DEVID: NRZVALID Position */ +#define TPI_DEVID_NRZVALID_Msk (0x1UL << TPI_DEVID_NRZVALID_Pos) /*!< TPI DEVID: NRZVALID Mask */ + +#define TPI_DEVID_MANCVALID_Pos 10U /*!< TPI DEVID: MANCVALID Position */ +#define TPI_DEVID_MANCVALID_Msk (0x1UL << TPI_DEVID_MANCVALID_Pos) /*!< TPI DEVID: MANCVALID Mask */ + +#define TPI_DEVID_PTINVALID_Pos 9U /*!< TPI DEVID: PTINVALID Position */ +#define TPI_DEVID_PTINVALID_Msk (0x1UL << TPI_DEVID_PTINVALID_Pos) /*!< TPI DEVID: PTINVALID Mask */ + +#define TPI_DEVID_FIFOSZ_Pos 6U /*!< TPI DEVID: FIFO depth Position */ +#define TPI_DEVID_FIFOSZ_Msk (0x7UL << TPI_DEVID_FIFOSZ_Pos) /*!< TPI DEVID: FIFO depth Mask */ + +/* TPI DEVTYPE Register Definitions */ +#define TPI_DEVTYPE_SubType_Pos 4U /*!< TPI DEVTYPE: SubType Position */ +#define TPI_DEVTYPE_SubType_Msk (0xFUL /*<< TPI_DEVTYPE_SubType_Pos*/) /*!< TPI DEVTYPE: SubType Mask */ + +#define TPI_DEVTYPE_MajorType_Pos 0U /*!< TPI DEVTYPE: MajorType Position */ +#define TPI_DEVTYPE_MajorType_Msk (0xFUL << TPI_DEVTYPE_MajorType_Pos) /*!< TPI DEVTYPE: MajorType Mask */ + +/*@}*/ /* end of group CMSIS_TPI */ + +#if defined (__PMU_PRESENT) && (__PMU_PRESENT == 1U) +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_PMU Performance Monitoring Unit (PMU) + \brief Type definitions for the Performance Monitoring Unit (PMU) + @{ + */ + +/** + \brief Structure type to access the Performance Monitoring Unit (PMU). + */ +typedef struct +{ + __IOM uint32_t EVCNTR[__PMU_NUM_EVENTCNT]; /*!< Offset: 0x0 (R/W) PMU Event Counter Registers */ +#if __PMU_NUM_EVENTCNT<31 + uint32_t RESERVED0[31U-__PMU_NUM_EVENTCNT]; +#endif + __IOM uint32_t CCNTR; /*!< Offset: 0x7C (R/W) PMU Cycle Counter Register */ + uint32_t RESERVED1[224]; + __IOM uint32_t EVTYPER[__PMU_NUM_EVENTCNT]; /*!< Offset: 0x400 (R/W) PMU Event Type and Filter Registers */ +#if __PMU_NUM_EVENTCNT<31 + uint32_t RESERVED2[31U-__PMU_NUM_EVENTCNT]; +#endif + __IOM uint32_t CCFILTR; /*!< Offset: 0x47C (R/W) PMU Cycle Counter Filter Register */ + uint32_t RESERVED3[480]; + __IOM uint32_t CNTENSET; /*!< Offset: 0xC00 (R/W) PMU Count Enable Set Register */ + uint32_t RESERVED4[7]; + __IOM uint32_t CNTENCLR; /*!< Offset: 0xC20 (R/W) PMU Count Enable Clear Register */ + uint32_t RESERVED5[7]; + __IOM uint32_t INTENSET; /*!< Offset: 0xC40 (R/W) PMU Interrupt Enable Set Register */ + uint32_t RESERVED6[7]; + __IOM uint32_t INTENCLR; /*!< Offset: 0xC60 (R/W) PMU Interrupt Enable Clear Register */ + uint32_t RESERVED7[7]; + __IOM uint32_t OVSCLR; /*!< Offset: 0xC80 (R/W) PMU Overflow Flag Status Clear Register */ + uint32_t RESERVED8[7]; + __IOM uint32_t SWINC; /*!< Offset: 0xCA0 (R/W) PMU Software Increment Register */ + uint32_t RESERVED9[7]; + __IOM uint32_t OVSSET; /*!< Offset: 0xCC0 (R/W) PMU Overflow Flag Status Set Register */ + uint32_t RESERVED10[79]; + __IOM uint32_t TYPE; /*!< Offset: 0xE00 (R/W) PMU Type Register */ + __IOM uint32_t CTRL; /*!< Offset: 0xE04 (R/W) PMU Control Register */ + uint32_t RESERVED11[108]; + __IOM uint32_t AUTHSTATUS; /*!< Offset: 0xFB8 (R/W) PMU Authentication Status Register */ + __IOM uint32_t DEVARCH; /*!< Offset: 0xFBC (R/W) PMU Device Architecture Register */ + uint32_t RESERVED12[3]; + __IOM uint32_t DEVTYPE; /*!< Offset: 0xFCC (R/W) PMU Device Type Register */ + __IOM uint32_t PIDR4; /*!< Offset: 0xFD0 (R/W) PMU Peripheral Identification Register 4 */ + uint32_t RESERVED13[3]; + __IOM uint32_t PIDR0; /*!< Offset: 0xFE0 (R/W) PMU Peripheral Identification Register 0 */ + __IOM uint32_t PIDR1; /*!< Offset: 0xFE4 (R/W) PMU Peripheral Identification Register 1 */ + __IOM uint32_t PIDR2; /*!< Offset: 0xFE8 (R/W) PMU Peripheral Identification Register 2 */ + __IOM uint32_t PIDR3; /*!< Offset: 0xFEC (R/W) PMU Peripheral Identification Register 3 */ + __IOM uint32_t CIDR0; /*!< Offset: 0xFF0 (R/W) PMU Component Identification Register 0 */ + __IOM uint32_t CIDR1; /*!< Offset: 0xFF4 (R/W) PMU Component Identification Register 1 */ + __IOM uint32_t CIDR2; /*!< Offset: 0xFF8 (R/W) PMU Component Identification Register 2 */ + __IOM uint32_t CIDR3; /*!< Offset: 0xFFC (R/W) PMU Component Identification Register 3 */ +} PMU_Type; + +/** \brief PMU Event Counter Registers (0-30) Definitions */ + +#define PMU_EVCNTR_CNT_Pos 0U /*!< PMU EVCNTR: Counter Position */ +#define PMU_EVCNTR_CNT_Msk (0xFFFFUL /*<< PMU_EVCNTRx_CNT_Pos*/) /*!< PMU EVCNTR: Counter Mask */ + +/** \brief PMU Event Type and Filter Registers (0-30) Definitions */ + +#define PMU_EVTYPER_EVENTTOCNT_Pos 0U /*!< PMU EVTYPER: Event to Count Position */ +#define PMU_EVTYPER_EVENTTOCNT_Msk (0xFFFFUL /*<< EVTYPERx_EVENTTOCNT_Pos*/) /*!< PMU EVTYPER: Event to Count Mask */ + +/** \brief PMU Count Enable Set Register Definitions */ + +#define PMU_CNTENSET_CNT0_ENABLE_Pos 0U /*!< PMU CNTENSET: Event Counter 0 Enable Set Position */ +#define PMU_CNTENSET_CNT0_ENABLE_Msk (1UL /*<< PMU_CNTENSET_CNT0_ENABLE_Pos*/) /*!< PMU CNTENSET: Event Counter 0 Enable Set Mask */ + +#define PMU_CNTENSET_CNT1_ENABLE_Pos 1U /*!< PMU CNTENSET: Event Counter 1 Enable Set Position */ +#define PMU_CNTENSET_CNT1_ENABLE_Msk (1UL << PMU_CNTENSET_CNT1_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 1 Enable Set Mask */ + +#define PMU_CNTENSET_CNT2_ENABLE_Pos 2U /*!< PMU CNTENSET: Event Counter 2 Enable Set Position */ +#define PMU_CNTENSET_CNT2_ENABLE_Msk (1UL << PMU_CNTENSET_CNT2_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 2 Enable Set Mask */ + +#define PMU_CNTENSET_CNT3_ENABLE_Pos 3U /*!< PMU CNTENSET: Event Counter 3 Enable Set Position */ +#define PMU_CNTENSET_CNT3_ENABLE_Msk (1UL << PMU_CNTENSET_CNT3_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 3 Enable Set Mask */ + +#define PMU_CNTENSET_CNT4_ENABLE_Pos 4U /*!< PMU CNTENSET: Event Counter 4 Enable Set Position */ +#define PMU_CNTENSET_CNT4_ENABLE_Msk (1UL << PMU_CNTENSET_CNT4_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 4 Enable Set Mask */ + +#define PMU_CNTENSET_CNT5_ENABLE_Pos 5U /*!< PMU CNTENSET: Event Counter 5 Enable Set Position */ +#define PMU_CNTENSET_CNT5_ENABLE_Msk (1UL << PMU_CNTENSET_CNT5_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 5 Enable Set Mask */ + +#define PMU_CNTENSET_CNT6_ENABLE_Pos 6U /*!< PMU CNTENSET: Event Counter 6 Enable Set Position */ +#define PMU_CNTENSET_CNT6_ENABLE_Msk (1UL << PMU_CNTENSET_CNT6_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 6 Enable Set Mask */ + +#define PMU_CNTENSET_CNT7_ENABLE_Pos 7U /*!< PMU CNTENSET: Event Counter 7 Enable Set Position */ +#define PMU_CNTENSET_CNT7_ENABLE_Msk (1UL << PMU_CNTENSET_CNT7_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 7 Enable Set Mask */ + +#define PMU_CNTENSET_CNT8_ENABLE_Pos 8U /*!< PMU CNTENSET: Event Counter 8 Enable Set Position */ +#define PMU_CNTENSET_CNT8_ENABLE_Msk (1UL << PMU_CNTENSET_CNT8_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 8 Enable Set Mask */ + +#define PMU_CNTENSET_CNT9_ENABLE_Pos 9U /*!< PMU CNTENSET: Event Counter 9 Enable Set Position */ +#define PMU_CNTENSET_CNT9_ENABLE_Msk (1UL << PMU_CNTENSET_CNT9_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 9 Enable Set Mask */ + +#define PMU_CNTENSET_CNT10_ENABLE_Pos 10U /*!< PMU CNTENSET: Event Counter 10 Enable Set Position */ +#define PMU_CNTENSET_CNT10_ENABLE_Msk (1UL << PMU_CNTENSET_CNT10_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 10 Enable Set Mask */ + +#define PMU_CNTENSET_CNT11_ENABLE_Pos 11U /*!< PMU CNTENSET: Event Counter 11 Enable Set Position */ +#define PMU_CNTENSET_CNT11_ENABLE_Msk (1UL << PMU_CNTENSET_CNT11_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 11 Enable Set Mask */ + +#define PMU_CNTENSET_CNT12_ENABLE_Pos 12U /*!< PMU CNTENSET: Event Counter 12 Enable Set Position */ +#define PMU_CNTENSET_CNT12_ENABLE_Msk (1UL << PMU_CNTENSET_CNT12_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 12 Enable Set Mask */ + +#define PMU_CNTENSET_CNT13_ENABLE_Pos 13U /*!< PMU CNTENSET: Event Counter 13 Enable Set Position */ +#define PMU_CNTENSET_CNT13_ENABLE_Msk (1UL << PMU_CNTENSET_CNT13_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 13 Enable Set Mask */ + +#define PMU_CNTENSET_CNT14_ENABLE_Pos 14U /*!< PMU CNTENSET: Event Counter 14 Enable Set Position */ +#define PMU_CNTENSET_CNT14_ENABLE_Msk (1UL << PMU_CNTENSET_CNT14_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 14 Enable Set Mask */ + +#define PMU_CNTENSET_CNT15_ENABLE_Pos 15U /*!< PMU CNTENSET: Event Counter 15 Enable Set Position */ +#define PMU_CNTENSET_CNT15_ENABLE_Msk (1UL << PMU_CNTENSET_CNT15_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 15 Enable Set Mask */ + +#define PMU_CNTENSET_CNT16_ENABLE_Pos 16U /*!< PMU CNTENSET: Event Counter 16 Enable Set Position */ +#define PMU_CNTENSET_CNT16_ENABLE_Msk (1UL << PMU_CNTENSET_CNT16_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 16 Enable Set Mask */ + +#define PMU_CNTENSET_CNT17_ENABLE_Pos 17U /*!< PMU CNTENSET: Event Counter 17 Enable Set Position */ +#define PMU_CNTENSET_CNT17_ENABLE_Msk (1UL << PMU_CNTENSET_CNT17_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 17 Enable Set Mask */ + +#define PMU_CNTENSET_CNT18_ENABLE_Pos 18U /*!< PMU CNTENSET: Event Counter 18 Enable Set Position */ +#define PMU_CNTENSET_CNT18_ENABLE_Msk (1UL << PMU_CNTENSET_CNT18_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 18 Enable Set Mask */ + +#define PMU_CNTENSET_CNT19_ENABLE_Pos 19U /*!< PMU CNTENSET: Event Counter 19 Enable Set Position */ +#define PMU_CNTENSET_CNT19_ENABLE_Msk (1UL << PMU_CNTENSET_CNT19_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 19 Enable Set Mask */ + +#define PMU_CNTENSET_CNT20_ENABLE_Pos 20U /*!< PMU CNTENSET: Event Counter 20 Enable Set Position */ +#define PMU_CNTENSET_CNT20_ENABLE_Msk (1UL << PMU_CNTENSET_CNT20_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 20 Enable Set Mask */ + +#define PMU_CNTENSET_CNT21_ENABLE_Pos 21U /*!< PMU CNTENSET: Event Counter 21 Enable Set Position */ +#define PMU_CNTENSET_CNT21_ENABLE_Msk (1UL << PMU_CNTENSET_CNT21_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 21 Enable Set Mask */ + +#define PMU_CNTENSET_CNT22_ENABLE_Pos 22U /*!< PMU CNTENSET: Event Counter 22 Enable Set Position */ +#define PMU_CNTENSET_CNT22_ENABLE_Msk (1UL << PMU_CNTENSET_CNT22_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 22 Enable Set Mask */ + +#define PMU_CNTENSET_CNT23_ENABLE_Pos 23U /*!< PMU CNTENSET: Event Counter 23 Enable Set Position */ +#define PMU_CNTENSET_CNT23_ENABLE_Msk (1UL << PMU_CNTENSET_CNT23_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 23 Enable Set Mask */ + +#define PMU_CNTENSET_CNT24_ENABLE_Pos 24U /*!< PMU CNTENSET: Event Counter 24 Enable Set Position */ +#define PMU_CNTENSET_CNT24_ENABLE_Msk (1UL << PMU_CNTENSET_CNT24_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 24 Enable Set Mask */ + +#define PMU_CNTENSET_CNT25_ENABLE_Pos 25U /*!< PMU CNTENSET: Event Counter 25 Enable Set Position */ +#define PMU_CNTENSET_CNT25_ENABLE_Msk (1UL << PMU_CNTENSET_CNT25_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 25 Enable Set Mask */ + +#define PMU_CNTENSET_CNT26_ENABLE_Pos 26U /*!< PMU CNTENSET: Event Counter 26 Enable Set Position */ +#define PMU_CNTENSET_CNT26_ENABLE_Msk (1UL << PMU_CNTENSET_CNT26_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 26 Enable Set Mask */ + +#define PMU_CNTENSET_CNT27_ENABLE_Pos 27U /*!< PMU CNTENSET: Event Counter 27 Enable Set Position */ +#define PMU_CNTENSET_CNT27_ENABLE_Msk (1UL << PMU_CNTENSET_CNT27_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 27 Enable Set Mask */ + +#define PMU_CNTENSET_CNT28_ENABLE_Pos 28U /*!< PMU CNTENSET: Event Counter 28 Enable Set Position */ +#define PMU_CNTENSET_CNT28_ENABLE_Msk (1UL << PMU_CNTENSET_CNT28_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 28 Enable Set Mask */ + +#define PMU_CNTENSET_CNT29_ENABLE_Pos 29U /*!< PMU CNTENSET: Event Counter 29 Enable Set Position */ +#define PMU_CNTENSET_CNT29_ENABLE_Msk (1UL << PMU_CNTENSET_CNT29_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 29 Enable Set Mask */ + +#define PMU_CNTENSET_CNT30_ENABLE_Pos 30U /*!< PMU CNTENSET: Event Counter 30 Enable Set Position */ +#define PMU_CNTENSET_CNT30_ENABLE_Msk (1UL << PMU_CNTENSET_CNT30_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 30 Enable Set Mask */ + +#define PMU_CNTENSET_CCNTR_ENABLE_Pos 31U /*!< PMU CNTENSET: Cycle Counter Enable Set Position */ +#define PMU_CNTENSET_CCNTR_ENABLE_Msk (1UL << PMU_CNTENSET_CCNTR_ENABLE_Pos) /*!< PMU CNTENSET: Cycle Counter Enable Set Mask */ + +/** \brief PMU Count Enable Clear Register Definitions */ + +#define PMU_CNTENSET_CNT0_ENABLE_Pos 0U /*!< PMU CNTENCLR: Event Counter 0 Enable Clear Position */ +#define PMU_CNTENCLR_CNT0_ENABLE_Msk (1UL /*<< PMU_CNTENCLR_CNT0_ENABLE_Pos*/) /*!< PMU CNTENCLR: Event Counter 0 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT1_ENABLE_Pos 1U /*!< PMU CNTENCLR: Event Counter 1 Enable Clear Position */ +#define PMU_CNTENCLR_CNT1_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT1_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 1 Enable Clear */ + +#define PMU_CNTENCLR_CNT2_ENABLE_Pos 2U /*!< PMU CNTENCLR: Event Counter 2 Enable Clear Position */ +#define PMU_CNTENCLR_CNT2_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT2_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 2 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT3_ENABLE_Pos 3U /*!< PMU CNTENCLR: Event Counter 3 Enable Clear Position */ +#define PMU_CNTENCLR_CNT3_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT3_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 3 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT4_ENABLE_Pos 4U /*!< PMU CNTENCLR: Event Counter 4 Enable Clear Position */ +#define PMU_CNTENCLR_CNT4_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT4_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 4 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT5_ENABLE_Pos 5U /*!< PMU CNTENCLR: Event Counter 5 Enable Clear Position */ +#define PMU_CNTENCLR_CNT5_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT5_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 5 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT6_ENABLE_Pos 6U /*!< PMU CNTENCLR: Event Counter 6 Enable Clear Position */ +#define PMU_CNTENCLR_CNT6_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT6_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 6 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT7_ENABLE_Pos 7U /*!< PMU CNTENCLR: Event Counter 7 Enable Clear Position */ +#define PMU_CNTENCLR_CNT7_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT7_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 7 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT8_ENABLE_Pos 8U /*!< PMU CNTENCLR: Event Counter 8 Enable Clear Position */ +#define PMU_CNTENCLR_CNT8_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT8_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 8 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT9_ENABLE_Pos 9U /*!< PMU CNTENCLR: Event Counter 9 Enable Clear Position */ +#define PMU_CNTENCLR_CNT9_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT9_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 9 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT10_ENABLE_Pos 10U /*!< PMU CNTENCLR: Event Counter 10 Enable Clear Position */ +#define PMU_CNTENCLR_CNT10_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT10_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 10 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT11_ENABLE_Pos 11U /*!< PMU CNTENCLR: Event Counter 11 Enable Clear Position */ +#define PMU_CNTENCLR_CNT11_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT11_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 11 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT12_ENABLE_Pos 12U /*!< PMU CNTENCLR: Event Counter 12 Enable Clear Position */ +#define PMU_CNTENCLR_CNT12_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT12_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 12 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT13_ENABLE_Pos 13U /*!< PMU CNTENCLR: Event Counter 13 Enable Clear Position */ +#define PMU_CNTENCLR_CNT13_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT13_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 13 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT14_ENABLE_Pos 14U /*!< PMU CNTENCLR: Event Counter 14 Enable Clear Position */ +#define PMU_CNTENCLR_CNT14_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT14_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 14 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT15_ENABLE_Pos 15U /*!< PMU CNTENCLR: Event Counter 15 Enable Clear Position */ +#define PMU_CNTENCLR_CNT15_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT15_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 15 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT16_ENABLE_Pos 16U /*!< PMU CNTENCLR: Event Counter 16 Enable Clear Position */ +#define PMU_CNTENCLR_CNT16_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT16_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 16 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT17_ENABLE_Pos 17U /*!< PMU CNTENCLR: Event Counter 17 Enable Clear Position */ +#define PMU_CNTENCLR_CNT17_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT17_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 17 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT18_ENABLE_Pos 18U /*!< PMU CNTENCLR: Event Counter 18 Enable Clear Position */ +#define PMU_CNTENCLR_CNT18_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT18_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 18 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT19_ENABLE_Pos 19U /*!< PMU CNTENCLR: Event Counter 19 Enable Clear Position */ +#define PMU_CNTENCLR_CNT19_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT19_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 19 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT20_ENABLE_Pos 20U /*!< PMU CNTENCLR: Event Counter 20 Enable Clear Position */ +#define PMU_CNTENCLR_CNT20_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT20_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 20 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT21_ENABLE_Pos 21U /*!< PMU CNTENCLR: Event Counter 21 Enable Clear Position */ +#define PMU_CNTENCLR_CNT21_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT21_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 21 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT22_ENABLE_Pos 22U /*!< PMU CNTENCLR: Event Counter 22 Enable Clear Position */ +#define PMU_CNTENCLR_CNT22_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT22_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 22 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT23_ENABLE_Pos 23U /*!< PMU CNTENCLR: Event Counter 23 Enable Clear Position */ +#define PMU_CNTENCLR_CNT23_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT23_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 23 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT24_ENABLE_Pos 24U /*!< PMU CNTENCLR: Event Counter 24 Enable Clear Position */ +#define PMU_CNTENCLR_CNT24_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT24_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 24 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT25_ENABLE_Pos 25U /*!< PMU CNTENCLR: Event Counter 25 Enable Clear Position */ +#define PMU_CNTENCLR_CNT25_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT25_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 25 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT26_ENABLE_Pos 26U /*!< PMU CNTENCLR: Event Counter 26 Enable Clear Position */ +#define PMU_CNTENCLR_CNT26_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT26_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 26 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT27_ENABLE_Pos 27U /*!< PMU CNTENCLR: Event Counter 27 Enable Clear Position */ +#define PMU_CNTENCLR_CNT27_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT27_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 27 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT28_ENABLE_Pos 28U /*!< PMU CNTENCLR: Event Counter 28 Enable Clear Position */ +#define PMU_CNTENCLR_CNT28_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT28_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 28 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT29_ENABLE_Pos 29U /*!< PMU CNTENCLR: Event Counter 29 Enable Clear Position */ +#define PMU_CNTENCLR_CNT29_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT29_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 29 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT30_ENABLE_Pos 30U /*!< PMU CNTENCLR: Event Counter 30 Enable Clear Position */ +#define PMU_CNTENCLR_CNT30_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT30_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 30 Enable Clear Mask */ + +#define PMU_CNTENCLR_CCNTR_ENABLE_Pos 31U /*!< PMU CNTENCLR: Cycle Counter Enable Clear Position */ +#define PMU_CNTENCLR_CCNTR_ENABLE_Msk (1UL << PMU_CNTENCLR_CCNTR_ENABLE_Pos) /*!< PMU CNTENCLR: Cycle Counter Enable Clear Mask */ + +/** \brief PMU Interrupt Enable Set Register Definitions */ + +#define PMU_INTENSET_CNT0_ENABLE_Pos 0U /*!< PMU INTENSET: Event Counter 0 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT0_ENABLE_Msk (1UL /*<< PMU_INTENSET_CNT0_ENABLE_Pos*/) /*!< PMU INTENSET: Event Counter 0 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT1_ENABLE_Pos 1U /*!< PMU INTENSET: Event Counter 1 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT1_ENABLE_Msk (1UL << PMU_INTENSET_CNT1_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 1 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT2_ENABLE_Pos 2U /*!< PMU INTENSET: Event Counter 2 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT2_ENABLE_Msk (1UL << PMU_INTENSET_CNT2_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 2 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT3_ENABLE_Pos 3U /*!< PMU INTENSET: Event Counter 3 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT3_ENABLE_Msk (1UL << PMU_INTENSET_CNT3_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 3 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT4_ENABLE_Pos 4U /*!< PMU INTENSET: Event Counter 4 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT4_ENABLE_Msk (1UL << PMU_INTENSET_CNT4_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 4 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT5_ENABLE_Pos 5U /*!< PMU INTENSET: Event Counter 5 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT5_ENABLE_Msk (1UL << PMU_INTENSET_CNT5_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 5 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT6_ENABLE_Pos 6U /*!< PMU INTENSET: Event Counter 6 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT6_ENABLE_Msk (1UL << PMU_INTENSET_CNT6_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 6 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT7_ENABLE_Pos 7U /*!< PMU INTENSET: Event Counter 7 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT7_ENABLE_Msk (1UL << PMU_INTENSET_CNT7_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 7 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT8_ENABLE_Pos 8U /*!< PMU INTENSET: Event Counter 8 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT8_ENABLE_Msk (1UL << PMU_INTENSET_CNT8_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 8 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT9_ENABLE_Pos 9U /*!< PMU INTENSET: Event Counter 9 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT9_ENABLE_Msk (1UL << PMU_INTENSET_CNT9_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 9 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT10_ENABLE_Pos 10U /*!< PMU INTENSET: Event Counter 10 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT10_ENABLE_Msk (1UL << PMU_INTENSET_CNT10_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 10 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT11_ENABLE_Pos 11U /*!< PMU INTENSET: Event Counter 11 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT11_ENABLE_Msk (1UL << PMU_INTENSET_CNT11_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 11 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT12_ENABLE_Pos 12U /*!< PMU INTENSET: Event Counter 12 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT12_ENABLE_Msk (1UL << PMU_INTENSET_CNT12_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 12 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT13_ENABLE_Pos 13U /*!< PMU INTENSET: Event Counter 13 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT13_ENABLE_Msk (1UL << PMU_INTENSET_CNT13_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 13 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT14_ENABLE_Pos 14U /*!< PMU INTENSET: Event Counter 14 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT14_ENABLE_Msk (1UL << PMU_INTENSET_CNT14_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 14 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT15_ENABLE_Pos 15U /*!< PMU INTENSET: Event Counter 15 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT15_ENABLE_Msk (1UL << PMU_INTENSET_CNT15_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 15 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT16_ENABLE_Pos 16U /*!< PMU INTENSET: Event Counter 16 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT16_ENABLE_Msk (1UL << PMU_INTENSET_CNT16_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 16 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT17_ENABLE_Pos 17U /*!< PMU INTENSET: Event Counter 17 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT17_ENABLE_Msk (1UL << PMU_INTENSET_CNT17_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 17 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT18_ENABLE_Pos 18U /*!< PMU INTENSET: Event Counter 18 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT18_ENABLE_Msk (1UL << PMU_INTENSET_CNT18_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 18 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT19_ENABLE_Pos 19U /*!< PMU INTENSET: Event Counter 19 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT19_ENABLE_Msk (1UL << PMU_INTENSET_CNT19_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 19 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT20_ENABLE_Pos 20U /*!< PMU INTENSET: Event Counter 20 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT20_ENABLE_Msk (1UL << PMU_INTENSET_CNT20_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 20 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT21_ENABLE_Pos 21U /*!< PMU INTENSET: Event Counter 21 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT21_ENABLE_Msk (1UL << PMU_INTENSET_CNT21_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 21 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT22_ENABLE_Pos 22U /*!< PMU INTENSET: Event Counter 22 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT22_ENABLE_Msk (1UL << PMU_INTENSET_CNT22_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 22 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT23_ENABLE_Pos 23U /*!< PMU INTENSET: Event Counter 23 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT23_ENABLE_Msk (1UL << PMU_INTENSET_CNT23_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 23 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT24_ENABLE_Pos 24U /*!< PMU INTENSET: Event Counter 24 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT24_ENABLE_Msk (1UL << PMU_INTENSET_CNT24_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 24 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT25_ENABLE_Pos 25U /*!< PMU INTENSET: Event Counter 25 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT25_ENABLE_Msk (1UL << PMU_INTENSET_CNT25_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 25 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT26_ENABLE_Pos 26U /*!< PMU INTENSET: Event Counter 26 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT26_ENABLE_Msk (1UL << PMU_INTENSET_CNT26_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 26 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT27_ENABLE_Pos 27U /*!< PMU INTENSET: Event Counter 27 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT27_ENABLE_Msk (1UL << PMU_INTENSET_CNT27_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 27 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT28_ENABLE_Pos 28U /*!< PMU INTENSET: Event Counter 28 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT28_ENABLE_Msk (1UL << PMU_INTENSET_CNT28_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 28 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT29_ENABLE_Pos 29U /*!< PMU INTENSET: Event Counter 29 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT29_ENABLE_Msk (1UL << PMU_INTENSET_CNT29_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 29 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT30_ENABLE_Pos 30U /*!< PMU INTENSET: Event Counter 30 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT30_ENABLE_Msk (1UL << PMU_INTENSET_CNT30_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 30 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CYCCNT_ENABLE_Pos 31U /*!< PMU INTENSET: Cycle Counter Interrupt Enable Set Position */ +#define PMU_INTENSET_CCYCNT_ENABLE_Msk (1UL << PMU_INTENSET_CYCCNT_ENABLE_Pos) /*!< PMU INTENSET: Cycle Counter Interrupt Enable Set Mask */ + +/** \brief PMU Interrupt Enable Clear Register Definitions */ + +#define PMU_INTENSET_CNT0_ENABLE_Pos 0U /*!< PMU INTENCLR: Event Counter 0 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT0_ENABLE_Msk (1UL /*<< PMU_INTENCLR_CNT0_ENABLE_Pos*/) /*!< PMU INTENCLR: Event Counter 0 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT1_ENABLE_Pos 1U /*!< PMU INTENCLR: Event Counter 1 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT1_ENABLE_Msk (1UL << PMU_INTENCLR_CNT1_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 1 Interrupt Enable Clear */ + +#define PMU_INTENCLR_CNT2_ENABLE_Pos 2U /*!< PMU INTENCLR: Event Counter 2 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT2_ENABLE_Msk (1UL << PMU_INTENCLR_CNT2_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 2 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT3_ENABLE_Pos 3U /*!< PMU INTENCLR: Event Counter 3 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT3_ENABLE_Msk (1UL << PMU_INTENCLR_CNT3_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 3 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT4_ENABLE_Pos 4U /*!< PMU INTENCLR: Event Counter 4 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT4_ENABLE_Msk (1UL << PMU_INTENCLR_CNT4_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 4 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT5_ENABLE_Pos 5U /*!< PMU INTENCLR: Event Counter 5 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT5_ENABLE_Msk (1UL << PMU_INTENCLR_CNT5_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 5 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT6_ENABLE_Pos 6U /*!< PMU INTENCLR: Event Counter 6 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT6_ENABLE_Msk (1UL << PMU_INTENCLR_CNT6_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 6 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT7_ENABLE_Pos 7U /*!< PMU INTENCLR: Event Counter 7 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT7_ENABLE_Msk (1UL << PMU_INTENCLR_CNT7_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 7 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT8_ENABLE_Pos 8U /*!< PMU INTENCLR: Event Counter 8 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT8_ENABLE_Msk (1UL << PMU_INTENCLR_CNT8_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 8 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT9_ENABLE_Pos 9U /*!< PMU INTENCLR: Event Counter 9 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT9_ENABLE_Msk (1UL << PMU_INTENCLR_CNT9_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 9 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT10_ENABLE_Pos 10U /*!< PMU INTENCLR: Event Counter 10 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT10_ENABLE_Msk (1UL << PMU_INTENCLR_CNT10_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 10 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT11_ENABLE_Pos 11U /*!< PMU INTENCLR: Event Counter 11 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT11_ENABLE_Msk (1UL << PMU_INTENCLR_CNT11_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 11 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT12_ENABLE_Pos 12U /*!< PMU INTENCLR: Event Counter 12 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT12_ENABLE_Msk (1UL << PMU_INTENCLR_CNT12_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 12 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT13_ENABLE_Pos 13U /*!< PMU INTENCLR: Event Counter 13 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT13_ENABLE_Msk (1UL << PMU_INTENCLR_CNT13_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 13 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT14_ENABLE_Pos 14U /*!< PMU INTENCLR: Event Counter 14 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT14_ENABLE_Msk (1UL << PMU_INTENCLR_CNT14_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 14 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT15_ENABLE_Pos 15U /*!< PMU INTENCLR: Event Counter 15 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT15_ENABLE_Msk (1UL << PMU_INTENCLR_CNT15_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 15 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT16_ENABLE_Pos 16U /*!< PMU INTENCLR: Event Counter 16 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT16_ENABLE_Msk (1UL << PMU_INTENCLR_CNT16_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 16 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT17_ENABLE_Pos 17U /*!< PMU INTENCLR: Event Counter 17 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT17_ENABLE_Msk (1UL << PMU_INTENCLR_CNT17_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 17 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT18_ENABLE_Pos 18U /*!< PMU INTENCLR: Event Counter 18 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT18_ENABLE_Msk (1UL << PMU_INTENCLR_CNT18_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 18 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT19_ENABLE_Pos 19U /*!< PMU INTENCLR: Event Counter 19 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT19_ENABLE_Msk (1UL << PMU_INTENCLR_CNT19_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 19 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT20_ENABLE_Pos 20U /*!< PMU INTENCLR: Event Counter 20 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT20_ENABLE_Msk (1UL << PMU_INTENCLR_CNT20_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 20 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT21_ENABLE_Pos 21U /*!< PMU INTENCLR: Event Counter 21 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT21_ENABLE_Msk (1UL << PMU_INTENCLR_CNT21_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 21 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT22_ENABLE_Pos 22U /*!< PMU INTENCLR: Event Counter 22 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT22_ENABLE_Msk (1UL << PMU_INTENCLR_CNT22_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 22 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT23_ENABLE_Pos 23U /*!< PMU INTENCLR: Event Counter 23 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT23_ENABLE_Msk (1UL << PMU_INTENCLR_CNT23_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 23 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT24_ENABLE_Pos 24U /*!< PMU INTENCLR: Event Counter 24 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT24_ENABLE_Msk (1UL << PMU_INTENCLR_CNT24_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 24 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT25_ENABLE_Pos 25U /*!< PMU INTENCLR: Event Counter 25 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT25_ENABLE_Msk (1UL << PMU_INTENCLR_CNT25_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 25 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT26_ENABLE_Pos 26U /*!< PMU INTENCLR: Event Counter 26 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT26_ENABLE_Msk (1UL << PMU_INTENCLR_CNT26_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 26 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT27_ENABLE_Pos 27U /*!< PMU INTENCLR: Event Counter 27 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT27_ENABLE_Msk (1UL << PMU_INTENCLR_CNT27_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 27 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT28_ENABLE_Pos 28U /*!< PMU INTENCLR: Event Counter 28 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT28_ENABLE_Msk (1UL << PMU_INTENCLR_CNT28_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 28 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT29_ENABLE_Pos 29U /*!< PMU INTENCLR: Event Counter 29 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT29_ENABLE_Msk (1UL << PMU_INTENCLR_CNT29_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 29 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT30_ENABLE_Pos 30U /*!< PMU INTENCLR: Event Counter 30 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT30_ENABLE_Msk (1UL << PMU_INTENCLR_CNT30_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 30 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CYCCNT_ENABLE_Pos 31U /*!< PMU INTENCLR: Cycle Counter Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CYCCNT_ENABLE_Msk (1UL << PMU_INTENCLR_CYCCNT_ENABLE_Pos) /*!< PMU INTENCLR: Cycle Counter Interrupt Enable Clear Mask */ + +/** \brief PMU Overflow Flag Status Set Register Definitions */ + +#define PMU_OVSSET_CNT0_STATUS_Pos 0U /*!< PMU OVSSET: Event Counter 0 Overflow Set Position */ +#define PMU_OVSSET_CNT0_STATUS_Msk (1UL /*<< PMU_OVSSET_CNT0_STATUS_Pos*/) /*!< PMU OVSSET: Event Counter 0 Overflow Set Mask */ + +#define PMU_OVSSET_CNT1_STATUS_Pos 1U /*!< PMU OVSSET: Event Counter 1 Overflow Set Position */ +#define PMU_OVSSET_CNT1_STATUS_Msk (1UL << PMU_OVSSET_CNT1_STATUS_Pos) /*!< PMU OVSSET: Event Counter 1 Overflow Set Mask */ + +#define PMU_OVSSET_CNT2_STATUS_Pos 2U /*!< PMU OVSSET: Event Counter 2 Overflow Set Position */ +#define PMU_OVSSET_CNT2_STATUS_Msk (1UL << PMU_OVSSET_CNT2_STATUS_Pos) /*!< PMU OVSSET: Event Counter 2 Overflow Set Mask */ + +#define PMU_OVSSET_CNT3_STATUS_Pos 3U /*!< PMU OVSSET: Event Counter 3 Overflow Set Position */ +#define PMU_OVSSET_CNT3_STATUS_Msk (1UL << PMU_OVSSET_CNT3_STATUS_Pos) /*!< PMU OVSSET: Event Counter 3 Overflow Set Mask */ + +#define PMU_OVSSET_CNT4_STATUS_Pos 4U /*!< PMU OVSSET: Event Counter 4 Overflow Set Position */ +#define PMU_OVSSET_CNT4_STATUS_Msk (1UL << PMU_OVSSET_CNT4_STATUS_Pos) /*!< PMU OVSSET: Event Counter 4 Overflow Set Mask */ + +#define PMU_OVSSET_CNT5_STATUS_Pos 5U /*!< PMU OVSSET: Event Counter 5 Overflow Set Position */ +#define PMU_OVSSET_CNT5_STATUS_Msk (1UL << PMU_OVSSET_CNT5_STATUS_Pos) /*!< PMU OVSSET: Event Counter 5 Overflow Set Mask */ + +#define PMU_OVSSET_CNT6_STATUS_Pos 6U /*!< PMU OVSSET: Event Counter 6 Overflow Set Position */ +#define PMU_OVSSET_CNT6_STATUS_Msk (1UL << PMU_OVSSET_CNT6_STATUS_Pos) /*!< PMU OVSSET: Event Counter 6 Overflow Set Mask */ + +#define PMU_OVSSET_CNT7_STATUS_Pos 7U /*!< PMU OVSSET: Event Counter 7 Overflow Set Position */ +#define PMU_OVSSET_CNT7_STATUS_Msk (1UL << PMU_OVSSET_CNT7_STATUS_Pos) /*!< PMU OVSSET: Event Counter 7 Overflow Set Mask */ + +#define PMU_OVSSET_CNT8_STATUS_Pos 8U /*!< PMU OVSSET: Event Counter 8 Overflow Set Position */ +#define PMU_OVSSET_CNT8_STATUS_Msk (1UL << PMU_OVSSET_CNT8_STATUS_Pos) /*!< PMU OVSSET: Event Counter 8 Overflow Set Mask */ + +#define PMU_OVSSET_CNT9_STATUS_Pos 9U /*!< PMU OVSSET: Event Counter 9 Overflow Set Position */ +#define PMU_OVSSET_CNT9_STATUS_Msk (1UL << PMU_OVSSET_CNT9_STATUS_Pos) /*!< PMU OVSSET: Event Counter 9 Overflow Set Mask */ + +#define PMU_OVSSET_CNT10_STATUS_Pos 10U /*!< PMU OVSSET: Event Counter 10 Overflow Set Position */ +#define PMU_OVSSET_CNT10_STATUS_Msk (1UL << PMU_OVSSET_CNT10_STATUS_Pos) /*!< PMU OVSSET: Event Counter 10 Overflow Set Mask */ + +#define PMU_OVSSET_CNT11_STATUS_Pos 11U /*!< PMU OVSSET: Event Counter 11 Overflow Set Position */ +#define PMU_OVSSET_CNT11_STATUS_Msk (1UL << PMU_OVSSET_CNT11_STATUS_Pos) /*!< PMU OVSSET: Event Counter 11 Overflow Set Mask */ + +#define PMU_OVSSET_CNT12_STATUS_Pos 12U /*!< PMU OVSSET: Event Counter 12 Overflow Set Position */ +#define PMU_OVSSET_CNT12_STATUS_Msk (1UL << PMU_OVSSET_CNT12_STATUS_Pos) /*!< PMU OVSSET: Event Counter 12 Overflow Set Mask */ + +#define PMU_OVSSET_CNT13_STATUS_Pos 13U /*!< PMU OVSSET: Event Counter 13 Overflow Set Position */ +#define PMU_OVSSET_CNT13_STATUS_Msk (1UL << PMU_OVSSET_CNT13_STATUS_Pos) /*!< PMU OVSSET: Event Counter 13 Overflow Set Mask */ + +#define PMU_OVSSET_CNT14_STATUS_Pos 14U /*!< PMU OVSSET: Event Counter 14 Overflow Set Position */ +#define PMU_OVSSET_CNT14_STATUS_Msk (1UL << PMU_OVSSET_CNT14_STATUS_Pos) /*!< PMU OVSSET: Event Counter 14 Overflow Set Mask */ + +#define PMU_OVSSET_CNT15_STATUS_Pos 15U /*!< PMU OVSSET: Event Counter 15 Overflow Set Position */ +#define PMU_OVSSET_CNT15_STATUS_Msk (1UL << PMU_OVSSET_CNT15_STATUS_Pos) /*!< PMU OVSSET: Event Counter 15 Overflow Set Mask */ + +#define PMU_OVSSET_CNT16_STATUS_Pos 16U /*!< PMU OVSSET: Event Counter 16 Overflow Set Position */ +#define PMU_OVSSET_CNT16_STATUS_Msk (1UL << PMU_OVSSET_CNT16_STATUS_Pos) /*!< PMU OVSSET: Event Counter 16 Overflow Set Mask */ + +#define PMU_OVSSET_CNT17_STATUS_Pos 17U /*!< PMU OVSSET: Event Counter 17 Overflow Set Position */ +#define PMU_OVSSET_CNT17_STATUS_Msk (1UL << PMU_OVSSET_CNT17_STATUS_Pos) /*!< PMU OVSSET: Event Counter 17 Overflow Set Mask */ + +#define PMU_OVSSET_CNT18_STATUS_Pos 18U /*!< PMU OVSSET: Event Counter 18 Overflow Set Position */ +#define PMU_OVSSET_CNT18_STATUS_Msk (1UL << PMU_OVSSET_CNT18_STATUS_Pos) /*!< PMU OVSSET: Event Counter 18 Overflow Set Mask */ + +#define PMU_OVSSET_CNT19_STATUS_Pos 19U /*!< PMU OVSSET: Event Counter 19 Overflow Set Position */ +#define PMU_OVSSET_CNT19_STATUS_Msk (1UL << PMU_OVSSET_CNT19_STATUS_Pos) /*!< PMU OVSSET: Event Counter 19 Overflow Set Mask */ + +#define PMU_OVSSET_CNT20_STATUS_Pos 20U /*!< PMU OVSSET: Event Counter 20 Overflow Set Position */ +#define PMU_OVSSET_CNT20_STATUS_Msk (1UL << PMU_OVSSET_CNT20_STATUS_Pos) /*!< PMU OVSSET: Event Counter 20 Overflow Set Mask */ + +#define PMU_OVSSET_CNT21_STATUS_Pos 21U /*!< PMU OVSSET: Event Counter 21 Overflow Set Position */ +#define PMU_OVSSET_CNT21_STATUS_Msk (1UL << PMU_OVSSET_CNT21_STATUS_Pos) /*!< PMU OVSSET: Event Counter 21 Overflow Set Mask */ + +#define PMU_OVSSET_CNT22_STATUS_Pos 22U /*!< PMU OVSSET: Event Counter 22 Overflow Set Position */ +#define PMU_OVSSET_CNT22_STATUS_Msk (1UL << PMU_OVSSET_CNT22_STATUS_Pos) /*!< PMU OVSSET: Event Counter 22 Overflow Set Mask */ + +#define PMU_OVSSET_CNT23_STATUS_Pos 23U /*!< PMU OVSSET: Event Counter 23 Overflow Set Position */ +#define PMU_OVSSET_CNT23_STATUS_Msk (1UL << PMU_OVSSET_CNT23_STATUS_Pos) /*!< PMU OVSSET: Event Counter 23 Overflow Set Mask */ + +#define PMU_OVSSET_CNT24_STATUS_Pos 24U /*!< PMU OVSSET: Event Counter 24 Overflow Set Position */ +#define PMU_OVSSET_CNT24_STATUS_Msk (1UL << PMU_OVSSET_CNT24_STATUS_Pos) /*!< PMU OVSSET: Event Counter 24 Overflow Set Mask */ + +#define PMU_OVSSET_CNT25_STATUS_Pos 25U /*!< PMU OVSSET: Event Counter 25 Overflow Set Position */ +#define PMU_OVSSET_CNT25_STATUS_Msk (1UL << PMU_OVSSET_CNT25_STATUS_Pos) /*!< PMU OVSSET: Event Counter 25 Overflow Set Mask */ + +#define PMU_OVSSET_CNT26_STATUS_Pos 26U /*!< PMU OVSSET: Event Counter 26 Overflow Set Position */ +#define PMU_OVSSET_CNT26_STATUS_Msk (1UL << PMU_OVSSET_CNT26_STATUS_Pos) /*!< PMU OVSSET: Event Counter 26 Overflow Set Mask */ + +#define PMU_OVSSET_CNT27_STATUS_Pos 27U /*!< PMU OVSSET: Event Counter 27 Overflow Set Position */ +#define PMU_OVSSET_CNT27_STATUS_Msk (1UL << PMU_OVSSET_CNT27_STATUS_Pos) /*!< PMU OVSSET: Event Counter 27 Overflow Set Mask */ + +#define PMU_OVSSET_CNT28_STATUS_Pos 28U /*!< PMU OVSSET: Event Counter 28 Overflow Set Position */ +#define PMU_OVSSET_CNT28_STATUS_Msk (1UL << PMU_OVSSET_CNT28_STATUS_Pos) /*!< PMU OVSSET: Event Counter 28 Overflow Set Mask */ + +#define PMU_OVSSET_CNT29_STATUS_Pos 29U /*!< PMU OVSSET: Event Counter 29 Overflow Set Position */ +#define PMU_OVSSET_CNT29_STATUS_Msk (1UL << PMU_OVSSET_CNT29_STATUS_Pos) /*!< PMU OVSSET: Event Counter 29 Overflow Set Mask */ + +#define PMU_OVSSET_CNT30_STATUS_Pos 30U /*!< PMU OVSSET: Event Counter 30 Overflow Set Position */ +#define PMU_OVSSET_CNT30_STATUS_Msk (1UL << PMU_OVSSET_CNT30_STATUS_Pos) /*!< PMU OVSSET: Event Counter 30 Overflow Set Mask */ + +#define PMU_OVSSET_CYCCNT_STATUS_Pos 31U /*!< PMU OVSSET: Cycle Counter Overflow Set Position */ +#define PMU_OVSSET_CYCCNT_STATUS_Msk (1UL << PMU_OVSSET_CYCCNT_STATUS_Pos) /*!< PMU OVSSET: Cycle Counter Overflow Set Mask */ + +/** \brief PMU Overflow Flag Status Clear Register Definitions */ + +#define PMU_OVSCLR_CNT0_STATUS_Pos 0U /*!< PMU OVSCLR: Event Counter 0 Overflow Clear Position */ +#define PMU_OVSCLR_CNT0_STATUS_Msk (1UL /*<< PMU_OVSCLR_CNT0_STATUS_Pos*/) /*!< PMU OVSCLR: Event Counter 0 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT1_STATUS_Pos 1U /*!< PMU OVSCLR: Event Counter 1 Overflow Clear Position */ +#define PMU_OVSCLR_CNT1_STATUS_Msk (1UL << PMU_OVSCLR_CNT1_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 1 Overflow Clear */ + +#define PMU_OVSCLR_CNT2_STATUS_Pos 2U /*!< PMU OVSCLR: Event Counter 2 Overflow Clear Position */ +#define PMU_OVSCLR_CNT2_STATUS_Msk (1UL << PMU_OVSCLR_CNT2_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 2 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT3_STATUS_Pos 3U /*!< PMU OVSCLR: Event Counter 3 Overflow Clear Position */ +#define PMU_OVSCLR_CNT3_STATUS_Msk (1UL << PMU_OVSCLR_CNT3_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 3 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT4_STATUS_Pos 4U /*!< PMU OVSCLR: Event Counter 4 Overflow Clear Position */ +#define PMU_OVSCLR_CNT4_STATUS_Msk (1UL << PMU_OVSCLR_CNT4_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 4 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT5_STATUS_Pos 5U /*!< PMU OVSCLR: Event Counter 5 Overflow Clear Position */ +#define PMU_OVSCLR_CNT5_STATUS_Msk (1UL << PMU_OVSCLR_CNT5_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 5 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT6_STATUS_Pos 6U /*!< PMU OVSCLR: Event Counter 6 Overflow Clear Position */ +#define PMU_OVSCLR_CNT6_STATUS_Msk (1UL << PMU_OVSCLR_CNT6_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 6 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT7_STATUS_Pos 7U /*!< PMU OVSCLR: Event Counter 7 Overflow Clear Position */ +#define PMU_OVSCLR_CNT7_STATUS_Msk (1UL << PMU_OVSCLR_CNT7_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 7 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT8_STATUS_Pos 8U /*!< PMU OVSCLR: Event Counter 8 Overflow Clear Position */ +#define PMU_OVSCLR_CNT8_STATUS_Msk (1UL << PMU_OVSCLR_CNT8_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 8 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT9_STATUS_Pos 9U /*!< PMU OVSCLR: Event Counter 9 Overflow Clear Position */ +#define PMU_OVSCLR_CNT9_STATUS_Msk (1UL << PMU_OVSCLR_CNT9_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 9 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT10_STATUS_Pos 10U /*!< PMU OVSCLR: Event Counter 10 Overflow Clear Position */ +#define PMU_OVSCLR_CNT10_STATUS_Msk (1UL << PMU_OVSCLR_CNT10_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 10 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT11_STATUS_Pos 11U /*!< PMU OVSCLR: Event Counter 11 Overflow Clear Position */ +#define PMU_OVSCLR_CNT11_STATUS_Msk (1UL << PMU_OVSCLR_CNT11_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 11 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT12_STATUS_Pos 12U /*!< PMU OVSCLR: Event Counter 12 Overflow Clear Position */ +#define PMU_OVSCLR_CNT12_STATUS_Msk (1UL << PMU_OVSCLR_CNT12_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 12 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT13_STATUS_Pos 13U /*!< PMU OVSCLR: Event Counter 13 Overflow Clear Position */ +#define PMU_OVSCLR_CNT13_STATUS_Msk (1UL << PMU_OVSCLR_CNT13_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 13 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT14_STATUS_Pos 14U /*!< PMU OVSCLR: Event Counter 14 Overflow Clear Position */ +#define PMU_OVSCLR_CNT14_STATUS_Msk (1UL << PMU_OVSCLR_CNT14_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 14 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT15_STATUS_Pos 15U /*!< PMU OVSCLR: Event Counter 15 Overflow Clear Position */ +#define PMU_OVSCLR_CNT15_STATUS_Msk (1UL << PMU_OVSCLR_CNT15_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 15 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT16_STATUS_Pos 16U /*!< PMU OVSCLR: Event Counter 16 Overflow Clear Position */ +#define PMU_OVSCLR_CNT16_STATUS_Msk (1UL << PMU_OVSCLR_CNT16_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 16 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT17_STATUS_Pos 17U /*!< PMU OVSCLR: Event Counter 17 Overflow Clear Position */ +#define PMU_OVSCLR_CNT17_STATUS_Msk (1UL << PMU_OVSCLR_CNT17_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 17 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT18_STATUS_Pos 18U /*!< PMU OVSCLR: Event Counter 18 Overflow Clear Position */ +#define PMU_OVSCLR_CNT18_STATUS_Msk (1UL << PMU_OVSCLR_CNT18_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 18 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT19_STATUS_Pos 19U /*!< PMU OVSCLR: Event Counter 19 Overflow Clear Position */ +#define PMU_OVSCLR_CNT19_STATUS_Msk (1UL << PMU_OVSCLR_CNT19_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 19 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT20_STATUS_Pos 20U /*!< PMU OVSCLR: Event Counter 20 Overflow Clear Position */ +#define PMU_OVSCLR_CNT20_STATUS_Msk (1UL << PMU_OVSCLR_CNT20_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 20 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT21_STATUS_Pos 21U /*!< PMU OVSCLR: Event Counter 21 Overflow Clear Position */ +#define PMU_OVSCLR_CNT21_STATUS_Msk (1UL << PMU_OVSCLR_CNT21_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 21 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT22_STATUS_Pos 22U /*!< PMU OVSCLR: Event Counter 22 Overflow Clear Position */ +#define PMU_OVSCLR_CNT22_STATUS_Msk (1UL << PMU_OVSCLR_CNT22_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 22 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT23_STATUS_Pos 23U /*!< PMU OVSCLR: Event Counter 23 Overflow Clear Position */ +#define PMU_OVSCLR_CNT23_STATUS_Msk (1UL << PMU_OVSCLR_CNT23_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 23 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT24_STATUS_Pos 24U /*!< PMU OVSCLR: Event Counter 24 Overflow Clear Position */ +#define PMU_OVSCLR_CNT24_STATUS_Msk (1UL << PMU_OVSCLR_CNT24_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 24 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT25_STATUS_Pos 25U /*!< PMU OVSCLR: Event Counter 25 Overflow Clear Position */ +#define PMU_OVSCLR_CNT25_STATUS_Msk (1UL << PMU_OVSCLR_CNT25_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 25 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT26_STATUS_Pos 26U /*!< PMU OVSCLR: Event Counter 26 Overflow Clear Position */ +#define PMU_OVSCLR_CNT26_STATUS_Msk (1UL << PMU_OVSCLR_CNT26_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 26 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT27_STATUS_Pos 27U /*!< PMU OVSCLR: Event Counter 27 Overflow Clear Position */ +#define PMU_OVSCLR_CNT27_STATUS_Msk (1UL << PMU_OVSCLR_CNT27_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 27 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT28_STATUS_Pos 28U /*!< PMU OVSCLR: Event Counter 28 Overflow Clear Position */ +#define PMU_OVSCLR_CNT28_STATUS_Msk (1UL << PMU_OVSCLR_CNT28_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 28 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT29_STATUS_Pos 29U /*!< PMU OVSCLR: Event Counter 29 Overflow Clear Position */ +#define PMU_OVSCLR_CNT29_STATUS_Msk (1UL << PMU_OVSCLR_CNT29_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 29 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT30_STATUS_Pos 30U /*!< PMU OVSCLR: Event Counter 30 Overflow Clear Position */ +#define PMU_OVSCLR_CNT30_STATUS_Msk (1UL << PMU_OVSCLR_CNT30_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 30 Overflow Clear Mask */ + +#define PMU_OVSCLR_CYCCNT_STATUS_Pos 31U /*!< PMU OVSCLR: Cycle Counter Overflow Clear Position */ +#define PMU_OVSCLR_CYCCNT_STATUS_Msk (1UL << PMU_OVSCLR_CYCCNT_STATUS_Pos) /*!< PMU OVSCLR: Cycle Counter Overflow Clear Mask */ + +/** \brief PMU Software Increment Counter */ + +#define PMU_SWINC_CNT0_Pos 0U /*!< PMU SWINC: Event Counter 0 Software Increment Position */ +#define PMU_SWINC_CNT0_Msk (1UL /*<< PMU_SWINC_CNT0_Pos */) /*!< PMU SWINC: Event Counter 0 Software Increment Mask */ + +#define PMU_SWINC_CNT1_Pos 1U /*!< PMU SWINC: Event Counter 1 Software Increment Position */ +#define PMU_SWINC_CNT1_Msk (1UL << PMU_SWINC_CNT1_Pos) /*!< PMU SWINC: Event Counter 1 Software Increment Mask */ + +#define PMU_SWINC_CNT2_Pos 2U /*!< PMU SWINC: Event Counter 2 Software Increment Position */ +#define PMU_SWINC_CNT2_Msk (1UL << PMU_SWINC_CNT2_Pos) /*!< PMU SWINC: Event Counter 2 Software Increment Mask */ + +#define PMU_SWINC_CNT3_Pos 3U /*!< PMU SWINC: Event Counter 3 Software Increment Position */ +#define PMU_SWINC_CNT3_Msk (1UL << PMU_SWINC_CNT3_Pos) /*!< PMU SWINC: Event Counter 3 Software Increment Mask */ + +#define PMU_SWINC_CNT4_Pos 4U /*!< PMU SWINC: Event Counter 4 Software Increment Position */ +#define PMU_SWINC_CNT4_Msk (1UL << PMU_SWINC_CNT4_Pos) /*!< PMU SWINC: Event Counter 4 Software Increment Mask */ + +#define PMU_SWINC_CNT5_Pos 5U /*!< PMU SWINC: Event Counter 5 Software Increment Position */ +#define PMU_SWINC_CNT5_Msk (1UL << PMU_SWINC_CNT5_Pos) /*!< PMU SWINC: Event Counter 5 Software Increment Mask */ + +#define PMU_SWINC_CNT6_Pos 6U /*!< PMU SWINC: Event Counter 6 Software Increment Position */ +#define PMU_SWINC_CNT6_Msk (1UL << PMU_SWINC_CNT6_Pos) /*!< PMU SWINC: Event Counter 6 Software Increment Mask */ + +#define PMU_SWINC_CNT7_Pos 7U /*!< PMU SWINC: Event Counter 7 Software Increment Position */ +#define PMU_SWINC_CNT7_Msk (1UL << PMU_SWINC_CNT7_Pos) /*!< PMU SWINC: Event Counter 7 Software Increment Mask */ + +#define PMU_SWINC_CNT8_Pos 8U /*!< PMU SWINC: Event Counter 8 Software Increment Position */ +#define PMU_SWINC_CNT8_Msk (1UL << PMU_SWINC_CNT8_Pos) /*!< PMU SWINC: Event Counter 8 Software Increment Mask */ + +#define PMU_SWINC_CNT9_Pos 9U /*!< PMU SWINC: Event Counter 9 Software Increment Position */ +#define PMU_SWINC_CNT9_Msk (1UL << PMU_SWINC_CNT9_Pos) /*!< PMU SWINC: Event Counter 9 Software Increment Mask */ + +#define PMU_SWINC_CNT10_Pos 10U /*!< PMU SWINC: Event Counter 10 Software Increment Position */ +#define PMU_SWINC_CNT10_Msk (1UL << PMU_SWINC_CNT10_Pos) /*!< PMU SWINC: Event Counter 10 Software Increment Mask */ + +#define PMU_SWINC_CNT11_Pos 11U /*!< PMU SWINC: Event Counter 11 Software Increment Position */ +#define PMU_SWINC_CNT11_Msk (1UL << PMU_SWINC_CNT11_Pos) /*!< PMU SWINC: Event Counter 11 Software Increment Mask */ + +#define PMU_SWINC_CNT12_Pos 12U /*!< PMU SWINC: Event Counter 12 Software Increment Position */ +#define PMU_SWINC_CNT12_Msk (1UL << PMU_SWINC_CNT12_Pos) /*!< PMU SWINC: Event Counter 12 Software Increment Mask */ + +#define PMU_SWINC_CNT13_Pos 13U /*!< PMU SWINC: Event Counter 13 Software Increment Position */ +#define PMU_SWINC_CNT13_Msk (1UL << PMU_SWINC_CNT13_Pos) /*!< PMU SWINC: Event Counter 13 Software Increment Mask */ + +#define PMU_SWINC_CNT14_Pos 14U /*!< PMU SWINC: Event Counter 14 Software Increment Position */ +#define PMU_SWINC_CNT14_Msk (1UL << PMU_SWINC_CNT14_Pos) /*!< PMU SWINC: Event Counter 14 Software Increment Mask */ + +#define PMU_SWINC_CNT15_Pos 15U /*!< PMU SWINC: Event Counter 15 Software Increment Position */ +#define PMU_SWINC_CNT15_Msk (1UL << PMU_SWINC_CNT15_Pos) /*!< PMU SWINC: Event Counter 15 Software Increment Mask */ + +#define PMU_SWINC_CNT16_Pos 16U /*!< PMU SWINC: Event Counter 16 Software Increment Position */ +#define PMU_SWINC_CNT16_Msk (1UL << PMU_SWINC_CNT16_Pos) /*!< PMU SWINC: Event Counter 16 Software Increment Mask */ + +#define PMU_SWINC_CNT17_Pos 17U /*!< PMU SWINC: Event Counter 17 Software Increment Position */ +#define PMU_SWINC_CNT17_Msk (1UL << PMU_SWINC_CNT17_Pos) /*!< PMU SWINC: Event Counter 17 Software Increment Mask */ + +#define PMU_SWINC_CNT18_Pos 18U /*!< PMU SWINC: Event Counter 18 Software Increment Position */ +#define PMU_SWINC_CNT18_Msk (1UL << PMU_SWINC_CNT18_Pos) /*!< PMU SWINC: Event Counter 18 Software Increment Mask */ + +#define PMU_SWINC_CNT19_Pos 19U /*!< PMU SWINC: Event Counter 19 Software Increment Position */ +#define PMU_SWINC_CNT19_Msk (1UL << PMU_SWINC_CNT19_Pos) /*!< PMU SWINC: Event Counter 19 Software Increment Mask */ + +#define PMU_SWINC_CNT20_Pos 20U /*!< PMU SWINC: Event Counter 20 Software Increment Position */ +#define PMU_SWINC_CNT20_Msk (1UL << PMU_SWINC_CNT20_Pos) /*!< PMU SWINC: Event Counter 20 Software Increment Mask */ + +#define PMU_SWINC_CNT21_Pos 21U /*!< PMU SWINC: Event Counter 21 Software Increment Position */ +#define PMU_SWINC_CNT21_Msk (1UL << PMU_SWINC_CNT21_Pos) /*!< PMU SWINC: Event Counter 21 Software Increment Mask */ + +#define PMU_SWINC_CNT22_Pos 22U /*!< PMU SWINC: Event Counter 22 Software Increment Position */ +#define PMU_SWINC_CNT22_Msk (1UL << PMU_SWINC_CNT22_Pos) /*!< PMU SWINC: Event Counter 22 Software Increment Mask */ + +#define PMU_SWINC_CNT23_Pos 23U /*!< PMU SWINC: Event Counter 23 Software Increment Position */ +#define PMU_SWINC_CNT23_Msk (1UL << PMU_SWINC_CNT23_Pos) /*!< PMU SWINC: Event Counter 23 Software Increment Mask */ + +#define PMU_SWINC_CNT24_Pos 24U /*!< PMU SWINC: Event Counter 24 Software Increment Position */ +#define PMU_SWINC_CNT24_Msk (1UL << PMU_SWINC_CNT24_Pos) /*!< PMU SWINC: Event Counter 24 Software Increment Mask */ + +#define PMU_SWINC_CNT25_Pos 25U /*!< PMU SWINC: Event Counter 25 Software Increment Position */ +#define PMU_SWINC_CNT25_Msk (1UL << PMU_SWINC_CNT25_Pos) /*!< PMU SWINC: Event Counter 25 Software Increment Mask */ + +#define PMU_SWINC_CNT26_Pos 26U /*!< PMU SWINC: Event Counter 26 Software Increment Position */ +#define PMU_SWINC_CNT26_Msk (1UL << PMU_SWINC_CNT26_Pos) /*!< PMU SWINC: Event Counter 26 Software Increment Mask */ + +#define PMU_SWINC_CNT27_Pos 27U /*!< PMU SWINC: Event Counter 27 Software Increment Position */ +#define PMU_SWINC_CNT27_Msk (1UL << PMU_SWINC_CNT27_Pos) /*!< PMU SWINC: Event Counter 27 Software Increment Mask */ + +#define PMU_SWINC_CNT28_Pos 28U /*!< PMU SWINC: Event Counter 28 Software Increment Position */ +#define PMU_SWINC_CNT28_Msk (1UL << PMU_SWINC_CNT28_Pos) /*!< PMU SWINC: Event Counter 28 Software Increment Mask */ + +#define PMU_SWINC_CNT29_Pos 29U /*!< PMU SWINC: Event Counter 29 Software Increment Position */ +#define PMU_SWINC_CNT29_Msk (1UL << PMU_SWINC_CNT29_Pos) /*!< PMU SWINC: Event Counter 29 Software Increment Mask */ + +#define PMU_SWINC_CNT30_Pos 30U /*!< PMU SWINC: Event Counter 30 Software Increment Position */ +#define PMU_SWINC_CNT30_Msk (1UL << PMU_SWINC_CNT30_Pos) /*!< PMU SWINC: Event Counter 30 Software Increment Mask */ + +/** \brief PMU Control Register Definitions */ + +#define PMU_CTRL_ENABLE_Pos 0U /*!< PMU CTRL: ENABLE Position */ +#define PMU_CTRL_ENABLE_Msk (1UL /*<< PMU_CTRL_ENABLE_Pos*/) /*!< PMU CTRL: ENABLE Mask */ + +#define PMU_CTRL_EVENTCNT_RESET_Pos 1U /*!< PMU CTRL: Event Counter Reset Position */ +#define PMU_CTRL_EVENTCNT_RESET_Msk (1UL << PMU_CTRL_EVENTCNT_RESET_Pos) /*!< PMU CTRL: Event Counter Reset Mask */ + +#define PMU_CTRL_CYCCNT_RESET_Pos 2U /*!< PMU CTRL: Cycle Counter Reset Position */ +#define PMU_CTRL_CYCCNT_RESET_Msk (1UL << PMU_CTRL_CYCCNT_RESET_Pos) /*!< PMU CTRL: Cycle Counter Reset Mask */ + +#define PMU_CTRL_CYCCNT_DISABLE_Pos 5U /*!< PMU CTRL: Disable Cycle Counter Position */ +#define PMU_CTRL_CYCCNT_DISABLE_Msk (1UL << PMU_CTRL_CYCCNT_DISABLE_Pos) /*!< PMU CTRL: Disable Cycle Counter Mask */ + +#define PMU_CTRL_FRZ_ON_OV_Pos 9U /*!< PMU CTRL: Freeze-on-overflow Position */ +#define PMU_CTRL_FRZ_ON_OV_Msk (1UL << PMU_CTRL_FRZ_ON_OVERFLOW_Pos) /*!< PMU CTRL: Freeze-on-overflow Mask */ + +#define PMU_CTRL_TRACE_ON_OV_Pos 11U /*!< PMU CTRL: Trace-on-overflow Position */ +#define PMU_CTRL_TRACE_ON_OV_Msk (1UL << PMU_CTRL_TRACE_ON_OVERFLOW_Pos) /*!< PMU CTRL: Trace-on-overflow Mask */ + +/** \brief PMU Type Register Definitions */ + +#define PMU_TYPE_NUM_CNTS_Pos 0U /*!< PMU TYPE: Number of Counters Position */ +#define PMU_TYPE_NUM_CNTS_Msk (0xFFUL /*<< PMU_TYPE_NUM_CNTS_Pos*/) /*!< PMU TYPE: Number of Counters Mask */ + +#define PMU_TYPE_SIZE_CNTS_Pos 8U /*!< PMU TYPE: Size of Counters Position */ +#define PMU_TYPE_SIZE_CNTS_Msk (0x3FUL << PMU_TYPE_SIZE_CNTS_Pos) /*!< PMU TYPE: Size of Counters Mask */ + +#define PMU_TYPE_CYCCNT_PRESENT_Pos 14U /*!< PMU TYPE: Cycle Counter Present Position */ +#define PMU_TYPE_CYCCNT_PRESENT_Msk (1UL << PMU_TYPE_CYCCNT_PRESENT_Pos) /*!< PMU TYPE: Cycle Counter Present Mask */ + +#define PMU_TYPE_FRZ_OV_SUPPORT_Pos 21U /*!< PMU TYPE: Freeze-on-overflow Support Position */ +#define PMU_TYPE_FRZ_OV_SUPPORT_Msk (1UL << PMU_TYPE_FRZ_OV_SUPPORT_Pos) /*!< PMU TYPE: Freeze-on-overflow Support Mask */ + +#define PMU_TYPE_TRACE_ON_OV_SUPPORT_Pos 23U /*!< PMU TYPE: Trace-on-overflow Support Position */ +#define PMU_TYPE_TRACE_ON_OV_SUPPORT_Msk (1UL << PMU_TYPE_FRZ_OV_SUPPORT_Pos) /*!< PMU TYPE: Trace-on-overflow Support Mask */ + +/** \brief PMU Authentication Status Register Definitions */ + +#define PMU_AUTHSTATUS_NSID_Pos 0U /*!< PMU AUTHSTATUS: Non-secure Invasive Debug Position */ +#define PMU_AUTHSTATUS_NSID_Msk (0x3UL /*<< PMU_AUTHSTATUS_NSID_Pos*/) /*!< PMU AUTHSTATUS: Non-secure Invasive Debug Mask */ + +#define PMU_AUTHSTATUS_NSNID_Pos 2U /*!< PMU AUTHSTATUS: Non-secure Non-invasive Debug Position */ +#define PMU_AUTHSTATUS_NSNID_Msk (0x3UL << PMU_AUTHSTATUS_NSNID_Pos) /*!< PMU AUTHSTATUS: Non-secure Non-invasive Debug Mask */ + +#define PMU_AUTHSTATUS_SID_Pos 4U /*!< PMU AUTHSTATUS: Secure Invasive Debug Position */ +#define PMU_AUTHSTATUS_SID_Msk (0x3UL << PMU_AUTHSTATUS_SID_Pos) /*!< PMU AUTHSTATUS: Secure Invasive Debug Mask */ + +#define PMU_AUTHSTATUS_SNID_Pos 6U /*!< PMU AUTHSTATUS: Secure Non-invasive Debug Position */ +#define PMU_AUTHSTATUS_SNID_Msk (0x3UL << PMU_AUTHSTATUS_SNID_Pos) /*!< PMU AUTHSTATUS: Secure Non-invasive Debug Mask */ + +#define PMU_AUTHSTATUS_NSUID_Pos 16U /*!< PMU AUTHSTATUS: Non-secure Unprivileged Invasive Debug Position */ +#define PMU_AUTHSTATUS_NSUID_Msk (0x3UL << PMU_AUTHSTATUS_NSUID_Pos) /*!< PMU AUTHSTATUS: Non-secure Unprivileged Invasive Debug Mask */ + +#define PMU_AUTHSTATUS_NSUNID_Pos 18U /*!< PMU AUTHSTATUS: Non-secure Unprivileged Non-invasive Debug Position */ +#define PMU_AUTHSTATUS_NSUNID_Msk (0x3UL << PMU_AUTHSTATUS_NSUNID_Pos) /*!< PMU AUTHSTATUS: Non-secure Unprivileged Non-invasive Debug Mask */ + +#define PMU_AUTHSTATUS_SUID_Pos 20U /*!< PMU AUTHSTATUS: Secure Unprivileged Invasive Debug Position */ +#define PMU_AUTHSTATUS_SUID_Msk (0x3UL << PMU_AUTHSTATUS_SUID_Pos) /*!< PMU AUTHSTATUS: Secure Unprivileged Invasive Debug Mask */ + +#define PMU_AUTHSTATUS_SUNID_Pos 22U /*!< PMU AUTHSTATUS: Secure Unprivileged Non-invasive Debug Position */ +#define PMU_AUTHSTATUS_SUNID_Msk (0x3UL << PMU_AUTHSTATUS_SUNID_Pos) /*!< PMU AUTHSTATUS: Secure Unprivileged Non-invasive Debug Mask */ + +/*@} end of group CMSIS_PMU */ +#endif + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_MPU Memory Protection Unit (MPU) + \brief Type definitions for the Memory Protection Unit (MPU) + @{ + */ + +/** + \brief Structure type to access the Memory Protection Unit (MPU). + */ +typedef struct +{ + __IM uint32_t TYPE; /*!< Offset: 0x000 (R/ ) MPU Type Register */ + __IOM uint32_t CTRL; /*!< Offset: 0x004 (R/W) MPU Control Register */ + __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) MPU Region Number Register */ + __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) MPU Region Base Address Register */ + __IOM uint32_t RLAR; /*!< Offset: 0x010 (R/W) MPU Region Limit Address Register */ + __IOM uint32_t RBAR_A1; /*!< Offset: 0x014 (R/W) MPU Region Base Address Register Alias 1 */ + __IOM uint32_t RLAR_A1; /*!< Offset: 0x018 (R/W) MPU Region Limit Address Register Alias 1 */ + __IOM uint32_t RBAR_A2; /*!< Offset: 0x01C (R/W) MPU Region Base Address Register Alias 2 */ + __IOM uint32_t RLAR_A2; /*!< Offset: 0x020 (R/W) MPU Region Limit Address Register Alias 2 */ + __IOM uint32_t RBAR_A3; /*!< Offset: 0x024 (R/W) MPU Region Base Address Register Alias 3 */ + __IOM uint32_t RLAR_A3; /*!< Offset: 0x028 (R/W) MPU Region Limit Address Register Alias 3 */ + uint32_t RESERVED0[1]; + union { + __IOM uint32_t MAIR[2]; + struct { + __IOM uint32_t MAIR0; /*!< Offset: 0x030 (R/W) MPU Memory Attribute Indirection Register 0 */ + __IOM uint32_t MAIR1; /*!< Offset: 0x034 (R/W) MPU Memory Attribute Indirection Register 1 */ + }; + }; +} MPU_Type; + +#define MPU_TYPE_RALIASES 4U + +/* MPU Type Register Definitions */ +#define MPU_TYPE_IREGION_Pos 16U /*!< MPU TYPE: IREGION Position */ +#define MPU_TYPE_IREGION_Msk (0xFFUL << MPU_TYPE_IREGION_Pos) /*!< MPU TYPE: IREGION Mask */ + +#define MPU_TYPE_DREGION_Pos 8U /*!< MPU TYPE: DREGION Position */ +#define MPU_TYPE_DREGION_Msk (0xFFUL << MPU_TYPE_DREGION_Pos) /*!< MPU TYPE: DREGION Mask */ + +#define MPU_TYPE_SEPARATE_Pos 0U /*!< MPU TYPE: SEPARATE Position */ +#define MPU_TYPE_SEPARATE_Msk (1UL /*<< MPU_TYPE_SEPARATE_Pos*/) /*!< MPU TYPE: SEPARATE Mask */ + +/* MPU Control Register Definitions */ +#define MPU_CTRL_PRIVDEFENA_Pos 2U /*!< MPU CTRL: PRIVDEFENA Position */ +#define MPU_CTRL_PRIVDEFENA_Msk (1UL << MPU_CTRL_PRIVDEFENA_Pos) /*!< MPU CTRL: PRIVDEFENA Mask */ + +#define MPU_CTRL_HFNMIENA_Pos 1U /*!< MPU CTRL: HFNMIENA Position */ +#define MPU_CTRL_HFNMIENA_Msk (1UL << MPU_CTRL_HFNMIENA_Pos) /*!< MPU CTRL: HFNMIENA Mask */ + +#define MPU_CTRL_ENABLE_Pos 0U /*!< MPU CTRL: ENABLE Position */ +#define MPU_CTRL_ENABLE_Msk (1UL /*<< MPU_CTRL_ENABLE_Pos*/) /*!< MPU CTRL: ENABLE Mask */ + +/* MPU Region Number Register Definitions */ +#define MPU_RNR_REGION_Pos 0U /*!< MPU RNR: REGION Position */ +#define MPU_RNR_REGION_Msk (0xFFUL /*<< MPU_RNR_REGION_Pos*/) /*!< MPU RNR: REGION Mask */ + +/* MPU Region Base Address Register Definitions */ +#define MPU_RBAR_BASE_Pos 5U /*!< MPU RBAR: BASE Position */ +#define MPU_RBAR_BASE_Msk (0x7FFFFFFUL << MPU_RBAR_BASE_Pos) /*!< MPU RBAR: BASE Mask */ + +#define MPU_RBAR_SH_Pos 3U /*!< MPU RBAR: SH Position */ +#define MPU_RBAR_SH_Msk (0x3UL << MPU_RBAR_SH_Pos) /*!< MPU RBAR: SH Mask */ + +#define MPU_RBAR_AP_Pos 1U /*!< MPU RBAR: AP Position */ +#define MPU_RBAR_AP_Msk (0x3UL << MPU_RBAR_AP_Pos) /*!< MPU RBAR: AP Mask */ + +#define MPU_RBAR_XN_Pos 0U /*!< MPU RBAR: XN Position */ +#define MPU_RBAR_XN_Msk (01UL /*<< MPU_RBAR_XN_Pos*/) /*!< MPU RBAR: XN Mask */ + +/* MPU Region Limit Address Register Definitions */ +#define MPU_RLAR_LIMIT_Pos 5U /*!< MPU RLAR: LIMIT Position */ +#define MPU_RLAR_LIMIT_Msk (0x7FFFFFFUL << MPU_RLAR_LIMIT_Pos) /*!< MPU RLAR: LIMIT Mask */ + +#define MPU_RLAR_PXN_Pos 4U /*!< MPU RLAR: PXN Position */ +#define MPU_RLAR_PXN_Msk (1UL << MPU_RLAR_PXN_Pos) /*!< MPU RLAR: PXN Mask */ + +#define MPU_RLAR_AttrIndx_Pos 1U /*!< MPU RLAR: AttrIndx Position */ +#define MPU_RLAR_AttrIndx_Msk (7UL << MPU_RLAR_AttrIndx_Pos) /*!< MPU RLAR: AttrIndx Mask */ + +#define MPU_RLAR_EN_Pos 0U /*!< MPU RLAR: Region enable bit Position */ +#define MPU_RLAR_EN_Msk (1UL /*<< MPU_RLAR_EN_Pos*/) /*!< MPU RLAR: Region enable bit Disable Mask */ + +/* MPU Memory Attribute Indirection Register 0 Definitions */ +#define MPU_MAIR0_Attr3_Pos 24U /*!< MPU MAIR0: Attr3 Position */ +#define MPU_MAIR0_Attr3_Msk (0xFFUL << MPU_MAIR0_Attr3_Pos) /*!< MPU MAIR0: Attr3 Mask */ + +#define MPU_MAIR0_Attr2_Pos 16U /*!< MPU MAIR0: Attr2 Position */ +#define MPU_MAIR0_Attr2_Msk (0xFFUL << MPU_MAIR0_Attr2_Pos) /*!< MPU MAIR0: Attr2 Mask */ + +#define MPU_MAIR0_Attr1_Pos 8U /*!< MPU MAIR0: Attr1 Position */ +#define MPU_MAIR0_Attr1_Msk (0xFFUL << MPU_MAIR0_Attr1_Pos) /*!< MPU MAIR0: Attr1 Mask */ + +#define MPU_MAIR0_Attr0_Pos 0U /*!< MPU MAIR0: Attr0 Position */ +#define MPU_MAIR0_Attr0_Msk (0xFFUL /*<< MPU_MAIR0_Attr0_Pos*/) /*!< MPU MAIR0: Attr0 Mask */ + +/* MPU Memory Attribute Indirection Register 1 Definitions */ +#define MPU_MAIR1_Attr7_Pos 24U /*!< MPU MAIR1: Attr7 Position */ +#define MPU_MAIR1_Attr7_Msk (0xFFUL << MPU_MAIR1_Attr7_Pos) /*!< MPU MAIR1: Attr7 Mask */ + +#define MPU_MAIR1_Attr6_Pos 16U /*!< MPU MAIR1: Attr6 Position */ +#define MPU_MAIR1_Attr6_Msk (0xFFUL << MPU_MAIR1_Attr6_Pos) /*!< MPU MAIR1: Attr6 Mask */ + +#define MPU_MAIR1_Attr5_Pos 8U /*!< MPU MAIR1: Attr5 Position */ +#define MPU_MAIR1_Attr5_Msk (0xFFUL << MPU_MAIR1_Attr5_Pos) /*!< MPU MAIR1: Attr5 Mask */ + +#define MPU_MAIR1_Attr4_Pos 0U /*!< MPU MAIR1: Attr4 Position */ +#define MPU_MAIR1_Attr4_Msk (0xFFUL /*<< MPU_MAIR1_Attr4_Pos*/) /*!< MPU MAIR1: Attr4 Mask */ + +/*@} end of group CMSIS_MPU */ +#endif + + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SAU Security Attribution Unit (SAU) + \brief Type definitions for the Security Attribution Unit (SAU) + @{ + */ + +/** + \brief Structure type to access the Security Attribution Unit (SAU). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SAU Control Register */ + __IM uint32_t TYPE; /*!< Offset: 0x004 (R/ ) SAU Type Register */ +#if defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) + __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) SAU Region Number Register */ + __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) SAU Region Base Address Register */ + __IOM uint32_t RLAR; /*!< Offset: 0x010 (R/W) SAU Region Limit Address Register */ +#else + uint32_t RESERVED0[3]; +#endif + __IOM uint32_t SFSR; /*!< Offset: 0x014 (R/W) Secure Fault Status Register */ + __IOM uint32_t SFAR; /*!< Offset: 0x018 (R/W) Secure Fault Address Register */ +} SAU_Type; + +/* SAU Control Register Definitions */ +#define SAU_CTRL_ALLNS_Pos 1U /*!< SAU CTRL: ALLNS Position */ +#define SAU_CTRL_ALLNS_Msk (1UL << SAU_CTRL_ALLNS_Pos) /*!< SAU CTRL: ALLNS Mask */ + +#define SAU_CTRL_ENABLE_Pos 0U /*!< SAU CTRL: ENABLE Position */ +#define SAU_CTRL_ENABLE_Msk (1UL /*<< SAU_CTRL_ENABLE_Pos*/) /*!< SAU CTRL: ENABLE Mask */ + +/* SAU Type Register Definitions */ +#define SAU_TYPE_SREGION_Pos 0U /*!< SAU TYPE: SREGION Position */ +#define SAU_TYPE_SREGION_Msk (0xFFUL /*<< SAU_TYPE_SREGION_Pos*/) /*!< SAU TYPE: SREGION Mask */ + +#if defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) +/* SAU Region Number Register Definitions */ +#define SAU_RNR_REGION_Pos 0U /*!< SAU RNR: REGION Position */ +#define SAU_RNR_REGION_Msk (0xFFUL /*<< SAU_RNR_REGION_Pos*/) /*!< SAU RNR: REGION Mask */ + +/* SAU Region Base Address Register Definitions */ +#define SAU_RBAR_BADDR_Pos 5U /*!< SAU RBAR: BADDR Position */ +#define SAU_RBAR_BADDR_Msk (0x7FFFFFFUL << SAU_RBAR_BADDR_Pos) /*!< SAU RBAR: BADDR Mask */ + +/* SAU Region Limit Address Register Definitions */ +#define SAU_RLAR_LADDR_Pos 5U /*!< SAU RLAR: LADDR Position */ +#define SAU_RLAR_LADDR_Msk (0x7FFFFFFUL << SAU_RLAR_LADDR_Pos) /*!< SAU RLAR: LADDR Mask */ + +#define SAU_RLAR_NSC_Pos 1U /*!< SAU RLAR: NSC Position */ +#define SAU_RLAR_NSC_Msk (1UL << SAU_RLAR_NSC_Pos) /*!< SAU RLAR: NSC Mask */ + +#define SAU_RLAR_ENABLE_Pos 0U /*!< SAU RLAR: ENABLE Position */ +#define SAU_RLAR_ENABLE_Msk (1UL /*<< SAU_RLAR_ENABLE_Pos*/) /*!< SAU RLAR: ENABLE Mask */ + +#endif /* defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) */ + +/* Secure Fault Status Register Definitions */ +#define SAU_SFSR_LSERR_Pos 7U /*!< SAU SFSR: LSERR Position */ +#define SAU_SFSR_LSERR_Msk (1UL << SAU_SFSR_LSERR_Pos) /*!< SAU SFSR: LSERR Mask */ + +#define SAU_SFSR_SFARVALID_Pos 6U /*!< SAU SFSR: SFARVALID Position */ +#define SAU_SFSR_SFARVALID_Msk (1UL << SAU_SFSR_SFARVALID_Pos) /*!< SAU SFSR: SFARVALID Mask */ + +#define SAU_SFSR_LSPERR_Pos 5U /*!< SAU SFSR: LSPERR Position */ +#define SAU_SFSR_LSPERR_Msk (1UL << SAU_SFSR_LSPERR_Pos) /*!< SAU SFSR: LSPERR Mask */ + +#define SAU_SFSR_INVTRAN_Pos 4U /*!< SAU SFSR: INVTRAN Position */ +#define SAU_SFSR_INVTRAN_Msk (1UL << SAU_SFSR_INVTRAN_Pos) /*!< SAU SFSR: INVTRAN Mask */ + +#define SAU_SFSR_AUVIOL_Pos 3U /*!< SAU SFSR: AUVIOL Position */ +#define SAU_SFSR_AUVIOL_Msk (1UL << SAU_SFSR_AUVIOL_Pos) /*!< SAU SFSR: AUVIOL Mask */ + +#define SAU_SFSR_INVER_Pos 2U /*!< SAU SFSR: INVER Position */ +#define SAU_SFSR_INVER_Msk (1UL << SAU_SFSR_INVER_Pos) /*!< SAU SFSR: INVER Mask */ + +#define SAU_SFSR_INVIS_Pos 1U /*!< SAU SFSR: INVIS Position */ +#define SAU_SFSR_INVIS_Msk (1UL << SAU_SFSR_INVIS_Pos) /*!< SAU SFSR: INVIS Mask */ + +#define SAU_SFSR_INVEP_Pos 0U /*!< SAU SFSR: INVEP Position */ +#define SAU_SFSR_INVEP_Msk (1UL /*<< SAU_SFSR_INVEP_Pos*/) /*!< SAU SFSR: INVEP Mask */ + +/*@} end of group CMSIS_SAU */ +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_FPU Floating Point Unit (FPU) + \brief Type definitions for the Floating Point Unit (FPU) + @{ + */ + +/** + \brief Structure type to access the Floating Point Unit (FPU). + */ +typedef struct +{ + uint32_t RESERVED0[1U]; + __IOM uint32_t FPCCR; /*!< Offset: 0x004 (R/W) Floating-Point Context Control Register */ + __IOM uint32_t FPCAR; /*!< Offset: 0x008 (R/W) Floating-Point Context Address Register */ + __IOM uint32_t FPDSCR; /*!< Offset: 0x00C (R/W) Floating-Point Default Status Control Register */ + __IM uint32_t MVFR0; /*!< Offset: 0x010 (R/ ) Media and VFP Feature Register 0 */ + __IM uint32_t MVFR1; /*!< Offset: 0x014 (R/ ) Media and VFP Feature Register 1 */ + __IM uint32_t MVFR2; /*!< Offset: 0x018 (R/ ) Media and VFP Feature Register 2 */ +} FPU_Type; + +/* Floating-Point Context Control Register Definitions */ +#define FPU_FPCCR_ASPEN_Pos 31U /*!< FPCCR: ASPEN bit Position */ +#define FPU_FPCCR_ASPEN_Msk (1UL << FPU_FPCCR_ASPEN_Pos) /*!< FPCCR: ASPEN bit Mask */ + +#define FPU_FPCCR_LSPEN_Pos 30U /*!< FPCCR: LSPEN Position */ +#define FPU_FPCCR_LSPEN_Msk (1UL << FPU_FPCCR_LSPEN_Pos) /*!< FPCCR: LSPEN bit Mask */ + +#define FPU_FPCCR_LSPENS_Pos 29U /*!< FPCCR: LSPENS Position */ +#define FPU_FPCCR_LSPENS_Msk (1UL << FPU_FPCCR_LSPENS_Pos) /*!< FPCCR: LSPENS bit Mask */ + +#define FPU_FPCCR_CLRONRET_Pos 28U /*!< FPCCR: CLRONRET Position */ +#define FPU_FPCCR_CLRONRET_Msk (1UL << FPU_FPCCR_CLRONRET_Pos) /*!< FPCCR: CLRONRET bit Mask */ + +#define FPU_FPCCR_CLRONRETS_Pos 27U /*!< FPCCR: CLRONRETS Position */ +#define FPU_FPCCR_CLRONRETS_Msk (1UL << FPU_FPCCR_CLRONRETS_Pos) /*!< FPCCR: CLRONRETS bit Mask */ + +#define FPU_FPCCR_TS_Pos 26U /*!< FPCCR: TS Position */ +#define FPU_FPCCR_TS_Msk (1UL << FPU_FPCCR_TS_Pos) /*!< FPCCR: TS bit Mask */ + +#define FPU_FPCCR_UFRDY_Pos 10U /*!< FPCCR: UFRDY Position */ +#define FPU_FPCCR_UFRDY_Msk (1UL << FPU_FPCCR_UFRDY_Pos) /*!< FPCCR: UFRDY bit Mask */ + +#define FPU_FPCCR_SPLIMVIOL_Pos 9U /*!< FPCCR: SPLIMVIOL Position */ +#define FPU_FPCCR_SPLIMVIOL_Msk (1UL << FPU_FPCCR_SPLIMVIOL_Pos) /*!< FPCCR: SPLIMVIOL bit Mask */ + +#define FPU_FPCCR_MONRDY_Pos 8U /*!< FPCCR: MONRDY Position */ +#define FPU_FPCCR_MONRDY_Msk (1UL << FPU_FPCCR_MONRDY_Pos) /*!< FPCCR: MONRDY bit Mask */ + +#define FPU_FPCCR_SFRDY_Pos 7U /*!< FPCCR: SFRDY Position */ +#define FPU_FPCCR_SFRDY_Msk (1UL << FPU_FPCCR_SFRDY_Pos) /*!< FPCCR: SFRDY bit Mask */ + +#define FPU_FPCCR_BFRDY_Pos 6U /*!< FPCCR: BFRDY Position */ +#define FPU_FPCCR_BFRDY_Msk (1UL << FPU_FPCCR_BFRDY_Pos) /*!< FPCCR: BFRDY bit Mask */ + +#define FPU_FPCCR_MMRDY_Pos 5U /*!< FPCCR: MMRDY Position */ +#define FPU_FPCCR_MMRDY_Msk (1UL << FPU_FPCCR_MMRDY_Pos) /*!< FPCCR: MMRDY bit Mask */ + +#define FPU_FPCCR_HFRDY_Pos 4U /*!< FPCCR: HFRDY Position */ +#define FPU_FPCCR_HFRDY_Msk (1UL << FPU_FPCCR_HFRDY_Pos) /*!< FPCCR: HFRDY bit Mask */ + +#define FPU_FPCCR_THREAD_Pos 3U /*!< FPCCR: processor mode bit Position */ +#define FPU_FPCCR_THREAD_Msk (1UL << FPU_FPCCR_THREAD_Pos) /*!< FPCCR: processor mode active bit Mask */ + +#define FPU_FPCCR_S_Pos 2U /*!< FPCCR: Security status of the FP context bit Position */ +#define FPU_FPCCR_S_Msk (1UL << FPU_FPCCR_S_Pos) /*!< FPCCR: Security status of the FP context bit Mask */ + +#define FPU_FPCCR_USER_Pos 1U /*!< FPCCR: privilege level bit Position */ +#define FPU_FPCCR_USER_Msk (1UL << FPU_FPCCR_USER_Pos) /*!< FPCCR: privilege level bit Mask */ + +#define FPU_FPCCR_LSPACT_Pos 0U /*!< FPCCR: Lazy state preservation active bit Position */ +#define FPU_FPCCR_LSPACT_Msk (1UL /*<< FPU_FPCCR_LSPACT_Pos*/) /*!< FPCCR: Lazy state preservation active bit Mask */ + +/* Floating-Point Context Address Register Definitions */ +#define FPU_FPCAR_ADDRESS_Pos 3U /*!< FPCAR: ADDRESS bit Position */ +#define FPU_FPCAR_ADDRESS_Msk (0x1FFFFFFFUL << FPU_FPCAR_ADDRESS_Pos) /*!< FPCAR: ADDRESS bit Mask */ + +/* Floating-Point Default Status Control Register Definitions */ +#define FPU_FPDSCR_AHP_Pos 26U /*!< FPDSCR: AHP bit Position */ +#define FPU_FPDSCR_AHP_Msk (1UL << FPU_FPDSCR_AHP_Pos) /*!< FPDSCR: AHP bit Mask */ + +#define FPU_FPDSCR_DN_Pos 25U /*!< FPDSCR: DN bit Position */ +#define FPU_FPDSCR_DN_Msk (1UL << FPU_FPDSCR_DN_Pos) /*!< FPDSCR: DN bit Mask */ + +#define FPU_FPDSCR_FZ_Pos 24U /*!< FPDSCR: FZ bit Position */ +#define FPU_FPDSCR_FZ_Msk (1UL << FPU_FPDSCR_FZ_Pos) /*!< FPDSCR: FZ bit Mask */ + +#define FPU_FPDSCR_RMode_Pos 22U /*!< FPDSCR: RMode bit Position */ +#define FPU_FPDSCR_RMode_Msk (3UL << FPU_FPDSCR_RMode_Pos) /*!< FPDSCR: RMode bit Mask */ + +#define FPU_FPDSCR_FZ16_Pos 19U /*!< FPDSCR: FZ16 bit Position */ +#define FPU_FPDSCR_FZ16_Msk (1UL << FPU_FPDSCR_FZ16_Pos) /*!< FPDSCR: FZ16 bit Mask */ + +#define FPU_FPDSCR_LTPSIZE_Pos 16U /*!< FPDSCR: LTPSIZE bit Position */ +#define FPU_FPDSCR_LTPSIZE_Msk (7UL << FPU_FPDSCR_LTPSIZE_Pos) /*!< FPDSCR: LTPSIZE bit Mask */ + +/* Media and VFP Feature Register 0 Definitions */ +#define FPU_MVFR0_FPRound_Pos 28U /*!< MVFR0: FPRound bits Position */ +#define FPU_MVFR0_FPRound_Msk (0xFUL << FPU_MVFR0_FPRound_Pos) /*!< MVFR0: FPRound bits Mask */ + +#define FPU_MVFR0_FPSqrt_Pos 20U /*!< MVFR0: FPSqrt bits Position */ +#define FPU_MVFR0_FPSqrt_Msk (0xFUL << FPU_MVFR0_FPSqrt_Pos) /*!< MVFR0: FPSqrt bits Mask */ + +#define FPU_MVFR0_FPDivide_Pos 16U /*!< MVFR0: FPDivide bits Position */ +#define FPU_MVFR0_FPDivide_Msk (0xFUL << FPU_MVFR0_FPDivide_Pos) /*!< MVFR0: Divide bits Mask */ + +#define FPU_MVFR0_FPDP_Pos 8U /*!< MVFR0: FPDP bits Position */ +#define FPU_MVFR0_FPDP_Msk (0xFUL << FPU_MVFR0_FPDP_Pos) /*!< MVFR0: FPDP bits Mask */ + +#define FPU_MVFR0_FPSP_Pos 4U /*!< MVFR0: FPSP bits Position */ +#define FPU_MVFR0_FPSP_Msk (0xFUL << FPU_MVFR0_FPSP_Pos) /*!< MVFR0: FPSP bits Mask */ + +#define FPU_MVFR0_SIMDReg_Pos 0U /*!< MVFR0: SIMDReg bits Position */ +#define FPU_MVFR0_SIMDReg_Msk (0xFUL /*<< FPU_MVFR0_SIMDReg_Pos*/) /*!< MVFR0: SIMDReg bits Mask */ + +/* Media and VFP Feature Register 1 Definitions */ +#define FPU_MVFR1_FMAC_Pos 28U /*!< MVFR1: FMAC bits Position */ +#define FPU_MVFR1_FMAC_Msk (0xFUL << FPU_MVFR1_FMAC_Pos) /*!< MVFR1: FMAC bits Mask */ + +#define FPU_MVFR1_FPHP_Pos 24U /*!< MVFR1: FPHP bits Position */ +#define FPU_MVFR1_FPHP_Msk (0xFUL << FPU_MVFR1_FPHP_Pos) /*!< MVFR1: FPHP bits Mask */ + +#define FPU_MVFR1_FP16_Pos 20U /*!< MVFR1: FP16 bits Position */ +#define FPU_MVFR1_FP16_Msk (0xFUL << FPU_MVFR1_FP16_Pos) /*!< MVFR1: FP16 bits Mask */ + +#define FPU_MVFR1_MVE_Pos 8U /*!< MVFR1: MVE bits Position */ +#define FPU_MVFR1_MVE_Msk (0xFUL << FPU_MVFR1_MVE_Pos) /*!< MVFR1: MVE bits Mask */ + +#define FPU_MVFR1_FPDNaN_Pos 4U /*!< MVFR1: FPDNaN bits Position */ +#define FPU_MVFR1_FPDNaN_Msk (0xFUL << FPU_MVFR1_FPDNaN_Pos) /*!< MVFR1: FPDNaN bits Mask */ + +#define FPU_MVFR1_FPFtZ_Pos 0U /*!< MVFR1: FPFtZ bits Position */ +#define FPU_MVFR1_FPFtZ_Msk (0xFUL /*<< FPU_MVFR1_FPFtZ_Pos*/) /*!< MVFR1: FPFtZ bits Mask */ + +/* Media and VFP Feature Register 2 Definitions */ +#define FPU_MVFR2_FPMisc_Pos 4U /*!< MVFR2: FPMisc bits Position */ +#define FPU_MVFR2_FPMisc_Msk (0xFUL << FPU_MVFR2_FPMisc_Pos) /*!< MVFR2: FPMisc bits Mask */ + +/*@} end of group CMSIS_FPU */ + +/* CoreDebug is deprecated. replaced by DCB (Debug Control Block) */ +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CoreDebug Core Debug Registers (CoreDebug) + \brief Type definitions for the Core Debug Registers + @{ + */ + +/** + \brief \deprecated Structure type to access the Core Debug Register (CoreDebug). + */ +typedef struct +{ + __IOM uint32_t DHCSR; /*!< Offset: 0x000 (R/W) Debug Halting Control and Status Register */ + __OM uint32_t DCRSR; /*!< Offset: 0x004 ( /W) Debug Core Register Selector Register */ + __IOM uint32_t DCRDR; /*!< Offset: 0x008 (R/W) Debug Core Register Data Register */ + __IOM uint32_t DEMCR; /*!< Offset: 0x00C (R/W) Debug Exception and Monitor Control Register */ + __OM uint32_t DSCEMCR; /*!< Offset: 0x010 ( /W) Debug Set Clear Exception and Monitor Control Register */ + __IOM uint32_t DAUTHCTRL; /*!< Offset: 0x014 (R/W) Debug Authentication Control Register */ + __IOM uint32_t DSCSR; /*!< Offset: 0x018 (R/W) Debug Security Control and Status Register */ +} CoreDebug_Type; + +/* Debug Halting Control and Status Register Definitions */ +#define CoreDebug_DHCSR_DBGKEY_Pos 16U /*!< \deprecated CoreDebug DHCSR: DBGKEY Position */ +#define CoreDebug_DHCSR_DBGKEY_Msk (0xFFFFUL << CoreDebug_DHCSR_DBGKEY_Pos) /*!< \deprecated CoreDebug DHCSR: DBGKEY Mask */ + +#define CoreDebug_DHCSR_S_RESTART_ST_Pos 26U /*!< \deprecated CoreDebug DHCSR: S_RESTART_ST Position */ +#define CoreDebug_DHCSR_S_RESTART_ST_Msk (1UL << CoreDebug_DHCSR_S_RESTART_ST_Pos) /*!< \deprecated CoreDebug DHCSR: S_RESTART_ST Mask */ + +#define CoreDebug_DHCSR_S_RESET_ST_Pos 25U /*!< \deprecated CoreDebug DHCSR: S_RESET_ST Position */ +#define CoreDebug_DHCSR_S_RESET_ST_Msk (1UL << CoreDebug_DHCSR_S_RESET_ST_Pos) /*!< \deprecated CoreDebug DHCSR: S_RESET_ST Mask */ + +#define CoreDebug_DHCSR_S_RETIRE_ST_Pos 24U /*!< \deprecated CoreDebug DHCSR: S_RETIRE_ST Position */ +#define CoreDebug_DHCSR_S_RETIRE_ST_Msk (1UL << CoreDebug_DHCSR_S_RETIRE_ST_Pos) /*!< \deprecated CoreDebug DHCSR: S_RETIRE_ST Mask */ + +#define CoreDebug_DHCSR_S_FPD_Pos 23U /*!< \deprecated CoreDebug DHCSR: S_FPD Position */ +#define CoreDebug_DHCSR_S_FPD_Msk (1UL << CoreDebug_DHCSR_S_FPD_Pos) /*!< \deprecated CoreDebug DHCSR: S_FPD Mask */ + +#define CoreDebug_DHCSR_S_SUIDE_Pos 22U /*!< \deprecated CoreDebug DHCSR: S_SUIDE Position */ +#define CoreDebug_DHCSR_S_SUIDE_Msk (1UL << CoreDebug_DHCSR_S_SUIDE_Pos) /*!< \deprecated CoreDebug DHCSR: S_SUIDE Mask */ + +#define CoreDebug_DHCSR_S_NSUIDE_Pos 21U /*!< \deprecated CoreDebug DHCSR: S_NSUIDE Position */ +#define CoreDebug_DHCSR_S_NSUIDE_Msk (1UL << CoreDebug_DHCSR_S_NSUIDE_Pos) /*!< \deprecated CoreDebug DHCSR: S_NSUIDE Mask */ + +#define CoreDebug_DHCSR_S_SDE_Pos 20U /*!< \deprecated CoreDebug DHCSR: S_SDE Position */ +#define CoreDebug_DHCSR_S_SDE_Msk (1UL << CoreDebug_DHCSR_S_SDE_Pos) /*!< \deprecated CoreDebug DHCSR: S_SDE Mask */ + +#define CoreDebug_DHCSR_S_LOCKUP_Pos 19U /*!< \deprecated CoreDebug DHCSR: S_LOCKUP Position */ +#define CoreDebug_DHCSR_S_LOCKUP_Msk (1UL << CoreDebug_DHCSR_S_LOCKUP_Pos) /*!< \deprecated CoreDebug DHCSR: S_LOCKUP Mask */ + +#define CoreDebug_DHCSR_S_SLEEP_Pos 18U /*!< \deprecated CoreDebug DHCSR: S_SLEEP Position */ +#define CoreDebug_DHCSR_S_SLEEP_Msk (1UL << CoreDebug_DHCSR_S_SLEEP_Pos) /*!< \deprecated CoreDebug DHCSR: S_SLEEP Mask */ + +#define CoreDebug_DHCSR_S_HALT_Pos 17U /*!< \deprecated CoreDebug DHCSR: S_HALT Position */ +#define CoreDebug_DHCSR_S_HALT_Msk (1UL << CoreDebug_DHCSR_S_HALT_Pos) /*!< \deprecated CoreDebug DHCSR: S_HALT Mask */ + +#define CoreDebug_DHCSR_S_REGRDY_Pos 16U /*!< \deprecated CoreDebug DHCSR: S_REGRDY Position */ +#define CoreDebug_DHCSR_S_REGRDY_Msk (1UL << CoreDebug_DHCSR_S_REGRDY_Pos) /*!< \deprecated CoreDebug DHCSR: S_REGRDY Mask */ + +#define CoreDebug_DHCSR_C_PMOV_Pos 6U /*!< \deprecated CoreDebug DHCSR: C_PMOV Position */ +#define CoreDebug_DHCSR_C_PMOV_Msk (1UL << CoreDebug_DHCSR_C_PMOV_Pos) /*!< \deprecated CoreDebug DHCSR: C_PMOV Mask */ + +#define CoreDebug_DHCSR_C_SNAPSTALL_Pos 5U /*!< \deprecated CoreDebug DHCSR: C_SNAPSTALL Position */ +#define CoreDebug_DHCSR_C_SNAPSTALL_Msk (1UL << CoreDebug_DHCSR_C_SNAPSTALL_Pos) /*!< \deprecated CoreDebug DHCSR: C_SNAPSTALL Mask */ + +#define CoreDebug_DHCSR_C_MASKINTS_Pos 3U /*!< \deprecated CoreDebug DHCSR: C_MASKINTS Position */ +#define CoreDebug_DHCSR_C_MASKINTS_Msk (1UL << CoreDebug_DHCSR_C_MASKINTS_Pos) /*!< \deprecated CoreDebug DHCSR: C_MASKINTS Mask */ + +#define CoreDebug_DHCSR_C_STEP_Pos 2U /*!< \deprecated CoreDebug DHCSR: C_STEP Position */ +#define CoreDebug_DHCSR_C_STEP_Msk (1UL << CoreDebug_DHCSR_C_STEP_Pos) /*!< \deprecated CoreDebug DHCSR: C_STEP Mask */ + +#define CoreDebug_DHCSR_C_HALT_Pos 1U /*!< \deprecated CoreDebug DHCSR: C_HALT Position */ +#define CoreDebug_DHCSR_C_HALT_Msk (1UL << CoreDebug_DHCSR_C_HALT_Pos) /*!< \deprecated CoreDebug DHCSR: C_HALT Mask */ + +#define CoreDebug_DHCSR_C_DEBUGEN_Pos 0U /*!< \deprecated CoreDebug DHCSR: C_DEBUGEN Position */ +#define CoreDebug_DHCSR_C_DEBUGEN_Msk (1UL /*<< CoreDebug_DHCSR_C_DEBUGEN_Pos*/) /*!< \deprecated CoreDebug DHCSR: C_DEBUGEN Mask */ + +/* Debug Core Register Selector Register Definitions */ +#define CoreDebug_DCRSR_REGWnR_Pos 16U /*!< \deprecated CoreDebug DCRSR: REGWnR Position */ +#define CoreDebug_DCRSR_REGWnR_Msk (1UL << CoreDebug_DCRSR_REGWnR_Pos) /*!< \deprecated CoreDebug DCRSR: REGWnR Mask */ + +#define CoreDebug_DCRSR_REGSEL_Pos 0U /*!< \deprecated CoreDebug DCRSR: REGSEL Position */ +#define CoreDebug_DCRSR_REGSEL_Msk (0x1FUL /*<< CoreDebug_DCRSR_REGSEL_Pos*/) /*!< \deprecated CoreDebug DCRSR: REGSEL Mask */ + +/* Debug Exception and Monitor Control Register Definitions */ +#define CoreDebug_DEMCR_TRCENA_Pos 24U /*!< \deprecated CoreDebug DEMCR: TRCENA Position */ +#define CoreDebug_DEMCR_TRCENA_Msk (1UL << CoreDebug_DEMCR_TRCENA_Pos) /*!< \deprecated CoreDebug DEMCR: TRCENA Mask */ + +#define CoreDebug_DEMCR_MON_REQ_Pos 19U /*!< \deprecated CoreDebug DEMCR: MON_REQ Position */ +#define CoreDebug_DEMCR_MON_REQ_Msk (1UL << CoreDebug_DEMCR_MON_REQ_Pos) /*!< \deprecated CoreDebug DEMCR: MON_REQ Mask */ + +#define CoreDebug_DEMCR_MON_STEP_Pos 18U /*!< \deprecated CoreDebug DEMCR: MON_STEP Position */ +#define CoreDebug_DEMCR_MON_STEP_Msk (1UL << CoreDebug_DEMCR_MON_STEP_Pos) /*!< \deprecated CoreDebug DEMCR: MON_STEP Mask */ + +#define CoreDebug_DEMCR_MON_PEND_Pos 17U /*!< \deprecated CoreDebug DEMCR: MON_PEND Position */ +#define CoreDebug_DEMCR_MON_PEND_Msk (1UL << CoreDebug_DEMCR_MON_PEND_Pos) /*!< \deprecated CoreDebug DEMCR: MON_PEND Mask */ + +#define CoreDebug_DEMCR_MON_EN_Pos 16U /*!< \deprecated CoreDebug DEMCR: MON_EN Position */ +#define CoreDebug_DEMCR_MON_EN_Msk (1UL << CoreDebug_DEMCR_MON_EN_Pos) /*!< \deprecated CoreDebug DEMCR: MON_EN Mask */ + +#define CoreDebug_DEMCR_VC_HARDERR_Pos 10U /*!< \deprecated CoreDebug DEMCR: VC_HARDERR Position */ +#define CoreDebug_DEMCR_VC_HARDERR_Msk (1UL << CoreDebug_DEMCR_VC_HARDERR_Pos) /*!< \deprecated CoreDebug DEMCR: VC_HARDERR Mask */ + +#define CoreDebug_DEMCR_VC_INTERR_Pos 9U /*!< \deprecated CoreDebug DEMCR: VC_INTERR Position */ +#define CoreDebug_DEMCR_VC_INTERR_Msk (1UL << CoreDebug_DEMCR_VC_INTERR_Pos) /*!< \deprecated CoreDebug DEMCR: VC_INTERR Mask */ + +#define CoreDebug_DEMCR_VC_BUSERR_Pos 8U /*!< \deprecated CoreDebug DEMCR: VC_BUSERR Position */ +#define CoreDebug_DEMCR_VC_BUSERR_Msk (1UL << CoreDebug_DEMCR_VC_BUSERR_Pos) /*!< \deprecated CoreDebug DEMCR: VC_BUSERR Mask */ + +#define CoreDebug_DEMCR_VC_STATERR_Pos 7U /*!< \deprecated CoreDebug DEMCR: VC_STATERR Position */ +#define CoreDebug_DEMCR_VC_STATERR_Msk (1UL << CoreDebug_DEMCR_VC_STATERR_Pos) /*!< \deprecated CoreDebug DEMCR: VC_STATERR Mask */ + +#define CoreDebug_DEMCR_VC_CHKERR_Pos 6U /*!< \deprecated CoreDebug DEMCR: VC_CHKERR Position */ +#define CoreDebug_DEMCR_VC_CHKERR_Msk (1UL << CoreDebug_DEMCR_VC_CHKERR_Pos) /*!< \deprecated CoreDebug DEMCR: VC_CHKERR Mask */ + +#define CoreDebug_DEMCR_VC_NOCPERR_Pos 5U /*!< \deprecated CoreDebug DEMCR: VC_NOCPERR Position */ +#define CoreDebug_DEMCR_VC_NOCPERR_Msk (1UL << CoreDebug_DEMCR_VC_NOCPERR_Pos) /*!< \deprecated CoreDebug DEMCR: VC_NOCPERR Mask */ + +#define CoreDebug_DEMCR_VC_MMERR_Pos 4U /*!< \deprecated CoreDebug DEMCR: VC_MMERR Position */ +#define CoreDebug_DEMCR_VC_MMERR_Msk (1UL << CoreDebug_DEMCR_VC_MMERR_Pos) /*!< \deprecated CoreDebug DEMCR: VC_MMERR Mask */ + +#define CoreDebug_DEMCR_VC_CORERESET_Pos 0U /*!< \deprecated CoreDebug DEMCR: VC_CORERESET Position */ +#define CoreDebug_DEMCR_VC_CORERESET_Msk (1UL /*<< CoreDebug_DEMCR_VC_CORERESET_Pos*/) /*!< \deprecated CoreDebug DEMCR: VC_CORERESET Mask */ + +/* Debug Set Clear Exception and Monitor Control Register Definitions */ +#define CoreDebug_DSCEMCR_CLR_MON_REQ_Pos 19U /*!< \deprecated CoreDebug DSCEMCR: CLR_MON_REQ, Position */ +#define CoreDebug_DSCEMCR_CLR_MON_REQ_Msk (1UL << CoreDebug_DSCEMCR_CLR_MON_REQ_Pos) /*!< \deprecated CoreDebug DSCEMCR: CLR_MON_REQ, Mask */ + +#define CoreDebug_DSCEMCR_CLR_MON_PEND_Pos 17U /*!< \deprecated CoreDebug DSCEMCR: CLR_MON_PEND, Position */ +#define CoreDebug_DSCEMCR_CLR_MON_PEND_Msk (1UL << CoreDebug_DSCEMCR_CLR_MON_PEND_Pos) /*!< \deprecated CoreDebug DSCEMCR: CLR_MON_PEND, Mask */ + +#define CoreDebug_DSCEMCR_SET_MON_REQ_Pos 3U /*!< \deprecated CoreDebug DSCEMCR: SET_MON_REQ, Position */ +#define CoreDebug_DSCEMCR_SET_MON_REQ_Msk (1UL << CoreDebug_DSCEMCR_SET_MON_REQ_Pos) /*!< \deprecated CoreDebug DSCEMCR: SET_MON_REQ, Mask */ + +#define CoreDebug_DSCEMCR_SET_MON_PEND_Pos 1U /*!< \deprecated CoreDebug DSCEMCR: SET_MON_PEND, Position */ +#define CoreDebug_DSCEMCR_SET_MON_PEND_Msk (1UL << CoreDebug_DSCEMCR_SET_MON_PEND_Pos) /*!< \deprecated CoreDebug DSCEMCR: SET_MON_PEND, Mask */ + +/* Debug Authentication Control Register Definitions */ +#define CoreDebug_DAUTHCTRL_UIDEN_Pos 10U /*!< \deprecated CoreDebug DAUTHCTRL: UIDEN, Position */ +#define CoreDebug_DAUTHCTRL_UIDEN_Msk (1UL << CoreDebug_DAUTHCTRL_UIDEN_Pos) /*!< \deprecated CoreDebug DAUTHCTRL: UIDEN, Mask */ + +#define CoreDebug_DAUTHCTRL_UIDAPEN_Pos 9U /*!< \deprecated CoreDebug DAUTHCTRL: UIDAPEN, Position */ +#define CoreDebug_DAUTHCTRL_UIDAPEN_Msk (1UL << CoreDebug_DAUTHCTRL_UIDAPEN_Pos) /*!< \deprecated CoreDebug DAUTHCTRL: UIDAPEN, Mask */ + +#define CoreDebug_DAUTHCTRL_FSDMA_Pos 8U /*!< \deprecated CoreDebug DAUTHCTRL: FSDMA, Position */ +#define CoreDebug_DAUTHCTRL_FSDMA_Msk (1UL << CoreDebug_DAUTHCTRL_FSDMA_Pos) /*!< \deprecated CoreDebug DAUTHCTRL: FSDMA, Mask */ + +#define CoreDebug_DAUTHCTRL_INTSPNIDEN_Pos 3U /*!< \deprecated CoreDebug DAUTHCTRL: INTSPNIDEN, Position */ +#define CoreDebug_DAUTHCTRL_INTSPNIDEN_Msk (1UL << CoreDebug_DAUTHCTRL_INTSPNIDEN_Pos) /*!< \deprecated CoreDebug DAUTHCTRL: INTSPNIDEN, Mask */ + +#define CoreDebug_DAUTHCTRL_SPNIDENSEL_Pos 2U /*!< \deprecated CoreDebug DAUTHCTRL: SPNIDENSEL Position */ +#define CoreDebug_DAUTHCTRL_SPNIDENSEL_Msk (1UL << CoreDebug_DAUTHCTRL_SPNIDENSEL_Pos) /*!< \deprecated CoreDebug DAUTHCTRL: SPNIDENSEL Mask */ + +#define CoreDebug_DAUTHCTRL_INTSPIDEN_Pos 1U /*!< \deprecated CoreDebug DAUTHCTRL: INTSPIDEN Position */ +#define CoreDebug_DAUTHCTRL_INTSPIDEN_Msk (1UL << CoreDebug_DAUTHCTRL_INTSPIDEN_Pos) /*!< \deprecated CoreDebug DAUTHCTRL: INTSPIDEN Mask */ + +#define CoreDebug_DAUTHCTRL_SPIDENSEL_Pos 0U /*!< \deprecated CoreDebug DAUTHCTRL: SPIDENSEL Position */ +#define CoreDebug_DAUTHCTRL_SPIDENSEL_Msk (1UL /*<< CoreDebug_DAUTHCTRL_SPIDENSEL_Pos*/) /*!< \deprecated CoreDebug DAUTHCTRL: SPIDENSEL Mask */ + +/* Debug Security Control and Status Register Definitions */ +#define CoreDebug_DSCSR_CDS_Pos 16U /*!< \deprecated CoreDebug DSCSR: CDS Position */ +#define CoreDebug_DSCSR_CDS_Msk (1UL << CoreDebug_DSCSR_CDS_Pos) /*!< \deprecated CoreDebug DSCSR: CDS Mask */ + +#define CoreDebug_DSCSR_SBRSEL_Pos 1U /*!< \deprecated CoreDebug DSCSR: SBRSEL Position */ +#define CoreDebug_DSCSR_SBRSEL_Msk (1UL << CoreDebug_DSCSR_SBRSEL_Pos) /*!< \deprecated CoreDebug DSCSR: SBRSEL Mask */ + +#define CoreDebug_DSCSR_SBRSELEN_Pos 0U /*!< \deprecated CoreDebug DSCSR: SBRSELEN Position */ +#define CoreDebug_DSCSR_SBRSELEN_Msk (1UL /*<< CoreDebug_DSCSR_SBRSELEN_Pos*/) /*!< \deprecated CoreDebug DSCSR: SBRSELEN Mask */ + +/*@} end of group CMSIS_CoreDebug */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_DCB Debug Control Block + \brief Type definitions for the Debug Control Block Registers + @{ + */ + +/** + \brief Structure type to access the Debug Control Block Registers (DCB). + */ +typedef struct +{ + __IOM uint32_t DHCSR; /*!< Offset: 0x000 (R/W) Debug Halting Control and Status Register */ + __OM uint32_t DCRSR; /*!< Offset: 0x004 ( /W) Debug Core Register Selector Register */ + __IOM uint32_t DCRDR; /*!< Offset: 0x008 (R/W) Debug Core Register Data Register */ + __IOM uint32_t DEMCR; /*!< Offset: 0x00C (R/W) Debug Exception and Monitor Control Register */ + __OM uint32_t DSCEMCR; /*!< Offset: 0x010 ( /W) Debug Set Clear Exception and Monitor Control Register */ + __IOM uint32_t DAUTHCTRL; /*!< Offset: 0x014 (R/W) Debug Authentication Control Register */ + __IOM uint32_t DSCSR; /*!< Offset: 0x018 (R/W) Debug Security Control and Status Register */ +} DCB_Type; + +/* DHCSR, Debug Halting Control and Status Register Definitions */ +#define DCB_DHCSR_DBGKEY_Pos 16U /*!< DCB DHCSR: Debug key Position */ +#define DCB_DHCSR_DBGKEY_Msk (0xFFFFUL << DCB_DHCSR_DBGKEY_Pos) /*!< DCB DHCSR: Debug key Mask */ + +#define DCB_DHCSR_S_RESTART_ST_Pos 26U /*!< DCB DHCSR: Restart sticky status Position */ +#define DCB_DHCSR_S_RESTART_ST_Msk (0x1UL << DCB_DHCSR_S_RESTART_ST_Pos) /*!< DCB DHCSR: Restart sticky status Mask */ + +#define DCB_DHCSR_S_RESET_ST_Pos 25U /*!< DCB DHCSR: Reset sticky status Position */ +#define DCB_DHCSR_S_RESET_ST_Msk (0x1UL << DCB_DHCSR_S_RESET_ST_Pos) /*!< DCB DHCSR: Reset sticky status Mask */ + +#define DCB_DHCSR_S_RETIRE_ST_Pos 24U /*!< DCB DHCSR: Retire sticky status Position */ +#define DCB_DHCSR_S_RETIRE_ST_Msk (0x1UL << DCB_DHCSR_S_RETIRE_ST_Pos) /*!< DCB DHCSR: Retire sticky status Mask */ + +#define DCB_DHCSR_S_FPD_Pos 23U /*!< DCB DHCSR: Floating-point registers Debuggable Position */ +#define DCB_DHCSR_S_FPD_Msk (0x1UL << DCB_DHCSR_S_FPD_Pos) /*!< DCB DHCSR: Floating-point registers Debuggable Mask */ + +#define DCB_DHCSR_S_SUIDE_Pos 22U /*!< DCB DHCSR: Secure unprivileged halting debug enabled Position */ +#define DCB_DHCSR_S_SUIDE_Msk (0x1UL << DCB_DHCSR_S_SUIDE_Pos) /*!< DCB DHCSR: Secure unprivileged halting debug enabled Mask */ + +#define DCB_DHCSR_S_NSUIDE_Pos 21U /*!< DCB DHCSR: Non-secure unprivileged halting debug enabled Position */ +#define DCB_DHCSR_S_NSUIDE_Msk (0x1UL << DCB_DHCSR_S_NSUIDE_Pos) /*!< DCB DHCSR: Non-secure unprivileged halting debug enabled Mask */ + +#define DCB_DHCSR_S_SDE_Pos 20U /*!< DCB DHCSR: Secure debug enabled Position */ +#define DCB_DHCSR_S_SDE_Msk (0x1UL << DCB_DHCSR_S_SDE_Pos) /*!< DCB DHCSR: Secure debug enabled Mask */ + +#define DCB_DHCSR_S_LOCKUP_Pos 19U /*!< DCB DHCSR: Lockup status Position */ +#define DCB_DHCSR_S_LOCKUP_Msk (0x1UL << DCB_DHCSR_S_LOCKUP_Pos) /*!< DCB DHCSR: Lockup status Mask */ + +#define DCB_DHCSR_S_SLEEP_Pos 18U /*!< DCB DHCSR: Sleeping status Position */ +#define DCB_DHCSR_S_SLEEP_Msk (0x1UL << DCB_DHCSR_S_SLEEP_Pos) /*!< DCB DHCSR: Sleeping status Mask */ + +#define DCB_DHCSR_S_HALT_Pos 17U /*!< DCB DHCSR: Halted status Position */ +#define DCB_DHCSR_S_HALT_Msk (0x1UL << DCB_DHCSR_S_HALT_Pos) /*!< DCB DHCSR: Halted status Mask */ + +#define DCB_DHCSR_S_REGRDY_Pos 16U /*!< DCB DHCSR: Register ready status Position */ +#define DCB_DHCSR_S_REGRDY_Msk (0x1UL << DCB_DHCSR_S_REGRDY_Pos) /*!< DCB DHCSR: Register ready status Mask */ + +#define DCB_DHCSR_C_PMOV_Pos 6U /*!< DCB DHCSR: Halt on PMU overflow control Position */ +#define DCB_DHCSR_C_PMOV_Msk (0x1UL << DCB_DHCSR_C_PMOV_Pos) /*!< DCB DHCSR: Halt on PMU overflow control Mask */ + +#define DCB_DHCSR_C_SNAPSTALL_Pos 5U /*!< DCB DHCSR: Snap stall control Position */ +#define DCB_DHCSR_C_SNAPSTALL_Msk (0x1UL << DCB_DHCSR_C_SNAPSTALL_Pos) /*!< DCB DHCSR: Snap stall control Mask */ + +#define DCB_DHCSR_C_MASKINTS_Pos 3U /*!< DCB DHCSR: Mask interrupts control Position */ +#define DCB_DHCSR_C_MASKINTS_Msk (0x1UL << DCB_DHCSR_C_MASKINTS_Pos) /*!< DCB DHCSR: Mask interrupts control Mask */ + +#define DCB_DHCSR_C_STEP_Pos 2U /*!< DCB DHCSR: Step control Position */ +#define DCB_DHCSR_C_STEP_Msk (0x1UL << DCB_DHCSR_C_STEP_Pos) /*!< DCB DHCSR: Step control Mask */ + +#define DCB_DHCSR_C_HALT_Pos 1U /*!< DCB DHCSR: Halt control Position */ +#define DCB_DHCSR_C_HALT_Msk (0x1UL << DCB_DHCSR_C_HALT_Pos) /*!< DCB DHCSR: Halt control Mask */ + +#define DCB_DHCSR_C_DEBUGEN_Pos 0U /*!< DCB DHCSR: Debug enable control Position */ +#define DCB_DHCSR_C_DEBUGEN_Msk (0x1UL /*<< DCB_DHCSR_C_DEBUGEN_Pos*/) /*!< DCB DHCSR: Debug enable control Mask */ + +/* DCRSR, Debug Core Register Select Register Definitions */ +#define DCB_DCRSR_REGWnR_Pos 16U /*!< DCB DCRSR: Register write/not-read Position */ +#define DCB_DCRSR_REGWnR_Msk (0x1UL << DCB_DCRSR_REGWnR_Pos) /*!< DCB DCRSR: Register write/not-read Mask */ + +#define DCB_DCRSR_REGSEL_Pos 0U /*!< DCB DCRSR: Register selector Position */ +#define DCB_DCRSR_REGSEL_Msk (0x7FUL /*<< DCB_DCRSR_REGSEL_Pos*/) /*!< DCB DCRSR: Register selector Mask */ + +/* DCRDR, Debug Core Register Data Register Definitions */ +#define DCB_DCRDR_DBGTMP_Pos 0U /*!< DCB DCRDR: Data temporary buffer Position */ +#define DCB_DCRDR_DBGTMP_Msk (0xFFFFFFFFUL /*<< DCB_DCRDR_DBGTMP_Pos*/) /*!< DCB DCRDR: Data temporary buffer Mask */ + +/* DEMCR, Debug Exception and Monitor Control Register Definitions */ +#define DCB_DEMCR_TRCENA_Pos 24U /*!< DCB DEMCR: Trace enable Position */ +#define DCB_DEMCR_TRCENA_Msk (0x1UL << DCB_DEMCR_TRCENA_Pos) /*!< DCB DEMCR: Trace enable Mask */ + +#define DCB_DEMCR_MONPRKEY_Pos 23U /*!< DCB DEMCR: Monitor pend req key Position */ +#define DCB_DEMCR_MONPRKEY_Msk (0x1UL << DCB_DEMCR_MONPRKEY_Pos) /*!< DCB DEMCR: Monitor pend req key Mask */ + +#define DCB_DEMCR_UMON_EN_Pos 21U /*!< DCB DEMCR: Unprivileged monitor enable Position */ +#define DCB_DEMCR_UMON_EN_Msk (0x1UL << DCB_DEMCR_UMON_EN_Pos) /*!< DCB DEMCR: Unprivileged monitor enable Mask */ + +#define DCB_DEMCR_SDME_Pos 20U /*!< DCB DEMCR: Secure DebugMonitor enable Position */ +#define DCB_DEMCR_SDME_Msk (0x1UL << DCB_DEMCR_SDME_Pos) /*!< DCB DEMCR: Secure DebugMonitor enable Mask */ + +#define DCB_DEMCR_MON_REQ_Pos 19U /*!< DCB DEMCR: Monitor request Position */ +#define DCB_DEMCR_MON_REQ_Msk (0x1UL << DCB_DEMCR_MON_REQ_Pos) /*!< DCB DEMCR: Monitor request Mask */ + +#define DCB_DEMCR_MON_STEP_Pos 18U /*!< DCB DEMCR: Monitor step Position */ +#define DCB_DEMCR_MON_STEP_Msk (0x1UL << DCB_DEMCR_MON_STEP_Pos) /*!< DCB DEMCR: Monitor step Mask */ + +#define DCB_DEMCR_MON_PEND_Pos 17U /*!< DCB DEMCR: Monitor pend Position */ +#define DCB_DEMCR_MON_PEND_Msk (0x1UL << DCB_DEMCR_MON_PEND_Pos) /*!< DCB DEMCR: Monitor pend Mask */ + +#define DCB_DEMCR_MON_EN_Pos 16U /*!< DCB DEMCR: Monitor enable Position */ +#define DCB_DEMCR_MON_EN_Msk (0x1UL << DCB_DEMCR_MON_EN_Pos) /*!< DCB DEMCR: Monitor enable Mask */ + +#define DCB_DEMCR_VC_SFERR_Pos 11U /*!< DCB DEMCR: Vector Catch SecureFault Position */ +#define DCB_DEMCR_VC_SFERR_Msk (0x1UL << DCB_DEMCR_VC_SFERR_Pos) /*!< DCB DEMCR: Vector Catch SecureFault Mask */ + +#define DCB_DEMCR_VC_HARDERR_Pos 10U /*!< DCB DEMCR: Vector Catch HardFault errors Position */ +#define DCB_DEMCR_VC_HARDERR_Msk (0x1UL << DCB_DEMCR_VC_HARDERR_Pos) /*!< DCB DEMCR: Vector Catch HardFault errors Mask */ + +#define DCB_DEMCR_VC_INTERR_Pos 9U /*!< DCB DEMCR: Vector Catch interrupt errors Position */ +#define DCB_DEMCR_VC_INTERR_Msk (0x1UL << DCB_DEMCR_VC_INTERR_Pos) /*!< DCB DEMCR: Vector Catch interrupt errors Mask */ + +#define DCB_DEMCR_VC_BUSERR_Pos 8U /*!< DCB DEMCR: Vector Catch BusFault errors Position */ +#define DCB_DEMCR_VC_BUSERR_Msk (0x1UL << DCB_DEMCR_VC_BUSERR_Pos) /*!< DCB DEMCR: Vector Catch BusFault errors Mask */ + +#define DCB_DEMCR_VC_STATERR_Pos 7U /*!< DCB DEMCR: Vector Catch state errors Position */ +#define DCB_DEMCR_VC_STATERR_Msk (0x1UL << DCB_DEMCR_VC_STATERR_Pos) /*!< DCB DEMCR: Vector Catch state errors Mask */ + +#define DCB_DEMCR_VC_CHKERR_Pos 6U /*!< DCB DEMCR: Vector Catch check errors Position */ +#define DCB_DEMCR_VC_CHKERR_Msk (0x1UL << DCB_DEMCR_VC_CHKERR_Pos) /*!< DCB DEMCR: Vector Catch check errors Mask */ + +#define DCB_DEMCR_VC_NOCPERR_Pos 5U /*!< DCB DEMCR: Vector Catch NOCP errors Position */ +#define DCB_DEMCR_VC_NOCPERR_Msk (0x1UL << DCB_DEMCR_VC_NOCPERR_Pos) /*!< DCB DEMCR: Vector Catch NOCP errors Mask */ + +#define DCB_DEMCR_VC_MMERR_Pos 4U /*!< DCB DEMCR: Vector Catch MemManage errors Position */ +#define DCB_DEMCR_VC_MMERR_Msk (0x1UL << DCB_DEMCR_VC_MMERR_Pos) /*!< DCB DEMCR: Vector Catch MemManage errors Mask */ + +#define DCB_DEMCR_VC_CORERESET_Pos 0U /*!< DCB DEMCR: Vector Catch Core reset Position */ +#define DCB_DEMCR_VC_CORERESET_Msk (0x1UL /*<< DCB_DEMCR_VC_CORERESET_Pos*/) /*!< DCB DEMCR: Vector Catch Core reset Mask */ + +/* DSCEMCR, Debug Set Clear Exception and Monitor Control Register Definitions */ +#define DCB_DSCEMCR_CLR_MON_REQ_Pos 19U /*!< DCB DSCEMCR: Clear monitor request Position */ +#define DCB_DSCEMCR_CLR_MON_REQ_Msk (0x1UL << DCB_DSCEMCR_CLR_MON_REQ_Pos) /*!< DCB DSCEMCR: Clear monitor request Mask */ + +#define DCB_DSCEMCR_CLR_MON_PEND_Pos 17U /*!< DCB DSCEMCR: Clear monitor pend Position */ +#define DCB_DSCEMCR_CLR_MON_PEND_Msk (0x1UL << DCB_DSCEMCR_CLR_MON_PEND_Pos) /*!< DCB DSCEMCR: Clear monitor pend Mask */ + +#define DCB_DSCEMCR_SET_MON_REQ_Pos 3U /*!< DCB DSCEMCR: Set monitor request Position */ +#define DCB_DSCEMCR_SET_MON_REQ_Msk (0x1UL << DCB_DSCEMCR_SET_MON_REQ_Pos) /*!< DCB DSCEMCR: Set monitor request Mask */ + +#define DCB_DSCEMCR_SET_MON_PEND_Pos 1U /*!< DCB DSCEMCR: Set monitor pend Position */ +#define DCB_DSCEMCR_SET_MON_PEND_Msk (0x1UL << DCB_DSCEMCR_SET_MON_PEND_Pos) /*!< DCB DSCEMCR: Set monitor pend Mask */ + +/* DAUTHCTRL, Debug Authentication Control Register Definitions */ +#define DCB_DAUTHCTRL_UIDEN_Pos 10U /*!< DCB DAUTHCTRL: Unprivileged Invasive Debug Enable Position */ +#define DCB_DAUTHCTRL_UIDEN_Msk (0x1UL << DCB_DAUTHCTRL_UIDEN_Pos) /*!< DCB DAUTHCTRL: Unprivileged Invasive Debug Enable Mask */ + +#define DCB_DAUTHCTRL_UIDAPEN_Pos 9U /*!< DCB DAUTHCTRL: Unprivileged Invasive DAP Access Enable Position */ +#define DCB_DAUTHCTRL_UIDAPEN_Msk (0x1UL << DCB_DAUTHCTRL_UIDAPEN_Pos) /*!< DCB DAUTHCTRL: Unprivileged Invasive DAP Access Enable Mask */ + +#define DCB_DAUTHCTRL_FSDMA_Pos 8U /*!< DCB DAUTHCTRL: Force Secure DebugMonitor Allowed Position */ +#define DCB_DAUTHCTRL_FSDMA_Msk (0x1UL << DCB_DAUTHCTRL_FSDMA_Pos) /*!< DCB DAUTHCTRL: Force Secure DebugMonitor Allowed Mask */ + +#define DCB_DAUTHCTRL_INTSPNIDEN_Pos 3U /*!< DCB DAUTHCTRL: Internal Secure non-invasive debug enable Position */ +#define DCB_DAUTHCTRL_INTSPNIDEN_Msk (0x1UL << DCB_DAUTHCTRL_INTSPNIDEN_Pos) /*!< DCB DAUTHCTRL: Internal Secure non-invasive debug enable Mask */ + +#define DCB_DAUTHCTRL_SPNIDENSEL_Pos 2U /*!< DCB DAUTHCTRL: Secure non-invasive debug enable select Position */ +#define DCB_DAUTHCTRL_SPNIDENSEL_Msk (0x1UL << DCB_DAUTHCTRL_SPNIDENSEL_Pos) /*!< DCB DAUTHCTRL: Secure non-invasive debug enable select Mask */ + +#define DCB_DAUTHCTRL_INTSPIDEN_Pos 1U /*!< DCB DAUTHCTRL: Internal Secure invasive debug enable Position */ +#define DCB_DAUTHCTRL_INTSPIDEN_Msk (0x1UL << DCB_DAUTHCTRL_INTSPIDEN_Pos) /*!< DCB DAUTHCTRL: Internal Secure invasive debug enable Mask */ + +#define DCB_DAUTHCTRL_SPIDENSEL_Pos 0U /*!< DCB DAUTHCTRL: Secure invasive debug enable select Position */ +#define DCB_DAUTHCTRL_SPIDENSEL_Msk (0x1UL /*<< DCB_DAUTHCTRL_SPIDENSEL_Pos*/) /*!< DCB DAUTHCTRL: Secure invasive debug enable select Mask */ + +/* DSCSR, Debug Security Control and Status Register Definitions */ +#define DCB_DSCSR_CDSKEY_Pos 17U /*!< DCB DSCSR: CDS write-enable key Position */ +#define DCB_DSCSR_CDSKEY_Msk (0x1UL << DCB_DSCSR_CDSKEY_Pos) /*!< DCB DSCSR: CDS write-enable key Mask */ + +#define DCB_DSCSR_CDS_Pos 16U /*!< DCB DSCSR: Current domain Secure Position */ +#define DCB_DSCSR_CDS_Msk (0x1UL << DCB_DSCSR_CDS_Pos) /*!< DCB DSCSR: Current domain Secure Mask */ + +#define DCB_DSCSR_SBRSEL_Pos 1U /*!< DCB DSCSR: Secure banked register select Position */ +#define DCB_DSCSR_SBRSEL_Msk (0x1UL << DCB_DSCSR_SBRSEL_Pos) /*!< DCB DSCSR: Secure banked register select Mask */ + +#define DCB_DSCSR_SBRSELEN_Pos 0U /*!< DCB DSCSR: Secure banked register select enable Position */ +#define DCB_DSCSR_SBRSELEN_Msk (0x1UL /*<< DCB_DSCSR_SBRSELEN_Pos*/) /*!< DCB DSCSR: Secure banked register select enable Mask */ + +/*@} end of group CMSIS_DCB */ + + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_DIB Debug Identification Block + \brief Type definitions for the Debug Identification Block Registers + @{ + */ + +/** + \brief Structure type to access the Debug Identification Block Registers (DIB). + */ +typedef struct +{ + __OM uint32_t DLAR; /*!< Offset: 0x000 ( /W) SCS Software Lock Access Register */ + __IM uint32_t DLSR; /*!< Offset: 0x004 (R/ ) SCS Software Lock Status Register */ + __IM uint32_t DAUTHSTATUS; /*!< Offset: 0x008 (R/ ) Debug Authentication Status Register */ + __IM uint32_t DDEVARCH; /*!< Offset: 0x00C (R/ ) SCS Device Architecture Register */ + __IM uint32_t DDEVTYPE; /*!< Offset: 0x010 (R/ ) SCS Device Type Register */ +} DIB_Type; + +/* DLAR, SCS Software Lock Access Register Definitions */ +#define DIB_DLAR_KEY_Pos 0U /*!< DIB DLAR: KEY Position */ +#define DIB_DLAR_KEY_Msk (0xFFFFFFFFUL /*<< DIB_DLAR_KEY_Pos */) /*!< DIB DLAR: KEY Mask */ + +/* DLSR, SCS Software Lock Status Register Definitions */ +#define DIB_DLSR_nTT_Pos 2U /*!< DIB DLSR: Not thirty-two bit Position */ +#define DIB_DLSR_nTT_Msk (0x1UL << DIB_DLSR_nTT_Pos ) /*!< DIB DLSR: Not thirty-two bit Mask */ + +#define DIB_DLSR_SLK_Pos 1U /*!< DIB DLSR: Software Lock status Position */ +#define DIB_DLSR_SLK_Msk (0x1UL << DIB_DLSR_SLK_Pos ) /*!< DIB DLSR: Software Lock status Mask */ + +#define DIB_DLSR_SLI_Pos 0U /*!< DIB DLSR: Software Lock implemented Position */ +#define DIB_DLSR_SLI_Msk (0x1UL /*<< DIB_DLSR_SLI_Pos*/) /*!< DIB DLSR: Software Lock implemented Mask */ + +/* DAUTHSTATUS, Debug Authentication Status Register Definitions */ +#define DIB_DAUTHSTATUS_SUNID_Pos 22U /*!< DIB DAUTHSTATUS: Secure Unprivileged Non-invasive Debug Allowed Position */ +#define DIB_DAUTHSTATUS_SUNID_Msk (0x3UL << DIB_DAUTHSTATUS_SUNID_Pos ) /*!< DIB DAUTHSTATUS: Secure Unprivileged Non-invasive Debug Allowed Mask */ + +#define DIB_DAUTHSTATUS_SUID_Pos 20U /*!< DIB DAUTHSTATUS: Secure Unprivileged Invasive Debug Allowed Position */ +#define DIB_DAUTHSTATUS_SUID_Msk (0x3UL << DIB_DAUTHSTATUS_SUID_Pos ) /*!< DIB DAUTHSTATUS: Secure Unprivileged Invasive Debug Allowed Mask */ + +#define DIB_DAUTHSTATUS_NSUNID_Pos 18U /*!< DIB DAUTHSTATUS: Non-secure Unprivileged Non-invasive Debug Allo Position */ +#define DIB_DAUTHSTATUS_NSUNID_Msk (0x3UL << DIB_DAUTHSTATUS_NSUNID_Pos ) /*!< DIB DAUTHSTATUS: Non-secure Unprivileged Non-invasive Debug Allo Mask */ + +#define DIB_DAUTHSTATUS_NSUID_Pos 16U /*!< DIB DAUTHSTATUS: Non-secure Unprivileged Invasive Debug Allowed Position */ +#define DIB_DAUTHSTATUS_NSUID_Msk (0x3UL << DIB_DAUTHSTATUS_NSUID_Pos ) /*!< DIB DAUTHSTATUS: Non-secure Unprivileged Invasive Debug Allowed Mask */ + +#define DIB_DAUTHSTATUS_SNID_Pos 6U /*!< DIB DAUTHSTATUS: Secure Non-invasive Debug Position */ +#define DIB_DAUTHSTATUS_SNID_Msk (0x3UL << DIB_DAUTHSTATUS_SNID_Pos ) /*!< DIB DAUTHSTATUS: Secure Non-invasive Debug Mask */ + +#define DIB_DAUTHSTATUS_SID_Pos 4U /*!< DIB DAUTHSTATUS: Secure Invasive Debug Position */ +#define DIB_DAUTHSTATUS_SID_Msk (0x3UL << DIB_DAUTHSTATUS_SID_Pos ) /*!< DIB DAUTHSTATUS: Secure Invasive Debug Mask */ + +#define DIB_DAUTHSTATUS_NSNID_Pos 2U /*!< DIB DAUTHSTATUS: Non-secure Non-invasive Debug Position */ +#define DIB_DAUTHSTATUS_NSNID_Msk (0x3UL << DIB_DAUTHSTATUS_NSNID_Pos ) /*!< DIB DAUTHSTATUS: Non-secure Non-invasive Debug Mask */ + +#define DIB_DAUTHSTATUS_NSID_Pos 0U /*!< DIB DAUTHSTATUS: Non-secure Invasive Debug Position */ +#define DIB_DAUTHSTATUS_NSID_Msk (0x3UL /*<< DIB_DAUTHSTATUS_NSID_Pos*/) /*!< DIB DAUTHSTATUS: Non-secure Invasive Debug Mask */ + +/* DDEVARCH, SCS Device Architecture Register Definitions */ +#define DIB_DDEVARCH_ARCHITECT_Pos 21U /*!< DIB DDEVARCH: Architect Position */ +#define DIB_DDEVARCH_ARCHITECT_Msk (0x7FFUL << DIB_DDEVARCH_ARCHITECT_Pos ) /*!< DIB DDEVARCH: Architect Mask */ + +#define DIB_DDEVARCH_PRESENT_Pos 20U /*!< DIB DDEVARCH: DEVARCH Present Position */ +#define DIB_DDEVARCH_PRESENT_Msk (0x1FUL << DIB_DDEVARCH_PRESENT_Pos ) /*!< DIB DDEVARCH: DEVARCH Present Mask */ + +#define DIB_DDEVARCH_REVISION_Pos 16U /*!< DIB DDEVARCH: Revision Position */ +#define DIB_DDEVARCH_REVISION_Msk (0xFUL << DIB_DDEVARCH_REVISION_Pos ) /*!< DIB DDEVARCH: Revision Mask */ + +#define DIB_DDEVARCH_ARCHVER_Pos 12U /*!< DIB DDEVARCH: Architecture Version Position */ +#define DIB_DDEVARCH_ARCHVER_Msk (0xFUL << DIB_DDEVARCH_ARCHVER_Pos ) /*!< DIB DDEVARCH: Architecture Version Mask */ + +#define DIB_DDEVARCH_ARCHPART_Pos 0U /*!< DIB DDEVARCH: Architecture Part Position */ +#define DIB_DDEVARCH_ARCHPART_Msk (0xFFFUL /*<< DIB_DDEVARCH_ARCHPART_Pos*/) /*!< DIB DDEVARCH: Architecture Part Mask */ + +/* DDEVTYPE, SCS Device Type Register Definitions */ +#define DIB_DDEVTYPE_SUB_Pos 4U /*!< DIB DDEVTYPE: Sub-type Position */ +#define DIB_DDEVTYPE_SUB_Msk (0xFUL << DIB_DDEVTYPE_SUB_Pos ) /*!< DIB DDEVTYPE: Sub-type Mask */ + +#define DIB_DDEVTYPE_MAJOR_Pos 0U /*!< DIB DDEVTYPE: Major type Position */ +#define DIB_DDEVTYPE_MAJOR_Msk (0xFUL /*<< DIB_DDEVTYPE_MAJOR_Pos*/) /*!< DIB DDEVTYPE: Major type Mask */ + + +/*@} end of group CMSIS_DIB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_bitfield Core register bit field macros + \brief Macros for use with bit field definitions (xxx_Pos, xxx_Msk). + @{ + */ + +/** + \brief Mask and shift a bit field value for use in a register bit range. + \param[in] field Name of the register bit field. + \param[in] value Value of the bit field. This parameter is interpreted as an uint32_t type. + \return Masked and shifted value. +*/ +#define _VAL2FLD(field, value) (((uint32_t)(value) << field ## _Pos) & field ## _Msk) + +/** + \brief Mask and shift a register value to extract a bit filed value. + \param[in] field Name of the register bit field. + \param[in] value Value of register. This parameter is interpreted as an uint32_t type. + \return Masked and shifted bit field value. +*/ +#define _FLD2VAL(field, value) (((uint32_t)(value) & field ## _Msk) >> field ## _Pos) + +/*@} end of group CMSIS_core_bitfield */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_base Core Definitions + \brief Definitions for base addresses, unions, and structures. + @{ + */ + +/* Memory mapping of Core Hardware */ + #define SCS_BASE (0xE000E000UL) /*!< System Control Space Base Address */ + #define ITM_BASE (0xE0000000UL) /*!< ITM Base Address */ + #define DWT_BASE (0xE0001000UL) /*!< DWT Base Address */ + #define TPI_BASE (0xE0040000UL) /*!< TPI Base Address */ + #define CoreDebug_BASE (0xE000EDF0UL) /*!< \deprecated Core Debug Base Address */ + #define DCB_BASE (0xE000EDF0UL) /*!< DCB Base Address */ + #define DIB_BASE (0xE000EFB0UL) /*!< DIB Base Address */ + #define SysTick_BASE (SCS_BASE + 0x0010UL) /*!< SysTick Base Address */ + #define NVIC_BASE (SCS_BASE + 0x0100UL) /*!< NVIC Base Address */ + #define SCB_BASE (SCS_BASE + 0x0D00UL) /*!< System Control Block Base Address */ + + #define SCnSCB ((SCnSCB_Type *) SCS_BASE ) /*!< System control Register not in SCB */ + #define SCB ((SCB_Type *) SCB_BASE ) /*!< SCB configuration struct */ + #define SysTick ((SysTick_Type *) SysTick_BASE ) /*!< SysTick configuration struct */ + #define NVIC ((NVIC_Type *) NVIC_BASE ) /*!< NVIC configuration struct */ + #define ITM ((ITM_Type *) ITM_BASE ) /*!< ITM configuration struct */ + #define DWT ((DWT_Type *) DWT_BASE ) /*!< DWT configuration struct */ + #define TPI ((TPI_Type *) TPI_BASE ) /*!< TPI configuration struct */ + #define CoreDebug ((CoreDebug_Type *) CoreDebug_BASE ) /*!< \deprecated Core Debug configuration struct */ + #define DCB ((DCB_Type *) DCB_BASE ) /*!< DCB configuration struct */ + #define DIB ((DIB_Type *) DIB_BASE ) /*!< DIB configuration struct */ + + #if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + #define MPU_BASE (SCS_BASE + 0x0D90UL) /*!< Memory Protection Unit */ + #define MPU ((MPU_Type *) MPU_BASE ) /*!< Memory Protection Unit */ + #endif + + #if defined (__PMU_PRESENT) && (__PMU_PRESENT == 1U) + #define PMU_BASE (0xE0003000UL) /*!< PMU Base Address */ + #define PMU ((PMU_Type *) PMU_BASE ) /*!< PMU configuration struct */ + #endif + + #if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) + #define SAU_BASE (SCS_BASE + 0x0DD0UL) /*!< Security Attribution Unit */ + #define SAU ((SAU_Type *) SAU_BASE ) /*!< Security Attribution Unit */ + #endif + + #define FPU_BASE (SCS_BASE + 0x0F30UL) /*!< Floating Point Unit */ + #define FPU ((FPU_Type *) FPU_BASE ) /*!< Floating Point Unit */ + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) + #define SCS_BASE_NS (0xE002E000UL) /*!< System Control Space Base Address (non-secure address space) */ + #define CoreDebug_BASE_NS (0xE002EDF0UL) /*!< \deprecated Core Debug Base Address (non-secure address space) */ + #define DCB_BASE_NS (0xE002EDF0UL) /*!< DCB Base Address (non-secure address space) */ + #define DIB_BASE_NS (0xE002EFB0UL) /*!< DIB Base Address (non-secure address space) */ + #define SysTick_BASE_NS (SCS_BASE_NS + 0x0010UL) /*!< SysTick Base Address (non-secure address space) */ + #define NVIC_BASE_NS (SCS_BASE_NS + 0x0100UL) /*!< NVIC Base Address (non-secure address space) */ + #define SCB_BASE_NS (SCS_BASE_NS + 0x0D00UL) /*!< System Control Block Base Address (non-secure address space) */ + + #define SCnSCB_NS ((SCnSCB_Type *) SCS_BASE_NS ) /*!< System control Register not in SCB(non-secure address space) */ + #define SCB_NS ((SCB_Type *) SCB_BASE_NS ) /*!< SCB configuration struct (non-secure address space) */ + #define SysTick_NS ((SysTick_Type *) SysTick_BASE_NS ) /*!< SysTick configuration struct (non-secure address space) */ + #define NVIC_NS ((NVIC_Type *) NVIC_BASE_NS ) /*!< NVIC configuration struct (non-secure address space) */ + #define CoreDebug_NS ((CoreDebug_Type *) CoreDebug_BASE_NS) /*!< \deprecated Core Debug configuration struct (non-secure address space) */ + #define DCB_NS ((DCB_Type *) DCB_BASE_NS ) /*!< DCB configuration struct (non-secure address space) */ + #define DIB_NS ((DIB_Type *) DIB_BASE_NS ) /*!< DIB configuration struct (non-secure address space) */ + + #if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + #define MPU_BASE_NS (SCS_BASE_NS + 0x0D90UL) /*!< Memory Protection Unit (non-secure address space) */ + #define MPU_NS ((MPU_Type *) MPU_BASE_NS ) /*!< Memory Protection Unit (non-secure address space) */ + #endif + + #define FPU_BASE_NS (SCS_BASE_NS + 0x0F30UL) /*!< Floating Point Unit (non-secure address space) */ + #define FPU_NS ((FPU_Type *) FPU_BASE_NS ) /*!< Floating Point Unit (non-secure address space) */ + +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ +/*@} */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_register_aliases Backwards Compatibility Aliases + \brief Register alias definitions for backwards compatibility. + @{ + */ +#define ID_ADR (ID_AFR) /*!< SCB Auxiliary Feature Register */ +/*@} */ + + +/******************************************************************************* + * Hardware Abstraction Layer + Core Function Interface contains: + - Core NVIC Functions + - Core SysTick Functions + - Core Debug Functions + - Core Register Access Functions + ******************************************************************************/ +/** + \defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference +*/ + + + +/* ########################## NVIC functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_NVICFunctions NVIC Functions + \brief Functions that manage interrupts and exceptions via the NVIC. + @{ + */ + +#ifdef CMSIS_NVIC_VIRTUAL + #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE + #define CMSIS_NVIC_VIRTUAL_HEADER_FILE "cmsis_nvic_virtual.h" + #endif + #include CMSIS_NVIC_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetPriorityGrouping __NVIC_SetPriorityGrouping + #define NVIC_GetPriorityGrouping __NVIC_GetPriorityGrouping + #define NVIC_EnableIRQ __NVIC_EnableIRQ + #define NVIC_GetEnableIRQ __NVIC_GetEnableIRQ + #define NVIC_DisableIRQ __NVIC_DisableIRQ + #define NVIC_GetPendingIRQ __NVIC_GetPendingIRQ + #define NVIC_SetPendingIRQ __NVIC_SetPendingIRQ + #define NVIC_ClearPendingIRQ __NVIC_ClearPendingIRQ + #define NVIC_GetActive __NVIC_GetActive + #define NVIC_SetPriority __NVIC_SetPriority + #define NVIC_GetPriority __NVIC_GetPriority + #define NVIC_SystemReset __NVIC_SystemReset +#endif /* CMSIS_NVIC_VIRTUAL */ + +#ifdef CMSIS_VECTAB_VIRTUAL + #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE + #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE "cmsis_vectab_virtual.h" + #endif + #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetVector __NVIC_SetVector + #define NVIC_GetVector __NVIC_GetVector +#endif /* (CMSIS_VECTAB_VIRTUAL) */ + +#define NVIC_USER_IRQ_OFFSET 16 + + +/* Special LR values for Secure/Non-Secure call handling and exception handling */ + +/* Function Return Payload (from ARMv8-M Architecture Reference Manual) LR value on entry from Secure BLXNS */ +#define FNC_RETURN (0xFEFFFFFFUL) /* bit [0] ignored when processing a branch */ + +/* The following EXC_RETURN mask values are used to evaluate the LR on exception entry */ +#define EXC_RETURN_PREFIX (0xFF000000UL) /* bits [31:24] set to indicate an EXC_RETURN value */ +#define EXC_RETURN_S (0x00000040UL) /* bit [6] stack used to push registers: 0=Non-secure 1=Secure */ +#define EXC_RETURN_DCRS (0x00000020UL) /* bit [5] stacking rules for called registers: 0=skipped 1=saved */ +#define EXC_RETURN_FTYPE (0x00000010UL) /* bit [4] allocate stack for floating-point context: 0=done 1=skipped */ +#define EXC_RETURN_MODE (0x00000008UL) /* bit [3] processor mode for return: 0=Handler mode 1=Thread mode */ +#define EXC_RETURN_SPSEL (0x00000004UL) /* bit [2] stack pointer used to restore context: 0=MSP 1=PSP */ +#define EXC_RETURN_ES (0x00000001UL) /* bit [0] security state exception was taken to: 0=Non-secure 1=Secure */ + +/* Integrity Signature (from ARMv8-M Architecture Reference Manual) for exception context stacking */ +#if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) /* Value for processors with floating-point extension: */ +#define EXC_INTEGRITY_SIGNATURE (0xFEFA125AUL) /* bit [0] SFTC must match LR bit[4] EXC_RETURN_FTYPE */ +#else +#define EXC_INTEGRITY_SIGNATURE (0xFEFA125BUL) /* Value for processors without floating-point extension */ +#endif + + +/** + \brief Set Priority Grouping + \details Sets the priority grouping field using the required unlock sequence. + The parameter PriorityGroup is assigned to the field SCB->AIRCR [10:8] PRIGROUP field. + Only values from 0..7 are used. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Priority grouping field. + */ +__STATIC_INLINE void __NVIC_SetPriorityGrouping(uint32_t PriorityGroup) +{ + uint32_t reg_value; + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + + reg_value = SCB->AIRCR; /* read old register configuration */ + reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change */ + reg_value = (reg_value | + ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (PriorityGroupTmp << SCB_AIRCR_PRIGROUP_Pos) ); /* Insert write key and priority group */ + SCB->AIRCR = reg_value; +} + + +/** + \brief Get Priority Grouping + \details Reads the priority grouping field from the NVIC Interrupt Controller. + \return Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field). + */ +__STATIC_INLINE uint32_t __NVIC_GetPriorityGrouping(void) +{ + return ((uint32_t)((SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos)); +} + + +/** + \brief Enable Interrupt + \details Enables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + __COMPILER_BARRIER(); + NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __COMPILER_BARRIER(); + } +} + + +/** + \brief Get Interrupt Enable status + \details Returns a device specific interrupt enable status from the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt is not enabled. + \return 1 Interrupt is enabled. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Disable Interrupt + \details Disables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_DisableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __DSB(); + __ISB(); + } +} + + +/** + \brief Get Pending Interrupt + \details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not pending. + \return 1 Interrupt status is pending. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Pending Interrupt + \details Sets the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Clear Pending Interrupt + \details Clears the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Active Interrupt + \details Reads the active register in the NVIC and returns the active bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not active. + \return 1 Interrupt status is active. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetActive(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief Get Interrupt Target State + \details Reads the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 if interrupt is assigned to Secure + \return 1 if interrupt is assigned to Non Secure + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t NVIC_GetTargetState(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Interrupt Target State + \details Sets the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 if interrupt is assigned to Secure + 1 if interrupt is assigned to Non Secure + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t NVIC_SetTargetState(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] |= ((uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL))); + return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Clear Interrupt Target State + \details Clears the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 if interrupt is assigned to Secure + 1 if interrupt is assigned to Non Secure + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t NVIC_ClearTargetState(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] &= ~((uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL))); + return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + + +/** + \brief Set Interrupt Priority + \details Sets the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \param [in] priority Priority to set. + \note The priority cannot be set for every processor exception. + */ +__STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->IPR[((uint32_t)IRQn)] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } + else + { + SCB->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } +} + + +/** + \brief Get Interrupt Priority + \details Reads the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Interrupt Priority. + Value is aligned automatically to the implemented priority bits of the microcontroller. + */ +__STATIC_INLINE uint32_t __NVIC_GetPriority(IRQn_Type IRQn) +{ + + if ((int32_t)(IRQn) >= 0) + { + return(((uint32_t)NVIC->IPR[((uint32_t)IRQn)] >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return(((uint32_t)SCB->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] >> (8U - __NVIC_PRIO_BITS))); + } +} + + +/** + \brief Encode Priority + \details Encodes the priority for an interrupt with the given priority group, + preemptive priority value, and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Used priority group. + \param [in] PreemptPriority Preemptive priority value (starting from 0). + \param [in] SubPriority Subpriority value (starting from 0). + \return Encoded priority. Value can be used in the function \ref NVIC_SetPriority(). + */ +__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + return ( + ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) | + ((SubPriority & (uint32_t)((1UL << (SubPriorityBits )) - 1UL))) + ); +} + + +/** + \brief Decode Priority + \details Decodes an interrupt priority value with a given priority group to + preemptive priority value and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set. + \param [in] Priority Priority value, which can be retrieved with the function \ref NVIC_GetPriority(). + \param [in] PriorityGroup Used priority group. + \param [out] pPreemptPriority Preemptive priority value (starting from 0). + \param [out] pSubPriority Subpriority value (starting from 0). + */ +__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* const pPreemptPriority, uint32_t* const pSubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + *pPreemptPriority = (Priority >> SubPriorityBits) & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL); + *pSubPriority = (Priority ) & (uint32_t)((1UL << (SubPriorityBits )) - 1UL); +} + + +/** + \brief Set Interrupt Vector + \details Sets an interrupt vector in SRAM based interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + VTOR must been relocated to SRAM before. + \param [in] IRQn Interrupt number + \param [in] vector Address of interrupt handler function + */ +__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector) +{ + uint32_t *vectors = (uint32_t *)SCB->VTOR; + vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET] = vector; + __DSB(); +} + + +/** + \brief Get Interrupt Vector + \details Reads an interrupt vector from interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Address of interrupt handler function + */ +__STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn) +{ + uint32_t *vectors = (uint32_t *)SCB->VTOR; + return vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET]; +} + + +/** + \brief System Reset + \details Initiates a system reset request to reset the MCU. + */ +__NO_RETURN __STATIC_INLINE void __NVIC_SystemReset(void) +{ + __DSB(); /* Ensure all outstanding memory accesses included + buffered write are completed before reset */ + SCB->AIRCR = (uint32_t)((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) | + SCB_AIRCR_SYSRESETREQ_Msk ); /* Keep priority group unchanged */ + __DSB(); /* Ensure completion of memory access */ + + for(;;) /* wait until reset */ + { + __NOP(); + } +} + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief Set Priority Grouping (non-secure) + \details Sets the non-secure priority grouping field when in secure state using the required unlock sequence. + The parameter PriorityGroup is assigned to the field SCB->AIRCR [10:8] PRIGROUP field. + Only values from 0..7 are used. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Priority grouping field. + */ +__STATIC_INLINE void TZ_NVIC_SetPriorityGrouping_NS(uint32_t PriorityGroup) +{ + uint32_t reg_value; + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + + reg_value = SCB_NS->AIRCR; /* read old register configuration */ + reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change */ + reg_value = (reg_value | + ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (PriorityGroupTmp << SCB_AIRCR_PRIGROUP_Pos) ); /* Insert write key and priority group */ + SCB_NS->AIRCR = reg_value; +} + + +/** + \brief Get Priority Grouping (non-secure) + \details Reads the priority grouping field from the non-secure NVIC when in secure state. + \return Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field). + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetPriorityGrouping_NS(void) +{ + return ((uint32_t)((SCB_NS->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos)); +} + + +/** + \brief Enable Interrupt (non-secure) + \details Enables a device specific interrupt in the non-secure NVIC interrupt controller when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_EnableIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Interrupt Enable status (non-secure) + \details Returns a device specific interrupt enable status from the non-secure NVIC interrupt controller when in secure state. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt is not enabled. + \return 1 Interrupt is enabled. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetEnableIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Disable Interrupt (non-secure) + \details Disables a device specific interrupt in the non-secure NVIC interrupt controller when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_DisableIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Pending Interrupt (non-secure) + \details Reads the NVIC pending register in the non-secure NVIC when in secure state and returns the pending bit for the specified device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not pending. + \return 1 Interrupt status is pending. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetPendingIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Pending Interrupt (non-secure) + \details Sets the pending bit of a device specific interrupt in the non-secure NVIC pending register when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_SetPendingIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Clear Pending Interrupt (non-secure) + \details Clears the pending bit of a device specific interrupt in the non-secure NVIC pending register when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_ClearPendingIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Active Interrupt (non-secure) + \details Reads the active register in non-secure NVIC when in secure state and returns the active bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not active. + \return 1 Interrupt status is active. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetActive_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Interrupt Priority (non-secure) + \details Sets the priority of a non-secure device specific interrupt or a non-secure processor exception when in secure state. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \param [in] priority Priority to set. + \note The priority cannot be set for every non-secure processor exception. + */ +__STATIC_INLINE void TZ_NVIC_SetPriority_NS(IRQn_Type IRQn, uint32_t priority) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->IPR[((uint32_t)IRQn)] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } + else + { + SCB_NS->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } +} + + +/** + \brief Get Interrupt Priority (non-secure) + \details Reads the priority of a non-secure device specific interrupt or a non-secure processor exception when in secure state. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Interrupt Priority. Value is aligned automatically to the implemented priority bits of the microcontroller. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetPriority_NS(IRQn_Type IRQn) +{ + + if ((int32_t)(IRQn) >= 0) + { + return(((uint32_t)NVIC_NS->IPR[((uint32_t)IRQn)] >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return(((uint32_t)SCB_NS->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] >> (8U - __NVIC_PRIO_BITS))); + } +} +#endif /* defined (__ARM_FEATURE_CMSE) &&(__ARM_FEATURE_CMSE == 3U) */ + +/*@} end of CMSIS_Core_NVICFunctions */ + +/* ########################## MPU functions #################################### */ + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + +#include "mpu_armv8.h" + +#endif + +/* ########################## PMU functions and events #################################### */ + +#if defined (__PMU_PRESENT) && (__PMU_PRESENT == 1U) + +#include "pmu_armv8.h" + +#endif + +/* ########################## FPU functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_FpuFunctions FPU Functions + \brief Function that provides FPU type. + @{ + */ + +/** + \brief get FPU type + \details returns the FPU type + \returns + - \b 0: No FPU + - \b 1: Single precision FPU + - \b 2: Double + Single precision FPU + */ +__STATIC_INLINE uint32_t SCB_GetFPUType(void) +{ + uint32_t mvfr0; + + mvfr0 = FPU->MVFR0; + if ((mvfr0 & (FPU_MVFR0_FPSP_Msk | FPU_MVFR0_FPDP_Msk)) == 0x220U) + { + return 2U; /* Double + Single precision FPU */ + } + else if ((mvfr0 & (FPU_MVFR0_FPSP_Msk | FPU_MVFR0_FPDP_Msk)) == 0x020U) + { + return 1U; /* Single precision FPU */ + } + else + { + return 0U; /* No FPU */ + } +} + + +/*@} end of CMSIS_Core_FpuFunctions */ + +/* ########################## MVE functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_MveFunctions MVE Functions + \brief Function that provides MVE type. + @{ + */ + +/** + \brief get MVE type + \details returns the MVE type + \returns + - \b 0: No Vector Extension (MVE) + - \b 1: Integer Vector Extension (MVE-I) + - \b 2: Floating-point Vector Extension (MVE-F) + */ +__STATIC_INLINE uint32_t SCB_GetMVEType(void) +{ + const uint32_t mvfr1 = FPU->MVFR1; + if ((mvfr1 & FPU_MVFR1_MVE_Msk) == (0x2U << FPU_MVFR1_MVE_Pos)) + { + return 2U; + } + else if ((mvfr1 & FPU_MVFR1_MVE_Msk) == (0x1U << FPU_MVFR1_MVE_Pos)) + { + return 1U; + } + else + { + return 0U; + } +} + + +/*@} end of CMSIS_Core_MveFunctions */ + + +/* ########################## Cache functions #################################### */ + +#if ((defined (__ICACHE_PRESENT) && (__ICACHE_PRESENT == 1U)) || \ + (defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U))) +#include "cachel1_armv7.h" +#endif + + +/* ########################## SAU functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SAUFunctions SAU Functions + \brief Functions that configure the SAU. + @{ + */ + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) + +/** + \brief Enable SAU + \details Enables the Security Attribution Unit (SAU). + */ +__STATIC_INLINE void TZ_SAU_Enable(void) +{ + SAU->CTRL |= (SAU_CTRL_ENABLE_Msk); +} + + + +/** + \brief Disable SAU + \details Disables the Security Attribution Unit (SAU). + */ +__STATIC_INLINE void TZ_SAU_Disable(void) +{ + SAU->CTRL &= ~(SAU_CTRL_ENABLE_Msk); +} + +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + +/*@} end of CMSIS_Core_SAUFunctions */ + + + + +/* ################################## Debug Control function ############################################ */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_DCBFunctions Debug Control Functions + \brief Functions that access the Debug Control Block. + @{ + */ + + +/** + \brief Set Debug Authentication Control Register + \details writes to Debug Authentication Control register. + \param [in] value value to be writen. + */ +__STATIC_INLINE void DCB_SetAuthCtrl(uint32_t value) +{ + __DSB(); + __ISB(); + DCB->DAUTHCTRL = value; + __DSB(); + __ISB(); +} + + +/** + \brief Get Debug Authentication Control Register + \details Reads Debug Authentication Control register. + \return Debug Authentication Control Register. + */ +__STATIC_INLINE uint32_t DCB_GetAuthCtrl(void) +{ + return (DCB->DAUTHCTRL); +} + + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief Set Debug Authentication Control Register (non-secure) + \details writes to non-secure Debug Authentication Control register when in secure state. + \param [in] value value to be writen + */ +__STATIC_INLINE void TZ_DCB_SetAuthCtrl_NS(uint32_t value) +{ + __DSB(); + __ISB(); + DCB_NS->DAUTHCTRL = value; + __DSB(); + __ISB(); +} + + +/** + \brief Get Debug Authentication Control Register (non-secure) + \details Reads non-secure Debug Authentication Control register when in secure state. + \return Debug Authentication Control Register. + */ +__STATIC_INLINE uint32_t TZ_DCB_GetAuthCtrl_NS(void) +{ + return (DCB_NS->DAUTHCTRL); +} +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + +/*@} end of CMSIS_Core_DCBFunctions */ + + + + +/* ################################## Debug Identification function ############################################ */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_DIBFunctions Debug Identification Functions + \brief Functions that access the Debug Identification Block. + @{ + */ + + +/** + \brief Get Debug Authentication Status Register + \details Reads Debug Authentication Status register. + \return Debug Authentication Status Register. + */ +__STATIC_INLINE uint32_t DIB_GetAuthStatus(void) +{ + return (DIB->DAUTHSTATUS); +} + + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief Get Debug Authentication Status Register (non-secure) + \details Reads non-secure Debug Authentication Status register when in secure state. + \return Debug Authentication Status Register. + */ +__STATIC_INLINE uint32_t TZ_DIB_GetAuthStatus_NS(void) +{ + return (DIB_NS->DAUTHSTATUS); +} +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + +/*@} end of CMSIS_Core_DCBFunctions */ + + + + +/* ################################## SysTick function ############################################ */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SysTickFunctions SysTick Functions + \brief Functions that configure the System. + @{ + */ + +#if defined (__Vendor_SysTickConfig) && (__Vendor_SysTickConfig == 0U) + +/** + \brief System Tick Configuration + \details Initializes the System Timer and its interrupt, and starts the System Tick Timer. + Counter is in free running mode to generate periodic interrupts. + \param [in] ticks Number of ticks between two interrupts. + \return 0 Function succeeded. + \return 1 Function failed. + \note When the variable __Vendor_SysTickConfig is set to 1, then the + function SysTick_Config is not included. In this case, the file device.h + must contain a vendor-specific implementation of this function. + */ +__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks) +{ + if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) + { + return (1UL); /* Reload value impossible */ + } + + SysTick->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ + NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ + SysTick->VAL = 0UL; /* Load the SysTick Counter Value */ + SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0UL); /* Function successful */ +} + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief System Tick Configuration (non-secure) + \details Initializes the non-secure System Timer and its interrupt when in secure state, and starts the System Tick Timer. + Counter is in free running mode to generate periodic interrupts. + \param [in] ticks Number of ticks between two interrupts. + \return 0 Function succeeded. + \return 1 Function failed. + \note When the variable __Vendor_SysTickConfig is set to 1, then the + function TZ_SysTick_Config_NS is not included. In this case, the file device.h + must contain a vendor-specific implementation of this function. + + */ +__STATIC_INLINE uint32_t TZ_SysTick_Config_NS(uint32_t ticks) +{ + if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) + { + return (1UL); /* Reload value impossible */ + } + + SysTick_NS->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ + TZ_NVIC_SetPriority_NS (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ + SysTick_NS->VAL = 0UL; /* Load the SysTick Counter Value */ + SysTick_NS->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0UL); /* Function successful */ +} +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + +#endif + +/*@} end of CMSIS_Core_SysTickFunctions */ + + + +/* ##################################### Debug In/Output function ########################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_core_DebugFunctions ITM Functions + \brief Functions that access the ITM debug interface. + @{ + */ + +extern volatile int32_t ITM_RxBuffer; /*!< External variable to receive characters. */ +#define ITM_RXBUFFER_EMPTY ((int32_t)0x5AA55AA5U) /*!< Value identifying \ref ITM_RxBuffer is ready for next character. */ + + +/** + \brief ITM Send Character + \details Transmits a character via the ITM channel 0, and + \li Just returns when no debugger is connected that has booked the output. + \li Is blocking when a debugger is connected, but the previous character sent has not been transmitted. + \param [in] ch Character to transmit. + \returns Character to transmit. + */ +__STATIC_INLINE uint32_t ITM_SendChar (uint32_t ch) +{ + if (((ITM->TCR & ITM_TCR_ITMENA_Msk) != 0UL) && /* ITM enabled */ + ((ITM->TER & 1UL ) != 0UL) ) /* ITM Port #0 enabled */ + { + while (ITM->PORT[0U].u32 == 0UL) + { + __NOP(); + } + ITM->PORT[0U].u8 = (uint8_t)ch; + } + return (ch); +} + + +/** + \brief ITM Receive Character + \details Inputs a character via the external variable \ref ITM_RxBuffer. + \return Received character. + \return -1 No character pending. + */ +__STATIC_INLINE int32_t ITM_ReceiveChar (void) +{ + int32_t ch = -1; /* no character available */ + + if (ITM_RxBuffer != ITM_RXBUFFER_EMPTY) + { + ch = ITM_RxBuffer; + ITM_RxBuffer = ITM_RXBUFFER_EMPTY; /* ready for next character */ + } + + return (ch); +} + + +/** + \brief ITM Check Character + \details Checks whether a character is pending for reading in the variable \ref ITM_RxBuffer. + \return 0 No character available. + \return 1 Character available. + */ +__STATIC_INLINE int32_t ITM_CheckChar (void) +{ + + if (ITM_RxBuffer == ITM_RXBUFFER_EMPTY) + { + return (0); /* no character available */ + } + else + { + return (1); /* character available */ + } +} + +/*@} end of CMSIS_core_DebugFunctions */ + + + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_ARMV81MML_H_DEPENDANT */ + +#endif /* __CMSIS_GENERIC */ diff --git a/bsp/renesas/ra8m1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/core_armv8mbl.h b/bsp/renesas/ra8m1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/core_armv8mbl.h new file mode 100644 index 000000000000..932d3d188bfa --- /dev/null +++ b/bsp/renesas/ra8m1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/core_armv8mbl.h @@ -0,0 +1,2222 @@ +/**************************************************************************//** + * @file core_armv8mbl.h + * @brief CMSIS Armv8-M Baseline Core Peripheral Access Layer Header File + * @version V5.1.0 + * @date 27. March 2020 + ******************************************************************************/ +/* + * Copyright (c) 2009-2020 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#elif defined (__clang__) + #pragma clang system_header /* treat file as system include file */ +#elif defined ( __GNUC__ ) + #pragma GCC diagnostic ignored "-Wpedantic" /* disable pedantic warning due to unnamed structs/unions */ +#endif + +#ifndef __CORE_ARMV8MBL_H_GENERIC +#define __CORE_ARMV8MBL_H_GENERIC + +#include + +#ifdef __cplusplus + extern "C" { +#endif + +/** + \page CMSIS_MISRA_Exceptions MISRA-C:2004 Compliance Exceptions + CMSIS violates the following MISRA-C:2004 rules: + + \li Required Rule 8.5, object/function definition in header file.
+ Function definitions in header files are used to allow 'inlining'. + + \li Required Rule 18.4, declaration of union type or object of union type: '{...}'.
+ Unions are used for effective representation of core registers. + + \li Advisory Rule 19.7, Function-like macro defined.
+ Function-like macros are used to allow more efficient code. + */ + + +/******************************************************************************* + * CMSIS definitions + ******************************************************************************/ +/** + \ingroup Cortex_ARMv8MBL + @{ + */ + +#include "cmsis_version.h" + +/* CMSIS definitions */ +#define __ARMv8MBL_CMSIS_VERSION_MAIN (__CM_CMSIS_VERSION_MAIN) /*!< \deprecated [31:16] CMSIS HAL main version */ +#define __ARMv8MBL_CMSIS_VERSION_SUB (__CM_CMSIS_VERSION_SUB) /*!< \deprecated [15:0] CMSIS HAL sub version */ +#define __ARMv8MBL_CMSIS_VERSION ((__ARMv8MBL_CMSIS_VERSION_MAIN << 16U) | \ + __ARMv8MBL_CMSIS_VERSION_SUB ) /*!< \deprecated CMSIS HAL version number */ + +#define __CORTEX_M (2U) /*!< Cortex-M Core */ + +/** __FPU_USED indicates whether an FPU is used or not. + This core does not support an FPU at all +*/ +#define __FPU_USED 0U + +#if defined ( __CC_ARM ) + #if defined __TARGET_FPU_VFP + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) + #if defined __ARM_FP + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __GNUC__ ) + #if defined (__VFP_FP__) && !defined(__SOFTFP__) + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __ICCARM__ ) + #if defined __ARMVFP__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __TI_ARM__ ) + #if defined __TI_VFP_SUPPORT__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __TASKING__ ) + #if defined __FPU_VFP__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __CSMC__ ) + #if ( __CSMC__ & 0x400U) + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#endif + +#include "cmsis_compiler.h" /* CMSIS compiler specific defines */ + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_ARMV8MBL_H_GENERIC */ + +#ifndef __CMSIS_GENERIC + +#ifndef __CORE_ARMV8MBL_H_DEPENDANT +#define __CORE_ARMV8MBL_H_DEPENDANT + +#ifdef __cplusplus + extern "C" { +#endif + +/* check device defines and use defaults */ +#if defined __CHECK_DEVICE_DEFINES + #ifndef __ARMv8MBL_REV + #define __ARMv8MBL_REV 0x0000U + #warning "__ARMv8MBL_REV not defined in device header file; using default!" + #endif + + #ifndef __FPU_PRESENT + #define __FPU_PRESENT 0U + #warning "__FPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __MPU_PRESENT + #define __MPU_PRESENT 0U + #warning "__MPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __SAUREGION_PRESENT + #define __SAUREGION_PRESENT 0U + #warning "__SAUREGION_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __VTOR_PRESENT + #define __VTOR_PRESENT 0U + #warning "__VTOR_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __NVIC_PRIO_BITS + #define __NVIC_PRIO_BITS 2U + #warning "__NVIC_PRIO_BITS not defined in device header file; using default!" + #endif + + #ifndef __Vendor_SysTickConfig + #define __Vendor_SysTickConfig 0U + #warning "__Vendor_SysTickConfig not defined in device header file; using default!" + #endif + + #ifndef __ETM_PRESENT + #define __ETM_PRESENT 0U + #warning "__ETM_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __MTB_PRESENT + #define __MTB_PRESENT 0U + #warning "__MTB_PRESENT not defined in device header file; using default!" + #endif + +#endif + +/* IO definitions (access restrictions to peripheral registers) */ +/** + \defgroup CMSIS_glob_defs CMSIS Global Defines + + IO Type Qualifiers are used + \li to specify the access to peripheral variables. + \li for automatic generation of peripheral register debug information. +*/ +#ifdef __cplusplus + #define __I volatile /*!< Defines 'read only' permissions */ +#else + #define __I volatile const /*!< Defines 'read only' permissions */ +#endif +#define __O volatile /*!< Defines 'write only' permissions */ +#define __IO volatile /*!< Defines 'read / write' permissions */ + +/* following defines should be used for structure members */ +#define __IM volatile const /*! Defines 'read only' structure member permissions */ +#define __OM volatile /*! Defines 'write only' structure member permissions */ +#define __IOM volatile /*! Defines 'read / write' structure member permissions */ + +/*@} end of group ARMv8MBL */ + + + +/******************************************************************************* + * Register Abstraction + Core Register contain: + - Core Register + - Core NVIC Register + - Core SCB Register + - Core SysTick Register + - Core Debug Register + - Core MPU Register + - Core SAU Register + ******************************************************************************/ +/** + \defgroup CMSIS_core_register Defines and Type Definitions + \brief Type definitions and defines for Cortex-M processor based devices. +*/ + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CORE Status and Control Registers + \brief Core Register type definitions. + @{ + */ + +/** + \brief Union type to access the Application Program Status Register (APSR). + */ +typedef union +{ + struct + { + uint32_t _reserved0:28; /*!< bit: 0..27 Reserved */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} APSR_Type; + +/* APSR Register Definitions */ +#define APSR_N_Pos 31U /*!< APSR: N Position */ +#define APSR_N_Msk (1UL << APSR_N_Pos) /*!< APSR: N Mask */ + +#define APSR_Z_Pos 30U /*!< APSR: Z Position */ +#define APSR_Z_Msk (1UL << APSR_Z_Pos) /*!< APSR: Z Mask */ + +#define APSR_C_Pos 29U /*!< APSR: C Position */ +#define APSR_C_Msk (1UL << APSR_C_Pos) /*!< APSR: C Mask */ + +#define APSR_V_Pos 28U /*!< APSR: V Position */ +#define APSR_V_Msk (1UL << APSR_V_Pos) /*!< APSR: V Mask */ + + +/** + \brief Union type to access the Interrupt Program Status Register (IPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:23; /*!< bit: 9..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} IPSR_Type; + +/* IPSR Register Definitions */ +#define IPSR_ISR_Pos 0U /*!< IPSR: ISR Position */ +#define IPSR_ISR_Msk (0x1FFUL /*<< IPSR_ISR_Pos*/) /*!< IPSR: ISR Mask */ + + +/** + \brief Union type to access the Special-Purpose Program Status Registers (xPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:15; /*!< bit: 9..23 Reserved */ + uint32_t T:1; /*!< bit: 24 Thumb bit (read 0) */ + uint32_t _reserved1:3; /*!< bit: 25..27 Reserved */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} xPSR_Type; + +/* xPSR Register Definitions */ +#define xPSR_N_Pos 31U /*!< xPSR: N Position */ +#define xPSR_N_Msk (1UL << xPSR_N_Pos) /*!< xPSR: N Mask */ + +#define xPSR_Z_Pos 30U /*!< xPSR: Z Position */ +#define xPSR_Z_Msk (1UL << xPSR_Z_Pos) /*!< xPSR: Z Mask */ + +#define xPSR_C_Pos 29U /*!< xPSR: C Position */ +#define xPSR_C_Msk (1UL << xPSR_C_Pos) /*!< xPSR: C Mask */ + +#define xPSR_V_Pos 28U /*!< xPSR: V Position */ +#define xPSR_V_Msk (1UL << xPSR_V_Pos) /*!< xPSR: V Mask */ + +#define xPSR_T_Pos 24U /*!< xPSR: T Position */ +#define xPSR_T_Msk (1UL << xPSR_T_Pos) /*!< xPSR: T Mask */ + +#define xPSR_ISR_Pos 0U /*!< xPSR: ISR Position */ +#define xPSR_ISR_Msk (0x1FFUL /*<< xPSR_ISR_Pos*/) /*!< xPSR: ISR Mask */ + + +/** + \brief Union type to access the Control Registers (CONTROL). + */ +typedef union +{ + struct + { + uint32_t nPRIV:1; /*!< bit: 0 Execution privilege in Thread mode */ + uint32_t SPSEL:1; /*!< bit: 1 Stack-pointer select */ + uint32_t _reserved1:30; /*!< bit: 2..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} CONTROL_Type; + +/* CONTROL Register Definitions */ +#define CONTROL_SPSEL_Pos 1U /*!< CONTROL: SPSEL Position */ +#define CONTROL_SPSEL_Msk (1UL << CONTROL_SPSEL_Pos) /*!< CONTROL: SPSEL Mask */ + +#define CONTROL_nPRIV_Pos 0U /*!< CONTROL: nPRIV Position */ +#define CONTROL_nPRIV_Msk (1UL /*<< CONTROL_nPRIV_Pos*/) /*!< CONTROL: nPRIV Mask */ + +/*@} end of group CMSIS_CORE */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_NVIC Nested Vectored Interrupt Controller (NVIC) + \brief Type definitions for the NVIC Registers + @{ + */ + +/** + \brief Structure type to access the Nested Vectored Interrupt Controller (NVIC). + */ +typedef struct +{ + __IOM uint32_t ISER[16U]; /*!< Offset: 0x000 (R/W) Interrupt Set Enable Register */ + uint32_t RESERVED0[16U]; + __IOM uint32_t ICER[16U]; /*!< Offset: 0x080 (R/W) Interrupt Clear Enable Register */ + uint32_t RSERVED1[16U]; + __IOM uint32_t ISPR[16U]; /*!< Offset: 0x100 (R/W) Interrupt Set Pending Register */ + uint32_t RESERVED2[16U]; + __IOM uint32_t ICPR[16U]; /*!< Offset: 0x180 (R/W) Interrupt Clear Pending Register */ + uint32_t RESERVED3[16U]; + __IOM uint32_t IABR[16U]; /*!< Offset: 0x200 (R/W) Interrupt Active bit Register */ + uint32_t RESERVED4[16U]; + __IOM uint32_t ITNS[16U]; /*!< Offset: 0x280 (R/W) Interrupt Non-Secure State Register */ + uint32_t RESERVED5[16U]; + __IOM uint32_t IPR[124U]; /*!< Offset: 0x300 (R/W) Interrupt Priority Register */ +} NVIC_Type; + +/*@} end of group CMSIS_NVIC */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SCB System Control Block (SCB) + \brief Type definitions for the System Control Block Registers + @{ + */ + +/** + \brief Structure type to access the System Control Block (SCB). + */ +typedef struct +{ + __IM uint32_t CPUID; /*!< Offset: 0x000 (R/ ) CPUID Base Register */ + __IOM uint32_t ICSR; /*!< Offset: 0x004 (R/W) Interrupt Control and State Register */ +#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U) + __IOM uint32_t VTOR; /*!< Offset: 0x008 (R/W) Vector Table Offset Register */ +#else + uint32_t RESERVED0; +#endif + __IOM uint32_t AIRCR; /*!< Offset: 0x00C (R/W) Application Interrupt and Reset Control Register */ + __IOM uint32_t SCR; /*!< Offset: 0x010 (R/W) System Control Register */ + __IOM uint32_t CCR; /*!< Offset: 0x014 (R/W) Configuration Control Register */ + uint32_t RESERVED1; + __IOM uint32_t SHPR[2U]; /*!< Offset: 0x01C (R/W) System Handlers Priority Registers. [0] is RESERVED */ + __IOM uint32_t SHCSR; /*!< Offset: 0x024 (R/W) System Handler Control and State Register */ +} SCB_Type; + +/* SCB CPUID Register Definitions */ +#define SCB_CPUID_IMPLEMENTER_Pos 24U /*!< SCB CPUID: IMPLEMENTER Position */ +#define SCB_CPUID_IMPLEMENTER_Msk (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos) /*!< SCB CPUID: IMPLEMENTER Mask */ + +#define SCB_CPUID_VARIANT_Pos 20U /*!< SCB CPUID: VARIANT Position */ +#define SCB_CPUID_VARIANT_Msk (0xFUL << SCB_CPUID_VARIANT_Pos) /*!< SCB CPUID: VARIANT Mask */ + +#define SCB_CPUID_ARCHITECTURE_Pos 16U /*!< SCB CPUID: ARCHITECTURE Position */ +#define SCB_CPUID_ARCHITECTURE_Msk (0xFUL << SCB_CPUID_ARCHITECTURE_Pos) /*!< SCB CPUID: ARCHITECTURE Mask */ + +#define SCB_CPUID_PARTNO_Pos 4U /*!< SCB CPUID: PARTNO Position */ +#define SCB_CPUID_PARTNO_Msk (0xFFFUL << SCB_CPUID_PARTNO_Pos) /*!< SCB CPUID: PARTNO Mask */ + +#define SCB_CPUID_REVISION_Pos 0U /*!< SCB CPUID: REVISION Position */ +#define SCB_CPUID_REVISION_Msk (0xFUL /*<< SCB_CPUID_REVISION_Pos*/) /*!< SCB CPUID: REVISION Mask */ + +/* SCB Interrupt Control State Register Definitions */ +#define SCB_ICSR_PENDNMISET_Pos 31U /*!< SCB ICSR: PENDNMISET Position */ +#define SCB_ICSR_PENDNMISET_Msk (1UL << SCB_ICSR_PENDNMISET_Pos) /*!< SCB ICSR: PENDNMISET Mask */ + +#define SCB_ICSR_NMIPENDSET_Pos SCB_ICSR_PENDNMISET_Pos /*!< SCB ICSR: NMIPENDSET Position, backward compatibility */ +#define SCB_ICSR_NMIPENDSET_Msk SCB_ICSR_PENDNMISET_Msk /*!< SCB ICSR: NMIPENDSET Mask, backward compatibility */ + +#define SCB_ICSR_PENDNMICLR_Pos 30U /*!< SCB ICSR: PENDNMICLR Position */ +#define SCB_ICSR_PENDNMICLR_Msk (1UL << SCB_ICSR_PENDNMICLR_Pos) /*!< SCB ICSR: PENDNMICLR Mask */ + +#define SCB_ICSR_PENDSVSET_Pos 28U /*!< SCB ICSR: PENDSVSET Position */ +#define SCB_ICSR_PENDSVSET_Msk (1UL << SCB_ICSR_PENDSVSET_Pos) /*!< SCB ICSR: PENDSVSET Mask */ + +#define SCB_ICSR_PENDSVCLR_Pos 27U /*!< SCB ICSR: PENDSVCLR Position */ +#define SCB_ICSR_PENDSVCLR_Msk (1UL << SCB_ICSR_PENDSVCLR_Pos) /*!< SCB ICSR: PENDSVCLR Mask */ + +#define SCB_ICSR_PENDSTSET_Pos 26U /*!< SCB ICSR: PENDSTSET Position */ +#define SCB_ICSR_PENDSTSET_Msk (1UL << SCB_ICSR_PENDSTSET_Pos) /*!< SCB ICSR: PENDSTSET Mask */ + +#define SCB_ICSR_PENDSTCLR_Pos 25U /*!< SCB ICSR: PENDSTCLR Position */ +#define SCB_ICSR_PENDSTCLR_Msk (1UL << SCB_ICSR_PENDSTCLR_Pos) /*!< SCB ICSR: PENDSTCLR Mask */ + +#define SCB_ICSR_STTNS_Pos 24U /*!< SCB ICSR: STTNS Position (Security Extension) */ +#define SCB_ICSR_STTNS_Msk (1UL << SCB_ICSR_STTNS_Pos) /*!< SCB ICSR: STTNS Mask (Security Extension) */ + +#define SCB_ICSR_ISRPREEMPT_Pos 23U /*!< SCB ICSR: ISRPREEMPT Position */ +#define SCB_ICSR_ISRPREEMPT_Msk (1UL << SCB_ICSR_ISRPREEMPT_Pos) /*!< SCB ICSR: ISRPREEMPT Mask */ + +#define SCB_ICSR_ISRPENDING_Pos 22U /*!< SCB ICSR: ISRPENDING Position */ +#define SCB_ICSR_ISRPENDING_Msk (1UL << SCB_ICSR_ISRPENDING_Pos) /*!< SCB ICSR: ISRPENDING Mask */ + +#define SCB_ICSR_VECTPENDING_Pos 12U /*!< SCB ICSR: VECTPENDING Position */ +#define SCB_ICSR_VECTPENDING_Msk (0x1FFUL << SCB_ICSR_VECTPENDING_Pos) /*!< SCB ICSR: VECTPENDING Mask */ + +#define SCB_ICSR_RETTOBASE_Pos 11U /*!< SCB ICSR: RETTOBASE Position */ +#define SCB_ICSR_RETTOBASE_Msk (1UL << SCB_ICSR_RETTOBASE_Pos) /*!< SCB ICSR: RETTOBASE Mask */ + +#define SCB_ICSR_VECTACTIVE_Pos 0U /*!< SCB ICSR: VECTACTIVE Position */ +#define SCB_ICSR_VECTACTIVE_Msk (0x1FFUL /*<< SCB_ICSR_VECTACTIVE_Pos*/) /*!< SCB ICSR: VECTACTIVE Mask */ + +#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U) +/* SCB Vector Table Offset Register Definitions */ +#define SCB_VTOR_TBLOFF_Pos 7U /*!< SCB VTOR: TBLOFF Position */ +#define SCB_VTOR_TBLOFF_Msk (0x1FFFFFFUL << SCB_VTOR_TBLOFF_Pos) /*!< SCB VTOR: TBLOFF Mask */ +#endif + +/* SCB Application Interrupt and Reset Control Register Definitions */ +#define SCB_AIRCR_VECTKEY_Pos 16U /*!< SCB AIRCR: VECTKEY Position */ +#define SCB_AIRCR_VECTKEY_Msk (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos) /*!< SCB AIRCR: VECTKEY Mask */ + +#define SCB_AIRCR_VECTKEYSTAT_Pos 16U /*!< SCB AIRCR: VECTKEYSTAT Position */ +#define SCB_AIRCR_VECTKEYSTAT_Msk (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos) /*!< SCB AIRCR: VECTKEYSTAT Mask */ + +#define SCB_AIRCR_ENDIANESS_Pos 15U /*!< SCB AIRCR: ENDIANESS Position */ +#define SCB_AIRCR_ENDIANESS_Msk (1UL << SCB_AIRCR_ENDIANESS_Pos) /*!< SCB AIRCR: ENDIANESS Mask */ + +#define SCB_AIRCR_PRIS_Pos 14U /*!< SCB AIRCR: PRIS Position */ +#define SCB_AIRCR_PRIS_Msk (1UL << SCB_AIRCR_PRIS_Pos) /*!< SCB AIRCR: PRIS Mask */ + +#define SCB_AIRCR_BFHFNMINS_Pos 13U /*!< SCB AIRCR: BFHFNMINS Position */ +#define SCB_AIRCR_BFHFNMINS_Msk (1UL << SCB_AIRCR_BFHFNMINS_Pos) /*!< SCB AIRCR: BFHFNMINS Mask */ + +#define SCB_AIRCR_SYSRESETREQS_Pos 3U /*!< SCB AIRCR: SYSRESETREQS Position */ +#define SCB_AIRCR_SYSRESETREQS_Msk (1UL << SCB_AIRCR_SYSRESETREQS_Pos) /*!< SCB AIRCR: SYSRESETREQS Mask */ + +#define SCB_AIRCR_SYSRESETREQ_Pos 2U /*!< SCB AIRCR: SYSRESETREQ Position */ +#define SCB_AIRCR_SYSRESETREQ_Msk (1UL << SCB_AIRCR_SYSRESETREQ_Pos) /*!< SCB AIRCR: SYSRESETREQ Mask */ + +#define SCB_AIRCR_VECTCLRACTIVE_Pos 1U /*!< SCB AIRCR: VECTCLRACTIVE Position */ +#define SCB_AIRCR_VECTCLRACTIVE_Msk (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos) /*!< SCB AIRCR: VECTCLRACTIVE Mask */ + +/* SCB System Control Register Definitions */ +#define SCB_SCR_SEVONPEND_Pos 4U /*!< SCB SCR: SEVONPEND Position */ +#define SCB_SCR_SEVONPEND_Msk (1UL << SCB_SCR_SEVONPEND_Pos) /*!< SCB SCR: SEVONPEND Mask */ + +#define SCB_SCR_SLEEPDEEPS_Pos 3U /*!< SCB SCR: SLEEPDEEPS Position */ +#define SCB_SCR_SLEEPDEEPS_Msk (1UL << SCB_SCR_SLEEPDEEPS_Pos) /*!< SCB SCR: SLEEPDEEPS Mask */ + +#define SCB_SCR_SLEEPDEEP_Pos 2U /*!< SCB SCR: SLEEPDEEP Position */ +#define SCB_SCR_SLEEPDEEP_Msk (1UL << SCB_SCR_SLEEPDEEP_Pos) /*!< SCB SCR: SLEEPDEEP Mask */ + +#define SCB_SCR_SLEEPONEXIT_Pos 1U /*!< SCB SCR: SLEEPONEXIT Position */ +#define SCB_SCR_SLEEPONEXIT_Msk (1UL << SCB_SCR_SLEEPONEXIT_Pos) /*!< SCB SCR: SLEEPONEXIT Mask */ + +/* SCB Configuration Control Register Definitions */ +#define SCB_CCR_BP_Pos 18U /*!< SCB CCR: BP Position */ +#define SCB_CCR_BP_Msk (1UL << SCB_CCR_BP_Pos) /*!< SCB CCR: BP Mask */ + +#define SCB_CCR_IC_Pos 17U /*!< SCB CCR: IC Position */ +#define SCB_CCR_IC_Msk (1UL << SCB_CCR_IC_Pos) /*!< SCB CCR: IC Mask */ + +#define SCB_CCR_DC_Pos 16U /*!< SCB CCR: DC Position */ +#define SCB_CCR_DC_Msk (1UL << SCB_CCR_DC_Pos) /*!< SCB CCR: DC Mask */ + +#define SCB_CCR_STKOFHFNMIGN_Pos 10U /*!< SCB CCR: STKOFHFNMIGN Position */ +#define SCB_CCR_STKOFHFNMIGN_Msk (1UL << SCB_CCR_STKOFHFNMIGN_Pos) /*!< SCB CCR: STKOFHFNMIGN Mask */ + +#define SCB_CCR_BFHFNMIGN_Pos 8U /*!< SCB CCR: BFHFNMIGN Position */ +#define SCB_CCR_BFHFNMIGN_Msk (1UL << SCB_CCR_BFHFNMIGN_Pos) /*!< SCB CCR: BFHFNMIGN Mask */ + +#define SCB_CCR_DIV_0_TRP_Pos 4U /*!< SCB CCR: DIV_0_TRP Position */ +#define SCB_CCR_DIV_0_TRP_Msk (1UL << SCB_CCR_DIV_0_TRP_Pos) /*!< SCB CCR: DIV_0_TRP Mask */ + +#define SCB_CCR_UNALIGN_TRP_Pos 3U /*!< SCB CCR: UNALIGN_TRP Position */ +#define SCB_CCR_UNALIGN_TRP_Msk (1UL << SCB_CCR_UNALIGN_TRP_Pos) /*!< SCB CCR: UNALIGN_TRP Mask */ + +#define SCB_CCR_USERSETMPEND_Pos 1U /*!< SCB CCR: USERSETMPEND Position */ +#define SCB_CCR_USERSETMPEND_Msk (1UL << SCB_CCR_USERSETMPEND_Pos) /*!< SCB CCR: USERSETMPEND Mask */ + +/* SCB System Handler Control and State Register Definitions */ +#define SCB_SHCSR_HARDFAULTPENDED_Pos 21U /*!< SCB SHCSR: HARDFAULTPENDED Position */ +#define SCB_SHCSR_HARDFAULTPENDED_Msk (1UL << SCB_SHCSR_HARDFAULTPENDED_Pos) /*!< SCB SHCSR: HARDFAULTPENDED Mask */ + +#define SCB_SHCSR_SVCALLPENDED_Pos 15U /*!< SCB SHCSR: SVCALLPENDED Position */ +#define SCB_SHCSR_SVCALLPENDED_Msk (1UL << SCB_SHCSR_SVCALLPENDED_Pos) /*!< SCB SHCSR: SVCALLPENDED Mask */ + +#define SCB_SHCSR_SYSTICKACT_Pos 11U /*!< SCB SHCSR: SYSTICKACT Position */ +#define SCB_SHCSR_SYSTICKACT_Msk (1UL << SCB_SHCSR_SYSTICKACT_Pos) /*!< SCB SHCSR: SYSTICKACT Mask */ + +#define SCB_SHCSR_PENDSVACT_Pos 10U /*!< SCB SHCSR: PENDSVACT Position */ +#define SCB_SHCSR_PENDSVACT_Msk (1UL << SCB_SHCSR_PENDSVACT_Pos) /*!< SCB SHCSR: PENDSVACT Mask */ + +#define SCB_SHCSR_SVCALLACT_Pos 7U /*!< SCB SHCSR: SVCALLACT Position */ +#define SCB_SHCSR_SVCALLACT_Msk (1UL << SCB_SHCSR_SVCALLACT_Pos) /*!< SCB SHCSR: SVCALLACT Mask */ + +#define SCB_SHCSR_NMIACT_Pos 5U /*!< SCB SHCSR: NMIACT Position */ +#define SCB_SHCSR_NMIACT_Msk (1UL << SCB_SHCSR_NMIACT_Pos) /*!< SCB SHCSR: NMIACT Mask */ + +#define SCB_SHCSR_HARDFAULTACT_Pos 2U /*!< SCB SHCSR: HARDFAULTACT Position */ +#define SCB_SHCSR_HARDFAULTACT_Msk (1UL << SCB_SHCSR_HARDFAULTACT_Pos) /*!< SCB SHCSR: HARDFAULTACT Mask */ + +/*@} end of group CMSIS_SCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SysTick System Tick Timer (SysTick) + \brief Type definitions for the System Timer Registers. + @{ + */ + +/** + \brief Structure type to access the System Timer (SysTick). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SysTick Control and Status Register */ + __IOM uint32_t LOAD; /*!< Offset: 0x004 (R/W) SysTick Reload Value Register */ + __IOM uint32_t VAL; /*!< Offset: 0x008 (R/W) SysTick Current Value Register */ + __IM uint32_t CALIB; /*!< Offset: 0x00C (R/ ) SysTick Calibration Register */ +} SysTick_Type; + +/* SysTick Control / Status Register Definitions */ +#define SysTick_CTRL_COUNTFLAG_Pos 16U /*!< SysTick CTRL: COUNTFLAG Position */ +#define SysTick_CTRL_COUNTFLAG_Msk (1UL << SysTick_CTRL_COUNTFLAG_Pos) /*!< SysTick CTRL: COUNTFLAG Mask */ + +#define SysTick_CTRL_CLKSOURCE_Pos 2U /*!< SysTick CTRL: CLKSOURCE Position */ +#define SysTick_CTRL_CLKSOURCE_Msk (1UL << SysTick_CTRL_CLKSOURCE_Pos) /*!< SysTick CTRL: CLKSOURCE Mask */ + +#define SysTick_CTRL_TICKINT_Pos 1U /*!< SysTick CTRL: TICKINT Position */ +#define SysTick_CTRL_TICKINT_Msk (1UL << SysTick_CTRL_TICKINT_Pos) /*!< SysTick CTRL: TICKINT Mask */ + +#define SysTick_CTRL_ENABLE_Pos 0U /*!< SysTick CTRL: ENABLE Position */ +#define SysTick_CTRL_ENABLE_Msk (1UL /*<< SysTick_CTRL_ENABLE_Pos*/) /*!< SysTick CTRL: ENABLE Mask */ + +/* SysTick Reload Register Definitions */ +#define SysTick_LOAD_RELOAD_Pos 0U /*!< SysTick LOAD: RELOAD Position */ +#define SysTick_LOAD_RELOAD_Msk (0xFFFFFFUL /*<< SysTick_LOAD_RELOAD_Pos*/) /*!< SysTick LOAD: RELOAD Mask */ + +/* SysTick Current Register Definitions */ +#define SysTick_VAL_CURRENT_Pos 0U /*!< SysTick VAL: CURRENT Position */ +#define SysTick_VAL_CURRENT_Msk (0xFFFFFFUL /*<< SysTick_VAL_CURRENT_Pos*/) /*!< SysTick VAL: CURRENT Mask */ + +/* SysTick Calibration Register Definitions */ +#define SysTick_CALIB_NOREF_Pos 31U /*!< SysTick CALIB: NOREF Position */ +#define SysTick_CALIB_NOREF_Msk (1UL << SysTick_CALIB_NOREF_Pos) /*!< SysTick CALIB: NOREF Mask */ + +#define SysTick_CALIB_SKEW_Pos 30U /*!< SysTick CALIB: SKEW Position */ +#define SysTick_CALIB_SKEW_Msk (1UL << SysTick_CALIB_SKEW_Pos) /*!< SysTick CALIB: SKEW Mask */ + +#define SysTick_CALIB_TENMS_Pos 0U /*!< SysTick CALIB: TENMS Position */ +#define SysTick_CALIB_TENMS_Msk (0xFFFFFFUL /*<< SysTick_CALIB_TENMS_Pos*/) /*!< SysTick CALIB: TENMS Mask */ + +/*@} end of group CMSIS_SysTick */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_DWT Data Watchpoint and Trace (DWT) + \brief Type definitions for the Data Watchpoint and Trace (DWT) + @{ + */ + +/** + \brief Structure type to access the Data Watchpoint and Trace Register (DWT). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) Control Register */ + uint32_t RESERVED0[6U]; + __IM uint32_t PCSR; /*!< Offset: 0x01C (R/ ) Program Counter Sample Register */ + __IOM uint32_t COMP0; /*!< Offset: 0x020 (R/W) Comparator Register 0 */ + uint32_t RESERVED1[1U]; + __IOM uint32_t FUNCTION0; /*!< Offset: 0x028 (R/W) Function Register 0 */ + uint32_t RESERVED2[1U]; + __IOM uint32_t COMP1; /*!< Offset: 0x030 (R/W) Comparator Register 1 */ + uint32_t RESERVED3[1U]; + __IOM uint32_t FUNCTION1; /*!< Offset: 0x038 (R/W) Function Register 1 */ + uint32_t RESERVED4[1U]; + __IOM uint32_t COMP2; /*!< Offset: 0x040 (R/W) Comparator Register 2 */ + uint32_t RESERVED5[1U]; + __IOM uint32_t FUNCTION2; /*!< Offset: 0x048 (R/W) Function Register 2 */ + uint32_t RESERVED6[1U]; + __IOM uint32_t COMP3; /*!< Offset: 0x050 (R/W) Comparator Register 3 */ + uint32_t RESERVED7[1U]; + __IOM uint32_t FUNCTION3; /*!< Offset: 0x058 (R/W) Function Register 3 */ + uint32_t RESERVED8[1U]; + __IOM uint32_t COMP4; /*!< Offset: 0x060 (R/W) Comparator Register 4 */ + uint32_t RESERVED9[1U]; + __IOM uint32_t FUNCTION4; /*!< Offset: 0x068 (R/W) Function Register 4 */ + uint32_t RESERVED10[1U]; + __IOM uint32_t COMP5; /*!< Offset: 0x070 (R/W) Comparator Register 5 */ + uint32_t RESERVED11[1U]; + __IOM uint32_t FUNCTION5; /*!< Offset: 0x078 (R/W) Function Register 5 */ + uint32_t RESERVED12[1U]; + __IOM uint32_t COMP6; /*!< Offset: 0x080 (R/W) Comparator Register 6 */ + uint32_t RESERVED13[1U]; + __IOM uint32_t FUNCTION6; /*!< Offset: 0x088 (R/W) Function Register 6 */ + uint32_t RESERVED14[1U]; + __IOM uint32_t COMP7; /*!< Offset: 0x090 (R/W) Comparator Register 7 */ + uint32_t RESERVED15[1U]; + __IOM uint32_t FUNCTION7; /*!< Offset: 0x098 (R/W) Function Register 7 */ + uint32_t RESERVED16[1U]; + __IOM uint32_t COMP8; /*!< Offset: 0x0A0 (R/W) Comparator Register 8 */ + uint32_t RESERVED17[1U]; + __IOM uint32_t FUNCTION8; /*!< Offset: 0x0A8 (R/W) Function Register 8 */ + uint32_t RESERVED18[1U]; + __IOM uint32_t COMP9; /*!< Offset: 0x0B0 (R/W) Comparator Register 9 */ + uint32_t RESERVED19[1U]; + __IOM uint32_t FUNCTION9; /*!< Offset: 0x0B8 (R/W) Function Register 9 */ + uint32_t RESERVED20[1U]; + __IOM uint32_t COMP10; /*!< Offset: 0x0C0 (R/W) Comparator Register 10 */ + uint32_t RESERVED21[1U]; + __IOM uint32_t FUNCTION10; /*!< Offset: 0x0C8 (R/W) Function Register 10 */ + uint32_t RESERVED22[1U]; + __IOM uint32_t COMP11; /*!< Offset: 0x0D0 (R/W) Comparator Register 11 */ + uint32_t RESERVED23[1U]; + __IOM uint32_t FUNCTION11; /*!< Offset: 0x0D8 (R/W) Function Register 11 */ + uint32_t RESERVED24[1U]; + __IOM uint32_t COMP12; /*!< Offset: 0x0E0 (R/W) Comparator Register 12 */ + uint32_t RESERVED25[1U]; + __IOM uint32_t FUNCTION12; /*!< Offset: 0x0E8 (R/W) Function Register 12 */ + uint32_t RESERVED26[1U]; + __IOM uint32_t COMP13; /*!< Offset: 0x0F0 (R/W) Comparator Register 13 */ + uint32_t RESERVED27[1U]; + __IOM uint32_t FUNCTION13; /*!< Offset: 0x0F8 (R/W) Function Register 13 */ + uint32_t RESERVED28[1U]; + __IOM uint32_t COMP14; /*!< Offset: 0x100 (R/W) Comparator Register 14 */ + uint32_t RESERVED29[1U]; + __IOM uint32_t FUNCTION14; /*!< Offset: 0x108 (R/W) Function Register 14 */ + uint32_t RESERVED30[1U]; + __IOM uint32_t COMP15; /*!< Offset: 0x110 (R/W) Comparator Register 15 */ + uint32_t RESERVED31[1U]; + __IOM uint32_t FUNCTION15; /*!< Offset: 0x118 (R/W) Function Register 15 */ +} DWT_Type; + +/* DWT Control Register Definitions */ +#define DWT_CTRL_NUMCOMP_Pos 28U /*!< DWT CTRL: NUMCOMP Position */ +#define DWT_CTRL_NUMCOMP_Msk (0xFUL << DWT_CTRL_NUMCOMP_Pos) /*!< DWT CTRL: NUMCOMP Mask */ + +#define DWT_CTRL_NOTRCPKT_Pos 27U /*!< DWT CTRL: NOTRCPKT Position */ +#define DWT_CTRL_NOTRCPKT_Msk (0x1UL << DWT_CTRL_NOTRCPKT_Pos) /*!< DWT CTRL: NOTRCPKT Mask */ + +#define DWT_CTRL_NOEXTTRIG_Pos 26U /*!< DWT CTRL: NOEXTTRIG Position */ +#define DWT_CTRL_NOEXTTRIG_Msk (0x1UL << DWT_CTRL_NOEXTTRIG_Pos) /*!< DWT CTRL: NOEXTTRIG Mask */ + +#define DWT_CTRL_NOCYCCNT_Pos 25U /*!< DWT CTRL: NOCYCCNT Position */ +#define DWT_CTRL_NOCYCCNT_Msk (0x1UL << DWT_CTRL_NOCYCCNT_Pos) /*!< DWT CTRL: NOCYCCNT Mask */ + +#define DWT_CTRL_NOPRFCNT_Pos 24U /*!< DWT CTRL: NOPRFCNT Position */ +#define DWT_CTRL_NOPRFCNT_Msk (0x1UL << DWT_CTRL_NOPRFCNT_Pos) /*!< DWT CTRL: NOPRFCNT Mask */ + +/* DWT Comparator Function Register Definitions */ +#define DWT_FUNCTION_ID_Pos 27U /*!< DWT FUNCTION: ID Position */ +#define DWT_FUNCTION_ID_Msk (0x1FUL << DWT_FUNCTION_ID_Pos) /*!< DWT FUNCTION: ID Mask */ + +#define DWT_FUNCTION_MATCHED_Pos 24U /*!< DWT FUNCTION: MATCHED Position */ +#define DWT_FUNCTION_MATCHED_Msk (0x1UL << DWT_FUNCTION_MATCHED_Pos) /*!< DWT FUNCTION: MATCHED Mask */ + +#define DWT_FUNCTION_DATAVSIZE_Pos 10U /*!< DWT FUNCTION: DATAVSIZE Position */ +#define DWT_FUNCTION_DATAVSIZE_Msk (0x3UL << DWT_FUNCTION_DATAVSIZE_Pos) /*!< DWT FUNCTION: DATAVSIZE Mask */ + +#define DWT_FUNCTION_ACTION_Pos 4U /*!< DWT FUNCTION: ACTION Position */ +#define DWT_FUNCTION_ACTION_Msk (0x3UL << DWT_FUNCTION_ACTION_Pos) /*!< DWT FUNCTION: ACTION Mask */ + +#define DWT_FUNCTION_MATCH_Pos 0U /*!< DWT FUNCTION: MATCH Position */ +#define DWT_FUNCTION_MATCH_Msk (0xFUL /*<< DWT_FUNCTION_MATCH_Pos*/) /*!< DWT FUNCTION: MATCH Mask */ + +/*@}*/ /* end of group CMSIS_DWT */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_TPI Trace Port Interface (TPI) + \brief Type definitions for the Trace Port Interface (TPI) + @{ + */ + +/** + \brief Structure type to access the Trace Port Interface Register (TPI). + */ +typedef struct +{ + __IM uint32_t SSPSR; /*!< Offset: 0x000 (R/ ) Supported Parallel Port Sizes Register */ + __IOM uint32_t CSPSR; /*!< Offset: 0x004 (R/W) Current Parallel Port Sizes Register */ + uint32_t RESERVED0[2U]; + __IOM uint32_t ACPR; /*!< Offset: 0x010 (R/W) Asynchronous Clock Prescaler Register */ + uint32_t RESERVED1[55U]; + __IOM uint32_t SPPR; /*!< Offset: 0x0F0 (R/W) Selected Pin Protocol Register */ + uint32_t RESERVED2[131U]; + __IM uint32_t FFSR; /*!< Offset: 0x300 (R/ ) Formatter and Flush Status Register */ + __IOM uint32_t FFCR; /*!< Offset: 0x304 (R/W) Formatter and Flush Control Register */ + __IOM uint32_t PSCR; /*!< Offset: 0x308 (R/W) Periodic Synchronization Control Register */ + uint32_t RESERVED3[809U]; + __OM uint32_t LAR; /*!< Offset: 0xFB0 ( /W) Software Lock Access Register */ + __IM uint32_t LSR; /*!< Offset: 0xFB4 (R/ ) Software Lock Status Register */ + uint32_t RESERVED4[4U]; + __IM uint32_t TYPE; /*!< Offset: 0xFC8 (R/ ) Device Identifier Register */ + __IM uint32_t DEVTYPE; /*!< Offset: 0xFCC (R/ ) Device Type Register */ +} TPI_Type; + +/* TPI Asynchronous Clock Prescaler Register Definitions */ +#define TPI_ACPR_SWOSCALER_Pos 0U /*!< TPI ACPR: SWOSCALER Position */ +#define TPI_ACPR_SWOSCALER_Msk (0xFFFFUL /*<< TPI_ACPR_SWOSCALER_Pos*/) /*!< TPI ACPR: SWOSCALER Mask */ + +/* TPI Selected Pin Protocol Register Definitions */ +#define TPI_SPPR_TXMODE_Pos 0U /*!< TPI SPPR: TXMODE Position */ +#define TPI_SPPR_TXMODE_Msk (0x3UL /*<< TPI_SPPR_TXMODE_Pos*/) /*!< TPI SPPR: TXMODE Mask */ + +/* TPI Formatter and Flush Status Register Definitions */ +#define TPI_FFSR_FtNonStop_Pos 3U /*!< TPI FFSR: FtNonStop Position */ +#define TPI_FFSR_FtNonStop_Msk (0x1UL << TPI_FFSR_FtNonStop_Pos) /*!< TPI FFSR: FtNonStop Mask */ + +#define TPI_FFSR_TCPresent_Pos 2U /*!< TPI FFSR: TCPresent Position */ +#define TPI_FFSR_TCPresent_Msk (0x1UL << TPI_FFSR_TCPresent_Pos) /*!< TPI FFSR: TCPresent Mask */ + +#define TPI_FFSR_FtStopped_Pos 1U /*!< TPI FFSR: FtStopped Position */ +#define TPI_FFSR_FtStopped_Msk (0x1UL << TPI_FFSR_FtStopped_Pos) /*!< TPI FFSR: FtStopped Mask */ + +#define TPI_FFSR_FlInProg_Pos 0U /*!< TPI FFSR: FlInProg Position */ +#define TPI_FFSR_FlInProg_Msk (0x1UL /*<< TPI_FFSR_FlInProg_Pos*/) /*!< TPI FFSR: FlInProg Mask */ + +/* TPI Formatter and Flush Control Register Definitions */ +#define TPI_FFCR_TrigIn_Pos 8U /*!< TPI FFCR: TrigIn Position */ +#define TPI_FFCR_TrigIn_Msk (0x1UL << TPI_FFCR_TrigIn_Pos) /*!< TPI FFCR: TrigIn Mask */ + +#define TPI_FFCR_FOnMan_Pos 6U /*!< TPI FFCR: FOnMan Position */ +#define TPI_FFCR_FOnMan_Msk (0x1UL << TPI_FFCR_FOnMan_Pos) /*!< TPI FFCR: FOnMan Mask */ + +#define TPI_FFCR_EnFCont_Pos 1U /*!< TPI FFCR: EnFCont Position */ +#define TPI_FFCR_EnFCont_Msk (0x1UL << TPI_FFCR_EnFCont_Pos) /*!< TPI FFCR: EnFCont Mask */ + +/* TPI Periodic Synchronization Control Register Definitions */ +#define TPI_PSCR_PSCount_Pos 0U /*!< TPI PSCR: PSCount Position */ +#define TPI_PSCR_PSCount_Msk (0x1FUL /*<< TPI_PSCR_PSCount_Pos*/) /*!< TPI PSCR: TPSCount Mask */ + +/* TPI Software Lock Status Register Definitions */ +#define TPI_LSR_nTT_Pos 1U /*!< TPI LSR: Not thirty-two bit. Position */ +#define TPI_LSR_nTT_Msk (0x1UL << TPI_LSR_nTT_Pos) /*!< TPI LSR: Not thirty-two bit. Mask */ + +#define TPI_LSR_SLK_Pos 1U /*!< TPI LSR: Software Lock status Position */ +#define TPI_LSR_SLK_Msk (0x1UL << TPI_LSR_SLK_Pos) /*!< TPI LSR: Software Lock status Mask */ + +#define TPI_LSR_SLI_Pos 0U /*!< TPI LSR: Software Lock implemented Position */ +#define TPI_LSR_SLI_Msk (0x1UL /*<< TPI_LSR_SLI_Pos*/) /*!< TPI LSR: Software Lock implemented Mask */ + +/* TPI DEVID Register Definitions */ +#define TPI_DEVID_NRZVALID_Pos 11U /*!< TPI DEVID: NRZVALID Position */ +#define TPI_DEVID_NRZVALID_Msk (0x1UL << TPI_DEVID_NRZVALID_Pos) /*!< TPI DEVID: NRZVALID Mask */ + +#define TPI_DEVID_MANCVALID_Pos 10U /*!< TPI DEVID: MANCVALID Position */ +#define TPI_DEVID_MANCVALID_Msk (0x1UL << TPI_DEVID_MANCVALID_Pos) /*!< TPI DEVID: MANCVALID Mask */ + +#define TPI_DEVID_PTINVALID_Pos 9U /*!< TPI DEVID: PTINVALID Position */ +#define TPI_DEVID_PTINVALID_Msk (0x1UL << TPI_DEVID_PTINVALID_Pos) /*!< TPI DEVID: PTINVALID Mask */ + +#define TPI_DEVID_FIFOSZ_Pos 6U /*!< TPI DEVID: FIFO depth Position */ +#define TPI_DEVID_FIFOSZ_Msk (0x7UL << TPI_DEVID_FIFOSZ_Pos) /*!< TPI DEVID: FIFO depth Mask */ + +/* TPI DEVTYPE Register Definitions */ +#define TPI_DEVTYPE_SubType_Pos 4U /*!< TPI DEVTYPE: SubType Position */ +#define TPI_DEVTYPE_SubType_Msk (0xFUL /*<< TPI_DEVTYPE_SubType_Pos*/) /*!< TPI DEVTYPE: SubType Mask */ + +#define TPI_DEVTYPE_MajorType_Pos 0U /*!< TPI DEVTYPE: MajorType Position */ +#define TPI_DEVTYPE_MajorType_Msk (0xFUL << TPI_DEVTYPE_MajorType_Pos) /*!< TPI DEVTYPE: MajorType Mask */ + +/*@}*/ /* end of group CMSIS_TPI */ + + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_MPU Memory Protection Unit (MPU) + \brief Type definitions for the Memory Protection Unit (MPU) + @{ + */ + +/** + \brief Structure type to access the Memory Protection Unit (MPU). + */ +typedef struct +{ + __IM uint32_t TYPE; /*!< Offset: 0x000 (R/ ) MPU Type Register */ + __IOM uint32_t CTRL; /*!< Offset: 0x004 (R/W) MPU Control Register */ + __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) MPU Region Number Register */ + __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) MPU Region Base Address Register */ + __IOM uint32_t RLAR; /*!< Offset: 0x010 (R/W) MPU Region Limit Address Register */ + uint32_t RESERVED0[7U]; + union { + __IOM uint32_t MAIR[2]; + struct { + __IOM uint32_t MAIR0; /*!< Offset: 0x030 (R/W) MPU Memory Attribute Indirection Register 0 */ + __IOM uint32_t MAIR1; /*!< Offset: 0x034 (R/W) MPU Memory Attribute Indirection Register 1 */ + }; + }; +} MPU_Type; + +#define MPU_TYPE_RALIASES 1U + +/* MPU Type Register Definitions */ +#define MPU_TYPE_IREGION_Pos 16U /*!< MPU TYPE: IREGION Position */ +#define MPU_TYPE_IREGION_Msk (0xFFUL << MPU_TYPE_IREGION_Pos) /*!< MPU TYPE: IREGION Mask */ + +#define MPU_TYPE_DREGION_Pos 8U /*!< MPU TYPE: DREGION Position */ +#define MPU_TYPE_DREGION_Msk (0xFFUL << MPU_TYPE_DREGION_Pos) /*!< MPU TYPE: DREGION Mask */ + +#define MPU_TYPE_SEPARATE_Pos 0U /*!< MPU TYPE: SEPARATE Position */ +#define MPU_TYPE_SEPARATE_Msk (1UL /*<< MPU_TYPE_SEPARATE_Pos*/) /*!< MPU TYPE: SEPARATE Mask */ + +/* MPU Control Register Definitions */ +#define MPU_CTRL_PRIVDEFENA_Pos 2U /*!< MPU CTRL: PRIVDEFENA Position */ +#define MPU_CTRL_PRIVDEFENA_Msk (1UL << MPU_CTRL_PRIVDEFENA_Pos) /*!< MPU CTRL: PRIVDEFENA Mask */ + +#define MPU_CTRL_HFNMIENA_Pos 1U /*!< MPU CTRL: HFNMIENA Position */ +#define MPU_CTRL_HFNMIENA_Msk (1UL << MPU_CTRL_HFNMIENA_Pos) /*!< MPU CTRL: HFNMIENA Mask */ + +#define MPU_CTRL_ENABLE_Pos 0U /*!< MPU CTRL: ENABLE Position */ +#define MPU_CTRL_ENABLE_Msk (1UL /*<< MPU_CTRL_ENABLE_Pos*/) /*!< MPU CTRL: ENABLE Mask */ + +/* MPU Region Number Register Definitions */ +#define MPU_RNR_REGION_Pos 0U /*!< MPU RNR: REGION Position */ +#define MPU_RNR_REGION_Msk (0xFFUL /*<< MPU_RNR_REGION_Pos*/) /*!< MPU RNR: REGION Mask */ + +/* MPU Region Base Address Register Definitions */ +#define MPU_RBAR_BASE_Pos 5U /*!< MPU RBAR: BASE Position */ +#define MPU_RBAR_BASE_Msk (0x7FFFFFFUL << MPU_RBAR_BASE_Pos) /*!< MPU RBAR: BASE Mask */ + +#define MPU_RBAR_SH_Pos 3U /*!< MPU RBAR: SH Position */ +#define MPU_RBAR_SH_Msk (0x3UL << MPU_RBAR_SH_Pos) /*!< MPU RBAR: SH Mask */ + +#define MPU_RBAR_AP_Pos 1U /*!< MPU RBAR: AP Position */ +#define MPU_RBAR_AP_Msk (0x3UL << MPU_RBAR_AP_Pos) /*!< MPU RBAR: AP Mask */ + +#define MPU_RBAR_XN_Pos 0U /*!< MPU RBAR: XN Position */ +#define MPU_RBAR_XN_Msk (01UL /*<< MPU_RBAR_XN_Pos*/) /*!< MPU RBAR: XN Mask */ + +/* MPU Region Limit Address Register Definitions */ +#define MPU_RLAR_LIMIT_Pos 5U /*!< MPU RLAR: LIMIT Position */ +#define MPU_RLAR_LIMIT_Msk (0x7FFFFFFUL << MPU_RLAR_LIMIT_Pos) /*!< MPU RLAR: LIMIT Mask */ + +#define MPU_RLAR_AttrIndx_Pos 1U /*!< MPU RLAR: AttrIndx Position */ +#define MPU_RLAR_AttrIndx_Msk (0x7UL << MPU_RLAR_AttrIndx_Pos) /*!< MPU RLAR: AttrIndx Mask */ + +#define MPU_RLAR_EN_Pos 0U /*!< MPU RLAR: EN Position */ +#define MPU_RLAR_EN_Msk (1UL /*<< MPU_RLAR_EN_Pos*/) /*!< MPU RLAR: EN Mask */ + +/* MPU Memory Attribute Indirection Register 0 Definitions */ +#define MPU_MAIR0_Attr3_Pos 24U /*!< MPU MAIR0: Attr3 Position */ +#define MPU_MAIR0_Attr3_Msk (0xFFUL << MPU_MAIR0_Attr3_Pos) /*!< MPU MAIR0: Attr3 Mask */ + +#define MPU_MAIR0_Attr2_Pos 16U /*!< MPU MAIR0: Attr2 Position */ +#define MPU_MAIR0_Attr2_Msk (0xFFUL << MPU_MAIR0_Attr2_Pos) /*!< MPU MAIR0: Attr2 Mask */ + +#define MPU_MAIR0_Attr1_Pos 8U /*!< MPU MAIR0: Attr1 Position */ +#define MPU_MAIR0_Attr1_Msk (0xFFUL << MPU_MAIR0_Attr1_Pos) /*!< MPU MAIR0: Attr1 Mask */ + +#define MPU_MAIR0_Attr0_Pos 0U /*!< MPU MAIR0: Attr0 Position */ +#define MPU_MAIR0_Attr0_Msk (0xFFUL /*<< MPU_MAIR0_Attr0_Pos*/) /*!< MPU MAIR0: Attr0 Mask */ + +/* MPU Memory Attribute Indirection Register 1 Definitions */ +#define MPU_MAIR1_Attr7_Pos 24U /*!< MPU MAIR1: Attr7 Position */ +#define MPU_MAIR1_Attr7_Msk (0xFFUL << MPU_MAIR1_Attr7_Pos) /*!< MPU MAIR1: Attr7 Mask */ + +#define MPU_MAIR1_Attr6_Pos 16U /*!< MPU MAIR1: Attr6 Position */ +#define MPU_MAIR1_Attr6_Msk (0xFFUL << MPU_MAIR1_Attr6_Pos) /*!< MPU MAIR1: Attr6 Mask */ + +#define MPU_MAIR1_Attr5_Pos 8U /*!< MPU MAIR1: Attr5 Position */ +#define MPU_MAIR1_Attr5_Msk (0xFFUL << MPU_MAIR1_Attr5_Pos) /*!< MPU MAIR1: Attr5 Mask */ + +#define MPU_MAIR1_Attr4_Pos 0U /*!< MPU MAIR1: Attr4 Position */ +#define MPU_MAIR1_Attr4_Msk (0xFFUL /*<< MPU_MAIR1_Attr4_Pos*/) /*!< MPU MAIR1: Attr4 Mask */ + +/*@} end of group CMSIS_MPU */ +#endif + + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SAU Security Attribution Unit (SAU) + \brief Type definitions for the Security Attribution Unit (SAU) + @{ + */ + +/** + \brief Structure type to access the Security Attribution Unit (SAU). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SAU Control Register */ + __IM uint32_t TYPE; /*!< Offset: 0x004 (R/ ) SAU Type Register */ +#if defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) + __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) SAU Region Number Register */ + __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) SAU Region Base Address Register */ + __IOM uint32_t RLAR; /*!< Offset: 0x010 (R/W) SAU Region Limit Address Register */ +#endif +} SAU_Type; + +/* SAU Control Register Definitions */ +#define SAU_CTRL_ALLNS_Pos 1U /*!< SAU CTRL: ALLNS Position */ +#define SAU_CTRL_ALLNS_Msk (1UL << SAU_CTRL_ALLNS_Pos) /*!< SAU CTRL: ALLNS Mask */ + +#define SAU_CTRL_ENABLE_Pos 0U /*!< SAU CTRL: ENABLE Position */ +#define SAU_CTRL_ENABLE_Msk (1UL /*<< SAU_CTRL_ENABLE_Pos*/) /*!< SAU CTRL: ENABLE Mask */ + +/* SAU Type Register Definitions */ +#define SAU_TYPE_SREGION_Pos 0U /*!< SAU TYPE: SREGION Position */ +#define SAU_TYPE_SREGION_Msk (0xFFUL /*<< SAU_TYPE_SREGION_Pos*/) /*!< SAU TYPE: SREGION Mask */ + +#if defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) +/* SAU Region Number Register Definitions */ +#define SAU_RNR_REGION_Pos 0U /*!< SAU RNR: REGION Position */ +#define SAU_RNR_REGION_Msk (0xFFUL /*<< SAU_RNR_REGION_Pos*/) /*!< SAU RNR: REGION Mask */ + +/* SAU Region Base Address Register Definitions */ +#define SAU_RBAR_BADDR_Pos 5U /*!< SAU RBAR: BADDR Position */ +#define SAU_RBAR_BADDR_Msk (0x7FFFFFFUL << SAU_RBAR_BADDR_Pos) /*!< SAU RBAR: BADDR Mask */ + +/* SAU Region Limit Address Register Definitions */ +#define SAU_RLAR_LADDR_Pos 5U /*!< SAU RLAR: LADDR Position */ +#define SAU_RLAR_LADDR_Msk (0x7FFFFFFUL << SAU_RLAR_LADDR_Pos) /*!< SAU RLAR: LADDR Mask */ + +#define SAU_RLAR_NSC_Pos 1U /*!< SAU RLAR: NSC Position */ +#define SAU_RLAR_NSC_Msk (1UL << SAU_RLAR_NSC_Pos) /*!< SAU RLAR: NSC Mask */ + +#define SAU_RLAR_ENABLE_Pos 0U /*!< SAU RLAR: ENABLE Position */ +#define SAU_RLAR_ENABLE_Msk (1UL /*<< SAU_RLAR_ENABLE_Pos*/) /*!< SAU RLAR: ENABLE Mask */ + +#endif /* defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) */ + +/*@} end of group CMSIS_SAU */ +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + + +/* CoreDebug is deprecated. replaced by DCB (Debug Control Block) */ +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CoreDebug Core Debug Registers (CoreDebug) + \brief Type definitions for the Core Debug Registers + @{ + */ + +/** + \brief \deprecated Structure type to access the Core Debug Register (CoreDebug). + */ +typedef struct +{ + __IOM uint32_t DHCSR; /*!< Offset: 0x000 (R/W) Debug Halting Control and Status Register */ + __OM uint32_t DCRSR; /*!< Offset: 0x004 ( /W) Debug Core Register Selector Register */ + __IOM uint32_t DCRDR; /*!< Offset: 0x008 (R/W) Debug Core Register Data Register */ + __IOM uint32_t DEMCR; /*!< Offset: 0x00C (R/W) Debug Exception and Monitor Control Register */ + uint32_t RESERVED0[1U]; + __IOM uint32_t DAUTHCTRL; /*!< Offset: 0x014 (R/W) Debug Authentication Control Register */ + __IOM uint32_t DSCSR; /*!< Offset: 0x018 (R/W) Debug Security Control and Status Register */ +} CoreDebug_Type; + +/* Debug Halting Control and Status Register Definitions */ +#define CoreDebug_DHCSR_DBGKEY_Pos 16U /*!< \deprecated CoreDebug DHCSR: DBGKEY Position */ +#define CoreDebug_DHCSR_DBGKEY_Msk (0xFFFFUL << CoreDebug_DHCSR_DBGKEY_Pos) /*!< \deprecated CoreDebug DHCSR: DBGKEY Mask */ + +#define CoreDebug_DHCSR_S_RESTART_ST_Pos 26U /*!< \deprecated CoreDebug DHCSR: S_RESTART_ST Position */ +#define CoreDebug_DHCSR_S_RESTART_ST_Msk (1UL << CoreDebug_DHCSR_S_RESTART_ST_Pos) /*!< \deprecated CoreDebug DHCSR: S_RESTART_ST Mask */ + +#define CoreDebug_DHCSR_S_RESET_ST_Pos 25U /*!< \deprecated CoreDebug DHCSR: S_RESET_ST Position */ +#define CoreDebug_DHCSR_S_RESET_ST_Msk (1UL << CoreDebug_DHCSR_S_RESET_ST_Pos) /*!< \deprecated CoreDebug DHCSR: S_RESET_ST Mask */ + +#define CoreDebug_DHCSR_S_RETIRE_ST_Pos 24U /*!< \deprecated CoreDebug DHCSR: S_RETIRE_ST Position */ +#define CoreDebug_DHCSR_S_RETIRE_ST_Msk (1UL << CoreDebug_DHCSR_S_RETIRE_ST_Pos) /*!< \deprecated CoreDebug DHCSR: S_RETIRE_ST Mask */ + +#define CoreDebug_DHCSR_S_LOCKUP_Pos 19U /*!< \deprecated CoreDebug DHCSR: S_LOCKUP Position */ +#define CoreDebug_DHCSR_S_LOCKUP_Msk (1UL << CoreDebug_DHCSR_S_LOCKUP_Pos) /*!< \deprecated CoreDebug DHCSR: S_LOCKUP Mask */ + +#define CoreDebug_DHCSR_S_SLEEP_Pos 18U /*!< \deprecated CoreDebug DHCSR: S_SLEEP Position */ +#define CoreDebug_DHCSR_S_SLEEP_Msk (1UL << CoreDebug_DHCSR_S_SLEEP_Pos) /*!< \deprecated CoreDebug DHCSR: S_SLEEP Mask */ + +#define CoreDebug_DHCSR_S_HALT_Pos 17U /*!< \deprecated CoreDebug DHCSR: S_HALT Position */ +#define CoreDebug_DHCSR_S_HALT_Msk (1UL << CoreDebug_DHCSR_S_HALT_Pos) /*!< \deprecated CoreDebug DHCSR: S_HALT Mask */ + +#define CoreDebug_DHCSR_S_REGRDY_Pos 16U /*!< \deprecated CoreDebug DHCSR: S_REGRDY Position */ +#define CoreDebug_DHCSR_S_REGRDY_Msk (1UL << CoreDebug_DHCSR_S_REGRDY_Pos) /*!< \deprecated CoreDebug DHCSR: S_REGRDY Mask */ + +#define CoreDebug_DHCSR_C_MASKINTS_Pos 3U /*!< \deprecated CoreDebug DHCSR: C_MASKINTS Position */ +#define CoreDebug_DHCSR_C_MASKINTS_Msk (1UL << CoreDebug_DHCSR_C_MASKINTS_Pos) /*!< \deprecated CoreDebug DHCSR: C_MASKINTS Mask */ + +#define CoreDebug_DHCSR_C_STEP_Pos 2U /*!< \deprecated CoreDebug DHCSR: C_STEP Position */ +#define CoreDebug_DHCSR_C_STEP_Msk (1UL << CoreDebug_DHCSR_C_STEP_Pos) /*!< \deprecated CoreDebug DHCSR: C_STEP Mask */ + +#define CoreDebug_DHCSR_C_HALT_Pos 1U /*!< \deprecated CoreDebug DHCSR: C_HALT Position */ +#define CoreDebug_DHCSR_C_HALT_Msk (1UL << CoreDebug_DHCSR_C_HALT_Pos) /*!< \deprecated CoreDebug DHCSR: C_HALT Mask */ + +#define CoreDebug_DHCSR_C_DEBUGEN_Pos 0U /*!< \deprecated CoreDebug DHCSR: C_DEBUGEN Position */ +#define CoreDebug_DHCSR_C_DEBUGEN_Msk (1UL /*<< CoreDebug_DHCSR_C_DEBUGEN_Pos*/) /*!< \deprecated CoreDebug DHCSR: C_DEBUGEN Mask */ + +/* Debug Core Register Selector Register Definitions */ +#define CoreDebug_DCRSR_REGWnR_Pos 16U /*!< \deprecated CoreDebug DCRSR: REGWnR Position */ +#define CoreDebug_DCRSR_REGWnR_Msk (1UL << CoreDebug_DCRSR_REGWnR_Pos) /*!< \deprecated CoreDebug DCRSR: REGWnR Mask */ + +#define CoreDebug_DCRSR_REGSEL_Pos 0U /*!< \deprecated CoreDebug DCRSR: REGSEL Position */ +#define CoreDebug_DCRSR_REGSEL_Msk (0x1FUL /*<< CoreDebug_DCRSR_REGSEL_Pos*/) /*!< \deprecated CoreDebug DCRSR: REGSEL Mask */ + +/* Debug Exception and Monitor Control Register Definitions */ +#define CoreDebug_DEMCR_DWTENA_Pos 24U /*!< \deprecated CoreDebug DEMCR: DWTENA Position */ +#define CoreDebug_DEMCR_DWTENA_Msk (1UL << CoreDebug_DEMCR_DWTENA_Pos) /*!< \deprecated CoreDebug DEMCR: DWTENA Mask */ + +#define CoreDebug_DEMCR_VC_HARDERR_Pos 10U /*!< \deprecated CoreDebug DEMCR: VC_HARDERR Position */ +#define CoreDebug_DEMCR_VC_HARDERR_Msk (1UL << CoreDebug_DEMCR_VC_HARDERR_Pos) /*!< \deprecated CoreDebug DEMCR: VC_HARDERR Mask */ + +#define CoreDebug_DEMCR_VC_CORERESET_Pos 0U /*!< \deprecated CoreDebug DEMCR: VC_CORERESET Position */ +#define CoreDebug_DEMCR_VC_CORERESET_Msk (1UL /*<< CoreDebug_DEMCR_VC_CORERESET_Pos*/) /*!< \deprecated CoreDebug DEMCR: VC_CORERESET Mask */ + +/* Debug Authentication Control Register Definitions */ +#define CoreDebug_DAUTHCTRL_INTSPNIDEN_Pos 3U /*!< \deprecated CoreDebug DAUTHCTRL: INTSPNIDEN, Position */ +#define CoreDebug_DAUTHCTRL_INTSPNIDEN_Msk (1UL << CoreDebug_DAUTHCTRL_INTSPNIDEN_Pos) /*!< \deprecated CoreDebug DAUTHCTRL: INTSPNIDEN, Mask */ + +#define CoreDebug_DAUTHCTRL_SPNIDENSEL_Pos 2U /*!< \deprecated CoreDebug DAUTHCTRL: SPNIDENSEL Position */ +#define CoreDebug_DAUTHCTRL_SPNIDENSEL_Msk (1UL << CoreDebug_DAUTHCTRL_SPNIDENSEL_Pos) /*!< \deprecated CoreDebug DAUTHCTRL: SPNIDENSEL Mask */ + +#define CoreDebug_DAUTHCTRL_INTSPIDEN_Pos 1U /*!< \deprecated CoreDebug DAUTHCTRL: INTSPIDEN Position */ +#define CoreDebug_DAUTHCTRL_INTSPIDEN_Msk (1UL << CoreDebug_DAUTHCTRL_INTSPIDEN_Pos) /*!< \deprecated CoreDebug DAUTHCTRL: INTSPIDEN Mask */ + +#define CoreDebug_DAUTHCTRL_SPIDENSEL_Pos 0U /*!< \deprecated CoreDebug DAUTHCTRL: SPIDENSEL Position */ +#define CoreDebug_DAUTHCTRL_SPIDENSEL_Msk (1UL /*<< CoreDebug_DAUTHCTRL_SPIDENSEL_Pos*/) /*!< \deprecated CoreDebug DAUTHCTRL: SPIDENSEL Mask */ + +/* Debug Security Control and Status Register Definitions */ +#define CoreDebug_DSCSR_CDS_Pos 16U /*!< \deprecated CoreDebug DSCSR: CDS Position */ +#define CoreDebug_DSCSR_CDS_Msk (1UL << CoreDebug_DSCSR_CDS_Pos) /*!< \deprecated CoreDebug DSCSR: CDS Mask */ + +#define CoreDebug_DSCSR_SBRSEL_Pos 1U /*!< \deprecated CoreDebug DSCSR: SBRSEL Position */ +#define CoreDebug_DSCSR_SBRSEL_Msk (1UL << CoreDebug_DSCSR_SBRSEL_Pos) /*!< \deprecated CoreDebug DSCSR: SBRSEL Mask */ + +#define CoreDebug_DSCSR_SBRSELEN_Pos 0U /*!< \deprecated CoreDebug DSCSR: SBRSELEN Position */ +#define CoreDebug_DSCSR_SBRSELEN_Msk (1UL /*<< CoreDebug_DSCSR_SBRSELEN_Pos*/) /*!< \deprecated CoreDebug DSCSR: SBRSELEN Mask */ + +/*@} end of group CMSIS_CoreDebug */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_DCB Debug Control Block + \brief Type definitions for the Debug Control Block Registers + @{ + */ + +/** + \brief Structure type to access the Debug Control Block Registers (DCB). + */ +typedef struct +{ + __IOM uint32_t DHCSR; /*!< Offset: 0x000 (R/W) Debug Halting Control and Status Register */ + __OM uint32_t DCRSR; /*!< Offset: 0x004 ( /W) Debug Core Register Selector Register */ + __IOM uint32_t DCRDR; /*!< Offset: 0x008 (R/W) Debug Core Register Data Register */ + __IOM uint32_t DEMCR; /*!< Offset: 0x00C (R/W) Debug Exception and Monitor Control Register */ + uint32_t RESERVED0[1U]; + __IOM uint32_t DAUTHCTRL; /*!< Offset: 0x014 (R/W) Debug Authentication Control Register */ + __IOM uint32_t DSCSR; /*!< Offset: 0x018 (R/W) Debug Security Control and Status Register */ +} DCB_Type; + +/* DHCSR, Debug Halting Control and Status Register Definitions */ +#define DCB_DHCSR_DBGKEY_Pos 16U /*!< DCB DHCSR: Debug key Position */ +#define DCB_DHCSR_DBGKEY_Msk (0xFFFFUL << DCB_DHCSR_DBGKEY_Pos) /*!< DCB DHCSR: Debug key Mask */ + +#define DCB_DHCSR_S_RESTART_ST_Pos 26U /*!< DCB DHCSR: Restart sticky status Position */ +#define DCB_DHCSR_S_RESTART_ST_Msk (0x1UL << DCB_DHCSR_S_RESTART_ST_Pos) /*!< DCB DHCSR: Restart sticky status Mask */ + +#define DCB_DHCSR_S_RESET_ST_Pos 25U /*!< DCB DHCSR: Reset sticky status Position */ +#define DCB_DHCSR_S_RESET_ST_Msk (0x1UL << DCB_DHCSR_S_RESET_ST_Pos) /*!< DCB DHCSR: Reset sticky status Mask */ + +#define DCB_DHCSR_S_RETIRE_ST_Pos 24U /*!< DCB DHCSR: Retire sticky status Position */ +#define DCB_DHCSR_S_RETIRE_ST_Msk (0x1UL << DCB_DHCSR_S_RETIRE_ST_Pos) /*!< DCB DHCSR: Retire sticky status Mask */ + +#define DCB_DHCSR_S_SDE_Pos 20U /*!< DCB DHCSR: Secure debug enabled Position */ +#define DCB_DHCSR_S_SDE_Msk (0x1UL << DCB_DHCSR_S_SDE_Pos) /*!< DCB DHCSR: Secure debug enabled Mask */ + +#define DCB_DHCSR_S_LOCKUP_Pos 19U /*!< DCB DHCSR: Lockup status Position */ +#define DCB_DHCSR_S_LOCKUP_Msk (0x1UL << DCB_DHCSR_S_LOCKUP_Pos) /*!< DCB DHCSR: Lockup status Mask */ + +#define DCB_DHCSR_S_SLEEP_Pos 18U /*!< DCB DHCSR: Sleeping status Position */ +#define DCB_DHCSR_S_SLEEP_Msk (0x1UL << DCB_DHCSR_S_SLEEP_Pos) /*!< DCB DHCSR: Sleeping status Mask */ + +#define DCB_DHCSR_S_HALT_Pos 17U /*!< DCB DHCSR: Halted status Position */ +#define DCB_DHCSR_S_HALT_Msk (0x1UL << DCB_DHCSR_S_HALT_Pos) /*!< DCB DHCSR: Halted status Mask */ + +#define DCB_DHCSR_S_REGRDY_Pos 16U /*!< DCB DHCSR: Register ready status Position */ +#define DCB_DHCSR_S_REGRDY_Msk (0x1UL << DCB_DHCSR_S_REGRDY_Pos) /*!< DCB DHCSR: Register ready status Mask */ + +#define DCB_DHCSR_C_MASKINTS_Pos 3U /*!< DCB DHCSR: Mask interrupts control Position */ +#define DCB_DHCSR_C_MASKINTS_Msk (0x1UL << DCB_DHCSR_C_MASKINTS_Pos) /*!< DCB DHCSR: Mask interrupts control Mask */ + +#define DCB_DHCSR_C_STEP_Pos 2U /*!< DCB DHCSR: Step control Position */ +#define DCB_DHCSR_C_STEP_Msk (0x1UL << DCB_DHCSR_C_STEP_Pos) /*!< DCB DHCSR: Step control Mask */ + +#define DCB_DHCSR_C_HALT_Pos 1U /*!< DCB DHCSR: Halt control Position */ +#define DCB_DHCSR_C_HALT_Msk (0x1UL << DCB_DHCSR_C_HALT_Pos) /*!< DCB DHCSR: Halt control Mask */ + +#define DCB_DHCSR_C_DEBUGEN_Pos 0U /*!< DCB DHCSR: Debug enable control Position */ +#define DCB_DHCSR_C_DEBUGEN_Msk (0x1UL /*<< DCB_DHCSR_C_DEBUGEN_Pos*/) /*!< DCB DHCSR: Debug enable control Mask */ + +/* DCRSR, Debug Core Register Select Register Definitions */ +#define DCB_DCRSR_REGWnR_Pos 16U /*!< DCB DCRSR: Register write/not-read Position */ +#define DCB_DCRSR_REGWnR_Msk (0x1UL << DCB_DCRSR_REGWnR_Pos) /*!< DCB DCRSR: Register write/not-read Mask */ + +#define DCB_DCRSR_REGSEL_Pos 0U /*!< DCB DCRSR: Register selector Position */ +#define DCB_DCRSR_REGSEL_Msk (0x7FUL /*<< DCB_DCRSR_REGSEL_Pos*/) /*!< DCB DCRSR: Register selector Mask */ + +/* DCRDR, Debug Core Register Data Register Definitions */ +#define DCB_DCRDR_DBGTMP_Pos 0U /*!< DCB DCRDR: Data temporary buffer Position */ +#define DCB_DCRDR_DBGTMP_Msk (0xFFFFFFFFUL /*<< DCB_DCRDR_DBGTMP_Pos*/) /*!< DCB DCRDR: Data temporary buffer Mask */ + +/* DEMCR, Debug Exception and Monitor Control Register Definitions */ +#define DCB_DEMCR_TRCENA_Pos 24U /*!< DCB DEMCR: Trace enable Position */ +#define DCB_DEMCR_TRCENA_Msk (0x1UL << DCB_DEMCR_TRCENA_Pos) /*!< DCB DEMCR: Trace enable Mask */ + +#define DCB_DEMCR_VC_HARDERR_Pos 10U /*!< DCB DEMCR: Vector Catch HardFault errors Position */ +#define DCB_DEMCR_VC_HARDERR_Msk (0x1UL << DCB_DEMCR_VC_HARDERR_Pos) /*!< DCB DEMCR: Vector Catch HardFault errors Mask */ + +#define DCB_DEMCR_VC_CORERESET_Pos 0U /*!< DCB DEMCR: Vector Catch Core reset Position */ +#define DCB_DEMCR_VC_CORERESET_Msk (0x1UL /*<< DCB_DEMCR_VC_CORERESET_Pos*/) /*!< DCB DEMCR: Vector Catch Core reset Mask */ + +/* DAUTHCTRL, Debug Authentication Control Register Definitions */ +#define DCB_DAUTHCTRL_INTSPNIDEN_Pos 3U /*!< DCB DAUTHCTRL: Internal Secure non-invasive debug enable Position */ +#define DCB_DAUTHCTRL_INTSPNIDEN_Msk (0x1UL << DCB_DAUTHCTRL_INTSPNIDEN_Pos) /*!< DCB DAUTHCTRL: Internal Secure non-invasive debug enable Mask */ + +#define DCB_DAUTHCTRL_SPNIDENSEL_Pos 2U /*!< DCB DAUTHCTRL: Secure non-invasive debug enable select Position */ +#define DCB_DAUTHCTRL_SPNIDENSEL_Msk (0x1UL << DCB_DAUTHCTRL_SPNIDENSEL_Pos) /*!< DCB DAUTHCTRL: Secure non-invasive debug enable select Mask */ + +#define DCB_DAUTHCTRL_INTSPIDEN_Pos 1U /*!< DCB DAUTHCTRL: Internal Secure invasive debug enable Position */ +#define DCB_DAUTHCTRL_INTSPIDEN_Msk (0x1UL << DCB_DAUTHCTRL_INTSPIDEN_Pos) /*!< DCB DAUTHCTRL: Internal Secure invasive debug enable Mask */ + +#define DCB_DAUTHCTRL_SPIDENSEL_Pos 0U /*!< DCB DAUTHCTRL: Secure invasive debug enable select Position */ +#define DCB_DAUTHCTRL_SPIDENSEL_Msk (0x1UL /*<< DCB_DAUTHCTRL_SPIDENSEL_Pos*/) /*!< DCB DAUTHCTRL: Secure invasive debug enable select Mask */ + +/* DSCSR, Debug Security Control and Status Register Definitions */ +#define DCB_DSCSR_CDSKEY_Pos 17U /*!< DCB DSCSR: CDS write-enable key Position */ +#define DCB_DSCSR_CDSKEY_Msk (0x1UL << DCB_DSCSR_CDSKEY_Pos) /*!< DCB DSCSR: CDS write-enable key Mask */ + +#define DCB_DSCSR_CDS_Pos 16U /*!< DCB DSCSR: Current domain Secure Position */ +#define DCB_DSCSR_CDS_Msk (0x1UL << DCB_DSCSR_CDS_Pos) /*!< DCB DSCSR: Current domain Secure Mask */ + +#define DCB_DSCSR_SBRSEL_Pos 1U /*!< DCB DSCSR: Secure banked register select Position */ +#define DCB_DSCSR_SBRSEL_Msk (0x1UL << DCB_DSCSR_SBRSEL_Pos) /*!< DCB DSCSR: Secure banked register select Mask */ + +#define DCB_DSCSR_SBRSELEN_Pos 0U /*!< DCB DSCSR: Secure banked register select enable Position */ +#define DCB_DSCSR_SBRSELEN_Msk (0x1UL /*<< DCB_DSCSR_SBRSELEN_Pos*/) /*!< DCB DSCSR: Secure banked register select enable Mask */ + +/*@} end of group CMSIS_DCB */ + + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_DIB Debug Identification Block + \brief Type definitions for the Debug Identification Block Registers + @{ + */ + +/** + \brief Structure type to access the Debug Identification Block Registers (DIB). + */ +typedef struct +{ + __OM uint32_t DLAR; /*!< Offset: 0x000 ( /W) SCS Software Lock Access Register */ + __IM uint32_t DLSR; /*!< Offset: 0x004 (R/ ) SCS Software Lock Status Register */ + __IM uint32_t DAUTHSTATUS; /*!< Offset: 0x008 (R/ ) Debug Authentication Status Register */ + __IM uint32_t DDEVARCH; /*!< Offset: 0x00C (R/ ) SCS Device Architecture Register */ + __IM uint32_t DDEVTYPE; /*!< Offset: 0x010 (R/ ) SCS Device Type Register */ +} DIB_Type; + +/* DLAR, SCS Software Lock Access Register Definitions */ +#define DIB_DLAR_KEY_Pos 0U /*!< DIB DLAR: KEY Position */ +#define DIB_DLAR_KEY_Msk (0xFFFFFFFFUL /*<< DIB_DLAR_KEY_Pos */) /*!< DIB DLAR: KEY Mask */ + +/* DLSR, SCS Software Lock Status Register Definitions */ +#define DIB_DLSR_nTT_Pos 2U /*!< DIB DLSR: Not thirty-two bit Position */ +#define DIB_DLSR_nTT_Msk (0x1UL << DIB_DLSR_nTT_Pos ) /*!< DIB DLSR: Not thirty-two bit Mask */ + +#define DIB_DLSR_SLK_Pos 1U /*!< DIB DLSR: Software Lock status Position */ +#define DIB_DLSR_SLK_Msk (0x1UL << DIB_DLSR_SLK_Pos ) /*!< DIB DLSR: Software Lock status Mask */ + +#define DIB_DLSR_SLI_Pos 0U /*!< DIB DLSR: Software Lock implemented Position */ +#define DIB_DLSR_SLI_Msk (0x1UL /*<< DIB_DLSR_SLI_Pos*/) /*!< DIB DLSR: Software Lock implemented Mask */ + +/* DAUTHSTATUS, Debug Authentication Status Register Definitions */ +#define DIB_DAUTHSTATUS_SNID_Pos 6U /*!< DIB DAUTHSTATUS: Secure Non-invasive Debug Position */ +#define DIB_DAUTHSTATUS_SNID_Msk (0x3UL << DIB_DAUTHSTATUS_SNID_Pos ) /*!< DIB DAUTHSTATUS: Secure Non-invasive Debug Mask */ + +#define DIB_DAUTHSTATUS_SID_Pos 4U /*!< DIB DAUTHSTATUS: Secure Invasive Debug Position */ +#define DIB_DAUTHSTATUS_SID_Msk (0x3UL << DIB_DAUTHSTATUS_SID_Pos ) /*!< DIB DAUTHSTATUS: Secure Invasive Debug Mask */ + +#define DIB_DAUTHSTATUS_NSNID_Pos 2U /*!< DIB DAUTHSTATUS: Non-secure Non-invasive Debug Position */ +#define DIB_DAUTHSTATUS_NSNID_Msk (0x3UL << DIB_DAUTHSTATUS_NSNID_Pos ) /*!< DIB DAUTHSTATUS: Non-secure Non-invasive Debug Mask */ + +#define DIB_DAUTHSTATUS_NSID_Pos 0U /*!< DIB DAUTHSTATUS: Non-secure Invasive Debug Position */ +#define DIB_DAUTHSTATUS_NSID_Msk (0x3UL /*<< DIB_DAUTHSTATUS_NSID_Pos*/) /*!< DIB DAUTHSTATUS: Non-secure Invasive Debug Mask */ + +/* DDEVARCH, SCS Device Architecture Register Definitions */ +#define DIB_DDEVARCH_ARCHITECT_Pos 21U /*!< DIB DDEVARCH: Architect Position */ +#define DIB_DDEVARCH_ARCHITECT_Msk (0x7FFUL << DIB_DDEVARCH_ARCHITECT_Pos ) /*!< DIB DDEVARCH: Architect Mask */ + +#define DIB_DDEVARCH_PRESENT_Pos 20U /*!< DIB DDEVARCH: DEVARCH Present Position */ +#define DIB_DDEVARCH_PRESENT_Msk (0x1FUL << DIB_DDEVARCH_PRESENT_Pos ) /*!< DIB DDEVARCH: DEVARCH Present Mask */ + +#define DIB_DDEVARCH_REVISION_Pos 16U /*!< DIB DDEVARCH: Revision Position */ +#define DIB_DDEVARCH_REVISION_Msk (0xFUL << DIB_DDEVARCH_REVISION_Pos ) /*!< DIB DDEVARCH: Revision Mask */ + +#define DIB_DDEVARCH_ARCHVER_Pos 12U /*!< DIB DDEVARCH: Architecture Version Position */ +#define DIB_DDEVARCH_ARCHVER_Msk (0xFUL << DIB_DDEVARCH_ARCHVER_Pos ) /*!< DIB DDEVARCH: Architecture Version Mask */ + +#define DIB_DDEVARCH_ARCHPART_Pos 0U /*!< DIB DDEVARCH: Architecture Part Position */ +#define DIB_DDEVARCH_ARCHPART_Msk (0xFFFUL /*<< DIB_DDEVARCH_ARCHPART_Pos*/) /*!< DIB DDEVARCH: Architecture Part Mask */ + +/* DDEVTYPE, SCS Device Type Register Definitions */ +#define DIB_DDEVTYPE_SUB_Pos 4U /*!< DIB DDEVTYPE: Sub-type Position */ +#define DIB_DDEVTYPE_SUB_Msk (0xFUL << DIB_DDEVTYPE_SUB_Pos ) /*!< DIB DDEVTYPE: Sub-type Mask */ + +#define DIB_DDEVTYPE_MAJOR_Pos 0U /*!< DIB DDEVTYPE: Major type Position */ +#define DIB_DDEVTYPE_MAJOR_Msk (0xFUL /*<< DIB_DDEVTYPE_MAJOR_Pos*/) /*!< DIB DDEVTYPE: Major type Mask */ + + +/*@} end of group CMSIS_DIB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_bitfield Core register bit field macros + \brief Macros for use with bit field definitions (xxx_Pos, xxx_Msk). + @{ + */ + +/** + \brief Mask and shift a bit field value for use in a register bit range. + \param[in] field Name of the register bit field. + \param[in] value Value of the bit field. This parameter is interpreted as an uint32_t type. + \return Masked and shifted value. +*/ +#define _VAL2FLD(field, value) (((uint32_t)(value) << field ## _Pos) & field ## _Msk) + +/** + \brief Mask and shift a register value to extract a bit filed value. + \param[in] field Name of the register bit field. + \param[in] value Value of register. This parameter is interpreted as an uint32_t type. + \return Masked and shifted bit field value. +*/ +#define _FLD2VAL(field, value) (((uint32_t)(value) & field ## _Msk) >> field ## _Pos) + +/*@} end of group CMSIS_core_bitfield */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_base Core Definitions + \brief Definitions for base addresses, unions, and structures. + @{ + */ + +/* Memory mapping of Core Hardware */ + #define SCS_BASE (0xE000E000UL) /*!< System Control Space Base Address */ + #define DWT_BASE (0xE0001000UL) /*!< DWT Base Address */ + #define TPI_BASE (0xE0040000UL) /*!< TPI Base Address */ + #define CoreDebug_BASE (0xE000EDF0UL) /*!< \deprecated Core Debug Base Address */ + #define DCB_BASE (0xE000EDF0UL) /*!< DCB Base Address */ + #define DIB_BASE (0xE000EFB0UL) /*!< DIB Base Address */ + #define SysTick_BASE (SCS_BASE + 0x0010UL) /*!< SysTick Base Address */ + #define NVIC_BASE (SCS_BASE + 0x0100UL) /*!< NVIC Base Address */ + #define SCB_BASE (SCS_BASE + 0x0D00UL) /*!< System Control Block Base Address */ + + + #define SCB ((SCB_Type *) SCB_BASE ) /*!< SCB configuration struct */ + #define SysTick ((SysTick_Type *) SysTick_BASE ) /*!< SysTick configuration struct */ + #define NVIC ((NVIC_Type *) NVIC_BASE ) /*!< NVIC configuration struct */ + #define DWT ((DWT_Type *) DWT_BASE ) /*!< DWT configuration struct */ + #define TPI ((TPI_Type *) TPI_BASE ) /*!< TPI configuration struct */ + #define CoreDebug ((CoreDebug_Type *) CoreDebug_BASE ) /*!< \deprecated Core Debug configuration struct */ + #define DCB ((DCB_Type *) DCB_BASE ) /*!< DCB configuration struct */ + #define DIB ((DIB_Type *) DIB_BASE ) /*!< DIB configuration struct */ + + #if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + #define MPU_BASE (SCS_BASE + 0x0D90UL) /*!< Memory Protection Unit */ + #define MPU ((MPU_Type *) MPU_BASE ) /*!< Memory Protection Unit */ + #endif + + #if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) + #define SAU_BASE (SCS_BASE + 0x0DD0UL) /*!< Security Attribution Unit */ + #define SAU ((SAU_Type *) SAU_BASE ) /*!< Security Attribution Unit */ + #endif + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) + #define SCS_BASE_NS (0xE002E000UL) /*!< System Control Space Base Address (non-secure address space) */ + #define CoreDebug_BASE_NS (0xE002EDF0UL) /*!< \deprecated Core Debug Base Address (non-secure address space) */ + #define DCB_BASE_NS (0xE002EDF0UL) /*!< DCB Base Address (non-secure address space) */ + #define DIB_BASE_NS (0xE002EFB0UL) /*!< DIB Base Address (non-secure address space) */ + #define SysTick_BASE_NS (SCS_BASE_NS + 0x0010UL) /*!< SysTick Base Address (non-secure address space) */ + #define NVIC_BASE_NS (SCS_BASE_NS + 0x0100UL) /*!< NVIC Base Address (non-secure address space) */ + #define SCB_BASE_NS (SCS_BASE_NS + 0x0D00UL) /*!< System Control Block Base Address (non-secure address space) */ + + #define SCB_NS ((SCB_Type *) SCB_BASE_NS ) /*!< SCB configuration struct (non-secure address space) */ + #define SysTick_NS ((SysTick_Type *) SysTick_BASE_NS ) /*!< SysTick configuration struct (non-secure address space) */ + #define NVIC_NS ((NVIC_Type *) NVIC_BASE_NS ) /*!< NVIC configuration struct (non-secure address space) */ + #define CoreDebug_NS ((CoreDebug_Type *) CoreDebug_BASE_NS) /*!< \deprecated Core Debug configuration struct (non-secure address space) */ + #define DCB_NS ((DCB_Type *) DCB_BASE_NS ) /*!< DCB configuration struct (non-secure address space) */ + #define DIB_NS ((DIB_Type *) DIB_BASE_NS ) /*!< DIB configuration struct (non-secure address space) */ + + #if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + #define MPU_BASE_NS (SCS_BASE_NS + 0x0D90UL) /*!< Memory Protection Unit (non-secure address space) */ + #define MPU_NS ((MPU_Type *) MPU_BASE_NS ) /*!< Memory Protection Unit (non-secure address space) */ + #endif + +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ +/*@} */ + + + +/******************************************************************************* + * Hardware Abstraction Layer + Core Function Interface contains: + - Core NVIC Functions + - Core SysTick Functions + - Core Debug Functions + - Core Register Access Functions + ******************************************************************************/ +/** + \defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference +*/ + + + +/* ########################## NVIC functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_NVICFunctions NVIC Functions + \brief Functions that manage interrupts and exceptions via the NVIC. + @{ + */ + +#ifdef CMSIS_NVIC_VIRTUAL + #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE + #define CMSIS_NVIC_VIRTUAL_HEADER_FILE "cmsis_nvic_virtual.h" + #endif + #include CMSIS_NVIC_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetPriorityGrouping __NVIC_SetPriorityGrouping + #define NVIC_GetPriorityGrouping __NVIC_GetPriorityGrouping + #define NVIC_EnableIRQ __NVIC_EnableIRQ + #define NVIC_GetEnableIRQ __NVIC_GetEnableIRQ + #define NVIC_DisableIRQ __NVIC_DisableIRQ + #define NVIC_GetPendingIRQ __NVIC_GetPendingIRQ + #define NVIC_SetPendingIRQ __NVIC_SetPendingIRQ + #define NVIC_ClearPendingIRQ __NVIC_ClearPendingIRQ + #define NVIC_GetActive __NVIC_GetActive + #define NVIC_SetPriority __NVIC_SetPriority + #define NVIC_GetPriority __NVIC_GetPriority + #define NVIC_SystemReset __NVIC_SystemReset +#endif /* CMSIS_NVIC_VIRTUAL */ + +#ifdef CMSIS_VECTAB_VIRTUAL + #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE + #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE "cmsis_vectab_virtual.h" + #endif + #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetVector __NVIC_SetVector + #define NVIC_GetVector __NVIC_GetVector +#endif /* (CMSIS_VECTAB_VIRTUAL) */ + +#define NVIC_USER_IRQ_OFFSET 16 + + +/* Special LR values for Secure/Non-Secure call handling and exception handling */ + +/* Function Return Payload (from ARMv8-M Architecture Reference Manual) LR value on entry from Secure BLXNS */ +#define FNC_RETURN (0xFEFFFFFFUL) /* bit [0] ignored when processing a branch */ + +/* The following EXC_RETURN mask values are used to evaluate the LR on exception entry */ +#define EXC_RETURN_PREFIX (0xFF000000UL) /* bits [31:24] set to indicate an EXC_RETURN value */ +#define EXC_RETURN_S (0x00000040UL) /* bit [6] stack used to push registers: 0=Non-secure 1=Secure */ +#define EXC_RETURN_DCRS (0x00000020UL) /* bit [5] stacking rules for called registers: 0=skipped 1=saved */ +#define EXC_RETURN_FTYPE (0x00000010UL) /* bit [4] allocate stack for floating-point context: 0=done 1=skipped */ +#define EXC_RETURN_MODE (0x00000008UL) /* bit [3] processor mode for return: 0=Handler mode 1=Thread mode */ +#define EXC_RETURN_SPSEL (0x00000004UL) /* bit [2] stack pointer used to restore context: 0=MSP 1=PSP */ +#define EXC_RETURN_ES (0x00000001UL) /* bit [0] security state exception was taken to: 0=Non-secure 1=Secure */ + +/* Integrity Signature (from ARMv8-M Architecture Reference Manual) for exception context stacking */ +#if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) /* Value for processors with floating-point extension: */ +#define EXC_INTEGRITY_SIGNATURE (0xFEFA125AUL) /* bit [0] SFTC must match LR bit[4] EXC_RETURN_FTYPE */ +#else +#define EXC_INTEGRITY_SIGNATURE (0xFEFA125BUL) /* Value for processors without floating-point extension */ +#endif + + +/* Interrupt Priorities are WORD accessible only under Armv6-M */ +/* The following MACROS handle generation of the register offset and byte masks */ +#define _BIT_SHIFT(IRQn) ( ((((uint32_t)(int32_t)(IRQn)) ) & 0x03UL) * 8UL) +#define _SHP_IDX(IRQn) ( (((((uint32_t)(int32_t)(IRQn)) & 0x0FUL)-8UL) >> 2UL) ) +#define _IP_IDX(IRQn) ( (((uint32_t)(int32_t)(IRQn)) >> 2UL) ) + +#define __NVIC_SetPriorityGrouping(X) (void)(X) +#define __NVIC_GetPriorityGrouping() (0U) + +/** + \brief Enable Interrupt + \details Enables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + __COMPILER_BARRIER(); + NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __COMPILER_BARRIER(); + } +} + + +/** + \brief Get Interrupt Enable status + \details Returns a device specific interrupt enable status from the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt is not enabled. + \return 1 Interrupt is enabled. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Disable Interrupt + \details Disables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_DisableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __DSB(); + __ISB(); + } +} + + +/** + \brief Get Pending Interrupt + \details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not pending. + \return 1 Interrupt status is pending. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Pending Interrupt + \details Sets the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Clear Pending Interrupt + \details Clears the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Active Interrupt + \details Reads the active register in the NVIC and returns the active bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not active. + \return 1 Interrupt status is active. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetActive(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief Get Interrupt Target State + \details Reads the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 if interrupt is assigned to Secure + \return 1 if interrupt is assigned to Non Secure + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t NVIC_GetTargetState(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Interrupt Target State + \details Sets the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 if interrupt is assigned to Secure + 1 if interrupt is assigned to Non Secure + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t NVIC_SetTargetState(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] |= ((uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL))); + return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Clear Interrupt Target State + \details Clears the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 if interrupt is assigned to Secure + 1 if interrupt is assigned to Non Secure + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t NVIC_ClearTargetState(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] &= ~((uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL))); + return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + + +/** + \brief Set Interrupt Priority + \details Sets the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \param [in] priority Priority to set. + \note The priority cannot be set for every processor exception. + */ +__STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->IPR[_IP_IDX(IRQn)] = ((uint32_t)(NVIC->IPR[_IP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | + (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn))); + } + else + { + SCB->SHPR[_SHP_IDX(IRQn)] = ((uint32_t)(SCB->SHPR[_SHP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | + (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn))); + } +} + + +/** + \brief Get Interrupt Priority + \details Reads the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Interrupt Priority. + Value is aligned automatically to the implemented priority bits of the microcontroller. + */ +__STATIC_INLINE uint32_t __NVIC_GetPriority(IRQn_Type IRQn) +{ + + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->IPR[ _IP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return((uint32_t)(((SCB->SHPR[_SHP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS))); + } +} + + +/** + \brief Encode Priority + \details Encodes the priority for an interrupt with the given priority group, + preemptive priority value, and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Used priority group. + \param [in] PreemptPriority Preemptive priority value (starting from 0). + \param [in] SubPriority Subpriority value (starting from 0). + \return Encoded priority. Value can be used in the function \ref NVIC_SetPriority(). + */ +__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + return ( + ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) | + ((SubPriority & (uint32_t)((1UL << (SubPriorityBits )) - 1UL))) + ); +} + + +/** + \brief Decode Priority + \details Decodes an interrupt priority value with a given priority group to + preemptive priority value and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set. + \param [in] Priority Priority value, which can be retrieved with the function \ref NVIC_GetPriority(). + \param [in] PriorityGroup Used priority group. + \param [out] pPreemptPriority Preemptive priority value (starting from 0). + \param [out] pSubPriority Subpriority value (starting from 0). + */ +__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* const pPreemptPriority, uint32_t* const pSubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + *pPreemptPriority = (Priority >> SubPriorityBits) & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL); + *pSubPriority = (Priority ) & (uint32_t)((1UL << (SubPriorityBits )) - 1UL); +} + + +/** + \brief Set Interrupt Vector + \details Sets an interrupt vector in SRAM based interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + VTOR must been relocated to SRAM before. + If VTOR is not present address 0 must be mapped to SRAM. + \param [in] IRQn Interrupt number + \param [in] vector Address of interrupt handler function + */ +__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector) +{ +#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U) + uint32_t *vectors = (uint32_t *)SCB->VTOR; +#else + uint32_t *vectors = (uint32_t *)0x0U; +#endif + vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET] = vector; + __DSB(); +} + + +/** + \brief Get Interrupt Vector + \details Reads an interrupt vector from interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Address of interrupt handler function + */ +__STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn) +{ +#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U) + uint32_t *vectors = (uint32_t *)SCB->VTOR; +#else + uint32_t *vectors = (uint32_t *)0x0U; +#endif + return vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET]; +} + + +/** + \brief System Reset + \details Initiates a system reset request to reset the MCU. + */ +__NO_RETURN __STATIC_INLINE void __NVIC_SystemReset(void) +{ + __DSB(); /* Ensure all outstanding memory accesses included + buffered write are completed before reset */ + SCB->AIRCR = ((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + SCB_AIRCR_SYSRESETREQ_Msk); + __DSB(); /* Ensure completion of memory access */ + + for(;;) /* wait until reset */ + { + __NOP(); + } +} + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief Enable Interrupt (non-secure) + \details Enables a device specific interrupt in the non-secure NVIC interrupt controller when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_EnableIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Interrupt Enable status (non-secure) + \details Returns a device specific interrupt enable status from the non-secure NVIC interrupt controller when in secure state. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt is not enabled. + \return 1 Interrupt is enabled. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetEnableIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Disable Interrupt (non-secure) + \details Disables a device specific interrupt in the non-secure NVIC interrupt controller when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_DisableIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Pending Interrupt (non-secure) + \details Reads the NVIC pending register in the non-secure NVIC when in secure state and returns the pending bit for the specified device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not pending. + \return 1 Interrupt status is pending. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetPendingIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Pending Interrupt (non-secure) + \details Sets the pending bit of a device specific interrupt in the non-secure NVIC pending register when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_SetPendingIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Clear Pending Interrupt (non-secure) + \details Clears the pending bit of a device specific interrupt in the non-secure NVIC pending register when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_ClearPendingIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Active Interrupt (non-secure) + \details Reads the active register in non-secure NVIC when in secure state and returns the active bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not active. + \return 1 Interrupt status is active. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetActive_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Interrupt Priority (non-secure) + \details Sets the priority of a non-secure device specific interrupt or a non-secure processor exception when in secure state. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \param [in] priority Priority to set. + \note The priority cannot be set for every non-secure processor exception. + */ +__STATIC_INLINE void TZ_NVIC_SetPriority_NS(IRQn_Type IRQn, uint32_t priority) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->IPR[_IP_IDX(IRQn)] = ((uint32_t)(NVIC_NS->IPR[_IP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | + (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn))); + } + else + { + SCB_NS->SHPR[_SHP_IDX(IRQn)] = ((uint32_t)(SCB_NS->SHPR[_SHP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | + (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn))); + } +} + + +/** + \brief Get Interrupt Priority (non-secure) + \details Reads the priority of a non-secure device specific interrupt or a non-secure processor exception when in secure state. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Interrupt Priority. Value is aligned automatically to the implemented priority bits of the microcontroller. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetPriority_NS(IRQn_Type IRQn) +{ + + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->IPR[ _IP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return((uint32_t)(((SCB_NS->SHPR[_SHP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS))); + } +} +#endif /* defined (__ARM_FEATURE_CMSE) &&(__ARM_FEATURE_CMSE == 3U) */ + +/*@} end of CMSIS_Core_NVICFunctions */ + +/* ########################## MPU functions #################################### */ + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + +#include "mpu_armv8.h" + +#endif + +/* ########################## FPU functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_FpuFunctions FPU Functions + \brief Function that provides FPU type. + @{ + */ + +/** + \brief get FPU type + \details returns the FPU type + \returns + - \b 0: No FPU + - \b 1: Single precision FPU + - \b 2: Double + Single precision FPU + */ +__STATIC_INLINE uint32_t SCB_GetFPUType(void) +{ + return 0U; /* No FPU */ +} + + +/*@} end of CMSIS_Core_FpuFunctions */ + + + +/* ########################## SAU functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SAUFunctions SAU Functions + \brief Functions that configure the SAU. + @{ + */ + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) + +/** + \brief Enable SAU + \details Enables the Security Attribution Unit (SAU). + */ +__STATIC_INLINE void TZ_SAU_Enable(void) +{ + SAU->CTRL |= (SAU_CTRL_ENABLE_Msk); +} + + + +/** + \brief Disable SAU + \details Disables the Security Attribution Unit (SAU). + */ +__STATIC_INLINE void TZ_SAU_Disable(void) +{ + SAU->CTRL &= ~(SAU_CTRL_ENABLE_Msk); +} + +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + +/*@} end of CMSIS_Core_SAUFunctions */ + + + + +/* ################################## Debug Control function ############################################ */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_DCBFunctions Debug Control Functions + \brief Functions that access the Debug Control Block. + @{ + */ + + +/** + \brief Set Debug Authentication Control Register + \details writes to Debug Authentication Control register. + \param [in] value value to be writen. + */ +__STATIC_INLINE void DCB_SetAuthCtrl(uint32_t value) +{ + __DSB(); + __ISB(); + DCB->DAUTHCTRL = value; + __DSB(); + __ISB(); +} + + +/** + \brief Get Debug Authentication Control Register + \details Reads Debug Authentication Control register. + \return Debug Authentication Control Register. + */ +__STATIC_INLINE uint32_t DCB_GetAuthCtrl(void) +{ + return (DCB->DAUTHCTRL); +} + + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief Set Debug Authentication Control Register (non-secure) + \details writes to non-secure Debug Authentication Control register when in secure state. + \param [in] value value to be writen + */ +__STATIC_INLINE void TZ_DCB_SetAuthCtrl_NS(uint32_t value) +{ + __DSB(); + __ISB(); + DCB_NS->DAUTHCTRL = value; + __DSB(); + __ISB(); +} + + +/** + \brief Get Debug Authentication Control Register (non-secure) + \details Reads non-secure Debug Authentication Control register when in secure state. + \return Debug Authentication Control Register. + */ +__STATIC_INLINE uint32_t TZ_DCB_GetAuthCtrl_NS(void) +{ + return (DCB_NS->DAUTHCTRL); +} +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + +/*@} end of CMSIS_Core_DCBFunctions */ + + + + +/* ################################## Debug Identification function ############################################ */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_DIBFunctions Debug Identification Functions + \brief Functions that access the Debug Identification Block. + @{ + */ + + +/** + \brief Get Debug Authentication Status Register + \details Reads Debug Authentication Status register. + \return Debug Authentication Status Register. + */ +__STATIC_INLINE uint32_t DIB_GetAuthStatus(void) +{ + return (DIB->DAUTHSTATUS); +} + + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief Get Debug Authentication Status Register (non-secure) + \details Reads non-secure Debug Authentication Status register when in secure state. + \return Debug Authentication Status Register. + */ +__STATIC_INLINE uint32_t TZ_DIB_GetAuthStatus_NS(void) +{ + return (DIB_NS->DAUTHSTATUS); +} +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + +/*@} end of CMSIS_Core_DCBFunctions */ + + + + +/* ################################## SysTick function ############################################ */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SysTickFunctions SysTick Functions + \brief Functions that configure the System. + @{ + */ + +#if defined (__Vendor_SysTickConfig) && (__Vendor_SysTickConfig == 0U) + +/** + \brief System Tick Configuration + \details Initializes the System Timer and its interrupt, and starts the System Tick Timer. + Counter is in free running mode to generate periodic interrupts. + \param [in] ticks Number of ticks between two interrupts. + \return 0 Function succeeded. + \return 1 Function failed. + \note When the variable __Vendor_SysTickConfig is set to 1, then the + function SysTick_Config is not included. In this case, the file device.h + must contain a vendor-specific implementation of this function. + */ +__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks) +{ + if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) + { + return (1UL); /* Reload value impossible */ + } + + SysTick->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ + NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ + SysTick->VAL = 0UL; /* Load the SysTick Counter Value */ + SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0UL); /* Function successful */ +} + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief System Tick Configuration (non-secure) + \details Initializes the non-secure System Timer and its interrupt when in secure state, and starts the System Tick Timer. + Counter is in free running mode to generate periodic interrupts. + \param [in] ticks Number of ticks between two interrupts. + \return 0 Function succeeded. + \return 1 Function failed. + \note When the variable __Vendor_SysTickConfig is set to 1, then the + function TZ_SysTick_Config_NS is not included. In this case, the file device.h + must contain a vendor-specific implementation of this function. + + */ +__STATIC_INLINE uint32_t TZ_SysTick_Config_NS(uint32_t ticks) +{ + if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) + { + return (1UL); /* Reload value impossible */ + } + + SysTick_NS->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ + TZ_NVIC_SetPriority_NS (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ + SysTick_NS->VAL = 0UL; /* Load the SysTick Counter Value */ + SysTick_NS->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0UL); /* Function successful */ +} +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + +#endif + +/*@} end of CMSIS_Core_SysTickFunctions */ + + + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_ARMV8MBL_H_DEPENDANT */ + +#endif /* __CMSIS_GENERIC */ diff --git a/bsp/renesas/ra8m1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/core_armv8mml.h b/bsp/renesas/ra8m1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/core_armv8mml.h new file mode 100644 index 000000000000..c119fbf24246 --- /dev/null +++ b/bsp/renesas/ra8m1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/core_armv8mml.h @@ -0,0 +1,3209 @@ +/**************************************************************************//** + * @file core_armv8mml.h + * @brief CMSIS Armv8-M Mainline Core Peripheral Access Layer Header File + * @version V5.2.3 + * @date 13. October 2021 + ******************************************************************************/ +/* + * Copyright (c) 2009-2021 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#elif defined (__clang__) + #pragma clang system_header /* treat file as system include file */ +#elif defined ( __GNUC__ ) + #pragma GCC diagnostic ignored "-Wpedantic" /* disable pedantic warning due to unnamed structs/unions */ +#endif + +#ifndef __CORE_ARMV8MML_H_GENERIC +#define __CORE_ARMV8MML_H_GENERIC + +#include + +#ifdef __cplusplus + extern "C" { +#endif + +/** + \page CMSIS_MISRA_Exceptions MISRA-C:2004 Compliance Exceptions + CMSIS violates the following MISRA-C:2004 rules: + + \li Required Rule 8.5, object/function definition in header file.
+ Function definitions in header files are used to allow 'inlining'. + + \li Required Rule 18.4, declaration of union type or object of union type: '{...}'.
+ Unions are used for effective representation of core registers. + + \li Advisory Rule 19.7, Function-like macro defined.
+ Function-like macros are used to allow more efficient code. + */ + + +/******************************************************************************* + * CMSIS definitions + ******************************************************************************/ +/** + \ingroup Cortex_ARMv8MML + @{ + */ + +#include "cmsis_version.h" + +/* CMSIS Armv8MML definitions */ +#define __ARMv8MML_CMSIS_VERSION_MAIN (__CM_CMSIS_VERSION_MAIN) /*!< \deprecated [31:16] CMSIS HAL main version */ +#define __ARMv8MML_CMSIS_VERSION_SUB (__CM_CMSIS_VERSION_SUB) /*!< \deprecated [15:0] CMSIS HAL sub version */ +#define __ARMv8MML_CMSIS_VERSION ((__ARMv8MML_CMSIS_VERSION_MAIN << 16U) | \ + __ARMv8MML_CMSIS_VERSION_SUB ) /*!< \deprecated CMSIS HAL version number */ + +#define __CORTEX_M (80U) /*!< Cortex-M Core */ + +/** __FPU_USED indicates whether an FPU is used or not. + For this, __FPU_PRESENT has to be checked prior to making use of FPU specific registers and functions. +*/ +#if defined ( __CC_ARM ) + #if defined __TARGET_FPU_VFP + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + + #if defined(__ARM_FEATURE_DSP) + #if defined(__DSP_PRESENT) && (__DSP_PRESENT == 1U) + #define __DSP_USED 1U + #else + #error "Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)" + #define __DSP_USED 0U + #endif + #else + #define __DSP_USED 0U + #endif + +#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) + #if defined __ARM_FP + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #warning "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + + #if defined(__ARM_FEATURE_DSP) + #if defined(__DSP_PRESENT) && (__DSP_PRESENT == 1U) + #define __DSP_USED 1U + #else + #error "Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)" + #define __DSP_USED 0U + #endif + #else + #define __DSP_USED 0U + #endif + +#elif defined ( __GNUC__ ) + #if defined (__VFP_FP__) && !defined(__SOFTFP__) + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + + #if defined(__ARM_FEATURE_DSP) + #if defined(__DSP_PRESENT) && (__DSP_PRESENT == 1U) + #define __DSP_USED 1U + #else + #error "Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)" + #define __DSP_USED 0U + #endif + #else + #define __DSP_USED 0U + #endif + +#elif defined ( __ICCARM__ ) + #if defined __ARMVFP__ + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + + #if defined(__ARM_FEATURE_DSP) + #if defined(__DSP_PRESENT) && (__DSP_PRESENT == 1U) + #define __DSP_USED 1U + #else + #error "Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)" + #define __DSP_USED 0U + #endif + #else + #define __DSP_USED 0U + #endif + +#elif defined ( __TI_ARM__ ) + #if defined __TI_VFP_SUPPORT__ + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined ( __TASKING__ ) + #if defined __FPU_VFP__ + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined ( __CSMC__ ) + #if ( __CSMC__ & 0x400U) + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#endif + +#include "cmsis_compiler.h" /* CMSIS compiler specific defines */ + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_ARMV8MML_H_GENERIC */ + +#ifndef __CMSIS_GENERIC + +#ifndef __CORE_ARMV8MML_H_DEPENDANT +#define __CORE_ARMV8MML_H_DEPENDANT + +#ifdef __cplusplus + extern "C" { +#endif + +/* check device defines and use defaults */ +#if defined __CHECK_DEVICE_DEFINES + #ifndef __ARMv8MML_REV + #define __ARMv8MML_REV 0x0000U + #warning "__ARMv8MML_REV not defined in device header file; using default!" + #endif + + #ifndef __FPU_PRESENT + #define __FPU_PRESENT 0U + #warning "__FPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __MPU_PRESENT + #define __MPU_PRESENT 0U + #warning "__MPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __SAUREGION_PRESENT + #define __SAUREGION_PRESENT 0U + #warning "__SAUREGION_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __DSP_PRESENT + #define __DSP_PRESENT 0U + #warning "__DSP_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __VTOR_PRESENT + #define __VTOR_PRESENT 1U + #warning "__VTOR_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __NVIC_PRIO_BITS + #define __NVIC_PRIO_BITS 3U + #warning "__NVIC_PRIO_BITS not defined in device header file; using default!" + #endif + + #ifndef __Vendor_SysTickConfig + #define __Vendor_SysTickConfig 0U + #warning "__Vendor_SysTickConfig not defined in device header file; using default!" + #endif +#endif + +/* IO definitions (access restrictions to peripheral registers) */ +/** + \defgroup CMSIS_glob_defs CMSIS Global Defines + + IO Type Qualifiers are used + \li to specify the access to peripheral variables. + \li for automatic generation of peripheral register debug information. +*/ +#ifdef __cplusplus + #define __I volatile /*!< Defines 'read only' permissions */ +#else + #define __I volatile const /*!< Defines 'read only' permissions */ +#endif +#define __O volatile /*!< Defines 'write only' permissions */ +#define __IO volatile /*!< Defines 'read / write' permissions */ + +/* following defines should be used for structure members */ +#define __IM volatile const /*! Defines 'read only' structure member permissions */ +#define __OM volatile /*! Defines 'write only' structure member permissions */ +#define __IOM volatile /*! Defines 'read / write' structure member permissions */ + +/*@} end of group ARMv8MML */ + + + +/******************************************************************************* + * Register Abstraction + Core Register contain: + - Core Register + - Core NVIC Register + - Core SCB Register + - Core SysTick Register + - Core Debug Register + - Core MPU Register + - Core SAU Register + - Core FPU Register + ******************************************************************************/ +/** + \defgroup CMSIS_core_register Defines and Type Definitions + \brief Type definitions and defines for Cortex-M processor based devices. +*/ + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CORE Status and Control Registers + \brief Core Register type definitions. + @{ + */ + +/** + \brief Union type to access the Application Program Status Register (APSR). + */ +typedef union +{ + struct + { + uint32_t _reserved0:16; /*!< bit: 0..15 Reserved */ + uint32_t GE:4; /*!< bit: 16..19 Greater than or Equal flags */ + uint32_t _reserved1:7; /*!< bit: 20..26 Reserved */ + uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} APSR_Type; + +/* APSR Register Definitions */ +#define APSR_N_Pos 31U /*!< APSR: N Position */ +#define APSR_N_Msk (1UL << APSR_N_Pos) /*!< APSR: N Mask */ + +#define APSR_Z_Pos 30U /*!< APSR: Z Position */ +#define APSR_Z_Msk (1UL << APSR_Z_Pos) /*!< APSR: Z Mask */ + +#define APSR_C_Pos 29U /*!< APSR: C Position */ +#define APSR_C_Msk (1UL << APSR_C_Pos) /*!< APSR: C Mask */ + +#define APSR_V_Pos 28U /*!< APSR: V Position */ +#define APSR_V_Msk (1UL << APSR_V_Pos) /*!< APSR: V Mask */ + +#define APSR_Q_Pos 27U /*!< APSR: Q Position */ +#define APSR_Q_Msk (1UL << APSR_Q_Pos) /*!< APSR: Q Mask */ + +#define APSR_GE_Pos 16U /*!< APSR: GE Position */ +#define APSR_GE_Msk (0xFUL << APSR_GE_Pos) /*!< APSR: GE Mask */ + + +/** + \brief Union type to access the Interrupt Program Status Register (IPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:23; /*!< bit: 9..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} IPSR_Type; + +/* IPSR Register Definitions */ +#define IPSR_ISR_Pos 0U /*!< IPSR: ISR Position */ +#define IPSR_ISR_Msk (0x1FFUL /*<< IPSR_ISR_Pos*/) /*!< IPSR: ISR Mask */ + + +/** + \brief Union type to access the Special-Purpose Program Status Registers (xPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:7; /*!< bit: 9..15 Reserved */ + uint32_t GE:4; /*!< bit: 16..19 Greater than or Equal flags */ + uint32_t _reserved1:4; /*!< bit: 20..23 Reserved */ + uint32_t T:1; /*!< bit: 24 Thumb bit (read 0) */ + uint32_t IT:2; /*!< bit: 25..26 saved IT state (read 0) */ + uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} xPSR_Type; + +/* xPSR Register Definitions */ +#define xPSR_N_Pos 31U /*!< xPSR: N Position */ +#define xPSR_N_Msk (1UL << xPSR_N_Pos) /*!< xPSR: N Mask */ + +#define xPSR_Z_Pos 30U /*!< xPSR: Z Position */ +#define xPSR_Z_Msk (1UL << xPSR_Z_Pos) /*!< xPSR: Z Mask */ + +#define xPSR_C_Pos 29U /*!< xPSR: C Position */ +#define xPSR_C_Msk (1UL << xPSR_C_Pos) /*!< xPSR: C Mask */ + +#define xPSR_V_Pos 28U /*!< xPSR: V Position */ +#define xPSR_V_Msk (1UL << xPSR_V_Pos) /*!< xPSR: V Mask */ + +#define xPSR_Q_Pos 27U /*!< xPSR: Q Position */ +#define xPSR_Q_Msk (1UL << xPSR_Q_Pos) /*!< xPSR: Q Mask */ + +#define xPSR_IT_Pos 25U /*!< xPSR: IT Position */ +#define xPSR_IT_Msk (3UL << xPSR_IT_Pos) /*!< xPSR: IT Mask */ + +#define xPSR_T_Pos 24U /*!< xPSR: T Position */ +#define xPSR_T_Msk (1UL << xPSR_T_Pos) /*!< xPSR: T Mask */ + +#define xPSR_GE_Pos 16U /*!< xPSR: GE Position */ +#define xPSR_GE_Msk (0xFUL << xPSR_GE_Pos) /*!< xPSR: GE Mask */ + +#define xPSR_ISR_Pos 0U /*!< xPSR: ISR Position */ +#define xPSR_ISR_Msk (0x1FFUL /*<< xPSR_ISR_Pos*/) /*!< xPSR: ISR Mask */ + + +/** + \brief Union type to access the Control Registers (CONTROL). + */ +typedef union +{ + struct + { + uint32_t nPRIV:1; /*!< bit: 0 Execution privilege in Thread mode */ + uint32_t SPSEL:1; /*!< bit: 1 Stack-pointer select */ + uint32_t FPCA:1; /*!< bit: 2 Floating-point context active */ + uint32_t SFPA:1; /*!< bit: 3 Secure floating-point active */ + uint32_t _reserved1:28; /*!< bit: 4..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} CONTROL_Type; + +/* CONTROL Register Definitions */ +#define CONTROL_SFPA_Pos 3U /*!< CONTROL: SFPA Position */ +#define CONTROL_SFPA_Msk (1UL << CONTROL_SFPA_Pos) /*!< CONTROL: SFPA Mask */ + +#define CONTROL_FPCA_Pos 2U /*!< CONTROL: FPCA Position */ +#define CONTROL_FPCA_Msk (1UL << CONTROL_FPCA_Pos) /*!< CONTROL: FPCA Mask */ + +#define CONTROL_SPSEL_Pos 1U /*!< CONTROL: SPSEL Position */ +#define CONTROL_SPSEL_Msk (1UL << CONTROL_SPSEL_Pos) /*!< CONTROL: SPSEL Mask */ + +#define CONTROL_nPRIV_Pos 0U /*!< CONTROL: nPRIV Position */ +#define CONTROL_nPRIV_Msk (1UL /*<< CONTROL_nPRIV_Pos*/) /*!< CONTROL: nPRIV Mask */ + +/*@} end of group CMSIS_CORE */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_NVIC Nested Vectored Interrupt Controller (NVIC) + \brief Type definitions for the NVIC Registers + @{ + */ + +/** + \brief Structure type to access the Nested Vectored Interrupt Controller (NVIC). + */ +typedef struct +{ + __IOM uint32_t ISER[16U]; /*!< Offset: 0x000 (R/W) Interrupt Set Enable Register */ + uint32_t RESERVED0[16U]; + __IOM uint32_t ICER[16U]; /*!< Offset: 0x080 (R/W) Interrupt Clear Enable Register */ + uint32_t RSERVED1[16U]; + __IOM uint32_t ISPR[16U]; /*!< Offset: 0x100 (R/W) Interrupt Set Pending Register */ + uint32_t RESERVED2[16U]; + __IOM uint32_t ICPR[16U]; /*!< Offset: 0x180 (R/W) Interrupt Clear Pending Register */ + uint32_t RESERVED3[16U]; + __IOM uint32_t IABR[16U]; /*!< Offset: 0x200 (R/W) Interrupt Active bit Register */ + uint32_t RESERVED4[16U]; + __IOM uint32_t ITNS[16U]; /*!< Offset: 0x280 (R/W) Interrupt Non-Secure State Register */ + uint32_t RESERVED5[16U]; + __IOM uint8_t IPR[496U]; /*!< Offset: 0x300 (R/W) Interrupt Priority Register (8Bit wide) */ + uint32_t RESERVED6[580U]; + __OM uint32_t STIR; /*!< Offset: 0xE00 ( /W) Software Trigger Interrupt Register */ +} NVIC_Type; + +/* Software Triggered Interrupt Register Definitions */ +#define NVIC_STIR_INTID_Pos 0U /*!< STIR: INTLINESNUM Position */ +#define NVIC_STIR_INTID_Msk (0x1FFUL /*<< NVIC_STIR_INTID_Pos*/) /*!< STIR: INTLINESNUM Mask */ + +/*@} end of group CMSIS_NVIC */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SCB System Control Block (SCB) + \brief Type definitions for the System Control Block Registers + @{ + */ + +/** + \brief Structure type to access the System Control Block (SCB). + */ +typedef struct +{ + __IM uint32_t CPUID; /*!< Offset: 0x000 (R/ ) CPUID Base Register */ + __IOM uint32_t ICSR; /*!< Offset: 0x004 (R/W) Interrupt Control and State Register */ + __IOM uint32_t VTOR; /*!< Offset: 0x008 (R/W) Vector Table Offset Register */ + __IOM uint32_t AIRCR; /*!< Offset: 0x00C (R/W) Application Interrupt and Reset Control Register */ + __IOM uint32_t SCR; /*!< Offset: 0x010 (R/W) System Control Register */ + __IOM uint32_t CCR; /*!< Offset: 0x014 (R/W) Configuration Control Register */ + __IOM uint8_t SHPR[12U]; /*!< Offset: 0x018 (R/W) System Handlers Priority Registers (4-7, 8-11, 12-15) */ + __IOM uint32_t SHCSR; /*!< Offset: 0x024 (R/W) System Handler Control and State Register */ + __IOM uint32_t CFSR; /*!< Offset: 0x028 (R/W) Configurable Fault Status Register */ + __IOM uint32_t HFSR; /*!< Offset: 0x02C (R/W) HardFault Status Register */ + __IOM uint32_t DFSR; /*!< Offset: 0x030 (R/W) Debug Fault Status Register */ + __IOM uint32_t MMFAR; /*!< Offset: 0x034 (R/W) MemManage Fault Address Register */ + __IOM uint32_t BFAR; /*!< Offset: 0x038 (R/W) BusFault Address Register */ + __IOM uint32_t AFSR; /*!< Offset: 0x03C (R/W) Auxiliary Fault Status Register */ + __IM uint32_t ID_PFR[2U]; /*!< Offset: 0x040 (R/ ) Processor Feature Register */ + __IM uint32_t ID_DFR; /*!< Offset: 0x048 (R/ ) Debug Feature Register */ + __IM uint32_t ID_AFR; /*!< Offset: 0x04C (R/ ) Auxiliary Feature Register */ + __IM uint32_t ID_MMFR[4U]; /*!< Offset: 0x050 (R/ ) Memory Model Feature Register */ + __IM uint32_t ID_ISAR[6U]; /*!< Offset: 0x060 (R/ ) Instruction Set Attributes Register */ + __IM uint32_t CLIDR; /*!< Offset: 0x078 (R/ ) Cache Level ID register */ + __IM uint32_t CTR; /*!< Offset: 0x07C (R/ ) Cache Type register */ + __IM uint32_t CCSIDR; /*!< Offset: 0x080 (R/ ) Cache Size ID Register */ + __IOM uint32_t CSSELR; /*!< Offset: 0x084 (R/W) Cache Size Selection Register */ + __IOM uint32_t CPACR; /*!< Offset: 0x088 (R/W) Coprocessor Access Control Register */ + __IOM uint32_t NSACR; /*!< Offset: 0x08C (R/W) Non-Secure Access Control Register */ + uint32_t RESERVED7[21U]; + __IOM uint32_t SFSR; /*!< Offset: 0x0E4 (R/W) Secure Fault Status Register */ + __IOM uint32_t SFAR; /*!< Offset: 0x0E8 (R/W) Secure Fault Address Register */ + uint32_t RESERVED3[69U]; + __OM uint32_t STIR; /*!< Offset: 0x200 ( /W) Software Triggered Interrupt Register */ + uint32_t RESERVED4[15U]; + __IM uint32_t MVFR0; /*!< Offset: 0x240 (R/ ) Media and VFP Feature Register 0 */ + __IM uint32_t MVFR1; /*!< Offset: 0x244 (R/ ) Media and VFP Feature Register 1 */ + __IM uint32_t MVFR2; /*!< Offset: 0x248 (R/ ) Media and VFP Feature Register 2 */ + uint32_t RESERVED5[1U]; + __OM uint32_t ICIALLU; /*!< Offset: 0x250 ( /W) I-Cache Invalidate All to PoU */ + uint32_t RESERVED6[1U]; + __OM uint32_t ICIMVAU; /*!< Offset: 0x258 ( /W) I-Cache Invalidate by MVA to PoU */ + __OM uint32_t DCIMVAC; /*!< Offset: 0x25C ( /W) D-Cache Invalidate by MVA to PoC */ + __OM uint32_t DCISW; /*!< Offset: 0x260 ( /W) D-Cache Invalidate by Set-way */ + __OM uint32_t DCCMVAU; /*!< Offset: 0x264 ( /W) D-Cache Clean by MVA to PoU */ + __OM uint32_t DCCMVAC; /*!< Offset: 0x268 ( /W) D-Cache Clean by MVA to PoC */ + __OM uint32_t DCCSW; /*!< Offset: 0x26C ( /W) D-Cache Clean by Set-way */ + __OM uint32_t DCCIMVAC; /*!< Offset: 0x270 ( /W) D-Cache Clean and Invalidate by MVA to PoC */ + __OM uint32_t DCCISW; /*!< Offset: 0x274 ( /W) D-Cache Clean and Invalidate by Set-way */ + __OM uint32_t BPIALL; /*!< Offset: 0x278 ( /W) Branch Predictor Invalidate All */ +} SCB_Type; + +/* SCB CPUID Register Definitions */ +#define SCB_CPUID_IMPLEMENTER_Pos 24U /*!< SCB CPUID: IMPLEMENTER Position */ +#define SCB_CPUID_IMPLEMENTER_Msk (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos) /*!< SCB CPUID: IMPLEMENTER Mask */ + +#define SCB_CPUID_VARIANT_Pos 20U /*!< SCB CPUID: VARIANT Position */ +#define SCB_CPUID_VARIANT_Msk (0xFUL << SCB_CPUID_VARIANT_Pos) /*!< SCB CPUID: VARIANT Mask */ + +#define SCB_CPUID_ARCHITECTURE_Pos 16U /*!< SCB CPUID: ARCHITECTURE Position */ +#define SCB_CPUID_ARCHITECTURE_Msk (0xFUL << SCB_CPUID_ARCHITECTURE_Pos) /*!< SCB CPUID: ARCHITECTURE Mask */ + +#define SCB_CPUID_PARTNO_Pos 4U /*!< SCB CPUID: PARTNO Position */ +#define SCB_CPUID_PARTNO_Msk (0xFFFUL << SCB_CPUID_PARTNO_Pos) /*!< SCB CPUID: PARTNO Mask */ + +#define SCB_CPUID_REVISION_Pos 0U /*!< SCB CPUID: REVISION Position */ +#define SCB_CPUID_REVISION_Msk (0xFUL /*<< SCB_CPUID_REVISION_Pos*/) /*!< SCB CPUID: REVISION Mask */ + +/* SCB Interrupt Control State Register Definitions */ +#define SCB_ICSR_PENDNMISET_Pos 31U /*!< SCB ICSR: PENDNMISET Position */ +#define SCB_ICSR_PENDNMISET_Msk (1UL << SCB_ICSR_PENDNMISET_Pos) /*!< SCB ICSR: PENDNMISET Mask */ + +#define SCB_ICSR_NMIPENDSET_Pos SCB_ICSR_PENDNMISET_Pos /*!< SCB ICSR: NMIPENDSET Position, backward compatibility */ +#define SCB_ICSR_NMIPENDSET_Msk SCB_ICSR_PENDNMISET_Msk /*!< SCB ICSR: NMIPENDSET Mask, backward compatibility */ + +#define SCB_ICSR_PENDNMICLR_Pos 30U /*!< SCB ICSR: PENDNMICLR Position */ +#define SCB_ICSR_PENDNMICLR_Msk (1UL << SCB_ICSR_PENDNMICLR_Pos) /*!< SCB ICSR: PENDNMICLR Mask */ + +#define SCB_ICSR_PENDSVSET_Pos 28U /*!< SCB ICSR: PENDSVSET Position */ +#define SCB_ICSR_PENDSVSET_Msk (1UL << SCB_ICSR_PENDSVSET_Pos) /*!< SCB ICSR: PENDSVSET Mask */ + +#define SCB_ICSR_PENDSVCLR_Pos 27U /*!< SCB ICSR: PENDSVCLR Position */ +#define SCB_ICSR_PENDSVCLR_Msk (1UL << SCB_ICSR_PENDSVCLR_Pos) /*!< SCB ICSR: PENDSVCLR Mask */ + +#define SCB_ICSR_PENDSTSET_Pos 26U /*!< SCB ICSR: PENDSTSET Position */ +#define SCB_ICSR_PENDSTSET_Msk (1UL << SCB_ICSR_PENDSTSET_Pos) /*!< SCB ICSR: PENDSTSET Mask */ + +#define SCB_ICSR_PENDSTCLR_Pos 25U /*!< SCB ICSR: PENDSTCLR Position */ +#define SCB_ICSR_PENDSTCLR_Msk (1UL << SCB_ICSR_PENDSTCLR_Pos) /*!< SCB ICSR: PENDSTCLR Mask */ + +#define SCB_ICSR_STTNS_Pos 24U /*!< SCB ICSR: STTNS Position (Security Extension) */ +#define SCB_ICSR_STTNS_Msk (1UL << SCB_ICSR_STTNS_Pos) /*!< SCB ICSR: STTNS Mask (Security Extension) */ + +#define SCB_ICSR_ISRPREEMPT_Pos 23U /*!< SCB ICSR: ISRPREEMPT Position */ +#define SCB_ICSR_ISRPREEMPT_Msk (1UL << SCB_ICSR_ISRPREEMPT_Pos) /*!< SCB ICSR: ISRPREEMPT Mask */ + +#define SCB_ICSR_ISRPENDING_Pos 22U /*!< SCB ICSR: ISRPENDING Position */ +#define SCB_ICSR_ISRPENDING_Msk (1UL << SCB_ICSR_ISRPENDING_Pos) /*!< SCB ICSR: ISRPENDING Mask */ + +#define SCB_ICSR_VECTPENDING_Pos 12U /*!< SCB ICSR: VECTPENDING Position */ +#define SCB_ICSR_VECTPENDING_Msk (0x1FFUL << SCB_ICSR_VECTPENDING_Pos) /*!< SCB ICSR: VECTPENDING Mask */ + +#define SCB_ICSR_RETTOBASE_Pos 11U /*!< SCB ICSR: RETTOBASE Position */ +#define SCB_ICSR_RETTOBASE_Msk (1UL << SCB_ICSR_RETTOBASE_Pos) /*!< SCB ICSR: RETTOBASE Mask */ + +#define SCB_ICSR_VECTACTIVE_Pos 0U /*!< SCB ICSR: VECTACTIVE Position */ +#define SCB_ICSR_VECTACTIVE_Msk (0x1FFUL /*<< SCB_ICSR_VECTACTIVE_Pos*/) /*!< SCB ICSR: VECTACTIVE Mask */ + +/* SCB Vector Table Offset Register Definitions */ +#define SCB_VTOR_TBLOFF_Pos 7U /*!< SCB VTOR: TBLOFF Position */ +#define SCB_VTOR_TBLOFF_Msk (0x1FFFFFFUL << SCB_VTOR_TBLOFF_Pos) /*!< SCB VTOR: TBLOFF Mask */ + +/* SCB Application Interrupt and Reset Control Register Definitions */ +#define SCB_AIRCR_VECTKEY_Pos 16U /*!< SCB AIRCR: VECTKEY Position */ +#define SCB_AIRCR_VECTKEY_Msk (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos) /*!< SCB AIRCR: VECTKEY Mask */ + +#define SCB_AIRCR_VECTKEYSTAT_Pos 16U /*!< SCB AIRCR: VECTKEYSTAT Position */ +#define SCB_AIRCR_VECTKEYSTAT_Msk (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos) /*!< SCB AIRCR: VECTKEYSTAT Mask */ + +#define SCB_AIRCR_ENDIANESS_Pos 15U /*!< SCB AIRCR: ENDIANESS Position */ +#define SCB_AIRCR_ENDIANESS_Msk (1UL << SCB_AIRCR_ENDIANESS_Pos) /*!< SCB AIRCR: ENDIANESS Mask */ + +#define SCB_AIRCR_PRIS_Pos 14U /*!< SCB AIRCR: PRIS Position */ +#define SCB_AIRCR_PRIS_Msk (1UL << SCB_AIRCR_PRIS_Pos) /*!< SCB AIRCR: PRIS Mask */ + +#define SCB_AIRCR_BFHFNMINS_Pos 13U /*!< SCB AIRCR: BFHFNMINS Position */ +#define SCB_AIRCR_BFHFNMINS_Msk (1UL << SCB_AIRCR_BFHFNMINS_Pos) /*!< SCB AIRCR: BFHFNMINS Mask */ + +#define SCB_AIRCR_PRIGROUP_Pos 8U /*!< SCB AIRCR: PRIGROUP Position */ +#define SCB_AIRCR_PRIGROUP_Msk (7UL << SCB_AIRCR_PRIGROUP_Pos) /*!< SCB AIRCR: PRIGROUP Mask */ + +#define SCB_AIRCR_SYSRESETREQS_Pos 3U /*!< SCB AIRCR: SYSRESETREQS Position */ +#define SCB_AIRCR_SYSRESETREQS_Msk (1UL << SCB_AIRCR_SYSRESETREQS_Pos) /*!< SCB AIRCR: SYSRESETREQS Mask */ + +#define SCB_AIRCR_SYSRESETREQ_Pos 2U /*!< SCB AIRCR: SYSRESETREQ Position */ +#define SCB_AIRCR_SYSRESETREQ_Msk (1UL << SCB_AIRCR_SYSRESETREQ_Pos) /*!< SCB AIRCR: SYSRESETREQ Mask */ + +#define SCB_AIRCR_VECTCLRACTIVE_Pos 1U /*!< SCB AIRCR: VECTCLRACTIVE Position */ +#define SCB_AIRCR_VECTCLRACTIVE_Msk (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos) /*!< SCB AIRCR: VECTCLRACTIVE Mask */ + +/* SCB System Control Register Definitions */ +#define SCB_SCR_SEVONPEND_Pos 4U /*!< SCB SCR: SEVONPEND Position */ +#define SCB_SCR_SEVONPEND_Msk (1UL << SCB_SCR_SEVONPEND_Pos) /*!< SCB SCR: SEVONPEND Mask */ + +#define SCB_SCR_SLEEPDEEPS_Pos 3U /*!< SCB SCR: SLEEPDEEPS Position */ +#define SCB_SCR_SLEEPDEEPS_Msk (1UL << SCB_SCR_SLEEPDEEPS_Pos) /*!< SCB SCR: SLEEPDEEPS Mask */ + +#define SCB_SCR_SLEEPDEEP_Pos 2U /*!< SCB SCR: SLEEPDEEP Position */ +#define SCB_SCR_SLEEPDEEP_Msk (1UL << SCB_SCR_SLEEPDEEP_Pos) /*!< SCB SCR: SLEEPDEEP Mask */ + +#define SCB_SCR_SLEEPONEXIT_Pos 1U /*!< SCB SCR: SLEEPONEXIT Position */ +#define SCB_SCR_SLEEPONEXIT_Msk (1UL << SCB_SCR_SLEEPONEXIT_Pos) /*!< SCB SCR: SLEEPONEXIT Mask */ + +/* SCB Configuration Control Register Definitions */ +#define SCB_CCR_BP_Pos 18U /*!< SCB CCR: BP Position */ +#define SCB_CCR_BP_Msk (1UL << SCB_CCR_BP_Pos) /*!< SCB CCR: BP Mask */ + +#define SCB_CCR_IC_Pos 17U /*!< SCB CCR: IC Position */ +#define SCB_CCR_IC_Msk (1UL << SCB_CCR_IC_Pos) /*!< SCB CCR: IC Mask */ + +#define SCB_CCR_DC_Pos 16U /*!< SCB CCR: DC Position */ +#define SCB_CCR_DC_Msk (1UL << SCB_CCR_DC_Pos) /*!< SCB CCR: DC Mask */ + +#define SCB_CCR_STKOFHFNMIGN_Pos 10U /*!< SCB CCR: STKOFHFNMIGN Position */ +#define SCB_CCR_STKOFHFNMIGN_Msk (1UL << SCB_CCR_STKOFHFNMIGN_Pos) /*!< SCB CCR: STKOFHFNMIGN Mask */ + +#define SCB_CCR_BFHFNMIGN_Pos 8U /*!< SCB CCR: BFHFNMIGN Position */ +#define SCB_CCR_BFHFNMIGN_Msk (1UL << SCB_CCR_BFHFNMIGN_Pos) /*!< SCB CCR: BFHFNMIGN Mask */ + +#define SCB_CCR_DIV_0_TRP_Pos 4U /*!< SCB CCR: DIV_0_TRP Position */ +#define SCB_CCR_DIV_0_TRP_Msk (1UL << SCB_CCR_DIV_0_TRP_Pos) /*!< SCB CCR: DIV_0_TRP Mask */ + +#define SCB_CCR_UNALIGN_TRP_Pos 3U /*!< SCB CCR: UNALIGN_TRP Position */ +#define SCB_CCR_UNALIGN_TRP_Msk (1UL << SCB_CCR_UNALIGN_TRP_Pos) /*!< SCB CCR: UNALIGN_TRP Mask */ + +#define SCB_CCR_USERSETMPEND_Pos 1U /*!< SCB CCR: USERSETMPEND Position */ +#define SCB_CCR_USERSETMPEND_Msk (1UL << SCB_CCR_USERSETMPEND_Pos) /*!< SCB CCR: USERSETMPEND Mask */ + +/* SCB System Handler Control and State Register Definitions */ +#define SCB_SHCSR_HARDFAULTPENDED_Pos 21U /*!< SCB SHCSR: HARDFAULTPENDED Position */ +#define SCB_SHCSR_HARDFAULTPENDED_Msk (1UL << SCB_SHCSR_HARDFAULTPENDED_Pos) /*!< SCB SHCSR: HARDFAULTPENDED Mask */ + +#define SCB_SHCSR_SECUREFAULTPENDED_Pos 20U /*!< SCB SHCSR: SECUREFAULTPENDED Position */ +#define SCB_SHCSR_SECUREFAULTPENDED_Msk (1UL << SCB_SHCSR_SECUREFAULTPENDED_Pos) /*!< SCB SHCSR: SECUREFAULTPENDED Mask */ + +#define SCB_SHCSR_SECUREFAULTENA_Pos 19U /*!< SCB SHCSR: SECUREFAULTENA Position */ +#define SCB_SHCSR_SECUREFAULTENA_Msk (1UL << SCB_SHCSR_SECUREFAULTENA_Pos) /*!< SCB SHCSR: SECUREFAULTENA Mask */ + +#define SCB_SHCSR_USGFAULTENA_Pos 18U /*!< SCB SHCSR: USGFAULTENA Position */ +#define SCB_SHCSR_USGFAULTENA_Msk (1UL << SCB_SHCSR_USGFAULTENA_Pos) /*!< SCB SHCSR: USGFAULTENA Mask */ + +#define SCB_SHCSR_BUSFAULTENA_Pos 17U /*!< SCB SHCSR: BUSFAULTENA Position */ +#define SCB_SHCSR_BUSFAULTENA_Msk (1UL << SCB_SHCSR_BUSFAULTENA_Pos) /*!< SCB SHCSR: BUSFAULTENA Mask */ + +#define SCB_SHCSR_MEMFAULTENA_Pos 16U /*!< SCB SHCSR: MEMFAULTENA Position */ +#define SCB_SHCSR_MEMFAULTENA_Msk (1UL << SCB_SHCSR_MEMFAULTENA_Pos) /*!< SCB SHCSR: MEMFAULTENA Mask */ + +#define SCB_SHCSR_SVCALLPENDED_Pos 15U /*!< SCB SHCSR: SVCALLPENDED Position */ +#define SCB_SHCSR_SVCALLPENDED_Msk (1UL << SCB_SHCSR_SVCALLPENDED_Pos) /*!< SCB SHCSR: SVCALLPENDED Mask */ + +#define SCB_SHCSR_BUSFAULTPENDED_Pos 14U /*!< SCB SHCSR: BUSFAULTPENDED Position */ +#define SCB_SHCSR_BUSFAULTPENDED_Msk (1UL << SCB_SHCSR_BUSFAULTPENDED_Pos) /*!< SCB SHCSR: BUSFAULTPENDED Mask */ + +#define SCB_SHCSR_MEMFAULTPENDED_Pos 13U /*!< SCB SHCSR: MEMFAULTPENDED Position */ +#define SCB_SHCSR_MEMFAULTPENDED_Msk (1UL << SCB_SHCSR_MEMFAULTPENDED_Pos) /*!< SCB SHCSR: MEMFAULTPENDED Mask */ + +#define SCB_SHCSR_USGFAULTPENDED_Pos 12U /*!< SCB SHCSR: USGFAULTPENDED Position */ +#define SCB_SHCSR_USGFAULTPENDED_Msk (1UL << SCB_SHCSR_USGFAULTPENDED_Pos) /*!< SCB SHCSR: USGFAULTPENDED Mask */ + +#define SCB_SHCSR_SYSTICKACT_Pos 11U /*!< SCB SHCSR: SYSTICKACT Position */ +#define SCB_SHCSR_SYSTICKACT_Msk (1UL << SCB_SHCSR_SYSTICKACT_Pos) /*!< SCB SHCSR: SYSTICKACT Mask */ + +#define SCB_SHCSR_PENDSVACT_Pos 10U /*!< SCB SHCSR: PENDSVACT Position */ +#define SCB_SHCSR_PENDSVACT_Msk (1UL << SCB_SHCSR_PENDSVACT_Pos) /*!< SCB SHCSR: PENDSVACT Mask */ + +#define SCB_SHCSR_MONITORACT_Pos 8U /*!< SCB SHCSR: MONITORACT Position */ +#define SCB_SHCSR_MONITORACT_Msk (1UL << SCB_SHCSR_MONITORACT_Pos) /*!< SCB SHCSR: MONITORACT Mask */ + +#define SCB_SHCSR_SVCALLACT_Pos 7U /*!< SCB SHCSR: SVCALLACT Position */ +#define SCB_SHCSR_SVCALLACT_Msk (1UL << SCB_SHCSR_SVCALLACT_Pos) /*!< SCB SHCSR: SVCALLACT Mask */ + +#define SCB_SHCSR_NMIACT_Pos 5U /*!< SCB SHCSR: NMIACT Position */ +#define SCB_SHCSR_NMIACT_Msk (1UL << SCB_SHCSR_NMIACT_Pos) /*!< SCB SHCSR: NMIACT Mask */ + +#define SCB_SHCSR_SECUREFAULTACT_Pos 4U /*!< SCB SHCSR: SECUREFAULTACT Position */ +#define SCB_SHCSR_SECUREFAULTACT_Msk (1UL << SCB_SHCSR_SECUREFAULTACT_Pos) /*!< SCB SHCSR: SECUREFAULTACT Mask */ + +#define SCB_SHCSR_USGFAULTACT_Pos 3U /*!< SCB SHCSR: USGFAULTACT Position */ +#define SCB_SHCSR_USGFAULTACT_Msk (1UL << SCB_SHCSR_USGFAULTACT_Pos) /*!< SCB SHCSR: USGFAULTACT Mask */ + +#define SCB_SHCSR_HARDFAULTACT_Pos 2U /*!< SCB SHCSR: HARDFAULTACT Position */ +#define SCB_SHCSR_HARDFAULTACT_Msk (1UL << SCB_SHCSR_HARDFAULTACT_Pos) /*!< SCB SHCSR: HARDFAULTACT Mask */ + +#define SCB_SHCSR_BUSFAULTACT_Pos 1U /*!< SCB SHCSR: BUSFAULTACT Position */ +#define SCB_SHCSR_BUSFAULTACT_Msk (1UL << SCB_SHCSR_BUSFAULTACT_Pos) /*!< SCB SHCSR: BUSFAULTACT Mask */ + +#define SCB_SHCSR_MEMFAULTACT_Pos 0U /*!< SCB SHCSR: MEMFAULTACT Position */ +#define SCB_SHCSR_MEMFAULTACT_Msk (1UL /*<< SCB_SHCSR_MEMFAULTACT_Pos*/) /*!< SCB SHCSR: MEMFAULTACT Mask */ + +/* SCB Configurable Fault Status Register Definitions */ +#define SCB_CFSR_USGFAULTSR_Pos 16U /*!< SCB CFSR: Usage Fault Status Register Position */ +#define SCB_CFSR_USGFAULTSR_Msk (0xFFFFUL << SCB_CFSR_USGFAULTSR_Pos) /*!< SCB CFSR: Usage Fault Status Register Mask */ + +#define SCB_CFSR_BUSFAULTSR_Pos 8U /*!< SCB CFSR: Bus Fault Status Register Position */ +#define SCB_CFSR_BUSFAULTSR_Msk (0xFFUL << SCB_CFSR_BUSFAULTSR_Pos) /*!< SCB CFSR: Bus Fault Status Register Mask */ + +#define SCB_CFSR_MEMFAULTSR_Pos 0U /*!< SCB CFSR: Memory Manage Fault Status Register Position */ +#define SCB_CFSR_MEMFAULTSR_Msk (0xFFUL /*<< SCB_CFSR_MEMFAULTSR_Pos*/) /*!< SCB CFSR: Memory Manage Fault Status Register Mask */ + +/* MemManage Fault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_MMARVALID_Pos (SCB_CFSR_MEMFAULTSR_Pos + 7U) /*!< SCB CFSR (MMFSR): MMARVALID Position */ +#define SCB_CFSR_MMARVALID_Msk (1UL << SCB_CFSR_MMARVALID_Pos) /*!< SCB CFSR (MMFSR): MMARVALID Mask */ + +#define SCB_CFSR_MLSPERR_Pos (SCB_CFSR_MEMFAULTSR_Pos + 5U) /*!< SCB CFSR (MMFSR): MLSPERR Position */ +#define SCB_CFSR_MLSPERR_Msk (1UL << SCB_CFSR_MLSPERR_Pos) /*!< SCB CFSR (MMFSR): MLSPERR Mask */ + +#define SCB_CFSR_MSTKERR_Pos (SCB_CFSR_MEMFAULTSR_Pos + 4U) /*!< SCB CFSR (MMFSR): MSTKERR Position */ +#define SCB_CFSR_MSTKERR_Msk (1UL << SCB_CFSR_MSTKERR_Pos) /*!< SCB CFSR (MMFSR): MSTKERR Mask */ + +#define SCB_CFSR_MUNSTKERR_Pos (SCB_CFSR_MEMFAULTSR_Pos + 3U) /*!< SCB CFSR (MMFSR): MUNSTKERR Position */ +#define SCB_CFSR_MUNSTKERR_Msk (1UL << SCB_CFSR_MUNSTKERR_Pos) /*!< SCB CFSR (MMFSR): MUNSTKERR Mask */ + +#define SCB_CFSR_DACCVIOL_Pos (SCB_CFSR_MEMFAULTSR_Pos + 1U) /*!< SCB CFSR (MMFSR): DACCVIOL Position */ +#define SCB_CFSR_DACCVIOL_Msk (1UL << SCB_CFSR_DACCVIOL_Pos) /*!< SCB CFSR (MMFSR): DACCVIOL Mask */ + +#define SCB_CFSR_IACCVIOL_Pos (SCB_CFSR_MEMFAULTSR_Pos + 0U) /*!< SCB CFSR (MMFSR): IACCVIOL Position */ +#define SCB_CFSR_IACCVIOL_Msk (1UL /*<< SCB_CFSR_IACCVIOL_Pos*/) /*!< SCB CFSR (MMFSR): IACCVIOL Mask */ + +/* BusFault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_BFARVALID_Pos (SCB_CFSR_BUSFAULTSR_Pos + 7U) /*!< SCB CFSR (BFSR): BFARVALID Position */ +#define SCB_CFSR_BFARVALID_Msk (1UL << SCB_CFSR_BFARVALID_Pos) /*!< SCB CFSR (BFSR): BFARVALID Mask */ + +#define SCB_CFSR_LSPERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 5U) /*!< SCB CFSR (BFSR): LSPERR Position */ +#define SCB_CFSR_LSPERR_Msk (1UL << SCB_CFSR_LSPERR_Pos) /*!< SCB CFSR (BFSR): LSPERR Mask */ + +#define SCB_CFSR_STKERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 4U) /*!< SCB CFSR (BFSR): STKERR Position */ +#define SCB_CFSR_STKERR_Msk (1UL << SCB_CFSR_STKERR_Pos) /*!< SCB CFSR (BFSR): STKERR Mask */ + +#define SCB_CFSR_UNSTKERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 3U) /*!< SCB CFSR (BFSR): UNSTKERR Position */ +#define SCB_CFSR_UNSTKERR_Msk (1UL << SCB_CFSR_UNSTKERR_Pos) /*!< SCB CFSR (BFSR): UNSTKERR Mask */ + +#define SCB_CFSR_IMPRECISERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 2U) /*!< SCB CFSR (BFSR): IMPRECISERR Position */ +#define SCB_CFSR_IMPRECISERR_Msk (1UL << SCB_CFSR_IMPRECISERR_Pos) /*!< SCB CFSR (BFSR): IMPRECISERR Mask */ + +#define SCB_CFSR_PRECISERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 1U) /*!< SCB CFSR (BFSR): PRECISERR Position */ +#define SCB_CFSR_PRECISERR_Msk (1UL << SCB_CFSR_PRECISERR_Pos) /*!< SCB CFSR (BFSR): PRECISERR Mask */ + +#define SCB_CFSR_IBUSERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 0U) /*!< SCB CFSR (BFSR): IBUSERR Position */ +#define SCB_CFSR_IBUSERR_Msk (1UL << SCB_CFSR_IBUSERR_Pos) /*!< SCB CFSR (BFSR): IBUSERR Mask */ + +/* UsageFault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_DIVBYZERO_Pos (SCB_CFSR_USGFAULTSR_Pos + 9U) /*!< SCB CFSR (UFSR): DIVBYZERO Position */ +#define SCB_CFSR_DIVBYZERO_Msk (1UL << SCB_CFSR_DIVBYZERO_Pos) /*!< SCB CFSR (UFSR): DIVBYZERO Mask */ + +#define SCB_CFSR_UNALIGNED_Pos (SCB_CFSR_USGFAULTSR_Pos + 8U) /*!< SCB CFSR (UFSR): UNALIGNED Position */ +#define SCB_CFSR_UNALIGNED_Msk (1UL << SCB_CFSR_UNALIGNED_Pos) /*!< SCB CFSR (UFSR): UNALIGNED Mask */ + +#define SCB_CFSR_STKOF_Pos (SCB_CFSR_USGFAULTSR_Pos + 4U) /*!< SCB CFSR (UFSR): STKOF Position */ +#define SCB_CFSR_STKOF_Msk (1UL << SCB_CFSR_STKOF_Pos) /*!< SCB CFSR (UFSR): STKOF Mask */ + +#define SCB_CFSR_NOCP_Pos (SCB_CFSR_USGFAULTSR_Pos + 3U) /*!< SCB CFSR (UFSR): NOCP Position */ +#define SCB_CFSR_NOCP_Msk (1UL << SCB_CFSR_NOCP_Pos) /*!< SCB CFSR (UFSR): NOCP Mask */ + +#define SCB_CFSR_INVPC_Pos (SCB_CFSR_USGFAULTSR_Pos + 2U) /*!< SCB CFSR (UFSR): INVPC Position */ +#define SCB_CFSR_INVPC_Msk (1UL << SCB_CFSR_INVPC_Pos) /*!< SCB CFSR (UFSR): INVPC Mask */ + +#define SCB_CFSR_INVSTATE_Pos (SCB_CFSR_USGFAULTSR_Pos + 1U) /*!< SCB CFSR (UFSR): INVSTATE Position */ +#define SCB_CFSR_INVSTATE_Msk (1UL << SCB_CFSR_INVSTATE_Pos) /*!< SCB CFSR (UFSR): INVSTATE Mask */ + +#define SCB_CFSR_UNDEFINSTR_Pos (SCB_CFSR_USGFAULTSR_Pos + 0U) /*!< SCB CFSR (UFSR): UNDEFINSTR Position */ +#define SCB_CFSR_UNDEFINSTR_Msk (1UL << SCB_CFSR_UNDEFINSTR_Pos) /*!< SCB CFSR (UFSR): UNDEFINSTR Mask */ + +/* SCB Hard Fault Status Register Definitions */ +#define SCB_HFSR_DEBUGEVT_Pos 31U /*!< SCB HFSR: DEBUGEVT Position */ +#define SCB_HFSR_DEBUGEVT_Msk (1UL << SCB_HFSR_DEBUGEVT_Pos) /*!< SCB HFSR: DEBUGEVT Mask */ + +#define SCB_HFSR_FORCED_Pos 30U /*!< SCB HFSR: FORCED Position */ +#define SCB_HFSR_FORCED_Msk (1UL << SCB_HFSR_FORCED_Pos) /*!< SCB HFSR: FORCED Mask */ + +#define SCB_HFSR_VECTTBL_Pos 1U /*!< SCB HFSR: VECTTBL Position */ +#define SCB_HFSR_VECTTBL_Msk (1UL << SCB_HFSR_VECTTBL_Pos) /*!< SCB HFSR: VECTTBL Mask */ + +/* SCB Debug Fault Status Register Definitions */ +#define SCB_DFSR_EXTERNAL_Pos 4U /*!< SCB DFSR: EXTERNAL Position */ +#define SCB_DFSR_EXTERNAL_Msk (1UL << SCB_DFSR_EXTERNAL_Pos) /*!< SCB DFSR: EXTERNAL Mask */ + +#define SCB_DFSR_VCATCH_Pos 3U /*!< SCB DFSR: VCATCH Position */ +#define SCB_DFSR_VCATCH_Msk (1UL << SCB_DFSR_VCATCH_Pos) /*!< SCB DFSR: VCATCH Mask */ + +#define SCB_DFSR_DWTTRAP_Pos 2U /*!< SCB DFSR: DWTTRAP Position */ +#define SCB_DFSR_DWTTRAP_Msk (1UL << SCB_DFSR_DWTTRAP_Pos) /*!< SCB DFSR: DWTTRAP Mask */ + +#define SCB_DFSR_BKPT_Pos 1U /*!< SCB DFSR: BKPT Position */ +#define SCB_DFSR_BKPT_Msk (1UL << SCB_DFSR_BKPT_Pos) /*!< SCB DFSR: BKPT Mask */ + +#define SCB_DFSR_HALTED_Pos 0U /*!< SCB DFSR: HALTED Position */ +#define SCB_DFSR_HALTED_Msk (1UL /*<< SCB_DFSR_HALTED_Pos*/) /*!< SCB DFSR: HALTED Mask */ + +/* SCB Non-Secure Access Control Register Definitions */ +#define SCB_NSACR_CP11_Pos 11U /*!< SCB NSACR: CP11 Position */ +#define SCB_NSACR_CP11_Msk (1UL << SCB_NSACR_CP11_Pos) /*!< SCB NSACR: CP11 Mask */ + +#define SCB_NSACR_CP10_Pos 10U /*!< SCB NSACR: CP10 Position */ +#define SCB_NSACR_CP10_Msk (1UL << SCB_NSACR_CP10_Pos) /*!< SCB NSACR: CP10 Mask */ + +#define SCB_NSACR_CPn_Pos 0U /*!< SCB NSACR: CPn Position */ +#define SCB_NSACR_CPn_Msk (1UL /*<< SCB_NSACR_CPn_Pos*/) /*!< SCB NSACR: CPn Mask */ + +/* SCB Cache Level ID Register Definitions */ +#define SCB_CLIDR_LOUU_Pos 27U /*!< SCB CLIDR: LoUU Position */ +#define SCB_CLIDR_LOUU_Msk (7UL << SCB_CLIDR_LOUU_Pos) /*!< SCB CLIDR: LoUU Mask */ + +#define SCB_CLIDR_LOC_Pos 24U /*!< SCB CLIDR: LoC Position */ +#define SCB_CLIDR_LOC_Msk (7UL << SCB_CLIDR_LOC_Pos) /*!< SCB CLIDR: LoC Mask */ + +/* SCB Cache Type Register Definitions */ +#define SCB_CTR_FORMAT_Pos 29U /*!< SCB CTR: Format Position */ +#define SCB_CTR_FORMAT_Msk (7UL << SCB_CTR_FORMAT_Pos) /*!< SCB CTR: Format Mask */ + +#define SCB_CTR_CWG_Pos 24U /*!< SCB CTR: CWG Position */ +#define SCB_CTR_CWG_Msk (0xFUL << SCB_CTR_CWG_Pos) /*!< SCB CTR: CWG Mask */ + +#define SCB_CTR_ERG_Pos 20U /*!< SCB CTR: ERG Position */ +#define SCB_CTR_ERG_Msk (0xFUL << SCB_CTR_ERG_Pos) /*!< SCB CTR: ERG Mask */ + +#define SCB_CTR_DMINLINE_Pos 16U /*!< SCB CTR: DminLine Position */ +#define SCB_CTR_DMINLINE_Msk (0xFUL << SCB_CTR_DMINLINE_Pos) /*!< SCB CTR: DminLine Mask */ + +#define SCB_CTR_IMINLINE_Pos 0U /*!< SCB CTR: ImInLine Position */ +#define SCB_CTR_IMINLINE_Msk (0xFUL /*<< SCB_CTR_IMINLINE_Pos*/) /*!< SCB CTR: ImInLine Mask */ + +/* SCB Cache Size ID Register Definitions */ +#define SCB_CCSIDR_WT_Pos 31U /*!< SCB CCSIDR: WT Position */ +#define SCB_CCSIDR_WT_Msk (1UL << SCB_CCSIDR_WT_Pos) /*!< SCB CCSIDR: WT Mask */ + +#define SCB_CCSIDR_WB_Pos 30U /*!< SCB CCSIDR: WB Position */ +#define SCB_CCSIDR_WB_Msk (1UL << SCB_CCSIDR_WB_Pos) /*!< SCB CCSIDR: WB Mask */ + +#define SCB_CCSIDR_RA_Pos 29U /*!< SCB CCSIDR: RA Position */ +#define SCB_CCSIDR_RA_Msk (1UL << SCB_CCSIDR_RA_Pos) /*!< SCB CCSIDR: RA Mask */ + +#define SCB_CCSIDR_WA_Pos 28U /*!< SCB CCSIDR: WA Position */ +#define SCB_CCSIDR_WA_Msk (1UL << SCB_CCSIDR_WA_Pos) /*!< SCB CCSIDR: WA Mask */ + +#define SCB_CCSIDR_NUMSETS_Pos 13U /*!< SCB CCSIDR: NumSets Position */ +#define SCB_CCSIDR_NUMSETS_Msk (0x7FFFUL << SCB_CCSIDR_NUMSETS_Pos) /*!< SCB CCSIDR: NumSets Mask */ + +#define SCB_CCSIDR_ASSOCIATIVITY_Pos 3U /*!< SCB CCSIDR: Associativity Position */ +#define SCB_CCSIDR_ASSOCIATIVITY_Msk (0x3FFUL << SCB_CCSIDR_ASSOCIATIVITY_Pos) /*!< SCB CCSIDR: Associativity Mask */ + +#define SCB_CCSIDR_LINESIZE_Pos 0U /*!< SCB CCSIDR: LineSize Position */ +#define SCB_CCSIDR_LINESIZE_Msk (7UL /*<< SCB_CCSIDR_LINESIZE_Pos*/) /*!< SCB CCSIDR: LineSize Mask */ + +/* SCB Cache Size Selection Register Definitions */ +#define SCB_CSSELR_LEVEL_Pos 1U /*!< SCB CSSELR: Level Position */ +#define SCB_CSSELR_LEVEL_Msk (7UL << SCB_CSSELR_LEVEL_Pos) /*!< SCB CSSELR: Level Mask */ + +#define SCB_CSSELR_IND_Pos 0U /*!< SCB CSSELR: InD Position */ +#define SCB_CSSELR_IND_Msk (1UL /*<< SCB_CSSELR_IND_Pos*/) /*!< SCB CSSELR: InD Mask */ + +/* SCB Software Triggered Interrupt Register Definitions */ +#define SCB_STIR_INTID_Pos 0U /*!< SCB STIR: INTID Position */ +#define SCB_STIR_INTID_Msk (0x1FFUL /*<< SCB_STIR_INTID_Pos*/) /*!< SCB STIR: INTID Mask */ + +/* SCB D-Cache Invalidate by Set-way Register Definitions */ +#define SCB_DCISW_WAY_Pos 30U /*!< SCB DCISW: Way Position */ +#define SCB_DCISW_WAY_Msk (3UL << SCB_DCISW_WAY_Pos) /*!< SCB DCISW: Way Mask */ + +#define SCB_DCISW_SET_Pos 5U /*!< SCB DCISW: Set Position */ +#define SCB_DCISW_SET_Msk (0x1FFUL << SCB_DCISW_SET_Pos) /*!< SCB DCISW: Set Mask */ + +/* SCB D-Cache Clean by Set-way Register Definitions */ +#define SCB_DCCSW_WAY_Pos 30U /*!< SCB DCCSW: Way Position */ +#define SCB_DCCSW_WAY_Msk (3UL << SCB_DCCSW_WAY_Pos) /*!< SCB DCCSW: Way Mask */ + +#define SCB_DCCSW_SET_Pos 5U /*!< SCB DCCSW: Set Position */ +#define SCB_DCCSW_SET_Msk (0x1FFUL << SCB_DCCSW_SET_Pos) /*!< SCB DCCSW: Set Mask */ + +/* SCB D-Cache Clean and Invalidate by Set-way Register Definitions */ +#define SCB_DCCISW_WAY_Pos 30U /*!< SCB DCCISW: Way Position */ +#define SCB_DCCISW_WAY_Msk (3UL << SCB_DCCISW_WAY_Pos) /*!< SCB DCCISW: Way Mask */ + +#define SCB_DCCISW_SET_Pos 5U /*!< SCB DCCISW: Set Position */ +#define SCB_DCCISW_SET_Msk (0x1FFUL << SCB_DCCISW_SET_Pos) /*!< SCB DCCISW: Set Mask */ + +/*@} end of group CMSIS_SCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SCnSCB System Controls not in SCB (SCnSCB) + \brief Type definitions for the System Control and ID Register not in the SCB + @{ + */ + +/** + \brief Structure type to access the System Control and ID Register not in the SCB. + */ +typedef struct +{ + uint32_t RESERVED0[1U]; + __IM uint32_t ICTR; /*!< Offset: 0x004 (R/ ) Interrupt Controller Type Register */ + __IOM uint32_t ACTLR; /*!< Offset: 0x008 (R/W) Auxiliary Control Register */ + __IOM uint32_t CPPWR; /*!< Offset: 0x00C (R/W) Coprocessor Power Control Register */ +} SCnSCB_Type; + +/* Interrupt Controller Type Register Definitions */ +#define SCnSCB_ICTR_INTLINESNUM_Pos 0U /*!< ICTR: INTLINESNUM Position */ +#define SCnSCB_ICTR_INTLINESNUM_Msk (0xFUL /*<< SCnSCB_ICTR_INTLINESNUM_Pos*/) /*!< ICTR: INTLINESNUM Mask */ + +/*@} end of group CMSIS_SCnotSCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SysTick System Tick Timer (SysTick) + \brief Type definitions for the System Timer Registers. + @{ + */ + +/** + \brief Structure type to access the System Timer (SysTick). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SysTick Control and Status Register */ + __IOM uint32_t LOAD; /*!< Offset: 0x004 (R/W) SysTick Reload Value Register */ + __IOM uint32_t VAL; /*!< Offset: 0x008 (R/W) SysTick Current Value Register */ + __IM uint32_t CALIB; /*!< Offset: 0x00C (R/ ) SysTick Calibration Register */ +} SysTick_Type; + +/* SysTick Control / Status Register Definitions */ +#define SysTick_CTRL_COUNTFLAG_Pos 16U /*!< SysTick CTRL: COUNTFLAG Position */ +#define SysTick_CTRL_COUNTFLAG_Msk (1UL << SysTick_CTRL_COUNTFLAG_Pos) /*!< SysTick CTRL: COUNTFLAG Mask */ + +#define SysTick_CTRL_CLKSOURCE_Pos 2U /*!< SysTick CTRL: CLKSOURCE Position */ +#define SysTick_CTRL_CLKSOURCE_Msk (1UL << SysTick_CTRL_CLKSOURCE_Pos) /*!< SysTick CTRL: CLKSOURCE Mask */ + +#define SysTick_CTRL_TICKINT_Pos 1U /*!< SysTick CTRL: TICKINT Position */ +#define SysTick_CTRL_TICKINT_Msk (1UL << SysTick_CTRL_TICKINT_Pos) /*!< SysTick CTRL: TICKINT Mask */ + +#define SysTick_CTRL_ENABLE_Pos 0U /*!< SysTick CTRL: ENABLE Position */ +#define SysTick_CTRL_ENABLE_Msk (1UL /*<< SysTick_CTRL_ENABLE_Pos*/) /*!< SysTick CTRL: ENABLE Mask */ + +/* SysTick Reload Register Definitions */ +#define SysTick_LOAD_RELOAD_Pos 0U /*!< SysTick LOAD: RELOAD Position */ +#define SysTick_LOAD_RELOAD_Msk (0xFFFFFFUL /*<< SysTick_LOAD_RELOAD_Pos*/) /*!< SysTick LOAD: RELOAD Mask */ + +/* SysTick Current Register Definitions */ +#define SysTick_VAL_CURRENT_Pos 0U /*!< SysTick VAL: CURRENT Position */ +#define SysTick_VAL_CURRENT_Msk (0xFFFFFFUL /*<< SysTick_VAL_CURRENT_Pos*/) /*!< SysTick VAL: CURRENT Mask */ + +/* SysTick Calibration Register Definitions */ +#define SysTick_CALIB_NOREF_Pos 31U /*!< SysTick CALIB: NOREF Position */ +#define SysTick_CALIB_NOREF_Msk (1UL << SysTick_CALIB_NOREF_Pos) /*!< SysTick CALIB: NOREF Mask */ + +#define SysTick_CALIB_SKEW_Pos 30U /*!< SysTick CALIB: SKEW Position */ +#define SysTick_CALIB_SKEW_Msk (1UL << SysTick_CALIB_SKEW_Pos) /*!< SysTick CALIB: SKEW Mask */ + +#define SysTick_CALIB_TENMS_Pos 0U /*!< SysTick CALIB: TENMS Position */ +#define SysTick_CALIB_TENMS_Msk (0xFFFFFFUL /*<< SysTick_CALIB_TENMS_Pos*/) /*!< SysTick CALIB: TENMS Mask */ + +/*@} end of group CMSIS_SysTick */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_ITM Instrumentation Trace Macrocell (ITM) + \brief Type definitions for the Instrumentation Trace Macrocell (ITM) + @{ + */ + +/** + \brief Structure type to access the Instrumentation Trace Macrocell Register (ITM). + */ +typedef struct +{ + __OM union + { + __OM uint8_t u8; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 8-bit */ + __OM uint16_t u16; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 16-bit */ + __OM uint32_t u32; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 32-bit */ + } PORT [32U]; /*!< Offset: 0x000 ( /W) ITM Stimulus Port Registers */ + uint32_t RESERVED0[864U]; + __IOM uint32_t TER; /*!< Offset: 0xE00 (R/W) ITM Trace Enable Register */ + uint32_t RESERVED1[15U]; + __IOM uint32_t TPR; /*!< Offset: 0xE40 (R/W) ITM Trace Privilege Register */ + uint32_t RESERVED2[15U]; + __IOM uint32_t TCR; /*!< Offset: 0xE80 (R/W) ITM Trace Control Register */ + uint32_t RESERVED3[32U]; + uint32_t RESERVED4[43U]; + __OM uint32_t LAR; /*!< Offset: 0xFB0 ( /W) ITM Lock Access Register */ + __IM uint32_t LSR; /*!< Offset: 0xFB4 (R/ ) ITM Lock Status Register */ + uint32_t RESERVED5[1U]; + __IM uint32_t DEVARCH; /*!< Offset: 0xFBC (R/ ) ITM Device Architecture Register */ + uint32_t RESERVED6[4U]; + __IM uint32_t PID4; /*!< Offset: 0xFD0 (R/ ) ITM Peripheral Identification Register #4 */ + __IM uint32_t PID5; /*!< Offset: 0xFD4 (R/ ) ITM Peripheral Identification Register #5 */ + __IM uint32_t PID6; /*!< Offset: 0xFD8 (R/ ) ITM Peripheral Identification Register #6 */ + __IM uint32_t PID7; /*!< Offset: 0xFDC (R/ ) ITM Peripheral Identification Register #7 */ + __IM uint32_t PID0; /*!< Offset: 0xFE0 (R/ ) ITM Peripheral Identification Register #0 */ + __IM uint32_t PID1; /*!< Offset: 0xFE4 (R/ ) ITM Peripheral Identification Register #1 */ + __IM uint32_t PID2; /*!< Offset: 0xFE8 (R/ ) ITM Peripheral Identification Register #2 */ + __IM uint32_t PID3; /*!< Offset: 0xFEC (R/ ) ITM Peripheral Identification Register #3 */ + __IM uint32_t CID0; /*!< Offset: 0xFF0 (R/ ) ITM Component Identification Register #0 */ + __IM uint32_t CID1; /*!< Offset: 0xFF4 (R/ ) ITM Component Identification Register #1 */ + __IM uint32_t CID2; /*!< Offset: 0xFF8 (R/ ) ITM Component Identification Register #2 */ + __IM uint32_t CID3; /*!< Offset: 0xFFC (R/ ) ITM Component Identification Register #3 */ +} ITM_Type; + +/* ITM Stimulus Port Register Definitions */ +#define ITM_STIM_DISABLED_Pos 1U /*!< ITM STIM: DISABLED Position */ +#define ITM_STIM_DISABLED_Msk (0x1UL << ITM_STIM_DISABLED_Pos) /*!< ITM STIM: DISABLED Mask */ + +#define ITM_STIM_FIFOREADY_Pos 0U /*!< ITM STIM: FIFOREADY Position */ +#define ITM_STIM_FIFOREADY_Msk (0x1UL /*<< ITM_STIM_FIFOREADY_Pos*/) /*!< ITM STIM: FIFOREADY Mask */ + +/* ITM Trace Privilege Register Definitions */ +#define ITM_TPR_PRIVMASK_Pos 0U /*!< ITM TPR: PRIVMASK Position */ +#define ITM_TPR_PRIVMASK_Msk (0xFUL /*<< ITM_TPR_PRIVMASK_Pos*/) /*!< ITM TPR: PRIVMASK Mask */ + +/* ITM Trace Control Register Definitions */ +#define ITM_TCR_BUSY_Pos 23U /*!< ITM TCR: BUSY Position */ +#define ITM_TCR_BUSY_Msk (1UL << ITM_TCR_BUSY_Pos) /*!< ITM TCR: BUSY Mask */ + +#define ITM_TCR_TRACEBUSID_Pos 16U /*!< ITM TCR: ATBID Position */ +#define ITM_TCR_TRACEBUSID_Msk (0x7FUL << ITM_TCR_TRACEBUSID_Pos) /*!< ITM TCR: ATBID Mask */ + +#define ITM_TCR_GTSFREQ_Pos 10U /*!< ITM TCR: Global timestamp frequency Position */ +#define ITM_TCR_GTSFREQ_Msk (3UL << ITM_TCR_GTSFREQ_Pos) /*!< ITM TCR: Global timestamp frequency Mask */ + +#define ITM_TCR_TSPRESCALE_Pos 8U /*!< ITM TCR: TSPRESCALE Position */ +#define ITM_TCR_TSPRESCALE_Msk (3UL << ITM_TCR_TSPRESCALE_Pos) /*!< ITM TCR: TSPRESCALE Mask */ + +#define ITM_TCR_STALLENA_Pos 5U /*!< ITM TCR: STALLENA Position */ +#define ITM_TCR_STALLENA_Msk (1UL << ITM_TCR_STALLENA_Pos) /*!< ITM TCR: STALLENA Mask */ + +#define ITM_TCR_SWOENA_Pos 4U /*!< ITM TCR: SWOENA Position */ +#define ITM_TCR_SWOENA_Msk (1UL << ITM_TCR_SWOENA_Pos) /*!< ITM TCR: SWOENA Mask */ + +#define ITM_TCR_DWTENA_Pos 3U /*!< ITM TCR: DWTENA Position */ +#define ITM_TCR_DWTENA_Msk (1UL << ITM_TCR_DWTENA_Pos) /*!< ITM TCR: DWTENA Mask */ + +#define ITM_TCR_SYNCENA_Pos 2U /*!< ITM TCR: SYNCENA Position */ +#define ITM_TCR_SYNCENA_Msk (1UL << ITM_TCR_SYNCENA_Pos) /*!< ITM TCR: SYNCENA Mask */ + +#define ITM_TCR_TSENA_Pos 1U /*!< ITM TCR: TSENA Position */ +#define ITM_TCR_TSENA_Msk (1UL << ITM_TCR_TSENA_Pos) /*!< ITM TCR: TSENA Mask */ + +#define ITM_TCR_ITMENA_Pos 0U /*!< ITM TCR: ITM Enable bit Position */ +#define ITM_TCR_ITMENA_Msk (1UL /*<< ITM_TCR_ITMENA_Pos*/) /*!< ITM TCR: ITM Enable bit Mask */ + +/* ITM Lock Status Register Definitions */ +#define ITM_LSR_ByteAcc_Pos 2U /*!< ITM LSR: ByteAcc Position */ +#define ITM_LSR_ByteAcc_Msk (1UL << ITM_LSR_ByteAcc_Pos) /*!< ITM LSR: ByteAcc Mask */ + +#define ITM_LSR_Access_Pos 1U /*!< ITM LSR: Access Position */ +#define ITM_LSR_Access_Msk (1UL << ITM_LSR_Access_Pos) /*!< ITM LSR: Access Mask */ + +#define ITM_LSR_Present_Pos 0U /*!< ITM LSR: Present Position */ +#define ITM_LSR_Present_Msk (1UL /*<< ITM_LSR_Present_Pos*/) /*!< ITM LSR: Present Mask */ + +/*@}*/ /* end of group CMSIS_ITM */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_DWT Data Watchpoint and Trace (DWT) + \brief Type definitions for the Data Watchpoint and Trace (DWT) + @{ + */ + +/** + \brief Structure type to access the Data Watchpoint and Trace Register (DWT). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) Control Register */ + __IOM uint32_t CYCCNT; /*!< Offset: 0x004 (R/W) Cycle Count Register */ + __IOM uint32_t CPICNT; /*!< Offset: 0x008 (R/W) CPI Count Register */ + __IOM uint32_t EXCCNT; /*!< Offset: 0x00C (R/W) Exception Overhead Count Register */ + __IOM uint32_t SLEEPCNT; /*!< Offset: 0x010 (R/W) Sleep Count Register */ + __IOM uint32_t LSUCNT; /*!< Offset: 0x014 (R/W) LSU Count Register */ + __IOM uint32_t FOLDCNT; /*!< Offset: 0x018 (R/W) Folded-instruction Count Register */ + __IM uint32_t PCSR; /*!< Offset: 0x01C (R/ ) Program Counter Sample Register */ + __IOM uint32_t COMP0; /*!< Offset: 0x020 (R/W) Comparator Register 0 */ + uint32_t RESERVED1[1U]; + __IOM uint32_t FUNCTION0; /*!< Offset: 0x028 (R/W) Function Register 0 */ + uint32_t RESERVED2[1U]; + __IOM uint32_t COMP1; /*!< Offset: 0x030 (R/W) Comparator Register 1 */ + uint32_t RESERVED3[1U]; + __IOM uint32_t FUNCTION1; /*!< Offset: 0x038 (R/W) Function Register 1 */ + uint32_t RESERVED4[1U]; + __IOM uint32_t COMP2; /*!< Offset: 0x040 (R/W) Comparator Register 2 */ + uint32_t RESERVED5[1U]; + __IOM uint32_t FUNCTION2; /*!< Offset: 0x048 (R/W) Function Register 2 */ + uint32_t RESERVED6[1U]; + __IOM uint32_t COMP3; /*!< Offset: 0x050 (R/W) Comparator Register 3 */ + uint32_t RESERVED7[1U]; + __IOM uint32_t FUNCTION3; /*!< Offset: 0x058 (R/W) Function Register 3 */ + uint32_t RESERVED8[1U]; + __IOM uint32_t COMP4; /*!< Offset: 0x060 (R/W) Comparator Register 4 */ + uint32_t RESERVED9[1U]; + __IOM uint32_t FUNCTION4; /*!< Offset: 0x068 (R/W) Function Register 4 */ + uint32_t RESERVED10[1U]; + __IOM uint32_t COMP5; /*!< Offset: 0x070 (R/W) Comparator Register 5 */ + uint32_t RESERVED11[1U]; + __IOM uint32_t FUNCTION5; /*!< Offset: 0x078 (R/W) Function Register 5 */ + uint32_t RESERVED12[1U]; + __IOM uint32_t COMP6; /*!< Offset: 0x080 (R/W) Comparator Register 6 */ + uint32_t RESERVED13[1U]; + __IOM uint32_t FUNCTION6; /*!< Offset: 0x088 (R/W) Function Register 6 */ + uint32_t RESERVED14[1U]; + __IOM uint32_t COMP7; /*!< Offset: 0x090 (R/W) Comparator Register 7 */ + uint32_t RESERVED15[1U]; + __IOM uint32_t FUNCTION7; /*!< Offset: 0x098 (R/W) Function Register 7 */ + uint32_t RESERVED16[1U]; + __IOM uint32_t COMP8; /*!< Offset: 0x0A0 (R/W) Comparator Register 8 */ + uint32_t RESERVED17[1U]; + __IOM uint32_t FUNCTION8; /*!< Offset: 0x0A8 (R/W) Function Register 8 */ + uint32_t RESERVED18[1U]; + __IOM uint32_t COMP9; /*!< Offset: 0x0B0 (R/W) Comparator Register 9 */ + uint32_t RESERVED19[1U]; + __IOM uint32_t FUNCTION9; /*!< Offset: 0x0B8 (R/W) Function Register 9 */ + uint32_t RESERVED20[1U]; + __IOM uint32_t COMP10; /*!< Offset: 0x0C0 (R/W) Comparator Register 10 */ + uint32_t RESERVED21[1U]; + __IOM uint32_t FUNCTION10; /*!< Offset: 0x0C8 (R/W) Function Register 10 */ + uint32_t RESERVED22[1U]; + __IOM uint32_t COMP11; /*!< Offset: 0x0D0 (R/W) Comparator Register 11 */ + uint32_t RESERVED23[1U]; + __IOM uint32_t FUNCTION11; /*!< Offset: 0x0D8 (R/W) Function Register 11 */ + uint32_t RESERVED24[1U]; + __IOM uint32_t COMP12; /*!< Offset: 0x0E0 (R/W) Comparator Register 12 */ + uint32_t RESERVED25[1U]; + __IOM uint32_t FUNCTION12; /*!< Offset: 0x0E8 (R/W) Function Register 12 */ + uint32_t RESERVED26[1U]; + __IOM uint32_t COMP13; /*!< Offset: 0x0F0 (R/W) Comparator Register 13 */ + uint32_t RESERVED27[1U]; + __IOM uint32_t FUNCTION13; /*!< Offset: 0x0F8 (R/W) Function Register 13 */ + uint32_t RESERVED28[1U]; + __IOM uint32_t COMP14; /*!< Offset: 0x100 (R/W) Comparator Register 14 */ + uint32_t RESERVED29[1U]; + __IOM uint32_t FUNCTION14; /*!< Offset: 0x108 (R/W) Function Register 14 */ + uint32_t RESERVED30[1U]; + __IOM uint32_t COMP15; /*!< Offset: 0x110 (R/W) Comparator Register 15 */ + uint32_t RESERVED31[1U]; + __IOM uint32_t FUNCTION15; /*!< Offset: 0x118 (R/W) Function Register 15 */ + uint32_t RESERVED32[934U]; + __IM uint32_t LSR; /*!< Offset: 0xFB4 (R ) Lock Status Register */ + uint32_t RESERVED33[1U]; + __IM uint32_t DEVARCH; /*!< Offset: 0xFBC (R/ ) Device Architecture Register */ +} DWT_Type; + +/* DWT Control Register Definitions */ +#define DWT_CTRL_NUMCOMP_Pos 28U /*!< DWT CTRL: NUMCOMP Position */ +#define DWT_CTRL_NUMCOMP_Msk (0xFUL << DWT_CTRL_NUMCOMP_Pos) /*!< DWT CTRL: NUMCOMP Mask */ + +#define DWT_CTRL_NOTRCPKT_Pos 27U /*!< DWT CTRL: NOTRCPKT Position */ +#define DWT_CTRL_NOTRCPKT_Msk (0x1UL << DWT_CTRL_NOTRCPKT_Pos) /*!< DWT CTRL: NOTRCPKT Mask */ + +#define DWT_CTRL_NOEXTTRIG_Pos 26U /*!< DWT CTRL: NOEXTTRIG Position */ +#define DWT_CTRL_NOEXTTRIG_Msk (0x1UL << DWT_CTRL_NOEXTTRIG_Pos) /*!< DWT CTRL: NOEXTTRIG Mask */ + +#define DWT_CTRL_NOCYCCNT_Pos 25U /*!< DWT CTRL: NOCYCCNT Position */ +#define DWT_CTRL_NOCYCCNT_Msk (0x1UL << DWT_CTRL_NOCYCCNT_Pos) /*!< DWT CTRL: NOCYCCNT Mask */ + +#define DWT_CTRL_NOPRFCNT_Pos 24U /*!< DWT CTRL: NOPRFCNT Position */ +#define DWT_CTRL_NOPRFCNT_Msk (0x1UL << DWT_CTRL_NOPRFCNT_Pos) /*!< DWT CTRL: NOPRFCNT Mask */ + +#define DWT_CTRL_CYCDISS_Pos 23U /*!< DWT CTRL: CYCDISS Position */ +#define DWT_CTRL_CYCDISS_Msk (0x1UL << DWT_CTRL_CYCDISS_Pos) /*!< DWT CTRL: CYCDISS Mask */ + +#define DWT_CTRL_CYCEVTENA_Pos 22U /*!< DWT CTRL: CYCEVTENA Position */ +#define DWT_CTRL_CYCEVTENA_Msk (0x1UL << DWT_CTRL_CYCEVTENA_Pos) /*!< DWT CTRL: CYCEVTENA Mask */ + +#define DWT_CTRL_FOLDEVTENA_Pos 21U /*!< DWT CTRL: FOLDEVTENA Position */ +#define DWT_CTRL_FOLDEVTENA_Msk (0x1UL << DWT_CTRL_FOLDEVTENA_Pos) /*!< DWT CTRL: FOLDEVTENA Mask */ + +#define DWT_CTRL_LSUEVTENA_Pos 20U /*!< DWT CTRL: LSUEVTENA Position */ +#define DWT_CTRL_LSUEVTENA_Msk (0x1UL << DWT_CTRL_LSUEVTENA_Pos) /*!< DWT CTRL: LSUEVTENA Mask */ + +#define DWT_CTRL_SLEEPEVTENA_Pos 19U /*!< DWT CTRL: SLEEPEVTENA Position */ +#define DWT_CTRL_SLEEPEVTENA_Msk (0x1UL << DWT_CTRL_SLEEPEVTENA_Pos) /*!< DWT CTRL: SLEEPEVTENA Mask */ + +#define DWT_CTRL_EXCEVTENA_Pos 18U /*!< DWT CTRL: EXCEVTENA Position */ +#define DWT_CTRL_EXCEVTENA_Msk (0x1UL << DWT_CTRL_EXCEVTENA_Pos) /*!< DWT CTRL: EXCEVTENA Mask */ + +#define DWT_CTRL_CPIEVTENA_Pos 17U /*!< DWT CTRL: CPIEVTENA Position */ +#define DWT_CTRL_CPIEVTENA_Msk (0x1UL << DWT_CTRL_CPIEVTENA_Pos) /*!< DWT CTRL: CPIEVTENA Mask */ + +#define DWT_CTRL_EXCTRCENA_Pos 16U /*!< DWT CTRL: EXCTRCENA Position */ +#define DWT_CTRL_EXCTRCENA_Msk (0x1UL << DWT_CTRL_EXCTRCENA_Pos) /*!< DWT CTRL: EXCTRCENA Mask */ + +#define DWT_CTRL_PCSAMPLENA_Pos 12U /*!< DWT CTRL: PCSAMPLENA Position */ +#define DWT_CTRL_PCSAMPLENA_Msk (0x1UL << DWT_CTRL_PCSAMPLENA_Pos) /*!< DWT CTRL: PCSAMPLENA Mask */ + +#define DWT_CTRL_SYNCTAP_Pos 10U /*!< DWT CTRL: SYNCTAP Position */ +#define DWT_CTRL_SYNCTAP_Msk (0x3UL << DWT_CTRL_SYNCTAP_Pos) /*!< DWT CTRL: SYNCTAP Mask */ + +#define DWT_CTRL_CYCTAP_Pos 9U /*!< DWT CTRL: CYCTAP Position */ +#define DWT_CTRL_CYCTAP_Msk (0x1UL << DWT_CTRL_CYCTAP_Pos) /*!< DWT CTRL: CYCTAP Mask */ + +#define DWT_CTRL_POSTINIT_Pos 5U /*!< DWT CTRL: POSTINIT Position */ +#define DWT_CTRL_POSTINIT_Msk (0xFUL << DWT_CTRL_POSTINIT_Pos) /*!< DWT CTRL: POSTINIT Mask */ + +#define DWT_CTRL_POSTPRESET_Pos 1U /*!< DWT CTRL: POSTPRESET Position */ +#define DWT_CTRL_POSTPRESET_Msk (0xFUL << DWT_CTRL_POSTPRESET_Pos) /*!< DWT CTRL: POSTPRESET Mask */ + +#define DWT_CTRL_CYCCNTENA_Pos 0U /*!< DWT CTRL: CYCCNTENA Position */ +#define DWT_CTRL_CYCCNTENA_Msk (0x1UL /*<< DWT_CTRL_CYCCNTENA_Pos*/) /*!< DWT CTRL: CYCCNTENA Mask */ + +/* DWT CPI Count Register Definitions */ +#define DWT_CPICNT_CPICNT_Pos 0U /*!< DWT CPICNT: CPICNT Position */ +#define DWT_CPICNT_CPICNT_Msk (0xFFUL /*<< DWT_CPICNT_CPICNT_Pos*/) /*!< DWT CPICNT: CPICNT Mask */ + +/* DWT Exception Overhead Count Register Definitions */ +#define DWT_EXCCNT_EXCCNT_Pos 0U /*!< DWT EXCCNT: EXCCNT Position */ +#define DWT_EXCCNT_EXCCNT_Msk (0xFFUL /*<< DWT_EXCCNT_EXCCNT_Pos*/) /*!< DWT EXCCNT: EXCCNT Mask */ + +/* DWT Sleep Count Register Definitions */ +#define DWT_SLEEPCNT_SLEEPCNT_Pos 0U /*!< DWT SLEEPCNT: SLEEPCNT Position */ +#define DWT_SLEEPCNT_SLEEPCNT_Msk (0xFFUL /*<< DWT_SLEEPCNT_SLEEPCNT_Pos*/) /*!< DWT SLEEPCNT: SLEEPCNT Mask */ + +/* DWT LSU Count Register Definitions */ +#define DWT_LSUCNT_LSUCNT_Pos 0U /*!< DWT LSUCNT: LSUCNT Position */ +#define DWT_LSUCNT_LSUCNT_Msk (0xFFUL /*<< DWT_LSUCNT_LSUCNT_Pos*/) /*!< DWT LSUCNT: LSUCNT Mask */ + +/* DWT Folded-instruction Count Register Definitions */ +#define DWT_FOLDCNT_FOLDCNT_Pos 0U /*!< DWT FOLDCNT: FOLDCNT Position */ +#define DWT_FOLDCNT_FOLDCNT_Msk (0xFFUL /*<< DWT_FOLDCNT_FOLDCNT_Pos*/) /*!< DWT FOLDCNT: FOLDCNT Mask */ + +/* DWT Comparator Function Register Definitions */ +#define DWT_FUNCTION_ID_Pos 27U /*!< DWT FUNCTION: ID Position */ +#define DWT_FUNCTION_ID_Msk (0x1FUL << DWT_FUNCTION_ID_Pos) /*!< DWT FUNCTION: ID Mask */ + +#define DWT_FUNCTION_MATCHED_Pos 24U /*!< DWT FUNCTION: MATCHED Position */ +#define DWT_FUNCTION_MATCHED_Msk (0x1UL << DWT_FUNCTION_MATCHED_Pos) /*!< DWT FUNCTION: MATCHED Mask */ + +#define DWT_FUNCTION_DATAVSIZE_Pos 10U /*!< DWT FUNCTION: DATAVSIZE Position */ +#define DWT_FUNCTION_DATAVSIZE_Msk (0x3UL << DWT_FUNCTION_DATAVSIZE_Pos) /*!< DWT FUNCTION: DATAVSIZE Mask */ + +#define DWT_FUNCTION_ACTION_Pos 4U /*!< DWT FUNCTION: ACTION Position */ +#define DWT_FUNCTION_ACTION_Msk (0x1UL << DWT_FUNCTION_ACTION_Pos) /*!< DWT FUNCTION: ACTION Mask */ + +#define DWT_FUNCTION_MATCH_Pos 0U /*!< DWT FUNCTION: MATCH Position */ +#define DWT_FUNCTION_MATCH_Msk (0xFUL /*<< DWT_FUNCTION_MATCH_Pos*/) /*!< DWT FUNCTION: MATCH Mask */ + +/*@}*/ /* end of group CMSIS_DWT */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_TPI Trace Port Interface (TPI) + \brief Type definitions for the Trace Port Interface (TPI) + @{ + */ + +/** + \brief Structure type to access the Trace Port Interface Register (TPI). + */ +typedef struct +{ + __IM uint32_t SSPSR; /*!< Offset: 0x000 (R/ ) Supported Parallel Port Sizes Register */ + __IOM uint32_t CSPSR; /*!< Offset: 0x004 (R/W) Current Parallel Port Sizes Register */ + uint32_t RESERVED0[2U]; + __IOM uint32_t ACPR; /*!< Offset: 0x010 (R/W) Asynchronous Clock Prescaler Register */ + uint32_t RESERVED1[55U]; + __IOM uint32_t SPPR; /*!< Offset: 0x0F0 (R/W) Selected Pin Protocol Register */ + uint32_t RESERVED2[131U]; + __IM uint32_t FFSR; /*!< Offset: 0x300 (R/ ) Formatter and Flush Status Register */ + __IOM uint32_t FFCR; /*!< Offset: 0x304 (R/W) Formatter and Flush Control Register */ + __IOM uint32_t PSCR; /*!< Offset: 0x308 (R/W) Periodic Synchronization Control Register */ + uint32_t RESERVED3[809U]; + __OM uint32_t LAR; /*!< Offset: 0xFB0 ( /W) Software Lock Access Register */ + __IM uint32_t LSR; /*!< Offset: 0xFB4 (R/ ) Software Lock Status Register */ + uint32_t RESERVED4[4U]; + __IM uint32_t TYPE; /*!< Offset: 0xFC8 (R/ ) Device Identifier Register */ + __IM uint32_t DEVTYPE; /*!< Offset: 0xFCC (R/ ) Device Type Register */ +} TPI_Type; + +/* TPI Asynchronous Clock Prescaler Register Definitions */ +#define TPI_ACPR_SWOSCALER_Pos 0U /*!< TPI ACPR: SWOSCALER Position */ +#define TPI_ACPR_SWOSCALER_Msk (0xFFFFUL /*<< TPI_ACPR_SWOSCALER_Pos*/) /*!< TPI ACPR: SWOSCALER Mask */ + +/* TPI Selected Pin Protocol Register Definitions */ +#define TPI_SPPR_TXMODE_Pos 0U /*!< TPI SPPR: TXMODE Position */ +#define TPI_SPPR_TXMODE_Msk (0x3UL /*<< TPI_SPPR_TXMODE_Pos*/) /*!< TPI SPPR: TXMODE Mask */ + +/* TPI Formatter and Flush Status Register Definitions */ +#define TPI_FFSR_FtNonStop_Pos 3U /*!< TPI FFSR: FtNonStop Position */ +#define TPI_FFSR_FtNonStop_Msk (0x1UL << TPI_FFSR_FtNonStop_Pos) /*!< TPI FFSR: FtNonStop Mask */ + +#define TPI_FFSR_TCPresent_Pos 2U /*!< TPI FFSR: TCPresent Position */ +#define TPI_FFSR_TCPresent_Msk (0x1UL << TPI_FFSR_TCPresent_Pos) /*!< TPI FFSR: TCPresent Mask */ + +#define TPI_FFSR_FtStopped_Pos 1U /*!< TPI FFSR: FtStopped Position */ +#define TPI_FFSR_FtStopped_Msk (0x1UL << TPI_FFSR_FtStopped_Pos) /*!< TPI FFSR: FtStopped Mask */ + +#define TPI_FFSR_FlInProg_Pos 0U /*!< TPI FFSR: FlInProg Position */ +#define TPI_FFSR_FlInProg_Msk (0x1UL /*<< TPI_FFSR_FlInProg_Pos*/) /*!< TPI FFSR: FlInProg Mask */ + +/* TPI Formatter and Flush Control Register Definitions */ +#define TPI_FFCR_TrigIn_Pos 8U /*!< TPI FFCR: TrigIn Position */ +#define TPI_FFCR_TrigIn_Msk (0x1UL << TPI_FFCR_TrigIn_Pos) /*!< TPI FFCR: TrigIn Mask */ + +#define TPI_FFCR_FOnMan_Pos 6U /*!< TPI FFCR: FOnMan Position */ +#define TPI_FFCR_FOnMan_Msk (0x1UL << TPI_FFCR_FOnMan_Pos) /*!< TPI FFCR: FOnMan Mask */ + +#define TPI_FFCR_EnFCont_Pos 1U /*!< TPI FFCR: EnFCont Position */ +#define TPI_FFCR_EnFCont_Msk (0x1UL << TPI_FFCR_EnFCont_Pos) /*!< TPI FFCR: EnFCont Mask */ + +/* TPI Periodic Synchronization Control Register Definitions */ +#define TPI_PSCR_PSCount_Pos 0U /*!< TPI PSCR: PSCount Position */ +#define TPI_PSCR_PSCount_Msk (0x1FUL /*<< TPI_PSCR_PSCount_Pos*/) /*!< TPI PSCR: TPSCount Mask */ + +/* TPI Software Lock Status Register Definitions */ +#define TPI_LSR_nTT_Pos 1U /*!< TPI LSR: Not thirty-two bit. Position */ +#define TPI_LSR_nTT_Msk (0x1UL << TPI_LSR_nTT_Pos) /*!< TPI LSR: Not thirty-two bit. Mask */ + +#define TPI_LSR_SLK_Pos 1U /*!< TPI LSR: Software Lock status Position */ +#define TPI_LSR_SLK_Msk (0x1UL << TPI_LSR_SLK_Pos) /*!< TPI LSR: Software Lock status Mask */ + +#define TPI_LSR_SLI_Pos 0U /*!< TPI LSR: Software Lock implemented Position */ +#define TPI_LSR_SLI_Msk (0x1UL /*<< TPI_LSR_SLI_Pos*/) /*!< TPI LSR: Software Lock implemented Mask */ + +/* TPI DEVID Register Definitions */ +#define TPI_DEVID_NRZVALID_Pos 11U /*!< TPI DEVID: NRZVALID Position */ +#define TPI_DEVID_NRZVALID_Msk (0x1UL << TPI_DEVID_NRZVALID_Pos) /*!< TPI DEVID: NRZVALID Mask */ + +#define TPI_DEVID_MANCVALID_Pos 10U /*!< TPI DEVID: MANCVALID Position */ +#define TPI_DEVID_MANCVALID_Msk (0x1UL << TPI_DEVID_MANCVALID_Pos) /*!< TPI DEVID: MANCVALID Mask */ + +#define TPI_DEVID_PTINVALID_Pos 9U /*!< TPI DEVID: PTINVALID Position */ +#define TPI_DEVID_PTINVALID_Msk (0x1UL << TPI_DEVID_PTINVALID_Pos) /*!< TPI DEVID: PTINVALID Mask */ + +#define TPI_DEVID_FIFOSZ_Pos 6U /*!< TPI DEVID: FIFO depth Position */ +#define TPI_DEVID_FIFOSZ_Msk (0x7UL << TPI_DEVID_FIFOSZ_Pos) /*!< TPI DEVID: FIFO depth Mask */ + +/* TPI DEVTYPE Register Definitions */ +#define TPI_DEVTYPE_SubType_Pos 4U /*!< TPI DEVTYPE: SubType Position */ +#define TPI_DEVTYPE_SubType_Msk (0xFUL /*<< TPI_DEVTYPE_SubType_Pos*/) /*!< TPI DEVTYPE: SubType Mask */ + +#define TPI_DEVTYPE_MajorType_Pos 0U /*!< TPI DEVTYPE: MajorType Position */ +#define TPI_DEVTYPE_MajorType_Msk (0xFUL << TPI_DEVTYPE_MajorType_Pos) /*!< TPI DEVTYPE: MajorType Mask */ + +/*@}*/ /* end of group CMSIS_TPI */ + + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_MPU Memory Protection Unit (MPU) + \brief Type definitions for the Memory Protection Unit (MPU) + @{ + */ + +/** + \brief Structure type to access the Memory Protection Unit (MPU). + */ +typedef struct +{ + __IM uint32_t TYPE; /*!< Offset: 0x000 (R/ ) MPU Type Register */ + __IOM uint32_t CTRL; /*!< Offset: 0x004 (R/W) MPU Control Register */ + __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) MPU Region Number Register */ + __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) MPU Region Base Address Register */ + __IOM uint32_t RLAR; /*!< Offset: 0x010 (R/W) MPU Region Limit Address Register */ + __IOM uint32_t RBAR_A1; /*!< Offset: 0x014 (R/W) MPU Region Base Address Register Alias 1 */ + __IOM uint32_t RLAR_A1; /*!< Offset: 0x018 (R/W) MPU Region Limit Address Register Alias 1 */ + __IOM uint32_t RBAR_A2; /*!< Offset: 0x01C (R/W) MPU Region Base Address Register Alias 2 */ + __IOM uint32_t RLAR_A2; /*!< Offset: 0x020 (R/W) MPU Region Limit Address Register Alias 2 */ + __IOM uint32_t RBAR_A3; /*!< Offset: 0x024 (R/W) MPU Region Base Address Register Alias 3 */ + __IOM uint32_t RLAR_A3; /*!< Offset: 0x028 (R/W) MPU Region Limit Address Register Alias 3 */ + uint32_t RESERVED0[1]; + union { + __IOM uint32_t MAIR[2]; + struct { + __IOM uint32_t MAIR0; /*!< Offset: 0x030 (R/W) MPU Memory Attribute Indirection Register 0 */ + __IOM uint32_t MAIR1; /*!< Offset: 0x034 (R/W) MPU Memory Attribute Indirection Register 1 */ + }; + }; +} MPU_Type; + +#define MPU_TYPE_RALIASES 4U + +/* MPU Type Register Definitions */ +#define MPU_TYPE_IREGION_Pos 16U /*!< MPU TYPE: IREGION Position */ +#define MPU_TYPE_IREGION_Msk (0xFFUL << MPU_TYPE_IREGION_Pos) /*!< MPU TYPE: IREGION Mask */ + +#define MPU_TYPE_DREGION_Pos 8U /*!< MPU TYPE: DREGION Position */ +#define MPU_TYPE_DREGION_Msk (0xFFUL << MPU_TYPE_DREGION_Pos) /*!< MPU TYPE: DREGION Mask */ + +#define MPU_TYPE_SEPARATE_Pos 0U /*!< MPU TYPE: SEPARATE Position */ +#define MPU_TYPE_SEPARATE_Msk (1UL /*<< MPU_TYPE_SEPARATE_Pos*/) /*!< MPU TYPE: SEPARATE Mask */ + +/* MPU Control Register Definitions */ +#define MPU_CTRL_PRIVDEFENA_Pos 2U /*!< MPU CTRL: PRIVDEFENA Position */ +#define MPU_CTRL_PRIVDEFENA_Msk (1UL << MPU_CTRL_PRIVDEFENA_Pos) /*!< MPU CTRL: PRIVDEFENA Mask */ + +#define MPU_CTRL_HFNMIENA_Pos 1U /*!< MPU CTRL: HFNMIENA Position */ +#define MPU_CTRL_HFNMIENA_Msk (1UL << MPU_CTRL_HFNMIENA_Pos) /*!< MPU CTRL: HFNMIENA Mask */ + +#define MPU_CTRL_ENABLE_Pos 0U /*!< MPU CTRL: ENABLE Position */ +#define MPU_CTRL_ENABLE_Msk (1UL /*<< MPU_CTRL_ENABLE_Pos*/) /*!< MPU CTRL: ENABLE Mask */ + +/* MPU Region Number Register Definitions */ +#define MPU_RNR_REGION_Pos 0U /*!< MPU RNR: REGION Position */ +#define MPU_RNR_REGION_Msk (0xFFUL /*<< MPU_RNR_REGION_Pos*/) /*!< MPU RNR: REGION Mask */ + +/* MPU Region Base Address Register Definitions */ +#define MPU_RBAR_BASE_Pos 5U /*!< MPU RBAR: BASE Position */ +#define MPU_RBAR_BASE_Msk (0x7FFFFFFUL << MPU_RBAR_BASE_Pos) /*!< MPU RBAR: BASE Mask */ + +#define MPU_RBAR_SH_Pos 3U /*!< MPU RBAR: SH Position */ +#define MPU_RBAR_SH_Msk (0x3UL << MPU_RBAR_SH_Pos) /*!< MPU RBAR: SH Mask */ + +#define MPU_RBAR_AP_Pos 1U /*!< MPU RBAR: AP Position */ +#define MPU_RBAR_AP_Msk (0x3UL << MPU_RBAR_AP_Pos) /*!< MPU RBAR: AP Mask */ + +#define MPU_RBAR_XN_Pos 0U /*!< MPU RBAR: XN Position */ +#define MPU_RBAR_XN_Msk (01UL /*<< MPU_RBAR_XN_Pos*/) /*!< MPU RBAR: XN Mask */ + +/* MPU Region Limit Address Register Definitions */ +#define MPU_RLAR_LIMIT_Pos 5U /*!< MPU RLAR: LIMIT Position */ +#define MPU_RLAR_LIMIT_Msk (0x7FFFFFFUL << MPU_RLAR_LIMIT_Pos) /*!< MPU RLAR: LIMIT Mask */ + +#define MPU_RLAR_AttrIndx_Pos 1U /*!< MPU RLAR: AttrIndx Position */ +#define MPU_RLAR_AttrIndx_Msk (0x7UL << MPU_RLAR_AttrIndx_Pos) /*!< MPU RLAR: AttrIndx Mask */ + +#define MPU_RLAR_EN_Pos 0U /*!< MPU RLAR: Region enable bit Position */ +#define MPU_RLAR_EN_Msk (1UL /*<< MPU_RLAR_EN_Pos*/) /*!< MPU RLAR: Region enable bit Disable Mask */ + +/* MPU Memory Attribute Indirection Register 0 Definitions */ +#define MPU_MAIR0_Attr3_Pos 24U /*!< MPU MAIR0: Attr3 Position */ +#define MPU_MAIR0_Attr3_Msk (0xFFUL << MPU_MAIR0_Attr3_Pos) /*!< MPU MAIR0: Attr3 Mask */ + +#define MPU_MAIR0_Attr2_Pos 16U /*!< MPU MAIR0: Attr2 Position */ +#define MPU_MAIR0_Attr2_Msk (0xFFUL << MPU_MAIR0_Attr2_Pos) /*!< MPU MAIR0: Attr2 Mask */ + +#define MPU_MAIR0_Attr1_Pos 8U /*!< MPU MAIR0: Attr1 Position */ +#define MPU_MAIR0_Attr1_Msk (0xFFUL << MPU_MAIR0_Attr1_Pos) /*!< MPU MAIR0: Attr1 Mask */ + +#define MPU_MAIR0_Attr0_Pos 0U /*!< MPU MAIR0: Attr0 Position */ +#define MPU_MAIR0_Attr0_Msk (0xFFUL /*<< MPU_MAIR0_Attr0_Pos*/) /*!< MPU MAIR0: Attr0 Mask */ + +/* MPU Memory Attribute Indirection Register 1 Definitions */ +#define MPU_MAIR1_Attr7_Pos 24U /*!< MPU MAIR1: Attr7 Position */ +#define MPU_MAIR1_Attr7_Msk (0xFFUL << MPU_MAIR1_Attr7_Pos) /*!< MPU MAIR1: Attr7 Mask */ + +#define MPU_MAIR1_Attr6_Pos 16U /*!< MPU MAIR1: Attr6 Position */ +#define MPU_MAIR1_Attr6_Msk (0xFFUL << MPU_MAIR1_Attr6_Pos) /*!< MPU MAIR1: Attr6 Mask */ + +#define MPU_MAIR1_Attr5_Pos 8U /*!< MPU MAIR1: Attr5 Position */ +#define MPU_MAIR1_Attr5_Msk (0xFFUL << MPU_MAIR1_Attr5_Pos) /*!< MPU MAIR1: Attr5 Mask */ + +#define MPU_MAIR1_Attr4_Pos 0U /*!< MPU MAIR1: Attr4 Position */ +#define MPU_MAIR1_Attr4_Msk (0xFFUL /*<< MPU_MAIR1_Attr4_Pos*/) /*!< MPU MAIR1: Attr4 Mask */ + +/*@} end of group CMSIS_MPU */ +#endif + + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SAU Security Attribution Unit (SAU) + \brief Type definitions for the Security Attribution Unit (SAU) + @{ + */ + +/** + \brief Structure type to access the Security Attribution Unit (SAU). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SAU Control Register */ + __IM uint32_t TYPE; /*!< Offset: 0x004 (R/ ) SAU Type Register */ +#if defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) + __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) SAU Region Number Register */ + __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) SAU Region Base Address Register */ + __IOM uint32_t RLAR; /*!< Offset: 0x010 (R/W) SAU Region Limit Address Register */ +#else + uint32_t RESERVED0[3]; +#endif + __IOM uint32_t SFSR; /*!< Offset: 0x014 (R/W) Secure Fault Status Register */ + __IOM uint32_t SFAR; /*!< Offset: 0x018 (R/W) Secure Fault Address Register */ +} SAU_Type; + +/* SAU Control Register Definitions */ +#define SAU_CTRL_ALLNS_Pos 1U /*!< SAU CTRL: ALLNS Position */ +#define SAU_CTRL_ALLNS_Msk (1UL << SAU_CTRL_ALLNS_Pos) /*!< SAU CTRL: ALLNS Mask */ + +#define SAU_CTRL_ENABLE_Pos 0U /*!< SAU CTRL: ENABLE Position */ +#define SAU_CTRL_ENABLE_Msk (1UL /*<< SAU_CTRL_ENABLE_Pos*/) /*!< SAU CTRL: ENABLE Mask */ + +/* SAU Type Register Definitions */ +#define SAU_TYPE_SREGION_Pos 0U /*!< SAU TYPE: SREGION Position */ +#define SAU_TYPE_SREGION_Msk (0xFFUL /*<< SAU_TYPE_SREGION_Pos*/) /*!< SAU TYPE: SREGION Mask */ + +#if defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) +/* SAU Region Number Register Definitions */ +#define SAU_RNR_REGION_Pos 0U /*!< SAU RNR: REGION Position */ +#define SAU_RNR_REGION_Msk (0xFFUL /*<< SAU_RNR_REGION_Pos*/) /*!< SAU RNR: REGION Mask */ + +/* SAU Region Base Address Register Definitions */ +#define SAU_RBAR_BADDR_Pos 5U /*!< SAU RBAR: BADDR Position */ +#define SAU_RBAR_BADDR_Msk (0x7FFFFFFUL << SAU_RBAR_BADDR_Pos) /*!< SAU RBAR: BADDR Mask */ + +/* SAU Region Limit Address Register Definitions */ +#define SAU_RLAR_LADDR_Pos 5U /*!< SAU RLAR: LADDR Position */ +#define SAU_RLAR_LADDR_Msk (0x7FFFFFFUL << SAU_RLAR_LADDR_Pos) /*!< SAU RLAR: LADDR Mask */ + +#define SAU_RLAR_NSC_Pos 1U /*!< SAU RLAR: NSC Position */ +#define SAU_RLAR_NSC_Msk (1UL << SAU_RLAR_NSC_Pos) /*!< SAU RLAR: NSC Mask */ + +#define SAU_RLAR_ENABLE_Pos 0U /*!< SAU RLAR: ENABLE Position */ +#define SAU_RLAR_ENABLE_Msk (1UL /*<< SAU_RLAR_ENABLE_Pos*/) /*!< SAU RLAR: ENABLE Mask */ + +#endif /* defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) */ + +/* Secure Fault Status Register Definitions */ +#define SAU_SFSR_LSERR_Pos 7U /*!< SAU SFSR: LSERR Position */ +#define SAU_SFSR_LSERR_Msk (1UL << SAU_SFSR_LSERR_Pos) /*!< SAU SFSR: LSERR Mask */ + +#define SAU_SFSR_SFARVALID_Pos 6U /*!< SAU SFSR: SFARVALID Position */ +#define SAU_SFSR_SFARVALID_Msk (1UL << SAU_SFSR_SFARVALID_Pos) /*!< SAU SFSR: SFARVALID Mask */ + +#define SAU_SFSR_LSPERR_Pos 5U /*!< SAU SFSR: LSPERR Position */ +#define SAU_SFSR_LSPERR_Msk (1UL << SAU_SFSR_LSPERR_Pos) /*!< SAU SFSR: LSPERR Mask */ + +#define SAU_SFSR_INVTRAN_Pos 4U /*!< SAU SFSR: INVTRAN Position */ +#define SAU_SFSR_INVTRAN_Msk (1UL << SAU_SFSR_INVTRAN_Pos) /*!< SAU SFSR: INVTRAN Mask */ + +#define SAU_SFSR_AUVIOL_Pos 3U /*!< SAU SFSR: AUVIOL Position */ +#define SAU_SFSR_AUVIOL_Msk (1UL << SAU_SFSR_AUVIOL_Pos) /*!< SAU SFSR: AUVIOL Mask */ + +#define SAU_SFSR_INVER_Pos 2U /*!< SAU SFSR: INVER Position */ +#define SAU_SFSR_INVER_Msk (1UL << SAU_SFSR_INVER_Pos) /*!< SAU SFSR: INVER Mask */ + +#define SAU_SFSR_INVIS_Pos 1U /*!< SAU SFSR: INVIS Position */ +#define SAU_SFSR_INVIS_Msk (1UL << SAU_SFSR_INVIS_Pos) /*!< SAU SFSR: INVIS Mask */ + +#define SAU_SFSR_INVEP_Pos 0U /*!< SAU SFSR: INVEP Position */ +#define SAU_SFSR_INVEP_Msk (1UL /*<< SAU_SFSR_INVEP_Pos*/) /*!< SAU SFSR: INVEP Mask */ + +/*@} end of group CMSIS_SAU */ +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_FPU Floating Point Unit (FPU) + \brief Type definitions for the Floating Point Unit (FPU) + @{ + */ + +/** + \brief Structure type to access the Floating Point Unit (FPU). + */ +typedef struct +{ + uint32_t RESERVED0[1U]; + __IOM uint32_t FPCCR; /*!< Offset: 0x004 (R/W) Floating-Point Context Control Register */ + __IOM uint32_t FPCAR; /*!< Offset: 0x008 (R/W) Floating-Point Context Address Register */ + __IOM uint32_t FPDSCR; /*!< Offset: 0x00C (R/W) Floating-Point Default Status Control Register */ + __IM uint32_t MVFR0; /*!< Offset: 0x010 (R/ ) Media and VFP Feature Register 0 */ + __IM uint32_t MVFR1; /*!< Offset: 0x014 (R/ ) Media and VFP Feature Register 1 */ + __IM uint32_t MVFR2; /*!< Offset: 0x018 (R/ ) Media and VFP Feature Register 2 */ +} FPU_Type; + +/* Floating-Point Context Control Register Definitions */ +#define FPU_FPCCR_ASPEN_Pos 31U /*!< FPCCR: ASPEN bit Position */ +#define FPU_FPCCR_ASPEN_Msk (1UL << FPU_FPCCR_ASPEN_Pos) /*!< FPCCR: ASPEN bit Mask */ + +#define FPU_FPCCR_LSPEN_Pos 30U /*!< FPCCR: LSPEN Position */ +#define FPU_FPCCR_LSPEN_Msk (1UL << FPU_FPCCR_LSPEN_Pos) /*!< FPCCR: LSPEN bit Mask */ + +#define FPU_FPCCR_LSPENS_Pos 29U /*!< FPCCR: LSPENS Position */ +#define FPU_FPCCR_LSPENS_Msk (1UL << FPU_FPCCR_LSPENS_Pos) /*!< FPCCR: LSPENS bit Mask */ + +#define FPU_FPCCR_CLRONRET_Pos 28U /*!< FPCCR: CLRONRET Position */ +#define FPU_FPCCR_CLRONRET_Msk (1UL << FPU_FPCCR_CLRONRET_Pos) /*!< FPCCR: CLRONRET bit Mask */ + +#define FPU_FPCCR_CLRONRETS_Pos 27U /*!< FPCCR: CLRONRETS Position */ +#define FPU_FPCCR_CLRONRETS_Msk (1UL << FPU_FPCCR_CLRONRETS_Pos) /*!< FPCCR: CLRONRETS bit Mask */ + +#define FPU_FPCCR_TS_Pos 26U /*!< FPCCR: TS Position */ +#define FPU_FPCCR_TS_Msk (1UL << FPU_FPCCR_TS_Pos) /*!< FPCCR: TS bit Mask */ + +#define FPU_FPCCR_UFRDY_Pos 10U /*!< FPCCR: UFRDY Position */ +#define FPU_FPCCR_UFRDY_Msk (1UL << FPU_FPCCR_UFRDY_Pos) /*!< FPCCR: UFRDY bit Mask */ + +#define FPU_FPCCR_SPLIMVIOL_Pos 9U /*!< FPCCR: SPLIMVIOL Position */ +#define FPU_FPCCR_SPLIMVIOL_Msk (1UL << FPU_FPCCR_SPLIMVIOL_Pos) /*!< FPCCR: SPLIMVIOL bit Mask */ + +#define FPU_FPCCR_MONRDY_Pos 8U /*!< FPCCR: MONRDY Position */ +#define FPU_FPCCR_MONRDY_Msk (1UL << FPU_FPCCR_MONRDY_Pos) /*!< FPCCR: MONRDY bit Mask */ + +#define FPU_FPCCR_SFRDY_Pos 7U /*!< FPCCR: SFRDY Position */ +#define FPU_FPCCR_SFRDY_Msk (1UL << FPU_FPCCR_SFRDY_Pos) /*!< FPCCR: SFRDY bit Mask */ + +#define FPU_FPCCR_BFRDY_Pos 6U /*!< FPCCR: BFRDY Position */ +#define FPU_FPCCR_BFRDY_Msk (1UL << FPU_FPCCR_BFRDY_Pos) /*!< FPCCR: BFRDY bit Mask */ + +#define FPU_FPCCR_MMRDY_Pos 5U /*!< FPCCR: MMRDY Position */ +#define FPU_FPCCR_MMRDY_Msk (1UL << FPU_FPCCR_MMRDY_Pos) /*!< FPCCR: MMRDY bit Mask */ + +#define FPU_FPCCR_HFRDY_Pos 4U /*!< FPCCR: HFRDY Position */ +#define FPU_FPCCR_HFRDY_Msk (1UL << FPU_FPCCR_HFRDY_Pos) /*!< FPCCR: HFRDY bit Mask */ + +#define FPU_FPCCR_THREAD_Pos 3U /*!< FPCCR: processor mode bit Position */ +#define FPU_FPCCR_THREAD_Msk (1UL << FPU_FPCCR_THREAD_Pos) /*!< FPCCR: processor mode active bit Mask */ + +#define FPU_FPCCR_S_Pos 2U /*!< FPCCR: Security status of the FP context bit Position */ +#define FPU_FPCCR_S_Msk (1UL << FPU_FPCCR_S_Pos) /*!< FPCCR: Security status of the FP context bit Mask */ + +#define FPU_FPCCR_USER_Pos 1U /*!< FPCCR: privilege level bit Position */ +#define FPU_FPCCR_USER_Msk (1UL << FPU_FPCCR_USER_Pos) /*!< FPCCR: privilege level bit Mask */ + +#define FPU_FPCCR_LSPACT_Pos 0U /*!< FPCCR: Lazy state preservation active bit Position */ +#define FPU_FPCCR_LSPACT_Msk (1UL /*<< FPU_FPCCR_LSPACT_Pos*/) /*!< FPCCR: Lazy state preservation active bit Mask */ + +/* Floating-Point Context Address Register Definitions */ +#define FPU_FPCAR_ADDRESS_Pos 3U /*!< FPCAR: ADDRESS bit Position */ +#define FPU_FPCAR_ADDRESS_Msk (0x1FFFFFFFUL << FPU_FPCAR_ADDRESS_Pos) /*!< FPCAR: ADDRESS bit Mask */ + +/* Floating-Point Default Status Control Register Definitions */ +#define FPU_FPDSCR_AHP_Pos 26U /*!< FPDSCR: AHP bit Position */ +#define FPU_FPDSCR_AHP_Msk (1UL << FPU_FPDSCR_AHP_Pos) /*!< FPDSCR: AHP bit Mask */ + +#define FPU_FPDSCR_DN_Pos 25U /*!< FPDSCR: DN bit Position */ +#define FPU_FPDSCR_DN_Msk (1UL << FPU_FPDSCR_DN_Pos) /*!< FPDSCR: DN bit Mask */ + +#define FPU_FPDSCR_FZ_Pos 24U /*!< FPDSCR: FZ bit Position */ +#define FPU_FPDSCR_FZ_Msk (1UL << FPU_FPDSCR_FZ_Pos) /*!< FPDSCR: FZ bit Mask */ + +#define FPU_FPDSCR_RMode_Pos 22U /*!< FPDSCR: RMode bit Position */ +#define FPU_FPDSCR_RMode_Msk (3UL << FPU_FPDSCR_RMode_Pos) /*!< FPDSCR: RMode bit Mask */ + +/* Media and VFP Feature Register 0 Definitions */ +#define FPU_MVFR0_FP_rounding_modes_Pos 28U /*!< MVFR0: FP rounding modes bits Position */ +#define FPU_MVFR0_FP_rounding_modes_Msk (0xFUL << FPU_MVFR0_FP_rounding_modes_Pos) /*!< MVFR0: FP rounding modes bits Mask */ + +#define FPU_MVFR0_Short_vectors_Pos 24U /*!< MVFR0: Short vectors bits Position */ +#define FPU_MVFR0_Short_vectors_Msk (0xFUL << FPU_MVFR0_Short_vectors_Pos) /*!< MVFR0: Short vectors bits Mask */ + +#define FPU_MVFR0_Square_root_Pos 20U /*!< MVFR0: Square root bits Position */ +#define FPU_MVFR0_Square_root_Msk (0xFUL << FPU_MVFR0_Square_root_Pos) /*!< MVFR0: Square root bits Mask */ + +#define FPU_MVFR0_Divide_Pos 16U /*!< MVFR0: Divide bits Position */ +#define FPU_MVFR0_Divide_Msk (0xFUL << FPU_MVFR0_Divide_Pos) /*!< MVFR0: Divide bits Mask */ + +#define FPU_MVFR0_FP_excep_trapping_Pos 12U /*!< MVFR0: FP exception trapping bits Position */ +#define FPU_MVFR0_FP_excep_trapping_Msk (0xFUL << FPU_MVFR0_FP_excep_trapping_Pos) /*!< MVFR0: FP exception trapping bits Mask */ + +#define FPU_MVFR0_Double_precision_Pos 8U /*!< MVFR0: Double-precision bits Position */ +#define FPU_MVFR0_Double_precision_Msk (0xFUL << FPU_MVFR0_Double_precision_Pos) /*!< MVFR0: Double-precision bits Mask */ + +#define FPU_MVFR0_Single_precision_Pos 4U /*!< MVFR0: Single-precision bits Position */ +#define FPU_MVFR0_Single_precision_Msk (0xFUL << FPU_MVFR0_Single_precision_Pos) /*!< MVFR0: Single-precision bits Mask */ + +#define FPU_MVFR0_A_SIMD_registers_Pos 0U /*!< MVFR0: A_SIMD registers bits Position */ +#define FPU_MVFR0_A_SIMD_registers_Msk (0xFUL /*<< FPU_MVFR0_A_SIMD_registers_Pos*/) /*!< MVFR0: A_SIMD registers bits Mask */ + +/* Media and VFP Feature Register 1 Definitions */ +#define FPU_MVFR1_FP_fused_MAC_Pos 28U /*!< MVFR1: FP fused MAC bits Position */ +#define FPU_MVFR1_FP_fused_MAC_Msk (0xFUL << FPU_MVFR1_FP_fused_MAC_Pos) /*!< MVFR1: FP fused MAC bits Mask */ + +#define FPU_MVFR1_FP_HPFP_Pos 24U /*!< MVFR1: FP HPFP bits Position */ +#define FPU_MVFR1_FP_HPFP_Msk (0xFUL << FPU_MVFR1_FP_HPFP_Pos) /*!< MVFR1: FP HPFP bits Mask */ + +#define FPU_MVFR1_D_NaN_mode_Pos 4U /*!< MVFR1: D_NaN mode bits Position */ +#define FPU_MVFR1_D_NaN_mode_Msk (0xFUL << FPU_MVFR1_D_NaN_mode_Pos) /*!< MVFR1: D_NaN mode bits Mask */ + +#define FPU_MVFR1_FtZ_mode_Pos 0U /*!< MVFR1: FtZ mode bits Position */ +#define FPU_MVFR1_FtZ_mode_Msk (0xFUL /*<< FPU_MVFR1_FtZ_mode_Pos*/) /*!< MVFR1: FtZ mode bits Mask */ + +/* Media and VFP Feature Register 2 Definitions */ +#define FPU_MVFR2_FPMisc_Pos 4U /*!< MVFR2: FPMisc bits Position */ +#define FPU_MVFR2_FPMisc_Msk (0xFUL << FPU_MVFR2_FPMisc_Pos) /*!< MVFR2: FPMisc bits Mask */ + +/*@} end of group CMSIS_FPU */ + +/* CoreDebug is deprecated. replaced by DCB (Debug Control Block) */ +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CoreDebug Core Debug Registers (CoreDebug) + \brief Type definitions for the Core Debug Registers + @{ + */ + +/** + \brief \deprecated Structure type to access the Core Debug Register (CoreDebug). + */ +typedef struct +{ + __IOM uint32_t DHCSR; /*!< Offset: 0x000 (R/W) Debug Halting Control and Status Register */ + __OM uint32_t DCRSR; /*!< Offset: 0x004 ( /W) Debug Core Register Selector Register */ + __IOM uint32_t DCRDR; /*!< Offset: 0x008 (R/W) Debug Core Register Data Register */ + __IOM uint32_t DEMCR; /*!< Offset: 0x00C (R/W) Debug Exception and Monitor Control Register */ + uint32_t RESERVED0[1U]; + __IOM uint32_t DAUTHCTRL; /*!< Offset: 0x014 (R/W) Debug Authentication Control Register */ + __IOM uint32_t DSCSR; /*!< Offset: 0x018 (R/W) Debug Security Control and Status Register */ +} CoreDebug_Type; + +/* Debug Halting Control and Status Register Definitions */ +#define CoreDebug_DHCSR_DBGKEY_Pos 16U /*!< \deprecated CoreDebug DHCSR: DBGKEY Position */ +#define CoreDebug_DHCSR_DBGKEY_Msk (0xFFFFUL << CoreDebug_DHCSR_DBGKEY_Pos) /*!< \deprecated CoreDebug DHCSR: DBGKEY Mask */ + +#define CoreDebug_DHCSR_S_RESTART_ST_Pos 26U /*!< \deprecated CoreDebug DHCSR: S_RESTART_ST Position */ +#define CoreDebug_DHCSR_S_RESTART_ST_Msk (1UL << CoreDebug_DHCSR_S_RESTART_ST_Pos) /*!< \deprecated CoreDebug DHCSR: S_RESTART_ST Mask */ + +#define CoreDebug_DHCSR_S_RESET_ST_Pos 25U /*!< \deprecated CoreDebug DHCSR: S_RESET_ST Position */ +#define CoreDebug_DHCSR_S_RESET_ST_Msk (1UL << CoreDebug_DHCSR_S_RESET_ST_Pos) /*!< \deprecated CoreDebug DHCSR: S_RESET_ST Mask */ + +#define CoreDebug_DHCSR_S_RETIRE_ST_Pos 24U /*!< \deprecated CoreDebug DHCSR: S_RETIRE_ST Position */ +#define CoreDebug_DHCSR_S_RETIRE_ST_Msk (1UL << CoreDebug_DHCSR_S_RETIRE_ST_Pos) /*!< \deprecated CoreDebug DHCSR: S_RETIRE_ST Mask */ + +#define CoreDebug_DHCSR_S_LOCKUP_Pos 19U /*!< \deprecated CoreDebug DHCSR: S_LOCKUP Position */ +#define CoreDebug_DHCSR_S_LOCKUP_Msk (1UL << CoreDebug_DHCSR_S_LOCKUP_Pos) /*!< \deprecated CoreDebug DHCSR: S_LOCKUP Mask */ + +#define CoreDebug_DHCSR_S_SLEEP_Pos 18U /*!< \deprecated CoreDebug DHCSR: S_SLEEP Position */ +#define CoreDebug_DHCSR_S_SLEEP_Msk (1UL << CoreDebug_DHCSR_S_SLEEP_Pos) /*!< \deprecated CoreDebug DHCSR: S_SLEEP Mask */ + +#define CoreDebug_DHCSR_S_HALT_Pos 17U /*!< \deprecated CoreDebug DHCSR: S_HALT Position */ +#define CoreDebug_DHCSR_S_HALT_Msk (1UL << CoreDebug_DHCSR_S_HALT_Pos) /*!< \deprecated CoreDebug DHCSR: S_HALT Mask */ + +#define CoreDebug_DHCSR_S_REGRDY_Pos 16U /*!< \deprecated CoreDebug DHCSR: S_REGRDY Position */ +#define CoreDebug_DHCSR_S_REGRDY_Msk (1UL << CoreDebug_DHCSR_S_REGRDY_Pos) /*!< \deprecated CoreDebug DHCSR: S_REGRDY Mask */ + +#define CoreDebug_DHCSR_C_SNAPSTALL_Pos 5U /*!< \deprecated CoreDebug DHCSR: C_SNAPSTALL Position */ +#define CoreDebug_DHCSR_C_SNAPSTALL_Msk (1UL << CoreDebug_DHCSR_C_SNAPSTALL_Pos) /*!< \deprecated CoreDebug DHCSR: C_SNAPSTALL Mask */ + +#define CoreDebug_DHCSR_C_MASKINTS_Pos 3U /*!< \deprecated CoreDebug DHCSR: C_MASKINTS Position */ +#define CoreDebug_DHCSR_C_MASKINTS_Msk (1UL << CoreDebug_DHCSR_C_MASKINTS_Pos) /*!< \deprecated CoreDebug DHCSR: C_MASKINTS Mask */ + +#define CoreDebug_DHCSR_C_STEP_Pos 2U /*!< \deprecated CoreDebug DHCSR: C_STEP Position */ +#define CoreDebug_DHCSR_C_STEP_Msk (1UL << CoreDebug_DHCSR_C_STEP_Pos) /*!< \deprecated CoreDebug DHCSR: C_STEP Mask */ + +#define CoreDebug_DHCSR_C_HALT_Pos 1U /*!< \deprecated CoreDebug DHCSR: C_HALT Position */ +#define CoreDebug_DHCSR_C_HALT_Msk (1UL << CoreDebug_DHCSR_C_HALT_Pos) /*!< \deprecated CoreDebug DHCSR: C_HALT Mask */ + +#define CoreDebug_DHCSR_C_DEBUGEN_Pos 0U /*!< \deprecated CoreDebug DHCSR: C_DEBUGEN Position */ +#define CoreDebug_DHCSR_C_DEBUGEN_Msk (1UL /*<< CoreDebug_DHCSR_C_DEBUGEN_Pos*/) /*!< \deprecated CoreDebug DHCSR: C_DEBUGEN Mask */ + +/* Debug Core Register Selector Register Definitions */ +#define CoreDebug_DCRSR_REGWnR_Pos 16U /*!< \deprecated CoreDebug DCRSR: REGWnR Position */ +#define CoreDebug_DCRSR_REGWnR_Msk (1UL << CoreDebug_DCRSR_REGWnR_Pos) /*!< \deprecated CoreDebug DCRSR: REGWnR Mask */ + +#define CoreDebug_DCRSR_REGSEL_Pos 0U /*!< \deprecated CoreDebug DCRSR: REGSEL Position */ +#define CoreDebug_DCRSR_REGSEL_Msk (0x1FUL /*<< CoreDebug_DCRSR_REGSEL_Pos*/) /*!< \deprecated CoreDebug DCRSR: REGSEL Mask */ + +/* Debug Exception and Monitor Control Register Definitions */ +#define CoreDebug_DEMCR_TRCENA_Pos 24U /*!< \deprecated CoreDebug DEMCR: TRCENA Position */ +#define CoreDebug_DEMCR_TRCENA_Msk (1UL << CoreDebug_DEMCR_TRCENA_Pos) /*!< \deprecated CoreDebug DEMCR: TRCENA Mask */ + +#define CoreDebug_DEMCR_MON_REQ_Pos 19U /*!< \deprecated CoreDebug DEMCR: MON_REQ Position */ +#define CoreDebug_DEMCR_MON_REQ_Msk (1UL << CoreDebug_DEMCR_MON_REQ_Pos) /*!< \deprecated CoreDebug DEMCR: MON_REQ Mask */ + +#define CoreDebug_DEMCR_MON_STEP_Pos 18U /*!< \deprecated CoreDebug DEMCR: MON_STEP Position */ +#define CoreDebug_DEMCR_MON_STEP_Msk (1UL << CoreDebug_DEMCR_MON_STEP_Pos) /*!< \deprecated CoreDebug DEMCR: MON_STEP Mask */ + +#define CoreDebug_DEMCR_MON_PEND_Pos 17U /*!< \deprecated CoreDebug DEMCR: MON_PEND Position */ +#define CoreDebug_DEMCR_MON_PEND_Msk (1UL << CoreDebug_DEMCR_MON_PEND_Pos) /*!< \deprecated CoreDebug DEMCR: MON_PEND Mask */ + +#define CoreDebug_DEMCR_MON_EN_Pos 16U /*!< \deprecated CoreDebug DEMCR: MON_EN Position */ +#define CoreDebug_DEMCR_MON_EN_Msk (1UL << CoreDebug_DEMCR_MON_EN_Pos) /*!< \deprecated CoreDebug DEMCR: MON_EN Mask */ + +#define CoreDebug_DEMCR_VC_HARDERR_Pos 10U /*!< \deprecated CoreDebug DEMCR: VC_HARDERR Position */ +#define CoreDebug_DEMCR_VC_HARDERR_Msk (1UL << CoreDebug_DEMCR_VC_HARDERR_Pos) /*!< \deprecated CoreDebug DEMCR: VC_HARDERR Mask */ + +#define CoreDebug_DEMCR_VC_INTERR_Pos 9U /*!< \deprecated CoreDebug DEMCR: VC_INTERR Position */ +#define CoreDebug_DEMCR_VC_INTERR_Msk (1UL << CoreDebug_DEMCR_VC_INTERR_Pos) /*!< \deprecated CoreDebug DEMCR: VC_INTERR Mask */ + +#define CoreDebug_DEMCR_VC_BUSERR_Pos 8U /*!< \deprecated CoreDebug DEMCR: VC_BUSERR Position */ +#define CoreDebug_DEMCR_VC_BUSERR_Msk (1UL << CoreDebug_DEMCR_VC_BUSERR_Pos) /*!< \deprecated CoreDebug DEMCR: VC_BUSERR Mask */ + +#define CoreDebug_DEMCR_VC_STATERR_Pos 7U /*!< \deprecated CoreDebug DEMCR: VC_STATERR Position */ +#define CoreDebug_DEMCR_VC_STATERR_Msk (1UL << CoreDebug_DEMCR_VC_STATERR_Pos) /*!< \deprecated CoreDebug DEMCR: VC_STATERR Mask */ + +#define CoreDebug_DEMCR_VC_CHKERR_Pos 6U /*!< \deprecated CoreDebug DEMCR: VC_CHKERR Position */ +#define CoreDebug_DEMCR_VC_CHKERR_Msk (1UL << CoreDebug_DEMCR_VC_CHKERR_Pos) /*!< \deprecated CoreDebug DEMCR: VC_CHKERR Mask */ + +#define CoreDebug_DEMCR_VC_NOCPERR_Pos 5U /*!< \deprecated CoreDebug DEMCR: VC_NOCPERR Position */ +#define CoreDebug_DEMCR_VC_NOCPERR_Msk (1UL << CoreDebug_DEMCR_VC_NOCPERR_Pos) /*!< \deprecated CoreDebug DEMCR: VC_NOCPERR Mask */ + +#define CoreDebug_DEMCR_VC_MMERR_Pos 4U /*!< \deprecated CoreDebug DEMCR: VC_MMERR Position */ +#define CoreDebug_DEMCR_VC_MMERR_Msk (1UL << CoreDebug_DEMCR_VC_MMERR_Pos) /*!< \deprecated CoreDebug DEMCR: VC_MMERR Mask */ + +#define CoreDebug_DEMCR_VC_CORERESET_Pos 0U /*!< \deprecated CoreDebug DEMCR: VC_CORERESET Position */ +#define CoreDebug_DEMCR_VC_CORERESET_Msk (1UL /*<< CoreDebug_DEMCR_VC_CORERESET_Pos*/) /*!< \deprecated CoreDebug DEMCR: VC_CORERESET Mask */ + +/* Debug Authentication Control Register Definitions */ +#define CoreDebug_DAUTHCTRL_INTSPNIDEN_Pos 3U /*!< \deprecated CoreDebug DAUTHCTRL: INTSPNIDEN, Position */ +#define CoreDebug_DAUTHCTRL_INTSPNIDEN_Msk (1UL << CoreDebug_DAUTHCTRL_INTSPNIDEN_Pos) /*!< \deprecated CoreDebug DAUTHCTRL: INTSPNIDEN, Mask */ + +#define CoreDebug_DAUTHCTRL_SPNIDENSEL_Pos 2U /*!< \deprecated CoreDebug DAUTHCTRL: SPNIDENSEL Position */ +#define CoreDebug_DAUTHCTRL_SPNIDENSEL_Msk (1UL << CoreDebug_DAUTHCTRL_SPNIDENSEL_Pos) /*!< \deprecated CoreDebug DAUTHCTRL: SPNIDENSEL Mask */ + +#define CoreDebug_DAUTHCTRL_INTSPIDEN_Pos 1U /*!< \deprecated CoreDebug DAUTHCTRL: INTSPIDEN Position */ +#define CoreDebug_DAUTHCTRL_INTSPIDEN_Msk (1UL << CoreDebug_DAUTHCTRL_INTSPIDEN_Pos) /*!< \deprecated CoreDebug DAUTHCTRL: INTSPIDEN Mask */ + +#define CoreDebug_DAUTHCTRL_SPIDENSEL_Pos 0U /*!< \deprecated CoreDebug DAUTHCTRL: SPIDENSEL Position */ +#define CoreDebug_DAUTHCTRL_SPIDENSEL_Msk (1UL /*<< CoreDebug_DAUTHCTRL_SPIDENSEL_Pos*/) /*!< \deprecated CoreDebug DAUTHCTRL: SPIDENSEL Mask */ + +/* Debug Security Control and Status Register Definitions */ +#define CoreDebug_DSCSR_CDS_Pos 16U /*!< \deprecated CoreDebug DSCSR: CDS Position */ +#define CoreDebug_DSCSR_CDS_Msk (1UL << CoreDebug_DSCSR_CDS_Pos) /*!< \deprecated CoreDebug DSCSR: CDS Mask */ + +#define CoreDebug_DSCSR_SBRSEL_Pos 1U /*!< \deprecated CoreDebug DSCSR: SBRSEL Position */ +#define CoreDebug_DSCSR_SBRSEL_Msk (1UL << CoreDebug_DSCSR_SBRSEL_Pos) /*!< \deprecated CoreDebug DSCSR: SBRSEL Mask */ + +#define CoreDebug_DSCSR_SBRSELEN_Pos 0U /*!< \deprecated CoreDebug DSCSR: SBRSELEN Position */ +#define CoreDebug_DSCSR_SBRSELEN_Msk (1UL /*<< CoreDebug_DSCSR_SBRSELEN_Pos*/) /*!< \deprecated CoreDebug DSCSR: SBRSELEN Mask */ + +/*@} end of group CMSIS_CoreDebug */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_DCB Debug Control Block + \brief Type definitions for the Debug Control Block Registers + @{ + */ + +/** + \brief Structure type to access the Debug Control Block Registers (DCB). + */ +typedef struct +{ + __IOM uint32_t DHCSR; /*!< Offset: 0x000 (R/W) Debug Halting Control and Status Register */ + __OM uint32_t DCRSR; /*!< Offset: 0x004 ( /W) Debug Core Register Selector Register */ + __IOM uint32_t DCRDR; /*!< Offset: 0x008 (R/W) Debug Core Register Data Register */ + __IOM uint32_t DEMCR; /*!< Offset: 0x00C (R/W) Debug Exception and Monitor Control Register */ + uint32_t RESERVED0[1U]; + __IOM uint32_t DAUTHCTRL; /*!< Offset: 0x014 (R/W) Debug Authentication Control Register */ + __IOM uint32_t DSCSR; /*!< Offset: 0x018 (R/W) Debug Security Control and Status Register */ +} DCB_Type; + +/* DHCSR, Debug Halting Control and Status Register Definitions */ +#define DCB_DHCSR_DBGKEY_Pos 16U /*!< DCB DHCSR: Debug key Position */ +#define DCB_DHCSR_DBGKEY_Msk (0xFFFFUL << DCB_DHCSR_DBGKEY_Pos) /*!< DCB DHCSR: Debug key Mask */ + +#define DCB_DHCSR_S_RESTART_ST_Pos 26U /*!< DCB DHCSR: Restart sticky status Position */ +#define DCB_DHCSR_S_RESTART_ST_Msk (0x1UL << DCB_DHCSR_S_RESTART_ST_Pos) /*!< DCB DHCSR: Restart sticky status Mask */ + +#define DCB_DHCSR_S_RESET_ST_Pos 25U /*!< DCB DHCSR: Reset sticky status Position */ +#define DCB_DHCSR_S_RESET_ST_Msk (0x1UL << DCB_DHCSR_S_RESET_ST_Pos) /*!< DCB DHCSR: Reset sticky status Mask */ + +#define DCB_DHCSR_S_RETIRE_ST_Pos 24U /*!< DCB DHCSR: Retire sticky status Position */ +#define DCB_DHCSR_S_RETIRE_ST_Msk (0x1UL << DCB_DHCSR_S_RETIRE_ST_Pos) /*!< DCB DHCSR: Retire sticky status Mask */ + +#define DCB_DHCSR_S_SDE_Pos 20U /*!< DCB DHCSR: Secure debug enabled Position */ +#define DCB_DHCSR_S_SDE_Msk (0x1UL << DCB_DHCSR_S_SDE_Pos) /*!< DCB DHCSR: Secure debug enabled Mask */ + +#define DCB_DHCSR_S_LOCKUP_Pos 19U /*!< DCB DHCSR: Lockup status Position */ +#define DCB_DHCSR_S_LOCKUP_Msk (0x1UL << DCB_DHCSR_S_LOCKUP_Pos) /*!< DCB DHCSR: Lockup status Mask */ + +#define DCB_DHCSR_S_SLEEP_Pos 18U /*!< DCB DHCSR: Sleeping status Position */ +#define DCB_DHCSR_S_SLEEP_Msk (0x1UL << DCB_DHCSR_S_SLEEP_Pos) /*!< DCB DHCSR: Sleeping status Mask */ + +#define DCB_DHCSR_S_HALT_Pos 17U /*!< DCB DHCSR: Halted status Position */ +#define DCB_DHCSR_S_HALT_Msk (0x1UL << DCB_DHCSR_S_HALT_Pos) /*!< DCB DHCSR: Halted status Mask */ + +#define DCB_DHCSR_S_REGRDY_Pos 16U /*!< DCB DHCSR: Register ready status Position */ +#define DCB_DHCSR_S_REGRDY_Msk (0x1UL << DCB_DHCSR_S_REGRDY_Pos) /*!< DCB DHCSR: Register ready status Mask */ + +#define DCB_DHCSR_C_SNAPSTALL_Pos 5U /*!< DCB DHCSR: Snap stall control Position */ +#define DCB_DHCSR_C_SNAPSTALL_Msk (0x1UL << DCB_DHCSR_C_SNAPSTALL_Pos) /*!< DCB DHCSR: Snap stall control Mask */ + +#define DCB_DHCSR_C_MASKINTS_Pos 3U /*!< DCB DHCSR: Mask interrupts control Position */ +#define DCB_DHCSR_C_MASKINTS_Msk (0x1UL << DCB_DHCSR_C_MASKINTS_Pos) /*!< DCB DHCSR: Mask interrupts control Mask */ + +#define DCB_DHCSR_C_STEP_Pos 2U /*!< DCB DHCSR: Step control Position */ +#define DCB_DHCSR_C_STEP_Msk (0x1UL << DCB_DHCSR_C_STEP_Pos) /*!< DCB DHCSR: Step control Mask */ + +#define DCB_DHCSR_C_HALT_Pos 1U /*!< DCB DHCSR: Halt control Position */ +#define DCB_DHCSR_C_HALT_Msk (0x1UL << DCB_DHCSR_C_HALT_Pos) /*!< DCB DHCSR: Halt control Mask */ + +#define DCB_DHCSR_C_DEBUGEN_Pos 0U /*!< DCB DHCSR: Debug enable control Position */ +#define DCB_DHCSR_C_DEBUGEN_Msk (0x1UL /*<< DCB_DHCSR_C_DEBUGEN_Pos*/) /*!< DCB DHCSR: Debug enable control Mask */ + +/* DCRSR, Debug Core Register Select Register Definitions */ +#define DCB_DCRSR_REGWnR_Pos 16U /*!< DCB DCRSR: Register write/not-read Position */ +#define DCB_DCRSR_REGWnR_Msk (0x1UL << DCB_DCRSR_REGWnR_Pos) /*!< DCB DCRSR: Register write/not-read Mask */ + +#define DCB_DCRSR_REGSEL_Pos 0U /*!< DCB DCRSR: Register selector Position */ +#define DCB_DCRSR_REGSEL_Msk (0x7FUL /*<< DCB_DCRSR_REGSEL_Pos*/) /*!< DCB DCRSR: Register selector Mask */ + +/* DCRDR, Debug Core Register Data Register Definitions */ +#define DCB_DCRDR_DBGTMP_Pos 0U /*!< DCB DCRDR: Data temporary buffer Position */ +#define DCB_DCRDR_DBGTMP_Msk (0xFFFFFFFFUL /*<< DCB_DCRDR_DBGTMP_Pos*/) /*!< DCB DCRDR: Data temporary buffer Mask */ + +/* DEMCR, Debug Exception and Monitor Control Register Definitions */ +#define DCB_DEMCR_TRCENA_Pos 24U /*!< DCB DEMCR: Trace enable Position */ +#define DCB_DEMCR_TRCENA_Msk (0x1UL << DCB_DEMCR_TRCENA_Pos) /*!< DCB DEMCR: Trace enable Mask */ + +#define DCB_DEMCR_MONPRKEY_Pos 23U /*!< DCB DEMCR: Monitor pend req key Position */ +#define DCB_DEMCR_MONPRKEY_Msk (0x1UL << DCB_DEMCR_MONPRKEY_Pos) /*!< DCB DEMCR: Monitor pend req key Mask */ + +#define DCB_DEMCR_UMON_EN_Pos 21U /*!< DCB DEMCR: Unprivileged monitor enable Position */ +#define DCB_DEMCR_UMON_EN_Msk (0x1UL << DCB_DEMCR_UMON_EN_Pos) /*!< DCB DEMCR: Unprivileged monitor enable Mask */ + +#define DCB_DEMCR_SDME_Pos 20U /*!< DCB DEMCR: Secure DebugMonitor enable Position */ +#define DCB_DEMCR_SDME_Msk (0x1UL << DCB_DEMCR_SDME_Pos) /*!< DCB DEMCR: Secure DebugMonitor enable Mask */ + +#define DCB_DEMCR_MON_REQ_Pos 19U /*!< DCB DEMCR: Monitor request Position */ +#define DCB_DEMCR_MON_REQ_Msk (0x1UL << DCB_DEMCR_MON_REQ_Pos) /*!< DCB DEMCR: Monitor request Mask */ + +#define DCB_DEMCR_MON_STEP_Pos 18U /*!< DCB DEMCR: Monitor step Position */ +#define DCB_DEMCR_MON_STEP_Msk (0x1UL << DCB_DEMCR_MON_STEP_Pos) /*!< DCB DEMCR: Monitor step Mask */ + +#define DCB_DEMCR_MON_PEND_Pos 17U /*!< DCB DEMCR: Monitor pend Position */ +#define DCB_DEMCR_MON_PEND_Msk (0x1UL << DCB_DEMCR_MON_PEND_Pos) /*!< DCB DEMCR: Monitor pend Mask */ + +#define DCB_DEMCR_MON_EN_Pos 16U /*!< DCB DEMCR: Monitor enable Position */ +#define DCB_DEMCR_MON_EN_Msk (0x1UL << DCB_DEMCR_MON_EN_Pos) /*!< DCB DEMCR: Monitor enable Mask */ + +#define DCB_DEMCR_VC_SFERR_Pos 11U /*!< DCB DEMCR: Vector Catch SecureFault Position */ +#define DCB_DEMCR_VC_SFERR_Msk (0x1UL << DCB_DEMCR_VC_SFERR_Pos) /*!< DCB DEMCR: Vector Catch SecureFault Mask */ + +#define DCB_DEMCR_VC_HARDERR_Pos 10U /*!< DCB DEMCR: Vector Catch HardFault errors Position */ +#define DCB_DEMCR_VC_HARDERR_Msk (0x1UL << DCB_DEMCR_VC_HARDERR_Pos) /*!< DCB DEMCR: Vector Catch HardFault errors Mask */ + +#define DCB_DEMCR_VC_INTERR_Pos 9U /*!< DCB DEMCR: Vector Catch interrupt errors Position */ +#define DCB_DEMCR_VC_INTERR_Msk (0x1UL << DCB_DEMCR_VC_INTERR_Pos) /*!< DCB DEMCR: Vector Catch interrupt errors Mask */ + +#define DCB_DEMCR_VC_BUSERR_Pos 8U /*!< DCB DEMCR: Vector Catch BusFault errors Position */ +#define DCB_DEMCR_VC_BUSERR_Msk (0x1UL << DCB_DEMCR_VC_BUSERR_Pos) /*!< DCB DEMCR: Vector Catch BusFault errors Mask */ + +#define DCB_DEMCR_VC_STATERR_Pos 7U /*!< DCB DEMCR: Vector Catch state errors Position */ +#define DCB_DEMCR_VC_STATERR_Msk (0x1UL << DCB_DEMCR_VC_STATERR_Pos) /*!< DCB DEMCR: Vector Catch state errors Mask */ + +#define DCB_DEMCR_VC_CHKERR_Pos 6U /*!< DCB DEMCR: Vector Catch check errors Position */ +#define DCB_DEMCR_VC_CHKERR_Msk (0x1UL << DCB_DEMCR_VC_CHKERR_Pos) /*!< DCB DEMCR: Vector Catch check errors Mask */ + +#define DCB_DEMCR_VC_NOCPERR_Pos 5U /*!< DCB DEMCR: Vector Catch NOCP errors Position */ +#define DCB_DEMCR_VC_NOCPERR_Msk (0x1UL << DCB_DEMCR_VC_NOCPERR_Pos) /*!< DCB DEMCR: Vector Catch NOCP errors Mask */ + +#define DCB_DEMCR_VC_MMERR_Pos 4U /*!< DCB DEMCR: Vector Catch MemManage errors Position */ +#define DCB_DEMCR_VC_MMERR_Msk (0x1UL << DCB_DEMCR_VC_MMERR_Pos) /*!< DCB DEMCR: Vector Catch MemManage errors Mask */ + +#define DCB_DEMCR_VC_CORERESET_Pos 0U /*!< DCB DEMCR: Vector Catch Core reset Position */ +#define DCB_DEMCR_VC_CORERESET_Msk (0x1UL /*<< DCB_DEMCR_VC_CORERESET_Pos*/) /*!< DCB DEMCR: Vector Catch Core reset Mask */ + +/* DAUTHCTRL, Debug Authentication Control Register Definitions */ +#define DCB_DAUTHCTRL_INTSPNIDEN_Pos 3U /*!< DCB DAUTHCTRL: Internal Secure non-invasive debug enable Position */ +#define DCB_DAUTHCTRL_INTSPNIDEN_Msk (0x1UL << DCB_DAUTHCTRL_INTSPNIDEN_Pos) /*!< DCB DAUTHCTRL: Internal Secure non-invasive debug enable Mask */ + +#define DCB_DAUTHCTRL_SPNIDENSEL_Pos 2U /*!< DCB DAUTHCTRL: Secure non-invasive debug enable select Position */ +#define DCB_DAUTHCTRL_SPNIDENSEL_Msk (0x1UL << DCB_DAUTHCTRL_SPNIDENSEL_Pos) /*!< DCB DAUTHCTRL: Secure non-invasive debug enable select Mask */ + +#define DCB_DAUTHCTRL_INTSPIDEN_Pos 1U /*!< DCB DAUTHCTRL: Internal Secure invasive debug enable Position */ +#define DCB_DAUTHCTRL_INTSPIDEN_Msk (0x1UL << DCB_DAUTHCTRL_INTSPIDEN_Pos) /*!< DCB DAUTHCTRL: Internal Secure invasive debug enable Mask */ + +#define DCB_DAUTHCTRL_SPIDENSEL_Pos 0U /*!< DCB DAUTHCTRL: Secure invasive debug enable select Position */ +#define DCB_DAUTHCTRL_SPIDENSEL_Msk (0x1UL /*<< DCB_DAUTHCTRL_SPIDENSEL_Pos*/) /*!< DCB DAUTHCTRL: Secure invasive debug enable select Mask */ + +/* DSCSR, Debug Security Control and Status Register Definitions */ +#define DCB_DSCSR_CDSKEY_Pos 17U /*!< DCB DSCSR: CDS write-enable key Position */ +#define DCB_DSCSR_CDSKEY_Msk (0x1UL << DCB_DSCSR_CDSKEY_Pos) /*!< DCB DSCSR: CDS write-enable key Mask */ + +#define DCB_DSCSR_CDS_Pos 16U /*!< DCB DSCSR: Current domain Secure Position */ +#define DCB_DSCSR_CDS_Msk (0x1UL << DCB_DSCSR_CDS_Pos) /*!< DCB DSCSR: Current domain Secure Mask */ + +#define DCB_DSCSR_SBRSEL_Pos 1U /*!< DCB DSCSR: Secure banked register select Position */ +#define DCB_DSCSR_SBRSEL_Msk (0x1UL << DCB_DSCSR_SBRSEL_Pos) /*!< DCB DSCSR: Secure banked register select Mask */ + +#define DCB_DSCSR_SBRSELEN_Pos 0U /*!< DCB DSCSR: Secure banked register select enable Position */ +#define DCB_DSCSR_SBRSELEN_Msk (0x1UL /*<< DCB_DSCSR_SBRSELEN_Pos*/) /*!< DCB DSCSR: Secure banked register select enable Mask */ + +/*@} end of group CMSIS_DCB */ + + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_DIB Debug Identification Block + \brief Type definitions for the Debug Identification Block Registers + @{ + */ + +/** + \brief Structure type to access the Debug Identification Block Registers (DIB). + */ +typedef struct +{ + __OM uint32_t DLAR; /*!< Offset: 0x000 ( /W) SCS Software Lock Access Register */ + __IM uint32_t DLSR; /*!< Offset: 0x004 (R/ ) SCS Software Lock Status Register */ + __IM uint32_t DAUTHSTATUS; /*!< Offset: 0x008 (R/ ) Debug Authentication Status Register */ + __IM uint32_t DDEVARCH; /*!< Offset: 0x00C (R/ ) SCS Device Architecture Register */ + __IM uint32_t DDEVTYPE; /*!< Offset: 0x010 (R/ ) SCS Device Type Register */ +} DIB_Type; + +/* DLAR, SCS Software Lock Access Register Definitions */ +#define DIB_DLAR_KEY_Pos 0U /*!< DIB DLAR: KEY Position */ +#define DIB_DLAR_KEY_Msk (0xFFFFFFFFUL /*<< DIB_DLAR_KEY_Pos */) /*!< DIB DLAR: KEY Mask */ + +/* DLSR, SCS Software Lock Status Register Definitions */ +#define DIB_DLSR_nTT_Pos 2U /*!< DIB DLSR: Not thirty-two bit Position */ +#define DIB_DLSR_nTT_Msk (0x1UL << DIB_DLSR_nTT_Pos ) /*!< DIB DLSR: Not thirty-two bit Mask */ + +#define DIB_DLSR_SLK_Pos 1U /*!< DIB DLSR: Software Lock status Position */ +#define DIB_DLSR_SLK_Msk (0x1UL << DIB_DLSR_SLK_Pos ) /*!< DIB DLSR: Software Lock status Mask */ + +#define DIB_DLSR_SLI_Pos 0U /*!< DIB DLSR: Software Lock implemented Position */ +#define DIB_DLSR_SLI_Msk (0x1UL /*<< DIB_DLSR_SLI_Pos*/) /*!< DIB DLSR: Software Lock implemented Mask */ + +/* DAUTHSTATUS, Debug Authentication Status Register Definitions */ +#define DIB_DAUTHSTATUS_SNID_Pos 6U /*!< DIB DAUTHSTATUS: Secure Non-invasive Debug Position */ +#define DIB_DAUTHSTATUS_SNID_Msk (0x3UL << DIB_DAUTHSTATUS_SNID_Pos ) /*!< DIB DAUTHSTATUS: Secure Non-invasive Debug Mask */ + +#define DIB_DAUTHSTATUS_SID_Pos 4U /*!< DIB DAUTHSTATUS: Secure Invasive Debug Position */ +#define DIB_DAUTHSTATUS_SID_Msk (0x3UL << DIB_DAUTHSTATUS_SID_Pos ) /*!< DIB DAUTHSTATUS: Secure Invasive Debug Mask */ + +#define DIB_DAUTHSTATUS_NSNID_Pos 2U /*!< DIB DAUTHSTATUS: Non-secure Non-invasive Debug Position */ +#define DIB_DAUTHSTATUS_NSNID_Msk (0x3UL << DIB_DAUTHSTATUS_NSNID_Pos ) /*!< DIB DAUTHSTATUS: Non-secure Non-invasive Debug Mask */ + +#define DIB_DAUTHSTATUS_NSID_Pos 0U /*!< DIB DAUTHSTATUS: Non-secure Invasive Debug Position */ +#define DIB_DAUTHSTATUS_NSID_Msk (0x3UL /*<< DIB_DAUTHSTATUS_NSID_Pos*/) /*!< DIB DAUTHSTATUS: Non-secure Invasive Debug Mask */ + +/* DDEVARCH, SCS Device Architecture Register Definitions */ +#define DIB_DDEVARCH_ARCHITECT_Pos 21U /*!< DIB DDEVARCH: Architect Position */ +#define DIB_DDEVARCH_ARCHITECT_Msk (0x7FFUL << DIB_DDEVARCH_ARCHITECT_Pos ) /*!< DIB DDEVARCH: Architect Mask */ + +#define DIB_DDEVARCH_PRESENT_Pos 20U /*!< DIB DDEVARCH: DEVARCH Present Position */ +#define DIB_DDEVARCH_PRESENT_Msk (0x1FUL << DIB_DDEVARCH_PRESENT_Pos ) /*!< DIB DDEVARCH: DEVARCH Present Mask */ + +#define DIB_DDEVARCH_REVISION_Pos 16U /*!< DIB DDEVARCH: Revision Position */ +#define DIB_DDEVARCH_REVISION_Msk (0xFUL << DIB_DDEVARCH_REVISION_Pos ) /*!< DIB DDEVARCH: Revision Mask */ + +#define DIB_DDEVARCH_ARCHVER_Pos 12U /*!< DIB DDEVARCH: Architecture Version Position */ +#define DIB_DDEVARCH_ARCHVER_Msk (0xFUL << DIB_DDEVARCH_ARCHVER_Pos ) /*!< DIB DDEVARCH: Architecture Version Mask */ + +#define DIB_DDEVARCH_ARCHPART_Pos 0U /*!< DIB DDEVARCH: Architecture Part Position */ +#define DIB_DDEVARCH_ARCHPART_Msk (0xFFFUL /*<< DIB_DDEVARCH_ARCHPART_Pos*/) /*!< DIB DDEVARCH: Architecture Part Mask */ + +/* DDEVTYPE, SCS Device Type Register Definitions */ +#define DIB_DDEVTYPE_SUB_Pos 4U /*!< DIB DDEVTYPE: Sub-type Position */ +#define DIB_DDEVTYPE_SUB_Msk (0xFUL << DIB_DDEVTYPE_SUB_Pos ) /*!< DIB DDEVTYPE: Sub-type Mask */ + +#define DIB_DDEVTYPE_MAJOR_Pos 0U /*!< DIB DDEVTYPE: Major type Position */ +#define DIB_DDEVTYPE_MAJOR_Msk (0xFUL /*<< DIB_DDEVTYPE_MAJOR_Pos*/) /*!< DIB DDEVTYPE: Major type Mask */ + + +/*@} end of group CMSIS_DIB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_bitfield Core register bit field macros + \brief Macros for use with bit field definitions (xxx_Pos, xxx_Msk). + @{ + */ + +/** + \brief Mask and shift a bit field value for use in a register bit range. + \param[in] field Name of the register bit field. + \param[in] value Value of the bit field. This parameter is interpreted as an uint32_t type. + \return Masked and shifted value. +*/ +#define _VAL2FLD(field, value) (((uint32_t)(value) << field ## _Pos) & field ## _Msk) + +/** + \brief Mask and shift a register value to extract a bit filed value. + \param[in] field Name of the register bit field. + \param[in] value Value of register. This parameter is interpreted as an uint32_t type. + \return Masked and shifted bit field value. +*/ +#define _FLD2VAL(field, value) (((uint32_t)(value) & field ## _Msk) >> field ## _Pos) + +/*@} end of group CMSIS_core_bitfield */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_base Core Definitions + \brief Definitions for base addresses, unions, and structures. + @{ + */ + +/* Memory mapping of Core Hardware */ + #define SCS_BASE (0xE000E000UL) /*!< System Control Space Base Address */ + #define ITM_BASE (0xE0000000UL) /*!< ITM Base Address */ + #define DWT_BASE (0xE0001000UL) /*!< DWT Base Address */ + #define TPI_BASE (0xE0040000UL) /*!< TPI Base Address */ + #define CoreDebug_BASE (0xE000EDF0UL) /*!< \deprecated Core Debug Base Address */ + #define DCB_BASE (0xE000EDF0UL) /*!< DCB Base Address */ + #define DIB_BASE (0xE000EFB0UL) /*!< DIB Base Address */ + #define SysTick_BASE (SCS_BASE + 0x0010UL) /*!< SysTick Base Address */ + #define NVIC_BASE (SCS_BASE + 0x0100UL) /*!< NVIC Base Address */ + #define SCB_BASE (SCS_BASE + 0x0D00UL) /*!< System Control Block Base Address */ + + #define SCnSCB ((SCnSCB_Type *) SCS_BASE ) /*!< System control Register not in SCB */ + #define SCB ((SCB_Type *) SCB_BASE ) /*!< SCB configuration struct */ + #define SysTick ((SysTick_Type *) SysTick_BASE ) /*!< SysTick configuration struct */ + #define NVIC ((NVIC_Type *) NVIC_BASE ) /*!< NVIC configuration struct */ + #define ITM ((ITM_Type *) ITM_BASE ) /*!< ITM configuration struct */ + #define DWT ((DWT_Type *) DWT_BASE ) /*!< DWT configuration struct */ + #define TPI ((TPI_Type *) TPI_BASE ) /*!< TPI configuration struct */ + #define CoreDebug ((CoreDebug_Type *) CoreDebug_BASE ) /*!< \deprecated Core Debug configuration struct */ + #define DCB ((DCB_Type *) DCB_BASE ) /*!< DCB configuration struct */ + #define DIB ((DIB_Type *) DIB_BASE ) /*!< DIB configuration struct */ + + #if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + #define MPU_BASE (SCS_BASE + 0x0D90UL) /*!< Memory Protection Unit */ + #define MPU ((MPU_Type *) MPU_BASE ) /*!< Memory Protection Unit */ + #endif + + #if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) + #define SAU_BASE (SCS_BASE + 0x0DD0UL) /*!< Security Attribution Unit */ + #define SAU ((SAU_Type *) SAU_BASE ) /*!< Security Attribution Unit */ + #endif + + #define FPU_BASE (SCS_BASE + 0x0F30UL) /*!< Floating Point Unit */ + #define FPU ((FPU_Type *) FPU_BASE ) /*!< Floating Point Unit */ + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) + #define SCS_BASE_NS (0xE002E000UL) /*!< System Control Space Base Address (non-secure address space) */ + #define CoreDebug_BASE_NS (0xE002EDF0UL) /*!< \deprecated Core Debug Base Address (non-secure address space) */ + #define DCB_BASE_NS (0xE002EDF0UL) /*!< DCB Base Address (non-secure address space) */ + #define DIB_BASE_NS (0xE002EFB0UL) /*!< DIB Base Address (non-secure address space) */ + #define SysTick_BASE_NS (SCS_BASE_NS + 0x0010UL) /*!< SysTick Base Address (non-secure address space) */ + #define NVIC_BASE_NS (SCS_BASE_NS + 0x0100UL) /*!< NVIC Base Address (non-secure address space) */ + #define SCB_BASE_NS (SCS_BASE_NS + 0x0D00UL) /*!< System Control Block Base Address (non-secure address space) */ + + #define SCnSCB_NS ((SCnSCB_Type *) SCS_BASE_NS ) /*!< System control Register not in SCB(non-secure address space) */ + #define SCB_NS ((SCB_Type *) SCB_BASE_NS ) /*!< SCB configuration struct (non-secure address space) */ + #define SysTick_NS ((SysTick_Type *) SysTick_BASE_NS ) /*!< SysTick configuration struct (non-secure address space) */ + #define NVIC_NS ((NVIC_Type *) NVIC_BASE_NS ) /*!< NVIC configuration struct (non-secure address space) */ + #define CoreDebug_NS ((CoreDebug_Type *) CoreDebug_BASE_NS) /*!< \deprecated Core Debug configuration struct (non-secure address space) */ + #define DCB_NS ((DCB_Type *) DCB_BASE_NS ) /*!< DCB configuration struct (non-secure address space) */ + #define DIB_NS ((DIB_Type *) DIB_BASE_NS ) /*!< DIB configuration struct (non-secure address space) */ + + #if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + #define MPU_BASE_NS (SCS_BASE_NS + 0x0D90UL) /*!< Memory Protection Unit (non-secure address space) */ + #define MPU_NS ((MPU_Type *) MPU_BASE_NS ) /*!< Memory Protection Unit (non-secure address space) */ + #endif + + #define FPU_BASE_NS (SCS_BASE_NS + 0x0F30UL) /*!< Floating Point Unit (non-secure address space) */ + #define FPU_NS ((FPU_Type *) FPU_BASE_NS ) /*!< Floating Point Unit (non-secure address space) */ + +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ +/*@} */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_register_aliases Backwards Compatibility Aliases + \brief Register alias definitions for backwards compatibility. + @{ + */ +#define ID_ADR (ID_AFR) /*!< SCB Auxiliary Feature Register */ +/*@} */ + + +/******************************************************************************* + * Hardware Abstraction Layer + Core Function Interface contains: + - Core NVIC Functions + - Core SysTick Functions + - Core Debug Functions + - Core Register Access Functions + ******************************************************************************/ +/** + \defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference +*/ + + + +/* ########################## NVIC functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_NVICFunctions NVIC Functions + \brief Functions that manage interrupts and exceptions via the NVIC. + @{ + */ + +#ifdef CMSIS_NVIC_VIRTUAL + #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE + #define CMSIS_NVIC_VIRTUAL_HEADER_FILE "cmsis_nvic_virtual.h" + #endif + #include CMSIS_NVIC_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetPriorityGrouping __NVIC_SetPriorityGrouping + #define NVIC_GetPriorityGrouping __NVIC_GetPriorityGrouping + #define NVIC_EnableIRQ __NVIC_EnableIRQ + #define NVIC_GetEnableIRQ __NVIC_GetEnableIRQ + #define NVIC_DisableIRQ __NVIC_DisableIRQ + #define NVIC_GetPendingIRQ __NVIC_GetPendingIRQ + #define NVIC_SetPendingIRQ __NVIC_SetPendingIRQ + #define NVIC_ClearPendingIRQ __NVIC_ClearPendingIRQ + #define NVIC_GetActive __NVIC_GetActive + #define NVIC_SetPriority __NVIC_SetPriority + #define NVIC_GetPriority __NVIC_GetPriority + #define NVIC_SystemReset __NVIC_SystemReset +#endif /* CMSIS_NVIC_VIRTUAL */ + +#ifdef CMSIS_VECTAB_VIRTUAL + #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE + #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE "cmsis_vectab_virtual.h" + #endif + #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetVector __NVIC_SetVector + #define NVIC_GetVector __NVIC_GetVector +#endif /* (CMSIS_VECTAB_VIRTUAL) */ + +#define NVIC_USER_IRQ_OFFSET 16 + + +/* Special LR values for Secure/Non-Secure call handling and exception handling */ + +/* Function Return Payload (from ARMv8-M Architecture Reference Manual) LR value on entry from Secure BLXNS */ +#define FNC_RETURN (0xFEFFFFFFUL) /* bit [0] ignored when processing a branch */ + +/* The following EXC_RETURN mask values are used to evaluate the LR on exception entry */ +#define EXC_RETURN_PREFIX (0xFF000000UL) /* bits [31:24] set to indicate an EXC_RETURN value */ +#define EXC_RETURN_S (0x00000040UL) /* bit [6] stack used to push registers: 0=Non-secure 1=Secure */ +#define EXC_RETURN_DCRS (0x00000020UL) /* bit [5] stacking rules for called registers: 0=skipped 1=saved */ +#define EXC_RETURN_FTYPE (0x00000010UL) /* bit [4] allocate stack for floating-point context: 0=done 1=skipped */ +#define EXC_RETURN_MODE (0x00000008UL) /* bit [3] processor mode for return: 0=Handler mode 1=Thread mode */ +#define EXC_RETURN_SPSEL (0x00000004UL) /* bit [2] stack pointer used to restore context: 0=MSP 1=PSP */ +#define EXC_RETURN_ES (0x00000001UL) /* bit [0] security state exception was taken to: 0=Non-secure 1=Secure */ + +/* Integrity Signature (from ARMv8-M Architecture Reference Manual) for exception context stacking */ +#if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) /* Value for processors with floating-point extension: */ +#define EXC_INTEGRITY_SIGNATURE (0xFEFA125AUL) /* bit [0] SFTC must match LR bit[4] EXC_RETURN_FTYPE */ +#else +#define EXC_INTEGRITY_SIGNATURE (0xFEFA125BUL) /* Value for processors without floating-point extension */ +#endif + + +/** + \brief Set Priority Grouping + \details Sets the priority grouping field using the required unlock sequence. + The parameter PriorityGroup is assigned to the field SCB->AIRCR [10:8] PRIGROUP field. + Only values from 0..7 are used. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Priority grouping field. + */ +__STATIC_INLINE void __NVIC_SetPriorityGrouping(uint32_t PriorityGroup) +{ + uint32_t reg_value; + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + + reg_value = SCB->AIRCR; /* read old register configuration */ + reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change */ + reg_value = (reg_value | + ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (PriorityGroupTmp << SCB_AIRCR_PRIGROUP_Pos) ); /* Insert write key and priority group */ + SCB->AIRCR = reg_value; +} + + +/** + \brief Get Priority Grouping + \details Reads the priority grouping field from the NVIC Interrupt Controller. + \return Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field). + */ +__STATIC_INLINE uint32_t __NVIC_GetPriorityGrouping(void) +{ + return ((uint32_t)((SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos)); +} + + +/** + \brief Enable Interrupt + \details Enables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + __COMPILER_BARRIER(); + NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __COMPILER_BARRIER(); + } +} + + +/** + \brief Get Interrupt Enable status + \details Returns a device specific interrupt enable status from the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt is not enabled. + \return 1 Interrupt is enabled. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Disable Interrupt + \details Disables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_DisableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __DSB(); + __ISB(); + } +} + + +/** + \brief Get Pending Interrupt + \details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not pending. + \return 1 Interrupt status is pending. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Pending Interrupt + \details Sets the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Clear Pending Interrupt + \details Clears the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Active Interrupt + \details Reads the active register in the NVIC and returns the active bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not active. + \return 1 Interrupt status is active. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetActive(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief Get Interrupt Target State + \details Reads the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 if interrupt is assigned to Secure + \return 1 if interrupt is assigned to Non Secure + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t NVIC_GetTargetState(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Interrupt Target State + \details Sets the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 if interrupt is assigned to Secure + 1 if interrupt is assigned to Non Secure + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t NVIC_SetTargetState(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] |= ((uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL))); + return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Clear Interrupt Target State + \details Clears the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 if interrupt is assigned to Secure + 1 if interrupt is assigned to Non Secure + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t NVIC_ClearTargetState(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] &= ~((uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL))); + return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + + +/** + \brief Set Interrupt Priority + \details Sets the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \param [in] priority Priority to set. + \note The priority cannot be set for every processor exception. + */ +__STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->IPR[((uint32_t)IRQn)] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } + else + { + SCB->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } +} + + +/** + \brief Get Interrupt Priority + \details Reads the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Interrupt Priority. + Value is aligned automatically to the implemented priority bits of the microcontroller. + */ +__STATIC_INLINE uint32_t __NVIC_GetPriority(IRQn_Type IRQn) +{ + + if ((int32_t)(IRQn) >= 0) + { + return(((uint32_t)NVIC->IPR[((uint32_t)IRQn)] >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return(((uint32_t)SCB->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] >> (8U - __NVIC_PRIO_BITS))); + } +} + + +/** + \brief Encode Priority + \details Encodes the priority for an interrupt with the given priority group, + preemptive priority value, and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Used priority group. + \param [in] PreemptPriority Preemptive priority value (starting from 0). + \param [in] SubPriority Subpriority value (starting from 0). + \return Encoded priority. Value can be used in the function \ref NVIC_SetPriority(). + */ +__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + return ( + ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) | + ((SubPriority & (uint32_t)((1UL << (SubPriorityBits )) - 1UL))) + ); +} + + +/** + \brief Decode Priority + \details Decodes an interrupt priority value with a given priority group to + preemptive priority value and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set. + \param [in] Priority Priority value, which can be retrieved with the function \ref NVIC_GetPriority(). + \param [in] PriorityGroup Used priority group. + \param [out] pPreemptPriority Preemptive priority value (starting from 0). + \param [out] pSubPriority Subpriority value (starting from 0). + */ +__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* const pPreemptPriority, uint32_t* const pSubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + *pPreemptPriority = (Priority >> SubPriorityBits) & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL); + *pSubPriority = (Priority ) & (uint32_t)((1UL << (SubPriorityBits )) - 1UL); +} + + +/** + \brief Set Interrupt Vector + \details Sets an interrupt vector in SRAM based interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + VTOR must been relocated to SRAM before. + \param [in] IRQn Interrupt number + \param [in] vector Address of interrupt handler function + */ +__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector) +{ + uint32_t *vectors = (uint32_t *)SCB->VTOR; + vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET] = vector; + __DSB(); +} + + +/** + \brief Get Interrupt Vector + \details Reads an interrupt vector from interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Address of interrupt handler function + */ +__STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn) +{ + uint32_t *vectors = (uint32_t *)SCB->VTOR; + return vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET]; +} + + +/** + \brief System Reset + \details Initiates a system reset request to reset the MCU. + */ +__NO_RETURN __STATIC_INLINE void __NVIC_SystemReset(void) +{ + __DSB(); /* Ensure all outstanding memory accesses included + buffered write are completed before reset */ + SCB->AIRCR = (uint32_t)((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) | + SCB_AIRCR_SYSRESETREQ_Msk ); /* Keep priority group unchanged */ + __DSB(); /* Ensure completion of memory access */ + + for(;;) /* wait until reset */ + { + __NOP(); + } +} + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief Set Priority Grouping (non-secure) + \details Sets the non-secure priority grouping field when in secure state using the required unlock sequence. + The parameter PriorityGroup is assigned to the field SCB->AIRCR [10:8] PRIGROUP field. + Only values from 0..7 are used. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Priority grouping field. + */ +__STATIC_INLINE void TZ_NVIC_SetPriorityGrouping_NS(uint32_t PriorityGroup) +{ + uint32_t reg_value; + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + + reg_value = SCB_NS->AIRCR; /* read old register configuration */ + reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change */ + reg_value = (reg_value | + ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (PriorityGroupTmp << SCB_AIRCR_PRIGROUP_Pos) ); /* Insert write key and priority group */ + SCB_NS->AIRCR = reg_value; +} + + +/** + \brief Get Priority Grouping (non-secure) + \details Reads the priority grouping field from the non-secure NVIC when in secure state. + \return Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field). + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetPriorityGrouping_NS(void) +{ + return ((uint32_t)((SCB_NS->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos)); +} + + +/** + \brief Enable Interrupt (non-secure) + \details Enables a device specific interrupt in the non-secure NVIC interrupt controller when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_EnableIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Interrupt Enable status (non-secure) + \details Returns a device specific interrupt enable status from the non-secure NVIC interrupt controller when in secure state. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt is not enabled. + \return 1 Interrupt is enabled. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetEnableIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Disable Interrupt (non-secure) + \details Disables a device specific interrupt in the non-secure NVIC interrupt controller when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_DisableIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Pending Interrupt (non-secure) + \details Reads the NVIC pending register in the non-secure NVIC when in secure state and returns the pending bit for the specified device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not pending. + \return 1 Interrupt status is pending. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetPendingIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Pending Interrupt (non-secure) + \details Sets the pending bit of a device specific interrupt in the non-secure NVIC pending register when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_SetPendingIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Clear Pending Interrupt (non-secure) + \details Clears the pending bit of a device specific interrupt in the non-secure NVIC pending register when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_ClearPendingIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Active Interrupt (non-secure) + \details Reads the active register in non-secure NVIC when in secure state and returns the active bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not active. + \return 1 Interrupt status is active. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetActive_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Interrupt Priority (non-secure) + \details Sets the priority of a non-secure device specific interrupt or a non-secure processor exception when in secure state. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \param [in] priority Priority to set. + \note The priority cannot be set for every non-secure processor exception. + */ +__STATIC_INLINE void TZ_NVIC_SetPriority_NS(IRQn_Type IRQn, uint32_t priority) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->IPR[((uint32_t)IRQn)] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } + else + { + SCB_NS->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } +} + + +/** + \brief Get Interrupt Priority (non-secure) + \details Reads the priority of a non-secure device specific interrupt or a non-secure processor exception when in secure state. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Interrupt Priority. Value is aligned automatically to the implemented priority bits of the microcontroller. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetPriority_NS(IRQn_Type IRQn) +{ + + if ((int32_t)(IRQn) >= 0) + { + return(((uint32_t)NVIC_NS->IPR[((uint32_t)IRQn)] >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return(((uint32_t)SCB_NS->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] >> (8U - __NVIC_PRIO_BITS))); + } +} +#endif /* defined (__ARM_FEATURE_CMSE) &&(__ARM_FEATURE_CMSE == 3U) */ + +/*@} end of CMSIS_Core_NVICFunctions */ + +/* ########################## MPU functions #################################### */ + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + +#include "mpu_armv8.h" + +#endif + +/* ########################## FPU functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_FpuFunctions FPU Functions + \brief Function that provides FPU type. + @{ + */ + +/** + \brief get FPU type + \details returns the FPU type + \returns + - \b 0: No FPU + - \b 1: Single precision FPU + - \b 2: Double + Single precision FPU + */ +__STATIC_INLINE uint32_t SCB_GetFPUType(void) +{ + uint32_t mvfr0; + + mvfr0 = FPU->MVFR0; + if ((mvfr0 & (FPU_MVFR0_Single_precision_Msk | FPU_MVFR0_Double_precision_Msk)) == 0x220U) + { + return 2U; /* Double + Single precision FPU */ + } + else if ((mvfr0 & (FPU_MVFR0_Single_precision_Msk | FPU_MVFR0_Double_precision_Msk)) == 0x020U) + { + return 1U; /* Single precision FPU */ + } + else + { + return 0U; /* No FPU */ + } +} + + +/*@} end of CMSIS_Core_FpuFunctions */ + + +/* ########################## Cache functions #################################### */ + +#if ((defined (__ICACHE_PRESENT) && (__ICACHE_PRESENT == 1U)) || \ + (defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U))) +#include "cachel1_armv7.h" +#endif + + +/* ########################## SAU functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SAUFunctions SAU Functions + \brief Functions that configure the SAU. + @{ + */ + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) + +/** + \brief Enable SAU + \details Enables the Security Attribution Unit (SAU). + */ +__STATIC_INLINE void TZ_SAU_Enable(void) +{ + SAU->CTRL |= (SAU_CTRL_ENABLE_Msk); +} + + + +/** + \brief Disable SAU + \details Disables the Security Attribution Unit (SAU). + */ +__STATIC_INLINE void TZ_SAU_Disable(void) +{ + SAU->CTRL &= ~(SAU_CTRL_ENABLE_Msk); +} + +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + +/*@} end of CMSIS_Core_SAUFunctions */ + + + + +/* ################################## Debug Control function ############################################ */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_DCBFunctions Debug Control Functions + \brief Functions that access the Debug Control Block. + @{ + */ + + +/** + \brief Set Debug Authentication Control Register + \details writes to Debug Authentication Control register. + \param [in] value value to be writen. + */ +__STATIC_INLINE void DCB_SetAuthCtrl(uint32_t value) +{ + __DSB(); + __ISB(); + DCB->DAUTHCTRL = value; + __DSB(); + __ISB(); +} + + +/** + \brief Get Debug Authentication Control Register + \details Reads Debug Authentication Control register. + \return Debug Authentication Control Register. + */ +__STATIC_INLINE uint32_t DCB_GetAuthCtrl(void) +{ + return (DCB->DAUTHCTRL); +} + + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief Set Debug Authentication Control Register (non-secure) + \details writes to non-secure Debug Authentication Control register when in secure state. + \param [in] value value to be writen + */ +__STATIC_INLINE void TZ_DCB_SetAuthCtrl_NS(uint32_t value) +{ + __DSB(); + __ISB(); + DCB_NS->DAUTHCTRL = value; + __DSB(); + __ISB(); +} + + +/** + \brief Get Debug Authentication Control Register (non-secure) + \details Reads non-secure Debug Authentication Control register when in secure state. + \return Debug Authentication Control Register. + */ +__STATIC_INLINE uint32_t TZ_DCB_GetAuthCtrl_NS(void) +{ + return (DCB_NS->DAUTHCTRL); +} +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + +/*@} end of CMSIS_Core_DCBFunctions */ + + + + +/* ################################## Debug Identification function ############################################ */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_DIBFunctions Debug Identification Functions + \brief Functions that access the Debug Identification Block. + @{ + */ + + +/** + \brief Get Debug Authentication Status Register + \details Reads Debug Authentication Status register. + \return Debug Authentication Status Register. + */ +__STATIC_INLINE uint32_t DIB_GetAuthStatus(void) +{ + return (DIB->DAUTHSTATUS); +} + + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief Get Debug Authentication Status Register (non-secure) + \details Reads non-secure Debug Authentication Status register when in secure state. + \return Debug Authentication Status Register. + */ +__STATIC_INLINE uint32_t TZ_DIB_GetAuthStatus_NS(void) +{ + return (DIB_NS->DAUTHSTATUS); +} +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + +/*@} end of CMSIS_Core_DCBFunctions */ + + + + +/* ################################## SysTick function ############################################ */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SysTickFunctions SysTick Functions + \brief Functions that configure the System. + @{ + */ + +#if defined (__Vendor_SysTickConfig) && (__Vendor_SysTickConfig == 0U) + +/** + \brief System Tick Configuration + \details Initializes the System Timer and its interrupt, and starts the System Tick Timer. + Counter is in free running mode to generate periodic interrupts. + \param [in] ticks Number of ticks between two interrupts. + \return 0 Function succeeded. + \return 1 Function failed. + \note When the variable __Vendor_SysTickConfig is set to 1, then the + function SysTick_Config is not included. In this case, the file device.h + must contain a vendor-specific implementation of this function. + */ +__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks) +{ + if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) + { + return (1UL); /* Reload value impossible */ + } + + SysTick->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ + NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ + SysTick->VAL = 0UL; /* Load the SysTick Counter Value */ + SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0UL); /* Function successful */ +} + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief System Tick Configuration (non-secure) + \details Initializes the non-secure System Timer and its interrupt when in secure state, and starts the System Tick Timer. + Counter is in free running mode to generate periodic interrupts. + \param [in] ticks Number of ticks between two interrupts. + \return 0 Function succeeded. + \return 1 Function failed. + \note When the variable __Vendor_SysTickConfig is set to 1, then the + function TZ_SysTick_Config_NS is not included. In this case, the file device.h + must contain a vendor-specific implementation of this function. + + */ +__STATIC_INLINE uint32_t TZ_SysTick_Config_NS(uint32_t ticks) +{ + if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) + { + return (1UL); /* Reload value impossible */ + } + + SysTick_NS->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ + TZ_NVIC_SetPriority_NS (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ + SysTick_NS->VAL = 0UL; /* Load the SysTick Counter Value */ + SysTick_NS->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0UL); /* Function successful */ +} +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + +#endif + +/*@} end of CMSIS_Core_SysTickFunctions */ + + + +/* ##################################### Debug In/Output function ########################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_core_DebugFunctions ITM Functions + \brief Functions that access the ITM debug interface. + @{ + */ + +extern volatile int32_t ITM_RxBuffer; /*!< External variable to receive characters. */ +#define ITM_RXBUFFER_EMPTY ((int32_t)0x5AA55AA5U) /*!< Value identifying \ref ITM_RxBuffer is ready for next character. */ + + +/** + \brief ITM Send Character + \details Transmits a character via the ITM channel 0, and + \li Just returns when no debugger is connected that has booked the output. + \li Is blocking when a debugger is connected, but the previous character sent has not been transmitted. + \param [in] ch Character to transmit. + \returns Character to transmit. + */ +__STATIC_INLINE uint32_t ITM_SendChar (uint32_t ch) +{ + if (((ITM->TCR & ITM_TCR_ITMENA_Msk) != 0UL) && /* ITM enabled */ + ((ITM->TER & 1UL ) != 0UL) ) /* ITM Port #0 enabled */ + { + while (ITM->PORT[0U].u32 == 0UL) + { + __NOP(); + } + ITM->PORT[0U].u8 = (uint8_t)ch; + } + return (ch); +} + + +/** + \brief ITM Receive Character + \details Inputs a character via the external variable \ref ITM_RxBuffer. + \return Received character. + \return -1 No character pending. + */ +__STATIC_INLINE int32_t ITM_ReceiveChar (void) +{ + int32_t ch = -1; /* no character available */ + + if (ITM_RxBuffer != ITM_RXBUFFER_EMPTY) + { + ch = ITM_RxBuffer; + ITM_RxBuffer = ITM_RXBUFFER_EMPTY; /* ready for next character */ + } + + return (ch); +} + + +/** + \brief ITM Check Character + \details Checks whether a character is pending for reading in the variable \ref ITM_RxBuffer. + \return 0 No character available. + \return 1 Character available. + */ +__STATIC_INLINE int32_t ITM_CheckChar (void) +{ + + if (ITM_RxBuffer == ITM_RXBUFFER_EMPTY) + { + return (0); /* no character available */ + } + else + { + return (1); /* character available */ + } +} + +/*@} end of CMSIS_core_DebugFunctions */ + + + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_ARMV8MML_H_DEPENDANT */ + +#endif /* __CMSIS_GENERIC */ diff --git a/bsp/renesas/ra8m1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm0.h b/bsp/renesas/ra8m1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm0.h new file mode 100644 index 000000000000..6441ff34190a --- /dev/null +++ b/bsp/renesas/ra8m1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm0.h @@ -0,0 +1,952 @@ +/**************************************************************************//** + * @file core_cm0.h + * @brief CMSIS Cortex-M0 Core Peripheral Access Layer Header File + * @version V5.0.8 + * @date 21. August 2019 + ******************************************************************************/ +/* + * Copyright (c) 2009-2019 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#elif defined (__clang__) + #pragma clang system_header /* treat file as system include file */ +#endif + +#ifndef __CORE_CM0_H_GENERIC +#define __CORE_CM0_H_GENERIC + +#include + +#ifdef __cplusplus + extern "C" { +#endif + +/** + \page CMSIS_MISRA_Exceptions MISRA-C:2004 Compliance Exceptions + CMSIS violates the following MISRA-C:2004 rules: + + \li Required Rule 8.5, object/function definition in header file.
+ Function definitions in header files are used to allow 'inlining'. + + \li Required Rule 18.4, declaration of union type or object of union type: '{...}'.
+ Unions are used for effective representation of core registers. + + \li Advisory Rule 19.7, Function-like macro defined.
+ Function-like macros are used to allow more efficient code. + */ + + +/******************************************************************************* + * CMSIS definitions + ******************************************************************************/ +/** + \ingroup Cortex_M0 + @{ + */ + +#include "cmsis_version.h" + +/* CMSIS CM0 definitions */ +#define __CM0_CMSIS_VERSION_MAIN (__CM_CMSIS_VERSION_MAIN) /*!< \deprecated [31:16] CMSIS HAL main version */ +#define __CM0_CMSIS_VERSION_SUB (__CM_CMSIS_VERSION_SUB) /*!< \deprecated [15:0] CMSIS HAL sub version */ +#define __CM0_CMSIS_VERSION ((__CM0_CMSIS_VERSION_MAIN << 16U) | \ + __CM0_CMSIS_VERSION_SUB ) /*!< \deprecated CMSIS HAL version number */ + +#define __CORTEX_M (0U) /*!< Cortex-M Core */ + +/** __FPU_USED indicates whether an FPU is used or not. + This core does not support an FPU at all +*/ +#define __FPU_USED 0U + +#if defined ( __CC_ARM ) + #if defined __TARGET_FPU_VFP + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) + #if defined __ARM_FP + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __GNUC__ ) + #if defined (__VFP_FP__) && !defined(__SOFTFP__) + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __ICCARM__ ) + #if defined __ARMVFP__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __TI_ARM__ ) + #if defined __TI_VFP_SUPPORT__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __TASKING__ ) + #if defined __FPU_VFP__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __CSMC__ ) + #if ( __CSMC__ & 0x400U) + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#endif + +#include "cmsis_compiler.h" /* CMSIS compiler specific defines */ + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_CM0_H_GENERIC */ + +#ifndef __CMSIS_GENERIC + +#ifndef __CORE_CM0_H_DEPENDANT +#define __CORE_CM0_H_DEPENDANT + +#ifdef __cplusplus + extern "C" { +#endif + +/* check device defines and use defaults */ +#if defined __CHECK_DEVICE_DEFINES + #ifndef __CM0_REV + #define __CM0_REV 0x0000U + #warning "__CM0_REV not defined in device header file; using default!" + #endif + + #ifndef __NVIC_PRIO_BITS + #define __NVIC_PRIO_BITS 2U + #warning "__NVIC_PRIO_BITS not defined in device header file; using default!" + #endif + + #ifndef __Vendor_SysTickConfig + #define __Vendor_SysTickConfig 0U + #warning "__Vendor_SysTickConfig not defined in device header file; using default!" + #endif +#endif + +/* IO definitions (access restrictions to peripheral registers) */ +/** + \defgroup CMSIS_glob_defs CMSIS Global Defines + + IO Type Qualifiers are used + \li to specify the access to peripheral variables. + \li for automatic generation of peripheral register debug information. +*/ +#ifdef __cplusplus + #define __I volatile /*!< Defines 'read only' permissions */ +#else + #define __I volatile const /*!< Defines 'read only' permissions */ +#endif +#define __O volatile /*!< Defines 'write only' permissions */ +#define __IO volatile /*!< Defines 'read / write' permissions */ + +/* following defines should be used for structure members */ +#define __IM volatile const /*! Defines 'read only' structure member permissions */ +#define __OM volatile /*! Defines 'write only' structure member permissions */ +#define __IOM volatile /*! Defines 'read / write' structure member permissions */ + +/*@} end of group Cortex_M0 */ + + + +/******************************************************************************* + * Register Abstraction + Core Register contain: + - Core Register + - Core NVIC Register + - Core SCB Register + - Core SysTick Register + ******************************************************************************/ +/** + \defgroup CMSIS_core_register Defines and Type Definitions + \brief Type definitions and defines for Cortex-M processor based devices. +*/ + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CORE Status and Control Registers + \brief Core Register type definitions. + @{ + */ + +/** + \brief Union type to access the Application Program Status Register (APSR). + */ +typedef union +{ + struct + { + uint32_t _reserved0:28; /*!< bit: 0..27 Reserved */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} APSR_Type; + +/* APSR Register Definitions */ +#define APSR_N_Pos 31U /*!< APSR: N Position */ +#define APSR_N_Msk (1UL << APSR_N_Pos) /*!< APSR: N Mask */ + +#define APSR_Z_Pos 30U /*!< APSR: Z Position */ +#define APSR_Z_Msk (1UL << APSR_Z_Pos) /*!< APSR: Z Mask */ + +#define APSR_C_Pos 29U /*!< APSR: C Position */ +#define APSR_C_Msk (1UL << APSR_C_Pos) /*!< APSR: C Mask */ + +#define APSR_V_Pos 28U /*!< APSR: V Position */ +#define APSR_V_Msk (1UL << APSR_V_Pos) /*!< APSR: V Mask */ + + +/** + \brief Union type to access the Interrupt Program Status Register (IPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:23; /*!< bit: 9..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} IPSR_Type; + +/* IPSR Register Definitions */ +#define IPSR_ISR_Pos 0U /*!< IPSR: ISR Position */ +#define IPSR_ISR_Msk (0x1FFUL /*<< IPSR_ISR_Pos*/) /*!< IPSR: ISR Mask */ + + +/** + \brief Union type to access the Special-Purpose Program Status Registers (xPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:15; /*!< bit: 9..23 Reserved */ + uint32_t T:1; /*!< bit: 24 Thumb bit (read 0) */ + uint32_t _reserved1:3; /*!< bit: 25..27 Reserved */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} xPSR_Type; + +/* xPSR Register Definitions */ +#define xPSR_N_Pos 31U /*!< xPSR: N Position */ +#define xPSR_N_Msk (1UL << xPSR_N_Pos) /*!< xPSR: N Mask */ + +#define xPSR_Z_Pos 30U /*!< xPSR: Z Position */ +#define xPSR_Z_Msk (1UL << xPSR_Z_Pos) /*!< xPSR: Z Mask */ + +#define xPSR_C_Pos 29U /*!< xPSR: C Position */ +#define xPSR_C_Msk (1UL << xPSR_C_Pos) /*!< xPSR: C Mask */ + +#define xPSR_V_Pos 28U /*!< xPSR: V Position */ +#define xPSR_V_Msk (1UL << xPSR_V_Pos) /*!< xPSR: V Mask */ + +#define xPSR_T_Pos 24U /*!< xPSR: T Position */ +#define xPSR_T_Msk (1UL << xPSR_T_Pos) /*!< xPSR: T Mask */ + +#define xPSR_ISR_Pos 0U /*!< xPSR: ISR Position */ +#define xPSR_ISR_Msk (0x1FFUL /*<< xPSR_ISR_Pos*/) /*!< xPSR: ISR Mask */ + + +/** + \brief Union type to access the Control Registers (CONTROL). + */ +typedef union +{ + struct + { + uint32_t _reserved0:1; /*!< bit: 0 Reserved */ + uint32_t SPSEL:1; /*!< bit: 1 Stack to be used */ + uint32_t _reserved1:30; /*!< bit: 2..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} CONTROL_Type; + +/* CONTROL Register Definitions */ +#define CONTROL_SPSEL_Pos 1U /*!< CONTROL: SPSEL Position */ +#define CONTROL_SPSEL_Msk (1UL << CONTROL_SPSEL_Pos) /*!< CONTROL: SPSEL Mask */ + +/*@} end of group CMSIS_CORE */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_NVIC Nested Vectored Interrupt Controller (NVIC) + \brief Type definitions for the NVIC Registers + @{ + */ + +/** + \brief Structure type to access the Nested Vectored Interrupt Controller (NVIC). + */ +typedef struct +{ + __IOM uint32_t ISER[1U]; /*!< Offset: 0x000 (R/W) Interrupt Set Enable Register */ + uint32_t RESERVED0[31U]; + __IOM uint32_t ICER[1U]; /*!< Offset: 0x080 (R/W) Interrupt Clear Enable Register */ + uint32_t RESERVED1[31U]; + __IOM uint32_t ISPR[1U]; /*!< Offset: 0x100 (R/W) Interrupt Set Pending Register */ + uint32_t RESERVED2[31U]; + __IOM uint32_t ICPR[1U]; /*!< Offset: 0x180 (R/W) Interrupt Clear Pending Register */ + uint32_t RESERVED3[31U]; + uint32_t RESERVED4[64U]; + __IOM uint32_t IP[8U]; /*!< Offset: 0x300 (R/W) Interrupt Priority Register */ +} NVIC_Type; + +/*@} end of group CMSIS_NVIC */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SCB System Control Block (SCB) + \brief Type definitions for the System Control Block Registers + @{ + */ + +/** + \brief Structure type to access the System Control Block (SCB). + */ +typedef struct +{ + __IM uint32_t CPUID; /*!< Offset: 0x000 (R/ ) CPUID Base Register */ + __IOM uint32_t ICSR; /*!< Offset: 0x004 (R/W) Interrupt Control and State Register */ + uint32_t RESERVED0; + __IOM uint32_t AIRCR; /*!< Offset: 0x00C (R/W) Application Interrupt and Reset Control Register */ + __IOM uint32_t SCR; /*!< Offset: 0x010 (R/W) System Control Register */ + __IOM uint32_t CCR; /*!< Offset: 0x014 (R/W) Configuration Control Register */ + uint32_t RESERVED1; + __IOM uint32_t SHP[2U]; /*!< Offset: 0x01C (R/W) System Handlers Priority Registers. [0] is RESERVED */ + __IOM uint32_t SHCSR; /*!< Offset: 0x024 (R/W) System Handler Control and State Register */ +} SCB_Type; + +/* SCB CPUID Register Definitions */ +#define SCB_CPUID_IMPLEMENTER_Pos 24U /*!< SCB CPUID: IMPLEMENTER Position */ +#define SCB_CPUID_IMPLEMENTER_Msk (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos) /*!< SCB CPUID: IMPLEMENTER Mask */ + +#define SCB_CPUID_VARIANT_Pos 20U /*!< SCB CPUID: VARIANT Position */ +#define SCB_CPUID_VARIANT_Msk (0xFUL << SCB_CPUID_VARIANT_Pos) /*!< SCB CPUID: VARIANT Mask */ + +#define SCB_CPUID_ARCHITECTURE_Pos 16U /*!< SCB CPUID: ARCHITECTURE Position */ +#define SCB_CPUID_ARCHITECTURE_Msk (0xFUL << SCB_CPUID_ARCHITECTURE_Pos) /*!< SCB CPUID: ARCHITECTURE Mask */ + +#define SCB_CPUID_PARTNO_Pos 4U /*!< SCB CPUID: PARTNO Position */ +#define SCB_CPUID_PARTNO_Msk (0xFFFUL << SCB_CPUID_PARTNO_Pos) /*!< SCB CPUID: PARTNO Mask */ + +#define SCB_CPUID_REVISION_Pos 0U /*!< SCB CPUID: REVISION Position */ +#define SCB_CPUID_REVISION_Msk (0xFUL /*<< SCB_CPUID_REVISION_Pos*/) /*!< SCB CPUID: REVISION Mask */ + +/* SCB Interrupt Control State Register Definitions */ +#define SCB_ICSR_NMIPENDSET_Pos 31U /*!< SCB ICSR: NMIPENDSET Position */ +#define SCB_ICSR_NMIPENDSET_Msk (1UL << SCB_ICSR_NMIPENDSET_Pos) /*!< SCB ICSR: NMIPENDSET Mask */ + +#define SCB_ICSR_PENDSVSET_Pos 28U /*!< SCB ICSR: PENDSVSET Position */ +#define SCB_ICSR_PENDSVSET_Msk (1UL << SCB_ICSR_PENDSVSET_Pos) /*!< SCB ICSR: PENDSVSET Mask */ + +#define SCB_ICSR_PENDSVCLR_Pos 27U /*!< SCB ICSR: PENDSVCLR Position */ +#define SCB_ICSR_PENDSVCLR_Msk (1UL << SCB_ICSR_PENDSVCLR_Pos) /*!< SCB ICSR: PENDSVCLR Mask */ + +#define SCB_ICSR_PENDSTSET_Pos 26U /*!< SCB ICSR: PENDSTSET Position */ +#define SCB_ICSR_PENDSTSET_Msk (1UL << SCB_ICSR_PENDSTSET_Pos) /*!< SCB ICSR: PENDSTSET Mask */ + +#define SCB_ICSR_PENDSTCLR_Pos 25U /*!< SCB ICSR: PENDSTCLR Position */ +#define SCB_ICSR_PENDSTCLR_Msk (1UL << SCB_ICSR_PENDSTCLR_Pos) /*!< SCB ICSR: PENDSTCLR Mask */ + +#define SCB_ICSR_ISRPREEMPT_Pos 23U /*!< SCB ICSR: ISRPREEMPT Position */ +#define SCB_ICSR_ISRPREEMPT_Msk (1UL << SCB_ICSR_ISRPREEMPT_Pos) /*!< SCB ICSR: ISRPREEMPT Mask */ + +#define SCB_ICSR_ISRPENDING_Pos 22U /*!< SCB ICSR: ISRPENDING Position */ +#define SCB_ICSR_ISRPENDING_Msk (1UL << SCB_ICSR_ISRPENDING_Pos) /*!< SCB ICSR: ISRPENDING Mask */ + +#define SCB_ICSR_VECTPENDING_Pos 12U /*!< SCB ICSR: VECTPENDING Position */ +#define SCB_ICSR_VECTPENDING_Msk (0x1FFUL << SCB_ICSR_VECTPENDING_Pos) /*!< SCB ICSR: VECTPENDING Mask */ + +#define SCB_ICSR_VECTACTIVE_Pos 0U /*!< SCB ICSR: VECTACTIVE Position */ +#define SCB_ICSR_VECTACTIVE_Msk (0x1FFUL /*<< SCB_ICSR_VECTACTIVE_Pos*/) /*!< SCB ICSR: VECTACTIVE Mask */ + +/* SCB Application Interrupt and Reset Control Register Definitions */ +#define SCB_AIRCR_VECTKEY_Pos 16U /*!< SCB AIRCR: VECTKEY Position */ +#define SCB_AIRCR_VECTKEY_Msk (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos) /*!< SCB AIRCR: VECTKEY Mask */ + +#define SCB_AIRCR_VECTKEYSTAT_Pos 16U /*!< SCB AIRCR: VECTKEYSTAT Position */ +#define SCB_AIRCR_VECTKEYSTAT_Msk (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos) /*!< SCB AIRCR: VECTKEYSTAT Mask */ + +#define SCB_AIRCR_ENDIANESS_Pos 15U /*!< SCB AIRCR: ENDIANESS Position */ +#define SCB_AIRCR_ENDIANESS_Msk (1UL << SCB_AIRCR_ENDIANESS_Pos) /*!< SCB AIRCR: ENDIANESS Mask */ + +#define SCB_AIRCR_SYSRESETREQ_Pos 2U /*!< SCB AIRCR: SYSRESETREQ Position */ +#define SCB_AIRCR_SYSRESETREQ_Msk (1UL << SCB_AIRCR_SYSRESETREQ_Pos) /*!< SCB AIRCR: SYSRESETREQ Mask */ + +#define SCB_AIRCR_VECTCLRACTIVE_Pos 1U /*!< SCB AIRCR: VECTCLRACTIVE Position */ +#define SCB_AIRCR_VECTCLRACTIVE_Msk (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos) /*!< SCB AIRCR: VECTCLRACTIVE Mask */ + +/* SCB System Control Register Definitions */ +#define SCB_SCR_SEVONPEND_Pos 4U /*!< SCB SCR: SEVONPEND Position */ +#define SCB_SCR_SEVONPEND_Msk (1UL << SCB_SCR_SEVONPEND_Pos) /*!< SCB SCR: SEVONPEND Mask */ + +#define SCB_SCR_SLEEPDEEP_Pos 2U /*!< SCB SCR: SLEEPDEEP Position */ +#define SCB_SCR_SLEEPDEEP_Msk (1UL << SCB_SCR_SLEEPDEEP_Pos) /*!< SCB SCR: SLEEPDEEP Mask */ + +#define SCB_SCR_SLEEPONEXIT_Pos 1U /*!< SCB SCR: SLEEPONEXIT Position */ +#define SCB_SCR_SLEEPONEXIT_Msk (1UL << SCB_SCR_SLEEPONEXIT_Pos) /*!< SCB SCR: SLEEPONEXIT Mask */ + +/* SCB Configuration Control Register Definitions */ +#define SCB_CCR_STKALIGN_Pos 9U /*!< SCB CCR: STKALIGN Position */ +#define SCB_CCR_STKALIGN_Msk (1UL << SCB_CCR_STKALIGN_Pos) /*!< SCB CCR: STKALIGN Mask */ + +#define SCB_CCR_UNALIGN_TRP_Pos 3U /*!< SCB CCR: UNALIGN_TRP Position */ +#define SCB_CCR_UNALIGN_TRP_Msk (1UL << SCB_CCR_UNALIGN_TRP_Pos) /*!< SCB CCR: UNALIGN_TRP Mask */ + +/* SCB System Handler Control and State Register Definitions */ +#define SCB_SHCSR_SVCALLPENDED_Pos 15U /*!< SCB SHCSR: SVCALLPENDED Position */ +#define SCB_SHCSR_SVCALLPENDED_Msk (1UL << SCB_SHCSR_SVCALLPENDED_Pos) /*!< SCB SHCSR: SVCALLPENDED Mask */ + +/*@} end of group CMSIS_SCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SysTick System Tick Timer (SysTick) + \brief Type definitions for the System Timer Registers. + @{ + */ + +/** + \brief Structure type to access the System Timer (SysTick). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SysTick Control and Status Register */ + __IOM uint32_t LOAD; /*!< Offset: 0x004 (R/W) SysTick Reload Value Register */ + __IOM uint32_t VAL; /*!< Offset: 0x008 (R/W) SysTick Current Value Register */ + __IM uint32_t CALIB; /*!< Offset: 0x00C (R/ ) SysTick Calibration Register */ +} SysTick_Type; + +/* SysTick Control / Status Register Definitions */ +#define SysTick_CTRL_COUNTFLAG_Pos 16U /*!< SysTick CTRL: COUNTFLAG Position */ +#define SysTick_CTRL_COUNTFLAG_Msk (1UL << SysTick_CTRL_COUNTFLAG_Pos) /*!< SysTick CTRL: COUNTFLAG Mask */ + +#define SysTick_CTRL_CLKSOURCE_Pos 2U /*!< SysTick CTRL: CLKSOURCE Position */ +#define SysTick_CTRL_CLKSOURCE_Msk (1UL << SysTick_CTRL_CLKSOURCE_Pos) /*!< SysTick CTRL: CLKSOURCE Mask */ + +#define SysTick_CTRL_TICKINT_Pos 1U /*!< SysTick CTRL: TICKINT Position */ +#define SysTick_CTRL_TICKINT_Msk (1UL << SysTick_CTRL_TICKINT_Pos) /*!< SysTick CTRL: TICKINT Mask */ + +#define SysTick_CTRL_ENABLE_Pos 0U /*!< SysTick CTRL: ENABLE Position */ +#define SysTick_CTRL_ENABLE_Msk (1UL /*<< SysTick_CTRL_ENABLE_Pos*/) /*!< SysTick CTRL: ENABLE Mask */ + +/* SysTick Reload Register Definitions */ +#define SysTick_LOAD_RELOAD_Pos 0U /*!< SysTick LOAD: RELOAD Position */ +#define SysTick_LOAD_RELOAD_Msk (0xFFFFFFUL /*<< SysTick_LOAD_RELOAD_Pos*/) /*!< SysTick LOAD: RELOAD Mask */ + +/* SysTick Current Register Definitions */ +#define SysTick_VAL_CURRENT_Pos 0U /*!< SysTick VAL: CURRENT Position */ +#define SysTick_VAL_CURRENT_Msk (0xFFFFFFUL /*<< SysTick_VAL_CURRENT_Pos*/) /*!< SysTick VAL: CURRENT Mask */ + +/* SysTick Calibration Register Definitions */ +#define SysTick_CALIB_NOREF_Pos 31U /*!< SysTick CALIB: NOREF Position */ +#define SysTick_CALIB_NOREF_Msk (1UL << SysTick_CALIB_NOREF_Pos) /*!< SysTick CALIB: NOREF Mask */ + +#define SysTick_CALIB_SKEW_Pos 30U /*!< SysTick CALIB: SKEW Position */ +#define SysTick_CALIB_SKEW_Msk (1UL << SysTick_CALIB_SKEW_Pos) /*!< SysTick CALIB: SKEW Mask */ + +#define SysTick_CALIB_TENMS_Pos 0U /*!< SysTick CALIB: TENMS Position */ +#define SysTick_CALIB_TENMS_Msk (0xFFFFFFUL /*<< SysTick_CALIB_TENMS_Pos*/) /*!< SysTick CALIB: TENMS Mask */ + +/*@} end of group CMSIS_SysTick */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CoreDebug Core Debug Registers (CoreDebug) + \brief Cortex-M0 Core Debug Registers (DCB registers, SHCSR, and DFSR) are only accessible over DAP and not via processor. + Therefore they are not covered by the Cortex-M0 header file. + @{ + */ +/*@} end of group CMSIS_CoreDebug */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_bitfield Core register bit field macros + \brief Macros for use with bit field definitions (xxx_Pos, xxx_Msk). + @{ + */ + +/** + \brief Mask and shift a bit field value for use in a register bit range. + \param[in] field Name of the register bit field. + \param[in] value Value of the bit field. This parameter is interpreted as an uint32_t type. + \return Masked and shifted value. +*/ +#define _VAL2FLD(field, value) (((uint32_t)(value) << field ## _Pos) & field ## _Msk) + +/** + \brief Mask and shift a register value to extract a bit filed value. + \param[in] field Name of the register bit field. + \param[in] value Value of register. This parameter is interpreted as an uint32_t type. + \return Masked and shifted bit field value. +*/ +#define _FLD2VAL(field, value) (((uint32_t)(value) & field ## _Msk) >> field ## _Pos) + +/*@} end of group CMSIS_core_bitfield */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_base Core Definitions + \brief Definitions for base addresses, unions, and structures. + @{ + */ + +/* Memory mapping of Core Hardware */ +#define SCS_BASE (0xE000E000UL) /*!< System Control Space Base Address */ +#define SysTick_BASE (SCS_BASE + 0x0010UL) /*!< SysTick Base Address */ +#define NVIC_BASE (SCS_BASE + 0x0100UL) /*!< NVIC Base Address */ +#define SCB_BASE (SCS_BASE + 0x0D00UL) /*!< System Control Block Base Address */ + +#define SCB ((SCB_Type *) SCB_BASE ) /*!< SCB configuration struct */ +#define SysTick ((SysTick_Type *) SysTick_BASE ) /*!< SysTick configuration struct */ +#define NVIC ((NVIC_Type *) NVIC_BASE ) /*!< NVIC configuration struct */ + + +/*@} */ + + + +/******************************************************************************* + * Hardware Abstraction Layer + Core Function Interface contains: + - Core NVIC Functions + - Core SysTick Functions + - Core Register Access Functions + ******************************************************************************/ +/** + \defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference +*/ + + + +/* ########################## NVIC functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_NVICFunctions NVIC Functions + \brief Functions that manage interrupts and exceptions via the NVIC. + @{ + */ + +#ifdef CMSIS_NVIC_VIRTUAL + #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE + #define CMSIS_NVIC_VIRTUAL_HEADER_FILE "cmsis_nvic_virtual.h" + #endif + #include CMSIS_NVIC_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetPriorityGrouping __NVIC_SetPriorityGrouping + #define NVIC_GetPriorityGrouping __NVIC_GetPriorityGrouping + #define NVIC_EnableIRQ __NVIC_EnableIRQ + #define NVIC_GetEnableIRQ __NVIC_GetEnableIRQ + #define NVIC_DisableIRQ __NVIC_DisableIRQ + #define NVIC_GetPendingIRQ __NVIC_GetPendingIRQ + #define NVIC_SetPendingIRQ __NVIC_SetPendingIRQ + #define NVIC_ClearPendingIRQ __NVIC_ClearPendingIRQ +/*#define NVIC_GetActive __NVIC_GetActive not available for Cortex-M0 */ + #define NVIC_SetPriority __NVIC_SetPriority + #define NVIC_GetPriority __NVIC_GetPriority + #define NVIC_SystemReset __NVIC_SystemReset +#endif /* CMSIS_NVIC_VIRTUAL */ + +#ifdef CMSIS_VECTAB_VIRTUAL + #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE + #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE "cmsis_vectab_virtual.h" + #endif + #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetVector __NVIC_SetVector + #define NVIC_GetVector __NVIC_GetVector +#endif /* (CMSIS_VECTAB_VIRTUAL) */ + +#define NVIC_USER_IRQ_OFFSET 16 + + +/* The following EXC_RETURN values are saved the LR on exception entry */ +#define EXC_RETURN_HANDLER (0xFFFFFFF1UL) /* return to Handler mode, uses MSP after return */ +#define EXC_RETURN_THREAD_MSP (0xFFFFFFF9UL) /* return to Thread mode, uses MSP after return */ +#define EXC_RETURN_THREAD_PSP (0xFFFFFFFDUL) /* return to Thread mode, uses PSP after return */ + + +/* Interrupt Priorities are WORD accessible only under Armv6-M */ +/* The following MACROS handle generation of the register offset and byte masks */ +#define _BIT_SHIFT(IRQn) ( ((((uint32_t)(int32_t)(IRQn)) ) & 0x03UL) * 8UL) +#define _SHP_IDX(IRQn) ( (((((uint32_t)(int32_t)(IRQn)) & 0x0FUL)-8UL) >> 2UL) ) +#define _IP_IDX(IRQn) ( (((uint32_t)(int32_t)(IRQn)) >> 2UL) ) + +#define __NVIC_SetPriorityGrouping(X) (void)(X) +#define __NVIC_GetPriorityGrouping() (0U) + +/** + \brief Enable Interrupt + \details Enables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + __COMPILER_BARRIER(); + NVIC->ISER[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __COMPILER_BARRIER(); + } +} + + +/** + \brief Get Interrupt Enable status + \details Returns a device specific interrupt enable status from the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt is not enabled. + \return 1 Interrupt is enabled. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISER[0U] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Disable Interrupt + \details Disables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_DisableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICER[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __DSB(); + __ISB(); + } +} + + +/** + \brief Get Pending Interrupt + \details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not pending. + \return 1 Interrupt status is pending. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISPR[0U] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Pending Interrupt + \details Sets the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ISPR[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Clear Pending Interrupt + \details Clears the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICPR[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Set Interrupt Priority + \details Sets the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \param [in] priority Priority to set. + \note The priority cannot be set for every processor exception. + */ +__STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->IP[_IP_IDX(IRQn)] = ((uint32_t)(NVIC->IP[_IP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | + (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn))); + } + else + { + SCB->SHP[_SHP_IDX(IRQn)] = ((uint32_t)(SCB->SHP[_SHP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | + (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn))); + } +} + + +/** + \brief Get Interrupt Priority + \details Reads the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Interrupt Priority. + Value is aligned automatically to the implemented priority bits of the microcontroller. + */ +__STATIC_INLINE uint32_t __NVIC_GetPriority(IRQn_Type IRQn) +{ + + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->IP[ _IP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return((uint32_t)(((SCB->SHP[_SHP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS))); + } +} + + +/** + \brief Encode Priority + \details Encodes the priority for an interrupt with the given priority group, + preemptive priority value, and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Used priority group. + \param [in] PreemptPriority Preemptive priority value (starting from 0). + \param [in] SubPriority Subpriority value (starting from 0). + \return Encoded priority. Value can be used in the function \ref NVIC_SetPriority(). + */ +__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + return ( + ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) | + ((SubPriority & (uint32_t)((1UL << (SubPriorityBits )) - 1UL))) + ); +} + + +/** + \brief Decode Priority + \details Decodes an interrupt priority value with a given priority group to + preemptive priority value and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set. + \param [in] Priority Priority value, which can be retrieved with the function \ref NVIC_GetPriority(). + \param [in] PriorityGroup Used priority group. + \param [out] pPreemptPriority Preemptive priority value (starting from 0). + \param [out] pSubPriority Subpriority value (starting from 0). + */ +__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* const pPreemptPriority, uint32_t* const pSubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + *pPreemptPriority = (Priority >> SubPriorityBits) & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL); + *pSubPriority = (Priority ) & (uint32_t)((1UL << (SubPriorityBits )) - 1UL); +} + + + +/** + \brief Set Interrupt Vector + \details Sets an interrupt vector in SRAM based interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + Address 0 must be mapped to SRAM. + \param [in] IRQn Interrupt number + \param [in] vector Address of interrupt handler function + */ +__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector) +{ + uint32_t *vectors = (uint32_t *)(NVIC_USER_IRQ_OFFSET << 2); /* point to 1st user interrupt */ + *(vectors + (int32_t)IRQn) = vector; /* use pointer arithmetic to access vector */ + /* ARM Application Note 321 states that the M0 does not require the architectural barrier */ +} + + +/** + \brief Get Interrupt Vector + \details Reads an interrupt vector from interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Address of interrupt handler function + */ +__STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn) +{ + uint32_t *vectors = (uint32_t *)(NVIC_USER_IRQ_OFFSET << 2); /* point to 1st user interrupt */ + return *(vectors + (int32_t)IRQn); /* use pointer arithmetic to access vector */ +} + + +/** + \brief System Reset + \details Initiates a system reset request to reset the MCU. + */ +__NO_RETURN __STATIC_INLINE void __NVIC_SystemReset(void) +{ + __DSB(); /* Ensure all outstanding memory accesses included + buffered write are completed before reset */ + SCB->AIRCR = ((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + SCB_AIRCR_SYSRESETREQ_Msk); + __DSB(); /* Ensure completion of memory access */ + + for(;;) /* wait until reset */ + { + __NOP(); + } +} + +/*@} end of CMSIS_Core_NVICFunctions */ + + +/* ########################## FPU functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_FpuFunctions FPU Functions + \brief Function that provides FPU type. + @{ + */ + +/** + \brief get FPU type + \details returns the FPU type + \returns + - \b 0: No FPU + - \b 1: Single precision FPU + - \b 2: Double + Single precision FPU + */ +__STATIC_INLINE uint32_t SCB_GetFPUType(void) +{ + return 0U; /* No FPU */ +} + + +/*@} end of CMSIS_Core_FpuFunctions */ + + + +/* ################################## SysTick function ############################################ */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SysTickFunctions SysTick Functions + \brief Functions that configure the System. + @{ + */ + +#if defined (__Vendor_SysTickConfig) && (__Vendor_SysTickConfig == 0U) + +/** + \brief System Tick Configuration + \details Initializes the System Timer and its interrupt, and starts the System Tick Timer. + Counter is in free running mode to generate periodic interrupts. + \param [in] ticks Number of ticks between two interrupts. + \return 0 Function succeeded. + \return 1 Function failed. + \note When the variable __Vendor_SysTickConfig is set to 1, then the + function SysTick_Config is not included. In this case, the file device.h + must contain a vendor-specific implementation of this function. + */ +__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks) +{ + if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) + { + return (1UL); /* Reload value impossible */ + } + + SysTick->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ + NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ + SysTick->VAL = 0UL; /* Load the SysTick Counter Value */ + SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0UL); /* Function successful */ +} + +#endif + +/*@} end of CMSIS_Core_SysTickFunctions */ + + + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_CM0_H_DEPENDANT */ + +#endif /* __CMSIS_GENERIC */ diff --git a/bsp/renesas/ra8m1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm0plus.h b/bsp/renesas/ra8m1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm0plus.h new file mode 100644 index 000000000000..4e7179a6146c --- /dev/null +++ b/bsp/renesas/ra8m1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm0plus.h @@ -0,0 +1,1087 @@ +/**************************************************************************//** + * @file core_cm0plus.h + * @brief CMSIS Cortex-M0+ Core Peripheral Access Layer Header File + * @version V5.0.9 + * @date 21. August 2019 + ******************************************************************************/ +/* + * Copyright (c) 2009-2019 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#elif defined (__clang__) + #pragma clang system_header /* treat file as system include file */ +#endif + +#ifndef __CORE_CM0PLUS_H_GENERIC +#define __CORE_CM0PLUS_H_GENERIC + +#include + +#ifdef __cplusplus + extern "C" { +#endif + +/** + \page CMSIS_MISRA_Exceptions MISRA-C:2004 Compliance Exceptions + CMSIS violates the following MISRA-C:2004 rules: + + \li Required Rule 8.5, object/function definition in header file.
+ Function definitions in header files are used to allow 'inlining'. + + \li Required Rule 18.4, declaration of union type or object of union type: '{...}'.
+ Unions are used for effective representation of core registers. + + \li Advisory Rule 19.7, Function-like macro defined.
+ Function-like macros are used to allow more efficient code. + */ + + +/******************************************************************************* + * CMSIS definitions + ******************************************************************************/ +/** + \ingroup Cortex-M0+ + @{ + */ + +#include "cmsis_version.h" + +/* CMSIS CM0+ definitions */ +#define __CM0PLUS_CMSIS_VERSION_MAIN (__CM_CMSIS_VERSION_MAIN) /*!< \deprecated [31:16] CMSIS HAL main version */ +#define __CM0PLUS_CMSIS_VERSION_SUB (__CM_CMSIS_VERSION_SUB) /*!< \deprecated [15:0] CMSIS HAL sub version */ +#define __CM0PLUS_CMSIS_VERSION ((__CM0PLUS_CMSIS_VERSION_MAIN << 16U) | \ + __CM0PLUS_CMSIS_VERSION_SUB ) /*!< \deprecated CMSIS HAL version number */ + +#define __CORTEX_M (0U) /*!< Cortex-M Core */ + +/** __FPU_USED indicates whether an FPU is used or not. + This core does not support an FPU at all +*/ +#define __FPU_USED 0U + +#if defined ( __CC_ARM ) + #if defined __TARGET_FPU_VFP + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) + #if defined __ARM_FP + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __GNUC__ ) + #if defined (__VFP_FP__) && !defined(__SOFTFP__) + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __ICCARM__ ) + #if defined __ARMVFP__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __TI_ARM__ ) + #if defined __TI_VFP_SUPPORT__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __TASKING__ ) + #if defined __FPU_VFP__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __CSMC__ ) + #if ( __CSMC__ & 0x400U) + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#endif + +#include "cmsis_compiler.h" /* CMSIS compiler specific defines */ + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_CM0PLUS_H_GENERIC */ + +#ifndef __CMSIS_GENERIC + +#ifndef __CORE_CM0PLUS_H_DEPENDANT +#define __CORE_CM0PLUS_H_DEPENDANT + +#ifdef __cplusplus + extern "C" { +#endif + +/* check device defines and use defaults */ +#if defined __CHECK_DEVICE_DEFINES + #ifndef __CM0PLUS_REV + #define __CM0PLUS_REV 0x0000U + #warning "__CM0PLUS_REV not defined in device header file; using default!" + #endif + + #ifndef __MPU_PRESENT + #define __MPU_PRESENT 0U + #warning "__MPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __VTOR_PRESENT + #define __VTOR_PRESENT 0U + #warning "__VTOR_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __NVIC_PRIO_BITS + #define __NVIC_PRIO_BITS 2U + #warning "__NVIC_PRIO_BITS not defined in device header file; using default!" + #endif + + #ifndef __Vendor_SysTickConfig + #define __Vendor_SysTickConfig 0U + #warning "__Vendor_SysTickConfig not defined in device header file; using default!" + #endif +#endif + +/* IO definitions (access restrictions to peripheral registers) */ +/** + \defgroup CMSIS_glob_defs CMSIS Global Defines + + IO Type Qualifiers are used + \li to specify the access to peripheral variables. + \li for automatic generation of peripheral register debug information. +*/ +#ifdef __cplusplus + #define __I volatile /*!< Defines 'read only' permissions */ +#else + #define __I volatile const /*!< Defines 'read only' permissions */ +#endif +#define __O volatile /*!< Defines 'write only' permissions */ +#define __IO volatile /*!< Defines 'read / write' permissions */ + +/* following defines should be used for structure members */ +#define __IM volatile const /*! Defines 'read only' structure member permissions */ +#define __OM volatile /*! Defines 'write only' structure member permissions */ +#define __IOM volatile /*! Defines 'read / write' structure member permissions */ + +/*@} end of group Cortex-M0+ */ + + + +/******************************************************************************* + * Register Abstraction + Core Register contain: + - Core Register + - Core NVIC Register + - Core SCB Register + - Core SysTick Register + - Core MPU Register + ******************************************************************************/ +/** + \defgroup CMSIS_core_register Defines and Type Definitions + \brief Type definitions and defines for Cortex-M processor based devices. +*/ + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CORE Status and Control Registers + \brief Core Register type definitions. + @{ + */ + +/** + \brief Union type to access the Application Program Status Register (APSR). + */ +typedef union +{ + struct + { + uint32_t _reserved0:28; /*!< bit: 0..27 Reserved */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} APSR_Type; + +/* APSR Register Definitions */ +#define APSR_N_Pos 31U /*!< APSR: N Position */ +#define APSR_N_Msk (1UL << APSR_N_Pos) /*!< APSR: N Mask */ + +#define APSR_Z_Pos 30U /*!< APSR: Z Position */ +#define APSR_Z_Msk (1UL << APSR_Z_Pos) /*!< APSR: Z Mask */ + +#define APSR_C_Pos 29U /*!< APSR: C Position */ +#define APSR_C_Msk (1UL << APSR_C_Pos) /*!< APSR: C Mask */ + +#define APSR_V_Pos 28U /*!< APSR: V Position */ +#define APSR_V_Msk (1UL << APSR_V_Pos) /*!< APSR: V Mask */ + + +/** + \brief Union type to access the Interrupt Program Status Register (IPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:23; /*!< bit: 9..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} IPSR_Type; + +/* IPSR Register Definitions */ +#define IPSR_ISR_Pos 0U /*!< IPSR: ISR Position */ +#define IPSR_ISR_Msk (0x1FFUL /*<< IPSR_ISR_Pos*/) /*!< IPSR: ISR Mask */ + + +/** + \brief Union type to access the Special-Purpose Program Status Registers (xPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:15; /*!< bit: 9..23 Reserved */ + uint32_t T:1; /*!< bit: 24 Thumb bit (read 0) */ + uint32_t _reserved1:3; /*!< bit: 25..27 Reserved */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} xPSR_Type; + +/* xPSR Register Definitions */ +#define xPSR_N_Pos 31U /*!< xPSR: N Position */ +#define xPSR_N_Msk (1UL << xPSR_N_Pos) /*!< xPSR: N Mask */ + +#define xPSR_Z_Pos 30U /*!< xPSR: Z Position */ +#define xPSR_Z_Msk (1UL << xPSR_Z_Pos) /*!< xPSR: Z Mask */ + +#define xPSR_C_Pos 29U /*!< xPSR: C Position */ +#define xPSR_C_Msk (1UL << xPSR_C_Pos) /*!< xPSR: C Mask */ + +#define xPSR_V_Pos 28U /*!< xPSR: V Position */ +#define xPSR_V_Msk (1UL << xPSR_V_Pos) /*!< xPSR: V Mask */ + +#define xPSR_T_Pos 24U /*!< xPSR: T Position */ +#define xPSR_T_Msk (1UL << xPSR_T_Pos) /*!< xPSR: T Mask */ + +#define xPSR_ISR_Pos 0U /*!< xPSR: ISR Position */ +#define xPSR_ISR_Msk (0x1FFUL /*<< xPSR_ISR_Pos*/) /*!< xPSR: ISR Mask */ + + +/** + \brief Union type to access the Control Registers (CONTROL). + */ +typedef union +{ + struct + { + uint32_t nPRIV:1; /*!< bit: 0 Execution privilege in Thread mode */ + uint32_t SPSEL:1; /*!< bit: 1 Stack to be used */ + uint32_t _reserved1:30; /*!< bit: 2..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} CONTROL_Type; + +/* CONTROL Register Definitions */ +#define CONTROL_SPSEL_Pos 1U /*!< CONTROL: SPSEL Position */ +#define CONTROL_SPSEL_Msk (1UL << CONTROL_SPSEL_Pos) /*!< CONTROL: SPSEL Mask */ + +#define CONTROL_nPRIV_Pos 0U /*!< CONTROL: nPRIV Position */ +#define CONTROL_nPRIV_Msk (1UL /*<< CONTROL_nPRIV_Pos*/) /*!< CONTROL: nPRIV Mask */ + +/*@} end of group CMSIS_CORE */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_NVIC Nested Vectored Interrupt Controller (NVIC) + \brief Type definitions for the NVIC Registers + @{ + */ + +/** + \brief Structure type to access the Nested Vectored Interrupt Controller (NVIC). + */ +typedef struct +{ + __IOM uint32_t ISER[1U]; /*!< Offset: 0x000 (R/W) Interrupt Set Enable Register */ + uint32_t RESERVED0[31U]; + __IOM uint32_t ICER[1U]; /*!< Offset: 0x080 (R/W) Interrupt Clear Enable Register */ + uint32_t RESERVED1[31U]; + __IOM uint32_t ISPR[1U]; /*!< Offset: 0x100 (R/W) Interrupt Set Pending Register */ + uint32_t RESERVED2[31U]; + __IOM uint32_t ICPR[1U]; /*!< Offset: 0x180 (R/W) Interrupt Clear Pending Register */ + uint32_t RESERVED3[31U]; + uint32_t RESERVED4[64U]; + __IOM uint32_t IP[8U]; /*!< Offset: 0x300 (R/W) Interrupt Priority Register */ +} NVIC_Type; + +/*@} end of group CMSIS_NVIC */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SCB System Control Block (SCB) + \brief Type definitions for the System Control Block Registers + @{ + */ + +/** + \brief Structure type to access the System Control Block (SCB). + */ +typedef struct +{ + __IM uint32_t CPUID; /*!< Offset: 0x000 (R/ ) CPUID Base Register */ + __IOM uint32_t ICSR; /*!< Offset: 0x004 (R/W) Interrupt Control and State Register */ +#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U) + __IOM uint32_t VTOR; /*!< Offset: 0x008 (R/W) Vector Table Offset Register */ +#else + uint32_t RESERVED0; +#endif + __IOM uint32_t AIRCR; /*!< Offset: 0x00C (R/W) Application Interrupt and Reset Control Register */ + __IOM uint32_t SCR; /*!< Offset: 0x010 (R/W) System Control Register */ + __IOM uint32_t CCR; /*!< Offset: 0x014 (R/W) Configuration Control Register */ + uint32_t RESERVED1; + __IOM uint32_t SHP[2U]; /*!< Offset: 0x01C (R/W) System Handlers Priority Registers. [0] is RESERVED */ + __IOM uint32_t SHCSR; /*!< Offset: 0x024 (R/W) System Handler Control and State Register */ +} SCB_Type; + +/* SCB CPUID Register Definitions */ +#define SCB_CPUID_IMPLEMENTER_Pos 24U /*!< SCB CPUID: IMPLEMENTER Position */ +#define SCB_CPUID_IMPLEMENTER_Msk (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos) /*!< SCB CPUID: IMPLEMENTER Mask */ + +#define SCB_CPUID_VARIANT_Pos 20U /*!< SCB CPUID: VARIANT Position */ +#define SCB_CPUID_VARIANT_Msk (0xFUL << SCB_CPUID_VARIANT_Pos) /*!< SCB CPUID: VARIANT Mask */ + +#define SCB_CPUID_ARCHITECTURE_Pos 16U /*!< SCB CPUID: ARCHITECTURE Position */ +#define SCB_CPUID_ARCHITECTURE_Msk (0xFUL << SCB_CPUID_ARCHITECTURE_Pos) /*!< SCB CPUID: ARCHITECTURE Mask */ + +#define SCB_CPUID_PARTNO_Pos 4U /*!< SCB CPUID: PARTNO Position */ +#define SCB_CPUID_PARTNO_Msk (0xFFFUL << SCB_CPUID_PARTNO_Pos) /*!< SCB CPUID: PARTNO Mask */ + +#define SCB_CPUID_REVISION_Pos 0U /*!< SCB CPUID: REVISION Position */ +#define SCB_CPUID_REVISION_Msk (0xFUL /*<< SCB_CPUID_REVISION_Pos*/) /*!< SCB CPUID: REVISION Mask */ + +/* SCB Interrupt Control State Register Definitions */ +#define SCB_ICSR_NMIPENDSET_Pos 31U /*!< SCB ICSR: NMIPENDSET Position */ +#define SCB_ICSR_NMIPENDSET_Msk (1UL << SCB_ICSR_NMIPENDSET_Pos) /*!< SCB ICSR: NMIPENDSET Mask */ + +#define SCB_ICSR_PENDSVSET_Pos 28U /*!< SCB ICSR: PENDSVSET Position */ +#define SCB_ICSR_PENDSVSET_Msk (1UL << SCB_ICSR_PENDSVSET_Pos) /*!< SCB ICSR: PENDSVSET Mask */ + +#define SCB_ICSR_PENDSVCLR_Pos 27U /*!< SCB ICSR: PENDSVCLR Position */ +#define SCB_ICSR_PENDSVCLR_Msk (1UL << SCB_ICSR_PENDSVCLR_Pos) /*!< SCB ICSR: PENDSVCLR Mask */ + +#define SCB_ICSR_PENDSTSET_Pos 26U /*!< SCB ICSR: PENDSTSET Position */ +#define SCB_ICSR_PENDSTSET_Msk (1UL << SCB_ICSR_PENDSTSET_Pos) /*!< SCB ICSR: PENDSTSET Mask */ + +#define SCB_ICSR_PENDSTCLR_Pos 25U /*!< SCB ICSR: PENDSTCLR Position */ +#define SCB_ICSR_PENDSTCLR_Msk (1UL << SCB_ICSR_PENDSTCLR_Pos) /*!< SCB ICSR: PENDSTCLR Mask */ + +#define SCB_ICSR_ISRPREEMPT_Pos 23U /*!< SCB ICSR: ISRPREEMPT Position */ +#define SCB_ICSR_ISRPREEMPT_Msk (1UL << SCB_ICSR_ISRPREEMPT_Pos) /*!< SCB ICSR: ISRPREEMPT Mask */ + +#define SCB_ICSR_ISRPENDING_Pos 22U /*!< SCB ICSR: ISRPENDING Position */ +#define SCB_ICSR_ISRPENDING_Msk (1UL << SCB_ICSR_ISRPENDING_Pos) /*!< SCB ICSR: ISRPENDING Mask */ + +#define SCB_ICSR_VECTPENDING_Pos 12U /*!< SCB ICSR: VECTPENDING Position */ +#define SCB_ICSR_VECTPENDING_Msk (0x1FFUL << SCB_ICSR_VECTPENDING_Pos) /*!< SCB ICSR: VECTPENDING Mask */ + +#define SCB_ICSR_VECTACTIVE_Pos 0U /*!< SCB ICSR: VECTACTIVE Position */ +#define SCB_ICSR_VECTACTIVE_Msk (0x1FFUL /*<< SCB_ICSR_VECTACTIVE_Pos*/) /*!< SCB ICSR: VECTACTIVE Mask */ + +#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U) +/* SCB Interrupt Control State Register Definitions */ +#define SCB_VTOR_TBLOFF_Pos 8U /*!< SCB VTOR: TBLOFF Position */ +#define SCB_VTOR_TBLOFF_Msk (0xFFFFFFUL << SCB_VTOR_TBLOFF_Pos) /*!< SCB VTOR: TBLOFF Mask */ +#endif + +/* SCB Application Interrupt and Reset Control Register Definitions */ +#define SCB_AIRCR_VECTKEY_Pos 16U /*!< SCB AIRCR: VECTKEY Position */ +#define SCB_AIRCR_VECTKEY_Msk (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos) /*!< SCB AIRCR: VECTKEY Mask */ + +#define SCB_AIRCR_VECTKEYSTAT_Pos 16U /*!< SCB AIRCR: VECTKEYSTAT Position */ +#define SCB_AIRCR_VECTKEYSTAT_Msk (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos) /*!< SCB AIRCR: VECTKEYSTAT Mask */ + +#define SCB_AIRCR_ENDIANESS_Pos 15U /*!< SCB AIRCR: ENDIANESS Position */ +#define SCB_AIRCR_ENDIANESS_Msk (1UL << SCB_AIRCR_ENDIANESS_Pos) /*!< SCB AIRCR: ENDIANESS Mask */ + +#define SCB_AIRCR_SYSRESETREQ_Pos 2U /*!< SCB AIRCR: SYSRESETREQ Position */ +#define SCB_AIRCR_SYSRESETREQ_Msk (1UL << SCB_AIRCR_SYSRESETREQ_Pos) /*!< SCB AIRCR: SYSRESETREQ Mask */ + +#define SCB_AIRCR_VECTCLRACTIVE_Pos 1U /*!< SCB AIRCR: VECTCLRACTIVE Position */ +#define SCB_AIRCR_VECTCLRACTIVE_Msk (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos) /*!< SCB AIRCR: VECTCLRACTIVE Mask */ + +/* SCB System Control Register Definitions */ +#define SCB_SCR_SEVONPEND_Pos 4U /*!< SCB SCR: SEVONPEND Position */ +#define SCB_SCR_SEVONPEND_Msk (1UL << SCB_SCR_SEVONPEND_Pos) /*!< SCB SCR: SEVONPEND Mask */ + +#define SCB_SCR_SLEEPDEEP_Pos 2U /*!< SCB SCR: SLEEPDEEP Position */ +#define SCB_SCR_SLEEPDEEP_Msk (1UL << SCB_SCR_SLEEPDEEP_Pos) /*!< SCB SCR: SLEEPDEEP Mask */ + +#define SCB_SCR_SLEEPONEXIT_Pos 1U /*!< SCB SCR: SLEEPONEXIT Position */ +#define SCB_SCR_SLEEPONEXIT_Msk (1UL << SCB_SCR_SLEEPONEXIT_Pos) /*!< SCB SCR: SLEEPONEXIT Mask */ + +/* SCB Configuration Control Register Definitions */ +#define SCB_CCR_STKALIGN_Pos 9U /*!< SCB CCR: STKALIGN Position */ +#define SCB_CCR_STKALIGN_Msk (1UL << SCB_CCR_STKALIGN_Pos) /*!< SCB CCR: STKALIGN Mask */ + +#define SCB_CCR_UNALIGN_TRP_Pos 3U /*!< SCB CCR: UNALIGN_TRP Position */ +#define SCB_CCR_UNALIGN_TRP_Msk (1UL << SCB_CCR_UNALIGN_TRP_Pos) /*!< SCB CCR: UNALIGN_TRP Mask */ + +/* SCB System Handler Control and State Register Definitions */ +#define SCB_SHCSR_SVCALLPENDED_Pos 15U /*!< SCB SHCSR: SVCALLPENDED Position */ +#define SCB_SHCSR_SVCALLPENDED_Msk (1UL << SCB_SHCSR_SVCALLPENDED_Pos) /*!< SCB SHCSR: SVCALLPENDED Mask */ + +/*@} end of group CMSIS_SCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SysTick System Tick Timer (SysTick) + \brief Type definitions for the System Timer Registers. + @{ + */ + +/** + \brief Structure type to access the System Timer (SysTick). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SysTick Control and Status Register */ + __IOM uint32_t LOAD; /*!< Offset: 0x004 (R/W) SysTick Reload Value Register */ + __IOM uint32_t VAL; /*!< Offset: 0x008 (R/W) SysTick Current Value Register */ + __IM uint32_t CALIB; /*!< Offset: 0x00C (R/ ) SysTick Calibration Register */ +} SysTick_Type; + +/* SysTick Control / Status Register Definitions */ +#define SysTick_CTRL_COUNTFLAG_Pos 16U /*!< SysTick CTRL: COUNTFLAG Position */ +#define SysTick_CTRL_COUNTFLAG_Msk (1UL << SysTick_CTRL_COUNTFLAG_Pos) /*!< SysTick CTRL: COUNTFLAG Mask */ + +#define SysTick_CTRL_CLKSOURCE_Pos 2U /*!< SysTick CTRL: CLKSOURCE Position */ +#define SysTick_CTRL_CLKSOURCE_Msk (1UL << SysTick_CTRL_CLKSOURCE_Pos) /*!< SysTick CTRL: CLKSOURCE Mask */ + +#define SysTick_CTRL_TICKINT_Pos 1U /*!< SysTick CTRL: TICKINT Position */ +#define SysTick_CTRL_TICKINT_Msk (1UL << SysTick_CTRL_TICKINT_Pos) /*!< SysTick CTRL: TICKINT Mask */ + +#define SysTick_CTRL_ENABLE_Pos 0U /*!< SysTick CTRL: ENABLE Position */ +#define SysTick_CTRL_ENABLE_Msk (1UL /*<< SysTick_CTRL_ENABLE_Pos*/) /*!< SysTick CTRL: ENABLE Mask */ + +/* SysTick Reload Register Definitions */ +#define SysTick_LOAD_RELOAD_Pos 0U /*!< SysTick LOAD: RELOAD Position */ +#define SysTick_LOAD_RELOAD_Msk (0xFFFFFFUL /*<< SysTick_LOAD_RELOAD_Pos*/) /*!< SysTick LOAD: RELOAD Mask */ + +/* SysTick Current Register Definitions */ +#define SysTick_VAL_CURRENT_Pos 0U /*!< SysTick VAL: CURRENT Position */ +#define SysTick_VAL_CURRENT_Msk (0xFFFFFFUL /*<< SysTick_VAL_CURRENT_Pos*/) /*!< SysTick VAL: CURRENT Mask */ + +/* SysTick Calibration Register Definitions */ +#define SysTick_CALIB_NOREF_Pos 31U /*!< SysTick CALIB: NOREF Position */ +#define SysTick_CALIB_NOREF_Msk (1UL << SysTick_CALIB_NOREF_Pos) /*!< SysTick CALIB: NOREF Mask */ + +#define SysTick_CALIB_SKEW_Pos 30U /*!< SysTick CALIB: SKEW Position */ +#define SysTick_CALIB_SKEW_Msk (1UL << SysTick_CALIB_SKEW_Pos) /*!< SysTick CALIB: SKEW Mask */ + +#define SysTick_CALIB_TENMS_Pos 0U /*!< SysTick CALIB: TENMS Position */ +#define SysTick_CALIB_TENMS_Msk (0xFFFFFFUL /*<< SysTick_CALIB_TENMS_Pos*/) /*!< SysTick CALIB: TENMS Mask */ + +/*@} end of group CMSIS_SysTick */ + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_MPU Memory Protection Unit (MPU) + \brief Type definitions for the Memory Protection Unit (MPU) + @{ + */ + +/** + \brief Structure type to access the Memory Protection Unit (MPU). + */ +typedef struct +{ + __IM uint32_t TYPE; /*!< Offset: 0x000 (R/ ) MPU Type Register */ + __IOM uint32_t CTRL; /*!< Offset: 0x004 (R/W) MPU Control Register */ + __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) MPU Region RNRber Register */ + __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) MPU Region Base Address Register */ + __IOM uint32_t RASR; /*!< Offset: 0x010 (R/W) MPU Region Attribute and Size Register */ +} MPU_Type; + +#define MPU_TYPE_RALIASES 1U + +/* MPU Type Register Definitions */ +#define MPU_TYPE_IREGION_Pos 16U /*!< MPU TYPE: IREGION Position */ +#define MPU_TYPE_IREGION_Msk (0xFFUL << MPU_TYPE_IREGION_Pos) /*!< MPU TYPE: IREGION Mask */ + +#define MPU_TYPE_DREGION_Pos 8U /*!< MPU TYPE: DREGION Position */ +#define MPU_TYPE_DREGION_Msk (0xFFUL << MPU_TYPE_DREGION_Pos) /*!< MPU TYPE: DREGION Mask */ + +#define MPU_TYPE_SEPARATE_Pos 0U /*!< MPU TYPE: SEPARATE Position */ +#define MPU_TYPE_SEPARATE_Msk (1UL /*<< MPU_TYPE_SEPARATE_Pos*/) /*!< MPU TYPE: SEPARATE Mask */ + +/* MPU Control Register Definitions */ +#define MPU_CTRL_PRIVDEFENA_Pos 2U /*!< MPU CTRL: PRIVDEFENA Position */ +#define MPU_CTRL_PRIVDEFENA_Msk (1UL << MPU_CTRL_PRIVDEFENA_Pos) /*!< MPU CTRL: PRIVDEFENA Mask */ + +#define MPU_CTRL_HFNMIENA_Pos 1U /*!< MPU CTRL: HFNMIENA Position */ +#define MPU_CTRL_HFNMIENA_Msk (1UL << MPU_CTRL_HFNMIENA_Pos) /*!< MPU CTRL: HFNMIENA Mask */ + +#define MPU_CTRL_ENABLE_Pos 0U /*!< MPU CTRL: ENABLE Position */ +#define MPU_CTRL_ENABLE_Msk (1UL /*<< MPU_CTRL_ENABLE_Pos*/) /*!< MPU CTRL: ENABLE Mask */ + +/* MPU Region Number Register Definitions */ +#define MPU_RNR_REGION_Pos 0U /*!< MPU RNR: REGION Position */ +#define MPU_RNR_REGION_Msk (0xFFUL /*<< MPU_RNR_REGION_Pos*/) /*!< MPU RNR: REGION Mask */ + +/* MPU Region Base Address Register Definitions */ +#define MPU_RBAR_ADDR_Pos 8U /*!< MPU RBAR: ADDR Position */ +#define MPU_RBAR_ADDR_Msk (0xFFFFFFUL << MPU_RBAR_ADDR_Pos) /*!< MPU RBAR: ADDR Mask */ + +#define MPU_RBAR_VALID_Pos 4U /*!< MPU RBAR: VALID Position */ +#define MPU_RBAR_VALID_Msk (1UL << MPU_RBAR_VALID_Pos) /*!< MPU RBAR: VALID Mask */ + +#define MPU_RBAR_REGION_Pos 0U /*!< MPU RBAR: REGION Position */ +#define MPU_RBAR_REGION_Msk (0xFUL /*<< MPU_RBAR_REGION_Pos*/) /*!< MPU RBAR: REGION Mask */ + +/* MPU Region Attribute and Size Register Definitions */ +#define MPU_RASR_ATTRS_Pos 16U /*!< MPU RASR: MPU Region Attribute field Position */ +#define MPU_RASR_ATTRS_Msk (0xFFFFUL << MPU_RASR_ATTRS_Pos) /*!< MPU RASR: MPU Region Attribute field Mask */ + +#define MPU_RASR_XN_Pos 28U /*!< MPU RASR: ATTRS.XN Position */ +#define MPU_RASR_XN_Msk (1UL << MPU_RASR_XN_Pos) /*!< MPU RASR: ATTRS.XN Mask */ + +#define MPU_RASR_AP_Pos 24U /*!< MPU RASR: ATTRS.AP Position */ +#define MPU_RASR_AP_Msk (0x7UL << MPU_RASR_AP_Pos) /*!< MPU RASR: ATTRS.AP Mask */ + +#define MPU_RASR_TEX_Pos 19U /*!< MPU RASR: ATTRS.TEX Position */ +#define MPU_RASR_TEX_Msk (0x7UL << MPU_RASR_TEX_Pos) /*!< MPU RASR: ATTRS.TEX Mask */ + +#define MPU_RASR_S_Pos 18U /*!< MPU RASR: ATTRS.S Position */ +#define MPU_RASR_S_Msk (1UL << MPU_RASR_S_Pos) /*!< MPU RASR: ATTRS.S Mask */ + +#define MPU_RASR_C_Pos 17U /*!< MPU RASR: ATTRS.C Position */ +#define MPU_RASR_C_Msk (1UL << MPU_RASR_C_Pos) /*!< MPU RASR: ATTRS.C Mask */ + +#define MPU_RASR_B_Pos 16U /*!< MPU RASR: ATTRS.B Position */ +#define MPU_RASR_B_Msk (1UL << MPU_RASR_B_Pos) /*!< MPU RASR: ATTRS.B Mask */ + +#define MPU_RASR_SRD_Pos 8U /*!< MPU RASR: Sub-Region Disable Position */ +#define MPU_RASR_SRD_Msk (0xFFUL << MPU_RASR_SRD_Pos) /*!< MPU RASR: Sub-Region Disable Mask */ + +#define MPU_RASR_SIZE_Pos 1U /*!< MPU RASR: Region Size Field Position */ +#define MPU_RASR_SIZE_Msk (0x1FUL << MPU_RASR_SIZE_Pos) /*!< MPU RASR: Region Size Field Mask */ + +#define MPU_RASR_ENABLE_Pos 0U /*!< MPU RASR: Region enable bit Position */ +#define MPU_RASR_ENABLE_Msk (1UL /*<< MPU_RASR_ENABLE_Pos*/) /*!< MPU RASR: Region enable bit Disable Mask */ + +/*@} end of group CMSIS_MPU */ +#endif + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CoreDebug Core Debug Registers (CoreDebug) + \brief Cortex-M0+ Core Debug Registers (DCB registers, SHCSR, and DFSR) are only accessible over DAP and not via processor. + Therefore they are not covered by the Cortex-M0+ header file. + @{ + */ +/*@} end of group CMSIS_CoreDebug */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_bitfield Core register bit field macros + \brief Macros for use with bit field definitions (xxx_Pos, xxx_Msk). + @{ + */ + +/** + \brief Mask and shift a bit field value for use in a register bit range. + \param[in] field Name of the register bit field. + \param[in] value Value of the bit field. This parameter is interpreted as an uint32_t type. + \return Masked and shifted value. +*/ +#define _VAL2FLD(field, value) (((uint32_t)(value) << field ## _Pos) & field ## _Msk) + +/** + \brief Mask and shift a register value to extract a bit filed value. + \param[in] field Name of the register bit field. + \param[in] value Value of register. This parameter is interpreted as an uint32_t type. + \return Masked and shifted bit field value. +*/ +#define _FLD2VAL(field, value) (((uint32_t)(value) & field ## _Msk) >> field ## _Pos) + +/*@} end of group CMSIS_core_bitfield */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_base Core Definitions + \brief Definitions for base addresses, unions, and structures. + @{ + */ + +/* Memory mapping of Core Hardware */ +#define SCS_BASE (0xE000E000UL) /*!< System Control Space Base Address */ +#define SysTick_BASE (SCS_BASE + 0x0010UL) /*!< SysTick Base Address */ +#define NVIC_BASE (SCS_BASE + 0x0100UL) /*!< NVIC Base Address */ +#define SCB_BASE (SCS_BASE + 0x0D00UL) /*!< System Control Block Base Address */ + +#define SCB ((SCB_Type *) SCB_BASE ) /*!< SCB configuration struct */ +#define SysTick ((SysTick_Type *) SysTick_BASE ) /*!< SysTick configuration struct */ +#define NVIC ((NVIC_Type *) NVIC_BASE ) /*!< NVIC configuration struct */ + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + #define MPU_BASE (SCS_BASE + 0x0D90UL) /*!< Memory Protection Unit */ + #define MPU ((MPU_Type *) MPU_BASE ) /*!< Memory Protection Unit */ +#endif + +/*@} */ + + + +/******************************************************************************* + * Hardware Abstraction Layer + Core Function Interface contains: + - Core NVIC Functions + - Core SysTick Functions + - Core Register Access Functions + ******************************************************************************/ +/** + \defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference +*/ + + + +/* ########################## NVIC functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_NVICFunctions NVIC Functions + \brief Functions that manage interrupts and exceptions via the NVIC. + @{ + */ + +#ifdef CMSIS_NVIC_VIRTUAL + #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE + #define CMSIS_NVIC_VIRTUAL_HEADER_FILE "cmsis_nvic_virtual.h" + #endif + #include CMSIS_NVIC_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetPriorityGrouping __NVIC_SetPriorityGrouping + #define NVIC_GetPriorityGrouping __NVIC_GetPriorityGrouping + #define NVIC_EnableIRQ __NVIC_EnableIRQ + #define NVIC_GetEnableIRQ __NVIC_GetEnableIRQ + #define NVIC_DisableIRQ __NVIC_DisableIRQ + #define NVIC_GetPendingIRQ __NVIC_GetPendingIRQ + #define NVIC_SetPendingIRQ __NVIC_SetPendingIRQ + #define NVIC_ClearPendingIRQ __NVIC_ClearPendingIRQ +/*#define NVIC_GetActive __NVIC_GetActive not available for Cortex-M0+ */ + #define NVIC_SetPriority __NVIC_SetPriority + #define NVIC_GetPriority __NVIC_GetPriority + #define NVIC_SystemReset __NVIC_SystemReset +#endif /* CMSIS_NVIC_VIRTUAL */ + +#ifdef CMSIS_VECTAB_VIRTUAL + #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE + #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE "cmsis_vectab_virtual.h" + #endif + #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetVector __NVIC_SetVector + #define NVIC_GetVector __NVIC_GetVector +#endif /* (CMSIS_VECTAB_VIRTUAL) */ + +#define NVIC_USER_IRQ_OFFSET 16 + + +/* The following EXC_RETURN values are saved the LR on exception entry */ +#define EXC_RETURN_HANDLER (0xFFFFFFF1UL) /* return to Handler mode, uses MSP after return */ +#define EXC_RETURN_THREAD_MSP (0xFFFFFFF9UL) /* return to Thread mode, uses MSP after return */ +#define EXC_RETURN_THREAD_PSP (0xFFFFFFFDUL) /* return to Thread mode, uses PSP after return */ + + +/* Interrupt Priorities are WORD accessible only under Armv6-M */ +/* The following MACROS handle generation of the register offset and byte masks */ +#define _BIT_SHIFT(IRQn) ( ((((uint32_t)(int32_t)(IRQn)) ) & 0x03UL) * 8UL) +#define _SHP_IDX(IRQn) ( (((((uint32_t)(int32_t)(IRQn)) & 0x0FUL)-8UL) >> 2UL) ) +#define _IP_IDX(IRQn) ( (((uint32_t)(int32_t)(IRQn)) >> 2UL) ) + +#define __NVIC_SetPriorityGrouping(X) (void)(X) +#define __NVIC_GetPriorityGrouping() (0U) + +/** + \brief Enable Interrupt + \details Enables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + __COMPILER_BARRIER(); + NVIC->ISER[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __COMPILER_BARRIER(); + } +} + + +/** + \brief Get Interrupt Enable status + \details Returns a device specific interrupt enable status from the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt is not enabled. + \return 1 Interrupt is enabled. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISER[0U] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Disable Interrupt + \details Disables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_DisableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICER[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __DSB(); + __ISB(); + } +} + + +/** + \brief Get Pending Interrupt + \details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not pending. + \return 1 Interrupt status is pending. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISPR[0U] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Pending Interrupt + \details Sets the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ISPR[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Clear Pending Interrupt + \details Clears the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICPR[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Set Interrupt Priority + \details Sets the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \param [in] priority Priority to set. + \note The priority cannot be set for every processor exception. + */ +__STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->IP[_IP_IDX(IRQn)] = ((uint32_t)(NVIC->IP[_IP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | + (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn))); + } + else + { + SCB->SHP[_SHP_IDX(IRQn)] = ((uint32_t)(SCB->SHP[_SHP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | + (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn))); + } +} + + +/** + \brief Get Interrupt Priority + \details Reads the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Interrupt Priority. + Value is aligned automatically to the implemented priority bits of the microcontroller. + */ +__STATIC_INLINE uint32_t __NVIC_GetPriority(IRQn_Type IRQn) +{ + + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->IP[ _IP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return((uint32_t)(((SCB->SHP[_SHP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS))); + } +} + + +/** + \brief Encode Priority + \details Encodes the priority for an interrupt with the given priority group, + preemptive priority value, and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Used priority group. + \param [in] PreemptPriority Preemptive priority value (starting from 0). + \param [in] SubPriority Subpriority value (starting from 0). + \return Encoded priority. Value can be used in the function \ref NVIC_SetPriority(). + */ +__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + return ( + ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) | + ((SubPriority & (uint32_t)((1UL << (SubPriorityBits )) - 1UL))) + ); +} + + +/** + \brief Decode Priority + \details Decodes an interrupt priority value with a given priority group to + preemptive priority value and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set. + \param [in] Priority Priority value, which can be retrieved with the function \ref NVIC_GetPriority(). + \param [in] PriorityGroup Used priority group. + \param [out] pPreemptPriority Preemptive priority value (starting from 0). + \param [out] pSubPriority Subpriority value (starting from 0). + */ +__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* const pPreemptPriority, uint32_t* const pSubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + *pPreemptPriority = (Priority >> SubPriorityBits) & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL); + *pSubPriority = (Priority ) & (uint32_t)((1UL << (SubPriorityBits )) - 1UL); +} + + +/** + \brief Set Interrupt Vector + \details Sets an interrupt vector in SRAM based interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + VTOR must been relocated to SRAM before. + If VTOR is not present address 0 must be mapped to SRAM. + \param [in] IRQn Interrupt number + \param [in] vector Address of interrupt handler function + */ +__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector) +{ +#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U) + uint32_t *vectors = (uint32_t *)SCB->VTOR; + vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET] = vector; +#else + uint32_t *vectors = (uint32_t *)(NVIC_USER_IRQ_OFFSET << 2); /* point to 1st user interrupt */ + *(vectors + (int32_t)IRQn) = vector; /* use pointer arithmetic to access vector */ +#endif + /* ARM Application Note 321 states that the M0+ does not require the architectural barrier */ +} + + +/** + \brief Get Interrupt Vector + \details Reads an interrupt vector from interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Address of interrupt handler function + */ +__STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn) +{ +#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U) + uint32_t *vectors = (uint32_t *)SCB->VTOR; + return vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET]; +#else + uint32_t *vectors = (uint32_t *)(NVIC_USER_IRQ_OFFSET << 2); /* point to 1st user interrupt */ + return *(vectors + (int32_t)IRQn); /* use pointer arithmetic to access vector */ +#endif +} + + +/** + \brief System Reset + \details Initiates a system reset request to reset the MCU. + */ +__NO_RETURN __STATIC_INLINE void __NVIC_SystemReset(void) +{ + __DSB(); /* Ensure all outstanding memory accesses included + buffered write are completed before reset */ + SCB->AIRCR = ((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + SCB_AIRCR_SYSRESETREQ_Msk); + __DSB(); /* Ensure completion of memory access */ + + for(;;) /* wait until reset */ + { + __NOP(); + } +} + +/*@} end of CMSIS_Core_NVICFunctions */ + +/* ########################## MPU functions #################################### */ + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + +#include "mpu_armv7.h" + +#endif + +/* ########################## FPU functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_FpuFunctions FPU Functions + \brief Function that provides FPU type. + @{ + */ + +/** + \brief get FPU type + \details returns the FPU type + \returns + - \b 0: No FPU + - \b 1: Single precision FPU + - \b 2: Double + Single precision FPU + */ +__STATIC_INLINE uint32_t SCB_GetFPUType(void) +{ + return 0U; /* No FPU */ +} + + +/*@} end of CMSIS_Core_FpuFunctions */ + + + +/* ################################## SysTick function ############################################ */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SysTickFunctions SysTick Functions + \brief Functions that configure the System. + @{ + */ + +#if defined (__Vendor_SysTickConfig) && (__Vendor_SysTickConfig == 0U) + +/** + \brief System Tick Configuration + \details Initializes the System Timer and its interrupt, and starts the System Tick Timer. + Counter is in free running mode to generate periodic interrupts. + \param [in] ticks Number of ticks between two interrupts. + \return 0 Function succeeded. + \return 1 Function failed. + \note When the variable __Vendor_SysTickConfig is set to 1, then the + function SysTick_Config is not included. In this case, the file device.h + must contain a vendor-specific implementation of this function. + */ +__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks) +{ + if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) + { + return (1UL); /* Reload value impossible */ + } + + SysTick->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ + NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ + SysTick->VAL = 0UL; /* Load the SysTick Counter Value */ + SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0UL); /* Function successful */ +} + +#endif + +/*@} end of CMSIS_Core_SysTickFunctions */ + + + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_CM0PLUS_H_DEPENDANT */ + +#endif /* __CMSIS_GENERIC */ diff --git a/bsp/renesas/ra8m1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm1.h b/bsp/renesas/ra8m1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm1.h new file mode 100644 index 000000000000..76b4569743a6 --- /dev/null +++ b/bsp/renesas/ra8m1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm1.h @@ -0,0 +1,979 @@ +/**************************************************************************//** + * @file core_cm1.h + * @brief CMSIS Cortex-M1 Core Peripheral Access Layer Header File + * @version V1.0.1 + * @date 12. November 2018 + ******************************************************************************/ +/* + * Copyright (c) 2009-2018 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#elif defined (__clang__) + #pragma clang system_header /* treat file as system include file */ +#endif + +#ifndef __CORE_CM1_H_GENERIC +#define __CORE_CM1_H_GENERIC + +#include + +#ifdef __cplusplus + extern "C" { +#endif + +/** + \page CMSIS_MISRA_Exceptions MISRA-C:2004 Compliance Exceptions + CMSIS violates the following MISRA-C:2004 rules: + + \li Required Rule 8.5, object/function definition in header file.
+ Function definitions in header files are used to allow 'inlining'. + + \li Required Rule 18.4, declaration of union type or object of union type: '{...}'.
+ Unions are used for effective representation of core registers. + + \li Advisory Rule 19.7, Function-like macro defined.
+ Function-like macros are used to allow more efficient code. + */ + + +/******************************************************************************* + * CMSIS definitions + ******************************************************************************/ +/** + \ingroup Cortex_M1 + @{ + */ + +#include "cmsis_version.h" + +/* CMSIS CM1 definitions */ +#define __CM1_CMSIS_VERSION_MAIN (__CM_CMSIS_VERSION_MAIN) /*!< \deprecated [31:16] CMSIS HAL main version */ +#define __CM1_CMSIS_VERSION_SUB (__CM_CMSIS_VERSION_SUB) /*!< \deprecated [15:0] CMSIS HAL sub version */ +#define __CM1_CMSIS_VERSION ((__CM1_CMSIS_VERSION_MAIN << 16U) | \ + __CM1_CMSIS_VERSION_SUB ) /*!< \deprecated CMSIS HAL version number */ + +#define __CORTEX_M (1U) /*!< Cortex-M Core */ + +/** __FPU_USED indicates whether an FPU is used or not. + This core does not support an FPU at all +*/ +#define __FPU_USED 0U + +#if defined ( __CC_ARM ) + #if defined __TARGET_FPU_VFP + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) + #if defined __ARM_FP + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __GNUC__ ) + #if defined (__VFP_FP__) && !defined(__SOFTFP__) + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __ICCARM__ ) + #if defined __ARMVFP__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __TI_ARM__ ) + #if defined __TI_VFP_SUPPORT__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __TASKING__ ) + #if defined __FPU_VFP__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __CSMC__ ) + #if ( __CSMC__ & 0x400U) + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#endif + +#include "cmsis_compiler.h" /* CMSIS compiler specific defines */ + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_CM1_H_GENERIC */ + +#ifndef __CMSIS_GENERIC + +#ifndef __CORE_CM1_H_DEPENDANT +#define __CORE_CM1_H_DEPENDANT + +#ifdef __cplusplus + extern "C" { +#endif + +/* check device defines and use defaults */ +#if defined __CHECK_DEVICE_DEFINES + #ifndef __CM1_REV + #define __CM1_REV 0x0100U + #warning "__CM1_REV not defined in device header file; using default!" + #endif + + #ifndef __NVIC_PRIO_BITS + #define __NVIC_PRIO_BITS 2U + #warning "__NVIC_PRIO_BITS not defined in device header file; using default!" + #endif + + #ifndef __Vendor_SysTickConfig + #define __Vendor_SysTickConfig 0U + #warning "__Vendor_SysTickConfig not defined in device header file; using default!" + #endif +#endif + +/* IO definitions (access restrictions to peripheral registers) */ +/** + \defgroup CMSIS_glob_defs CMSIS Global Defines + + IO Type Qualifiers are used + \li to specify the access to peripheral variables. + \li for automatic generation of peripheral register debug information. +*/ +#ifdef __cplusplus + #define __I volatile /*!< Defines 'read only' permissions */ +#else + #define __I volatile const /*!< Defines 'read only' permissions */ +#endif +#define __O volatile /*!< Defines 'write only' permissions */ +#define __IO volatile /*!< Defines 'read / write' permissions */ + +/* following defines should be used for structure members */ +#define __IM volatile const /*! Defines 'read only' structure member permissions */ +#define __OM volatile /*! Defines 'write only' structure member permissions */ +#define __IOM volatile /*! Defines 'read / write' structure member permissions */ + +/*@} end of group Cortex_M1 */ + + + +/******************************************************************************* + * Register Abstraction + Core Register contain: + - Core Register + - Core NVIC Register + - Core SCB Register + - Core SysTick Register + ******************************************************************************/ +/** + \defgroup CMSIS_core_register Defines and Type Definitions + \brief Type definitions and defines for Cortex-M processor based devices. +*/ + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CORE Status and Control Registers + \brief Core Register type definitions. + @{ + */ + +/** + \brief Union type to access the Application Program Status Register (APSR). + */ +typedef union +{ + struct + { + uint32_t _reserved0:28; /*!< bit: 0..27 Reserved */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} APSR_Type; + +/* APSR Register Definitions */ +#define APSR_N_Pos 31U /*!< APSR: N Position */ +#define APSR_N_Msk (1UL << APSR_N_Pos) /*!< APSR: N Mask */ + +#define APSR_Z_Pos 30U /*!< APSR: Z Position */ +#define APSR_Z_Msk (1UL << APSR_Z_Pos) /*!< APSR: Z Mask */ + +#define APSR_C_Pos 29U /*!< APSR: C Position */ +#define APSR_C_Msk (1UL << APSR_C_Pos) /*!< APSR: C Mask */ + +#define APSR_V_Pos 28U /*!< APSR: V Position */ +#define APSR_V_Msk (1UL << APSR_V_Pos) /*!< APSR: V Mask */ + + +/** + \brief Union type to access the Interrupt Program Status Register (IPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:23; /*!< bit: 9..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} IPSR_Type; + +/* IPSR Register Definitions */ +#define IPSR_ISR_Pos 0U /*!< IPSR: ISR Position */ +#define IPSR_ISR_Msk (0x1FFUL /*<< IPSR_ISR_Pos*/) /*!< IPSR: ISR Mask */ + + +/** + \brief Union type to access the Special-Purpose Program Status Registers (xPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:15; /*!< bit: 9..23 Reserved */ + uint32_t T:1; /*!< bit: 24 Thumb bit (read 0) */ + uint32_t _reserved1:3; /*!< bit: 25..27 Reserved */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} xPSR_Type; + +/* xPSR Register Definitions */ +#define xPSR_N_Pos 31U /*!< xPSR: N Position */ +#define xPSR_N_Msk (1UL << xPSR_N_Pos) /*!< xPSR: N Mask */ + +#define xPSR_Z_Pos 30U /*!< xPSR: Z Position */ +#define xPSR_Z_Msk (1UL << xPSR_Z_Pos) /*!< xPSR: Z Mask */ + +#define xPSR_C_Pos 29U /*!< xPSR: C Position */ +#define xPSR_C_Msk (1UL << xPSR_C_Pos) /*!< xPSR: C Mask */ + +#define xPSR_V_Pos 28U /*!< xPSR: V Position */ +#define xPSR_V_Msk (1UL << xPSR_V_Pos) /*!< xPSR: V Mask */ + +#define xPSR_T_Pos 24U /*!< xPSR: T Position */ +#define xPSR_T_Msk (1UL << xPSR_T_Pos) /*!< xPSR: T Mask */ + +#define xPSR_ISR_Pos 0U /*!< xPSR: ISR Position */ +#define xPSR_ISR_Msk (0x1FFUL /*<< xPSR_ISR_Pos*/) /*!< xPSR: ISR Mask */ + + +/** + \brief Union type to access the Control Registers (CONTROL). + */ +typedef union +{ + struct + { + uint32_t _reserved0:1; /*!< bit: 0 Reserved */ + uint32_t SPSEL:1; /*!< bit: 1 Stack to be used */ + uint32_t _reserved1:30; /*!< bit: 2..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} CONTROL_Type; + +/* CONTROL Register Definitions */ +#define CONTROL_SPSEL_Pos 1U /*!< CONTROL: SPSEL Position */ +#define CONTROL_SPSEL_Msk (1UL << CONTROL_SPSEL_Pos) /*!< CONTROL: SPSEL Mask */ + +/*@} end of group CMSIS_CORE */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_NVIC Nested Vectored Interrupt Controller (NVIC) + \brief Type definitions for the NVIC Registers + @{ + */ + +/** + \brief Structure type to access the Nested Vectored Interrupt Controller (NVIC). + */ +typedef struct +{ + __IOM uint32_t ISER[1U]; /*!< Offset: 0x000 (R/W) Interrupt Set Enable Register */ + uint32_t RESERVED0[31U]; + __IOM uint32_t ICER[1U]; /*!< Offset: 0x080 (R/W) Interrupt Clear Enable Register */ + uint32_t RSERVED1[31U]; + __IOM uint32_t ISPR[1U]; /*!< Offset: 0x100 (R/W) Interrupt Set Pending Register */ + uint32_t RESERVED2[31U]; + __IOM uint32_t ICPR[1U]; /*!< Offset: 0x180 (R/W) Interrupt Clear Pending Register */ + uint32_t RESERVED3[31U]; + uint32_t RESERVED4[64U]; + __IOM uint32_t IP[8U]; /*!< Offset: 0x300 (R/W) Interrupt Priority Register */ +} NVIC_Type; + +/*@} end of group CMSIS_NVIC */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SCB System Control Block (SCB) + \brief Type definitions for the System Control Block Registers + @{ + */ + +/** + \brief Structure type to access the System Control Block (SCB). + */ +typedef struct +{ + __IM uint32_t CPUID; /*!< Offset: 0x000 (R/ ) CPUID Base Register */ + __IOM uint32_t ICSR; /*!< Offset: 0x004 (R/W) Interrupt Control and State Register */ + uint32_t RESERVED0; + __IOM uint32_t AIRCR; /*!< Offset: 0x00C (R/W) Application Interrupt and Reset Control Register */ + __IOM uint32_t SCR; /*!< Offset: 0x010 (R/W) System Control Register */ + __IOM uint32_t CCR; /*!< Offset: 0x014 (R/W) Configuration Control Register */ + uint32_t RESERVED1; + __IOM uint32_t SHP[2U]; /*!< Offset: 0x01C (R/W) System Handlers Priority Registers. [0] is RESERVED */ + __IOM uint32_t SHCSR; /*!< Offset: 0x024 (R/W) System Handler Control and State Register */ +} SCB_Type; + +/* SCB CPUID Register Definitions */ +#define SCB_CPUID_IMPLEMENTER_Pos 24U /*!< SCB CPUID: IMPLEMENTER Position */ +#define SCB_CPUID_IMPLEMENTER_Msk (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos) /*!< SCB CPUID: IMPLEMENTER Mask */ + +#define SCB_CPUID_VARIANT_Pos 20U /*!< SCB CPUID: VARIANT Position */ +#define SCB_CPUID_VARIANT_Msk (0xFUL << SCB_CPUID_VARIANT_Pos) /*!< SCB CPUID: VARIANT Mask */ + +#define SCB_CPUID_ARCHITECTURE_Pos 16U /*!< SCB CPUID: ARCHITECTURE Position */ +#define SCB_CPUID_ARCHITECTURE_Msk (0xFUL << SCB_CPUID_ARCHITECTURE_Pos) /*!< SCB CPUID: ARCHITECTURE Mask */ + +#define SCB_CPUID_PARTNO_Pos 4U /*!< SCB CPUID: PARTNO Position */ +#define SCB_CPUID_PARTNO_Msk (0xFFFUL << SCB_CPUID_PARTNO_Pos) /*!< SCB CPUID: PARTNO Mask */ + +#define SCB_CPUID_REVISION_Pos 0U /*!< SCB CPUID: REVISION Position */ +#define SCB_CPUID_REVISION_Msk (0xFUL /*<< SCB_CPUID_REVISION_Pos*/) /*!< SCB CPUID: REVISION Mask */ + +/* SCB Interrupt Control State Register Definitions */ +#define SCB_ICSR_NMIPENDSET_Pos 31U /*!< SCB ICSR: NMIPENDSET Position */ +#define SCB_ICSR_NMIPENDSET_Msk (1UL << SCB_ICSR_NMIPENDSET_Pos) /*!< SCB ICSR: NMIPENDSET Mask */ + +#define SCB_ICSR_PENDSVSET_Pos 28U /*!< SCB ICSR: PENDSVSET Position */ +#define SCB_ICSR_PENDSVSET_Msk (1UL << SCB_ICSR_PENDSVSET_Pos) /*!< SCB ICSR: PENDSVSET Mask */ + +#define SCB_ICSR_PENDSVCLR_Pos 27U /*!< SCB ICSR: PENDSVCLR Position */ +#define SCB_ICSR_PENDSVCLR_Msk (1UL << SCB_ICSR_PENDSVCLR_Pos) /*!< SCB ICSR: PENDSVCLR Mask */ + +#define SCB_ICSR_PENDSTSET_Pos 26U /*!< SCB ICSR: PENDSTSET Position */ +#define SCB_ICSR_PENDSTSET_Msk (1UL << SCB_ICSR_PENDSTSET_Pos) /*!< SCB ICSR: PENDSTSET Mask */ + +#define SCB_ICSR_PENDSTCLR_Pos 25U /*!< SCB ICSR: PENDSTCLR Position */ +#define SCB_ICSR_PENDSTCLR_Msk (1UL << SCB_ICSR_PENDSTCLR_Pos) /*!< SCB ICSR: PENDSTCLR Mask */ + +#define SCB_ICSR_ISRPREEMPT_Pos 23U /*!< SCB ICSR: ISRPREEMPT Position */ +#define SCB_ICSR_ISRPREEMPT_Msk (1UL << SCB_ICSR_ISRPREEMPT_Pos) /*!< SCB ICSR: ISRPREEMPT Mask */ + +#define SCB_ICSR_ISRPENDING_Pos 22U /*!< SCB ICSR: ISRPENDING Position */ +#define SCB_ICSR_ISRPENDING_Msk (1UL << SCB_ICSR_ISRPENDING_Pos) /*!< SCB ICSR: ISRPENDING Mask */ + +#define SCB_ICSR_VECTPENDING_Pos 12U /*!< SCB ICSR: VECTPENDING Position */ +#define SCB_ICSR_VECTPENDING_Msk (0x1FFUL << SCB_ICSR_VECTPENDING_Pos) /*!< SCB ICSR: VECTPENDING Mask */ + +#define SCB_ICSR_VECTACTIVE_Pos 0U /*!< SCB ICSR: VECTACTIVE Position */ +#define SCB_ICSR_VECTACTIVE_Msk (0x1FFUL /*<< SCB_ICSR_VECTACTIVE_Pos*/) /*!< SCB ICSR: VECTACTIVE Mask */ + +/* SCB Application Interrupt and Reset Control Register Definitions */ +#define SCB_AIRCR_VECTKEY_Pos 16U /*!< SCB AIRCR: VECTKEY Position */ +#define SCB_AIRCR_VECTKEY_Msk (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos) /*!< SCB AIRCR: VECTKEY Mask */ + +#define SCB_AIRCR_VECTKEYSTAT_Pos 16U /*!< SCB AIRCR: VECTKEYSTAT Position */ +#define SCB_AIRCR_VECTKEYSTAT_Msk (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos) /*!< SCB AIRCR: VECTKEYSTAT Mask */ + +#define SCB_AIRCR_ENDIANESS_Pos 15U /*!< SCB AIRCR: ENDIANESS Position */ +#define SCB_AIRCR_ENDIANESS_Msk (1UL << SCB_AIRCR_ENDIANESS_Pos) /*!< SCB AIRCR: ENDIANESS Mask */ + +#define SCB_AIRCR_SYSRESETREQ_Pos 2U /*!< SCB AIRCR: SYSRESETREQ Position */ +#define SCB_AIRCR_SYSRESETREQ_Msk (1UL << SCB_AIRCR_SYSRESETREQ_Pos) /*!< SCB AIRCR: SYSRESETREQ Mask */ + +#define SCB_AIRCR_VECTCLRACTIVE_Pos 1U /*!< SCB AIRCR: VECTCLRACTIVE Position */ +#define SCB_AIRCR_VECTCLRACTIVE_Msk (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos) /*!< SCB AIRCR: VECTCLRACTIVE Mask */ + +/* SCB System Control Register Definitions */ +#define SCB_SCR_SEVONPEND_Pos 4U /*!< SCB SCR: SEVONPEND Position */ +#define SCB_SCR_SEVONPEND_Msk (1UL << SCB_SCR_SEVONPEND_Pos) /*!< SCB SCR: SEVONPEND Mask */ + +#define SCB_SCR_SLEEPDEEP_Pos 2U /*!< SCB SCR: SLEEPDEEP Position */ +#define SCB_SCR_SLEEPDEEP_Msk (1UL << SCB_SCR_SLEEPDEEP_Pos) /*!< SCB SCR: SLEEPDEEP Mask */ + +#define SCB_SCR_SLEEPONEXIT_Pos 1U /*!< SCB SCR: SLEEPONEXIT Position */ +#define SCB_SCR_SLEEPONEXIT_Msk (1UL << SCB_SCR_SLEEPONEXIT_Pos) /*!< SCB SCR: SLEEPONEXIT Mask */ + +/* SCB Configuration Control Register Definitions */ +#define SCB_CCR_STKALIGN_Pos 9U /*!< SCB CCR: STKALIGN Position */ +#define SCB_CCR_STKALIGN_Msk (1UL << SCB_CCR_STKALIGN_Pos) /*!< SCB CCR: STKALIGN Mask */ + +#define SCB_CCR_UNALIGN_TRP_Pos 3U /*!< SCB CCR: UNALIGN_TRP Position */ +#define SCB_CCR_UNALIGN_TRP_Msk (1UL << SCB_CCR_UNALIGN_TRP_Pos) /*!< SCB CCR: UNALIGN_TRP Mask */ + +/* SCB System Handler Control and State Register Definitions */ +#define SCB_SHCSR_SVCALLPENDED_Pos 15U /*!< SCB SHCSR: SVCALLPENDED Position */ +#define SCB_SHCSR_SVCALLPENDED_Msk (1UL << SCB_SHCSR_SVCALLPENDED_Pos) /*!< SCB SHCSR: SVCALLPENDED Mask */ + +/*@} end of group CMSIS_SCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SCnSCB System Controls not in SCB (SCnSCB) + \brief Type definitions for the System Control and ID Register not in the SCB + @{ + */ + +/** + \brief Structure type to access the System Control and ID Register not in the SCB. + */ +typedef struct +{ + uint32_t RESERVED0[2U]; + __IOM uint32_t ACTLR; /*!< Offset: 0x008 (R/W) Auxiliary Control Register */ +} SCnSCB_Type; + +/* Auxiliary Control Register Definitions */ +#define SCnSCB_ACTLR_ITCMUAEN_Pos 4U /*!< ACTLR: Instruction TCM Upper Alias Enable Position */ +#define SCnSCB_ACTLR_ITCMUAEN_Msk (1UL << SCnSCB_ACTLR_ITCMUAEN_Pos) /*!< ACTLR: Instruction TCM Upper Alias Enable Mask */ + +#define SCnSCB_ACTLR_ITCMLAEN_Pos 3U /*!< ACTLR: Instruction TCM Lower Alias Enable Position */ +#define SCnSCB_ACTLR_ITCMLAEN_Msk (1UL << SCnSCB_ACTLR_ITCMLAEN_Pos) /*!< ACTLR: Instruction TCM Lower Alias Enable Mask */ + +/*@} end of group CMSIS_SCnotSCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SysTick System Tick Timer (SysTick) + \brief Type definitions for the System Timer Registers. + @{ + */ + +/** + \brief Structure type to access the System Timer (SysTick). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SysTick Control and Status Register */ + __IOM uint32_t LOAD; /*!< Offset: 0x004 (R/W) SysTick Reload Value Register */ + __IOM uint32_t VAL; /*!< Offset: 0x008 (R/W) SysTick Current Value Register */ + __IM uint32_t CALIB; /*!< Offset: 0x00C (R/ ) SysTick Calibration Register */ +} SysTick_Type; + +/* SysTick Control / Status Register Definitions */ +#define SysTick_CTRL_COUNTFLAG_Pos 16U /*!< SysTick CTRL: COUNTFLAG Position */ +#define SysTick_CTRL_COUNTFLAG_Msk (1UL << SysTick_CTRL_COUNTFLAG_Pos) /*!< SysTick CTRL: COUNTFLAG Mask */ + +#define SysTick_CTRL_CLKSOURCE_Pos 2U /*!< SysTick CTRL: CLKSOURCE Position */ +#define SysTick_CTRL_CLKSOURCE_Msk (1UL << SysTick_CTRL_CLKSOURCE_Pos) /*!< SysTick CTRL: CLKSOURCE Mask */ + +#define SysTick_CTRL_TICKINT_Pos 1U /*!< SysTick CTRL: TICKINT Position */ +#define SysTick_CTRL_TICKINT_Msk (1UL << SysTick_CTRL_TICKINT_Pos) /*!< SysTick CTRL: TICKINT Mask */ + +#define SysTick_CTRL_ENABLE_Pos 0U /*!< SysTick CTRL: ENABLE Position */ +#define SysTick_CTRL_ENABLE_Msk (1UL /*<< SysTick_CTRL_ENABLE_Pos*/) /*!< SysTick CTRL: ENABLE Mask */ + +/* SysTick Reload Register Definitions */ +#define SysTick_LOAD_RELOAD_Pos 0U /*!< SysTick LOAD: RELOAD Position */ +#define SysTick_LOAD_RELOAD_Msk (0xFFFFFFUL /*<< SysTick_LOAD_RELOAD_Pos*/) /*!< SysTick LOAD: RELOAD Mask */ + +/* SysTick Current Register Definitions */ +#define SysTick_VAL_CURRENT_Pos 0U /*!< SysTick VAL: CURRENT Position */ +#define SysTick_VAL_CURRENT_Msk (0xFFFFFFUL /*<< SysTick_VAL_CURRENT_Pos*/) /*!< SysTick VAL: CURRENT Mask */ + +/* SysTick Calibration Register Definitions */ +#define SysTick_CALIB_NOREF_Pos 31U /*!< SysTick CALIB: NOREF Position */ +#define SysTick_CALIB_NOREF_Msk (1UL << SysTick_CALIB_NOREF_Pos) /*!< SysTick CALIB: NOREF Mask */ + +#define SysTick_CALIB_SKEW_Pos 30U /*!< SysTick CALIB: SKEW Position */ +#define SysTick_CALIB_SKEW_Msk (1UL << SysTick_CALIB_SKEW_Pos) /*!< SysTick CALIB: SKEW Mask */ + +#define SysTick_CALIB_TENMS_Pos 0U /*!< SysTick CALIB: TENMS Position */ +#define SysTick_CALIB_TENMS_Msk (0xFFFFFFUL /*<< SysTick_CALIB_TENMS_Pos*/) /*!< SysTick CALIB: TENMS Mask */ + +/*@} end of group CMSIS_SysTick */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CoreDebug Core Debug Registers (CoreDebug) + \brief Cortex-M1 Core Debug Registers (DCB registers, SHCSR, and DFSR) are only accessible over DAP and not via processor. + Therefore they are not covered by the Cortex-M1 header file. + @{ + */ +/*@} end of group CMSIS_CoreDebug */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_bitfield Core register bit field macros + \brief Macros for use with bit field definitions (xxx_Pos, xxx_Msk). + @{ + */ + +/** + \brief Mask and shift a bit field value for use in a register bit range. + \param[in] field Name of the register bit field. + \param[in] value Value of the bit field. This parameter is interpreted as an uint32_t type. + \return Masked and shifted value. +*/ +#define _VAL2FLD(field, value) (((uint32_t)(value) << field ## _Pos) & field ## _Msk) + +/** + \brief Mask and shift a register value to extract a bit filed value. + \param[in] field Name of the register bit field. + \param[in] value Value of register. This parameter is interpreted as an uint32_t type. + \return Masked and shifted bit field value. +*/ +#define _FLD2VAL(field, value) (((uint32_t)(value) & field ## _Msk) >> field ## _Pos) + +/*@} end of group CMSIS_core_bitfield */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_base Core Definitions + \brief Definitions for base addresses, unions, and structures. + @{ + */ + +/* Memory mapping of Core Hardware */ +#define SCS_BASE (0xE000E000UL) /*!< System Control Space Base Address */ +#define SysTick_BASE (SCS_BASE + 0x0010UL) /*!< SysTick Base Address */ +#define NVIC_BASE (SCS_BASE + 0x0100UL) /*!< NVIC Base Address */ +#define SCB_BASE (SCS_BASE + 0x0D00UL) /*!< System Control Block Base Address */ + +#define SCnSCB ((SCnSCB_Type *) SCS_BASE ) /*!< System control Register not in SCB */ +#define SCB ((SCB_Type *) SCB_BASE ) /*!< SCB configuration struct */ +#define SysTick ((SysTick_Type *) SysTick_BASE ) /*!< SysTick configuration struct */ +#define NVIC ((NVIC_Type *) NVIC_BASE ) /*!< NVIC configuration struct */ + + +/*@} */ + + + +/******************************************************************************* + * Hardware Abstraction Layer + Core Function Interface contains: + - Core NVIC Functions + - Core SysTick Functions + - Core Register Access Functions + ******************************************************************************/ +/** + \defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference +*/ + + + +/* ########################## NVIC functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_NVICFunctions NVIC Functions + \brief Functions that manage interrupts and exceptions via the NVIC. + @{ + */ + +#ifdef CMSIS_NVIC_VIRTUAL + #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE + #define CMSIS_NVIC_VIRTUAL_HEADER_FILE "cmsis_nvic_virtual.h" + #endif + #include CMSIS_NVIC_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetPriorityGrouping __NVIC_SetPriorityGrouping + #define NVIC_GetPriorityGrouping __NVIC_GetPriorityGrouping + #define NVIC_EnableIRQ __NVIC_EnableIRQ + #define NVIC_GetEnableIRQ __NVIC_GetEnableIRQ + #define NVIC_DisableIRQ __NVIC_DisableIRQ + #define NVIC_GetPendingIRQ __NVIC_GetPendingIRQ + #define NVIC_SetPendingIRQ __NVIC_SetPendingIRQ + #define NVIC_ClearPendingIRQ __NVIC_ClearPendingIRQ +/*#define NVIC_GetActive __NVIC_GetActive not available for Cortex-M1 */ + #define NVIC_SetPriority __NVIC_SetPriority + #define NVIC_GetPriority __NVIC_GetPriority + #define NVIC_SystemReset __NVIC_SystemReset +#endif /* CMSIS_NVIC_VIRTUAL */ + +#ifdef CMSIS_VECTAB_VIRTUAL + #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE + #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE "cmsis_vectab_virtual.h" + #endif + #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetVector __NVIC_SetVector + #define NVIC_GetVector __NVIC_GetVector +#endif /* (CMSIS_VECTAB_VIRTUAL) */ + +#define NVIC_USER_IRQ_OFFSET 16 + + +/* The following EXC_RETURN values are saved the LR on exception entry */ +#define EXC_RETURN_HANDLER (0xFFFFFFF1UL) /* return to Handler mode, uses MSP after return */ +#define EXC_RETURN_THREAD_MSP (0xFFFFFFF9UL) /* return to Thread mode, uses MSP after return */ +#define EXC_RETURN_THREAD_PSP (0xFFFFFFFDUL) /* return to Thread mode, uses PSP after return */ + + +/* Interrupt Priorities are WORD accessible only under Armv6-M */ +/* The following MACROS handle generation of the register offset and byte masks */ +#define _BIT_SHIFT(IRQn) ( ((((uint32_t)(int32_t)(IRQn)) ) & 0x03UL) * 8UL) +#define _SHP_IDX(IRQn) ( (((((uint32_t)(int32_t)(IRQn)) & 0x0FUL)-8UL) >> 2UL) ) +#define _IP_IDX(IRQn) ( (((uint32_t)(int32_t)(IRQn)) >> 2UL) ) + +#define __NVIC_SetPriorityGrouping(X) (void)(X) +#define __NVIC_GetPriorityGrouping() (0U) + +/** + \brief Enable Interrupt + \details Enables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + __COMPILER_BARRIER(); + NVIC->ISER[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __COMPILER_BARRIER(); + } +} + + +/** + \brief Get Interrupt Enable status + \details Returns a device specific interrupt enable status from the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt is not enabled. + \return 1 Interrupt is enabled. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISER[0U] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Disable Interrupt + \details Disables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_DisableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICER[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __DSB(); + __ISB(); + } +} + + +/** + \brief Get Pending Interrupt + \details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not pending. + \return 1 Interrupt status is pending. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISPR[0U] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Pending Interrupt + \details Sets the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ISPR[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Clear Pending Interrupt + \details Clears the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICPR[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Set Interrupt Priority + \details Sets the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \param [in] priority Priority to set. + \note The priority cannot be set for every processor exception. + */ +__STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->IP[_IP_IDX(IRQn)] = ((uint32_t)(NVIC->IP[_IP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | + (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn))); + } + else + { + SCB->SHP[_SHP_IDX(IRQn)] = ((uint32_t)(SCB->SHP[_SHP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | + (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn))); + } +} + + +/** + \brief Get Interrupt Priority + \details Reads the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Interrupt Priority. + Value is aligned automatically to the implemented priority bits of the microcontroller. + */ +__STATIC_INLINE uint32_t __NVIC_GetPriority(IRQn_Type IRQn) +{ + + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->IP[ _IP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return((uint32_t)(((SCB->SHP[_SHP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS))); + } +} + + +/** + \brief Encode Priority + \details Encodes the priority for an interrupt with the given priority group, + preemptive priority value, and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Used priority group. + \param [in] PreemptPriority Preemptive priority value (starting from 0). + \param [in] SubPriority Subpriority value (starting from 0). + \return Encoded priority. Value can be used in the function \ref NVIC_SetPriority(). + */ +__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + return ( + ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) | + ((SubPriority & (uint32_t)((1UL << (SubPriorityBits )) - 1UL))) + ); +} + + +/** + \brief Decode Priority + \details Decodes an interrupt priority value with a given priority group to + preemptive priority value and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set. + \param [in] Priority Priority value, which can be retrieved with the function \ref NVIC_GetPriority(). + \param [in] PriorityGroup Used priority group. + \param [out] pPreemptPriority Preemptive priority value (starting from 0). + \param [out] pSubPriority Subpriority value (starting from 0). + */ +__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* const pPreemptPriority, uint32_t* const pSubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + *pPreemptPriority = (Priority >> SubPriorityBits) & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL); + *pSubPriority = (Priority ) & (uint32_t)((1UL << (SubPriorityBits )) - 1UL); +} + + + +/** + \brief Set Interrupt Vector + \details Sets an interrupt vector in SRAM based interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + Address 0 must be mapped to SRAM. + \param [in] IRQn Interrupt number + \param [in] vector Address of interrupt handler function + */ +__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector) +{ + uint32_t *vectors = (uint32_t *)0x0U; + vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET] = vector; + /* ARM Application Note 321 states that the M1 does not require the architectural barrier */ +} + + +/** + \brief Get Interrupt Vector + \details Reads an interrupt vector from interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Address of interrupt handler function + */ +__STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn) +{ + uint32_t *vectors = (uint32_t *)0x0U; + return vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET]; +} + + +/** + \brief System Reset + \details Initiates a system reset request to reset the MCU. + */ +__NO_RETURN __STATIC_INLINE void __NVIC_SystemReset(void) +{ + __DSB(); /* Ensure all outstanding memory accesses included + buffered write are completed before reset */ + SCB->AIRCR = ((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + SCB_AIRCR_SYSRESETREQ_Msk); + __DSB(); /* Ensure completion of memory access */ + + for(;;) /* wait until reset */ + { + __NOP(); + } +} + +/*@} end of CMSIS_Core_NVICFunctions */ + + +/* ########################## FPU functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_FpuFunctions FPU Functions + \brief Function that provides FPU type. + @{ + */ + +/** + \brief get FPU type + \details returns the FPU type + \returns + - \b 0: No FPU + - \b 1: Single precision FPU + - \b 2: Double + Single precision FPU + */ +__STATIC_INLINE uint32_t SCB_GetFPUType(void) +{ + return 0U; /* No FPU */ +} + + +/*@} end of CMSIS_Core_FpuFunctions */ + + + +/* ################################## SysTick function ############################################ */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SysTickFunctions SysTick Functions + \brief Functions that configure the System. + @{ + */ + +#if defined (__Vendor_SysTickConfig) && (__Vendor_SysTickConfig == 0U) + +/** + \brief System Tick Configuration + \details Initializes the System Timer and its interrupt, and starts the System Tick Timer. + Counter is in free running mode to generate periodic interrupts. + \param [in] ticks Number of ticks between two interrupts. + \return 0 Function succeeded. + \return 1 Function failed. + \note When the variable __Vendor_SysTickConfig is set to 1, then the + function SysTick_Config is not included. In this case, the file device.h + must contain a vendor-specific implementation of this function. + */ +__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks) +{ + if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) + { + return (1UL); /* Reload value impossible */ + } + + SysTick->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ + NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ + SysTick->VAL = 0UL; /* Load the SysTick Counter Value */ + SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0UL); /* Function successful */ +} + +#endif + +/*@} end of CMSIS_Core_SysTickFunctions */ + + + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_CM1_H_DEPENDANT */ + +#endif /* __CMSIS_GENERIC */ diff --git a/bsp/renesas/ra8m1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm23.h b/bsp/renesas/ra8m1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm23.h new file mode 100644 index 000000000000..55fff9950965 --- /dev/null +++ b/bsp/renesas/ra8m1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm23.h @@ -0,0 +1,2297 @@ +/**************************************************************************//** + * @file core_cm23.h + * @brief CMSIS Cortex-M23 Core Peripheral Access Layer Header File + * @version V5.1.0 + * @date 11. February 2020 + ******************************************************************************/ +/* + * Copyright (c) 2009-2020 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#elif defined (__clang__) + #pragma clang system_header /* treat file as system include file */ +#elif defined ( __GNUC__ ) + #pragma GCC diagnostic ignored "-Wpedantic" /* disable pedantic warning due to unnamed structs/unions */ +#endif + +#ifndef __CORE_CM23_H_GENERIC +#define __CORE_CM23_H_GENERIC + +#include + +#ifdef __cplusplus + extern "C" { +#endif + +/** + \page CMSIS_MISRA_Exceptions MISRA-C:2004 Compliance Exceptions + CMSIS violates the following MISRA-C:2004 rules: + + \li Required Rule 8.5, object/function definition in header file.
+ Function definitions in header files are used to allow 'inlining'. + + \li Required Rule 18.4, declaration of union type or object of union type: '{...}'.
+ Unions are used for effective representation of core registers. + + \li Advisory Rule 19.7, Function-like macro defined.
+ Function-like macros are used to allow more efficient code. + */ + + +/******************************************************************************* + * CMSIS definitions + ******************************************************************************/ +/** + \ingroup Cortex_M23 + @{ + */ + +#include "cmsis_version.h" + +/* CMSIS definitions */ +#define __CM23_CMSIS_VERSION_MAIN (__CM_CMSIS_VERSION_MAIN) /*!< \deprecated [31:16] CMSIS HAL main version */ +#define __CM23_CMSIS_VERSION_SUB (__CM_CMSIS_VERSION_SUB) /*!< \deprecated [15:0] CMSIS HAL sub version */ +#define __CM23_CMSIS_VERSION ((__CM23_CMSIS_VERSION_MAIN << 16U) | \ + __CM23_CMSIS_VERSION_SUB ) /*!< \deprecated CMSIS HAL version number */ + +#define __CORTEX_M (23U) /*!< Cortex-M Core */ + +/** __FPU_USED indicates whether an FPU is used or not. + This core does not support an FPU at all +*/ +#define __FPU_USED 0U + +#if defined ( __CC_ARM ) + #if defined __TARGET_FPU_VFP + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) + #if defined __ARM_FP + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __GNUC__ ) + #if defined (__VFP_FP__) && !defined(__SOFTFP__) + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __ICCARM__ ) + #if defined __ARMVFP__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __TI_ARM__ ) + #if defined __TI_VFP_SUPPORT__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __TASKING__ ) + #if defined __FPU_VFP__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __CSMC__ ) + #if ( __CSMC__ & 0x400U) + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#endif + +#include "cmsis_compiler.h" /* CMSIS compiler specific defines */ + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_CM23_H_GENERIC */ + +#ifndef __CMSIS_GENERIC + +#ifndef __CORE_CM23_H_DEPENDANT +#define __CORE_CM23_H_DEPENDANT + +#ifdef __cplusplus + extern "C" { +#endif + +/* check device defines and use defaults */ +#if defined __CHECK_DEVICE_DEFINES + #ifndef __CM23_REV + #define __CM23_REV 0x0000U + #warning "__CM23_REV not defined in device header file; using default!" + #endif + + #ifndef __FPU_PRESENT + #define __FPU_PRESENT 0U + #warning "__FPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __MPU_PRESENT + #define __MPU_PRESENT 0U + #warning "__MPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __SAUREGION_PRESENT + #define __SAUREGION_PRESENT 0U + #warning "__SAUREGION_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __VTOR_PRESENT + #define __VTOR_PRESENT 0U + #warning "__VTOR_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __NVIC_PRIO_BITS + #define __NVIC_PRIO_BITS 2U + #warning "__NVIC_PRIO_BITS not defined in device header file; using default!" + #endif + + #ifndef __Vendor_SysTickConfig + #define __Vendor_SysTickConfig 0U + #warning "__Vendor_SysTickConfig not defined in device header file; using default!" + #endif + + #ifndef __ETM_PRESENT + #define __ETM_PRESENT 0U + #warning "__ETM_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __MTB_PRESENT + #define __MTB_PRESENT 0U + #warning "__MTB_PRESENT not defined in device header file; using default!" + #endif + +#endif + +/* IO definitions (access restrictions to peripheral registers) */ +/** + \defgroup CMSIS_glob_defs CMSIS Global Defines + + IO Type Qualifiers are used + \li to specify the access to peripheral variables. + \li for automatic generation of peripheral register debug information. +*/ +#ifdef __cplusplus + #define __I volatile /*!< Defines 'read only' permissions */ +#else + #define __I volatile const /*!< Defines 'read only' permissions */ +#endif +#define __O volatile /*!< Defines 'write only' permissions */ +#define __IO volatile /*!< Defines 'read / write' permissions */ + +/* following defines should be used for structure members */ +#define __IM volatile const /*! Defines 'read only' structure member permissions */ +#define __OM volatile /*! Defines 'write only' structure member permissions */ +#define __IOM volatile /*! Defines 'read / write' structure member permissions */ + +/*@} end of group Cortex_M23 */ + + + +/******************************************************************************* + * Register Abstraction + Core Register contain: + - Core Register + - Core NVIC Register + - Core SCB Register + - Core SysTick Register + - Core Debug Register + - Core MPU Register + - Core SAU Register + ******************************************************************************/ +/** + \defgroup CMSIS_core_register Defines and Type Definitions + \brief Type definitions and defines for Cortex-M processor based devices. +*/ + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CORE Status and Control Registers + \brief Core Register type definitions. + @{ + */ + +/** + \brief Union type to access the Application Program Status Register (APSR). + */ +typedef union +{ + struct + { + uint32_t _reserved0:28; /*!< bit: 0..27 Reserved */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} APSR_Type; + +/* APSR Register Definitions */ +#define APSR_N_Pos 31U /*!< APSR: N Position */ +#define APSR_N_Msk (1UL << APSR_N_Pos) /*!< APSR: N Mask */ + +#define APSR_Z_Pos 30U /*!< APSR: Z Position */ +#define APSR_Z_Msk (1UL << APSR_Z_Pos) /*!< APSR: Z Mask */ + +#define APSR_C_Pos 29U /*!< APSR: C Position */ +#define APSR_C_Msk (1UL << APSR_C_Pos) /*!< APSR: C Mask */ + +#define APSR_V_Pos 28U /*!< APSR: V Position */ +#define APSR_V_Msk (1UL << APSR_V_Pos) /*!< APSR: V Mask */ + + +/** + \brief Union type to access the Interrupt Program Status Register (IPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:23; /*!< bit: 9..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} IPSR_Type; + +/* IPSR Register Definitions */ +#define IPSR_ISR_Pos 0U /*!< IPSR: ISR Position */ +#define IPSR_ISR_Msk (0x1FFUL /*<< IPSR_ISR_Pos*/) /*!< IPSR: ISR Mask */ + + +/** + \brief Union type to access the Special-Purpose Program Status Registers (xPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:15; /*!< bit: 9..23 Reserved */ + uint32_t T:1; /*!< bit: 24 Thumb bit (read 0) */ + uint32_t _reserved1:3; /*!< bit: 25..27 Reserved */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} xPSR_Type; + +/* xPSR Register Definitions */ +#define xPSR_N_Pos 31U /*!< xPSR: N Position */ +#define xPSR_N_Msk (1UL << xPSR_N_Pos) /*!< xPSR: N Mask */ + +#define xPSR_Z_Pos 30U /*!< xPSR: Z Position */ +#define xPSR_Z_Msk (1UL << xPSR_Z_Pos) /*!< xPSR: Z Mask */ + +#define xPSR_C_Pos 29U /*!< xPSR: C Position */ +#define xPSR_C_Msk (1UL << xPSR_C_Pos) /*!< xPSR: C Mask */ + +#define xPSR_V_Pos 28U /*!< xPSR: V Position */ +#define xPSR_V_Msk (1UL << xPSR_V_Pos) /*!< xPSR: V Mask */ + +#define xPSR_T_Pos 24U /*!< xPSR: T Position */ +#define xPSR_T_Msk (1UL << xPSR_T_Pos) /*!< xPSR: T Mask */ + +#define xPSR_ISR_Pos 0U /*!< xPSR: ISR Position */ +#define xPSR_ISR_Msk (0x1FFUL /*<< xPSR_ISR_Pos*/) /*!< xPSR: ISR Mask */ + + +/** + \brief Union type to access the Control Registers (CONTROL). + */ +typedef union +{ + struct + { + uint32_t nPRIV:1; /*!< bit: 0 Execution privilege in Thread mode */ + uint32_t SPSEL:1; /*!< bit: 1 Stack-pointer select */ + uint32_t _reserved1:30; /*!< bit: 2..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} CONTROL_Type; + +/* CONTROL Register Definitions */ +#define CONTROL_SPSEL_Pos 1U /*!< CONTROL: SPSEL Position */ +#define CONTROL_SPSEL_Msk (1UL << CONTROL_SPSEL_Pos) /*!< CONTROL: SPSEL Mask */ + +#define CONTROL_nPRIV_Pos 0U /*!< CONTROL: nPRIV Position */ +#define CONTROL_nPRIV_Msk (1UL /*<< CONTROL_nPRIV_Pos*/) /*!< CONTROL: nPRIV Mask */ + +/*@} end of group CMSIS_CORE */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_NVIC Nested Vectored Interrupt Controller (NVIC) + \brief Type definitions for the NVIC Registers + @{ + */ + +/** + \brief Structure type to access the Nested Vectored Interrupt Controller (NVIC). + */ +typedef struct +{ + __IOM uint32_t ISER[16U]; /*!< Offset: 0x000 (R/W) Interrupt Set Enable Register */ + uint32_t RESERVED0[16U]; + __IOM uint32_t ICER[16U]; /*!< Offset: 0x080 (R/W) Interrupt Clear Enable Register */ + uint32_t RSERVED1[16U]; + __IOM uint32_t ISPR[16U]; /*!< Offset: 0x100 (R/W) Interrupt Set Pending Register */ + uint32_t RESERVED2[16U]; + __IOM uint32_t ICPR[16U]; /*!< Offset: 0x180 (R/W) Interrupt Clear Pending Register */ + uint32_t RESERVED3[16U]; + __IOM uint32_t IABR[16U]; /*!< Offset: 0x200 (R/W) Interrupt Active bit Register */ + uint32_t RESERVED4[16U]; + __IOM uint32_t ITNS[16U]; /*!< Offset: 0x280 (R/W) Interrupt Non-Secure State Register */ + uint32_t RESERVED5[16U]; + __IOM uint32_t IPR[124U]; /*!< Offset: 0x300 (R/W) Interrupt Priority Register */ +} NVIC_Type; + +/*@} end of group CMSIS_NVIC */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SCB System Control Block (SCB) + \brief Type definitions for the System Control Block Registers + @{ + */ + +/** + \brief Structure type to access the System Control Block (SCB). + */ +typedef struct +{ + __IM uint32_t CPUID; /*!< Offset: 0x000 (R/ ) CPUID Base Register */ + __IOM uint32_t ICSR; /*!< Offset: 0x004 (R/W) Interrupt Control and State Register */ +#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U) + __IOM uint32_t VTOR; /*!< Offset: 0x008 (R/W) Vector Table Offset Register */ +#else + uint32_t RESERVED0; +#endif + __IOM uint32_t AIRCR; /*!< Offset: 0x00C (R/W) Application Interrupt and Reset Control Register */ + __IOM uint32_t SCR; /*!< Offset: 0x010 (R/W) System Control Register */ + __IOM uint32_t CCR; /*!< Offset: 0x014 (R/W) Configuration Control Register */ + uint32_t RESERVED1; + __IOM uint32_t SHPR[2U]; /*!< Offset: 0x01C (R/W) System Handlers Priority Registers. [0] is RESERVED */ + __IOM uint32_t SHCSR; /*!< Offset: 0x024 (R/W) System Handler Control and State Register */ +} SCB_Type; + +/* SCB CPUID Register Definitions */ +#define SCB_CPUID_IMPLEMENTER_Pos 24U /*!< SCB CPUID: IMPLEMENTER Position */ +#define SCB_CPUID_IMPLEMENTER_Msk (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos) /*!< SCB CPUID: IMPLEMENTER Mask */ + +#define SCB_CPUID_VARIANT_Pos 20U /*!< SCB CPUID: VARIANT Position */ +#define SCB_CPUID_VARIANT_Msk (0xFUL << SCB_CPUID_VARIANT_Pos) /*!< SCB CPUID: VARIANT Mask */ + +#define SCB_CPUID_ARCHITECTURE_Pos 16U /*!< SCB CPUID: ARCHITECTURE Position */ +#define SCB_CPUID_ARCHITECTURE_Msk (0xFUL << SCB_CPUID_ARCHITECTURE_Pos) /*!< SCB CPUID: ARCHITECTURE Mask */ + +#define SCB_CPUID_PARTNO_Pos 4U /*!< SCB CPUID: PARTNO Position */ +#define SCB_CPUID_PARTNO_Msk (0xFFFUL << SCB_CPUID_PARTNO_Pos) /*!< SCB CPUID: PARTNO Mask */ + +#define SCB_CPUID_REVISION_Pos 0U /*!< SCB CPUID: REVISION Position */ +#define SCB_CPUID_REVISION_Msk (0xFUL /*<< SCB_CPUID_REVISION_Pos*/) /*!< SCB CPUID: REVISION Mask */ + +/* SCB Interrupt Control State Register Definitions */ +#define SCB_ICSR_PENDNMISET_Pos 31U /*!< SCB ICSR: PENDNMISET Position */ +#define SCB_ICSR_PENDNMISET_Msk (1UL << SCB_ICSR_PENDNMISET_Pos) /*!< SCB ICSR: PENDNMISET Mask */ + +#define SCB_ICSR_NMIPENDSET_Pos SCB_ICSR_PENDNMISET_Pos /*!< SCB ICSR: NMIPENDSET Position, backward compatibility */ +#define SCB_ICSR_NMIPENDSET_Msk SCB_ICSR_PENDNMISET_Msk /*!< SCB ICSR: NMIPENDSET Mask, backward compatibility */ + +#define SCB_ICSR_PENDNMICLR_Pos 30U /*!< SCB ICSR: PENDNMICLR Position */ +#define SCB_ICSR_PENDNMICLR_Msk (1UL << SCB_ICSR_PENDNMICLR_Pos) /*!< SCB ICSR: PENDNMICLR Mask */ + +#define SCB_ICSR_PENDSVSET_Pos 28U /*!< SCB ICSR: PENDSVSET Position */ +#define SCB_ICSR_PENDSVSET_Msk (1UL << SCB_ICSR_PENDSVSET_Pos) /*!< SCB ICSR: PENDSVSET Mask */ + +#define SCB_ICSR_PENDSVCLR_Pos 27U /*!< SCB ICSR: PENDSVCLR Position */ +#define SCB_ICSR_PENDSVCLR_Msk (1UL << SCB_ICSR_PENDSVCLR_Pos) /*!< SCB ICSR: PENDSVCLR Mask */ + +#define SCB_ICSR_PENDSTSET_Pos 26U /*!< SCB ICSR: PENDSTSET Position */ +#define SCB_ICSR_PENDSTSET_Msk (1UL << SCB_ICSR_PENDSTSET_Pos) /*!< SCB ICSR: PENDSTSET Mask */ + +#define SCB_ICSR_PENDSTCLR_Pos 25U /*!< SCB ICSR: PENDSTCLR Position */ +#define SCB_ICSR_PENDSTCLR_Msk (1UL << SCB_ICSR_PENDSTCLR_Pos) /*!< SCB ICSR: PENDSTCLR Mask */ + +#define SCB_ICSR_STTNS_Pos 24U /*!< SCB ICSR: STTNS Position (Security Extension) */ +#define SCB_ICSR_STTNS_Msk (1UL << SCB_ICSR_STTNS_Pos) /*!< SCB ICSR: STTNS Mask (Security Extension) */ + +#define SCB_ICSR_ISRPREEMPT_Pos 23U /*!< SCB ICSR: ISRPREEMPT Position */ +#define SCB_ICSR_ISRPREEMPT_Msk (1UL << SCB_ICSR_ISRPREEMPT_Pos) /*!< SCB ICSR: ISRPREEMPT Mask */ + +#define SCB_ICSR_ISRPENDING_Pos 22U /*!< SCB ICSR: ISRPENDING Position */ +#define SCB_ICSR_ISRPENDING_Msk (1UL << SCB_ICSR_ISRPENDING_Pos) /*!< SCB ICSR: ISRPENDING Mask */ + +#define SCB_ICSR_VECTPENDING_Pos 12U /*!< SCB ICSR: VECTPENDING Position */ +#define SCB_ICSR_VECTPENDING_Msk (0x1FFUL << SCB_ICSR_VECTPENDING_Pos) /*!< SCB ICSR: VECTPENDING Mask */ + +#define SCB_ICSR_RETTOBASE_Pos 11U /*!< SCB ICSR: RETTOBASE Position */ +#define SCB_ICSR_RETTOBASE_Msk (1UL << SCB_ICSR_RETTOBASE_Pos) /*!< SCB ICSR: RETTOBASE Mask */ + +#define SCB_ICSR_VECTACTIVE_Pos 0U /*!< SCB ICSR: VECTACTIVE Position */ +#define SCB_ICSR_VECTACTIVE_Msk (0x1FFUL /*<< SCB_ICSR_VECTACTIVE_Pos*/) /*!< SCB ICSR: VECTACTIVE Mask */ + +#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U) +/* SCB Vector Table Offset Register Definitions */ +#define SCB_VTOR_TBLOFF_Pos 7U /*!< SCB VTOR: TBLOFF Position */ +#define SCB_VTOR_TBLOFF_Msk (0x1FFFFFFUL << SCB_VTOR_TBLOFF_Pos) /*!< SCB VTOR: TBLOFF Mask */ +#endif + +/* SCB Application Interrupt and Reset Control Register Definitions */ +#define SCB_AIRCR_VECTKEY_Pos 16U /*!< SCB AIRCR: VECTKEY Position */ +#define SCB_AIRCR_VECTKEY_Msk (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos) /*!< SCB AIRCR: VECTKEY Mask */ + +#define SCB_AIRCR_VECTKEYSTAT_Pos 16U /*!< SCB AIRCR: VECTKEYSTAT Position */ +#define SCB_AIRCR_VECTKEYSTAT_Msk (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos) /*!< SCB AIRCR: VECTKEYSTAT Mask */ + +#define SCB_AIRCR_ENDIANESS_Pos 15U /*!< SCB AIRCR: ENDIANESS Position */ +#define SCB_AIRCR_ENDIANESS_Msk (1UL << SCB_AIRCR_ENDIANESS_Pos) /*!< SCB AIRCR: ENDIANESS Mask */ + +#define SCB_AIRCR_PRIS_Pos 14U /*!< SCB AIRCR: PRIS Position */ +#define SCB_AIRCR_PRIS_Msk (1UL << SCB_AIRCR_PRIS_Pos) /*!< SCB AIRCR: PRIS Mask */ + +#define SCB_AIRCR_BFHFNMINS_Pos 13U /*!< SCB AIRCR: BFHFNMINS Position */ +#define SCB_AIRCR_BFHFNMINS_Msk (1UL << SCB_AIRCR_BFHFNMINS_Pos) /*!< SCB AIRCR: BFHFNMINS Mask */ + +#define SCB_AIRCR_SYSRESETREQS_Pos 3U /*!< SCB AIRCR: SYSRESETREQS Position */ +#define SCB_AIRCR_SYSRESETREQS_Msk (1UL << SCB_AIRCR_SYSRESETREQS_Pos) /*!< SCB AIRCR: SYSRESETREQS Mask */ + +#define SCB_AIRCR_SYSRESETREQ_Pos 2U /*!< SCB AIRCR: SYSRESETREQ Position */ +#define SCB_AIRCR_SYSRESETREQ_Msk (1UL << SCB_AIRCR_SYSRESETREQ_Pos) /*!< SCB AIRCR: SYSRESETREQ Mask */ + +#define SCB_AIRCR_VECTCLRACTIVE_Pos 1U /*!< SCB AIRCR: VECTCLRACTIVE Position */ +#define SCB_AIRCR_VECTCLRACTIVE_Msk (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos) /*!< SCB AIRCR: VECTCLRACTIVE Mask */ + +/* SCB System Control Register Definitions */ +#define SCB_SCR_SEVONPEND_Pos 4U /*!< SCB SCR: SEVONPEND Position */ +#define SCB_SCR_SEVONPEND_Msk (1UL << SCB_SCR_SEVONPEND_Pos) /*!< SCB SCR: SEVONPEND Mask */ + +#define SCB_SCR_SLEEPDEEPS_Pos 3U /*!< SCB SCR: SLEEPDEEPS Position */ +#define SCB_SCR_SLEEPDEEPS_Msk (1UL << SCB_SCR_SLEEPDEEPS_Pos) /*!< SCB SCR: SLEEPDEEPS Mask */ + +#define SCB_SCR_SLEEPDEEP_Pos 2U /*!< SCB SCR: SLEEPDEEP Position */ +#define SCB_SCR_SLEEPDEEP_Msk (1UL << SCB_SCR_SLEEPDEEP_Pos) /*!< SCB SCR: SLEEPDEEP Mask */ + +#define SCB_SCR_SLEEPONEXIT_Pos 1U /*!< SCB SCR: SLEEPONEXIT Position */ +#define SCB_SCR_SLEEPONEXIT_Msk (1UL << SCB_SCR_SLEEPONEXIT_Pos) /*!< SCB SCR: SLEEPONEXIT Mask */ + +/* SCB Configuration Control Register Definitions */ +#define SCB_CCR_BP_Pos 18U /*!< SCB CCR: BP Position */ +#define SCB_CCR_BP_Msk (1UL << SCB_CCR_BP_Pos) /*!< SCB CCR: BP Mask */ + +#define SCB_CCR_IC_Pos 17U /*!< SCB CCR: IC Position */ +#define SCB_CCR_IC_Msk (1UL << SCB_CCR_IC_Pos) /*!< SCB CCR: IC Mask */ + +#define SCB_CCR_DC_Pos 16U /*!< SCB CCR: DC Position */ +#define SCB_CCR_DC_Msk (1UL << SCB_CCR_DC_Pos) /*!< SCB CCR: DC Mask */ + +#define SCB_CCR_STKOFHFNMIGN_Pos 10U /*!< SCB CCR: STKOFHFNMIGN Position */ +#define SCB_CCR_STKOFHFNMIGN_Msk (1UL << SCB_CCR_STKOFHFNMIGN_Pos) /*!< SCB CCR: STKOFHFNMIGN Mask */ + +#define SCB_CCR_BFHFNMIGN_Pos 8U /*!< SCB CCR: BFHFNMIGN Position */ +#define SCB_CCR_BFHFNMIGN_Msk (1UL << SCB_CCR_BFHFNMIGN_Pos) /*!< SCB CCR: BFHFNMIGN Mask */ + +#define SCB_CCR_DIV_0_TRP_Pos 4U /*!< SCB CCR: DIV_0_TRP Position */ +#define SCB_CCR_DIV_0_TRP_Msk (1UL << SCB_CCR_DIV_0_TRP_Pos) /*!< SCB CCR: DIV_0_TRP Mask */ + +#define SCB_CCR_UNALIGN_TRP_Pos 3U /*!< SCB CCR: UNALIGN_TRP Position */ +#define SCB_CCR_UNALIGN_TRP_Msk (1UL << SCB_CCR_UNALIGN_TRP_Pos) /*!< SCB CCR: UNALIGN_TRP Mask */ + +#define SCB_CCR_USERSETMPEND_Pos 1U /*!< SCB CCR: USERSETMPEND Position */ +#define SCB_CCR_USERSETMPEND_Msk (1UL << SCB_CCR_USERSETMPEND_Pos) /*!< SCB CCR: USERSETMPEND Mask */ + +/* SCB System Handler Control and State Register Definitions */ +#define SCB_SHCSR_HARDFAULTPENDED_Pos 21U /*!< SCB SHCSR: HARDFAULTPENDED Position */ +#define SCB_SHCSR_HARDFAULTPENDED_Msk (1UL << SCB_SHCSR_HARDFAULTPENDED_Pos) /*!< SCB SHCSR: HARDFAULTPENDED Mask */ + +#define SCB_SHCSR_SVCALLPENDED_Pos 15U /*!< SCB SHCSR: SVCALLPENDED Position */ +#define SCB_SHCSR_SVCALLPENDED_Msk (1UL << SCB_SHCSR_SVCALLPENDED_Pos) /*!< SCB SHCSR: SVCALLPENDED Mask */ + +#define SCB_SHCSR_SYSTICKACT_Pos 11U /*!< SCB SHCSR: SYSTICKACT Position */ +#define SCB_SHCSR_SYSTICKACT_Msk (1UL << SCB_SHCSR_SYSTICKACT_Pos) /*!< SCB SHCSR: SYSTICKACT Mask */ + +#define SCB_SHCSR_PENDSVACT_Pos 10U /*!< SCB SHCSR: PENDSVACT Position */ +#define SCB_SHCSR_PENDSVACT_Msk (1UL << SCB_SHCSR_PENDSVACT_Pos) /*!< SCB SHCSR: PENDSVACT Mask */ + +#define SCB_SHCSR_SVCALLACT_Pos 7U /*!< SCB SHCSR: SVCALLACT Position */ +#define SCB_SHCSR_SVCALLACT_Msk (1UL << SCB_SHCSR_SVCALLACT_Pos) /*!< SCB SHCSR: SVCALLACT Mask */ + +#define SCB_SHCSR_NMIACT_Pos 5U /*!< SCB SHCSR: NMIACT Position */ +#define SCB_SHCSR_NMIACT_Msk (1UL << SCB_SHCSR_NMIACT_Pos) /*!< SCB SHCSR: NMIACT Mask */ + +#define SCB_SHCSR_HARDFAULTACT_Pos 2U /*!< SCB SHCSR: HARDFAULTACT Position */ +#define SCB_SHCSR_HARDFAULTACT_Msk (1UL << SCB_SHCSR_HARDFAULTACT_Pos) /*!< SCB SHCSR: HARDFAULTACT Mask */ + +/*@} end of group CMSIS_SCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SysTick System Tick Timer (SysTick) + \brief Type definitions for the System Timer Registers. + @{ + */ + +/** + \brief Structure type to access the System Timer (SysTick). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SysTick Control and Status Register */ + __IOM uint32_t LOAD; /*!< Offset: 0x004 (R/W) SysTick Reload Value Register */ + __IOM uint32_t VAL; /*!< Offset: 0x008 (R/W) SysTick Current Value Register */ + __IM uint32_t CALIB; /*!< Offset: 0x00C (R/ ) SysTick Calibration Register */ +} SysTick_Type; + +/* SysTick Control / Status Register Definitions */ +#define SysTick_CTRL_COUNTFLAG_Pos 16U /*!< SysTick CTRL: COUNTFLAG Position */ +#define SysTick_CTRL_COUNTFLAG_Msk (1UL << SysTick_CTRL_COUNTFLAG_Pos) /*!< SysTick CTRL: COUNTFLAG Mask */ + +#define SysTick_CTRL_CLKSOURCE_Pos 2U /*!< SysTick CTRL: CLKSOURCE Position */ +#define SysTick_CTRL_CLKSOURCE_Msk (1UL << SysTick_CTRL_CLKSOURCE_Pos) /*!< SysTick CTRL: CLKSOURCE Mask */ + +#define SysTick_CTRL_TICKINT_Pos 1U /*!< SysTick CTRL: TICKINT Position */ +#define SysTick_CTRL_TICKINT_Msk (1UL << SysTick_CTRL_TICKINT_Pos) /*!< SysTick CTRL: TICKINT Mask */ + +#define SysTick_CTRL_ENABLE_Pos 0U /*!< SysTick CTRL: ENABLE Position */ +#define SysTick_CTRL_ENABLE_Msk (1UL /*<< SysTick_CTRL_ENABLE_Pos*/) /*!< SysTick CTRL: ENABLE Mask */ + +/* SysTick Reload Register Definitions */ +#define SysTick_LOAD_RELOAD_Pos 0U /*!< SysTick LOAD: RELOAD Position */ +#define SysTick_LOAD_RELOAD_Msk (0xFFFFFFUL /*<< SysTick_LOAD_RELOAD_Pos*/) /*!< SysTick LOAD: RELOAD Mask */ + +/* SysTick Current Register Definitions */ +#define SysTick_VAL_CURRENT_Pos 0U /*!< SysTick VAL: CURRENT Position */ +#define SysTick_VAL_CURRENT_Msk (0xFFFFFFUL /*<< SysTick_VAL_CURRENT_Pos*/) /*!< SysTick VAL: CURRENT Mask */ + +/* SysTick Calibration Register Definitions */ +#define SysTick_CALIB_NOREF_Pos 31U /*!< SysTick CALIB: NOREF Position */ +#define SysTick_CALIB_NOREF_Msk (1UL << SysTick_CALIB_NOREF_Pos) /*!< SysTick CALIB: NOREF Mask */ + +#define SysTick_CALIB_SKEW_Pos 30U /*!< SysTick CALIB: SKEW Position */ +#define SysTick_CALIB_SKEW_Msk (1UL << SysTick_CALIB_SKEW_Pos) /*!< SysTick CALIB: SKEW Mask */ + +#define SysTick_CALIB_TENMS_Pos 0U /*!< SysTick CALIB: TENMS Position */ +#define SysTick_CALIB_TENMS_Msk (0xFFFFFFUL /*<< SysTick_CALIB_TENMS_Pos*/) /*!< SysTick CALIB: TENMS Mask */ + +/*@} end of group CMSIS_SysTick */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_DWT Data Watchpoint and Trace (DWT) + \brief Type definitions for the Data Watchpoint and Trace (DWT) + @{ + */ + +/** + \brief Structure type to access the Data Watchpoint and Trace Register (DWT). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) Control Register */ + uint32_t RESERVED0[6U]; + __IM uint32_t PCSR; /*!< Offset: 0x01C (R/ ) Program Counter Sample Register */ + __IOM uint32_t COMP0; /*!< Offset: 0x020 (R/W) Comparator Register 0 */ + uint32_t RESERVED1[1U]; + __IOM uint32_t FUNCTION0; /*!< Offset: 0x028 (R/W) Function Register 0 */ + uint32_t RESERVED2[1U]; + __IOM uint32_t COMP1; /*!< Offset: 0x030 (R/W) Comparator Register 1 */ + uint32_t RESERVED3[1U]; + __IOM uint32_t FUNCTION1; /*!< Offset: 0x038 (R/W) Function Register 1 */ + uint32_t RESERVED4[1U]; + __IOM uint32_t COMP2; /*!< Offset: 0x040 (R/W) Comparator Register 2 */ + uint32_t RESERVED5[1U]; + __IOM uint32_t FUNCTION2; /*!< Offset: 0x048 (R/W) Function Register 2 */ + uint32_t RESERVED6[1U]; + __IOM uint32_t COMP3; /*!< Offset: 0x050 (R/W) Comparator Register 3 */ + uint32_t RESERVED7[1U]; + __IOM uint32_t FUNCTION3; /*!< Offset: 0x058 (R/W) Function Register 3 */ + uint32_t RESERVED8[1U]; + __IOM uint32_t COMP4; /*!< Offset: 0x060 (R/W) Comparator Register 4 */ + uint32_t RESERVED9[1U]; + __IOM uint32_t FUNCTION4; /*!< Offset: 0x068 (R/W) Function Register 4 */ + uint32_t RESERVED10[1U]; + __IOM uint32_t COMP5; /*!< Offset: 0x070 (R/W) Comparator Register 5 */ + uint32_t RESERVED11[1U]; + __IOM uint32_t FUNCTION5; /*!< Offset: 0x078 (R/W) Function Register 5 */ + uint32_t RESERVED12[1U]; + __IOM uint32_t COMP6; /*!< Offset: 0x080 (R/W) Comparator Register 6 */ + uint32_t RESERVED13[1U]; + __IOM uint32_t FUNCTION6; /*!< Offset: 0x088 (R/W) Function Register 6 */ + uint32_t RESERVED14[1U]; + __IOM uint32_t COMP7; /*!< Offset: 0x090 (R/W) Comparator Register 7 */ + uint32_t RESERVED15[1U]; + __IOM uint32_t FUNCTION7; /*!< Offset: 0x098 (R/W) Function Register 7 */ + uint32_t RESERVED16[1U]; + __IOM uint32_t COMP8; /*!< Offset: 0x0A0 (R/W) Comparator Register 8 */ + uint32_t RESERVED17[1U]; + __IOM uint32_t FUNCTION8; /*!< Offset: 0x0A8 (R/W) Function Register 8 */ + uint32_t RESERVED18[1U]; + __IOM uint32_t COMP9; /*!< Offset: 0x0B0 (R/W) Comparator Register 9 */ + uint32_t RESERVED19[1U]; + __IOM uint32_t FUNCTION9; /*!< Offset: 0x0B8 (R/W) Function Register 9 */ + uint32_t RESERVED20[1U]; + __IOM uint32_t COMP10; /*!< Offset: 0x0C0 (R/W) Comparator Register 10 */ + uint32_t RESERVED21[1U]; + __IOM uint32_t FUNCTION10; /*!< Offset: 0x0C8 (R/W) Function Register 10 */ + uint32_t RESERVED22[1U]; + __IOM uint32_t COMP11; /*!< Offset: 0x0D0 (R/W) Comparator Register 11 */ + uint32_t RESERVED23[1U]; + __IOM uint32_t FUNCTION11; /*!< Offset: 0x0D8 (R/W) Function Register 11 */ + uint32_t RESERVED24[1U]; + __IOM uint32_t COMP12; /*!< Offset: 0x0E0 (R/W) Comparator Register 12 */ + uint32_t RESERVED25[1U]; + __IOM uint32_t FUNCTION12; /*!< Offset: 0x0E8 (R/W) Function Register 12 */ + uint32_t RESERVED26[1U]; + __IOM uint32_t COMP13; /*!< Offset: 0x0F0 (R/W) Comparator Register 13 */ + uint32_t RESERVED27[1U]; + __IOM uint32_t FUNCTION13; /*!< Offset: 0x0F8 (R/W) Function Register 13 */ + uint32_t RESERVED28[1U]; + __IOM uint32_t COMP14; /*!< Offset: 0x100 (R/W) Comparator Register 14 */ + uint32_t RESERVED29[1U]; + __IOM uint32_t FUNCTION14; /*!< Offset: 0x108 (R/W) Function Register 14 */ + uint32_t RESERVED30[1U]; + __IOM uint32_t COMP15; /*!< Offset: 0x110 (R/W) Comparator Register 15 */ + uint32_t RESERVED31[1U]; + __IOM uint32_t FUNCTION15; /*!< Offset: 0x118 (R/W) Function Register 15 */ +} DWT_Type; + +/* DWT Control Register Definitions */ +#define DWT_CTRL_NUMCOMP_Pos 28U /*!< DWT CTRL: NUMCOMP Position */ +#define DWT_CTRL_NUMCOMP_Msk (0xFUL << DWT_CTRL_NUMCOMP_Pos) /*!< DWT CTRL: NUMCOMP Mask */ + +#define DWT_CTRL_NOTRCPKT_Pos 27U /*!< DWT CTRL: NOTRCPKT Position */ +#define DWT_CTRL_NOTRCPKT_Msk (0x1UL << DWT_CTRL_NOTRCPKT_Pos) /*!< DWT CTRL: NOTRCPKT Mask */ + +#define DWT_CTRL_NOEXTTRIG_Pos 26U /*!< DWT CTRL: NOEXTTRIG Position */ +#define DWT_CTRL_NOEXTTRIG_Msk (0x1UL << DWT_CTRL_NOEXTTRIG_Pos) /*!< DWT CTRL: NOEXTTRIG Mask */ + +#define DWT_CTRL_NOCYCCNT_Pos 25U /*!< DWT CTRL: NOCYCCNT Position */ +#define DWT_CTRL_NOCYCCNT_Msk (0x1UL << DWT_CTRL_NOCYCCNT_Pos) /*!< DWT CTRL: NOCYCCNT Mask */ + +#define DWT_CTRL_NOPRFCNT_Pos 24U /*!< DWT CTRL: NOPRFCNT Position */ +#define DWT_CTRL_NOPRFCNT_Msk (0x1UL << DWT_CTRL_NOPRFCNT_Pos) /*!< DWT CTRL: NOPRFCNT Mask */ + +/* DWT Comparator Function Register Definitions */ +#define DWT_FUNCTION_ID_Pos 27U /*!< DWT FUNCTION: ID Position */ +#define DWT_FUNCTION_ID_Msk (0x1FUL << DWT_FUNCTION_ID_Pos) /*!< DWT FUNCTION: ID Mask */ + +#define DWT_FUNCTION_MATCHED_Pos 24U /*!< DWT FUNCTION: MATCHED Position */ +#define DWT_FUNCTION_MATCHED_Msk (0x1UL << DWT_FUNCTION_MATCHED_Pos) /*!< DWT FUNCTION: MATCHED Mask */ + +#define DWT_FUNCTION_DATAVSIZE_Pos 10U /*!< DWT FUNCTION: DATAVSIZE Position */ +#define DWT_FUNCTION_DATAVSIZE_Msk (0x3UL << DWT_FUNCTION_DATAVSIZE_Pos) /*!< DWT FUNCTION: DATAVSIZE Mask */ + +#define DWT_FUNCTION_ACTION_Pos 4U /*!< DWT FUNCTION: ACTION Position */ +#define DWT_FUNCTION_ACTION_Msk (0x3UL << DWT_FUNCTION_ACTION_Pos) /*!< DWT FUNCTION: ACTION Mask */ + +#define DWT_FUNCTION_MATCH_Pos 0U /*!< DWT FUNCTION: MATCH Position */ +#define DWT_FUNCTION_MATCH_Msk (0xFUL /*<< DWT_FUNCTION_MATCH_Pos*/) /*!< DWT FUNCTION: MATCH Mask */ + +/*@}*/ /* end of group CMSIS_DWT */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_TPI Trace Port Interface (TPI) + \brief Type definitions for the Trace Port Interface (TPI) + @{ + */ + +/** + \brief Structure type to access the Trace Port Interface Register (TPI). + */ +typedef struct +{ + __IM uint32_t SSPSR; /*!< Offset: 0x000 (R/ ) Supported Parallel Port Size Register */ + __IOM uint32_t CSPSR; /*!< Offset: 0x004 (R/W) Current Parallel Port Size Register */ + uint32_t RESERVED0[2U]; + __IOM uint32_t ACPR; /*!< Offset: 0x010 (R/W) Asynchronous Clock Prescaler Register */ + uint32_t RESERVED1[55U]; + __IOM uint32_t SPPR; /*!< Offset: 0x0F0 (R/W) Selected Pin Protocol Register */ + uint32_t RESERVED2[131U]; + __IM uint32_t FFSR; /*!< Offset: 0x300 (R/ ) Formatter and Flush Status Register */ + __IOM uint32_t FFCR; /*!< Offset: 0x304 (R/W) Formatter and Flush Control Register */ + __IOM uint32_t PSCR; /*!< Offset: 0x308 (R/W) Periodic Synchronization Control Register */ + uint32_t RESERVED3[759U]; + __IM uint32_t TRIGGER; /*!< Offset: 0xEE8 (R/ ) TRIGGER Register */ + __IM uint32_t ITFTTD0; /*!< Offset: 0xEEC (R/ ) Integration Test FIFO Test Data 0 Register */ + __IOM uint32_t ITATBCTR2; /*!< Offset: 0xEF0 (R/W) Integration Test ATB Control Register 2 */ + uint32_t RESERVED4[1U]; + __IM uint32_t ITATBCTR0; /*!< Offset: 0xEF8 (R/ ) Integration Test ATB Control Register 0 */ + __IM uint32_t ITFTTD1; /*!< Offset: 0xEFC (R/ ) Integration Test FIFO Test Data 1 Register */ + __IOM uint32_t ITCTRL; /*!< Offset: 0xF00 (R/W) Integration Mode Control */ + uint32_t RESERVED5[39U]; + __IOM uint32_t CLAIMSET; /*!< Offset: 0xFA0 (R/W) Claim tag set */ + __IOM uint32_t CLAIMCLR; /*!< Offset: 0xFA4 (R/W) Claim tag clear */ + uint32_t RESERVED7[8U]; + __IM uint32_t DEVID; /*!< Offset: 0xFC8 (R/ ) Device Configuration Register */ + __IM uint32_t DEVTYPE; /*!< Offset: 0xFCC (R/ ) Device Type Identifier Register */ +} TPI_Type; + +/* TPI Asynchronous Clock Prescaler Register Definitions */ +#define TPI_ACPR_PRESCALER_Pos 0U /*!< TPI ACPR: PRESCALER Position */ +#define TPI_ACPR_PRESCALER_Msk (0x1FFFUL /*<< TPI_ACPR_PRESCALER_Pos*/) /*!< TPI ACPR: PRESCALER Mask */ + +/* TPI Selected Pin Protocol Register Definitions */ +#define TPI_SPPR_TXMODE_Pos 0U /*!< TPI SPPR: TXMODE Position */ +#define TPI_SPPR_TXMODE_Msk (0x3UL /*<< TPI_SPPR_TXMODE_Pos*/) /*!< TPI SPPR: TXMODE Mask */ + +/* TPI Formatter and Flush Status Register Definitions */ +#define TPI_FFSR_FtNonStop_Pos 3U /*!< TPI FFSR: FtNonStop Position */ +#define TPI_FFSR_FtNonStop_Msk (0x1UL << TPI_FFSR_FtNonStop_Pos) /*!< TPI FFSR: FtNonStop Mask */ + +#define TPI_FFSR_TCPresent_Pos 2U /*!< TPI FFSR: TCPresent Position */ +#define TPI_FFSR_TCPresent_Msk (0x1UL << TPI_FFSR_TCPresent_Pos) /*!< TPI FFSR: TCPresent Mask */ + +#define TPI_FFSR_FtStopped_Pos 1U /*!< TPI FFSR: FtStopped Position */ +#define TPI_FFSR_FtStopped_Msk (0x1UL << TPI_FFSR_FtStopped_Pos) /*!< TPI FFSR: FtStopped Mask */ + +#define TPI_FFSR_FlInProg_Pos 0U /*!< TPI FFSR: FlInProg Position */ +#define TPI_FFSR_FlInProg_Msk (0x1UL /*<< TPI_FFSR_FlInProg_Pos*/) /*!< TPI FFSR: FlInProg Mask */ + +/* TPI Formatter and Flush Control Register Definitions */ +#define TPI_FFCR_TrigIn_Pos 8U /*!< TPI FFCR: TrigIn Position */ +#define TPI_FFCR_TrigIn_Msk (0x1UL << TPI_FFCR_TrigIn_Pos) /*!< TPI FFCR: TrigIn Mask */ + +#define TPI_FFCR_FOnMan_Pos 6U /*!< TPI FFCR: FOnMan Position */ +#define TPI_FFCR_FOnMan_Msk (0x1UL << TPI_FFCR_FOnMan_Pos) /*!< TPI FFCR: FOnMan Mask */ + +#define TPI_FFCR_EnFCont_Pos 1U /*!< TPI FFCR: EnFCont Position */ +#define TPI_FFCR_EnFCont_Msk (0x1UL << TPI_FFCR_EnFCont_Pos) /*!< TPI FFCR: EnFCont Mask */ + +/* TPI TRIGGER Register Definitions */ +#define TPI_TRIGGER_TRIGGER_Pos 0U /*!< TPI TRIGGER: TRIGGER Position */ +#define TPI_TRIGGER_TRIGGER_Msk (0x1UL /*<< TPI_TRIGGER_TRIGGER_Pos*/) /*!< TPI TRIGGER: TRIGGER Mask */ + +/* TPI Integration Test FIFO Test Data 0 Register Definitions */ +#define TPI_ITFTTD0_ATB_IF2_ATVALID_Pos 29U /*!< TPI ITFTTD0: ATB Interface 2 ATVALIDPosition */ +#define TPI_ITFTTD0_ATB_IF2_ATVALID_Msk (0x3UL << TPI_ITFTTD0_ATB_IF2_ATVALID_Pos) /*!< TPI ITFTTD0: ATB Interface 2 ATVALID Mask */ + +#define TPI_ITFTTD0_ATB_IF2_bytecount_Pos 27U /*!< TPI ITFTTD0: ATB Interface 2 byte count Position */ +#define TPI_ITFTTD0_ATB_IF2_bytecount_Msk (0x3UL << TPI_ITFTTD0_ATB_IF2_bytecount_Pos) /*!< TPI ITFTTD0: ATB Interface 2 byte count Mask */ + +#define TPI_ITFTTD0_ATB_IF1_ATVALID_Pos 26U /*!< TPI ITFTTD0: ATB Interface 1 ATVALID Position */ +#define TPI_ITFTTD0_ATB_IF1_ATVALID_Msk (0x3UL << TPI_ITFTTD0_ATB_IF1_ATVALID_Pos) /*!< TPI ITFTTD0: ATB Interface 1 ATVALID Mask */ + +#define TPI_ITFTTD0_ATB_IF1_bytecount_Pos 24U /*!< TPI ITFTTD0: ATB Interface 1 byte count Position */ +#define TPI_ITFTTD0_ATB_IF1_bytecount_Msk (0x3UL << TPI_ITFTTD0_ATB_IF1_bytecount_Pos) /*!< TPI ITFTTD0: ATB Interface 1 byte countt Mask */ + +#define TPI_ITFTTD0_ATB_IF1_data2_Pos 16U /*!< TPI ITFTTD0: ATB Interface 1 data2 Position */ +#define TPI_ITFTTD0_ATB_IF1_data2_Msk (0xFFUL << TPI_ITFTTD0_ATB_IF1_data1_Pos) /*!< TPI ITFTTD0: ATB Interface 1 data2 Mask */ + +#define TPI_ITFTTD0_ATB_IF1_data1_Pos 8U /*!< TPI ITFTTD0: ATB Interface 1 data1 Position */ +#define TPI_ITFTTD0_ATB_IF1_data1_Msk (0xFFUL << TPI_ITFTTD0_ATB_IF1_data1_Pos) /*!< TPI ITFTTD0: ATB Interface 1 data1 Mask */ + +#define TPI_ITFTTD0_ATB_IF1_data0_Pos 0U /*!< TPI ITFTTD0: ATB Interface 1 data0 Position */ +#define TPI_ITFTTD0_ATB_IF1_data0_Msk (0xFFUL /*<< TPI_ITFTTD0_ATB_IF1_data0_Pos*/) /*!< TPI ITFTTD0: ATB Interface 1 data0 Mask */ + +/* TPI Integration Test ATB Control Register 2 Register Definitions */ +#define TPI_ITATBCTR2_AFVALID2S_Pos 1U /*!< TPI ITATBCTR2: AFVALID2S Position */ +#define TPI_ITATBCTR2_AFVALID2S_Msk (0x1UL << TPI_ITATBCTR2_AFVALID2S_Pos) /*!< TPI ITATBCTR2: AFVALID2SS Mask */ + +#define TPI_ITATBCTR2_AFVALID1S_Pos 1U /*!< TPI ITATBCTR2: AFVALID1S Position */ +#define TPI_ITATBCTR2_AFVALID1S_Msk (0x1UL << TPI_ITATBCTR2_AFVALID1S_Pos) /*!< TPI ITATBCTR2: AFVALID1SS Mask */ + +#define TPI_ITATBCTR2_ATREADY2S_Pos 0U /*!< TPI ITATBCTR2: ATREADY2S Position */ +#define TPI_ITATBCTR2_ATREADY2S_Msk (0x1UL /*<< TPI_ITATBCTR2_ATREADY2S_Pos*/) /*!< TPI ITATBCTR2: ATREADY2S Mask */ + +#define TPI_ITATBCTR2_ATREADY1S_Pos 0U /*!< TPI ITATBCTR2: ATREADY1S Position */ +#define TPI_ITATBCTR2_ATREADY1S_Msk (0x1UL /*<< TPI_ITATBCTR2_ATREADY1S_Pos*/) /*!< TPI ITATBCTR2: ATREADY1S Mask */ + +/* TPI Integration Test FIFO Test Data 1 Register Definitions */ +#define TPI_ITFTTD1_ATB_IF2_ATVALID_Pos 29U /*!< TPI ITFTTD1: ATB Interface 2 ATVALID Position */ +#define TPI_ITFTTD1_ATB_IF2_ATVALID_Msk (0x3UL << TPI_ITFTTD1_ATB_IF2_ATVALID_Pos) /*!< TPI ITFTTD1: ATB Interface 2 ATVALID Mask */ + +#define TPI_ITFTTD1_ATB_IF2_bytecount_Pos 27U /*!< TPI ITFTTD1: ATB Interface 2 byte count Position */ +#define TPI_ITFTTD1_ATB_IF2_bytecount_Msk (0x3UL << TPI_ITFTTD1_ATB_IF2_bytecount_Pos) /*!< TPI ITFTTD1: ATB Interface 2 byte count Mask */ + +#define TPI_ITFTTD1_ATB_IF1_ATVALID_Pos 26U /*!< TPI ITFTTD1: ATB Interface 1 ATVALID Position */ +#define TPI_ITFTTD1_ATB_IF1_ATVALID_Msk (0x3UL << TPI_ITFTTD1_ATB_IF1_ATVALID_Pos) /*!< TPI ITFTTD1: ATB Interface 1 ATVALID Mask */ + +#define TPI_ITFTTD1_ATB_IF1_bytecount_Pos 24U /*!< TPI ITFTTD1: ATB Interface 1 byte count Position */ +#define TPI_ITFTTD1_ATB_IF1_bytecount_Msk (0x3UL << TPI_ITFTTD1_ATB_IF1_bytecount_Pos) /*!< TPI ITFTTD1: ATB Interface 1 byte countt Mask */ + +#define TPI_ITFTTD1_ATB_IF2_data2_Pos 16U /*!< TPI ITFTTD1: ATB Interface 2 data2 Position */ +#define TPI_ITFTTD1_ATB_IF2_data2_Msk (0xFFUL << TPI_ITFTTD1_ATB_IF2_data1_Pos) /*!< TPI ITFTTD1: ATB Interface 2 data2 Mask */ + +#define TPI_ITFTTD1_ATB_IF2_data1_Pos 8U /*!< TPI ITFTTD1: ATB Interface 2 data1 Position */ +#define TPI_ITFTTD1_ATB_IF2_data1_Msk (0xFFUL << TPI_ITFTTD1_ATB_IF2_data1_Pos) /*!< TPI ITFTTD1: ATB Interface 2 data1 Mask */ + +#define TPI_ITFTTD1_ATB_IF2_data0_Pos 0U /*!< TPI ITFTTD1: ATB Interface 2 data0 Position */ +#define TPI_ITFTTD1_ATB_IF2_data0_Msk (0xFFUL /*<< TPI_ITFTTD1_ATB_IF2_data0_Pos*/) /*!< TPI ITFTTD1: ATB Interface 2 data0 Mask */ + +/* TPI Integration Test ATB Control Register 0 Definitions */ +#define TPI_ITATBCTR0_AFVALID2S_Pos 1U /*!< TPI ITATBCTR0: AFVALID2S Position */ +#define TPI_ITATBCTR0_AFVALID2S_Msk (0x1UL << TPI_ITATBCTR0_AFVALID2S_Pos) /*!< TPI ITATBCTR0: AFVALID2SS Mask */ + +#define TPI_ITATBCTR0_AFVALID1S_Pos 1U /*!< TPI ITATBCTR0: AFVALID1S Position */ +#define TPI_ITATBCTR0_AFVALID1S_Msk (0x1UL << TPI_ITATBCTR0_AFVALID1S_Pos) /*!< TPI ITATBCTR0: AFVALID1SS Mask */ + +#define TPI_ITATBCTR0_ATREADY2S_Pos 0U /*!< TPI ITATBCTR0: ATREADY2S Position */ +#define TPI_ITATBCTR0_ATREADY2S_Msk (0x1UL /*<< TPI_ITATBCTR0_ATREADY2S_Pos*/) /*!< TPI ITATBCTR0: ATREADY2S Mask */ + +#define TPI_ITATBCTR0_ATREADY1S_Pos 0U /*!< TPI ITATBCTR0: ATREADY1S Position */ +#define TPI_ITATBCTR0_ATREADY1S_Msk (0x1UL /*<< TPI_ITATBCTR0_ATREADY1S_Pos*/) /*!< TPI ITATBCTR0: ATREADY1S Mask */ + +/* TPI Integration Mode Control Register Definitions */ +#define TPI_ITCTRL_Mode_Pos 0U /*!< TPI ITCTRL: Mode Position */ +#define TPI_ITCTRL_Mode_Msk (0x3UL /*<< TPI_ITCTRL_Mode_Pos*/) /*!< TPI ITCTRL: Mode Mask */ + +/* TPI DEVID Register Definitions */ +#define TPI_DEVID_NRZVALID_Pos 11U /*!< TPI DEVID: NRZVALID Position */ +#define TPI_DEVID_NRZVALID_Msk (0x1UL << TPI_DEVID_NRZVALID_Pos) /*!< TPI DEVID: NRZVALID Mask */ + +#define TPI_DEVID_MANCVALID_Pos 10U /*!< TPI DEVID: MANCVALID Position */ +#define TPI_DEVID_MANCVALID_Msk (0x1UL << TPI_DEVID_MANCVALID_Pos) /*!< TPI DEVID: MANCVALID Mask */ + +#define TPI_DEVID_PTINVALID_Pos 9U /*!< TPI DEVID: PTINVALID Position */ +#define TPI_DEVID_PTINVALID_Msk (0x1UL << TPI_DEVID_PTINVALID_Pos) /*!< TPI DEVID: PTINVALID Mask */ + +#define TPI_DEVID_FIFOSZ_Pos 6U /*!< TPI DEVID: FIFOSZ Position */ +#define TPI_DEVID_FIFOSZ_Msk (0x7UL << TPI_DEVID_FIFOSZ_Pos) /*!< TPI DEVID: FIFOSZ Mask */ + +#define TPI_DEVID_NrTraceInput_Pos 0U /*!< TPI DEVID: NrTraceInput Position */ +#define TPI_DEVID_NrTraceInput_Msk (0x3FUL /*<< TPI_DEVID_NrTraceInput_Pos*/) /*!< TPI DEVID: NrTraceInput Mask */ + +/* TPI DEVTYPE Register Definitions */ +#define TPI_DEVTYPE_SubType_Pos 4U /*!< TPI DEVTYPE: SubType Position */ +#define TPI_DEVTYPE_SubType_Msk (0xFUL /*<< TPI_DEVTYPE_SubType_Pos*/) /*!< TPI DEVTYPE: SubType Mask */ + +#define TPI_DEVTYPE_MajorType_Pos 0U /*!< TPI DEVTYPE: MajorType Position */ +#define TPI_DEVTYPE_MajorType_Msk (0xFUL << TPI_DEVTYPE_MajorType_Pos) /*!< TPI DEVTYPE: MajorType Mask */ + +/*@}*/ /* end of group CMSIS_TPI */ + + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_MPU Memory Protection Unit (MPU) + \brief Type definitions for the Memory Protection Unit (MPU) + @{ + */ + +/** + \brief Structure type to access the Memory Protection Unit (MPU). + */ +typedef struct +{ + __IM uint32_t TYPE; /*!< Offset: 0x000 (R/ ) MPU Type Register */ + __IOM uint32_t CTRL; /*!< Offset: 0x004 (R/W) MPU Control Register */ + __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) MPU Region Number Register */ + __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) MPU Region Base Address Register */ + __IOM uint32_t RLAR; /*!< Offset: 0x010 (R/W) MPU Region Limit Address Register */ + uint32_t RESERVED0[7U]; + union { + __IOM uint32_t MAIR[2]; + struct { + __IOM uint32_t MAIR0; /*!< Offset: 0x030 (R/W) MPU Memory Attribute Indirection Register 0 */ + __IOM uint32_t MAIR1; /*!< Offset: 0x034 (R/W) MPU Memory Attribute Indirection Register 1 */ + }; + }; +} MPU_Type; + +#define MPU_TYPE_RALIASES 1U + +/* MPU Type Register Definitions */ +#define MPU_TYPE_IREGION_Pos 16U /*!< MPU TYPE: IREGION Position */ +#define MPU_TYPE_IREGION_Msk (0xFFUL << MPU_TYPE_IREGION_Pos) /*!< MPU TYPE: IREGION Mask */ + +#define MPU_TYPE_DREGION_Pos 8U /*!< MPU TYPE: DREGION Position */ +#define MPU_TYPE_DREGION_Msk (0xFFUL << MPU_TYPE_DREGION_Pos) /*!< MPU TYPE: DREGION Mask */ + +#define MPU_TYPE_SEPARATE_Pos 0U /*!< MPU TYPE: SEPARATE Position */ +#define MPU_TYPE_SEPARATE_Msk (1UL /*<< MPU_TYPE_SEPARATE_Pos*/) /*!< MPU TYPE: SEPARATE Mask */ + +/* MPU Control Register Definitions */ +#define MPU_CTRL_PRIVDEFENA_Pos 2U /*!< MPU CTRL: PRIVDEFENA Position */ +#define MPU_CTRL_PRIVDEFENA_Msk (1UL << MPU_CTRL_PRIVDEFENA_Pos) /*!< MPU CTRL: PRIVDEFENA Mask */ + +#define MPU_CTRL_HFNMIENA_Pos 1U /*!< MPU CTRL: HFNMIENA Position */ +#define MPU_CTRL_HFNMIENA_Msk (1UL << MPU_CTRL_HFNMIENA_Pos) /*!< MPU CTRL: HFNMIENA Mask */ + +#define MPU_CTRL_ENABLE_Pos 0U /*!< MPU CTRL: ENABLE Position */ +#define MPU_CTRL_ENABLE_Msk (1UL /*<< MPU_CTRL_ENABLE_Pos*/) /*!< MPU CTRL: ENABLE Mask */ + +/* MPU Region Number Register Definitions */ +#define MPU_RNR_REGION_Pos 0U /*!< MPU RNR: REGION Position */ +#define MPU_RNR_REGION_Msk (0xFFUL /*<< MPU_RNR_REGION_Pos*/) /*!< MPU RNR: REGION Mask */ + +/* MPU Region Base Address Register Definitions */ +#define MPU_RBAR_BASE_Pos 5U /*!< MPU RBAR: BASE Position */ +#define MPU_RBAR_BASE_Msk (0x7FFFFFFUL << MPU_RBAR_BASE_Pos) /*!< MPU RBAR: BASE Mask */ + +#define MPU_RBAR_SH_Pos 3U /*!< MPU RBAR: SH Position */ +#define MPU_RBAR_SH_Msk (0x3UL << MPU_RBAR_SH_Pos) /*!< MPU RBAR: SH Mask */ + +#define MPU_RBAR_AP_Pos 1U /*!< MPU RBAR: AP Position */ +#define MPU_RBAR_AP_Msk (0x3UL << MPU_RBAR_AP_Pos) /*!< MPU RBAR: AP Mask */ + +#define MPU_RBAR_XN_Pos 0U /*!< MPU RBAR: XN Position */ +#define MPU_RBAR_XN_Msk (01UL /*<< MPU_RBAR_XN_Pos*/) /*!< MPU RBAR: XN Mask */ + +/* MPU Region Limit Address Register Definitions */ +#define MPU_RLAR_LIMIT_Pos 5U /*!< MPU RLAR: LIMIT Position */ +#define MPU_RLAR_LIMIT_Msk (0x7FFFFFFUL << MPU_RLAR_LIMIT_Pos) /*!< MPU RLAR: LIMIT Mask */ + +#define MPU_RLAR_AttrIndx_Pos 1U /*!< MPU RLAR: AttrIndx Position */ +#define MPU_RLAR_AttrIndx_Msk (0x7UL << MPU_RLAR_AttrIndx_Pos) /*!< MPU RLAR: AttrIndx Mask */ + +#define MPU_RLAR_EN_Pos 0U /*!< MPU RLAR: EN Position */ +#define MPU_RLAR_EN_Msk (1UL /*<< MPU_RLAR_EN_Pos*/) /*!< MPU RLAR: EN Mask */ + +/* MPU Memory Attribute Indirection Register 0 Definitions */ +#define MPU_MAIR0_Attr3_Pos 24U /*!< MPU MAIR0: Attr3 Position */ +#define MPU_MAIR0_Attr3_Msk (0xFFUL << MPU_MAIR0_Attr3_Pos) /*!< MPU MAIR0: Attr3 Mask */ + +#define MPU_MAIR0_Attr2_Pos 16U /*!< MPU MAIR0: Attr2 Position */ +#define MPU_MAIR0_Attr2_Msk (0xFFUL << MPU_MAIR0_Attr2_Pos) /*!< MPU MAIR0: Attr2 Mask */ + +#define MPU_MAIR0_Attr1_Pos 8U /*!< MPU MAIR0: Attr1 Position */ +#define MPU_MAIR0_Attr1_Msk (0xFFUL << MPU_MAIR0_Attr1_Pos) /*!< MPU MAIR0: Attr1 Mask */ + +#define MPU_MAIR0_Attr0_Pos 0U /*!< MPU MAIR0: Attr0 Position */ +#define MPU_MAIR0_Attr0_Msk (0xFFUL /*<< MPU_MAIR0_Attr0_Pos*/) /*!< MPU MAIR0: Attr0 Mask */ + +/* MPU Memory Attribute Indirection Register 1 Definitions */ +#define MPU_MAIR1_Attr7_Pos 24U /*!< MPU MAIR1: Attr7 Position */ +#define MPU_MAIR1_Attr7_Msk (0xFFUL << MPU_MAIR1_Attr7_Pos) /*!< MPU MAIR1: Attr7 Mask */ + +#define MPU_MAIR1_Attr6_Pos 16U /*!< MPU MAIR1: Attr6 Position */ +#define MPU_MAIR1_Attr6_Msk (0xFFUL << MPU_MAIR1_Attr6_Pos) /*!< MPU MAIR1: Attr6 Mask */ + +#define MPU_MAIR1_Attr5_Pos 8U /*!< MPU MAIR1: Attr5 Position */ +#define MPU_MAIR1_Attr5_Msk (0xFFUL << MPU_MAIR1_Attr5_Pos) /*!< MPU MAIR1: Attr5 Mask */ + +#define MPU_MAIR1_Attr4_Pos 0U /*!< MPU MAIR1: Attr4 Position */ +#define MPU_MAIR1_Attr4_Msk (0xFFUL /*<< MPU_MAIR1_Attr4_Pos*/) /*!< MPU MAIR1: Attr4 Mask */ + +/*@} end of group CMSIS_MPU */ +#endif + + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SAU Security Attribution Unit (SAU) + \brief Type definitions for the Security Attribution Unit (SAU) + @{ + */ + +/** + \brief Structure type to access the Security Attribution Unit (SAU). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SAU Control Register */ + __IM uint32_t TYPE; /*!< Offset: 0x004 (R/ ) SAU Type Register */ +#if defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) + __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) SAU Region Number Register */ + __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) SAU Region Base Address Register */ + __IOM uint32_t RLAR; /*!< Offset: 0x010 (R/W) SAU Region Limit Address Register */ +#endif +} SAU_Type; + +/* SAU Control Register Definitions */ +#define SAU_CTRL_ALLNS_Pos 1U /*!< SAU CTRL: ALLNS Position */ +#define SAU_CTRL_ALLNS_Msk (1UL << SAU_CTRL_ALLNS_Pos) /*!< SAU CTRL: ALLNS Mask */ + +#define SAU_CTRL_ENABLE_Pos 0U /*!< SAU CTRL: ENABLE Position */ +#define SAU_CTRL_ENABLE_Msk (1UL /*<< SAU_CTRL_ENABLE_Pos*/) /*!< SAU CTRL: ENABLE Mask */ + +/* SAU Type Register Definitions */ +#define SAU_TYPE_SREGION_Pos 0U /*!< SAU TYPE: SREGION Position */ +#define SAU_TYPE_SREGION_Msk (0xFFUL /*<< SAU_TYPE_SREGION_Pos*/) /*!< SAU TYPE: SREGION Mask */ + +#if defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) +/* SAU Region Number Register Definitions */ +#define SAU_RNR_REGION_Pos 0U /*!< SAU RNR: REGION Position */ +#define SAU_RNR_REGION_Msk (0xFFUL /*<< SAU_RNR_REGION_Pos*/) /*!< SAU RNR: REGION Mask */ + +/* SAU Region Base Address Register Definitions */ +#define SAU_RBAR_BADDR_Pos 5U /*!< SAU RBAR: BADDR Position */ +#define SAU_RBAR_BADDR_Msk (0x7FFFFFFUL << SAU_RBAR_BADDR_Pos) /*!< SAU RBAR: BADDR Mask */ + +/* SAU Region Limit Address Register Definitions */ +#define SAU_RLAR_LADDR_Pos 5U /*!< SAU RLAR: LADDR Position */ +#define SAU_RLAR_LADDR_Msk (0x7FFFFFFUL << SAU_RLAR_LADDR_Pos) /*!< SAU RLAR: LADDR Mask */ + +#define SAU_RLAR_NSC_Pos 1U /*!< SAU RLAR: NSC Position */ +#define SAU_RLAR_NSC_Msk (1UL << SAU_RLAR_NSC_Pos) /*!< SAU RLAR: NSC Mask */ + +#define SAU_RLAR_ENABLE_Pos 0U /*!< SAU RLAR: ENABLE Position */ +#define SAU_RLAR_ENABLE_Msk (1UL /*<< SAU_RLAR_ENABLE_Pos*/) /*!< SAU RLAR: ENABLE Mask */ + +#endif /* defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) */ + +/*@} end of group CMSIS_SAU */ +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + + +/* CoreDebug is deprecated. replaced by DCB (Debug Control Block) */ +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CoreDebug Core Debug Registers (CoreDebug) + \brief Type definitions for the Core Debug Registers + @{ + */ + +/** + \brief \deprecated Structure type to access the Core Debug Register (CoreDebug). + */ +typedef struct +{ + __IOM uint32_t DHCSR; /*!< Offset: 0x000 (R/W) Debug Halting Control and Status Register */ + __OM uint32_t DCRSR; /*!< Offset: 0x004 ( /W) Debug Core Register Selector Register */ + __IOM uint32_t DCRDR; /*!< Offset: 0x008 (R/W) Debug Core Register Data Register */ + __IOM uint32_t DEMCR; /*!< Offset: 0x00C (R/W) Debug Exception and Monitor Control Register */ + uint32_t RESERVED0[1U]; + __IOM uint32_t DAUTHCTRL; /*!< Offset: 0x014 (R/W) Debug Authentication Control Register */ + __IOM uint32_t DSCSR; /*!< Offset: 0x018 (R/W) Debug Security Control and Status Register */ +} CoreDebug_Type; + +/* Debug Halting Control and Status Register Definitions */ +#define CoreDebug_DHCSR_DBGKEY_Pos 16U /*!< \deprecated CoreDebug DHCSR: DBGKEY Position */ +#define CoreDebug_DHCSR_DBGKEY_Msk (0xFFFFUL << CoreDebug_DHCSR_DBGKEY_Pos) /*!< \deprecated CoreDebug DHCSR: DBGKEY Mask */ + +#define CoreDebug_DHCSR_S_RESTART_ST_Pos 26U /*!< \deprecated CoreDebug DHCSR: S_RESTART_ST Position */ +#define CoreDebug_DHCSR_S_RESTART_ST_Msk (1UL << CoreDebug_DHCSR_S_RESTART_ST_Pos) /*!< \deprecated CoreDebug DHCSR: S_RESTART_ST Mask */ + +#define CoreDebug_DHCSR_S_RESET_ST_Pos 25U /*!< \deprecated CoreDebug DHCSR: S_RESET_ST Position */ +#define CoreDebug_DHCSR_S_RESET_ST_Msk (1UL << CoreDebug_DHCSR_S_RESET_ST_Pos) /*!< \deprecated CoreDebug DHCSR: S_RESET_ST Mask */ + +#define CoreDebug_DHCSR_S_RETIRE_ST_Pos 24U /*!< \deprecated CoreDebug DHCSR: S_RETIRE_ST Position */ +#define CoreDebug_DHCSR_S_RETIRE_ST_Msk (1UL << CoreDebug_DHCSR_S_RETIRE_ST_Pos) /*!< \deprecated CoreDebug DHCSR: S_RETIRE_ST Mask */ + +#define CoreDebug_DHCSR_S_LOCKUP_Pos 19U /*!< \deprecated CoreDebug DHCSR: S_LOCKUP Position */ +#define CoreDebug_DHCSR_S_LOCKUP_Msk (1UL << CoreDebug_DHCSR_S_LOCKUP_Pos) /*!< \deprecated CoreDebug DHCSR: S_LOCKUP Mask */ + +#define CoreDebug_DHCSR_S_SLEEP_Pos 18U /*!< \deprecated CoreDebug DHCSR: S_SLEEP Position */ +#define CoreDebug_DHCSR_S_SLEEP_Msk (1UL << CoreDebug_DHCSR_S_SLEEP_Pos) /*!< \deprecated CoreDebug DHCSR: S_SLEEP Mask */ + +#define CoreDebug_DHCSR_S_HALT_Pos 17U /*!< \deprecated CoreDebug DHCSR: S_HALT Position */ +#define CoreDebug_DHCSR_S_HALT_Msk (1UL << CoreDebug_DHCSR_S_HALT_Pos) /*!< \deprecated CoreDebug DHCSR: S_HALT Mask */ + +#define CoreDebug_DHCSR_S_REGRDY_Pos 16U /*!< \deprecated CoreDebug DHCSR: S_REGRDY Position */ +#define CoreDebug_DHCSR_S_REGRDY_Msk (1UL << CoreDebug_DHCSR_S_REGRDY_Pos) /*!< \deprecated CoreDebug DHCSR: S_REGRDY Mask */ + +#define CoreDebug_DHCSR_C_MASKINTS_Pos 3U /*!< \deprecated CoreDebug DHCSR: C_MASKINTS Position */ +#define CoreDebug_DHCSR_C_MASKINTS_Msk (1UL << CoreDebug_DHCSR_C_MASKINTS_Pos) /*!< \deprecated CoreDebug DHCSR: C_MASKINTS Mask */ + +#define CoreDebug_DHCSR_C_STEP_Pos 2U /*!< \deprecated CoreDebug DHCSR: C_STEP Position */ +#define CoreDebug_DHCSR_C_STEP_Msk (1UL << CoreDebug_DHCSR_C_STEP_Pos) /*!< \deprecated CoreDebug DHCSR: C_STEP Mask */ + +#define CoreDebug_DHCSR_C_HALT_Pos 1U /*!< \deprecated CoreDebug DHCSR: C_HALT Position */ +#define CoreDebug_DHCSR_C_HALT_Msk (1UL << CoreDebug_DHCSR_C_HALT_Pos) /*!< \deprecated CoreDebug DHCSR: C_HALT Mask */ + +#define CoreDebug_DHCSR_C_DEBUGEN_Pos 0U /*!< \deprecated CoreDebug DHCSR: C_DEBUGEN Position */ +#define CoreDebug_DHCSR_C_DEBUGEN_Msk (1UL /*<< CoreDebug_DHCSR_C_DEBUGEN_Pos*/) /*!< \deprecated CoreDebug DHCSR: C_DEBUGEN Mask */ + +/* Debug Core Register Selector Register Definitions */ +#define CoreDebug_DCRSR_REGWnR_Pos 16U /*!< \deprecated CoreDebug DCRSR: REGWnR Position */ +#define CoreDebug_DCRSR_REGWnR_Msk (1UL << CoreDebug_DCRSR_REGWnR_Pos) /*!< \deprecated CoreDebug DCRSR: REGWnR Mask */ + +#define CoreDebug_DCRSR_REGSEL_Pos 0U /*!< \deprecated CoreDebug DCRSR: REGSEL Position */ +#define CoreDebug_DCRSR_REGSEL_Msk (0x1FUL /*<< CoreDebug_DCRSR_REGSEL_Pos*/) /*!< \deprecated CoreDebug DCRSR: REGSEL Mask */ + +/* Debug Exception and Monitor Control Register */ +#define CoreDebug_DEMCR_DWTENA_Pos 24U /*!< \deprecated CoreDebug DEMCR: DWTENA Position */ +#define CoreDebug_DEMCR_DWTENA_Msk (1UL << CoreDebug_DEMCR_DWTENA_Pos) /*!< \deprecated CoreDebug DEMCR: DWTENA Mask */ + +#define CoreDebug_DEMCR_VC_HARDERR_Pos 10U /*!< \deprecated CoreDebug DEMCR: VC_HARDERR Position */ +#define CoreDebug_DEMCR_VC_HARDERR_Msk (1UL << CoreDebug_DEMCR_VC_HARDERR_Pos) /*!< \deprecated CoreDebug DEMCR: VC_HARDERR Mask */ + +#define CoreDebug_DEMCR_VC_CORERESET_Pos 0U /*!< \deprecated CoreDebug DEMCR: VC_CORERESET Position */ +#define CoreDebug_DEMCR_VC_CORERESET_Msk (1UL /*<< CoreDebug_DEMCR_VC_CORERESET_Pos*/) /*!< \deprecated CoreDebug DEMCR: VC_CORERESET Mask */ + +/* Debug Authentication Control Register Definitions */ +#define CoreDebug_DAUTHCTRL_INTSPNIDEN_Pos 3U /*!< \deprecated CoreDebug DAUTHCTRL: INTSPNIDEN, Position */ +#define CoreDebug_DAUTHCTRL_INTSPNIDEN_Msk (1UL << CoreDebug_DAUTHCTRL_INTSPNIDEN_Pos) /*!< \deprecated CoreDebug DAUTHCTRL: INTSPNIDEN, Mask */ + +#define CoreDebug_DAUTHCTRL_SPNIDENSEL_Pos 2U /*!< \deprecated CoreDebug DAUTHCTRL: SPNIDENSEL Position */ +#define CoreDebug_DAUTHCTRL_SPNIDENSEL_Msk (1UL << CoreDebug_DAUTHCTRL_SPNIDENSEL_Pos) /*!< \deprecated CoreDebug DAUTHCTRL: SPNIDENSEL Mask */ + +#define CoreDebug_DAUTHCTRL_INTSPIDEN_Pos 1U /*!< \deprecated CoreDebug DAUTHCTRL: INTSPIDEN Position */ +#define CoreDebug_DAUTHCTRL_INTSPIDEN_Msk (1UL << CoreDebug_DAUTHCTRL_INTSPIDEN_Pos) /*!< \deprecated CoreDebug DAUTHCTRL: INTSPIDEN Mask */ + +#define CoreDebug_DAUTHCTRL_SPIDENSEL_Pos 0U /*!< \deprecated CoreDebug DAUTHCTRL: SPIDENSEL Position */ +#define CoreDebug_DAUTHCTRL_SPIDENSEL_Msk (1UL /*<< CoreDebug_DAUTHCTRL_SPIDENSEL_Pos*/) /*!< \deprecated CoreDebug DAUTHCTRL: SPIDENSEL Mask */ + +/* Debug Security Control and Status Register Definitions */ +#define CoreDebug_DSCSR_CDS_Pos 16U /*!< \deprecated CoreDebug DSCSR: CDS Position */ +#define CoreDebug_DSCSR_CDS_Msk (1UL << CoreDebug_DSCSR_CDS_Pos) /*!< \deprecated CoreDebug DSCSR: CDS Mask */ + +#define CoreDebug_DSCSR_SBRSEL_Pos 1U /*!< \deprecated CoreDebug DSCSR: SBRSEL Position */ +#define CoreDebug_DSCSR_SBRSEL_Msk (1UL << CoreDebug_DSCSR_SBRSEL_Pos) /*!< \deprecated CoreDebug DSCSR: SBRSEL Mask */ + +#define CoreDebug_DSCSR_SBRSELEN_Pos 0U /*!< \deprecated CoreDebug DSCSR: SBRSELEN Position */ +#define CoreDebug_DSCSR_SBRSELEN_Msk (1UL /*<< CoreDebug_DSCSR_SBRSELEN_Pos*/) /*!< \deprecated CoreDebug DSCSR: SBRSELEN Mask */ + +/*@} end of group CMSIS_CoreDebug */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_DCB Debug Control Block + \brief Type definitions for the Debug Control Block Registers + @{ + */ + +/** + \brief Structure type to access the Debug Control Block Registers (DCB). + */ +typedef struct +{ + __IOM uint32_t DHCSR; /*!< Offset: 0x000 (R/W) Debug Halting Control and Status Register */ + __OM uint32_t DCRSR; /*!< Offset: 0x004 ( /W) Debug Core Register Selector Register */ + __IOM uint32_t DCRDR; /*!< Offset: 0x008 (R/W) Debug Core Register Data Register */ + __IOM uint32_t DEMCR; /*!< Offset: 0x00C (R/W) Debug Exception and Monitor Control Register */ + uint32_t RESERVED0[1U]; + __IOM uint32_t DAUTHCTRL; /*!< Offset: 0x014 (R/W) Debug Authentication Control Register */ + __IOM uint32_t DSCSR; /*!< Offset: 0x018 (R/W) Debug Security Control and Status Register */ +} DCB_Type; + +/* DHCSR, Debug Halting Control and Status Register Definitions */ +#define DCB_DHCSR_DBGKEY_Pos 16U /*!< DCB DHCSR: Debug key Position */ +#define DCB_DHCSR_DBGKEY_Msk (0xFFFFUL << DCB_DHCSR_DBGKEY_Pos) /*!< DCB DHCSR: Debug key Mask */ + +#define DCB_DHCSR_S_RESTART_ST_Pos 26U /*!< DCB DHCSR: Restart sticky status Position */ +#define DCB_DHCSR_S_RESTART_ST_Msk (0x1UL << DCB_DHCSR_S_RESTART_ST_Pos) /*!< DCB DHCSR: Restart sticky status Mask */ + +#define DCB_DHCSR_S_RESET_ST_Pos 25U /*!< DCB DHCSR: Reset sticky status Position */ +#define DCB_DHCSR_S_RESET_ST_Msk (0x1UL << DCB_DHCSR_S_RESET_ST_Pos) /*!< DCB DHCSR: Reset sticky status Mask */ + +#define DCB_DHCSR_S_RETIRE_ST_Pos 24U /*!< DCB DHCSR: Retire sticky status Position */ +#define DCB_DHCSR_S_RETIRE_ST_Msk (0x1UL << DCB_DHCSR_S_RETIRE_ST_Pos) /*!< DCB DHCSR: Retire sticky status Mask */ + +#define DCB_DHCSR_S_SDE_Pos 20U /*!< DCB DHCSR: Secure debug enabled Position */ +#define DCB_DHCSR_S_SDE_Msk (0x1UL << DCB_DHCSR_S_SDE_Pos) /*!< DCB DHCSR: Secure debug enabled Mask */ + +#define DCB_DHCSR_S_LOCKUP_Pos 19U /*!< DCB DHCSR: Lockup status Position */ +#define DCB_DHCSR_S_LOCKUP_Msk (0x1UL << DCB_DHCSR_S_LOCKUP_Pos) /*!< DCB DHCSR: Lockup status Mask */ + +#define DCB_DHCSR_S_SLEEP_Pos 18U /*!< DCB DHCSR: Sleeping status Position */ +#define DCB_DHCSR_S_SLEEP_Msk (0x1UL << DCB_DHCSR_S_SLEEP_Pos) /*!< DCB DHCSR: Sleeping status Mask */ + +#define DCB_DHCSR_S_HALT_Pos 17U /*!< DCB DHCSR: Halted status Position */ +#define DCB_DHCSR_S_HALT_Msk (0x1UL << DCB_DHCSR_S_HALT_Pos) /*!< DCB DHCSR: Halted status Mask */ + +#define DCB_DHCSR_S_REGRDY_Pos 16U /*!< DCB DHCSR: Register ready status Position */ +#define DCB_DHCSR_S_REGRDY_Msk (0x1UL << DCB_DHCSR_S_REGRDY_Pos) /*!< DCB DHCSR: Register ready status Mask */ + +#define DCB_DHCSR_C_MASKINTS_Pos 3U /*!< DCB DHCSR: Mask interrupts control Position */ +#define DCB_DHCSR_C_MASKINTS_Msk (0x1UL << DCB_DHCSR_C_MASKINTS_Pos) /*!< DCB DHCSR: Mask interrupts control Mask */ + +#define DCB_DHCSR_C_STEP_Pos 2U /*!< DCB DHCSR: Step control Position */ +#define DCB_DHCSR_C_STEP_Msk (0x1UL << DCB_DHCSR_C_STEP_Pos) /*!< DCB DHCSR: Step control Mask */ + +#define DCB_DHCSR_C_HALT_Pos 1U /*!< DCB DHCSR: Halt control Position */ +#define DCB_DHCSR_C_HALT_Msk (0x1UL << DCB_DHCSR_C_HALT_Pos) /*!< DCB DHCSR: Halt control Mask */ + +#define DCB_DHCSR_C_DEBUGEN_Pos 0U /*!< DCB DHCSR: Debug enable control Position */ +#define DCB_DHCSR_C_DEBUGEN_Msk (0x1UL /*<< DCB_DHCSR_C_DEBUGEN_Pos*/) /*!< DCB DHCSR: Debug enable control Mask */ + +/* DCRSR, Debug Core Register Select Register Definitions */ +#define DCB_DCRSR_REGWnR_Pos 16U /*!< DCB DCRSR: Register write/not-read Position */ +#define DCB_DCRSR_REGWnR_Msk (0x1UL << DCB_DCRSR_REGWnR_Pos) /*!< DCB DCRSR: Register write/not-read Mask */ + +#define DCB_DCRSR_REGSEL_Pos 0U /*!< DCB DCRSR: Register selector Position */ +#define DCB_DCRSR_REGSEL_Msk (0x7FUL /*<< DCB_DCRSR_REGSEL_Pos*/) /*!< DCB DCRSR: Register selector Mask */ + +/* DCRDR, Debug Core Register Data Register Definitions */ +#define DCB_DCRDR_DBGTMP_Pos 0U /*!< DCB DCRDR: Data temporary buffer Position */ +#define DCB_DCRDR_DBGTMP_Msk (0xFFFFFFFFUL /*<< DCB_DCRDR_DBGTMP_Pos*/) /*!< DCB DCRDR: Data temporary buffer Mask */ + +/* DEMCR, Debug Exception and Monitor Control Register Definitions */ +#define DCB_DEMCR_TRCENA_Pos 24U /*!< DCB DEMCR: Trace enable Position */ +#define DCB_DEMCR_TRCENA_Msk (0x1UL << DCB_DEMCR_TRCENA_Pos) /*!< DCB DEMCR: Trace enable Mask */ + +#define DCB_DEMCR_VC_HARDERR_Pos 10U /*!< DCB DEMCR: Vector Catch HardFault errors Position */ +#define DCB_DEMCR_VC_HARDERR_Msk (0x1UL << DCB_DEMCR_VC_HARDERR_Pos) /*!< DCB DEMCR: Vector Catch HardFault errors Mask */ + +#define DCB_DEMCR_VC_CORERESET_Pos 0U /*!< DCB DEMCR: Vector Catch Core reset Position */ +#define DCB_DEMCR_VC_CORERESET_Msk (0x1UL /*<< DCB_DEMCR_VC_CORERESET_Pos*/) /*!< DCB DEMCR: Vector Catch Core reset Mask */ + +/* DAUTHCTRL, Debug Authentication Control Register Definitions */ +#define DCB_DAUTHCTRL_INTSPNIDEN_Pos 3U /*!< DCB DAUTHCTRL: Internal Secure non-invasive debug enable Position */ +#define DCB_DAUTHCTRL_INTSPNIDEN_Msk (0x1UL << DCB_DAUTHCTRL_INTSPNIDEN_Pos) /*!< DCB DAUTHCTRL: Internal Secure non-invasive debug enable Mask */ + +#define DCB_DAUTHCTRL_SPNIDENSEL_Pos 2U /*!< DCB DAUTHCTRL: Secure non-invasive debug enable select Position */ +#define DCB_DAUTHCTRL_SPNIDENSEL_Msk (0x1UL << DCB_DAUTHCTRL_SPNIDENSEL_Pos) /*!< DCB DAUTHCTRL: Secure non-invasive debug enable select Mask */ + +#define DCB_DAUTHCTRL_INTSPIDEN_Pos 1U /*!< DCB DAUTHCTRL: Internal Secure invasive debug enable Position */ +#define DCB_DAUTHCTRL_INTSPIDEN_Msk (0x1UL << DCB_DAUTHCTRL_INTSPIDEN_Pos) /*!< DCB DAUTHCTRL: Internal Secure invasive debug enable Mask */ + +#define DCB_DAUTHCTRL_SPIDENSEL_Pos 0U /*!< DCB DAUTHCTRL: Secure invasive debug enable select Position */ +#define DCB_DAUTHCTRL_SPIDENSEL_Msk (0x1UL /*<< DCB_DAUTHCTRL_SPIDENSEL_Pos*/) /*!< DCB DAUTHCTRL: Secure invasive debug enable select Mask */ + +/* DSCSR, Debug Security Control and Status Register Definitions */ +#define DCB_DSCSR_CDSKEY_Pos 17U /*!< DCB DSCSR: CDS write-enable key Position */ +#define DCB_DSCSR_CDSKEY_Msk (0x1UL << DCB_DSCSR_CDSKEY_Pos) /*!< DCB DSCSR: CDS write-enable key Mask */ + +#define DCB_DSCSR_CDS_Pos 16U /*!< DCB DSCSR: Current domain Secure Position */ +#define DCB_DSCSR_CDS_Msk (0x1UL << DCB_DSCSR_CDS_Pos) /*!< DCB DSCSR: Current domain Secure Mask */ + +#define DCB_DSCSR_SBRSEL_Pos 1U /*!< DCB DSCSR: Secure banked register select Position */ +#define DCB_DSCSR_SBRSEL_Msk (0x1UL << DCB_DSCSR_SBRSEL_Pos) /*!< DCB DSCSR: Secure banked register select Mask */ + +#define DCB_DSCSR_SBRSELEN_Pos 0U /*!< DCB DSCSR: Secure banked register select enable Position */ +#define DCB_DSCSR_SBRSELEN_Msk (0x1UL /*<< DCB_DSCSR_SBRSELEN_Pos*/) /*!< DCB DSCSR: Secure banked register select enable Mask */ + +/*@} end of group CMSIS_DCB */ + + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_DIB Debug Identification Block + \brief Type definitions for the Debug Identification Block Registers + @{ + */ + +/** + \brief Structure type to access the Debug Identification Block Registers (DIB). + */ +typedef struct +{ + __OM uint32_t DLAR; /*!< Offset: 0x000 ( /W) SCS Software Lock Access Register */ + __IM uint32_t DLSR; /*!< Offset: 0x004 (R/ ) SCS Software Lock Status Register */ + __IM uint32_t DAUTHSTATUS; /*!< Offset: 0x008 (R/ ) Debug Authentication Status Register */ + __IM uint32_t DDEVARCH; /*!< Offset: 0x00C (R/ ) SCS Device Architecture Register */ + __IM uint32_t DDEVTYPE; /*!< Offset: 0x010 (R/ ) SCS Device Type Register */ +} DIB_Type; + +/* DLAR, SCS Software Lock Access Register Definitions */ +#define DIB_DLAR_KEY_Pos 0U /*!< DIB DLAR: KEY Position */ +#define DIB_DLAR_KEY_Msk (0xFFFFFFFFUL /*<< DIB_DLAR_KEY_Pos */) /*!< DIB DLAR: KEY Mask */ + +/* DLSR, SCS Software Lock Status Register Definitions */ +#define DIB_DLSR_nTT_Pos 2U /*!< DIB DLSR: Not thirty-two bit Position */ +#define DIB_DLSR_nTT_Msk (0x1UL << DIB_DLSR_nTT_Pos ) /*!< DIB DLSR: Not thirty-two bit Mask */ + +#define DIB_DLSR_SLK_Pos 1U /*!< DIB DLSR: Software Lock status Position */ +#define DIB_DLSR_SLK_Msk (0x1UL << DIB_DLSR_SLK_Pos ) /*!< DIB DLSR: Software Lock status Mask */ + +#define DIB_DLSR_SLI_Pos 0U /*!< DIB DLSR: Software Lock implemented Position */ +#define DIB_DLSR_SLI_Msk (0x1UL /*<< DIB_DLSR_SLI_Pos*/) /*!< DIB DLSR: Software Lock implemented Mask */ + +/* DAUTHSTATUS, Debug Authentication Status Register Definitions */ +#define DIB_DAUTHSTATUS_SNID_Pos 6U /*!< DIB DAUTHSTATUS: Secure Non-invasive Debug Position */ +#define DIB_DAUTHSTATUS_SNID_Msk (0x3UL << DIB_DAUTHSTATUS_SNID_Pos ) /*!< DIB DAUTHSTATUS: Secure Non-invasive Debug Mask */ + +#define DIB_DAUTHSTATUS_SID_Pos 4U /*!< DIB DAUTHSTATUS: Secure Invasive Debug Position */ +#define DIB_DAUTHSTATUS_SID_Msk (0x3UL << DIB_DAUTHSTATUS_SID_Pos ) /*!< DIB DAUTHSTATUS: Secure Invasive Debug Mask */ + +#define DIB_DAUTHSTATUS_NSNID_Pos 2U /*!< DIB DAUTHSTATUS: Non-secure Non-invasive Debug Position */ +#define DIB_DAUTHSTATUS_NSNID_Msk (0x3UL << DIB_DAUTHSTATUS_NSNID_Pos ) /*!< DIB DAUTHSTATUS: Non-secure Non-invasive Debug Mask */ + +#define DIB_DAUTHSTATUS_NSID_Pos 0U /*!< DIB DAUTHSTATUS: Non-secure Invasive Debug Position */ +#define DIB_DAUTHSTATUS_NSID_Msk (0x3UL /*<< DIB_DAUTHSTATUS_NSID_Pos*/) /*!< DIB DAUTHSTATUS: Non-secure Invasive Debug Mask */ + +/* DDEVARCH, SCS Device Architecture Register Definitions */ +#define DIB_DDEVARCH_ARCHITECT_Pos 21U /*!< DIB DDEVARCH: Architect Position */ +#define DIB_DDEVARCH_ARCHITECT_Msk (0x7FFUL << DIB_DDEVARCH_ARCHITECT_Pos ) /*!< DIB DDEVARCH: Architect Mask */ + +#define DIB_DDEVARCH_PRESENT_Pos 20U /*!< DIB DDEVARCH: DEVARCH Present Position */ +#define DIB_DDEVARCH_PRESENT_Msk (0x1FUL << DIB_DDEVARCH_PRESENT_Pos ) /*!< DIB DDEVARCH: DEVARCH Present Mask */ + +#define DIB_DDEVARCH_REVISION_Pos 16U /*!< DIB DDEVARCH: Revision Position */ +#define DIB_DDEVARCH_REVISION_Msk (0xFUL << DIB_DDEVARCH_REVISION_Pos ) /*!< DIB DDEVARCH: Revision Mask */ + +#define DIB_DDEVARCH_ARCHVER_Pos 12U /*!< DIB DDEVARCH: Architecture Version Position */ +#define DIB_DDEVARCH_ARCHVER_Msk (0xFUL << DIB_DDEVARCH_ARCHVER_Pos ) /*!< DIB DDEVARCH: Architecture Version Mask */ + +#define DIB_DDEVARCH_ARCHPART_Pos 0U /*!< DIB DDEVARCH: Architecture Part Position */ +#define DIB_DDEVARCH_ARCHPART_Msk (0xFFFUL /*<< DIB_DDEVARCH_ARCHPART_Pos*/) /*!< DIB DDEVARCH: Architecture Part Mask */ + +/* DDEVTYPE, SCS Device Type Register Definitions */ +#define DIB_DDEVTYPE_SUB_Pos 4U /*!< DIB DDEVTYPE: Sub-type Position */ +#define DIB_DDEVTYPE_SUB_Msk (0xFUL << DIB_DDEVTYPE_SUB_Pos ) /*!< DIB DDEVTYPE: Sub-type Mask */ + +#define DIB_DDEVTYPE_MAJOR_Pos 0U /*!< DIB DDEVTYPE: Major type Position */ +#define DIB_DDEVTYPE_MAJOR_Msk (0xFUL /*<< DIB_DDEVTYPE_MAJOR_Pos*/) /*!< DIB DDEVTYPE: Major type Mask */ + + +/*@} end of group CMSIS_DIB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_bitfield Core register bit field macros + \brief Macros for use with bit field definitions (xxx_Pos, xxx_Msk). + @{ + */ + +/** + \brief Mask and shift a bit field value for use in a register bit range. + \param[in] field Name of the register bit field. + \param[in] value Value of the bit field. This parameter is interpreted as an uint32_t type. + \return Masked and shifted value. +*/ +#define _VAL2FLD(field, value) (((uint32_t)(value) << field ## _Pos) & field ## _Msk) + +/** + \brief Mask and shift a register value to extract a bit filed value. + \param[in] field Name of the register bit field. + \param[in] value Value of register. This parameter is interpreted as an uint32_t type. + \return Masked and shifted bit field value. +*/ +#define _FLD2VAL(field, value) (((uint32_t)(value) & field ## _Msk) >> field ## _Pos) + +/*@} end of group CMSIS_core_bitfield */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_base Core Definitions + \brief Definitions for base addresses, unions, and structures. + @{ + */ + +/* Memory mapping of Core Hardware */ + #define SCS_BASE (0xE000E000UL) /*!< System Control Space Base Address */ + #define DWT_BASE (0xE0001000UL) /*!< DWT Base Address */ + #define TPI_BASE (0xE0040000UL) /*!< TPI Base Address */ + #define CoreDebug_BASE (0xE000EDF0UL) /*!< \deprecated Core Debug Base Address */ + #define DCB_BASE (0xE000EDF0UL) /*!< DCB Base Address */ + #define DIB_BASE (0xE000EFB0UL) /*!< DIB Base Address */ + #define SysTick_BASE (SCS_BASE + 0x0010UL) /*!< SysTick Base Address */ + #define NVIC_BASE (SCS_BASE + 0x0100UL) /*!< NVIC Base Address */ + #define SCB_BASE (SCS_BASE + 0x0D00UL) /*!< System Control Block Base Address */ + + + #define SCB ((SCB_Type *) SCB_BASE ) /*!< SCB configuration struct */ + #define SysTick ((SysTick_Type *) SysTick_BASE ) /*!< SysTick configuration struct */ + #define NVIC ((NVIC_Type *) NVIC_BASE ) /*!< NVIC configuration struct */ + #define DWT ((DWT_Type *) DWT_BASE ) /*!< DWT configuration struct */ + #define TPI ((TPI_Type *) TPI_BASE ) /*!< TPI configuration struct */ + #define CoreDebug ((CoreDebug_Type *) CoreDebug_BASE ) /*!< \deprecated Core Debug configuration struct */ + #define DCB ((DCB_Type *) DCB_BASE ) /*!< DCB configuration struct */ + #define DIB ((DIB_Type *) DIB_BASE ) /*!< DIB configuration struct */ + + #if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + #define MPU_BASE (SCS_BASE + 0x0D90UL) /*!< Memory Protection Unit */ + #define MPU ((MPU_Type *) MPU_BASE ) /*!< Memory Protection Unit */ + #endif + + #if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) + #define SAU_BASE (SCS_BASE + 0x0DD0UL) /*!< Security Attribution Unit */ + #define SAU ((SAU_Type *) SAU_BASE ) /*!< Security Attribution Unit */ + #endif + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) + #define SCS_BASE_NS (0xE002E000UL) /*!< System Control Space Base Address (non-secure address space) */ + #define CoreDebug_BASE_NS (0xE002EDF0UL) /*!< \deprecated Core Debug Base Address (non-secure address space) */ + #define DCB_BASE_NS (0xE002EDF0UL) /*!< DCB Base Address (non-secure address space) */ + #define DIB_BASE_NS (0xE002EFB0UL) /*!< DIB Base Address (non-secure address space) */ + #define SysTick_BASE_NS (SCS_BASE_NS + 0x0010UL) /*!< SysTick Base Address (non-secure address space) */ + #define NVIC_BASE_NS (SCS_BASE_NS + 0x0100UL) /*!< NVIC Base Address (non-secure address space) */ + #define SCB_BASE_NS (SCS_BASE_NS + 0x0D00UL) /*!< System Control Block Base Address (non-secure address space) */ + + #define SCB_NS ((SCB_Type *) SCB_BASE_NS ) /*!< SCB configuration struct (non-secure address space) */ + #define SysTick_NS ((SysTick_Type *) SysTick_BASE_NS ) /*!< SysTick configuration struct (non-secure address space) */ + #define NVIC_NS ((NVIC_Type *) NVIC_BASE_NS ) /*!< NVIC configuration struct (non-secure address space) */ + #define CoreDebug_NS ((CoreDebug_Type *) CoreDebug_BASE_NS) /*!< \deprecated Core Debug configuration struct (non-secure address space) */ + #define DCB_NS ((DCB_Type *) DCB_BASE_NS ) /*!< DCB configuration struct (non-secure address space) */ + #define DIB_NS ((DIB_Type *) DIB_BASE_NS ) /*!< DIB configuration struct (non-secure address space) */ + + #if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + #define MPU_BASE_NS (SCS_BASE_NS + 0x0D90UL) /*!< Memory Protection Unit (non-secure address space) */ + #define MPU_NS ((MPU_Type *) MPU_BASE_NS ) /*!< Memory Protection Unit (non-secure address space) */ + #endif + +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ +/*@} */ + + + +/******************************************************************************* + * Hardware Abstraction Layer + Core Function Interface contains: + - Core NVIC Functions + - Core SysTick Functions + - Core Debug Functions + - Core Register Access Functions + ******************************************************************************/ +/** + \defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference +*/ + + + +/* ########################## NVIC functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_NVICFunctions NVIC Functions + \brief Functions that manage interrupts and exceptions via the NVIC. + @{ + */ + +#ifdef CMSIS_NVIC_VIRTUAL + #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE + #define CMSIS_NVIC_VIRTUAL_HEADER_FILE "cmsis_nvic_virtual.h" + #endif + #include CMSIS_NVIC_VIRTUAL_HEADER_FILE +#else +/*#define NVIC_SetPriorityGrouping __NVIC_SetPriorityGrouping not available for Cortex-M23 */ +/*#define NVIC_GetPriorityGrouping __NVIC_GetPriorityGrouping not available for Cortex-M23 */ + #define NVIC_EnableIRQ __NVIC_EnableIRQ + #define NVIC_GetEnableIRQ __NVIC_GetEnableIRQ + #define NVIC_DisableIRQ __NVIC_DisableIRQ + #define NVIC_GetPendingIRQ __NVIC_GetPendingIRQ + #define NVIC_SetPendingIRQ __NVIC_SetPendingIRQ + #define NVIC_ClearPendingIRQ __NVIC_ClearPendingIRQ + #define NVIC_GetActive __NVIC_GetActive + #define NVIC_SetPriority __NVIC_SetPriority + #define NVIC_GetPriority __NVIC_GetPriority + #define NVIC_SystemReset __NVIC_SystemReset +#endif /* CMSIS_NVIC_VIRTUAL */ + +#ifdef CMSIS_VECTAB_VIRTUAL + #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE + #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE "cmsis_vectab_virtual.h" + #endif + #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetVector __NVIC_SetVector + #define NVIC_GetVector __NVIC_GetVector +#endif /* (CMSIS_VECTAB_VIRTUAL) */ + +#define NVIC_USER_IRQ_OFFSET 16 + + +/* Special LR values for Secure/Non-Secure call handling and exception handling */ + +/* Function Return Payload (from ARMv8-M Architecture Reference Manual) LR value on entry from Secure BLXNS */ +#define FNC_RETURN (0xFEFFFFFFUL) /* bit [0] ignored when processing a branch */ + +/* The following EXC_RETURN mask values are used to evaluate the LR on exception entry */ +#define EXC_RETURN_PREFIX (0xFF000000UL) /* bits [31:24] set to indicate an EXC_RETURN value */ +#define EXC_RETURN_S (0x00000040UL) /* bit [6] stack used to push registers: 0=Non-secure 1=Secure */ +#define EXC_RETURN_DCRS (0x00000020UL) /* bit [5] stacking rules for called registers: 0=skipped 1=saved */ +#define EXC_RETURN_FTYPE (0x00000010UL) /* bit [4] allocate stack for floating-point context: 0=done 1=skipped */ +#define EXC_RETURN_MODE (0x00000008UL) /* bit [3] processor mode for return: 0=Handler mode 1=Thread mode */ +#define EXC_RETURN_SPSEL (0x00000004UL) /* bit [2] stack pointer used to restore context: 0=MSP 1=PSP */ +#define EXC_RETURN_ES (0x00000001UL) /* bit [0] security state exception was taken to: 0=Non-secure 1=Secure */ + +/* Integrity Signature (from ARMv8-M Architecture Reference Manual) for exception context stacking */ +#if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) /* Value for processors with floating-point extension: */ +#define EXC_INTEGRITY_SIGNATURE (0xFEFA125AUL) /* bit [0] SFTC must match LR bit[4] EXC_RETURN_FTYPE */ +#else +#define EXC_INTEGRITY_SIGNATURE (0xFEFA125BUL) /* Value for processors without floating-point extension */ +#endif + + +/* Interrupt Priorities are WORD accessible only under Armv6-M */ +/* The following MACROS handle generation of the register offset and byte masks */ +#define _BIT_SHIFT(IRQn) ( ((((uint32_t)(int32_t)(IRQn)) ) & 0x03UL) * 8UL) +#define _SHP_IDX(IRQn) ( (((((uint32_t)(int32_t)(IRQn)) & 0x0FUL)-8UL) >> 2UL) ) +#define _IP_IDX(IRQn) ( (((uint32_t)(int32_t)(IRQn)) >> 2UL) ) + +#define __NVIC_SetPriorityGrouping(X) (void)(X) +#define __NVIC_GetPriorityGrouping() (0U) + +/** + \brief Enable Interrupt + \details Enables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + __COMPILER_BARRIER(); + NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __COMPILER_BARRIER(); + } +} + + +/** + \brief Get Interrupt Enable status + \details Returns a device specific interrupt enable status from the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt is not enabled. + \return 1 Interrupt is enabled. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Disable Interrupt + \details Disables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_DisableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __DSB(); + __ISB(); + } +} + + +/** + \brief Get Pending Interrupt + \details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not pending. + \return 1 Interrupt status is pending. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Pending Interrupt + \details Sets the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Clear Pending Interrupt + \details Clears the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Active Interrupt + \details Reads the active register in the NVIC and returns the active bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not active. + \return 1 Interrupt status is active. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetActive(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief Get Interrupt Target State + \details Reads the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 if interrupt is assigned to Secure + \return 1 if interrupt is assigned to Non Secure + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t NVIC_GetTargetState(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Interrupt Target State + \details Sets the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 if interrupt is assigned to Secure + 1 if interrupt is assigned to Non Secure + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t NVIC_SetTargetState(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] |= ((uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL))); + return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Clear Interrupt Target State + \details Clears the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 if interrupt is assigned to Secure + 1 if interrupt is assigned to Non Secure + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t NVIC_ClearTargetState(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] &= ~((uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL))); + return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + + +/** + \brief Set Interrupt Priority + \details Sets the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \param [in] priority Priority to set. + \note The priority cannot be set for every processor exception. + */ +__STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->IPR[_IP_IDX(IRQn)] = ((uint32_t)(NVIC->IPR[_IP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | + (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn))); + } + else + { + SCB->SHPR[_SHP_IDX(IRQn)] = ((uint32_t)(SCB->SHPR[_SHP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | + (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn))); + } +} + + +/** + \brief Get Interrupt Priority + \details Reads the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Interrupt Priority. + Value is aligned automatically to the implemented priority bits of the microcontroller. + */ +__STATIC_INLINE uint32_t __NVIC_GetPriority(IRQn_Type IRQn) +{ + + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->IPR[ _IP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return((uint32_t)(((SCB->SHPR[_SHP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS))); + } +} + + +/** + \brief Encode Priority + \details Encodes the priority for an interrupt with the given priority group, + preemptive priority value, and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Used priority group. + \param [in] PreemptPriority Preemptive priority value (starting from 0). + \param [in] SubPriority Subpriority value (starting from 0). + \return Encoded priority. Value can be used in the function \ref NVIC_SetPriority(). + */ +__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + return ( + ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) | + ((SubPriority & (uint32_t)((1UL << (SubPriorityBits )) - 1UL))) + ); +} + + +/** + \brief Decode Priority + \details Decodes an interrupt priority value with a given priority group to + preemptive priority value and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set. + \param [in] Priority Priority value, which can be retrieved with the function \ref NVIC_GetPriority(). + \param [in] PriorityGroup Used priority group. + \param [out] pPreemptPriority Preemptive priority value (starting from 0). + \param [out] pSubPriority Subpriority value (starting from 0). + */ +__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* const pPreemptPriority, uint32_t* const pSubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + *pPreemptPriority = (Priority >> SubPriorityBits) & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL); + *pSubPriority = (Priority ) & (uint32_t)((1UL << (SubPriorityBits )) - 1UL); +} + + +/** + \brief Set Interrupt Vector + \details Sets an interrupt vector in SRAM based interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + VTOR must been relocated to SRAM before. + If VTOR is not present address 0 must be mapped to SRAM. + \param [in] IRQn Interrupt number + \param [in] vector Address of interrupt handler function + */ +__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector) +{ +#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U) + uint32_t *vectors = (uint32_t *)SCB->VTOR; +#else + uint32_t *vectors = (uint32_t *)0x0U; +#endif + vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET] = vector; + __DSB(); +} + + +/** + \brief Get Interrupt Vector + \details Reads an interrupt vector from interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Address of interrupt handler function + */ +__STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn) +{ +#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U) + uint32_t *vectors = (uint32_t *)SCB->VTOR; +#else + uint32_t *vectors = (uint32_t *)0x0U; +#endif + return vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET]; +} + + +/** + \brief System Reset + \details Initiates a system reset request to reset the MCU. + */ +__NO_RETURN __STATIC_INLINE void __NVIC_SystemReset(void) +{ + __DSB(); /* Ensure all outstanding memory accesses included + buffered write are completed before reset */ + SCB->AIRCR = ((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + SCB_AIRCR_SYSRESETREQ_Msk); + __DSB(); /* Ensure completion of memory access */ + + for(;;) /* wait until reset */ + { + __NOP(); + } +} + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief Enable Interrupt (non-secure) + \details Enables a device specific interrupt in the non-secure NVIC interrupt controller when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_EnableIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Interrupt Enable status (non-secure) + \details Returns a device specific interrupt enable status from the non-secure NVIC interrupt controller when in secure state. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt is not enabled. + \return 1 Interrupt is enabled. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetEnableIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Disable Interrupt (non-secure) + \details Disables a device specific interrupt in the non-secure NVIC interrupt controller when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_DisableIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Pending Interrupt (non-secure) + \details Reads the NVIC pending register in the non-secure NVIC when in secure state and returns the pending bit for the specified device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not pending. + \return 1 Interrupt status is pending. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetPendingIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Pending Interrupt (non-secure) + \details Sets the pending bit of a device specific interrupt in the non-secure NVIC pending register when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_SetPendingIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Clear Pending Interrupt (non-secure) + \details Clears the pending bit of a device specific interrupt in the non-secure NVIC pending register when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_ClearPendingIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Active Interrupt (non-secure) + \details Reads the active register in non-secure NVIC when in secure state and returns the active bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not active. + \return 1 Interrupt status is active. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetActive_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Interrupt Priority (non-secure) + \details Sets the priority of a non-secure device specific interrupt or a non-secure processor exception when in secure state. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \param [in] priority Priority to set. + \note The priority cannot be set for every non-secure processor exception. + */ +__STATIC_INLINE void TZ_NVIC_SetPriority_NS(IRQn_Type IRQn, uint32_t priority) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->IPR[_IP_IDX(IRQn)] = ((uint32_t)(NVIC_NS->IPR[_IP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | + (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn))); + } + else + { + SCB_NS->SHPR[_SHP_IDX(IRQn)] = ((uint32_t)(SCB_NS->SHPR[_SHP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | + (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn))); + } +} + + +/** + \brief Get Interrupt Priority (non-secure) + \details Reads the priority of a non-secure device specific interrupt or a non-secure processor exception when in secure state. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Interrupt Priority. Value is aligned automatically to the implemented priority bits of the microcontroller. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetPriority_NS(IRQn_Type IRQn) +{ + + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->IPR[ _IP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return((uint32_t)(((SCB_NS->SHPR[_SHP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS))); + } +} +#endif /* defined (__ARM_FEATURE_CMSE) &&(__ARM_FEATURE_CMSE == 3U) */ + +/*@} end of CMSIS_Core_NVICFunctions */ + +/* ########################## MPU functions #################################### */ + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + +#include "mpu_armv8.h" + +#endif + +/* ########################## FPU functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_FpuFunctions FPU Functions + \brief Function that provides FPU type. + @{ + */ + +/** + \brief get FPU type + \details returns the FPU type + \returns + - \b 0: No FPU + - \b 1: Single precision FPU + - \b 2: Double + Single precision FPU + */ +__STATIC_INLINE uint32_t SCB_GetFPUType(void) +{ + return 0U; /* No FPU */ +} + + +/*@} end of CMSIS_Core_FpuFunctions */ + + + +/* ########################## SAU functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SAUFunctions SAU Functions + \brief Functions that configure the SAU. + @{ + */ + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) + +/** + \brief Enable SAU + \details Enables the Security Attribution Unit (SAU). + */ +__STATIC_INLINE void TZ_SAU_Enable(void) +{ + SAU->CTRL |= (SAU_CTRL_ENABLE_Msk); +} + + + +/** + \brief Disable SAU + \details Disables the Security Attribution Unit (SAU). + */ +__STATIC_INLINE void TZ_SAU_Disable(void) +{ + SAU->CTRL &= ~(SAU_CTRL_ENABLE_Msk); +} + +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + +/*@} end of CMSIS_Core_SAUFunctions */ + + + + +/* ################################## Debug Control function ############################################ */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_DCBFunctions Debug Control Functions + \brief Functions that access the Debug Control Block. + @{ + */ + + +/** + \brief Set Debug Authentication Control Register + \details writes to Debug Authentication Control register. + \param [in] value value to be writen. + */ +__STATIC_INLINE void DCB_SetAuthCtrl(uint32_t value) +{ + __DSB(); + __ISB(); + DCB->DAUTHCTRL = value; + __DSB(); + __ISB(); +} + + +/** + \brief Get Debug Authentication Control Register + \details Reads Debug Authentication Control register. + \return Debug Authentication Control Register. + */ +__STATIC_INLINE uint32_t DCB_GetAuthCtrl(void) +{ + return (DCB->DAUTHCTRL); +} + + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief Set Debug Authentication Control Register (non-secure) + \details writes to non-secure Debug Authentication Control register when in secure state. + \param [in] value value to be writen + */ +__STATIC_INLINE void TZ_DCB_SetAuthCtrl_NS(uint32_t value) +{ + __DSB(); + __ISB(); + DCB_NS->DAUTHCTRL = value; + __DSB(); + __ISB(); +} + + +/** + \brief Get Debug Authentication Control Register (non-secure) + \details Reads non-secure Debug Authentication Control register when in secure state. + \return Debug Authentication Control Register. + */ +__STATIC_INLINE uint32_t TZ_DCB_GetAuthCtrl_NS(void) +{ + return (DCB_NS->DAUTHCTRL); +} +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + +/*@} end of CMSIS_Core_DCBFunctions */ + + + + +/* ################################## Debug Identification function ############################################ */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_DIBFunctions Debug Identification Functions + \brief Functions that access the Debug Identification Block. + @{ + */ + + +/** + \brief Get Debug Authentication Status Register + \details Reads Debug Authentication Status register. + \return Debug Authentication Status Register. + */ +__STATIC_INLINE uint32_t DIB_GetAuthStatus(void) +{ + return (DIB->DAUTHSTATUS); +} + + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief Get Debug Authentication Status Register (non-secure) + \details Reads non-secure Debug Authentication Status register when in secure state. + \return Debug Authentication Status Register. + */ +__STATIC_INLINE uint32_t TZ_DIB_GetAuthStatus_NS(void) +{ + return (DIB_NS->DAUTHSTATUS); +} +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + +/*@} end of CMSIS_Core_DCBFunctions */ + + + + +/* ################################## SysTick function ############################################ */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SysTickFunctions SysTick Functions + \brief Functions that configure the System. + @{ + */ + +#if defined (__Vendor_SysTickConfig) && (__Vendor_SysTickConfig == 0U) + +/** + \brief System Tick Configuration + \details Initializes the System Timer and its interrupt, and starts the System Tick Timer. + Counter is in free running mode to generate periodic interrupts. + \param [in] ticks Number of ticks between two interrupts. + \return 0 Function succeeded. + \return 1 Function failed. + \note When the variable __Vendor_SysTickConfig is set to 1, then the + function SysTick_Config is not included. In this case, the file device.h + must contain a vendor-specific implementation of this function. + */ +__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks) +{ + if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) + { + return (1UL); /* Reload value impossible */ + } + + SysTick->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ + NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ + SysTick->VAL = 0UL; /* Load the SysTick Counter Value */ + SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0UL); /* Function successful */ +} + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief System Tick Configuration (non-secure) + \details Initializes the non-secure System Timer and its interrupt when in secure state, and starts the System Tick Timer. + Counter is in free running mode to generate periodic interrupts. + \param [in] ticks Number of ticks between two interrupts. + \return 0 Function succeeded. + \return 1 Function failed. + \note When the variable __Vendor_SysTickConfig is set to 1, then the + function TZ_SysTick_Config_NS is not included. In this case, the file device.h + must contain a vendor-specific implementation of this function. + + */ +__STATIC_INLINE uint32_t TZ_SysTick_Config_NS(uint32_t ticks) +{ + if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) + { + return (1UL); /* Reload value impossible */ + } + + SysTick_NS->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ + TZ_NVIC_SetPriority_NS (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ + SysTick_NS->VAL = 0UL; /* Load the SysTick Counter Value */ + SysTick_NS->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0UL); /* Function successful */ +} +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + +#endif + +/*@} end of CMSIS_Core_SysTickFunctions */ + + + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_CM23_H_DEPENDANT */ + +#endif /* __CMSIS_GENERIC */ diff --git a/bsp/renesas/ra8m1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm3.h b/bsp/renesas/ra8m1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm3.h new file mode 100644 index 000000000000..74fb87e5c561 --- /dev/null +++ b/bsp/renesas/ra8m1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm3.h @@ -0,0 +1,1943 @@ +/**************************************************************************//** + * @file core_cm3.h + * @brief CMSIS Cortex-M3 Core Peripheral Access Layer Header File + * @version V5.1.2 + * @date 04. June 2021 + ******************************************************************************/ +/* + * Copyright (c) 2009-2021 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#elif defined (__clang__) + #pragma clang system_header /* treat file as system include file */ +#endif + +#ifndef __CORE_CM3_H_GENERIC +#define __CORE_CM3_H_GENERIC + +#include + +#ifdef __cplusplus + extern "C" { +#endif + +/** + \page CMSIS_MISRA_Exceptions MISRA-C:2004 Compliance Exceptions + CMSIS violates the following MISRA-C:2004 rules: + + \li Required Rule 8.5, object/function definition in header file.
+ Function definitions in header files are used to allow 'inlining'. + + \li Required Rule 18.4, declaration of union type or object of union type: '{...}'.
+ Unions are used for effective representation of core registers. + + \li Advisory Rule 19.7, Function-like macro defined.
+ Function-like macros are used to allow more efficient code. + */ + + +/******************************************************************************* + * CMSIS definitions + ******************************************************************************/ +/** + \ingroup Cortex_M3 + @{ + */ + +#include "cmsis_version.h" + +/* CMSIS CM3 definitions */ +#define __CM3_CMSIS_VERSION_MAIN (__CM_CMSIS_VERSION_MAIN) /*!< \deprecated [31:16] CMSIS HAL main version */ +#define __CM3_CMSIS_VERSION_SUB (__CM_CMSIS_VERSION_SUB) /*!< \deprecated [15:0] CMSIS HAL sub version */ +#define __CM3_CMSIS_VERSION ((__CM3_CMSIS_VERSION_MAIN << 16U) | \ + __CM3_CMSIS_VERSION_SUB ) /*!< \deprecated CMSIS HAL version number */ + +#define __CORTEX_M (3U) /*!< Cortex-M Core */ + +/** __FPU_USED indicates whether an FPU is used or not. + This core does not support an FPU at all +*/ +#define __FPU_USED 0U + +#if defined ( __CC_ARM ) + #if defined __TARGET_FPU_VFP + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) + #if defined __ARM_FP + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __GNUC__ ) + #if defined (__VFP_FP__) && !defined(__SOFTFP__) + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __ICCARM__ ) + #if defined __ARMVFP__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __TI_ARM__ ) + #if defined __TI_VFP_SUPPORT__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __TASKING__ ) + #if defined __FPU_VFP__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __CSMC__ ) + #if ( __CSMC__ & 0x400U) + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#endif + +#include "cmsis_compiler.h" /* CMSIS compiler specific defines */ + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_CM3_H_GENERIC */ + +#ifndef __CMSIS_GENERIC + +#ifndef __CORE_CM3_H_DEPENDANT +#define __CORE_CM3_H_DEPENDANT + +#ifdef __cplusplus + extern "C" { +#endif + +/* check device defines and use defaults */ +#if defined __CHECK_DEVICE_DEFINES + #ifndef __CM3_REV + #define __CM3_REV 0x0200U + #warning "__CM3_REV not defined in device header file; using default!" + #endif + + #ifndef __MPU_PRESENT + #define __MPU_PRESENT 0U + #warning "__MPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __VTOR_PRESENT + #define __VTOR_PRESENT 1U + #warning "__VTOR_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __NVIC_PRIO_BITS + #define __NVIC_PRIO_BITS 3U + #warning "__NVIC_PRIO_BITS not defined in device header file; using default!" + #endif + + #ifndef __Vendor_SysTickConfig + #define __Vendor_SysTickConfig 0U + #warning "__Vendor_SysTickConfig not defined in device header file; using default!" + #endif +#endif + +/* IO definitions (access restrictions to peripheral registers) */ +/** + \defgroup CMSIS_glob_defs CMSIS Global Defines + + IO Type Qualifiers are used + \li to specify the access to peripheral variables. + \li for automatic generation of peripheral register debug information. +*/ +#ifdef __cplusplus + #define __I volatile /*!< Defines 'read only' permissions */ +#else + #define __I volatile const /*!< Defines 'read only' permissions */ +#endif +#define __O volatile /*!< Defines 'write only' permissions */ +#define __IO volatile /*!< Defines 'read / write' permissions */ + +/* following defines should be used for structure members */ +#define __IM volatile const /*! Defines 'read only' structure member permissions */ +#define __OM volatile /*! Defines 'write only' structure member permissions */ +#define __IOM volatile /*! Defines 'read / write' structure member permissions */ + +/*@} end of group Cortex_M3 */ + + + +/******************************************************************************* + * Register Abstraction + Core Register contain: + - Core Register + - Core NVIC Register + - Core SCB Register + - Core SysTick Register + - Core Debug Register + - Core MPU Register + ******************************************************************************/ +/** + \defgroup CMSIS_core_register Defines and Type Definitions + \brief Type definitions and defines for Cortex-M processor based devices. +*/ + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CORE Status and Control Registers + \brief Core Register type definitions. + @{ + */ + +/** + \brief Union type to access the Application Program Status Register (APSR). + */ +typedef union +{ + struct + { + uint32_t _reserved0:27; /*!< bit: 0..26 Reserved */ + uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} APSR_Type; + +/* APSR Register Definitions */ +#define APSR_N_Pos 31U /*!< APSR: N Position */ +#define APSR_N_Msk (1UL << APSR_N_Pos) /*!< APSR: N Mask */ + +#define APSR_Z_Pos 30U /*!< APSR: Z Position */ +#define APSR_Z_Msk (1UL << APSR_Z_Pos) /*!< APSR: Z Mask */ + +#define APSR_C_Pos 29U /*!< APSR: C Position */ +#define APSR_C_Msk (1UL << APSR_C_Pos) /*!< APSR: C Mask */ + +#define APSR_V_Pos 28U /*!< APSR: V Position */ +#define APSR_V_Msk (1UL << APSR_V_Pos) /*!< APSR: V Mask */ + +#define APSR_Q_Pos 27U /*!< APSR: Q Position */ +#define APSR_Q_Msk (1UL << APSR_Q_Pos) /*!< APSR: Q Mask */ + + +/** + \brief Union type to access the Interrupt Program Status Register (IPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:23; /*!< bit: 9..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} IPSR_Type; + +/* IPSR Register Definitions */ +#define IPSR_ISR_Pos 0U /*!< IPSR: ISR Position */ +#define IPSR_ISR_Msk (0x1FFUL /*<< IPSR_ISR_Pos*/) /*!< IPSR: ISR Mask */ + + +/** + \brief Union type to access the Special-Purpose Program Status Registers (xPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:1; /*!< bit: 9 Reserved */ + uint32_t ICI_IT_1:6; /*!< bit: 10..15 ICI/IT part 1 */ + uint32_t _reserved1:8; /*!< bit: 16..23 Reserved */ + uint32_t T:1; /*!< bit: 24 Thumb bit */ + uint32_t ICI_IT_2:2; /*!< bit: 25..26 ICI/IT part 2 */ + uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} xPSR_Type; + +/* xPSR Register Definitions */ +#define xPSR_N_Pos 31U /*!< xPSR: N Position */ +#define xPSR_N_Msk (1UL << xPSR_N_Pos) /*!< xPSR: N Mask */ + +#define xPSR_Z_Pos 30U /*!< xPSR: Z Position */ +#define xPSR_Z_Msk (1UL << xPSR_Z_Pos) /*!< xPSR: Z Mask */ + +#define xPSR_C_Pos 29U /*!< xPSR: C Position */ +#define xPSR_C_Msk (1UL << xPSR_C_Pos) /*!< xPSR: C Mask */ + +#define xPSR_V_Pos 28U /*!< xPSR: V Position */ +#define xPSR_V_Msk (1UL << xPSR_V_Pos) /*!< xPSR: V Mask */ + +#define xPSR_Q_Pos 27U /*!< xPSR: Q Position */ +#define xPSR_Q_Msk (1UL << xPSR_Q_Pos) /*!< xPSR: Q Mask */ + +#define xPSR_ICI_IT_2_Pos 25U /*!< xPSR: ICI/IT part 2 Position */ +#define xPSR_ICI_IT_2_Msk (3UL << xPSR_ICI_IT_2_Pos) /*!< xPSR: ICI/IT part 2 Mask */ + +#define xPSR_T_Pos 24U /*!< xPSR: T Position */ +#define xPSR_T_Msk (1UL << xPSR_T_Pos) /*!< xPSR: T Mask */ + +#define xPSR_ICI_IT_1_Pos 10U /*!< xPSR: ICI/IT part 1 Position */ +#define xPSR_ICI_IT_1_Msk (0x3FUL << xPSR_ICI_IT_1_Pos) /*!< xPSR: ICI/IT part 1 Mask */ + +#define xPSR_ISR_Pos 0U /*!< xPSR: ISR Position */ +#define xPSR_ISR_Msk (0x1FFUL /*<< xPSR_ISR_Pos*/) /*!< xPSR: ISR Mask */ + + +/** + \brief Union type to access the Control Registers (CONTROL). + */ +typedef union +{ + struct + { + uint32_t nPRIV:1; /*!< bit: 0 Execution privilege in Thread mode */ + uint32_t SPSEL:1; /*!< bit: 1 Stack to be used */ + uint32_t _reserved1:30; /*!< bit: 2..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} CONTROL_Type; + +/* CONTROL Register Definitions */ +#define CONTROL_SPSEL_Pos 1U /*!< CONTROL: SPSEL Position */ +#define CONTROL_SPSEL_Msk (1UL << CONTROL_SPSEL_Pos) /*!< CONTROL: SPSEL Mask */ + +#define CONTROL_nPRIV_Pos 0U /*!< CONTROL: nPRIV Position */ +#define CONTROL_nPRIV_Msk (1UL /*<< CONTROL_nPRIV_Pos*/) /*!< CONTROL: nPRIV Mask */ + +/*@} end of group CMSIS_CORE */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_NVIC Nested Vectored Interrupt Controller (NVIC) + \brief Type definitions for the NVIC Registers + @{ + */ + +/** + \brief Structure type to access the Nested Vectored Interrupt Controller (NVIC). + */ +typedef struct +{ + __IOM uint32_t ISER[8U]; /*!< Offset: 0x000 (R/W) Interrupt Set Enable Register */ + uint32_t RESERVED0[24U]; + __IOM uint32_t ICER[8U]; /*!< Offset: 0x080 (R/W) Interrupt Clear Enable Register */ + uint32_t RESERVED1[24U]; + __IOM uint32_t ISPR[8U]; /*!< Offset: 0x100 (R/W) Interrupt Set Pending Register */ + uint32_t RESERVED2[24U]; + __IOM uint32_t ICPR[8U]; /*!< Offset: 0x180 (R/W) Interrupt Clear Pending Register */ + uint32_t RESERVED3[24U]; + __IOM uint32_t IABR[8U]; /*!< Offset: 0x200 (R/W) Interrupt Active bit Register */ + uint32_t RESERVED4[56U]; + __IOM uint8_t IP[240U]; /*!< Offset: 0x300 (R/W) Interrupt Priority Register (8Bit wide) */ + uint32_t RESERVED5[644U]; + __OM uint32_t STIR; /*!< Offset: 0xE00 ( /W) Software Trigger Interrupt Register */ +} NVIC_Type; + +/* Software Triggered Interrupt Register Definitions */ +#define NVIC_STIR_INTID_Pos 0U /*!< STIR: INTLINESNUM Position */ +#define NVIC_STIR_INTID_Msk (0x1FFUL /*<< NVIC_STIR_INTID_Pos*/) /*!< STIR: INTLINESNUM Mask */ + +/*@} end of group CMSIS_NVIC */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SCB System Control Block (SCB) + \brief Type definitions for the System Control Block Registers + @{ + */ + +/** + \brief Structure type to access the System Control Block (SCB). + */ +typedef struct +{ + __IM uint32_t CPUID; /*!< Offset: 0x000 (R/ ) CPUID Base Register */ + __IOM uint32_t ICSR; /*!< Offset: 0x004 (R/W) Interrupt Control and State Register */ + __IOM uint32_t VTOR; /*!< Offset: 0x008 (R/W) Vector Table Offset Register */ + __IOM uint32_t AIRCR; /*!< Offset: 0x00C (R/W) Application Interrupt and Reset Control Register */ + __IOM uint32_t SCR; /*!< Offset: 0x010 (R/W) System Control Register */ + __IOM uint32_t CCR; /*!< Offset: 0x014 (R/W) Configuration Control Register */ + __IOM uint8_t SHP[12U]; /*!< Offset: 0x018 (R/W) System Handlers Priority Registers (4-7, 8-11, 12-15) */ + __IOM uint32_t SHCSR; /*!< Offset: 0x024 (R/W) System Handler Control and State Register */ + __IOM uint32_t CFSR; /*!< Offset: 0x028 (R/W) Configurable Fault Status Register */ + __IOM uint32_t HFSR; /*!< Offset: 0x02C (R/W) HardFault Status Register */ + __IOM uint32_t DFSR; /*!< Offset: 0x030 (R/W) Debug Fault Status Register */ + __IOM uint32_t MMFAR; /*!< Offset: 0x034 (R/W) MemManage Fault Address Register */ + __IOM uint32_t BFAR; /*!< Offset: 0x038 (R/W) BusFault Address Register */ + __IOM uint32_t AFSR; /*!< Offset: 0x03C (R/W) Auxiliary Fault Status Register */ + __IM uint32_t PFR[2U]; /*!< Offset: 0x040 (R/ ) Processor Feature Register */ + __IM uint32_t DFR; /*!< Offset: 0x048 (R/ ) Debug Feature Register */ + __IM uint32_t ADR; /*!< Offset: 0x04C (R/ ) Auxiliary Feature Register */ + __IM uint32_t MMFR[4U]; /*!< Offset: 0x050 (R/ ) Memory Model Feature Register */ + __IM uint32_t ISAR[5U]; /*!< Offset: 0x060 (R/ ) Instruction Set Attributes Register */ + uint32_t RESERVED0[5U]; + __IOM uint32_t CPACR; /*!< Offset: 0x088 (R/W) Coprocessor Access Control Register */ +} SCB_Type; + +/* SCB CPUID Register Definitions */ +#define SCB_CPUID_IMPLEMENTER_Pos 24U /*!< SCB CPUID: IMPLEMENTER Position */ +#define SCB_CPUID_IMPLEMENTER_Msk (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos) /*!< SCB CPUID: IMPLEMENTER Mask */ + +#define SCB_CPUID_VARIANT_Pos 20U /*!< SCB CPUID: VARIANT Position */ +#define SCB_CPUID_VARIANT_Msk (0xFUL << SCB_CPUID_VARIANT_Pos) /*!< SCB CPUID: VARIANT Mask */ + +#define SCB_CPUID_ARCHITECTURE_Pos 16U /*!< SCB CPUID: ARCHITECTURE Position */ +#define SCB_CPUID_ARCHITECTURE_Msk (0xFUL << SCB_CPUID_ARCHITECTURE_Pos) /*!< SCB CPUID: ARCHITECTURE Mask */ + +#define SCB_CPUID_PARTNO_Pos 4U /*!< SCB CPUID: PARTNO Position */ +#define SCB_CPUID_PARTNO_Msk (0xFFFUL << SCB_CPUID_PARTNO_Pos) /*!< SCB CPUID: PARTNO Mask */ + +#define SCB_CPUID_REVISION_Pos 0U /*!< SCB CPUID: REVISION Position */ +#define SCB_CPUID_REVISION_Msk (0xFUL /*<< SCB_CPUID_REVISION_Pos*/) /*!< SCB CPUID: REVISION Mask */ + +/* SCB Interrupt Control State Register Definitions */ +#define SCB_ICSR_NMIPENDSET_Pos 31U /*!< SCB ICSR: NMIPENDSET Position */ +#define SCB_ICSR_NMIPENDSET_Msk (1UL << SCB_ICSR_NMIPENDSET_Pos) /*!< SCB ICSR: NMIPENDSET Mask */ + +#define SCB_ICSR_PENDSVSET_Pos 28U /*!< SCB ICSR: PENDSVSET Position */ +#define SCB_ICSR_PENDSVSET_Msk (1UL << SCB_ICSR_PENDSVSET_Pos) /*!< SCB ICSR: PENDSVSET Mask */ + +#define SCB_ICSR_PENDSVCLR_Pos 27U /*!< SCB ICSR: PENDSVCLR Position */ +#define SCB_ICSR_PENDSVCLR_Msk (1UL << SCB_ICSR_PENDSVCLR_Pos) /*!< SCB ICSR: PENDSVCLR Mask */ + +#define SCB_ICSR_PENDSTSET_Pos 26U /*!< SCB ICSR: PENDSTSET Position */ +#define SCB_ICSR_PENDSTSET_Msk (1UL << SCB_ICSR_PENDSTSET_Pos) /*!< SCB ICSR: PENDSTSET Mask */ + +#define SCB_ICSR_PENDSTCLR_Pos 25U /*!< SCB ICSR: PENDSTCLR Position */ +#define SCB_ICSR_PENDSTCLR_Msk (1UL << SCB_ICSR_PENDSTCLR_Pos) /*!< SCB ICSR: PENDSTCLR Mask */ + +#define SCB_ICSR_ISRPREEMPT_Pos 23U /*!< SCB ICSR: ISRPREEMPT Position */ +#define SCB_ICSR_ISRPREEMPT_Msk (1UL << SCB_ICSR_ISRPREEMPT_Pos) /*!< SCB ICSR: ISRPREEMPT Mask */ + +#define SCB_ICSR_ISRPENDING_Pos 22U /*!< SCB ICSR: ISRPENDING Position */ +#define SCB_ICSR_ISRPENDING_Msk (1UL << SCB_ICSR_ISRPENDING_Pos) /*!< SCB ICSR: ISRPENDING Mask */ + +#define SCB_ICSR_VECTPENDING_Pos 12U /*!< SCB ICSR: VECTPENDING Position */ +#define SCB_ICSR_VECTPENDING_Msk (0x1FFUL << SCB_ICSR_VECTPENDING_Pos) /*!< SCB ICSR: VECTPENDING Mask */ + +#define SCB_ICSR_RETTOBASE_Pos 11U /*!< SCB ICSR: RETTOBASE Position */ +#define SCB_ICSR_RETTOBASE_Msk (1UL << SCB_ICSR_RETTOBASE_Pos) /*!< SCB ICSR: RETTOBASE Mask */ + +#define SCB_ICSR_VECTACTIVE_Pos 0U /*!< SCB ICSR: VECTACTIVE Position */ +#define SCB_ICSR_VECTACTIVE_Msk (0x1FFUL /*<< SCB_ICSR_VECTACTIVE_Pos*/) /*!< SCB ICSR: VECTACTIVE Mask */ + +/* SCB Vector Table Offset Register Definitions */ +#if defined (__CM3_REV) && (__CM3_REV < 0x0201U) /* core r2p1 */ +#define SCB_VTOR_TBLBASE_Pos 29U /*!< SCB VTOR: TBLBASE Position */ +#define SCB_VTOR_TBLBASE_Msk (1UL << SCB_VTOR_TBLBASE_Pos) /*!< SCB VTOR: TBLBASE Mask */ + +#define SCB_VTOR_TBLOFF_Pos 7U /*!< SCB VTOR: TBLOFF Position */ +#define SCB_VTOR_TBLOFF_Msk (0x3FFFFFUL << SCB_VTOR_TBLOFF_Pos) /*!< SCB VTOR: TBLOFF Mask */ +#else +#define SCB_VTOR_TBLOFF_Pos 7U /*!< SCB VTOR: TBLOFF Position */ +#define SCB_VTOR_TBLOFF_Msk (0x1FFFFFFUL << SCB_VTOR_TBLOFF_Pos) /*!< SCB VTOR: TBLOFF Mask */ +#endif + +/* SCB Application Interrupt and Reset Control Register Definitions */ +#define SCB_AIRCR_VECTKEY_Pos 16U /*!< SCB AIRCR: VECTKEY Position */ +#define SCB_AIRCR_VECTKEY_Msk (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos) /*!< SCB AIRCR: VECTKEY Mask */ + +#define SCB_AIRCR_VECTKEYSTAT_Pos 16U /*!< SCB AIRCR: VECTKEYSTAT Position */ +#define SCB_AIRCR_VECTKEYSTAT_Msk (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos) /*!< SCB AIRCR: VECTKEYSTAT Mask */ + +#define SCB_AIRCR_ENDIANESS_Pos 15U /*!< SCB AIRCR: ENDIANESS Position */ +#define SCB_AIRCR_ENDIANESS_Msk (1UL << SCB_AIRCR_ENDIANESS_Pos) /*!< SCB AIRCR: ENDIANESS Mask */ + +#define SCB_AIRCR_PRIGROUP_Pos 8U /*!< SCB AIRCR: PRIGROUP Position */ +#define SCB_AIRCR_PRIGROUP_Msk (7UL << SCB_AIRCR_PRIGROUP_Pos) /*!< SCB AIRCR: PRIGROUP Mask */ + +#define SCB_AIRCR_SYSRESETREQ_Pos 2U /*!< SCB AIRCR: SYSRESETREQ Position */ +#define SCB_AIRCR_SYSRESETREQ_Msk (1UL << SCB_AIRCR_SYSRESETREQ_Pos) /*!< SCB AIRCR: SYSRESETREQ Mask */ + +#define SCB_AIRCR_VECTCLRACTIVE_Pos 1U /*!< SCB AIRCR: VECTCLRACTIVE Position */ +#define SCB_AIRCR_VECTCLRACTIVE_Msk (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos) /*!< SCB AIRCR: VECTCLRACTIVE Mask */ + +#define SCB_AIRCR_VECTRESET_Pos 0U /*!< SCB AIRCR: VECTRESET Position */ +#define SCB_AIRCR_VECTRESET_Msk (1UL /*<< SCB_AIRCR_VECTRESET_Pos*/) /*!< SCB AIRCR: VECTRESET Mask */ + +/* SCB System Control Register Definitions */ +#define SCB_SCR_SEVONPEND_Pos 4U /*!< SCB SCR: SEVONPEND Position */ +#define SCB_SCR_SEVONPEND_Msk (1UL << SCB_SCR_SEVONPEND_Pos) /*!< SCB SCR: SEVONPEND Mask */ + +#define SCB_SCR_SLEEPDEEP_Pos 2U /*!< SCB SCR: SLEEPDEEP Position */ +#define SCB_SCR_SLEEPDEEP_Msk (1UL << SCB_SCR_SLEEPDEEP_Pos) /*!< SCB SCR: SLEEPDEEP Mask */ + +#define SCB_SCR_SLEEPONEXIT_Pos 1U /*!< SCB SCR: SLEEPONEXIT Position */ +#define SCB_SCR_SLEEPONEXIT_Msk (1UL << SCB_SCR_SLEEPONEXIT_Pos) /*!< SCB SCR: SLEEPONEXIT Mask */ + +/* SCB Configuration Control Register Definitions */ +#define SCB_CCR_STKALIGN_Pos 9U /*!< SCB CCR: STKALIGN Position */ +#define SCB_CCR_STKALIGN_Msk (1UL << SCB_CCR_STKALIGN_Pos) /*!< SCB CCR: STKALIGN Mask */ + +#define SCB_CCR_BFHFNMIGN_Pos 8U /*!< SCB CCR: BFHFNMIGN Position */ +#define SCB_CCR_BFHFNMIGN_Msk (1UL << SCB_CCR_BFHFNMIGN_Pos) /*!< SCB CCR: BFHFNMIGN Mask */ + +#define SCB_CCR_DIV_0_TRP_Pos 4U /*!< SCB CCR: DIV_0_TRP Position */ +#define SCB_CCR_DIV_0_TRP_Msk (1UL << SCB_CCR_DIV_0_TRP_Pos) /*!< SCB CCR: DIV_0_TRP Mask */ + +#define SCB_CCR_UNALIGN_TRP_Pos 3U /*!< SCB CCR: UNALIGN_TRP Position */ +#define SCB_CCR_UNALIGN_TRP_Msk (1UL << SCB_CCR_UNALIGN_TRP_Pos) /*!< SCB CCR: UNALIGN_TRP Mask */ + +#define SCB_CCR_USERSETMPEND_Pos 1U /*!< SCB CCR: USERSETMPEND Position */ +#define SCB_CCR_USERSETMPEND_Msk (1UL << SCB_CCR_USERSETMPEND_Pos) /*!< SCB CCR: USERSETMPEND Mask */ + +#define SCB_CCR_NONBASETHRDENA_Pos 0U /*!< SCB CCR: NONBASETHRDENA Position */ +#define SCB_CCR_NONBASETHRDENA_Msk (1UL /*<< SCB_CCR_NONBASETHRDENA_Pos*/) /*!< SCB CCR: NONBASETHRDENA Mask */ + +/* SCB System Handler Control and State Register Definitions */ +#define SCB_SHCSR_USGFAULTENA_Pos 18U /*!< SCB SHCSR: USGFAULTENA Position */ +#define SCB_SHCSR_USGFAULTENA_Msk (1UL << SCB_SHCSR_USGFAULTENA_Pos) /*!< SCB SHCSR: USGFAULTENA Mask */ + +#define SCB_SHCSR_BUSFAULTENA_Pos 17U /*!< SCB SHCSR: BUSFAULTENA Position */ +#define SCB_SHCSR_BUSFAULTENA_Msk (1UL << SCB_SHCSR_BUSFAULTENA_Pos) /*!< SCB SHCSR: BUSFAULTENA Mask */ + +#define SCB_SHCSR_MEMFAULTENA_Pos 16U /*!< SCB SHCSR: MEMFAULTENA Position */ +#define SCB_SHCSR_MEMFAULTENA_Msk (1UL << SCB_SHCSR_MEMFAULTENA_Pos) /*!< SCB SHCSR: MEMFAULTENA Mask */ + +#define SCB_SHCSR_SVCALLPENDED_Pos 15U /*!< SCB SHCSR: SVCALLPENDED Position */ +#define SCB_SHCSR_SVCALLPENDED_Msk (1UL << SCB_SHCSR_SVCALLPENDED_Pos) /*!< SCB SHCSR: SVCALLPENDED Mask */ + +#define SCB_SHCSR_BUSFAULTPENDED_Pos 14U /*!< SCB SHCSR: BUSFAULTPENDED Position */ +#define SCB_SHCSR_BUSFAULTPENDED_Msk (1UL << SCB_SHCSR_BUSFAULTPENDED_Pos) /*!< SCB SHCSR: BUSFAULTPENDED Mask */ + +#define SCB_SHCSR_MEMFAULTPENDED_Pos 13U /*!< SCB SHCSR: MEMFAULTPENDED Position */ +#define SCB_SHCSR_MEMFAULTPENDED_Msk (1UL << SCB_SHCSR_MEMFAULTPENDED_Pos) /*!< SCB SHCSR: MEMFAULTPENDED Mask */ + +#define SCB_SHCSR_USGFAULTPENDED_Pos 12U /*!< SCB SHCSR: USGFAULTPENDED Position */ +#define SCB_SHCSR_USGFAULTPENDED_Msk (1UL << SCB_SHCSR_USGFAULTPENDED_Pos) /*!< SCB SHCSR: USGFAULTPENDED Mask */ + +#define SCB_SHCSR_SYSTICKACT_Pos 11U /*!< SCB SHCSR: SYSTICKACT Position */ +#define SCB_SHCSR_SYSTICKACT_Msk (1UL << SCB_SHCSR_SYSTICKACT_Pos) /*!< SCB SHCSR: SYSTICKACT Mask */ + +#define SCB_SHCSR_PENDSVACT_Pos 10U /*!< SCB SHCSR: PENDSVACT Position */ +#define SCB_SHCSR_PENDSVACT_Msk (1UL << SCB_SHCSR_PENDSVACT_Pos) /*!< SCB SHCSR: PENDSVACT Mask */ + +#define SCB_SHCSR_MONITORACT_Pos 8U /*!< SCB SHCSR: MONITORACT Position */ +#define SCB_SHCSR_MONITORACT_Msk (1UL << SCB_SHCSR_MONITORACT_Pos) /*!< SCB SHCSR: MONITORACT Mask */ + +#define SCB_SHCSR_SVCALLACT_Pos 7U /*!< SCB SHCSR: SVCALLACT Position */ +#define SCB_SHCSR_SVCALLACT_Msk (1UL << SCB_SHCSR_SVCALLACT_Pos) /*!< SCB SHCSR: SVCALLACT Mask */ + +#define SCB_SHCSR_USGFAULTACT_Pos 3U /*!< SCB SHCSR: USGFAULTACT Position */ +#define SCB_SHCSR_USGFAULTACT_Msk (1UL << SCB_SHCSR_USGFAULTACT_Pos) /*!< SCB SHCSR: USGFAULTACT Mask */ + +#define SCB_SHCSR_BUSFAULTACT_Pos 1U /*!< SCB SHCSR: BUSFAULTACT Position */ +#define SCB_SHCSR_BUSFAULTACT_Msk (1UL << SCB_SHCSR_BUSFAULTACT_Pos) /*!< SCB SHCSR: BUSFAULTACT Mask */ + +#define SCB_SHCSR_MEMFAULTACT_Pos 0U /*!< SCB SHCSR: MEMFAULTACT Position */ +#define SCB_SHCSR_MEMFAULTACT_Msk (1UL /*<< SCB_SHCSR_MEMFAULTACT_Pos*/) /*!< SCB SHCSR: MEMFAULTACT Mask */ + +/* SCB Configurable Fault Status Register Definitions */ +#define SCB_CFSR_USGFAULTSR_Pos 16U /*!< SCB CFSR: Usage Fault Status Register Position */ +#define SCB_CFSR_USGFAULTSR_Msk (0xFFFFUL << SCB_CFSR_USGFAULTSR_Pos) /*!< SCB CFSR: Usage Fault Status Register Mask */ + +#define SCB_CFSR_BUSFAULTSR_Pos 8U /*!< SCB CFSR: Bus Fault Status Register Position */ +#define SCB_CFSR_BUSFAULTSR_Msk (0xFFUL << SCB_CFSR_BUSFAULTSR_Pos) /*!< SCB CFSR: Bus Fault Status Register Mask */ + +#define SCB_CFSR_MEMFAULTSR_Pos 0U /*!< SCB CFSR: Memory Manage Fault Status Register Position */ +#define SCB_CFSR_MEMFAULTSR_Msk (0xFFUL /*<< SCB_CFSR_MEMFAULTSR_Pos*/) /*!< SCB CFSR: Memory Manage Fault Status Register Mask */ + +/* MemManage Fault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_MMARVALID_Pos (SCB_CFSR_MEMFAULTSR_Pos + 7U) /*!< SCB CFSR (MMFSR): MMARVALID Position */ +#define SCB_CFSR_MMARVALID_Msk (1UL << SCB_CFSR_MMARVALID_Pos) /*!< SCB CFSR (MMFSR): MMARVALID Mask */ + +#define SCB_CFSR_MSTKERR_Pos (SCB_CFSR_MEMFAULTSR_Pos + 4U) /*!< SCB CFSR (MMFSR): MSTKERR Position */ +#define SCB_CFSR_MSTKERR_Msk (1UL << SCB_CFSR_MSTKERR_Pos) /*!< SCB CFSR (MMFSR): MSTKERR Mask */ + +#define SCB_CFSR_MUNSTKERR_Pos (SCB_CFSR_MEMFAULTSR_Pos + 3U) /*!< SCB CFSR (MMFSR): MUNSTKERR Position */ +#define SCB_CFSR_MUNSTKERR_Msk (1UL << SCB_CFSR_MUNSTKERR_Pos) /*!< SCB CFSR (MMFSR): MUNSTKERR Mask */ + +#define SCB_CFSR_DACCVIOL_Pos (SCB_CFSR_MEMFAULTSR_Pos + 1U) /*!< SCB CFSR (MMFSR): DACCVIOL Position */ +#define SCB_CFSR_DACCVIOL_Msk (1UL << SCB_CFSR_DACCVIOL_Pos) /*!< SCB CFSR (MMFSR): DACCVIOL Mask */ + +#define SCB_CFSR_IACCVIOL_Pos (SCB_CFSR_MEMFAULTSR_Pos + 0U) /*!< SCB CFSR (MMFSR): IACCVIOL Position */ +#define SCB_CFSR_IACCVIOL_Msk (1UL /*<< SCB_CFSR_IACCVIOL_Pos*/) /*!< SCB CFSR (MMFSR): IACCVIOL Mask */ + +/* BusFault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_BFARVALID_Pos (SCB_CFSR_BUSFAULTSR_Pos + 7U) /*!< SCB CFSR (BFSR): BFARVALID Position */ +#define SCB_CFSR_BFARVALID_Msk (1UL << SCB_CFSR_BFARVALID_Pos) /*!< SCB CFSR (BFSR): BFARVALID Mask */ + +#define SCB_CFSR_STKERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 4U) /*!< SCB CFSR (BFSR): STKERR Position */ +#define SCB_CFSR_STKERR_Msk (1UL << SCB_CFSR_STKERR_Pos) /*!< SCB CFSR (BFSR): STKERR Mask */ + +#define SCB_CFSR_UNSTKERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 3U) /*!< SCB CFSR (BFSR): UNSTKERR Position */ +#define SCB_CFSR_UNSTKERR_Msk (1UL << SCB_CFSR_UNSTKERR_Pos) /*!< SCB CFSR (BFSR): UNSTKERR Mask */ + +#define SCB_CFSR_IMPRECISERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 2U) /*!< SCB CFSR (BFSR): IMPRECISERR Position */ +#define SCB_CFSR_IMPRECISERR_Msk (1UL << SCB_CFSR_IMPRECISERR_Pos) /*!< SCB CFSR (BFSR): IMPRECISERR Mask */ + +#define SCB_CFSR_PRECISERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 1U) /*!< SCB CFSR (BFSR): PRECISERR Position */ +#define SCB_CFSR_PRECISERR_Msk (1UL << SCB_CFSR_PRECISERR_Pos) /*!< SCB CFSR (BFSR): PRECISERR Mask */ + +#define SCB_CFSR_IBUSERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 0U) /*!< SCB CFSR (BFSR): IBUSERR Position */ +#define SCB_CFSR_IBUSERR_Msk (1UL << SCB_CFSR_IBUSERR_Pos) /*!< SCB CFSR (BFSR): IBUSERR Mask */ + +/* UsageFault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_DIVBYZERO_Pos (SCB_CFSR_USGFAULTSR_Pos + 9U) /*!< SCB CFSR (UFSR): DIVBYZERO Position */ +#define SCB_CFSR_DIVBYZERO_Msk (1UL << SCB_CFSR_DIVBYZERO_Pos) /*!< SCB CFSR (UFSR): DIVBYZERO Mask */ + +#define SCB_CFSR_UNALIGNED_Pos (SCB_CFSR_USGFAULTSR_Pos + 8U) /*!< SCB CFSR (UFSR): UNALIGNED Position */ +#define SCB_CFSR_UNALIGNED_Msk (1UL << SCB_CFSR_UNALIGNED_Pos) /*!< SCB CFSR (UFSR): UNALIGNED Mask */ + +#define SCB_CFSR_NOCP_Pos (SCB_CFSR_USGFAULTSR_Pos + 3U) /*!< SCB CFSR (UFSR): NOCP Position */ +#define SCB_CFSR_NOCP_Msk (1UL << SCB_CFSR_NOCP_Pos) /*!< SCB CFSR (UFSR): NOCP Mask */ + +#define SCB_CFSR_INVPC_Pos (SCB_CFSR_USGFAULTSR_Pos + 2U) /*!< SCB CFSR (UFSR): INVPC Position */ +#define SCB_CFSR_INVPC_Msk (1UL << SCB_CFSR_INVPC_Pos) /*!< SCB CFSR (UFSR): INVPC Mask */ + +#define SCB_CFSR_INVSTATE_Pos (SCB_CFSR_USGFAULTSR_Pos + 1U) /*!< SCB CFSR (UFSR): INVSTATE Position */ +#define SCB_CFSR_INVSTATE_Msk (1UL << SCB_CFSR_INVSTATE_Pos) /*!< SCB CFSR (UFSR): INVSTATE Mask */ + +#define SCB_CFSR_UNDEFINSTR_Pos (SCB_CFSR_USGFAULTSR_Pos + 0U) /*!< SCB CFSR (UFSR): UNDEFINSTR Position */ +#define SCB_CFSR_UNDEFINSTR_Msk (1UL << SCB_CFSR_UNDEFINSTR_Pos) /*!< SCB CFSR (UFSR): UNDEFINSTR Mask */ + +/* SCB Hard Fault Status Register Definitions */ +#define SCB_HFSR_DEBUGEVT_Pos 31U /*!< SCB HFSR: DEBUGEVT Position */ +#define SCB_HFSR_DEBUGEVT_Msk (1UL << SCB_HFSR_DEBUGEVT_Pos) /*!< SCB HFSR: DEBUGEVT Mask */ + +#define SCB_HFSR_FORCED_Pos 30U /*!< SCB HFSR: FORCED Position */ +#define SCB_HFSR_FORCED_Msk (1UL << SCB_HFSR_FORCED_Pos) /*!< SCB HFSR: FORCED Mask */ + +#define SCB_HFSR_VECTTBL_Pos 1U /*!< SCB HFSR: VECTTBL Position */ +#define SCB_HFSR_VECTTBL_Msk (1UL << SCB_HFSR_VECTTBL_Pos) /*!< SCB HFSR: VECTTBL Mask */ + +/* SCB Debug Fault Status Register Definitions */ +#define SCB_DFSR_EXTERNAL_Pos 4U /*!< SCB DFSR: EXTERNAL Position */ +#define SCB_DFSR_EXTERNAL_Msk (1UL << SCB_DFSR_EXTERNAL_Pos) /*!< SCB DFSR: EXTERNAL Mask */ + +#define SCB_DFSR_VCATCH_Pos 3U /*!< SCB DFSR: VCATCH Position */ +#define SCB_DFSR_VCATCH_Msk (1UL << SCB_DFSR_VCATCH_Pos) /*!< SCB DFSR: VCATCH Mask */ + +#define SCB_DFSR_DWTTRAP_Pos 2U /*!< SCB DFSR: DWTTRAP Position */ +#define SCB_DFSR_DWTTRAP_Msk (1UL << SCB_DFSR_DWTTRAP_Pos) /*!< SCB DFSR: DWTTRAP Mask */ + +#define SCB_DFSR_BKPT_Pos 1U /*!< SCB DFSR: BKPT Position */ +#define SCB_DFSR_BKPT_Msk (1UL << SCB_DFSR_BKPT_Pos) /*!< SCB DFSR: BKPT Mask */ + +#define SCB_DFSR_HALTED_Pos 0U /*!< SCB DFSR: HALTED Position */ +#define SCB_DFSR_HALTED_Msk (1UL /*<< SCB_DFSR_HALTED_Pos*/) /*!< SCB DFSR: HALTED Mask */ + +/*@} end of group CMSIS_SCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SCnSCB System Controls not in SCB (SCnSCB) + \brief Type definitions for the System Control and ID Register not in the SCB + @{ + */ + +/** + \brief Structure type to access the System Control and ID Register not in the SCB. + */ +typedef struct +{ + uint32_t RESERVED0[1U]; + __IM uint32_t ICTR; /*!< Offset: 0x004 (R/ ) Interrupt Controller Type Register */ +#if defined (__CM3_REV) && (__CM3_REV >= 0x200U) + __IOM uint32_t ACTLR; /*!< Offset: 0x008 (R/W) Auxiliary Control Register */ +#else + uint32_t RESERVED1[1U]; +#endif +} SCnSCB_Type; + +/* Interrupt Controller Type Register Definitions */ +#define SCnSCB_ICTR_INTLINESNUM_Pos 0U /*!< ICTR: INTLINESNUM Position */ +#define SCnSCB_ICTR_INTLINESNUM_Msk (0xFUL /*<< SCnSCB_ICTR_INTLINESNUM_Pos*/) /*!< ICTR: INTLINESNUM Mask */ + +/* Auxiliary Control Register Definitions */ +#if defined (__CM3_REV) && (__CM3_REV >= 0x200U) +#define SCnSCB_ACTLR_DISOOFP_Pos 9U /*!< ACTLR: DISOOFP Position */ +#define SCnSCB_ACTLR_DISOOFP_Msk (1UL << SCnSCB_ACTLR_DISOOFP_Pos) /*!< ACTLR: DISOOFP Mask */ + +#define SCnSCB_ACTLR_DISFPCA_Pos 8U /*!< ACTLR: DISFPCA Position */ +#define SCnSCB_ACTLR_DISFPCA_Msk (1UL << SCnSCB_ACTLR_DISFPCA_Pos) /*!< ACTLR: DISFPCA Mask */ + +#define SCnSCB_ACTLR_DISFOLD_Pos 2U /*!< ACTLR: DISFOLD Position */ +#define SCnSCB_ACTLR_DISFOLD_Msk (1UL << SCnSCB_ACTLR_DISFOLD_Pos) /*!< ACTLR: DISFOLD Mask */ + +#define SCnSCB_ACTLR_DISDEFWBUF_Pos 1U /*!< ACTLR: DISDEFWBUF Position */ +#define SCnSCB_ACTLR_DISDEFWBUF_Msk (1UL << SCnSCB_ACTLR_DISDEFWBUF_Pos) /*!< ACTLR: DISDEFWBUF Mask */ + +#define SCnSCB_ACTLR_DISMCYCINT_Pos 0U /*!< ACTLR: DISMCYCINT Position */ +#define SCnSCB_ACTLR_DISMCYCINT_Msk (1UL /*<< SCnSCB_ACTLR_DISMCYCINT_Pos*/) /*!< ACTLR: DISMCYCINT Mask */ +#endif + +/*@} end of group CMSIS_SCnotSCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SysTick System Tick Timer (SysTick) + \brief Type definitions for the System Timer Registers. + @{ + */ + +/** + \brief Structure type to access the System Timer (SysTick). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SysTick Control and Status Register */ + __IOM uint32_t LOAD; /*!< Offset: 0x004 (R/W) SysTick Reload Value Register */ + __IOM uint32_t VAL; /*!< Offset: 0x008 (R/W) SysTick Current Value Register */ + __IM uint32_t CALIB; /*!< Offset: 0x00C (R/ ) SysTick Calibration Register */ +} SysTick_Type; + +/* SysTick Control / Status Register Definitions */ +#define SysTick_CTRL_COUNTFLAG_Pos 16U /*!< SysTick CTRL: COUNTFLAG Position */ +#define SysTick_CTRL_COUNTFLAG_Msk (1UL << SysTick_CTRL_COUNTFLAG_Pos) /*!< SysTick CTRL: COUNTFLAG Mask */ + +#define SysTick_CTRL_CLKSOURCE_Pos 2U /*!< SysTick CTRL: CLKSOURCE Position */ +#define SysTick_CTRL_CLKSOURCE_Msk (1UL << SysTick_CTRL_CLKSOURCE_Pos) /*!< SysTick CTRL: CLKSOURCE Mask */ + +#define SysTick_CTRL_TICKINT_Pos 1U /*!< SysTick CTRL: TICKINT Position */ +#define SysTick_CTRL_TICKINT_Msk (1UL << SysTick_CTRL_TICKINT_Pos) /*!< SysTick CTRL: TICKINT Mask */ + +#define SysTick_CTRL_ENABLE_Pos 0U /*!< SysTick CTRL: ENABLE Position */ +#define SysTick_CTRL_ENABLE_Msk (1UL /*<< SysTick_CTRL_ENABLE_Pos*/) /*!< SysTick CTRL: ENABLE Mask */ + +/* SysTick Reload Register Definitions */ +#define SysTick_LOAD_RELOAD_Pos 0U /*!< SysTick LOAD: RELOAD Position */ +#define SysTick_LOAD_RELOAD_Msk (0xFFFFFFUL /*<< SysTick_LOAD_RELOAD_Pos*/) /*!< SysTick LOAD: RELOAD Mask */ + +/* SysTick Current Register Definitions */ +#define SysTick_VAL_CURRENT_Pos 0U /*!< SysTick VAL: CURRENT Position */ +#define SysTick_VAL_CURRENT_Msk (0xFFFFFFUL /*<< SysTick_VAL_CURRENT_Pos*/) /*!< SysTick VAL: CURRENT Mask */ + +/* SysTick Calibration Register Definitions */ +#define SysTick_CALIB_NOREF_Pos 31U /*!< SysTick CALIB: NOREF Position */ +#define SysTick_CALIB_NOREF_Msk (1UL << SysTick_CALIB_NOREF_Pos) /*!< SysTick CALIB: NOREF Mask */ + +#define SysTick_CALIB_SKEW_Pos 30U /*!< SysTick CALIB: SKEW Position */ +#define SysTick_CALIB_SKEW_Msk (1UL << SysTick_CALIB_SKEW_Pos) /*!< SysTick CALIB: SKEW Mask */ + +#define SysTick_CALIB_TENMS_Pos 0U /*!< SysTick CALIB: TENMS Position */ +#define SysTick_CALIB_TENMS_Msk (0xFFFFFFUL /*<< SysTick_CALIB_TENMS_Pos*/) /*!< SysTick CALIB: TENMS Mask */ + +/*@} end of group CMSIS_SysTick */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_ITM Instrumentation Trace Macrocell (ITM) + \brief Type definitions for the Instrumentation Trace Macrocell (ITM) + @{ + */ + +/** + \brief Structure type to access the Instrumentation Trace Macrocell Register (ITM). + */ +typedef struct +{ + __OM union + { + __OM uint8_t u8; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 8-bit */ + __OM uint16_t u16; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 16-bit */ + __OM uint32_t u32; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 32-bit */ + } PORT [32U]; /*!< Offset: 0x000 ( /W) ITM Stimulus Port Registers */ + uint32_t RESERVED0[864U]; + __IOM uint32_t TER; /*!< Offset: 0xE00 (R/W) ITM Trace Enable Register */ + uint32_t RESERVED1[15U]; + __IOM uint32_t TPR; /*!< Offset: 0xE40 (R/W) ITM Trace Privilege Register */ + uint32_t RESERVED2[15U]; + __IOM uint32_t TCR; /*!< Offset: 0xE80 (R/W) ITM Trace Control Register */ + uint32_t RESERVED3[32U]; + uint32_t RESERVED4[43U]; + __OM uint32_t LAR; /*!< Offset: 0xFB0 ( /W) ITM Lock Access Register */ + __IM uint32_t LSR; /*!< Offset: 0xFB4 (R/ ) ITM Lock Status Register */ + uint32_t RESERVED5[6U]; + __IM uint32_t PID4; /*!< Offset: 0xFD0 (R/ ) ITM Peripheral Identification Register #4 */ + __IM uint32_t PID5; /*!< Offset: 0xFD4 (R/ ) ITM Peripheral Identification Register #5 */ + __IM uint32_t PID6; /*!< Offset: 0xFD8 (R/ ) ITM Peripheral Identification Register #6 */ + __IM uint32_t PID7; /*!< Offset: 0xFDC (R/ ) ITM Peripheral Identification Register #7 */ + __IM uint32_t PID0; /*!< Offset: 0xFE0 (R/ ) ITM Peripheral Identification Register #0 */ + __IM uint32_t PID1; /*!< Offset: 0xFE4 (R/ ) ITM Peripheral Identification Register #1 */ + __IM uint32_t PID2; /*!< Offset: 0xFE8 (R/ ) ITM Peripheral Identification Register #2 */ + __IM uint32_t PID3; /*!< Offset: 0xFEC (R/ ) ITM Peripheral Identification Register #3 */ + __IM uint32_t CID0; /*!< Offset: 0xFF0 (R/ ) ITM Component Identification Register #0 */ + __IM uint32_t CID1; /*!< Offset: 0xFF4 (R/ ) ITM Component Identification Register #1 */ + __IM uint32_t CID2; /*!< Offset: 0xFF8 (R/ ) ITM Component Identification Register #2 */ + __IM uint32_t CID3; /*!< Offset: 0xFFC (R/ ) ITM Component Identification Register #3 */ +} ITM_Type; + +/* ITM Trace Privilege Register Definitions */ +#define ITM_TPR_PRIVMASK_Pos 0U /*!< ITM TPR: PRIVMASK Position */ +#define ITM_TPR_PRIVMASK_Msk (0xFFFFFFFFUL /*<< ITM_TPR_PRIVMASK_Pos*/) /*!< ITM TPR: PRIVMASK Mask */ + +/* ITM Trace Control Register Definitions */ +#define ITM_TCR_BUSY_Pos 23U /*!< ITM TCR: BUSY Position */ +#define ITM_TCR_BUSY_Msk (1UL << ITM_TCR_BUSY_Pos) /*!< ITM TCR: BUSY Mask */ + +#define ITM_TCR_TraceBusID_Pos 16U /*!< ITM TCR: ATBID Position */ +#define ITM_TCR_TraceBusID_Msk (0x7FUL << ITM_TCR_TraceBusID_Pos) /*!< ITM TCR: ATBID Mask */ + +#define ITM_TCR_GTSFREQ_Pos 10U /*!< ITM TCR: Global timestamp frequency Position */ +#define ITM_TCR_GTSFREQ_Msk (3UL << ITM_TCR_GTSFREQ_Pos) /*!< ITM TCR: Global timestamp frequency Mask */ + +#define ITM_TCR_TSPrescale_Pos 8U /*!< ITM TCR: TSPrescale Position */ +#define ITM_TCR_TSPrescale_Msk (3UL << ITM_TCR_TSPrescale_Pos) /*!< ITM TCR: TSPrescale Mask */ + +#define ITM_TCR_SWOENA_Pos 4U /*!< ITM TCR: SWOENA Position */ +#define ITM_TCR_SWOENA_Msk (1UL << ITM_TCR_SWOENA_Pos) /*!< ITM TCR: SWOENA Mask */ + +#define ITM_TCR_DWTENA_Pos 3U /*!< ITM TCR: DWTENA Position */ +#define ITM_TCR_DWTENA_Msk (1UL << ITM_TCR_DWTENA_Pos) /*!< ITM TCR: DWTENA Mask */ + +#define ITM_TCR_SYNCENA_Pos 2U /*!< ITM TCR: SYNCENA Position */ +#define ITM_TCR_SYNCENA_Msk (1UL << ITM_TCR_SYNCENA_Pos) /*!< ITM TCR: SYNCENA Mask */ + +#define ITM_TCR_TSENA_Pos 1U /*!< ITM TCR: TSENA Position */ +#define ITM_TCR_TSENA_Msk (1UL << ITM_TCR_TSENA_Pos) /*!< ITM TCR: TSENA Mask */ + +#define ITM_TCR_ITMENA_Pos 0U /*!< ITM TCR: ITM Enable bit Position */ +#define ITM_TCR_ITMENA_Msk (1UL /*<< ITM_TCR_ITMENA_Pos*/) /*!< ITM TCR: ITM Enable bit Mask */ + +/* ITM Lock Status Register Definitions */ +#define ITM_LSR_ByteAcc_Pos 2U /*!< ITM LSR: ByteAcc Position */ +#define ITM_LSR_ByteAcc_Msk (1UL << ITM_LSR_ByteAcc_Pos) /*!< ITM LSR: ByteAcc Mask */ + +#define ITM_LSR_Access_Pos 1U /*!< ITM LSR: Access Position */ +#define ITM_LSR_Access_Msk (1UL << ITM_LSR_Access_Pos) /*!< ITM LSR: Access Mask */ + +#define ITM_LSR_Present_Pos 0U /*!< ITM LSR: Present Position */ +#define ITM_LSR_Present_Msk (1UL /*<< ITM_LSR_Present_Pos*/) /*!< ITM LSR: Present Mask */ + +/*@}*/ /* end of group CMSIS_ITM */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_DWT Data Watchpoint and Trace (DWT) + \brief Type definitions for the Data Watchpoint and Trace (DWT) + @{ + */ + +/** + \brief Structure type to access the Data Watchpoint and Trace Register (DWT). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) Control Register */ + __IOM uint32_t CYCCNT; /*!< Offset: 0x004 (R/W) Cycle Count Register */ + __IOM uint32_t CPICNT; /*!< Offset: 0x008 (R/W) CPI Count Register */ + __IOM uint32_t EXCCNT; /*!< Offset: 0x00C (R/W) Exception Overhead Count Register */ + __IOM uint32_t SLEEPCNT; /*!< Offset: 0x010 (R/W) Sleep Count Register */ + __IOM uint32_t LSUCNT; /*!< Offset: 0x014 (R/W) LSU Count Register */ + __IOM uint32_t FOLDCNT; /*!< Offset: 0x018 (R/W) Folded-instruction Count Register */ + __IM uint32_t PCSR; /*!< Offset: 0x01C (R/ ) Program Counter Sample Register */ + __IOM uint32_t COMP0; /*!< Offset: 0x020 (R/W) Comparator Register 0 */ + __IOM uint32_t MASK0; /*!< Offset: 0x024 (R/W) Mask Register 0 */ + __IOM uint32_t FUNCTION0; /*!< Offset: 0x028 (R/W) Function Register 0 */ + uint32_t RESERVED0[1U]; + __IOM uint32_t COMP1; /*!< Offset: 0x030 (R/W) Comparator Register 1 */ + __IOM uint32_t MASK1; /*!< Offset: 0x034 (R/W) Mask Register 1 */ + __IOM uint32_t FUNCTION1; /*!< Offset: 0x038 (R/W) Function Register 1 */ + uint32_t RESERVED1[1U]; + __IOM uint32_t COMP2; /*!< Offset: 0x040 (R/W) Comparator Register 2 */ + __IOM uint32_t MASK2; /*!< Offset: 0x044 (R/W) Mask Register 2 */ + __IOM uint32_t FUNCTION2; /*!< Offset: 0x048 (R/W) Function Register 2 */ + uint32_t RESERVED2[1U]; + __IOM uint32_t COMP3; /*!< Offset: 0x050 (R/W) Comparator Register 3 */ + __IOM uint32_t MASK3; /*!< Offset: 0x054 (R/W) Mask Register 3 */ + __IOM uint32_t FUNCTION3; /*!< Offset: 0x058 (R/W) Function Register 3 */ +} DWT_Type; + +/* DWT Control Register Definitions */ +#define DWT_CTRL_NUMCOMP_Pos 28U /*!< DWT CTRL: NUMCOMP Position */ +#define DWT_CTRL_NUMCOMP_Msk (0xFUL << DWT_CTRL_NUMCOMP_Pos) /*!< DWT CTRL: NUMCOMP Mask */ + +#define DWT_CTRL_NOTRCPKT_Pos 27U /*!< DWT CTRL: NOTRCPKT Position */ +#define DWT_CTRL_NOTRCPKT_Msk (0x1UL << DWT_CTRL_NOTRCPKT_Pos) /*!< DWT CTRL: NOTRCPKT Mask */ + +#define DWT_CTRL_NOEXTTRIG_Pos 26U /*!< DWT CTRL: NOEXTTRIG Position */ +#define DWT_CTRL_NOEXTTRIG_Msk (0x1UL << DWT_CTRL_NOEXTTRIG_Pos) /*!< DWT CTRL: NOEXTTRIG Mask */ + +#define DWT_CTRL_NOCYCCNT_Pos 25U /*!< DWT CTRL: NOCYCCNT Position */ +#define DWT_CTRL_NOCYCCNT_Msk (0x1UL << DWT_CTRL_NOCYCCNT_Pos) /*!< DWT CTRL: NOCYCCNT Mask */ + +#define DWT_CTRL_NOPRFCNT_Pos 24U /*!< DWT CTRL: NOPRFCNT Position */ +#define DWT_CTRL_NOPRFCNT_Msk (0x1UL << DWT_CTRL_NOPRFCNT_Pos) /*!< DWT CTRL: NOPRFCNT Mask */ + +#define DWT_CTRL_CYCEVTENA_Pos 22U /*!< DWT CTRL: CYCEVTENA Position */ +#define DWT_CTRL_CYCEVTENA_Msk (0x1UL << DWT_CTRL_CYCEVTENA_Pos) /*!< DWT CTRL: CYCEVTENA Mask */ + +#define DWT_CTRL_FOLDEVTENA_Pos 21U /*!< DWT CTRL: FOLDEVTENA Position */ +#define DWT_CTRL_FOLDEVTENA_Msk (0x1UL << DWT_CTRL_FOLDEVTENA_Pos) /*!< DWT CTRL: FOLDEVTENA Mask */ + +#define DWT_CTRL_LSUEVTENA_Pos 20U /*!< DWT CTRL: LSUEVTENA Position */ +#define DWT_CTRL_LSUEVTENA_Msk (0x1UL << DWT_CTRL_LSUEVTENA_Pos) /*!< DWT CTRL: LSUEVTENA Mask */ + +#define DWT_CTRL_SLEEPEVTENA_Pos 19U /*!< DWT CTRL: SLEEPEVTENA Position */ +#define DWT_CTRL_SLEEPEVTENA_Msk (0x1UL << DWT_CTRL_SLEEPEVTENA_Pos) /*!< DWT CTRL: SLEEPEVTENA Mask */ + +#define DWT_CTRL_EXCEVTENA_Pos 18U /*!< DWT CTRL: EXCEVTENA Position */ +#define DWT_CTRL_EXCEVTENA_Msk (0x1UL << DWT_CTRL_EXCEVTENA_Pos) /*!< DWT CTRL: EXCEVTENA Mask */ + +#define DWT_CTRL_CPIEVTENA_Pos 17U /*!< DWT CTRL: CPIEVTENA Position */ +#define DWT_CTRL_CPIEVTENA_Msk (0x1UL << DWT_CTRL_CPIEVTENA_Pos) /*!< DWT CTRL: CPIEVTENA Mask */ + +#define DWT_CTRL_EXCTRCENA_Pos 16U /*!< DWT CTRL: EXCTRCENA Position */ +#define DWT_CTRL_EXCTRCENA_Msk (0x1UL << DWT_CTRL_EXCTRCENA_Pos) /*!< DWT CTRL: EXCTRCENA Mask */ + +#define DWT_CTRL_PCSAMPLENA_Pos 12U /*!< DWT CTRL: PCSAMPLENA Position */ +#define DWT_CTRL_PCSAMPLENA_Msk (0x1UL << DWT_CTRL_PCSAMPLENA_Pos) /*!< DWT CTRL: PCSAMPLENA Mask */ + +#define DWT_CTRL_SYNCTAP_Pos 10U /*!< DWT CTRL: SYNCTAP Position */ +#define DWT_CTRL_SYNCTAP_Msk (0x3UL << DWT_CTRL_SYNCTAP_Pos) /*!< DWT CTRL: SYNCTAP Mask */ + +#define DWT_CTRL_CYCTAP_Pos 9U /*!< DWT CTRL: CYCTAP Position */ +#define DWT_CTRL_CYCTAP_Msk (0x1UL << DWT_CTRL_CYCTAP_Pos) /*!< DWT CTRL: CYCTAP Mask */ + +#define DWT_CTRL_POSTINIT_Pos 5U /*!< DWT CTRL: POSTINIT Position */ +#define DWT_CTRL_POSTINIT_Msk (0xFUL << DWT_CTRL_POSTINIT_Pos) /*!< DWT CTRL: POSTINIT Mask */ + +#define DWT_CTRL_POSTPRESET_Pos 1U /*!< DWT CTRL: POSTPRESET Position */ +#define DWT_CTRL_POSTPRESET_Msk (0xFUL << DWT_CTRL_POSTPRESET_Pos) /*!< DWT CTRL: POSTPRESET Mask */ + +#define DWT_CTRL_CYCCNTENA_Pos 0U /*!< DWT CTRL: CYCCNTENA Position */ +#define DWT_CTRL_CYCCNTENA_Msk (0x1UL /*<< DWT_CTRL_CYCCNTENA_Pos*/) /*!< DWT CTRL: CYCCNTENA Mask */ + +/* DWT CPI Count Register Definitions */ +#define DWT_CPICNT_CPICNT_Pos 0U /*!< DWT CPICNT: CPICNT Position */ +#define DWT_CPICNT_CPICNT_Msk (0xFFUL /*<< DWT_CPICNT_CPICNT_Pos*/) /*!< DWT CPICNT: CPICNT Mask */ + +/* DWT Exception Overhead Count Register Definitions */ +#define DWT_EXCCNT_EXCCNT_Pos 0U /*!< DWT EXCCNT: EXCCNT Position */ +#define DWT_EXCCNT_EXCCNT_Msk (0xFFUL /*<< DWT_EXCCNT_EXCCNT_Pos*/) /*!< DWT EXCCNT: EXCCNT Mask */ + +/* DWT Sleep Count Register Definitions */ +#define DWT_SLEEPCNT_SLEEPCNT_Pos 0U /*!< DWT SLEEPCNT: SLEEPCNT Position */ +#define DWT_SLEEPCNT_SLEEPCNT_Msk (0xFFUL /*<< DWT_SLEEPCNT_SLEEPCNT_Pos*/) /*!< DWT SLEEPCNT: SLEEPCNT Mask */ + +/* DWT LSU Count Register Definitions */ +#define DWT_LSUCNT_LSUCNT_Pos 0U /*!< DWT LSUCNT: LSUCNT Position */ +#define DWT_LSUCNT_LSUCNT_Msk (0xFFUL /*<< DWT_LSUCNT_LSUCNT_Pos*/) /*!< DWT LSUCNT: LSUCNT Mask */ + +/* DWT Folded-instruction Count Register Definitions */ +#define DWT_FOLDCNT_FOLDCNT_Pos 0U /*!< DWT FOLDCNT: FOLDCNT Position */ +#define DWT_FOLDCNT_FOLDCNT_Msk (0xFFUL /*<< DWT_FOLDCNT_FOLDCNT_Pos*/) /*!< DWT FOLDCNT: FOLDCNT Mask */ + +/* DWT Comparator Mask Register Definitions */ +#define DWT_MASK_MASK_Pos 0U /*!< DWT MASK: MASK Position */ +#define DWT_MASK_MASK_Msk (0x1FUL /*<< DWT_MASK_MASK_Pos*/) /*!< DWT MASK: MASK Mask */ + +/* DWT Comparator Function Register Definitions */ +#define DWT_FUNCTION_MATCHED_Pos 24U /*!< DWT FUNCTION: MATCHED Position */ +#define DWT_FUNCTION_MATCHED_Msk (0x1UL << DWT_FUNCTION_MATCHED_Pos) /*!< DWT FUNCTION: MATCHED Mask */ + +#define DWT_FUNCTION_DATAVADDR1_Pos 16U /*!< DWT FUNCTION: DATAVADDR1 Position */ +#define DWT_FUNCTION_DATAVADDR1_Msk (0xFUL << DWT_FUNCTION_DATAVADDR1_Pos) /*!< DWT FUNCTION: DATAVADDR1 Mask */ + +#define DWT_FUNCTION_DATAVADDR0_Pos 12U /*!< DWT FUNCTION: DATAVADDR0 Position */ +#define DWT_FUNCTION_DATAVADDR0_Msk (0xFUL << DWT_FUNCTION_DATAVADDR0_Pos) /*!< DWT FUNCTION: DATAVADDR0 Mask */ + +#define DWT_FUNCTION_DATAVSIZE_Pos 10U /*!< DWT FUNCTION: DATAVSIZE Position */ +#define DWT_FUNCTION_DATAVSIZE_Msk (0x3UL << DWT_FUNCTION_DATAVSIZE_Pos) /*!< DWT FUNCTION: DATAVSIZE Mask */ + +#define DWT_FUNCTION_LNK1ENA_Pos 9U /*!< DWT FUNCTION: LNK1ENA Position */ +#define DWT_FUNCTION_LNK1ENA_Msk (0x1UL << DWT_FUNCTION_LNK1ENA_Pos) /*!< DWT FUNCTION: LNK1ENA Mask */ + +#define DWT_FUNCTION_DATAVMATCH_Pos 8U /*!< DWT FUNCTION: DATAVMATCH Position */ +#define DWT_FUNCTION_DATAVMATCH_Msk (0x1UL << DWT_FUNCTION_DATAVMATCH_Pos) /*!< DWT FUNCTION: DATAVMATCH Mask */ + +#define DWT_FUNCTION_CYCMATCH_Pos 7U /*!< DWT FUNCTION: CYCMATCH Position */ +#define DWT_FUNCTION_CYCMATCH_Msk (0x1UL << DWT_FUNCTION_CYCMATCH_Pos) /*!< DWT FUNCTION: CYCMATCH Mask */ + +#define DWT_FUNCTION_EMITRANGE_Pos 5U /*!< DWT FUNCTION: EMITRANGE Position */ +#define DWT_FUNCTION_EMITRANGE_Msk (0x1UL << DWT_FUNCTION_EMITRANGE_Pos) /*!< DWT FUNCTION: EMITRANGE Mask */ + +#define DWT_FUNCTION_FUNCTION_Pos 0U /*!< DWT FUNCTION: FUNCTION Position */ +#define DWT_FUNCTION_FUNCTION_Msk (0xFUL /*<< DWT_FUNCTION_FUNCTION_Pos*/) /*!< DWT FUNCTION: FUNCTION Mask */ + +/*@}*/ /* end of group CMSIS_DWT */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_TPI Trace Port Interface (TPI) + \brief Type definitions for the Trace Port Interface (TPI) + @{ + */ + +/** + \brief Structure type to access the Trace Port Interface Register (TPI). + */ +typedef struct +{ + __IM uint32_t SSPSR; /*!< Offset: 0x000 (R/ ) Supported Parallel Port Size Register */ + __IOM uint32_t CSPSR; /*!< Offset: 0x004 (R/W) Current Parallel Port Size Register */ + uint32_t RESERVED0[2U]; + __IOM uint32_t ACPR; /*!< Offset: 0x010 (R/W) Asynchronous Clock Prescaler Register */ + uint32_t RESERVED1[55U]; + __IOM uint32_t SPPR; /*!< Offset: 0x0F0 (R/W) Selected Pin Protocol Register */ + uint32_t RESERVED2[131U]; + __IM uint32_t FFSR; /*!< Offset: 0x300 (R/ ) Formatter and Flush Status Register */ + __IOM uint32_t FFCR; /*!< Offset: 0x304 (R/W) Formatter and Flush Control Register */ + __IM uint32_t FSCR; /*!< Offset: 0x308 (R/ ) Formatter Synchronization Counter Register */ + uint32_t RESERVED3[759U]; + __IM uint32_t TRIGGER; /*!< Offset: 0xEE8 (R/ ) TRIGGER Register */ + __IM uint32_t FIFO0; /*!< Offset: 0xEEC (R/ ) Integration ETM Data */ + __IM uint32_t ITATBCTR2; /*!< Offset: 0xEF0 (R/ ) ITATBCTR2 */ + uint32_t RESERVED4[1U]; + __IM uint32_t ITATBCTR0; /*!< Offset: 0xEF8 (R/ ) ITATBCTR0 */ + __IM uint32_t FIFO1; /*!< Offset: 0xEFC (R/ ) Integration ITM Data */ + __IOM uint32_t ITCTRL; /*!< Offset: 0xF00 (R/W) Integration Mode Control */ + uint32_t RESERVED5[39U]; + __IOM uint32_t CLAIMSET; /*!< Offset: 0xFA0 (R/W) Claim tag set */ + __IOM uint32_t CLAIMCLR; /*!< Offset: 0xFA4 (R/W) Claim tag clear */ + uint32_t RESERVED7[8U]; + __IM uint32_t DEVID; /*!< Offset: 0xFC8 (R/ ) TPIU_DEVID */ + __IM uint32_t DEVTYPE; /*!< Offset: 0xFCC (R/ ) TPIU_DEVTYPE */ +} TPI_Type; + +/* TPI Asynchronous Clock Prescaler Register Definitions */ +#define TPI_ACPR_PRESCALER_Pos 0U /*!< TPI ACPR: PRESCALER Position */ +#define TPI_ACPR_PRESCALER_Msk (0x1FFFUL /*<< TPI_ACPR_PRESCALER_Pos*/) /*!< TPI ACPR: PRESCALER Mask */ + +/* TPI Selected Pin Protocol Register Definitions */ +#define TPI_SPPR_TXMODE_Pos 0U /*!< TPI SPPR: TXMODE Position */ +#define TPI_SPPR_TXMODE_Msk (0x3UL /*<< TPI_SPPR_TXMODE_Pos*/) /*!< TPI SPPR: TXMODE Mask */ + +/* TPI Formatter and Flush Status Register Definitions */ +#define TPI_FFSR_FtNonStop_Pos 3U /*!< TPI FFSR: FtNonStop Position */ +#define TPI_FFSR_FtNonStop_Msk (0x1UL << TPI_FFSR_FtNonStop_Pos) /*!< TPI FFSR: FtNonStop Mask */ + +#define TPI_FFSR_TCPresent_Pos 2U /*!< TPI FFSR: TCPresent Position */ +#define TPI_FFSR_TCPresent_Msk (0x1UL << TPI_FFSR_TCPresent_Pos) /*!< TPI FFSR: TCPresent Mask */ + +#define TPI_FFSR_FtStopped_Pos 1U /*!< TPI FFSR: FtStopped Position */ +#define TPI_FFSR_FtStopped_Msk (0x1UL << TPI_FFSR_FtStopped_Pos) /*!< TPI FFSR: FtStopped Mask */ + +#define TPI_FFSR_FlInProg_Pos 0U /*!< TPI FFSR: FlInProg Position */ +#define TPI_FFSR_FlInProg_Msk (0x1UL /*<< TPI_FFSR_FlInProg_Pos*/) /*!< TPI FFSR: FlInProg Mask */ + +/* TPI Formatter and Flush Control Register Definitions */ +#define TPI_FFCR_TrigIn_Pos 8U /*!< TPI FFCR: TrigIn Position */ +#define TPI_FFCR_TrigIn_Msk (0x1UL << TPI_FFCR_TrigIn_Pos) /*!< TPI FFCR: TrigIn Mask */ + +#define TPI_FFCR_EnFCont_Pos 1U /*!< TPI FFCR: EnFCont Position */ +#define TPI_FFCR_EnFCont_Msk (0x1UL << TPI_FFCR_EnFCont_Pos) /*!< TPI FFCR: EnFCont Mask */ + +/* TPI TRIGGER Register Definitions */ +#define TPI_TRIGGER_TRIGGER_Pos 0U /*!< TPI TRIGGER: TRIGGER Position */ +#define TPI_TRIGGER_TRIGGER_Msk (0x1UL /*<< TPI_TRIGGER_TRIGGER_Pos*/) /*!< TPI TRIGGER: TRIGGER Mask */ + +/* TPI Integration ETM Data Register Definitions (FIFO0) */ +#define TPI_FIFO0_ITM_ATVALID_Pos 29U /*!< TPI FIFO0: ITM_ATVALID Position */ +#define TPI_FIFO0_ITM_ATVALID_Msk (0x1UL << TPI_FIFO0_ITM_ATVALID_Pos) /*!< TPI FIFO0: ITM_ATVALID Mask */ + +#define TPI_FIFO0_ITM_bytecount_Pos 27U /*!< TPI FIFO0: ITM_bytecount Position */ +#define TPI_FIFO0_ITM_bytecount_Msk (0x3UL << TPI_FIFO0_ITM_bytecount_Pos) /*!< TPI FIFO0: ITM_bytecount Mask */ + +#define TPI_FIFO0_ETM_ATVALID_Pos 26U /*!< TPI FIFO0: ETM_ATVALID Position */ +#define TPI_FIFO0_ETM_ATVALID_Msk (0x1UL << TPI_FIFO0_ETM_ATVALID_Pos) /*!< TPI FIFO0: ETM_ATVALID Mask */ + +#define TPI_FIFO0_ETM_bytecount_Pos 24U /*!< TPI FIFO0: ETM_bytecount Position */ +#define TPI_FIFO0_ETM_bytecount_Msk (0x3UL << TPI_FIFO0_ETM_bytecount_Pos) /*!< TPI FIFO0: ETM_bytecount Mask */ + +#define TPI_FIFO0_ETM2_Pos 16U /*!< TPI FIFO0: ETM2 Position */ +#define TPI_FIFO0_ETM2_Msk (0xFFUL << TPI_FIFO0_ETM2_Pos) /*!< TPI FIFO0: ETM2 Mask */ + +#define TPI_FIFO0_ETM1_Pos 8U /*!< TPI FIFO0: ETM1 Position */ +#define TPI_FIFO0_ETM1_Msk (0xFFUL << TPI_FIFO0_ETM1_Pos) /*!< TPI FIFO0: ETM1 Mask */ + +#define TPI_FIFO0_ETM0_Pos 0U /*!< TPI FIFO0: ETM0 Position */ +#define TPI_FIFO0_ETM0_Msk (0xFFUL /*<< TPI_FIFO0_ETM0_Pos*/) /*!< TPI FIFO0: ETM0 Mask */ + +/* TPI ITATBCTR2 Register Definitions */ +#define TPI_ITATBCTR2_ATREADY2_Pos 0U /*!< TPI ITATBCTR2: ATREADY2 Position */ +#define TPI_ITATBCTR2_ATREADY2_Msk (0x1UL /*<< TPI_ITATBCTR2_ATREADY2_Pos*/) /*!< TPI ITATBCTR2: ATREADY2 Mask */ + +#define TPI_ITATBCTR2_ATREADY1_Pos 0U /*!< TPI ITATBCTR2: ATREADY1 Position */ +#define TPI_ITATBCTR2_ATREADY1_Msk (0x1UL /*<< TPI_ITATBCTR2_ATREADY1_Pos*/) /*!< TPI ITATBCTR2: ATREADY1 Mask */ + +/* TPI Integration ITM Data Register Definitions (FIFO1) */ +#define TPI_FIFO1_ITM_ATVALID_Pos 29U /*!< TPI FIFO1: ITM_ATVALID Position */ +#define TPI_FIFO1_ITM_ATVALID_Msk (0x1UL << TPI_FIFO1_ITM_ATVALID_Pos) /*!< TPI FIFO1: ITM_ATVALID Mask */ + +#define TPI_FIFO1_ITM_bytecount_Pos 27U /*!< TPI FIFO1: ITM_bytecount Position */ +#define TPI_FIFO1_ITM_bytecount_Msk (0x3UL << TPI_FIFO1_ITM_bytecount_Pos) /*!< TPI FIFO1: ITM_bytecount Mask */ + +#define TPI_FIFO1_ETM_ATVALID_Pos 26U /*!< TPI FIFO1: ETM_ATVALID Position */ +#define TPI_FIFO1_ETM_ATVALID_Msk (0x1UL << TPI_FIFO1_ETM_ATVALID_Pos) /*!< TPI FIFO1: ETM_ATVALID Mask */ + +#define TPI_FIFO1_ETM_bytecount_Pos 24U /*!< TPI FIFO1: ETM_bytecount Position */ +#define TPI_FIFO1_ETM_bytecount_Msk (0x3UL << TPI_FIFO1_ETM_bytecount_Pos) /*!< TPI FIFO1: ETM_bytecount Mask */ + +#define TPI_FIFO1_ITM2_Pos 16U /*!< TPI FIFO1: ITM2 Position */ +#define TPI_FIFO1_ITM2_Msk (0xFFUL << TPI_FIFO1_ITM2_Pos) /*!< TPI FIFO1: ITM2 Mask */ + +#define TPI_FIFO1_ITM1_Pos 8U /*!< TPI FIFO1: ITM1 Position */ +#define TPI_FIFO1_ITM1_Msk (0xFFUL << TPI_FIFO1_ITM1_Pos) /*!< TPI FIFO1: ITM1 Mask */ + +#define TPI_FIFO1_ITM0_Pos 0U /*!< TPI FIFO1: ITM0 Position */ +#define TPI_FIFO1_ITM0_Msk (0xFFUL /*<< TPI_FIFO1_ITM0_Pos*/) /*!< TPI FIFO1: ITM0 Mask */ + +/* TPI ITATBCTR0 Register Definitions */ +#define TPI_ITATBCTR0_ATREADY2_Pos 0U /*!< TPI ITATBCTR0: ATREADY2 Position */ +#define TPI_ITATBCTR0_ATREADY2_Msk (0x1UL /*<< TPI_ITATBCTR0_ATREADY2_Pos*/) /*!< TPI ITATBCTR0: ATREADY2 Mask */ + +#define TPI_ITATBCTR0_ATREADY1_Pos 0U /*!< TPI ITATBCTR0: ATREADY1 Position */ +#define TPI_ITATBCTR0_ATREADY1_Msk (0x1UL /*<< TPI_ITATBCTR0_ATREADY1_Pos*/) /*!< TPI ITATBCTR0: ATREADY1 Mask */ + +/* TPI Integration Mode Control Register Definitions */ +#define TPI_ITCTRL_Mode_Pos 0U /*!< TPI ITCTRL: Mode Position */ +#define TPI_ITCTRL_Mode_Msk (0x3UL /*<< TPI_ITCTRL_Mode_Pos*/) /*!< TPI ITCTRL: Mode Mask */ + +/* TPI DEVID Register Definitions */ +#define TPI_DEVID_NRZVALID_Pos 11U /*!< TPI DEVID: NRZVALID Position */ +#define TPI_DEVID_NRZVALID_Msk (0x1UL << TPI_DEVID_NRZVALID_Pos) /*!< TPI DEVID: NRZVALID Mask */ + +#define TPI_DEVID_MANCVALID_Pos 10U /*!< TPI DEVID: MANCVALID Position */ +#define TPI_DEVID_MANCVALID_Msk (0x1UL << TPI_DEVID_MANCVALID_Pos) /*!< TPI DEVID: MANCVALID Mask */ + +#define TPI_DEVID_PTINVALID_Pos 9U /*!< TPI DEVID: PTINVALID Position */ +#define TPI_DEVID_PTINVALID_Msk (0x1UL << TPI_DEVID_PTINVALID_Pos) /*!< TPI DEVID: PTINVALID Mask */ + +#define TPI_DEVID_MinBufSz_Pos 6U /*!< TPI DEVID: MinBufSz Position */ +#define TPI_DEVID_MinBufSz_Msk (0x7UL << TPI_DEVID_MinBufSz_Pos) /*!< TPI DEVID: MinBufSz Mask */ + +#define TPI_DEVID_AsynClkIn_Pos 5U /*!< TPI DEVID: AsynClkIn Position */ +#define TPI_DEVID_AsynClkIn_Msk (0x1UL << TPI_DEVID_AsynClkIn_Pos) /*!< TPI DEVID: AsynClkIn Mask */ + +#define TPI_DEVID_NrTraceInput_Pos 0U /*!< TPI DEVID: NrTraceInput Position */ +#define TPI_DEVID_NrTraceInput_Msk (0x1FUL /*<< TPI_DEVID_NrTraceInput_Pos*/) /*!< TPI DEVID: NrTraceInput Mask */ + +/* TPI DEVTYPE Register Definitions */ +#define TPI_DEVTYPE_SubType_Pos 4U /*!< TPI DEVTYPE: SubType Position */ +#define TPI_DEVTYPE_SubType_Msk (0xFUL /*<< TPI_DEVTYPE_SubType_Pos*/) /*!< TPI DEVTYPE: SubType Mask */ + +#define TPI_DEVTYPE_MajorType_Pos 0U /*!< TPI DEVTYPE: MajorType Position */ +#define TPI_DEVTYPE_MajorType_Msk (0xFUL << TPI_DEVTYPE_MajorType_Pos) /*!< TPI DEVTYPE: MajorType Mask */ + +/*@}*/ /* end of group CMSIS_TPI */ + + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_MPU Memory Protection Unit (MPU) + \brief Type definitions for the Memory Protection Unit (MPU) + @{ + */ + +/** + \brief Structure type to access the Memory Protection Unit (MPU). + */ +typedef struct +{ + __IM uint32_t TYPE; /*!< Offset: 0x000 (R/ ) MPU Type Register */ + __IOM uint32_t CTRL; /*!< Offset: 0x004 (R/W) MPU Control Register */ + __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) MPU Region RNRber Register */ + __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) MPU Region Base Address Register */ + __IOM uint32_t RASR; /*!< Offset: 0x010 (R/W) MPU Region Attribute and Size Register */ + __IOM uint32_t RBAR_A1; /*!< Offset: 0x014 (R/W) MPU Alias 1 Region Base Address Register */ + __IOM uint32_t RASR_A1; /*!< Offset: 0x018 (R/W) MPU Alias 1 Region Attribute and Size Register */ + __IOM uint32_t RBAR_A2; /*!< Offset: 0x01C (R/W) MPU Alias 2 Region Base Address Register */ + __IOM uint32_t RASR_A2; /*!< Offset: 0x020 (R/W) MPU Alias 2 Region Attribute and Size Register */ + __IOM uint32_t RBAR_A3; /*!< Offset: 0x024 (R/W) MPU Alias 3 Region Base Address Register */ + __IOM uint32_t RASR_A3; /*!< Offset: 0x028 (R/W) MPU Alias 3 Region Attribute and Size Register */ +} MPU_Type; + +#define MPU_TYPE_RALIASES 4U + +/* MPU Type Register Definitions */ +#define MPU_TYPE_IREGION_Pos 16U /*!< MPU TYPE: IREGION Position */ +#define MPU_TYPE_IREGION_Msk (0xFFUL << MPU_TYPE_IREGION_Pos) /*!< MPU TYPE: IREGION Mask */ + +#define MPU_TYPE_DREGION_Pos 8U /*!< MPU TYPE: DREGION Position */ +#define MPU_TYPE_DREGION_Msk (0xFFUL << MPU_TYPE_DREGION_Pos) /*!< MPU TYPE: DREGION Mask */ + +#define MPU_TYPE_SEPARATE_Pos 0U /*!< MPU TYPE: SEPARATE Position */ +#define MPU_TYPE_SEPARATE_Msk (1UL /*<< MPU_TYPE_SEPARATE_Pos*/) /*!< MPU TYPE: SEPARATE Mask */ + +/* MPU Control Register Definitions */ +#define MPU_CTRL_PRIVDEFENA_Pos 2U /*!< MPU CTRL: PRIVDEFENA Position */ +#define MPU_CTRL_PRIVDEFENA_Msk (1UL << MPU_CTRL_PRIVDEFENA_Pos) /*!< MPU CTRL: PRIVDEFENA Mask */ + +#define MPU_CTRL_HFNMIENA_Pos 1U /*!< MPU CTRL: HFNMIENA Position */ +#define MPU_CTRL_HFNMIENA_Msk (1UL << MPU_CTRL_HFNMIENA_Pos) /*!< MPU CTRL: HFNMIENA Mask */ + +#define MPU_CTRL_ENABLE_Pos 0U /*!< MPU CTRL: ENABLE Position */ +#define MPU_CTRL_ENABLE_Msk (1UL /*<< MPU_CTRL_ENABLE_Pos*/) /*!< MPU CTRL: ENABLE Mask */ + +/* MPU Region Number Register Definitions */ +#define MPU_RNR_REGION_Pos 0U /*!< MPU RNR: REGION Position */ +#define MPU_RNR_REGION_Msk (0xFFUL /*<< MPU_RNR_REGION_Pos*/) /*!< MPU RNR: REGION Mask */ + +/* MPU Region Base Address Register Definitions */ +#define MPU_RBAR_ADDR_Pos 5U /*!< MPU RBAR: ADDR Position */ +#define MPU_RBAR_ADDR_Msk (0x7FFFFFFUL << MPU_RBAR_ADDR_Pos) /*!< MPU RBAR: ADDR Mask */ + +#define MPU_RBAR_VALID_Pos 4U /*!< MPU RBAR: VALID Position */ +#define MPU_RBAR_VALID_Msk (1UL << MPU_RBAR_VALID_Pos) /*!< MPU RBAR: VALID Mask */ + +#define MPU_RBAR_REGION_Pos 0U /*!< MPU RBAR: REGION Position */ +#define MPU_RBAR_REGION_Msk (0xFUL /*<< MPU_RBAR_REGION_Pos*/) /*!< MPU RBAR: REGION Mask */ + +/* MPU Region Attribute and Size Register Definitions */ +#define MPU_RASR_ATTRS_Pos 16U /*!< MPU RASR: MPU Region Attribute field Position */ +#define MPU_RASR_ATTRS_Msk (0xFFFFUL << MPU_RASR_ATTRS_Pos) /*!< MPU RASR: MPU Region Attribute field Mask */ + +#define MPU_RASR_XN_Pos 28U /*!< MPU RASR: ATTRS.XN Position */ +#define MPU_RASR_XN_Msk (1UL << MPU_RASR_XN_Pos) /*!< MPU RASR: ATTRS.XN Mask */ + +#define MPU_RASR_AP_Pos 24U /*!< MPU RASR: ATTRS.AP Position */ +#define MPU_RASR_AP_Msk (0x7UL << MPU_RASR_AP_Pos) /*!< MPU RASR: ATTRS.AP Mask */ + +#define MPU_RASR_TEX_Pos 19U /*!< MPU RASR: ATTRS.TEX Position */ +#define MPU_RASR_TEX_Msk (0x7UL << MPU_RASR_TEX_Pos) /*!< MPU RASR: ATTRS.TEX Mask */ + +#define MPU_RASR_S_Pos 18U /*!< MPU RASR: ATTRS.S Position */ +#define MPU_RASR_S_Msk (1UL << MPU_RASR_S_Pos) /*!< MPU RASR: ATTRS.S Mask */ + +#define MPU_RASR_C_Pos 17U /*!< MPU RASR: ATTRS.C Position */ +#define MPU_RASR_C_Msk (1UL << MPU_RASR_C_Pos) /*!< MPU RASR: ATTRS.C Mask */ + +#define MPU_RASR_B_Pos 16U /*!< MPU RASR: ATTRS.B Position */ +#define MPU_RASR_B_Msk (1UL << MPU_RASR_B_Pos) /*!< MPU RASR: ATTRS.B Mask */ + +#define MPU_RASR_SRD_Pos 8U /*!< MPU RASR: Sub-Region Disable Position */ +#define MPU_RASR_SRD_Msk (0xFFUL << MPU_RASR_SRD_Pos) /*!< MPU RASR: Sub-Region Disable Mask */ + +#define MPU_RASR_SIZE_Pos 1U /*!< MPU RASR: Region Size Field Position */ +#define MPU_RASR_SIZE_Msk (0x1FUL << MPU_RASR_SIZE_Pos) /*!< MPU RASR: Region Size Field Mask */ + +#define MPU_RASR_ENABLE_Pos 0U /*!< MPU RASR: Region enable bit Position */ +#define MPU_RASR_ENABLE_Msk (1UL /*<< MPU_RASR_ENABLE_Pos*/) /*!< MPU RASR: Region enable bit Disable Mask */ + +/*@} end of group CMSIS_MPU */ +#endif + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CoreDebug Core Debug Registers (CoreDebug) + \brief Type definitions for the Core Debug Registers + @{ + */ + +/** + \brief Structure type to access the Core Debug Register (CoreDebug). + */ +typedef struct +{ + __IOM uint32_t DHCSR; /*!< Offset: 0x000 (R/W) Debug Halting Control and Status Register */ + __OM uint32_t DCRSR; /*!< Offset: 0x004 ( /W) Debug Core Register Selector Register */ + __IOM uint32_t DCRDR; /*!< Offset: 0x008 (R/W) Debug Core Register Data Register */ + __IOM uint32_t DEMCR; /*!< Offset: 0x00C (R/W) Debug Exception and Monitor Control Register */ +} CoreDebug_Type; + +/* Debug Halting Control and Status Register Definitions */ +#define CoreDebug_DHCSR_DBGKEY_Pos 16U /*!< CoreDebug DHCSR: DBGKEY Position */ +#define CoreDebug_DHCSR_DBGKEY_Msk (0xFFFFUL << CoreDebug_DHCSR_DBGKEY_Pos) /*!< CoreDebug DHCSR: DBGKEY Mask */ + +#define CoreDebug_DHCSR_S_RESET_ST_Pos 25U /*!< CoreDebug DHCSR: S_RESET_ST Position */ +#define CoreDebug_DHCSR_S_RESET_ST_Msk (1UL << CoreDebug_DHCSR_S_RESET_ST_Pos) /*!< CoreDebug DHCSR: S_RESET_ST Mask */ + +#define CoreDebug_DHCSR_S_RETIRE_ST_Pos 24U /*!< CoreDebug DHCSR: S_RETIRE_ST Position */ +#define CoreDebug_DHCSR_S_RETIRE_ST_Msk (1UL << CoreDebug_DHCSR_S_RETIRE_ST_Pos) /*!< CoreDebug DHCSR: S_RETIRE_ST Mask */ + +#define CoreDebug_DHCSR_S_LOCKUP_Pos 19U /*!< CoreDebug DHCSR: S_LOCKUP Position */ +#define CoreDebug_DHCSR_S_LOCKUP_Msk (1UL << CoreDebug_DHCSR_S_LOCKUP_Pos) /*!< CoreDebug DHCSR: S_LOCKUP Mask */ + +#define CoreDebug_DHCSR_S_SLEEP_Pos 18U /*!< CoreDebug DHCSR: S_SLEEP Position */ +#define CoreDebug_DHCSR_S_SLEEP_Msk (1UL << CoreDebug_DHCSR_S_SLEEP_Pos) /*!< CoreDebug DHCSR: S_SLEEP Mask */ + +#define CoreDebug_DHCSR_S_HALT_Pos 17U /*!< CoreDebug DHCSR: S_HALT Position */ +#define CoreDebug_DHCSR_S_HALT_Msk (1UL << CoreDebug_DHCSR_S_HALT_Pos) /*!< CoreDebug DHCSR: S_HALT Mask */ + +#define CoreDebug_DHCSR_S_REGRDY_Pos 16U /*!< CoreDebug DHCSR: S_REGRDY Position */ +#define CoreDebug_DHCSR_S_REGRDY_Msk (1UL << CoreDebug_DHCSR_S_REGRDY_Pos) /*!< CoreDebug DHCSR: S_REGRDY Mask */ + +#define CoreDebug_DHCSR_C_SNAPSTALL_Pos 5U /*!< CoreDebug DHCSR: C_SNAPSTALL Position */ +#define CoreDebug_DHCSR_C_SNAPSTALL_Msk (1UL << CoreDebug_DHCSR_C_SNAPSTALL_Pos) /*!< CoreDebug DHCSR: C_SNAPSTALL Mask */ + +#define CoreDebug_DHCSR_C_MASKINTS_Pos 3U /*!< CoreDebug DHCSR: C_MASKINTS Position */ +#define CoreDebug_DHCSR_C_MASKINTS_Msk (1UL << CoreDebug_DHCSR_C_MASKINTS_Pos) /*!< CoreDebug DHCSR: C_MASKINTS Mask */ + +#define CoreDebug_DHCSR_C_STEP_Pos 2U /*!< CoreDebug DHCSR: C_STEP Position */ +#define CoreDebug_DHCSR_C_STEP_Msk (1UL << CoreDebug_DHCSR_C_STEP_Pos) /*!< CoreDebug DHCSR: C_STEP Mask */ + +#define CoreDebug_DHCSR_C_HALT_Pos 1U /*!< CoreDebug DHCSR: C_HALT Position */ +#define CoreDebug_DHCSR_C_HALT_Msk (1UL << CoreDebug_DHCSR_C_HALT_Pos) /*!< CoreDebug DHCSR: C_HALT Mask */ + +#define CoreDebug_DHCSR_C_DEBUGEN_Pos 0U /*!< CoreDebug DHCSR: C_DEBUGEN Position */ +#define CoreDebug_DHCSR_C_DEBUGEN_Msk (1UL /*<< CoreDebug_DHCSR_C_DEBUGEN_Pos*/) /*!< CoreDebug DHCSR: C_DEBUGEN Mask */ + +/* Debug Core Register Selector Register Definitions */ +#define CoreDebug_DCRSR_REGWnR_Pos 16U /*!< CoreDebug DCRSR: REGWnR Position */ +#define CoreDebug_DCRSR_REGWnR_Msk (1UL << CoreDebug_DCRSR_REGWnR_Pos) /*!< CoreDebug DCRSR: REGWnR Mask */ + +#define CoreDebug_DCRSR_REGSEL_Pos 0U /*!< CoreDebug DCRSR: REGSEL Position */ +#define CoreDebug_DCRSR_REGSEL_Msk (0x1FUL /*<< CoreDebug_DCRSR_REGSEL_Pos*/) /*!< CoreDebug DCRSR: REGSEL Mask */ + +/* Debug Exception and Monitor Control Register Definitions */ +#define CoreDebug_DEMCR_TRCENA_Pos 24U /*!< CoreDebug DEMCR: TRCENA Position */ +#define CoreDebug_DEMCR_TRCENA_Msk (1UL << CoreDebug_DEMCR_TRCENA_Pos) /*!< CoreDebug DEMCR: TRCENA Mask */ + +#define CoreDebug_DEMCR_MON_REQ_Pos 19U /*!< CoreDebug DEMCR: MON_REQ Position */ +#define CoreDebug_DEMCR_MON_REQ_Msk (1UL << CoreDebug_DEMCR_MON_REQ_Pos) /*!< CoreDebug DEMCR: MON_REQ Mask */ + +#define CoreDebug_DEMCR_MON_STEP_Pos 18U /*!< CoreDebug DEMCR: MON_STEP Position */ +#define CoreDebug_DEMCR_MON_STEP_Msk (1UL << CoreDebug_DEMCR_MON_STEP_Pos) /*!< CoreDebug DEMCR: MON_STEP Mask */ + +#define CoreDebug_DEMCR_MON_PEND_Pos 17U /*!< CoreDebug DEMCR: MON_PEND Position */ +#define CoreDebug_DEMCR_MON_PEND_Msk (1UL << CoreDebug_DEMCR_MON_PEND_Pos) /*!< CoreDebug DEMCR: MON_PEND Mask */ + +#define CoreDebug_DEMCR_MON_EN_Pos 16U /*!< CoreDebug DEMCR: MON_EN Position */ +#define CoreDebug_DEMCR_MON_EN_Msk (1UL << CoreDebug_DEMCR_MON_EN_Pos) /*!< CoreDebug DEMCR: MON_EN Mask */ + +#define CoreDebug_DEMCR_VC_HARDERR_Pos 10U /*!< CoreDebug DEMCR: VC_HARDERR Position */ +#define CoreDebug_DEMCR_VC_HARDERR_Msk (1UL << CoreDebug_DEMCR_VC_HARDERR_Pos) /*!< CoreDebug DEMCR: VC_HARDERR Mask */ + +#define CoreDebug_DEMCR_VC_INTERR_Pos 9U /*!< CoreDebug DEMCR: VC_INTERR Position */ +#define CoreDebug_DEMCR_VC_INTERR_Msk (1UL << CoreDebug_DEMCR_VC_INTERR_Pos) /*!< CoreDebug DEMCR: VC_INTERR Mask */ + +#define CoreDebug_DEMCR_VC_BUSERR_Pos 8U /*!< CoreDebug DEMCR: VC_BUSERR Position */ +#define CoreDebug_DEMCR_VC_BUSERR_Msk (1UL << CoreDebug_DEMCR_VC_BUSERR_Pos) /*!< CoreDebug DEMCR: VC_BUSERR Mask */ + +#define CoreDebug_DEMCR_VC_STATERR_Pos 7U /*!< CoreDebug DEMCR: VC_STATERR Position */ +#define CoreDebug_DEMCR_VC_STATERR_Msk (1UL << CoreDebug_DEMCR_VC_STATERR_Pos) /*!< CoreDebug DEMCR: VC_STATERR Mask */ + +#define CoreDebug_DEMCR_VC_CHKERR_Pos 6U /*!< CoreDebug DEMCR: VC_CHKERR Position */ +#define CoreDebug_DEMCR_VC_CHKERR_Msk (1UL << CoreDebug_DEMCR_VC_CHKERR_Pos) /*!< CoreDebug DEMCR: VC_CHKERR Mask */ + +#define CoreDebug_DEMCR_VC_NOCPERR_Pos 5U /*!< CoreDebug DEMCR: VC_NOCPERR Position */ +#define CoreDebug_DEMCR_VC_NOCPERR_Msk (1UL << CoreDebug_DEMCR_VC_NOCPERR_Pos) /*!< CoreDebug DEMCR: VC_NOCPERR Mask */ + +#define CoreDebug_DEMCR_VC_MMERR_Pos 4U /*!< CoreDebug DEMCR: VC_MMERR Position */ +#define CoreDebug_DEMCR_VC_MMERR_Msk (1UL << CoreDebug_DEMCR_VC_MMERR_Pos) /*!< CoreDebug DEMCR: VC_MMERR Mask */ + +#define CoreDebug_DEMCR_VC_CORERESET_Pos 0U /*!< CoreDebug DEMCR: VC_CORERESET Position */ +#define CoreDebug_DEMCR_VC_CORERESET_Msk (1UL /*<< CoreDebug_DEMCR_VC_CORERESET_Pos*/) /*!< CoreDebug DEMCR: VC_CORERESET Mask */ + +/*@} end of group CMSIS_CoreDebug */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_bitfield Core register bit field macros + \brief Macros for use with bit field definitions (xxx_Pos, xxx_Msk). + @{ + */ + +/** + \brief Mask and shift a bit field value for use in a register bit range. + \param[in] field Name of the register bit field. + \param[in] value Value of the bit field. This parameter is interpreted as an uint32_t type. + \return Masked and shifted value. +*/ +#define _VAL2FLD(field, value) (((uint32_t)(value) << field ## _Pos) & field ## _Msk) + +/** + \brief Mask and shift a register value to extract a bit filed value. + \param[in] field Name of the register bit field. + \param[in] value Value of register. This parameter is interpreted as an uint32_t type. + \return Masked and shifted bit field value. +*/ +#define _FLD2VAL(field, value) (((uint32_t)(value) & field ## _Msk) >> field ## _Pos) + +/*@} end of group CMSIS_core_bitfield */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_base Core Definitions + \brief Definitions for base addresses, unions, and structures. + @{ + */ + +/* Memory mapping of Core Hardware */ +#define SCS_BASE (0xE000E000UL) /*!< System Control Space Base Address */ +#define ITM_BASE (0xE0000000UL) /*!< ITM Base Address */ +#define DWT_BASE (0xE0001000UL) /*!< DWT Base Address */ +#define TPI_BASE (0xE0040000UL) /*!< TPI Base Address */ +#define CoreDebug_BASE (0xE000EDF0UL) /*!< Core Debug Base Address */ +#define SysTick_BASE (SCS_BASE + 0x0010UL) /*!< SysTick Base Address */ +#define NVIC_BASE (SCS_BASE + 0x0100UL) /*!< NVIC Base Address */ +#define SCB_BASE (SCS_BASE + 0x0D00UL) /*!< System Control Block Base Address */ + +#define SCnSCB ((SCnSCB_Type *) SCS_BASE ) /*!< System control Register not in SCB */ +#define SCB ((SCB_Type *) SCB_BASE ) /*!< SCB configuration struct */ +#define SysTick ((SysTick_Type *) SysTick_BASE ) /*!< SysTick configuration struct */ +#define NVIC ((NVIC_Type *) NVIC_BASE ) /*!< NVIC configuration struct */ +#define ITM ((ITM_Type *) ITM_BASE ) /*!< ITM configuration struct */ +#define DWT ((DWT_Type *) DWT_BASE ) /*!< DWT configuration struct */ +#define TPI ((TPI_Type *) TPI_BASE ) /*!< TPI configuration struct */ +#define CoreDebug ((CoreDebug_Type *) CoreDebug_BASE) /*!< Core Debug configuration struct */ + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + #define MPU_BASE (SCS_BASE + 0x0D90UL) /*!< Memory Protection Unit */ + #define MPU ((MPU_Type *) MPU_BASE ) /*!< Memory Protection Unit */ +#endif + +/*@} */ + + + +/******************************************************************************* + * Hardware Abstraction Layer + Core Function Interface contains: + - Core NVIC Functions + - Core SysTick Functions + - Core Debug Functions + - Core Register Access Functions + ******************************************************************************/ +/** + \defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference +*/ + + + +/* ########################## NVIC functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_NVICFunctions NVIC Functions + \brief Functions that manage interrupts and exceptions via the NVIC. + @{ + */ + +#ifdef CMSIS_NVIC_VIRTUAL + #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE + #define CMSIS_NVIC_VIRTUAL_HEADER_FILE "cmsis_nvic_virtual.h" + #endif + #include CMSIS_NVIC_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetPriorityGrouping __NVIC_SetPriorityGrouping + #define NVIC_GetPriorityGrouping __NVIC_GetPriorityGrouping + #define NVIC_EnableIRQ __NVIC_EnableIRQ + #define NVIC_GetEnableIRQ __NVIC_GetEnableIRQ + #define NVIC_DisableIRQ __NVIC_DisableIRQ + #define NVIC_GetPendingIRQ __NVIC_GetPendingIRQ + #define NVIC_SetPendingIRQ __NVIC_SetPendingIRQ + #define NVIC_ClearPendingIRQ __NVIC_ClearPendingIRQ + #define NVIC_GetActive __NVIC_GetActive + #define NVIC_SetPriority __NVIC_SetPriority + #define NVIC_GetPriority __NVIC_GetPriority + #define NVIC_SystemReset __NVIC_SystemReset +#endif /* CMSIS_NVIC_VIRTUAL */ + +#ifdef CMSIS_VECTAB_VIRTUAL + #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE + #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE "cmsis_vectab_virtual.h" + #endif + #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetVector __NVIC_SetVector + #define NVIC_GetVector __NVIC_GetVector +#endif /* (CMSIS_VECTAB_VIRTUAL) */ + +#define NVIC_USER_IRQ_OFFSET 16 + + +/* The following EXC_RETURN values are saved the LR on exception entry */ +#define EXC_RETURN_HANDLER (0xFFFFFFF1UL) /* return to Handler mode, uses MSP after return */ +#define EXC_RETURN_THREAD_MSP (0xFFFFFFF9UL) /* return to Thread mode, uses MSP after return */ +#define EXC_RETURN_THREAD_PSP (0xFFFFFFFDUL) /* return to Thread mode, uses PSP after return */ + + +/** + \brief Set Priority Grouping + \details Sets the priority grouping field using the required unlock sequence. + The parameter PriorityGroup is assigned to the field SCB->AIRCR [10:8] PRIGROUP field. + Only values from 0..7 are used. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Priority grouping field. + */ +__STATIC_INLINE void __NVIC_SetPriorityGrouping(uint32_t PriorityGroup) +{ + uint32_t reg_value; + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + + reg_value = SCB->AIRCR; /* read old register configuration */ + reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change */ + reg_value = (reg_value | + ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (PriorityGroupTmp << SCB_AIRCR_PRIGROUP_Pos) ); /* Insert write key and priority group */ + SCB->AIRCR = reg_value; +} + + +/** + \brief Get Priority Grouping + \details Reads the priority grouping field from the NVIC Interrupt Controller. + \return Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field). + */ +__STATIC_INLINE uint32_t __NVIC_GetPriorityGrouping(void) +{ + return ((uint32_t)((SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos)); +} + + +/** + \brief Enable Interrupt + \details Enables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + __COMPILER_BARRIER(); + NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __COMPILER_BARRIER(); + } +} + + +/** + \brief Get Interrupt Enable status + \details Returns a device specific interrupt enable status from the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt is not enabled. + \return 1 Interrupt is enabled. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Disable Interrupt + \details Disables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_DisableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __DSB(); + __ISB(); + } +} + + +/** + \brief Get Pending Interrupt + \details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not pending. + \return 1 Interrupt status is pending. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Pending Interrupt + \details Sets the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Clear Pending Interrupt + \details Clears the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Active Interrupt + \details Reads the active register in the NVIC and returns the active bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not active. + \return 1 Interrupt status is active. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetActive(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Interrupt Priority + \details Sets the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \param [in] priority Priority to set. + \note The priority cannot be set for every processor exception. + */ +__STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->IP[((uint32_t)IRQn)] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } + else + { + SCB->SHP[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } +} + + +/** + \brief Get Interrupt Priority + \details Reads the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Interrupt Priority. + Value is aligned automatically to the implemented priority bits of the microcontroller. + */ +__STATIC_INLINE uint32_t __NVIC_GetPriority(IRQn_Type IRQn) +{ + + if ((int32_t)(IRQn) >= 0) + { + return(((uint32_t)NVIC->IP[((uint32_t)IRQn)] >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return(((uint32_t)SCB->SHP[(((uint32_t)IRQn) & 0xFUL)-4UL] >> (8U - __NVIC_PRIO_BITS))); + } +} + + +/** + \brief Encode Priority + \details Encodes the priority for an interrupt with the given priority group, + preemptive priority value, and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Used priority group. + \param [in] PreemptPriority Preemptive priority value (starting from 0). + \param [in] SubPriority Subpriority value (starting from 0). + \return Encoded priority. Value can be used in the function \ref NVIC_SetPriority(). + */ +__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + return ( + ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) | + ((SubPriority & (uint32_t)((1UL << (SubPriorityBits )) - 1UL))) + ); +} + + +/** + \brief Decode Priority + \details Decodes an interrupt priority value with a given priority group to + preemptive priority value and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set. + \param [in] Priority Priority value, which can be retrieved with the function \ref NVIC_GetPriority(). + \param [in] PriorityGroup Used priority group. + \param [out] pPreemptPriority Preemptive priority value (starting from 0). + \param [out] pSubPriority Subpriority value (starting from 0). + */ +__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* const pPreemptPriority, uint32_t* const pSubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + *pPreemptPriority = (Priority >> SubPriorityBits) & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL); + *pSubPriority = (Priority ) & (uint32_t)((1UL << (SubPriorityBits )) - 1UL); +} + + +/** + \brief Set Interrupt Vector + \details Sets an interrupt vector in SRAM based interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + VTOR must been relocated to SRAM before. + \param [in] IRQn Interrupt number + \param [in] vector Address of interrupt handler function + */ +__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector) +{ + uint32_t *vectors = (uint32_t *)SCB->VTOR; + vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET] = vector; + /* ARM Application Note 321 states that the M3 does not require the architectural barrier */ +} + + +/** + \brief Get Interrupt Vector + \details Reads an interrupt vector from interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Address of interrupt handler function + */ +__STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn) +{ + uint32_t *vectors = (uint32_t *)SCB->VTOR; + return vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET]; +} + + +/** + \brief System Reset + \details Initiates a system reset request to reset the MCU. + */ +__NO_RETURN __STATIC_INLINE void __NVIC_SystemReset(void) +{ + __DSB(); /* Ensure all outstanding memory accesses included + buffered write are completed before reset */ + SCB->AIRCR = (uint32_t)((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) | + SCB_AIRCR_SYSRESETREQ_Msk ); /* Keep priority group unchanged */ + __DSB(); /* Ensure completion of memory access */ + + for(;;) /* wait until reset */ + { + __NOP(); + } +} + +/*@} end of CMSIS_Core_NVICFunctions */ + + +/* ########################## MPU functions #################################### */ + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + +#include "mpu_armv7.h" + +#endif + + +/* ########################## FPU functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_FpuFunctions FPU Functions + \brief Function that provides FPU type. + @{ + */ + +/** + \brief get FPU type + \details returns the FPU type + \returns + - \b 0: No FPU + - \b 1: Single precision FPU + - \b 2: Double + Single precision FPU + */ +__STATIC_INLINE uint32_t SCB_GetFPUType(void) +{ + return 0U; /* No FPU */ +} + + +/*@} end of CMSIS_Core_FpuFunctions */ + + + +/* ################################## SysTick function ############################################ */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SysTickFunctions SysTick Functions + \brief Functions that configure the System. + @{ + */ + +#if defined (__Vendor_SysTickConfig) && (__Vendor_SysTickConfig == 0U) + +/** + \brief System Tick Configuration + \details Initializes the System Timer and its interrupt, and starts the System Tick Timer. + Counter is in free running mode to generate periodic interrupts. + \param [in] ticks Number of ticks between two interrupts. + \return 0 Function succeeded. + \return 1 Function failed. + \note When the variable __Vendor_SysTickConfig is set to 1, then the + function SysTick_Config is not included. In this case, the file device.h + must contain a vendor-specific implementation of this function. + */ +__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks) +{ + if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) + { + return (1UL); /* Reload value impossible */ + } + + SysTick->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ + NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ + SysTick->VAL = 0UL; /* Load the SysTick Counter Value */ + SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0UL); /* Function successful */ +} + +#endif + +/*@} end of CMSIS_Core_SysTickFunctions */ + + + +/* ##################################### Debug In/Output function ########################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_core_DebugFunctions ITM Functions + \brief Functions that access the ITM debug interface. + @{ + */ + +extern volatile int32_t ITM_RxBuffer; /*!< External variable to receive characters. */ +#define ITM_RXBUFFER_EMPTY ((int32_t)0x5AA55AA5U) /*!< Value identifying \ref ITM_RxBuffer is ready for next character. */ + + +/** + \brief ITM Send Character + \details Transmits a character via the ITM channel 0, and + \li Just returns when no debugger is connected that has booked the output. + \li Is blocking when a debugger is connected, but the previous character sent has not been transmitted. + \param [in] ch Character to transmit. + \returns Character to transmit. + */ +__STATIC_INLINE uint32_t ITM_SendChar (uint32_t ch) +{ + if (((ITM->TCR & ITM_TCR_ITMENA_Msk) != 0UL) && /* ITM enabled */ + ((ITM->TER & 1UL ) != 0UL) ) /* ITM Port #0 enabled */ + { + while (ITM->PORT[0U].u32 == 0UL) + { + __NOP(); + } + ITM->PORT[0U].u8 = (uint8_t)ch; + } + return (ch); +} + + +/** + \brief ITM Receive Character + \details Inputs a character via the external variable \ref ITM_RxBuffer. + \return Received character. + \return -1 No character pending. + */ +__STATIC_INLINE int32_t ITM_ReceiveChar (void) +{ + int32_t ch = -1; /* no character available */ + + if (ITM_RxBuffer != ITM_RXBUFFER_EMPTY) + { + ch = ITM_RxBuffer; + ITM_RxBuffer = ITM_RXBUFFER_EMPTY; /* ready for next character */ + } + + return (ch); +} + + +/** + \brief ITM Check Character + \details Checks whether a character is pending for reading in the variable \ref ITM_RxBuffer. + \return 0 No character available. + \return 1 Character available. + */ +__STATIC_INLINE int32_t ITM_CheckChar (void) +{ + + if (ITM_RxBuffer == ITM_RXBUFFER_EMPTY) + { + return (0); /* no character available */ + } + else + { + return (1); /* character available */ + } +} + +/*@} end of CMSIS_core_DebugFunctions */ + + + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_CM3_H_DEPENDANT */ + +#endif /* __CMSIS_GENERIC */ diff --git a/bsp/renesas/ra8m1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm33.h b/bsp/renesas/ra8m1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm33.h new file mode 100644 index 000000000000..18a2e6fb0343 --- /dev/null +++ b/bsp/renesas/ra8m1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm33.h @@ -0,0 +1,3277 @@ +/**************************************************************************//** + * @file core_cm33.h + * @brief CMSIS Cortex-M33 Core Peripheral Access Layer Header File + * @version V5.2.3 + * @date 13. October 2021 + ******************************************************************************/ +/* + * Copyright (c) 2009-2021 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#elif defined (__clang__) + #pragma clang system_header /* treat file as system include file */ +#elif defined ( __GNUC__ ) + #pragma GCC diagnostic ignored "-Wpedantic" /* disable pedantic warning due to unnamed structs/unions */ +#endif + +#ifndef __CORE_CM33_H_GENERIC +#define __CORE_CM33_H_GENERIC + +#include + +#ifdef __cplusplus + extern "C" { +#endif + +/** + \page CMSIS_MISRA_Exceptions MISRA-C:2004 Compliance Exceptions + CMSIS violates the following MISRA-C:2004 rules: + + \li Required Rule 8.5, object/function definition in header file.
+ Function definitions in header files are used to allow 'inlining'. + + \li Required Rule 18.4, declaration of union type or object of union type: '{...}'.
+ Unions are used for effective representation of core registers. + + \li Advisory Rule 19.7, Function-like macro defined.
+ Function-like macros are used to allow more efficient code. + */ + + +/******************************************************************************* + * CMSIS definitions + ******************************************************************************/ +/** + \ingroup Cortex_M33 + @{ + */ + +#include "cmsis_version.h" + +/* CMSIS CM33 definitions */ +#define __CM33_CMSIS_VERSION_MAIN (__CM_CMSIS_VERSION_MAIN) /*!< \deprecated [31:16] CMSIS HAL main version */ +#define __CM33_CMSIS_VERSION_SUB (__CM_CMSIS_VERSION_SUB) /*!< \deprecated [15:0] CMSIS HAL sub version */ +#define __CM33_CMSIS_VERSION ((__CM33_CMSIS_VERSION_MAIN << 16U) | \ + __CM33_CMSIS_VERSION_SUB ) /*!< \deprecated CMSIS HAL version number */ + +#define __CORTEX_M (33U) /*!< Cortex-M Core */ + +/** __FPU_USED indicates whether an FPU is used or not. + For this, __FPU_PRESENT has to be checked prior to making use of FPU specific registers and functions. +*/ +#if defined ( __CC_ARM ) + #if defined (__TARGET_FPU_VFP) + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + + #if defined (__ARM_FEATURE_DSP) && (__ARM_FEATURE_DSP == 1U) + #if defined (__DSP_PRESENT) && (__DSP_PRESENT == 1U) + #define __DSP_USED 1U + #else + #error "Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)" + #define __DSP_USED 0U + #endif + #else + #define __DSP_USED 0U + #endif + +#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) + #if defined (__ARM_FP) + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #warning "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + + #if defined (__ARM_FEATURE_DSP) && (__ARM_FEATURE_DSP == 1U) + #if defined (__DSP_PRESENT) && (__DSP_PRESENT == 1U) + #define __DSP_USED 1U + #else + #error "Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)" + #define __DSP_USED 0U + #endif + #else + #define __DSP_USED 0U + #endif + +#elif defined ( __GNUC__ ) + #if defined (__VFP_FP__) && !defined(__SOFTFP__) + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + + #if defined (__ARM_FEATURE_DSP) && (__ARM_FEATURE_DSP == 1U) + #if defined (__DSP_PRESENT) && (__DSP_PRESENT == 1U) + #define __DSP_USED 1U + #else + #error "Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)" + #define __DSP_USED 0U + #endif + #else + #define __DSP_USED 0U + #endif + +#elif defined ( __ICCARM__ ) + #if defined (__ARMVFP__) + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + + #if defined (__ARM_FEATURE_DSP) && (__ARM_FEATURE_DSP == 1U) + #if defined (__DSP_PRESENT) && (__DSP_PRESENT == 1U) + #define __DSP_USED 1U + #else + #error "Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)" + #define __DSP_USED 0U + #endif + #else + #define __DSP_USED 0U + #endif + +#elif defined ( __TI_ARM__ ) + #if defined (__TI_VFP_SUPPORT__) + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined ( __TASKING__ ) + #if defined (__FPU_VFP__) + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined ( __CSMC__ ) + #if ( __CSMC__ & 0x400U) + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#endif + +#include "cmsis_compiler.h" /* CMSIS compiler specific defines */ + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_CM33_H_GENERIC */ + +#ifndef __CMSIS_GENERIC + +#ifndef __CORE_CM33_H_DEPENDANT +#define __CORE_CM33_H_DEPENDANT + +#ifdef __cplusplus + extern "C" { +#endif + +/* check device defines and use defaults */ +#if defined __CHECK_DEVICE_DEFINES + #ifndef __CM33_REV + #define __CM33_REV 0x0000U + #warning "__CM33_REV not defined in device header file; using default!" + #endif + + #ifndef __FPU_PRESENT + #define __FPU_PRESENT 0U + #warning "__FPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __MPU_PRESENT + #define __MPU_PRESENT 0U + #warning "__MPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __SAUREGION_PRESENT + #define __SAUREGION_PRESENT 0U + #warning "__SAUREGION_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __DSP_PRESENT + #define __DSP_PRESENT 0U + #warning "__DSP_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __VTOR_PRESENT + #define __VTOR_PRESENT 1U + #warning "__VTOR_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __NVIC_PRIO_BITS + #define __NVIC_PRIO_BITS 3U + #warning "__NVIC_PRIO_BITS not defined in device header file; using default!" + #endif + + #ifndef __Vendor_SysTickConfig + #define __Vendor_SysTickConfig 0U + #warning "__Vendor_SysTickConfig not defined in device header file; using default!" + #endif +#endif + +/* IO definitions (access restrictions to peripheral registers) */ +/** + \defgroup CMSIS_glob_defs CMSIS Global Defines + + IO Type Qualifiers are used + \li to specify the access to peripheral variables. + \li for automatic generation of peripheral register debug information. +*/ +#ifdef __cplusplus + #define __I volatile /*!< Defines 'read only' permissions */ +#else + #define __I volatile const /*!< Defines 'read only' permissions */ +#endif +#define __O volatile /*!< Defines 'write only' permissions */ +#define __IO volatile /*!< Defines 'read / write' permissions */ + +/* following defines should be used for structure members */ +#define __IM volatile const /*! Defines 'read only' structure member permissions */ +#define __OM volatile /*! Defines 'write only' structure member permissions */ +#define __IOM volatile /*! Defines 'read / write' structure member permissions */ + +/*@} end of group Cortex_M33 */ + + + +/******************************************************************************* + * Register Abstraction + Core Register contain: + - Core Register + - Core NVIC Register + - Core SCB Register + - Core SysTick Register + - Core Debug Register + - Core MPU Register + - Core SAU Register + - Core FPU Register + ******************************************************************************/ +/** + \defgroup CMSIS_core_register Defines and Type Definitions + \brief Type definitions and defines for Cortex-M processor based devices. +*/ + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CORE Status and Control Registers + \brief Core Register type definitions. + @{ + */ + +/** + \brief Union type to access the Application Program Status Register (APSR). + */ +typedef union +{ + struct + { + uint32_t _reserved0:16; /*!< bit: 0..15 Reserved */ + uint32_t GE:4; /*!< bit: 16..19 Greater than or Equal flags */ + uint32_t _reserved1:7; /*!< bit: 20..26 Reserved */ + uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} APSR_Type; + +/* APSR Register Definitions */ +#define APSR_N_Pos 31U /*!< APSR: N Position */ +#define APSR_N_Msk (1UL << APSR_N_Pos) /*!< APSR: N Mask */ + +#define APSR_Z_Pos 30U /*!< APSR: Z Position */ +#define APSR_Z_Msk (1UL << APSR_Z_Pos) /*!< APSR: Z Mask */ + +#define APSR_C_Pos 29U /*!< APSR: C Position */ +#define APSR_C_Msk (1UL << APSR_C_Pos) /*!< APSR: C Mask */ + +#define APSR_V_Pos 28U /*!< APSR: V Position */ +#define APSR_V_Msk (1UL << APSR_V_Pos) /*!< APSR: V Mask */ + +#define APSR_Q_Pos 27U /*!< APSR: Q Position */ +#define APSR_Q_Msk (1UL << APSR_Q_Pos) /*!< APSR: Q Mask */ + +#define APSR_GE_Pos 16U /*!< APSR: GE Position */ +#define APSR_GE_Msk (0xFUL << APSR_GE_Pos) /*!< APSR: GE Mask */ + + +/** + \brief Union type to access the Interrupt Program Status Register (IPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:23; /*!< bit: 9..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} IPSR_Type; + +/* IPSR Register Definitions */ +#define IPSR_ISR_Pos 0U /*!< IPSR: ISR Position */ +#define IPSR_ISR_Msk (0x1FFUL /*<< IPSR_ISR_Pos*/) /*!< IPSR: ISR Mask */ + + +/** + \brief Union type to access the Special-Purpose Program Status Registers (xPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:7; /*!< bit: 9..15 Reserved */ + uint32_t GE:4; /*!< bit: 16..19 Greater than or Equal flags */ + uint32_t _reserved1:4; /*!< bit: 20..23 Reserved */ + uint32_t T:1; /*!< bit: 24 Thumb bit (read 0) */ + uint32_t IT:2; /*!< bit: 25..26 saved IT state (read 0) */ + uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} xPSR_Type; + +/* xPSR Register Definitions */ +#define xPSR_N_Pos 31U /*!< xPSR: N Position */ +#define xPSR_N_Msk (1UL << xPSR_N_Pos) /*!< xPSR: N Mask */ + +#define xPSR_Z_Pos 30U /*!< xPSR: Z Position */ +#define xPSR_Z_Msk (1UL << xPSR_Z_Pos) /*!< xPSR: Z Mask */ + +#define xPSR_C_Pos 29U /*!< xPSR: C Position */ +#define xPSR_C_Msk (1UL << xPSR_C_Pos) /*!< xPSR: C Mask */ + +#define xPSR_V_Pos 28U /*!< xPSR: V Position */ +#define xPSR_V_Msk (1UL << xPSR_V_Pos) /*!< xPSR: V Mask */ + +#define xPSR_Q_Pos 27U /*!< xPSR: Q Position */ +#define xPSR_Q_Msk (1UL << xPSR_Q_Pos) /*!< xPSR: Q Mask */ + +#define xPSR_IT_Pos 25U /*!< xPSR: IT Position */ +#define xPSR_IT_Msk (3UL << xPSR_IT_Pos) /*!< xPSR: IT Mask */ + +#define xPSR_T_Pos 24U /*!< xPSR: T Position */ +#define xPSR_T_Msk (1UL << xPSR_T_Pos) /*!< xPSR: T Mask */ + +#define xPSR_GE_Pos 16U /*!< xPSR: GE Position */ +#define xPSR_GE_Msk (0xFUL << xPSR_GE_Pos) /*!< xPSR: GE Mask */ + +#define xPSR_ISR_Pos 0U /*!< xPSR: ISR Position */ +#define xPSR_ISR_Msk (0x1FFUL /*<< xPSR_ISR_Pos*/) /*!< xPSR: ISR Mask */ + + +/** + \brief Union type to access the Control Registers (CONTROL). + */ +typedef union +{ + struct + { + uint32_t nPRIV:1; /*!< bit: 0 Execution privilege in Thread mode */ + uint32_t SPSEL:1; /*!< bit: 1 Stack-pointer select */ + uint32_t FPCA:1; /*!< bit: 2 Floating-point context active */ + uint32_t SFPA:1; /*!< bit: 3 Secure floating-point active */ + uint32_t _reserved1:28; /*!< bit: 4..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} CONTROL_Type; + +/* CONTROL Register Definitions */ +#define CONTROL_SFPA_Pos 3U /*!< CONTROL: SFPA Position */ +#define CONTROL_SFPA_Msk (1UL << CONTROL_SFPA_Pos) /*!< CONTROL: SFPA Mask */ + +#define CONTROL_FPCA_Pos 2U /*!< CONTROL: FPCA Position */ +#define CONTROL_FPCA_Msk (1UL << CONTROL_FPCA_Pos) /*!< CONTROL: FPCA Mask */ + +#define CONTROL_SPSEL_Pos 1U /*!< CONTROL: SPSEL Position */ +#define CONTROL_SPSEL_Msk (1UL << CONTROL_SPSEL_Pos) /*!< CONTROL: SPSEL Mask */ + +#define CONTROL_nPRIV_Pos 0U /*!< CONTROL: nPRIV Position */ +#define CONTROL_nPRIV_Msk (1UL /*<< CONTROL_nPRIV_Pos*/) /*!< CONTROL: nPRIV Mask */ + +/*@} end of group CMSIS_CORE */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_NVIC Nested Vectored Interrupt Controller (NVIC) + \brief Type definitions for the NVIC Registers + @{ + */ + +/** + \brief Structure type to access the Nested Vectored Interrupt Controller (NVIC). + */ +typedef struct +{ + __IOM uint32_t ISER[16U]; /*!< Offset: 0x000 (R/W) Interrupt Set Enable Register */ + uint32_t RESERVED0[16U]; + __IOM uint32_t ICER[16U]; /*!< Offset: 0x080 (R/W) Interrupt Clear Enable Register */ + uint32_t RSERVED1[16U]; + __IOM uint32_t ISPR[16U]; /*!< Offset: 0x100 (R/W) Interrupt Set Pending Register */ + uint32_t RESERVED2[16U]; + __IOM uint32_t ICPR[16U]; /*!< Offset: 0x180 (R/W) Interrupt Clear Pending Register */ + uint32_t RESERVED3[16U]; + __IOM uint32_t IABR[16U]; /*!< Offset: 0x200 (R/W) Interrupt Active bit Register */ + uint32_t RESERVED4[16U]; + __IOM uint32_t ITNS[16U]; /*!< Offset: 0x280 (R/W) Interrupt Non-Secure State Register */ + uint32_t RESERVED5[16U]; + __IOM uint8_t IPR[496U]; /*!< Offset: 0x300 (R/W) Interrupt Priority Register (8Bit wide) */ + uint32_t RESERVED6[580U]; + __OM uint32_t STIR; /*!< Offset: 0xE00 ( /W) Software Trigger Interrupt Register */ +} NVIC_Type; + +/* Software Triggered Interrupt Register Definitions */ +#define NVIC_STIR_INTID_Pos 0U /*!< STIR: INTLINESNUM Position */ +#define NVIC_STIR_INTID_Msk (0x1FFUL /*<< NVIC_STIR_INTID_Pos*/) /*!< STIR: INTLINESNUM Mask */ + +/*@} end of group CMSIS_NVIC */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SCB System Control Block (SCB) + \brief Type definitions for the System Control Block Registers + @{ + */ + +/** + \brief Structure type to access the System Control Block (SCB). + */ +typedef struct +{ + __IM uint32_t CPUID; /*!< Offset: 0x000 (R/ ) CPUID Base Register */ + __IOM uint32_t ICSR; /*!< Offset: 0x004 (R/W) Interrupt Control and State Register */ + __IOM uint32_t VTOR; /*!< Offset: 0x008 (R/W) Vector Table Offset Register */ + __IOM uint32_t AIRCR; /*!< Offset: 0x00C (R/W) Application Interrupt and Reset Control Register */ + __IOM uint32_t SCR; /*!< Offset: 0x010 (R/W) System Control Register */ + __IOM uint32_t CCR; /*!< Offset: 0x014 (R/W) Configuration Control Register */ + __IOM uint8_t SHPR[12U]; /*!< Offset: 0x018 (R/W) System Handlers Priority Registers (4-7, 8-11, 12-15) */ + __IOM uint32_t SHCSR; /*!< Offset: 0x024 (R/W) System Handler Control and State Register */ + __IOM uint32_t CFSR; /*!< Offset: 0x028 (R/W) Configurable Fault Status Register */ + __IOM uint32_t HFSR; /*!< Offset: 0x02C (R/W) HardFault Status Register */ + __IOM uint32_t DFSR; /*!< Offset: 0x030 (R/W) Debug Fault Status Register */ + __IOM uint32_t MMFAR; /*!< Offset: 0x034 (R/W) MemManage Fault Address Register */ + __IOM uint32_t BFAR; /*!< Offset: 0x038 (R/W) BusFault Address Register */ + __IOM uint32_t AFSR; /*!< Offset: 0x03C (R/W) Auxiliary Fault Status Register */ + __IM uint32_t ID_PFR[2U]; /*!< Offset: 0x040 (R/ ) Processor Feature Register */ + __IM uint32_t ID_DFR; /*!< Offset: 0x048 (R/ ) Debug Feature Register */ + __IM uint32_t ID_AFR; /*!< Offset: 0x04C (R/ ) Auxiliary Feature Register */ + __IM uint32_t ID_MMFR[4U]; /*!< Offset: 0x050 (R/ ) Memory Model Feature Register */ + __IM uint32_t ID_ISAR[6U]; /*!< Offset: 0x060 (R/ ) Instruction Set Attributes Register */ + __IM uint32_t CLIDR; /*!< Offset: 0x078 (R/ ) Cache Level ID register */ + __IM uint32_t CTR; /*!< Offset: 0x07C (R/ ) Cache Type register */ + __IM uint32_t CCSIDR; /*!< Offset: 0x080 (R/ ) Cache Size ID Register */ + __IOM uint32_t CSSELR; /*!< Offset: 0x084 (R/W) Cache Size Selection Register */ + __IOM uint32_t CPACR; /*!< Offset: 0x088 (R/W) Coprocessor Access Control Register */ + __IOM uint32_t NSACR; /*!< Offset: 0x08C (R/W) Non-Secure Access Control Register */ + uint32_t RESERVED7[21U]; + __IOM uint32_t SFSR; /*!< Offset: 0x0E4 (R/W) Secure Fault Status Register */ + __IOM uint32_t SFAR; /*!< Offset: 0x0E8 (R/W) Secure Fault Address Register */ + uint32_t RESERVED3[69U]; + __OM uint32_t STIR; /*!< Offset: 0x200 ( /W) Software Triggered Interrupt Register */ + uint32_t RESERVED4[15U]; + __IM uint32_t MVFR0; /*!< Offset: 0x240 (R/ ) Media and VFP Feature Register 0 */ + __IM uint32_t MVFR1; /*!< Offset: 0x244 (R/ ) Media and VFP Feature Register 1 */ + __IM uint32_t MVFR2; /*!< Offset: 0x248 (R/ ) Media and VFP Feature Register 2 */ + uint32_t RESERVED5[1U]; + __OM uint32_t ICIALLU; /*!< Offset: 0x250 ( /W) I-Cache Invalidate All to PoU */ + uint32_t RESERVED6[1U]; + __OM uint32_t ICIMVAU; /*!< Offset: 0x258 ( /W) I-Cache Invalidate by MVA to PoU */ + __OM uint32_t DCIMVAC; /*!< Offset: 0x25C ( /W) D-Cache Invalidate by MVA to PoC */ + __OM uint32_t DCISW; /*!< Offset: 0x260 ( /W) D-Cache Invalidate by Set-way */ + __OM uint32_t DCCMVAU; /*!< Offset: 0x264 ( /W) D-Cache Clean by MVA to PoU */ + __OM uint32_t DCCMVAC; /*!< Offset: 0x268 ( /W) D-Cache Clean by MVA to PoC */ + __OM uint32_t DCCSW; /*!< Offset: 0x26C ( /W) D-Cache Clean by Set-way */ + __OM uint32_t DCCIMVAC; /*!< Offset: 0x270 ( /W) D-Cache Clean and Invalidate by MVA to PoC */ + __OM uint32_t DCCISW; /*!< Offset: 0x274 ( /W) D-Cache Clean and Invalidate by Set-way */ + __OM uint32_t BPIALL; /*!< Offset: 0x278 ( /W) Branch Predictor Invalidate All */ +} SCB_Type; + +/* SCB CPUID Register Definitions */ +#define SCB_CPUID_IMPLEMENTER_Pos 24U /*!< SCB CPUID: IMPLEMENTER Position */ +#define SCB_CPUID_IMPLEMENTER_Msk (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos) /*!< SCB CPUID: IMPLEMENTER Mask */ + +#define SCB_CPUID_VARIANT_Pos 20U /*!< SCB CPUID: VARIANT Position */ +#define SCB_CPUID_VARIANT_Msk (0xFUL << SCB_CPUID_VARIANT_Pos) /*!< SCB CPUID: VARIANT Mask */ + +#define SCB_CPUID_ARCHITECTURE_Pos 16U /*!< SCB CPUID: ARCHITECTURE Position */ +#define SCB_CPUID_ARCHITECTURE_Msk (0xFUL << SCB_CPUID_ARCHITECTURE_Pos) /*!< SCB CPUID: ARCHITECTURE Mask */ + +#define SCB_CPUID_PARTNO_Pos 4U /*!< SCB CPUID: PARTNO Position */ +#define SCB_CPUID_PARTNO_Msk (0xFFFUL << SCB_CPUID_PARTNO_Pos) /*!< SCB CPUID: PARTNO Mask */ + +#define SCB_CPUID_REVISION_Pos 0U /*!< SCB CPUID: REVISION Position */ +#define SCB_CPUID_REVISION_Msk (0xFUL /*<< SCB_CPUID_REVISION_Pos*/) /*!< SCB CPUID: REVISION Mask */ + +/* SCB Interrupt Control State Register Definitions */ +#define SCB_ICSR_PENDNMISET_Pos 31U /*!< SCB ICSR: PENDNMISET Position */ +#define SCB_ICSR_PENDNMISET_Msk (1UL << SCB_ICSR_PENDNMISET_Pos) /*!< SCB ICSR: PENDNMISET Mask */ + +#define SCB_ICSR_NMIPENDSET_Pos SCB_ICSR_PENDNMISET_Pos /*!< SCB ICSR: NMIPENDSET Position, backward compatibility */ +#define SCB_ICSR_NMIPENDSET_Msk SCB_ICSR_PENDNMISET_Msk /*!< SCB ICSR: NMIPENDSET Mask, backward compatibility */ + +#define SCB_ICSR_PENDNMICLR_Pos 30U /*!< SCB ICSR: PENDNMICLR Position */ +#define SCB_ICSR_PENDNMICLR_Msk (1UL << SCB_ICSR_PENDNMICLR_Pos) /*!< SCB ICSR: PENDNMICLR Mask */ + +#define SCB_ICSR_PENDSVSET_Pos 28U /*!< SCB ICSR: PENDSVSET Position */ +#define SCB_ICSR_PENDSVSET_Msk (1UL << SCB_ICSR_PENDSVSET_Pos) /*!< SCB ICSR: PENDSVSET Mask */ + +#define SCB_ICSR_PENDSVCLR_Pos 27U /*!< SCB ICSR: PENDSVCLR Position */ +#define SCB_ICSR_PENDSVCLR_Msk (1UL << SCB_ICSR_PENDSVCLR_Pos) /*!< SCB ICSR: PENDSVCLR Mask */ + +#define SCB_ICSR_PENDSTSET_Pos 26U /*!< SCB ICSR: PENDSTSET Position */ +#define SCB_ICSR_PENDSTSET_Msk (1UL << SCB_ICSR_PENDSTSET_Pos) /*!< SCB ICSR: PENDSTSET Mask */ + +#define SCB_ICSR_PENDSTCLR_Pos 25U /*!< SCB ICSR: PENDSTCLR Position */ +#define SCB_ICSR_PENDSTCLR_Msk (1UL << SCB_ICSR_PENDSTCLR_Pos) /*!< SCB ICSR: PENDSTCLR Mask */ + +#define SCB_ICSR_STTNS_Pos 24U /*!< SCB ICSR: STTNS Position (Security Extension) */ +#define SCB_ICSR_STTNS_Msk (1UL << SCB_ICSR_STTNS_Pos) /*!< SCB ICSR: STTNS Mask (Security Extension) */ + +#define SCB_ICSR_ISRPREEMPT_Pos 23U /*!< SCB ICSR: ISRPREEMPT Position */ +#define SCB_ICSR_ISRPREEMPT_Msk (1UL << SCB_ICSR_ISRPREEMPT_Pos) /*!< SCB ICSR: ISRPREEMPT Mask */ + +#define SCB_ICSR_ISRPENDING_Pos 22U /*!< SCB ICSR: ISRPENDING Position */ +#define SCB_ICSR_ISRPENDING_Msk (1UL << SCB_ICSR_ISRPENDING_Pos) /*!< SCB ICSR: ISRPENDING Mask */ + +#define SCB_ICSR_VECTPENDING_Pos 12U /*!< SCB ICSR: VECTPENDING Position */ +#define SCB_ICSR_VECTPENDING_Msk (0x1FFUL << SCB_ICSR_VECTPENDING_Pos) /*!< SCB ICSR: VECTPENDING Mask */ + +#define SCB_ICSR_RETTOBASE_Pos 11U /*!< SCB ICSR: RETTOBASE Position */ +#define SCB_ICSR_RETTOBASE_Msk (1UL << SCB_ICSR_RETTOBASE_Pos) /*!< SCB ICSR: RETTOBASE Mask */ + +#define SCB_ICSR_VECTACTIVE_Pos 0U /*!< SCB ICSR: VECTACTIVE Position */ +#define SCB_ICSR_VECTACTIVE_Msk (0x1FFUL /*<< SCB_ICSR_VECTACTIVE_Pos*/) /*!< SCB ICSR: VECTACTIVE Mask */ + +/* SCB Vector Table Offset Register Definitions */ +#define SCB_VTOR_TBLOFF_Pos 7U /*!< SCB VTOR: TBLOFF Position */ +#define SCB_VTOR_TBLOFF_Msk (0x1FFFFFFUL << SCB_VTOR_TBLOFF_Pos) /*!< SCB VTOR: TBLOFF Mask */ + +/* SCB Application Interrupt and Reset Control Register Definitions */ +#define SCB_AIRCR_VECTKEY_Pos 16U /*!< SCB AIRCR: VECTKEY Position */ +#define SCB_AIRCR_VECTKEY_Msk (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos) /*!< SCB AIRCR: VECTKEY Mask */ + +#define SCB_AIRCR_VECTKEYSTAT_Pos 16U /*!< SCB AIRCR: VECTKEYSTAT Position */ +#define SCB_AIRCR_VECTKEYSTAT_Msk (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos) /*!< SCB AIRCR: VECTKEYSTAT Mask */ + +#define SCB_AIRCR_ENDIANESS_Pos 15U /*!< SCB AIRCR: ENDIANESS Position */ +#define SCB_AIRCR_ENDIANESS_Msk (1UL << SCB_AIRCR_ENDIANESS_Pos) /*!< SCB AIRCR: ENDIANESS Mask */ + +#define SCB_AIRCR_PRIS_Pos 14U /*!< SCB AIRCR: PRIS Position */ +#define SCB_AIRCR_PRIS_Msk (1UL << SCB_AIRCR_PRIS_Pos) /*!< SCB AIRCR: PRIS Mask */ + +#define SCB_AIRCR_BFHFNMINS_Pos 13U /*!< SCB AIRCR: BFHFNMINS Position */ +#define SCB_AIRCR_BFHFNMINS_Msk (1UL << SCB_AIRCR_BFHFNMINS_Pos) /*!< SCB AIRCR: BFHFNMINS Mask */ + +#define SCB_AIRCR_PRIGROUP_Pos 8U /*!< SCB AIRCR: PRIGROUP Position */ +#define SCB_AIRCR_PRIGROUP_Msk (7UL << SCB_AIRCR_PRIGROUP_Pos) /*!< SCB AIRCR: PRIGROUP Mask */ + +#define SCB_AIRCR_SYSRESETREQS_Pos 3U /*!< SCB AIRCR: SYSRESETREQS Position */ +#define SCB_AIRCR_SYSRESETREQS_Msk (1UL << SCB_AIRCR_SYSRESETREQS_Pos) /*!< SCB AIRCR: SYSRESETREQS Mask */ + +#define SCB_AIRCR_SYSRESETREQ_Pos 2U /*!< SCB AIRCR: SYSRESETREQ Position */ +#define SCB_AIRCR_SYSRESETREQ_Msk (1UL << SCB_AIRCR_SYSRESETREQ_Pos) /*!< SCB AIRCR: SYSRESETREQ Mask */ + +#define SCB_AIRCR_VECTCLRACTIVE_Pos 1U /*!< SCB AIRCR: VECTCLRACTIVE Position */ +#define SCB_AIRCR_VECTCLRACTIVE_Msk (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos) /*!< SCB AIRCR: VECTCLRACTIVE Mask */ + +/* SCB System Control Register Definitions */ +#define SCB_SCR_SEVONPEND_Pos 4U /*!< SCB SCR: SEVONPEND Position */ +#define SCB_SCR_SEVONPEND_Msk (1UL << SCB_SCR_SEVONPEND_Pos) /*!< SCB SCR: SEVONPEND Mask */ + +#define SCB_SCR_SLEEPDEEPS_Pos 3U /*!< SCB SCR: SLEEPDEEPS Position */ +#define SCB_SCR_SLEEPDEEPS_Msk (1UL << SCB_SCR_SLEEPDEEPS_Pos) /*!< SCB SCR: SLEEPDEEPS Mask */ + +#define SCB_SCR_SLEEPDEEP_Pos 2U /*!< SCB SCR: SLEEPDEEP Position */ +#define SCB_SCR_SLEEPDEEP_Msk (1UL << SCB_SCR_SLEEPDEEP_Pos) /*!< SCB SCR: SLEEPDEEP Mask */ + +#define SCB_SCR_SLEEPONEXIT_Pos 1U /*!< SCB SCR: SLEEPONEXIT Position */ +#define SCB_SCR_SLEEPONEXIT_Msk (1UL << SCB_SCR_SLEEPONEXIT_Pos) /*!< SCB SCR: SLEEPONEXIT Mask */ + +/* SCB Configuration Control Register Definitions */ +#define SCB_CCR_BP_Pos 18U /*!< SCB CCR: BP Position */ +#define SCB_CCR_BP_Msk (1UL << SCB_CCR_BP_Pos) /*!< SCB CCR: BP Mask */ + +#define SCB_CCR_IC_Pos 17U /*!< SCB CCR: IC Position */ +#define SCB_CCR_IC_Msk (1UL << SCB_CCR_IC_Pos) /*!< SCB CCR: IC Mask */ + +#define SCB_CCR_DC_Pos 16U /*!< SCB CCR: DC Position */ +#define SCB_CCR_DC_Msk (1UL << SCB_CCR_DC_Pos) /*!< SCB CCR: DC Mask */ + +#define SCB_CCR_STKOFHFNMIGN_Pos 10U /*!< SCB CCR: STKOFHFNMIGN Position */ +#define SCB_CCR_STKOFHFNMIGN_Msk (1UL << SCB_CCR_STKOFHFNMIGN_Pos) /*!< SCB CCR: STKOFHFNMIGN Mask */ + +#define SCB_CCR_BFHFNMIGN_Pos 8U /*!< SCB CCR: BFHFNMIGN Position */ +#define SCB_CCR_BFHFNMIGN_Msk (1UL << SCB_CCR_BFHFNMIGN_Pos) /*!< SCB CCR: BFHFNMIGN Mask */ + +#define SCB_CCR_DIV_0_TRP_Pos 4U /*!< SCB CCR: DIV_0_TRP Position */ +#define SCB_CCR_DIV_0_TRP_Msk (1UL << SCB_CCR_DIV_0_TRP_Pos) /*!< SCB CCR: DIV_0_TRP Mask */ + +#define SCB_CCR_UNALIGN_TRP_Pos 3U /*!< SCB CCR: UNALIGN_TRP Position */ +#define SCB_CCR_UNALIGN_TRP_Msk (1UL << SCB_CCR_UNALIGN_TRP_Pos) /*!< SCB CCR: UNALIGN_TRP Mask */ + +#define SCB_CCR_USERSETMPEND_Pos 1U /*!< SCB CCR: USERSETMPEND Position */ +#define SCB_CCR_USERSETMPEND_Msk (1UL << SCB_CCR_USERSETMPEND_Pos) /*!< SCB CCR: USERSETMPEND Mask */ + +/* SCB System Handler Control and State Register Definitions */ +#define SCB_SHCSR_HARDFAULTPENDED_Pos 21U /*!< SCB SHCSR: HARDFAULTPENDED Position */ +#define SCB_SHCSR_HARDFAULTPENDED_Msk (1UL << SCB_SHCSR_HARDFAULTPENDED_Pos) /*!< SCB SHCSR: HARDFAULTPENDED Mask */ + +#define SCB_SHCSR_SECUREFAULTPENDED_Pos 20U /*!< SCB SHCSR: SECUREFAULTPENDED Position */ +#define SCB_SHCSR_SECUREFAULTPENDED_Msk (1UL << SCB_SHCSR_SECUREFAULTPENDED_Pos) /*!< SCB SHCSR: SECUREFAULTPENDED Mask */ + +#define SCB_SHCSR_SECUREFAULTENA_Pos 19U /*!< SCB SHCSR: SECUREFAULTENA Position */ +#define SCB_SHCSR_SECUREFAULTENA_Msk (1UL << SCB_SHCSR_SECUREFAULTENA_Pos) /*!< SCB SHCSR: SECUREFAULTENA Mask */ + +#define SCB_SHCSR_USGFAULTENA_Pos 18U /*!< SCB SHCSR: USGFAULTENA Position */ +#define SCB_SHCSR_USGFAULTENA_Msk (1UL << SCB_SHCSR_USGFAULTENA_Pos) /*!< SCB SHCSR: USGFAULTENA Mask */ + +#define SCB_SHCSR_BUSFAULTENA_Pos 17U /*!< SCB SHCSR: BUSFAULTENA Position */ +#define SCB_SHCSR_BUSFAULTENA_Msk (1UL << SCB_SHCSR_BUSFAULTENA_Pos) /*!< SCB SHCSR: BUSFAULTENA Mask */ + +#define SCB_SHCSR_MEMFAULTENA_Pos 16U /*!< SCB SHCSR: MEMFAULTENA Position */ +#define SCB_SHCSR_MEMFAULTENA_Msk (1UL << SCB_SHCSR_MEMFAULTENA_Pos) /*!< SCB SHCSR: MEMFAULTENA Mask */ + +#define SCB_SHCSR_SVCALLPENDED_Pos 15U /*!< SCB SHCSR: SVCALLPENDED Position */ +#define SCB_SHCSR_SVCALLPENDED_Msk (1UL << SCB_SHCSR_SVCALLPENDED_Pos) /*!< SCB SHCSR: SVCALLPENDED Mask */ + +#define SCB_SHCSR_BUSFAULTPENDED_Pos 14U /*!< SCB SHCSR: BUSFAULTPENDED Position */ +#define SCB_SHCSR_BUSFAULTPENDED_Msk (1UL << SCB_SHCSR_BUSFAULTPENDED_Pos) /*!< SCB SHCSR: BUSFAULTPENDED Mask */ + +#define SCB_SHCSR_MEMFAULTPENDED_Pos 13U /*!< SCB SHCSR: MEMFAULTPENDED Position */ +#define SCB_SHCSR_MEMFAULTPENDED_Msk (1UL << SCB_SHCSR_MEMFAULTPENDED_Pos) /*!< SCB SHCSR: MEMFAULTPENDED Mask */ + +#define SCB_SHCSR_USGFAULTPENDED_Pos 12U /*!< SCB SHCSR: USGFAULTPENDED Position */ +#define SCB_SHCSR_USGFAULTPENDED_Msk (1UL << SCB_SHCSR_USGFAULTPENDED_Pos) /*!< SCB SHCSR: USGFAULTPENDED Mask */ + +#define SCB_SHCSR_SYSTICKACT_Pos 11U /*!< SCB SHCSR: SYSTICKACT Position */ +#define SCB_SHCSR_SYSTICKACT_Msk (1UL << SCB_SHCSR_SYSTICKACT_Pos) /*!< SCB SHCSR: SYSTICKACT Mask */ + +#define SCB_SHCSR_PENDSVACT_Pos 10U /*!< SCB SHCSR: PENDSVACT Position */ +#define SCB_SHCSR_PENDSVACT_Msk (1UL << SCB_SHCSR_PENDSVACT_Pos) /*!< SCB SHCSR: PENDSVACT Mask */ + +#define SCB_SHCSR_MONITORACT_Pos 8U /*!< SCB SHCSR: MONITORACT Position */ +#define SCB_SHCSR_MONITORACT_Msk (1UL << SCB_SHCSR_MONITORACT_Pos) /*!< SCB SHCSR: MONITORACT Mask */ + +#define SCB_SHCSR_SVCALLACT_Pos 7U /*!< SCB SHCSR: SVCALLACT Position */ +#define SCB_SHCSR_SVCALLACT_Msk (1UL << SCB_SHCSR_SVCALLACT_Pos) /*!< SCB SHCSR: SVCALLACT Mask */ + +#define SCB_SHCSR_NMIACT_Pos 5U /*!< SCB SHCSR: NMIACT Position */ +#define SCB_SHCSR_NMIACT_Msk (1UL << SCB_SHCSR_NMIACT_Pos) /*!< SCB SHCSR: NMIACT Mask */ + +#define SCB_SHCSR_SECUREFAULTACT_Pos 4U /*!< SCB SHCSR: SECUREFAULTACT Position */ +#define SCB_SHCSR_SECUREFAULTACT_Msk (1UL << SCB_SHCSR_SECUREFAULTACT_Pos) /*!< SCB SHCSR: SECUREFAULTACT Mask */ + +#define SCB_SHCSR_USGFAULTACT_Pos 3U /*!< SCB SHCSR: USGFAULTACT Position */ +#define SCB_SHCSR_USGFAULTACT_Msk (1UL << SCB_SHCSR_USGFAULTACT_Pos) /*!< SCB SHCSR: USGFAULTACT Mask */ + +#define SCB_SHCSR_HARDFAULTACT_Pos 2U /*!< SCB SHCSR: HARDFAULTACT Position */ +#define SCB_SHCSR_HARDFAULTACT_Msk (1UL << SCB_SHCSR_HARDFAULTACT_Pos) /*!< SCB SHCSR: HARDFAULTACT Mask */ + +#define SCB_SHCSR_BUSFAULTACT_Pos 1U /*!< SCB SHCSR: BUSFAULTACT Position */ +#define SCB_SHCSR_BUSFAULTACT_Msk (1UL << SCB_SHCSR_BUSFAULTACT_Pos) /*!< SCB SHCSR: BUSFAULTACT Mask */ + +#define SCB_SHCSR_MEMFAULTACT_Pos 0U /*!< SCB SHCSR: MEMFAULTACT Position */ +#define SCB_SHCSR_MEMFAULTACT_Msk (1UL /*<< SCB_SHCSR_MEMFAULTACT_Pos*/) /*!< SCB SHCSR: MEMFAULTACT Mask */ + +/* SCB Configurable Fault Status Register Definitions */ +#define SCB_CFSR_USGFAULTSR_Pos 16U /*!< SCB CFSR: Usage Fault Status Register Position */ +#define SCB_CFSR_USGFAULTSR_Msk (0xFFFFUL << SCB_CFSR_USGFAULTSR_Pos) /*!< SCB CFSR: Usage Fault Status Register Mask */ + +#define SCB_CFSR_BUSFAULTSR_Pos 8U /*!< SCB CFSR: Bus Fault Status Register Position */ +#define SCB_CFSR_BUSFAULTSR_Msk (0xFFUL << SCB_CFSR_BUSFAULTSR_Pos) /*!< SCB CFSR: Bus Fault Status Register Mask */ + +#define SCB_CFSR_MEMFAULTSR_Pos 0U /*!< SCB CFSR: Memory Manage Fault Status Register Position */ +#define SCB_CFSR_MEMFAULTSR_Msk (0xFFUL /*<< SCB_CFSR_MEMFAULTSR_Pos*/) /*!< SCB CFSR: Memory Manage Fault Status Register Mask */ + +/* MemManage Fault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_MMARVALID_Pos (SCB_CFSR_MEMFAULTSR_Pos + 7U) /*!< SCB CFSR (MMFSR): MMARVALID Position */ +#define SCB_CFSR_MMARVALID_Msk (1UL << SCB_CFSR_MMARVALID_Pos) /*!< SCB CFSR (MMFSR): MMARVALID Mask */ + +#define SCB_CFSR_MLSPERR_Pos (SCB_CFSR_MEMFAULTSR_Pos + 5U) /*!< SCB CFSR (MMFSR): MLSPERR Position */ +#define SCB_CFSR_MLSPERR_Msk (1UL << SCB_CFSR_MLSPERR_Pos) /*!< SCB CFSR (MMFSR): MLSPERR Mask */ + +#define SCB_CFSR_MSTKERR_Pos (SCB_CFSR_MEMFAULTSR_Pos + 4U) /*!< SCB CFSR (MMFSR): MSTKERR Position */ +#define SCB_CFSR_MSTKERR_Msk (1UL << SCB_CFSR_MSTKERR_Pos) /*!< SCB CFSR (MMFSR): MSTKERR Mask */ + +#define SCB_CFSR_MUNSTKERR_Pos (SCB_CFSR_MEMFAULTSR_Pos + 3U) /*!< SCB CFSR (MMFSR): MUNSTKERR Position */ +#define SCB_CFSR_MUNSTKERR_Msk (1UL << SCB_CFSR_MUNSTKERR_Pos) /*!< SCB CFSR (MMFSR): MUNSTKERR Mask */ + +#define SCB_CFSR_DACCVIOL_Pos (SCB_CFSR_MEMFAULTSR_Pos + 1U) /*!< SCB CFSR (MMFSR): DACCVIOL Position */ +#define SCB_CFSR_DACCVIOL_Msk (1UL << SCB_CFSR_DACCVIOL_Pos) /*!< SCB CFSR (MMFSR): DACCVIOL Mask */ + +#define SCB_CFSR_IACCVIOL_Pos (SCB_CFSR_MEMFAULTSR_Pos + 0U) /*!< SCB CFSR (MMFSR): IACCVIOL Position */ +#define SCB_CFSR_IACCVIOL_Msk (1UL /*<< SCB_CFSR_IACCVIOL_Pos*/) /*!< SCB CFSR (MMFSR): IACCVIOL Mask */ + +/* BusFault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_BFARVALID_Pos (SCB_CFSR_BUSFAULTSR_Pos + 7U) /*!< SCB CFSR (BFSR): BFARVALID Position */ +#define SCB_CFSR_BFARVALID_Msk (1UL << SCB_CFSR_BFARVALID_Pos) /*!< SCB CFSR (BFSR): BFARVALID Mask */ + +#define SCB_CFSR_LSPERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 5U) /*!< SCB CFSR (BFSR): LSPERR Position */ +#define SCB_CFSR_LSPERR_Msk (1UL << SCB_CFSR_LSPERR_Pos) /*!< SCB CFSR (BFSR): LSPERR Mask */ + +#define SCB_CFSR_STKERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 4U) /*!< SCB CFSR (BFSR): STKERR Position */ +#define SCB_CFSR_STKERR_Msk (1UL << SCB_CFSR_STKERR_Pos) /*!< SCB CFSR (BFSR): STKERR Mask */ + +#define SCB_CFSR_UNSTKERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 3U) /*!< SCB CFSR (BFSR): UNSTKERR Position */ +#define SCB_CFSR_UNSTKERR_Msk (1UL << SCB_CFSR_UNSTKERR_Pos) /*!< SCB CFSR (BFSR): UNSTKERR Mask */ + +#define SCB_CFSR_IMPRECISERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 2U) /*!< SCB CFSR (BFSR): IMPRECISERR Position */ +#define SCB_CFSR_IMPRECISERR_Msk (1UL << SCB_CFSR_IMPRECISERR_Pos) /*!< SCB CFSR (BFSR): IMPRECISERR Mask */ + +#define SCB_CFSR_PRECISERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 1U) /*!< SCB CFSR (BFSR): PRECISERR Position */ +#define SCB_CFSR_PRECISERR_Msk (1UL << SCB_CFSR_PRECISERR_Pos) /*!< SCB CFSR (BFSR): PRECISERR Mask */ + +#define SCB_CFSR_IBUSERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 0U) /*!< SCB CFSR (BFSR): IBUSERR Position */ +#define SCB_CFSR_IBUSERR_Msk (1UL << SCB_CFSR_IBUSERR_Pos) /*!< SCB CFSR (BFSR): IBUSERR Mask */ + +/* UsageFault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_DIVBYZERO_Pos (SCB_CFSR_USGFAULTSR_Pos + 9U) /*!< SCB CFSR (UFSR): DIVBYZERO Position */ +#define SCB_CFSR_DIVBYZERO_Msk (1UL << SCB_CFSR_DIVBYZERO_Pos) /*!< SCB CFSR (UFSR): DIVBYZERO Mask */ + +#define SCB_CFSR_UNALIGNED_Pos (SCB_CFSR_USGFAULTSR_Pos + 8U) /*!< SCB CFSR (UFSR): UNALIGNED Position */ +#define SCB_CFSR_UNALIGNED_Msk (1UL << SCB_CFSR_UNALIGNED_Pos) /*!< SCB CFSR (UFSR): UNALIGNED Mask */ + +#define SCB_CFSR_STKOF_Pos (SCB_CFSR_USGFAULTSR_Pos + 4U) /*!< SCB CFSR (UFSR): STKOF Position */ +#define SCB_CFSR_STKOF_Msk (1UL << SCB_CFSR_STKOF_Pos) /*!< SCB CFSR (UFSR): STKOF Mask */ + +#define SCB_CFSR_NOCP_Pos (SCB_CFSR_USGFAULTSR_Pos + 3U) /*!< SCB CFSR (UFSR): NOCP Position */ +#define SCB_CFSR_NOCP_Msk (1UL << SCB_CFSR_NOCP_Pos) /*!< SCB CFSR (UFSR): NOCP Mask */ + +#define SCB_CFSR_INVPC_Pos (SCB_CFSR_USGFAULTSR_Pos + 2U) /*!< SCB CFSR (UFSR): INVPC Position */ +#define SCB_CFSR_INVPC_Msk (1UL << SCB_CFSR_INVPC_Pos) /*!< SCB CFSR (UFSR): INVPC Mask */ + +#define SCB_CFSR_INVSTATE_Pos (SCB_CFSR_USGFAULTSR_Pos + 1U) /*!< SCB CFSR (UFSR): INVSTATE Position */ +#define SCB_CFSR_INVSTATE_Msk (1UL << SCB_CFSR_INVSTATE_Pos) /*!< SCB CFSR (UFSR): INVSTATE Mask */ + +#define SCB_CFSR_UNDEFINSTR_Pos (SCB_CFSR_USGFAULTSR_Pos + 0U) /*!< SCB CFSR (UFSR): UNDEFINSTR Position */ +#define SCB_CFSR_UNDEFINSTR_Msk (1UL << SCB_CFSR_UNDEFINSTR_Pos) /*!< SCB CFSR (UFSR): UNDEFINSTR Mask */ + +/* SCB Hard Fault Status Register Definitions */ +#define SCB_HFSR_DEBUGEVT_Pos 31U /*!< SCB HFSR: DEBUGEVT Position */ +#define SCB_HFSR_DEBUGEVT_Msk (1UL << SCB_HFSR_DEBUGEVT_Pos) /*!< SCB HFSR: DEBUGEVT Mask */ + +#define SCB_HFSR_FORCED_Pos 30U /*!< SCB HFSR: FORCED Position */ +#define SCB_HFSR_FORCED_Msk (1UL << SCB_HFSR_FORCED_Pos) /*!< SCB HFSR: FORCED Mask */ + +#define SCB_HFSR_VECTTBL_Pos 1U /*!< SCB HFSR: VECTTBL Position */ +#define SCB_HFSR_VECTTBL_Msk (1UL << SCB_HFSR_VECTTBL_Pos) /*!< SCB HFSR: VECTTBL Mask */ + +/* SCB Debug Fault Status Register Definitions */ +#define SCB_DFSR_EXTERNAL_Pos 4U /*!< SCB DFSR: EXTERNAL Position */ +#define SCB_DFSR_EXTERNAL_Msk (1UL << SCB_DFSR_EXTERNAL_Pos) /*!< SCB DFSR: EXTERNAL Mask */ + +#define SCB_DFSR_VCATCH_Pos 3U /*!< SCB DFSR: VCATCH Position */ +#define SCB_DFSR_VCATCH_Msk (1UL << SCB_DFSR_VCATCH_Pos) /*!< SCB DFSR: VCATCH Mask */ + +#define SCB_DFSR_DWTTRAP_Pos 2U /*!< SCB DFSR: DWTTRAP Position */ +#define SCB_DFSR_DWTTRAP_Msk (1UL << SCB_DFSR_DWTTRAP_Pos) /*!< SCB DFSR: DWTTRAP Mask */ + +#define SCB_DFSR_BKPT_Pos 1U /*!< SCB DFSR: BKPT Position */ +#define SCB_DFSR_BKPT_Msk (1UL << SCB_DFSR_BKPT_Pos) /*!< SCB DFSR: BKPT Mask */ + +#define SCB_DFSR_HALTED_Pos 0U /*!< SCB DFSR: HALTED Position */ +#define SCB_DFSR_HALTED_Msk (1UL /*<< SCB_DFSR_HALTED_Pos*/) /*!< SCB DFSR: HALTED Mask */ + +/* SCB Non-Secure Access Control Register Definitions */ +#define SCB_NSACR_CP11_Pos 11U /*!< SCB NSACR: CP11 Position */ +#define SCB_NSACR_CP11_Msk (1UL << SCB_NSACR_CP11_Pos) /*!< SCB NSACR: CP11 Mask */ + +#define SCB_NSACR_CP10_Pos 10U /*!< SCB NSACR: CP10 Position */ +#define SCB_NSACR_CP10_Msk (1UL << SCB_NSACR_CP10_Pos) /*!< SCB NSACR: CP10 Mask */ + +#define SCB_NSACR_CPn_Pos 0U /*!< SCB NSACR: CPn Position */ +#define SCB_NSACR_CPn_Msk (1UL /*<< SCB_NSACR_CPn_Pos*/) /*!< SCB NSACR: CPn Mask */ + +/* SCB Cache Level ID Register Definitions */ +#define SCB_CLIDR_LOUU_Pos 27U /*!< SCB CLIDR: LoUU Position */ +#define SCB_CLIDR_LOUU_Msk (7UL << SCB_CLIDR_LOUU_Pos) /*!< SCB CLIDR: LoUU Mask */ + +#define SCB_CLIDR_LOC_Pos 24U /*!< SCB CLIDR: LoC Position */ +#define SCB_CLIDR_LOC_Msk (7UL << SCB_CLIDR_LOC_Pos) /*!< SCB CLIDR: LoC Mask */ + +/* SCB Cache Type Register Definitions */ +#define SCB_CTR_FORMAT_Pos 29U /*!< SCB CTR: Format Position */ +#define SCB_CTR_FORMAT_Msk (7UL << SCB_CTR_FORMAT_Pos) /*!< SCB CTR: Format Mask */ + +#define SCB_CTR_CWG_Pos 24U /*!< SCB CTR: CWG Position */ +#define SCB_CTR_CWG_Msk (0xFUL << SCB_CTR_CWG_Pos) /*!< SCB CTR: CWG Mask */ + +#define SCB_CTR_ERG_Pos 20U /*!< SCB CTR: ERG Position */ +#define SCB_CTR_ERG_Msk (0xFUL << SCB_CTR_ERG_Pos) /*!< SCB CTR: ERG Mask */ + +#define SCB_CTR_DMINLINE_Pos 16U /*!< SCB CTR: DminLine Position */ +#define SCB_CTR_DMINLINE_Msk (0xFUL << SCB_CTR_DMINLINE_Pos) /*!< SCB CTR: DminLine Mask */ + +#define SCB_CTR_IMINLINE_Pos 0U /*!< SCB CTR: ImInLine Position */ +#define SCB_CTR_IMINLINE_Msk (0xFUL /*<< SCB_CTR_IMINLINE_Pos*/) /*!< SCB CTR: ImInLine Mask */ + +/* SCB Cache Size ID Register Definitions */ +#define SCB_CCSIDR_WT_Pos 31U /*!< SCB CCSIDR: WT Position */ +#define SCB_CCSIDR_WT_Msk (1UL << SCB_CCSIDR_WT_Pos) /*!< SCB CCSIDR: WT Mask */ + +#define SCB_CCSIDR_WB_Pos 30U /*!< SCB CCSIDR: WB Position */ +#define SCB_CCSIDR_WB_Msk (1UL << SCB_CCSIDR_WB_Pos) /*!< SCB CCSIDR: WB Mask */ + +#define SCB_CCSIDR_RA_Pos 29U /*!< SCB CCSIDR: RA Position */ +#define SCB_CCSIDR_RA_Msk (1UL << SCB_CCSIDR_RA_Pos) /*!< SCB CCSIDR: RA Mask */ + +#define SCB_CCSIDR_WA_Pos 28U /*!< SCB CCSIDR: WA Position */ +#define SCB_CCSIDR_WA_Msk (1UL << SCB_CCSIDR_WA_Pos) /*!< SCB CCSIDR: WA Mask */ + +#define SCB_CCSIDR_NUMSETS_Pos 13U /*!< SCB CCSIDR: NumSets Position */ +#define SCB_CCSIDR_NUMSETS_Msk (0x7FFFUL << SCB_CCSIDR_NUMSETS_Pos) /*!< SCB CCSIDR: NumSets Mask */ + +#define SCB_CCSIDR_ASSOCIATIVITY_Pos 3U /*!< SCB CCSIDR: Associativity Position */ +#define SCB_CCSIDR_ASSOCIATIVITY_Msk (0x3FFUL << SCB_CCSIDR_ASSOCIATIVITY_Pos) /*!< SCB CCSIDR: Associativity Mask */ + +#define SCB_CCSIDR_LINESIZE_Pos 0U /*!< SCB CCSIDR: LineSize Position */ +#define SCB_CCSIDR_LINESIZE_Msk (7UL /*<< SCB_CCSIDR_LINESIZE_Pos*/) /*!< SCB CCSIDR: LineSize Mask */ + +/* SCB Cache Size Selection Register Definitions */ +#define SCB_CSSELR_LEVEL_Pos 1U /*!< SCB CSSELR: Level Position */ +#define SCB_CSSELR_LEVEL_Msk (7UL << SCB_CSSELR_LEVEL_Pos) /*!< SCB CSSELR: Level Mask */ + +#define SCB_CSSELR_IND_Pos 0U /*!< SCB CSSELR: InD Position */ +#define SCB_CSSELR_IND_Msk (1UL /*<< SCB_CSSELR_IND_Pos*/) /*!< SCB CSSELR: InD Mask */ + +/* SCB Software Triggered Interrupt Register Definitions */ +#define SCB_STIR_INTID_Pos 0U /*!< SCB STIR: INTID Position */ +#define SCB_STIR_INTID_Msk (0x1FFUL /*<< SCB_STIR_INTID_Pos*/) /*!< SCB STIR: INTID Mask */ + +/* SCB D-Cache Invalidate by Set-way Register Definitions */ +#define SCB_DCISW_WAY_Pos 30U /*!< SCB DCISW: Way Position */ +#define SCB_DCISW_WAY_Msk (3UL << SCB_DCISW_WAY_Pos) /*!< SCB DCISW: Way Mask */ + +#define SCB_DCISW_SET_Pos 5U /*!< SCB DCISW: Set Position */ +#define SCB_DCISW_SET_Msk (0x1FFUL << SCB_DCISW_SET_Pos) /*!< SCB DCISW: Set Mask */ + +/* SCB D-Cache Clean by Set-way Register Definitions */ +#define SCB_DCCSW_WAY_Pos 30U /*!< SCB DCCSW: Way Position */ +#define SCB_DCCSW_WAY_Msk (3UL << SCB_DCCSW_WAY_Pos) /*!< SCB DCCSW: Way Mask */ + +#define SCB_DCCSW_SET_Pos 5U /*!< SCB DCCSW: Set Position */ +#define SCB_DCCSW_SET_Msk (0x1FFUL << SCB_DCCSW_SET_Pos) /*!< SCB DCCSW: Set Mask */ + +/* SCB D-Cache Clean and Invalidate by Set-way Register Definitions */ +#define SCB_DCCISW_WAY_Pos 30U /*!< SCB DCCISW: Way Position */ +#define SCB_DCCISW_WAY_Msk (3UL << SCB_DCCISW_WAY_Pos) /*!< SCB DCCISW: Way Mask */ + +#define SCB_DCCISW_SET_Pos 5U /*!< SCB DCCISW: Set Position */ +#define SCB_DCCISW_SET_Msk (0x1FFUL << SCB_DCCISW_SET_Pos) /*!< SCB DCCISW: Set Mask */ + +/*@} end of group CMSIS_SCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SCnSCB System Controls not in SCB (SCnSCB) + \brief Type definitions for the System Control and ID Register not in the SCB + @{ + */ + +/** + \brief Structure type to access the System Control and ID Register not in the SCB. + */ +typedef struct +{ + uint32_t RESERVED0[1U]; + __IM uint32_t ICTR; /*!< Offset: 0x004 (R/ ) Interrupt Controller Type Register */ + __IOM uint32_t ACTLR; /*!< Offset: 0x008 (R/W) Auxiliary Control Register */ + __IOM uint32_t CPPWR; /*!< Offset: 0x00C (R/W) Coprocessor Power Control Register */ +} SCnSCB_Type; + +/* Interrupt Controller Type Register Definitions */ +#define SCnSCB_ICTR_INTLINESNUM_Pos 0U /*!< ICTR: INTLINESNUM Position */ +#define SCnSCB_ICTR_INTLINESNUM_Msk (0xFUL /*<< SCnSCB_ICTR_INTLINESNUM_Pos*/) /*!< ICTR: INTLINESNUM Mask */ + +/*@} end of group CMSIS_SCnotSCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SysTick System Tick Timer (SysTick) + \brief Type definitions for the System Timer Registers. + @{ + */ + +/** + \brief Structure type to access the System Timer (SysTick). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SysTick Control and Status Register */ + __IOM uint32_t LOAD; /*!< Offset: 0x004 (R/W) SysTick Reload Value Register */ + __IOM uint32_t VAL; /*!< Offset: 0x008 (R/W) SysTick Current Value Register */ + __IM uint32_t CALIB; /*!< Offset: 0x00C (R/ ) SysTick Calibration Register */ +} SysTick_Type; + +/* SysTick Control / Status Register Definitions */ +#define SysTick_CTRL_COUNTFLAG_Pos 16U /*!< SysTick CTRL: COUNTFLAG Position */ +#define SysTick_CTRL_COUNTFLAG_Msk (1UL << SysTick_CTRL_COUNTFLAG_Pos) /*!< SysTick CTRL: COUNTFLAG Mask */ + +#define SysTick_CTRL_CLKSOURCE_Pos 2U /*!< SysTick CTRL: CLKSOURCE Position */ +#define SysTick_CTRL_CLKSOURCE_Msk (1UL << SysTick_CTRL_CLKSOURCE_Pos) /*!< SysTick CTRL: CLKSOURCE Mask */ + +#define SysTick_CTRL_TICKINT_Pos 1U /*!< SysTick CTRL: TICKINT Position */ +#define SysTick_CTRL_TICKINT_Msk (1UL << SysTick_CTRL_TICKINT_Pos) /*!< SysTick CTRL: TICKINT Mask */ + +#define SysTick_CTRL_ENABLE_Pos 0U /*!< SysTick CTRL: ENABLE Position */ +#define SysTick_CTRL_ENABLE_Msk (1UL /*<< SysTick_CTRL_ENABLE_Pos*/) /*!< SysTick CTRL: ENABLE Mask */ + +/* SysTick Reload Register Definitions */ +#define SysTick_LOAD_RELOAD_Pos 0U /*!< SysTick LOAD: RELOAD Position */ +#define SysTick_LOAD_RELOAD_Msk (0xFFFFFFUL /*<< SysTick_LOAD_RELOAD_Pos*/) /*!< SysTick LOAD: RELOAD Mask */ + +/* SysTick Current Register Definitions */ +#define SysTick_VAL_CURRENT_Pos 0U /*!< SysTick VAL: CURRENT Position */ +#define SysTick_VAL_CURRENT_Msk (0xFFFFFFUL /*<< SysTick_VAL_CURRENT_Pos*/) /*!< SysTick VAL: CURRENT Mask */ + +/* SysTick Calibration Register Definitions */ +#define SysTick_CALIB_NOREF_Pos 31U /*!< SysTick CALIB: NOREF Position */ +#define SysTick_CALIB_NOREF_Msk (1UL << SysTick_CALIB_NOREF_Pos) /*!< SysTick CALIB: NOREF Mask */ + +#define SysTick_CALIB_SKEW_Pos 30U /*!< SysTick CALIB: SKEW Position */ +#define SysTick_CALIB_SKEW_Msk (1UL << SysTick_CALIB_SKEW_Pos) /*!< SysTick CALIB: SKEW Mask */ + +#define SysTick_CALIB_TENMS_Pos 0U /*!< SysTick CALIB: TENMS Position */ +#define SysTick_CALIB_TENMS_Msk (0xFFFFFFUL /*<< SysTick_CALIB_TENMS_Pos*/) /*!< SysTick CALIB: TENMS Mask */ + +/*@} end of group CMSIS_SysTick */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_ITM Instrumentation Trace Macrocell (ITM) + \brief Type definitions for the Instrumentation Trace Macrocell (ITM) + @{ + */ + +/** + \brief Structure type to access the Instrumentation Trace Macrocell Register (ITM). + */ +typedef struct +{ + __OM union + { + __OM uint8_t u8; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 8-bit */ + __OM uint16_t u16; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 16-bit */ + __OM uint32_t u32; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 32-bit */ + } PORT [32U]; /*!< Offset: 0x000 ( /W) ITM Stimulus Port Registers */ + uint32_t RESERVED0[864U]; + __IOM uint32_t TER; /*!< Offset: 0xE00 (R/W) ITM Trace Enable Register */ + uint32_t RESERVED1[15U]; + __IOM uint32_t TPR; /*!< Offset: 0xE40 (R/W) ITM Trace Privilege Register */ + uint32_t RESERVED2[15U]; + __IOM uint32_t TCR; /*!< Offset: 0xE80 (R/W) ITM Trace Control Register */ + uint32_t RESERVED3[32U]; + uint32_t RESERVED4[43U]; + __OM uint32_t LAR; /*!< Offset: 0xFB0 ( /W) ITM Lock Access Register */ + __IM uint32_t LSR; /*!< Offset: 0xFB4 (R/ ) ITM Lock Status Register */ + uint32_t RESERVED5[1U]; + __IM uint32_t DEVARCH; /*!< Offset: 0xFBC (R/ ) ITM Device Architecture Register */ + uint32_t RESERVED6[4U]; + __IM uint32_t PID4; /*!< Offset: 0xFD0 (R/ ) ITM Peripheral Identification Register #4 */ + __IM uint32_t PID5; /*!< Offset: 0xFD4 (R/ ) ITM Peripheral Identification Register #5 */ + __IM uint32_t PID6; /*!< Offset: 0xFD8 (R/ ) ITM Peripheral Identification Register #6 */ + __IM uint32_t PID7; /*!< Offset: 0xFDC (R/ ) ITM Peripheral Identification Register #7 */ + __IM uint32_t PID0; /*!< Offset: 0xFE0 (R/ ) ITM Peripheral Identification Register #0 */ + __IM uint32_t PID1; /*!< Offset: 0xFE4 (R/ ) ITM Peripheral Identification Register #1 */ + __IM uint32_t PID2; /*!< Offset: 0xFE8 (R/ ) ITM Peripheral Identification Register #2 */ + __IM uint32_t PID3; /*!< Offset: 0xFEC (R/ ) ITM Peripheral Identification Register #3 */ + __IM uint32_t CID0; /*!< Offset: 0xFF0 (R/ ) ITM Component Identification Register #0 */ + __IM uint32_t CID1; /*!< Offset: 0xFF4 (R/ ) ITM Component Identification Register #1 */ + __IM uint32_t CID2; /*!< Offset: 0xFF8 (R/ ) ITM Component Identification Register #2 */ + __IM uint32_t CID3; /*!< Offset: 0xFFC (R/ ) ITM Component Identification Register #3 */ +} ITM_Type; + +/* ITM Stimulus Port Register Definitions */ +#define ITM_STIM_DISABLED_Pos 1U /*!< ITM STIM: DISABLED Position */ +#define ITM_STIM_DISABLED_Msk (0x1UL << ITM_STIM_DISABLED_Pos) /*!< ITM STIM: DISABLED Mask */ + +#define ITM_STIM_FIFOREADY_Pos 0U /*!< ITM STIM: FIFOREADY Position */ +#define ITM_STIM_FIFOREADY_Msk (0x1UL /*<< ITM_STIM_FIFOREADY_Pos*/) /*!< ITM STIM: FIFOREADY Mask */ + +/* ITM Trace Privilege Register Definitions */ +#define ITM_TPR_PRIVMASK_Pos 0U /*!< ITM TPR: PRIVMASK Position */ +#define ITM_TPR_PRIVMASK_Msk (0xFFFFFFFFUL /*<< ITM_TPR_PRIVMASK_Pos*/) /*!< ITM TPR: PRIVMASK Mask */ + +/* ITM Trace Control Register Definitions */ +#define ITM_TCR_BUSY_Pos 23U /*!< ITM TCR: BUSY Position */ +#define ITM_TCR_BUSY_Msk (1UL << ITM_TCR_BUSY_Pos) /*!< ITM TCR: BUSY Mask */ + +#define ITM_TCR_TRACEBUSID_Pos 16U /*!< ITM TCR: ATBID Position */ +#define ITM_TCR_TRACEBUSID_Msk (0x7FUL << ITM_TCR_TRACEBUSID_Pos) /*!< ITM TCR: ATBID Mask */ + +#define ITM_TCR_GTSFREQ_Pos 10U /*!< ITM TCR: Global timestamp frequency Position */ +#define ITM_TCR_GTSFREQ_Msk (3UL << ITM_TCR_GTSFREQ_Pos) /*!< ITM TCR: Global timestamp frequency Mask */ + +#define ITM_TCR_TSPRESCALE_Pos 8U /*!< ITM TCR: TSPRESCALE Position */ +#define ITM_TCR_TSPRESCALE_Msk (3UL << ITM_TCR_TSPRESCALE_Pos) /*!< ITM TCR: TSPRESCALE Mask */ + +#define ITM_TCR_STALLENA_Pos 5U /*!< ITM TCR: STALLENA Position */ +#define ITM_TCR_STALLENA_Msk (1UL << ITM_TCR_STALLENA_Pos) /*!< ITM TCR: STALLENA Mask */ + +#define ITM_TCR_SWOENA_Pos 4U /*!< ITM TCR: SWOENA Position */ +#define ITM_TCR_SWOENA_Msk (1UL << ITM_TCR_SWOENA_Pos) /*!< ITM TCR: SWOENA Mask */ + +#define ITM_TCR_DWTENA_Pos 3U /*!< ITM TCR: DWTENA Position */ +#define ITM_TCR_DWTENA_Msk (1UL << ITM_TCR_DWTENA_Pos) /*!< ITM TCR: DWTENA Mask */ + +#define ITM_TCR_SYNCENA_Pos 2U /*!< ITM TCR: SYNCENA Position */ +#define ITM_TCR_SYNCENA_Msk (1UL << ITM_TCR_SYNCENA_Pos) /*!< ITM TCR: SYNCENA Mask */ + +#define ITM_TCR_TSENA_Pos 1U /*!< ITM TCR: TSENA Position */ +#define ITM_TCR_TSENA_Msk (1UL << ITM_TCR_TSENA_Pos) /*!< ITM TCR: TSENA Mask */ + +#define ITM_TCR_ITMENA_Pos 0U /*!< ITM TCR: ITM Enable bit Position */ +#define ITM_TCR_ITMENA_Msk (1UL /*<< ITM_TCR_ITMENA_Pos*/) /*!< ITM TCR: ITM Enable bit Mask */ + +/* ITM Lock Status Register Definitions */ +#define ITM_LSR_ByteAcc_Pos 2U /*!< ITM LSR: ByteAcc Position */ +#define ITM_LSR_ByteAcc_Msk (1UL << ITM_LSR_ByteAcc_Pos) /*!< ITM LSR: ByteAcc Mask */ + +#define ITM_LSR_Access_Pos 1U /*!< ITM LSR: Access Position */ +#define ITM_LSR_Access_Msk (1UL << ITM_LSR_Access_Pos) /*!< ITM LSR: Access Mask */ + +#define ITM_LSR_Present_Pos 0U /*!< ITM LSR: Present Position */ +#define ITM_LSR_Present_Msk (1UL /*<< ITM_LSR_Present_Pos*/) /*!< ITM LSR: Present Mask */ + +/*@}*/ /* end of group CMSIS_ITM */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_DWT Data Watchpoint and Trace (DWT) + \brief Type definitions for the Data Watchpoint and Trace (DWT) + @{ + */ + +/** + \brief Structure type to access the Data Watchpoint and Trace Register (DWT). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) Control Register */ + __IOM uint32_t CYCCNT; /*!< Offset: 0x004 (R/W) Cycle Count Register */ + __IOM uint32_t CPICNT; /*!< Offset: 0x008 (R/W) CPI Count Register */ + __IOM uint32_t EXCCNT; /*!< Offset: 0x00C (R/W) Exception Overhead Count Register */ + __IOM uint32_t SLEEPCNT; /*!< Offset: 0x010 (R/W) Sleep Count Register */ + __IOM uint32_t LSUCNT; /*!< Offset: 0x014 (R/W) LSU Count Register */ + __IOM uint32_t FOLDCNT; /*!< Offset: 0x018 (R/W) Folded-instruction Count Register */ + __IM uint32_t PCSR; /*!< Offset: 0x01C (R/ ) Program Counter Sample Register */ + __IOM uint32_t COMP0; /*!< Offset: 0x020 (R/W) Comparator Register 0 */ + uint32_t RESERVED1[1U]; + __IOM uint32_t FUNCTION0; /*!< Offset: 0x028 (R/W) Function Register 0 */ + uint32_t RESERVED2[1U]; + __IOM uint32_t COMP1; /*!< Offset: 0x030 (R/W) Comparator Register 1 */ + uint32_t RESERVED3[1U]; + __IOM uint32_t FUNCTION1; /*!< Offset: 0x038 (R/W) Function Register 1 */ + uint32_t RESERVED4[1U]; + __IOM uint32_t COMP2; /*!< Offset: 0x040 (R/W) Comparator Register 2 */ + uint32_t RESERVED5[1U]; + __IOM uint32_t FUNCTION2; /*!< Offset: 0x048 (R/W) Function Register 2 */ + uint32_t RESERVED6[1U]; + __IOM uint32_t COMP3; /*!< Offset: 0x050 (R/W) Comparator Register 3 */ + uint32_t RESERVED7[1U]; + __IOM uint32_t FUNCTION3; /*!< Offset: 0x058 (R/W) Function Register 3 */ + uint32_t RESERVED8[1U]; + __IOM uint32_t COMP4; /*!< Offset: 0x060 (R/W) Comparator Register 4 */ + uint32_t RESERVED9[1U]; + __IOM uint32_t FUNCTION4; /*!< Offset: 0x068 (R/W) Function Register 4 */ + uint32_t RESERVED10[1U]; + __IOM uint32_t COMP5; /*!< Offset: 0x070 (R/W) Comparator Register 5 */ + uint32_t RESERVED11[1U]; + __IOM uint32_t FUNCTION5; /*!< Offset: 0x078 (R/W) Function Register 5 */ + uint32_t RESERVED12[1U]; + __IOM uint32_t COMP6; /*!< Offset: 0x080 (R/W) Comparator Register 6 */ + uint32_t RESERVED13[1U]; + __IOM uint32_t FUNCTION6; /*!< Offset: 0x088 (R/W) Function Register 6 */ + uint32_t RESERVED14[1U]; + __IOM uint32_t COMP7; /*!< Offset: 0x090 (R/W) Comparator Register 7 */ + uint32_t RESERVED15[1U]; + __IOM uint32_t FUNCTION7; /*!< Offset: 0x098 (R/W) Function Register 7 */ + uint32_t RESERVED16[1U]; + __IOM uint32_t COMP8; /*!< Offset: 0x0A0 (R/W) Comparator Register 8 */ + uint32_t RESERVED17[1U]; + __IOM uint32_t FUNCTION8; /*!< Offset: 0x0A8 (R/W) Function Register 8 */ + uint32_t RESERVED18[1U]; + __IOM uint32_t COMP9; /*!< Offset: 0x0B0 (R/W) Comparator Register 9 */ + uint32_t RESERVED19[1U]; + __IOM uint32_t FUNCTION9; /*!< Offset: 0x0B8 (R/W) Function Register 9 */ + uint32_t RESERVED20[1U]; + __IOM uint32_t COMP10; /*!< Offset: 0x0C0 (R/W) Comparator Register 10 */ + uint32_t RESERVED21[1U]; + __IOM uint32_t FUNCTION10; /*!< Offset: 0x0C8 (R/W) Function Register 10 */ + uint32_t RESERVED22[1U]; + __IOM uint32_t COMP11; /*!< Offset: 0x0D0 (R/W) Comparator Register 11 */ + uint32_t RESERVED23[1U]; + __IOM uint32_t FUNCTION11; /*!< Offset: 0x0D8 (R/W) Function Register 11 */ + uint32_t RESERVED24[1U]; + __IOM uint32_t COMP12; /*!< Offset: 0x0E0 (R/W) Comparator Register 12 */ + uint32_t RESERVED25[1U]; + __IOM uint32_t FUNCTION12; /*!< Offset: 0x0E8 (R/W) Function Register 12 */ + uint32_t RESERVED26[1U]; + __IOM uint32_t COMP13; /*!< Offset: 0x0F0 (R/W) Comparator Register 13 */ + uint32_t RESERVED27[1U]; + __IOM uint32_t FUNCTION13; /*!< Offset: 0x0F8 (R/W) Function Register 13 */ + uint32_t RESERVED28[1U]; + __IOM uint32_t COMP14; /*!< Offset: 0x100 (R/W) Comparator Register 14 */ + uint32_t RESERVED29[1U]; + __IOM uint32_t FUNCTION14; /*!< Offset: 0x108 (R/W) Function Register 14 */ + uint32_t RESERVED30[1U]; + __IOM uint32_t COMP15; /*!< Offset: 0x110 (R/W) Comparator Register 15 */ + uint32_t RESERVED31[1U]; + __IOM uint32_t FUNCTION15; /*!< Offset: 0x118 (R/W) Function Register 15 */ + uint32_t RESERVED32[934U]; + __IM uint32_t LSR; /*!< Offset: 0xFB4 (R ) Lock Status Register */ + uint32_t RESERVED33[1U]; + __IM uint32_t DEVARCH; /*!< Offset: 0xFBC (R/ ) Device Architecture Register */ +} DWT_Type; + +/* DWT Control Register Definitions */ +#define DWT_CTRL_NUMCOMP_Pos 28U /*!< DWT CTRL: NUMCOMP Position */ +#define DWT_CTRL_NUMCOMP_Msk (0xFUL << DWT_CTRL_NUMCOMP_Pos) /*!< DWT CTRL: NUMCOMP Mask */ + +#define DWT_CTRL_NOTRCPKT_Pos 27U /*!< DWT CTRL: NOTRCPKT Position */ +#define DWT_CTRL_NOTRCPKT_Msk (0x1UL << DWT_CTRL_NOTRCPKT_Pos) /*!< DWT CTRL: NOTRCPKT Mask */ + +#define DWT_CTRL_NOEXTTRIG_Pos 26U /*!< DWT CTRL: NOEXTTRIG Position */ +#define DWT_CTRL_NOEXTTRIG_Msk (0x1UL << DWT_CTRL_NOEXTTRIG_Pos) /*!< DWT CTRL: NOEXTTRIG Mask */ + +#define DWT_CTRL_NOCYCCNT_Pos 25U /*!< DWT CTRL: NOCYCCNT Position */ +#define DWT_CTRL_NOCYCCNT_Msk (0x1UL << DWT_CTRL_NOCYCCNT_Pos) /*!< DWT CTRL: NOCYCCNT Mask */ + +#define DWT_CTRL_NOPRFCNT_Pos 24U /*!< DWT CTRL: NOPRFCNT Position */ +#define DWT_CTRL_NOPRFCNT_Msk (0x1UL << DWT_CTRL_NOPRFCNT_Pos) /*!< DWT CTRL: NOPRFCNT Mask */ + +#define DWT_CTRL_CYCDISS_Pos 23U /*!< DWT CTRL: CYCDISS Position */ +#define DWT_CTRL_CYCDISS_Msk (0x1UL << DWT_CTRL_CYCDISS_Pos) /*!< DWT CTRL: CYCDISS Mask */ + +#define DWT_CTRL_CYCEVTENA_Pos 22U /*!< DWT CTRL: CYCEVTENA Position */ +#define DWT_CTRL_CYCEVTENA_Msk (0x1UL << DWT_CTRL_CYCEVTENA_Pos) /*!< DWT CTRL: CYCEVTENA Mask */ + +#define DWT_CTRL_FOLDEVTENA_Pos 21U /*!< DWT CTRL: FOLDEVTENA Position */ +#define DWT_CTRL_FOLDEVTENA_Msk (0x1UL << DWT_CTRL_FOLDEVTENA_Pos) /*!< DWT CTRL: FOLDEVTENA Mask */ + +#define DWT_CTRL_LSUEVTENA_Pos 20U /*!< DWT CTRL: LSUEVTENA Position */ +#define DWT_CTRL_LSUEVTENA_Msk (0x1UL << DWT_CTRL_LSUEVTENA_Pos) /*!< DWT CTRL: LSUEVTENA Mask */ + +#define DWT_CTRL_SLEEPEVTENA_Pos 19U /*!< DWT CTRL: SLEEPEVTENA Position */ +#define DWT_CTRL_SLEEPEVTENA_Msk (0x1UL << DWT_CTRL_SLEEPEVTENA_Pos) /*!< DWT CTRL: SLEEPEVTENA Mask */ + +#define DWT_CTRL_EXCEVTENA_Pos 18U /*!< DWT CTRL: EXCEVTENA Position */ +#define DWT_CTRL_EXCEVTENA_Msk (0x1UL << DWT_CTRL_EXCEVTENA_Pos) /*!< DWT CTRL: EXCEVTENA Mask */ + +#define DWT_CTRL_CPIEVTENA_Pos 17U /*!< DWT CTRL: CPIEVTENA Position */ +#define DWT_CTRL_CPIEVTENA_Msk (0x1UL << DWT_CTRL_CPIEVTENA_Pos) /*!< DWT CTRL: CPIEVTENA Mask */ + +#define DWT_CTRL_EXCTRCENA_Pos 16U /*!< DWT CTRL: EXCTRCENA Position */ +#define DWT_CTRL_EXCTRCENA_Msk (0x1UL << DWT_CTRL_EXCTRCENA_Pos) /*!< DWT CTRL: EXCTRCENA Mask */ + +#define DWT_CTRL_PCSAMPLENA_Pos 12U /*!< DWT CTRL: PCSAMPLENA Position */ +#define DWT_CTRL_PCSAMPLENA_Msk (0x1UL << DWT_CTRL_PCSAMPLENA_Pos) /*!< DWT CTRL: PCSAMPLENA Mask */ + +#define DWT_CTRL_SYNCTAP_Pos 10U /*!< DWT CTRL: SYNCTAP Position */ +#define DWT_CTRL_SYNCTAP_Msk (0x3UL << DWT_CTRL_SYNCTAP_Pos) /*!< DWT CTRL: SYNCTAP Mask */ + +#define DWT_CTRL_CYCTAP_Pos 9U /*!< DWT CTRL: CYCTAP Position */ +#define DWT_CTRL_CYCTAP_Msk (0x1UL << DWT_CTRL_CYCTAP_Pos) /*!< DWT CTRL: CYCTAP Mask */ + +#define DWT_CTRL_POSTINIT_Pos 5U /*!< DWT CTRL: POSTINIT Position */ +#define DWT_CTRL_POSTINIT_Msk (0xFUL << DWT_CTRL_POSTINIT_Pos) /*!< DWT CTRL: POSTINIT Mask */ + +#define DWT_CTRL_POSTPRESET_Pos 1U /*!< DWT CTRL: POSTPRESET Position */ +#define DWT_CTRL_POSTPRESET_Msk (0xFUL << DWT_CTRL_POSTPRESET_Pos) /*!< DWT CTRL: POSTPRESET Mask */ + +#define DWT_CTRL_CYCCNTENA_Pos 0U /*!< DWT CTRL: CYCCNTENA Position */ +#define DWT_CTRL_CYCCNTENA_Msk (0x1UL /*<< DWT_CTRL_CYCCNTENA_Pos*/) /*!< DWT CTRL: CYCCNTENA Mask */ + +/* DWT CPI Count Register Definitions */ +#define DWT_CPICNT_CPICNT_Pos 0U /*!< DWT CPICNT: CPICNT Position */ +#define DWT_CPICNT_CPICNT_Msk (0xFFUL /*<< DWT_CPICNT_CPICNT_Pos*/) /*!< DWT CPICNT: CPICNT Mask */ + +/* DWT Exception Overhead Count Register Definitions */ +#define DWT_EXCCNT_EXCCNT_Pos 0U /*!< DWT EXCCNT: EXCCNT Position */ +#define DWT_EXCCNT_EXCCNT_Msk (0xFFUL /*<< DWT_EXCCNT_EXCCNT_Pos*/) /*!< DWT EXCCNT: EXCCNT Mask */ + +/* DWT Sleep Count Register Definitions */ +#define DWT_SLEEPCNT_SLEEPCNT_Pos 0U /*!< DWT SLEEPCNT: SLEEPCNT Position */ +#define DWT_SLEEPCNT_SLEEPCNT_Msk (0xFFUL /*<< DWT_SLEEPCNT_SLEEPCNT_Pos*/) /*!< DWT SLEEPCNT: SLEEPCNT Mask */ + +/* DWT LSU Count Register Definitions */ +#define DWT_LSUCNT_LSUCNT_Pos 0U /*!< DWT LSUCNT: LSUCNT Position */ +#define DWT_LSUCNT_LSUCNT_Msk (0xFFUL /*<< DWT_LSUCNT_LSUCNT_Pos*/) /*!< DWT LSUCNT: LSUCNT Mask */ + +/* DWT Folded-instruction Count Register Definitions */ +#define DWT_FOLDCNT_FOLDCNT_Pos 0U /*!< DWT FOLDCNT: FOLDCNT Position */ +#define DWT_FOLDCNT_FOLDCNT_Msk (0xFFUL /*<< DWT_FOLDCNT_FOLDCNT_Pos*/) /*!< DWT FOLDCNT: FOLDCNT Mask */ + +/* DWT Comparator Function Register Definitions */ +#define DWT_FUNCTION_ID_Pos 27U /*!< DWT FUNCTION: ID Position */ +#define DWT_FUNCTION_ID_Msk (0x1FUL << DWT_FUNCTION_ID_Pos) /*!< DWT FUNCTION: ID Mask */ + +#define DWT_FUNCTION_MATCHED_Pos 24U /*!< DWT FUNCTION: MATCHED Position */ +#define DWT_FUNCTION_MATCHED_Msk (0x1UL << DWT_FUNCTION_MATCHED_Pos) /*!< DWT FUNCTION: MATCHED Mask */ + +#define DWT_FUNCTION_DATAVSIZE_Pos 10U /*!< DWT FUNCTION: DATAVSIZE Position */ +#define DWT_FUNCTION_DATAVSIZE_Msk (0x3UL << DWT_FUNCTION_DATAVSIZE_Pos) /*!< DWT FUNCTION: DATAVSIZE Mask */ + +#define DWT_FUNCTION_ACTION_Pos 4U /*!< DWT FUNCTION: ACTION Position */ +#define DWT_FUNCTION_ACTION_Msk (0x1UL << DWT_FUNCTION_ACTION_Pos) /*!< DWT FUNCTION: ACTION Mask */ + +#define DWT_FUNCTION_MATCH_Pos 0U /*!< DWT FUNCTION: MATCH Position */ +#define DWT_FUNCTION_MATCH_Msk (0xFUL /*<< DWT_FUNCTION_MATCH_Pos*/) /*!< DWT FUNCTION: MATCH Mask */ + +/*@}*/ /* end of group CMSIS_DWT */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_TPI Trace Port Interface (TPI) + \brief Type definitions for the Trace Port Interface (TPI) + @{ + */ + +/** + \brief Structure type to access the Trace Port Interface Register (TPI). + */ +typedef struct +{ + __IM uint32_t SSPSR; /*!< Offset: 0x000 (R/ ) Supported Parallel Port Size Register */ + __IOM uint32_t CSPSR; /*!< Offset: 0x004 (R/W) Current Parallel Port Size Register */ + uint32_t RESERVED0[2U]; + __IOM uint32_t ACPR; /*!< Offset: 0x010 (R/W) Asynchronous Clock Prescaler Register */ + uint32_t RESERVED1[55U]; + __IOM uint32_t SPPR; /*!< Offset: 0x0F0 (R/W) Selected Pin Protocol Register */ + uint32_t RESERVED2[131U]; + __IM uint32_t FFSR; /*!< Offset: 0x300 (R/ ) Formatter and Flush Status Register */ + __IOM uint32_t FFCR; /*!< Offset: 0x304 (R/W) Formatter and Flush Control Register */ + __IOM uint32_t PSCR; /*!< Offset: 0x308 (R/W) Periodic Synchronization Control Register */ + uint32_t RESERVED3[759U]; + __IM uint32_t TRIGGER; /*!< Offset: 0xEE8 (R/ ) TRIGGER Register */ + __IM uint32_t ITFTTD0; /*!< Offset: 0xEEC (R/ ) Integration Test FIFO Test Data 0 Register */ + __IOM uint32_t ITATBCTR2; /*!< Offset: 0xEF0 (R/W) Integration Test ATB Control Register 2 */ + uint32_t RESERVED4[1U]; + __IM uint32_t ITATBCTR0; /*!< Offset: 0xEF8 (R/ ) Integration Test ATB Control Register 0 */ + __IM uint32_t ITFTTD1; /*!< Offset: 0xEFC (R/ ) Integration Test FIFO Test Data 1 Register */ + __IOM uint32_t ITCTRL; /*!< Offset: 0xF00 (R/W) Integration Mode Control */ + uint32_t RESERVED5[39U]; + __IOM uint32_t CLAIMSET; /*!< Offset: 0xFA0 (R/W) Claim tag set */ + __IOM uint32_t CLAIMCLR; /*!< Offset: 0xFA4 (R/W) Claim tag clear */ + uint32_t RESERVED7[8U]; + __IM uint32_t DEVID; /*!< Offset: 0xFC8 (R/ ) Device Configuration Register */ + __IM uint32_t DEVTYPE; /*!< Offset: 0xFCC (R/ ) Device Type Identifier Register */ +} TPI_Type; + +/* TPI Asynchronous Clock Prescaler Register Definitions */ +#define TPI_ACPR_PRESCALER_Pos 0U /*!< TPI ACPR: PRESCALER Position */ +#define TPI_ACPR_PRESCALER_Msk (0x1FFFUL /*<< TPI_ACPR_PRESCALER_Pos*/) /*!< TPI ACPR: PRESCALER Mask */ + +/* TPI Selected Pin Protocol Register Definitions */ +#define TPI_SPPR_TXMODE_Pos 0U /*!< TPI SPPR: TXMODE Position */ +#define TPI_SPPR_TXMODE_Msk (0x3UL /*<< TPI_SPPR_TXMODE_Pos*/) /*!< TPI SPPR: TXMODE Mask */ + +/* TPI Formatter and Flush Status Register Definitions */ +#define TPI_FFSR_FtNonStop_Pos 3U /*!< TPI FFSR: FtNonStop Position */ +#define TPI_FFSR_FtNonStop_Msk (0x1UL << TPI_FFSR_FtNonStop_Pos) /*!< TPI FFSR: FtNonStop Mask */ + +#define TPI_FFSR_TCPresent_Pos 2U /*!< TPI FFSR: TCPresent Position */ +#define TPI_FFSR_TCPresent_Msk (0x1UL << TPI_FFSR_TCPresent_Pos) /*!< TPI FFSR: TCPresent Mask */ + +#define TPI_FFSR_FtStopped_Pos 1U /*!< TPI FFSR: FtStopped Position */ +#define TPI_FFSR_FtStopped_Msk (0x1UL << TPI_FFSR_FtStopped_Pos) /*!< TPI FFSR: FtStopped Mask */ + +#define TPI_FFSR_FlInProg_Pos 0U /*!< TPI FFSR: FlInProg Position */ +#define TPI_FFSR_FlInProg_Msk (0x1UL /*<< TPI_FFSR_FlInProg_Pos*/) /*!< TPI FFSR: FlInProg Mask */ + +/* TPI Formatter and Flush Control Register Definitions */ +#define TPI_FFCR_TrigIn_Pos 8U /*!< TPI FFCR: TrigIn Position */ +#define TPI_FFCR_TrigIn_Msk (0x1UL << TPI_FFCR_TrigIn_Pos) /*!< TPI FFCR: TrigIn Mask */ + +#define TPI_FFCR_FOnMan_Pos 6U /*!< TPI FFCR: FOnMan Position */ +#define TPI_FFCR_FOnMan_Msk (0x1UL << TPI_FFCR_FOnMan_Pos) /*!< TPI FFCR: FOnMan Mask */ + +#define TPI_FFCR_EnFCont_Pos 1U /*!< TPI FFCR: EnFCont Position */ +#define TPI_FFCR_EnFCont_Msk (0x1UL << TPI_FFCR_EnFCont_Pos) /*!< TPI FFCR: EnFCont Mask */ + +/* TPI TRIGGER Register Definitions */ +#define TPI_TRIGGER_TRIGGER_Pos 0U /*!< TPI TRIGGER: TRIGGER Position */ +#define TPI_TRIGGER_TRIGGER_Msk (0x1UL /*<< TPI_TRIGGER_TRIGGER_Pos*/) /*!< TPI TRIGGER: TRIGGER Mask */ + +/* TPI Integration Test FIFO Test Data 0 Register Definitions */ +#define TPI_ITFTTD0_ATB_IF2_ATVALID_Pos 29U /*!< TPI ITFTTD0: ATB Interface 2 ATVALIDPosition */ +#define TPI_ITFTTD0_ATB_IF2_ATVALID_Msk (0x3UL << TPI_ITFTTD0_ATB_IF2_ATVALID_Pos) /*!< TPI ITFTTD0: ATB Interface 2 ATVALID Mask */ + +#define TPI_ITFTTD0_ATB_IF2_bytecount_Pos 27U /*!< TPI ITFTTD0: ATB Interface 2 byte count Position */ +#define TPI_ITFTTD0_ATB_IF2_bytecount_Msk (0x3UL << TPI_ITFTTD0_ATB_IF2_bytecount_Pos) /*!< TPI ITFTTD0: ATB Interface 2 byte count Mask */ + +#define TPI_ITFTTD0_ATB_IF1_ATVALID_Pos 26U /*!< TPI ITFTTD0: ATB Interface 1 ATVALID Position */ +#define TPI_ITFTTD0_ATB_IF1_ATVALID_Msk (0x3UL << TPI_ITFTTD0_ATB_IF1_ATVALID_Pos) /*!< TPI ITFTTD0: ATB Interface 1 ATVALID Mask */ + +#define TPI_ITFTTD0_ATB_IF1_bytecount_Pos 24U /*!< TPI ITFTTD0: ATB Interface 1 byte count Position */ +#define TPI_ITFTTD0_ATB_IF1_bytecount_Msk (0x3UL << TPI_ITFTTD0_ATB_IF1_bytecount_Pos) /*!< TPI ITFTTD0: ATB Interface 1 byte countt Mask */ + +#define TPI_ITFTTD0_ATB_IF1_data2_Pos 16U /*!< TPI ITFTTD0: ATB Interface 1 data2 Position */ +#define TPI_ITFTTD0_ATB_IF1_data2_Msk (0xFFUL << TPI_ITFTTD0_ATB_IF1_data1_Pos) /*!< TPI ITFTTD0: ATB Interface 1 data2 Mask */ + +#define TPI_ITFTTD0_ATB_IF1_data1_Pos 8U /*!< TPI ITFTTD0: ATB Interface 1 data1 Position */ +#define TPI_ITFTTD0_ATB_IF1_data1_Msk (0xFFUL << TPI_ITFTTD0_ATB_IF1_data1_Pos) /*!< TPI ITFTTD0: ATB Interface 1 data1 Mask */ + +#define TPI_ITFTTD0_ATB_IF1_data0_Pos 0U /*!< TPI ITFTTD0: ATB Interface 1 data0 Position */ +#define TPI_ITFTTD0_ATB_IF1_data0_Msk (0xFFUL /*<< TPI_ITFTTD0_ATB_IF1_data0_Pos*/) /*!< TPI ITFTTD0: ATB Interface 1 data0 Mask */ + +/* TPI Integration Test ATB Control Register 2 Register Definitions */ +#define TPI_ITATBCTR2_AFVALID2S_Pos 1U /*!< TPI ITATBCTR2: AFVALID2S Position */ +#define TPI_ITATBCTR2_AFVALID2S_Msk (0x1UL << TPI_ITATBCTR2_AFVALID2S_Pos) /*!< TPI ITATBCTR2: AFVALID2SS Mask */ + +#define TPI_ITATBCTR2_AFVALID1S_Pos 1U /*!< TPI ITATBCTR2: AFVALID1S Position */ +#define TPI_ITATBCTR2_AFVALID1S_Msk (0x1UL << TPI_ITATBCTR2_AFVALID1S_Pos) /*!< TPI ITATBCTR2: AFVALID1SS Mask */ + +#define TPI_ITATBCTR2_ATREADY2S_Pos 0U /*!< TPI ITATBCTR2: ATREADY2S Position */ +#define TPI_ITATBCTR2_ATREADY2S_Msk (0x1UL /*<< TPI_ITATBCTR2_ATREADY2S_Pos*/) /*!< TPI ITATBCTR2: ATREADY2S Mask */ + +#define TPI_ITATBCTR2_ATREADY1S_Pos 0U /*!< TPI ITATBCTR2: ATREADY1S Position */ +#define TPI_ITATBCTR2_ATREADY1S_Msk (0x1UL /*<< TPI_ITATBCTR2_ATREADY1S_Pos*/) /*!< TPI ITATBCTR2: ATREADY1S Mask */ + +/* TPI Integration Test FIFO Test Data 1 Register Definitions */ +#define TPI_ITFTTD1_ATB_IF2_ATVALID_Pos 29U /*!< TPI ITFTTD1: ATB Interface 2 ATVALID Position */ +#define TPI_ITFTTD1_ATB_IF2_ATVALID_Msk (0x3UL << TPI_ITFTTD1_ATB_IF2_ATVALID_Pos) /*!< TPI ITFTTD1: ATB Interface 2 ATVALID Mask */ + +#define TPI_ITFTTD1_ATB_IF2_bytecount_Pos 27U /*!< TPI ITFTTD1: ATB Interface 2 byte count Position */ +#define TPI_ITFTTD1_ATB_IF2_bytecount_Msk (0x3UL << TPI_ITFTTD1_ATB_IF2_bytecount_Pos) /*!< TPI ITFTTD1: ATB Interface 2 byte count Mask */ + +#define TPI_ITFTTD1_ATB_IF1_ATVALID_Pos 26U /*!< TPI ITFTTD1: ATB Interface 1 ATVALID Position */ +#define TPI_ITFTTD1_ATB_IF1_ATVALID_Msk (0x3UL << TPI_ITFTTD1_ATB_IF1_ATVALID_Pos) /*!< TPI ITFTTD1: ATB Interface 1 ATVALID Mask */ + +#define TPI_ITFTTD1_ATB_IF1_bytecount_Pos 24U /*!< TPI ITFTTD1: ATB Interface 1 byte count Position */ +#define TPI_ITFTTD1_ATB_IF1_bytecount_Msk (0x3UL << TPI_ITFTTD1_ATB_IF1_bytecount_Pos) /*!< TPI ITFTTD1: ATB Interface 1 byte countt Mask */ + +#define TPI_ITFTTD1_ATB_IF2_data2_Pos 16U /*!< TPI ITFTTD1: ATB Interface 2 data2 Position */ +#define TPI_ITFTTD1_ATB_IF2_data2_Msk (0xFFUL << TPI_ITFTTD1_ATB_IF2_data1_Pos) /*!< TPI ITFTTD1: ATB Interface 2 data2 Mask */ + +#define TPI_ITFTTD1_ATB_IF2_data1_Pos 8U /*!< TPI ITFTTD1: ATB Interface 2 data1 Position */ +#define TPI_ITFTTD1_ATB_IF2_data1_Msk (0xFFUL << TPI_ITFTTD1_ATB_IF2_data1_Pos) /*!< TPI ITFTTD1: ATB Interface 2 data1 Mask */ + +#define TPI_ITFTTD1_ATB_IF2_data0_Pos 0U /*!< TPI ITFTTD1: ATB Interface 2 data0 Position */ +#define TPI_ITFTTD1_ATB_IF2_data0_Msk (0xFFUL /*<< TPI_ITFTTD1_ATB_IF2_data0_Pos*/) /*!< TPI ITFTTD1: ATB Interface 2 data0 Mask */ + +/* TPI Integration Test ATB Control Register 0 Definitions */ +#define TPI_ITATBCTR0_AFVALID2S_Pos 1U /*!< TPI ITATBCTR0: AFVALID2S Position */ +#define TPI_ITATBCTR0_AFVALID2S_Msk (0x1UL << TPI_ITATBCTR0_AFVALID2S_Pos) /*!< TPI ITATBCTR0: AFVALID2SS Mask */ + +#define TPI_ITATBCTR0_AFVALID1S_Pos 1U /*!< TPI ITATBCTR0: AFVALID1S Position */ +#define TPI_ITATBCTR0_AFVALID1S_Msk (0x1UL << TPI_ITATBCTR0_AFVALID1S_Pos) /*!< TPI ITATBCTR0: AFVALID1SS Mask */ + +#define TPI_ITATBCTR0_ATREADY2S_Pos 0U /*!< TPI ITATBCTR0: ATREADY2S Position */ +#define TPI_ITATBCTR0_ATREADY2S_Msk (0x1UL /*<< TPI_ITATBCTR0_ATREADY2S_Pos*/) /*!< TPI ITATBCTR0: ATREADY2S Mask */ + +#define TPI_ITATBCTR0_ATREADY1S_Pos 0U /*!< TPI ITATBCTR0: ATREADY1S Position */ +#define TPI_ITATBCTR0_ATREADY1S_Msk (0x1UL /*<< TPI_ITATBCTR0_ATREADY1S_Pos*/) /*!< TPI ITATBCTR0: ATREADY1S Mask */ + +/* TPI Integration Mode Control Register Definitions */ +#define TPI_ITCTRL_Mode_Pos 0U /*!< TPI ITCTRL: Mode Position */ +#define TPI_ITCTRL_Mode_Msk (0x3UL /*<< TPI_ITCTRL_Mode_Pos*/) /*!< TPI ITCTRL: Mode Mask */ + +/* TPI DEVID Register Definitions */ +#define TPI_DEVID_NRZVALID_Pos 11U /*!< TPI DEVID: NRZVALID Position */ +#define TPI_DEVID_NRZVALID_Msk (0x1UL << TPI_DEVID_NRZVALID_Pos) /*!< TPI DEVID: NRZVALID Mask */ + +#define TPI_DEVID_MANCVALID_Pos 10U /*!< TPI DEVID: MANCVALID Position */ +#define TPI_DEVID_MANCVALID_Msk (0x1UL << TPI_DEVID_MANCVALID_Pos) /*!< TPI DEVID: MANCVALID Mask */ + +#define TPI_DEVID_PTINVALID_Pos 9U /*!< TPI DEVID: PTINVALID Position */ +#define TPI_DEVID_PTINVALID_Msk (0x1UL << TPI_DEVID_PTINVALID_Pos) /*!< TPI DEVID: PTINVALID Mask */ + +#define TPI_DEVID_FIFOSZ_Pos 6U /*!< TPI DEVID: FIFOSZ Position */ +#define TPI_DEVID_FIFOSZ_Msk (0x7UL << TPI_DEVID_FIFOSZ_Pos) /*!< TPI DEVID: FIFOSZ Mask */ + +#define TPI_DEVID_NrTraceInput_Pos 0U /*!< TPI DEVID: NrTraceInput Position */ +#define TPI_DEVID_NrTraceInput_Msk (0x3FUL /*<< TPI_DEVID_NrTraceInput_Pos*/) /*!< TPI DEVID: NrTraceInput Mask */ + +/* TPI DEVTYPE Register Definitions */ +#define TPI_DEVTYPE_SubType_Pos 4U /*!< TPI DEVTYPE: SubType Position */ +#define TPI_DEVTYPE_SubType_Msk (0xFUL /*<< TPI_DEVTYPE_SubType_Pos*/) /*!< TPI DEVTYPE: SubType Mask */ + +#define TPI_DEVTYPE_MajorType_Pos 0U /*!< TPI DEVTYPE: MajorType Position */ +#define TPI_DEVTYPE_MajorType_Msk (0xFUL << TPI_DEVTYPE_MajorType_Pos) /*!< TPI DEVTYPE: MajorType Mask */ + +/*@}*/ /* end of group CMSIS_TPI */ + + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_MPU Memory Protection Unit (MPU) + \brief Type definitions for the Memory Protection Unit (MPU) + @{ + */ + +/** + \brief Structure type to access the Memory Protection Unit (MPU). + */ +typedef struct +{ + __IM uint32_t TYPE; /*!< Offset: 0x000 (R/ ) MPU Type Register */ + __IOM uint32_t CTRL; /*!< Offset: 0x004 (R/W) MPU Control Register */ + __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) MPU Region Number Register */ + __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) MPU Region Base Address Register */ + __IOM uint32_t RLAR; /*!< Offset: 0x010 (R/W) MPU Region Limit Address Register */ + __IOM uint32_t RBAR_A1; /*!< Offset: 0x014 (R/W) MPU Region Base Address Register Alias 1 */ + __IOM uint32_t RLAR_A1; /*!< Offset: 0x018 (R/W) MPU Region Limit Address Register Alias 1 */ + __IOM uint32_t RBAR_A2; /*!< Offset: 0x01C (R/W) MPU Region Base Address Register Alias 2 */ + __IOM uint32_t RLAR_A2; /*!< Offset: 0x020 (R/W) MPU Region Limit Address Register Alias 2 */ + __IOM uint32_t RBAR_A3; /*!< Offset: 0x024 (R/W) MPU Region Base Address Register Alias 3 */ + __IOM uint32_t RLAR_A3; /*!< Offset: 0x028 (R/W) MPU Region Limit Address Register Alias 3 */ + uint32_t RESERVED0[1]; + union { + __IOM uint32_t MAIR[2]; + struct { + __IOM uint32_t MAIR0; /*!< Offset: 0x030 (R/W) MPU Memory Attribute Indirection Register 0 */ + __IOM uint32_t MAIR1; /*!< Offset: 0x034 (R/W) MPU Memory Attribute Indirection Register 1 */ + }; + }; +} MPU_Type; + +#define MPU_TYPE_RALIASES 4U + +/* MPU Type Register Definitions */ +#define MPU_TYPE_IREGION_Pos 16U /*!< MPU TYPE: IREGION Position */ +#define MPU_TYPE_IREGION_Msk (0xFFUL << MPU_TYPE_IREGION_Pos) /*!< MPU TYPE: IREGION Mask */ + +#define MPU_TYPE_DREGION_Pos 8U /*!< MPU TYPE: DREGION Position */ +#define MPU_TYPE_DREGION_Msk (0xFFUL << MPU_TYPE_DREGION_Pos) /*!< MPU TYPE: DREGION Mask */ + +#define MPU_TYPE_SEPARATE_Pos 0U /*!< MPU TYPE: SEPARATE Position */ +#define MPU_TYPE_SEPARATE_Msk (1UL /*<< MPU_TYPE_SEPARATE_Pos*/) /*!< MPU TYPE: SEPARATE Mask */ + +/* MPU Control Register Definitions */ +#define MPU_CTRL_PRIVDEFENA_Pos 2U /*!< MPU CTRL: PRIVDEFENA Position */ +#define MPU_CTRL_PRIVDEFENA_Msk (1UL << MPU_CTRL_PRIVDEFENA_Pos) /*!< MPU CTRL: PRIVDEFENA Mask */ + +#define MPU_CTRL_HFNMIENA_Pos 1U /*!< MPU CTRL: HFNMIENA Position */ +#define MPU_CTRL_HFNMIENA_Msk (1UL << MPU_CTRL_HFNMIENA_Pos) /*!< MPU CTRL: HFNMIENA Mask */ + +#define MPU_CTRL_ENABLE_Pos 0U /*!< MPU CTRL: ENABLE Position */ +#define MPU_CTRL_ENABLE_Msk (1UL /*<< MPU_CTRL_ENABLE_Pos*/) /*!< MPU CTRL: ENABLE Mask */ + +/* MPU Region Number Register Definitions */ +#define MPU_RNR_REGION_Pos 0U /*!< MPU RNR: REGION Position */ +#define MPU_RNR_REGION_Msk (0xFFUL /*<< MPU_RNR_REGION_Pos*/) /*!< MPU RNR: REGION Mask */ + +/* MPU Region Base Address Register Definitions */ +#define MPU_RBAR_BASE_Pos 5U /*!< MPU RBAR: BASE Position */ +#define MPU_RBAR_BASE_Msk (0x7FFFFFFUL << MPU_RBAR_BASE_Pos) /*!< MPU RBAR: BASE Mask */ + +#define MPU_RBAR_SH_Pos 3U /*!< MPU RBAR: SH Position */ +#define MPU_RBAR_SH_Msk (0x3UL << MPU_RBAR_SH_Pos) /*!< MPU RBAR: SH Mask */ + +#define MPU_RBAR_AP_Pos 1U /*!< MPU RBAR: AP Position */ +#define MPU_RBAR_AP_Msk (0x3UL << MPU_RBAR_AP_Pos) /*!< MPU RBAR: AP Mask */ + +#define MPU_RBAR_XN_Pos 0U /*!< MPU RBAR: XN Position */ +#define MPU_RBAR_XN_Msk (01UL /*<< MPU_RBAR_XN_Pos*/) /*!< MPU RBAR: XN Mask */ + +/* MPU Region Limit Address Register Definitions */ +#define MPU_RLAR_LIMIT_Pos 5U /*!< MPU RLAR: LIMIT Position */ +#define MPU_RLAR_LIMIT_Msk (0x7FFFFFFUL << MPU_RLAR_LIMIT_Pos) /*!< MPU RLAR: LIMIT Mask */ + +#define MPU_RLAR_AttrIndx_Pos 1U /*!< MPU RLAR: AttrIndx Position */ +#define MPU_RLAR_AttrIndx_Msk (0x7UL << MPU_RLAR_AttrIndx_Pos) /*!< MPU RLAR: AttrIndx Mask */ + +#define MPU_RLAR_EN_Pos 0U /*!< MPU RLAR: Region enable bit Position */ +#define MPU_RLAR_EN_Msk (1UL /*<< MPU_RLAR_EN_Pos*/) /*!< MPU RLAR: Region enable bit Disable Mask */ + +/* MPU Memory Attribute Indirection Register 0 Definitions */ +#define MPU_MAIR0_Attr3_Pos 24U /*!< MPU MAIR0: Attr3 Position */ +#define MPU_MAIR0_Attr3_Msk (0xFFUL << MPU_MAIR0_Attr3_Pos) /*!< MPU MAIR0: Attr3 Mask */ + +#define MPU_MAIR0_Attr2_Pos 16U /*!< MPU MAIR0: Attr2 Position */ +#define MPU_MAIR0_Attr2_Msk (0xFFUL << MPU_MAIR0_Attr2_Pos) /*!< MPU MAIR0: Attr2 Mask */ + +#define MPU_MAIR0_Attr1_Pos 8U /*!< MPU MAIR0: Attr1 Position */ +#define MPU_MAIR0_Attr1_Msk (0xFFUL << MPU_MAIR0_Attr1_Pos) /*!< MPU MAIR0: Attr1 Mask */ + +#define MPU_MAIR0_Attr0_Pos 0U /*!< MPU MAIR0: Attr0 Position */ +#define MPU_MAIR0_Attr0_Msk (0xFFUL /*<< MPU_MAIR0_Attr0_Pos*/) /*!< MPU MAIR0: Attr0 Mask */ + +/* MPU Memory Attribute Indirection Register 1 Definitions */ +#define MPU_MAIR1_Attr7_Pos 24U /*!< MPU MAIR1: Attr7 Position */ +#define MPU_MAIR1_Attr7_Msk (0xFFUL << MPU_MAIR1_Attr7_Pos) /*!< MPU MAIR1: Attr7 Mask */ + +#define MPU_MAIR1_Attr6_Pos 16U /*!< MPU MAIR1: Attr6 Position */ +#define MPU_MAIR1_Attr6_Msk (0xFFUL << MPU_MAIR1_Attr6_Pos) /*!< MPU MAIR1: Attr6 Mask */ + +#define MPU_MAIR1_Attr5_Pos 8U /*!< MPU MAIR1: Attr5 Position */ +#define MPU_MAIR1_Attr5_Msk (0xFFUL << MPU_MAIR1_Attr5_Pos) /*!< MPU MAIR1: Attr5 Mask */ + +#define MPU_MAIR1_Attr4_Pos 0U /*!< MPU MAIR1: Attr4 Position */ +#define MPU_MAIR1_Attr4_Msk (0xFFUL /*<< MPU_MAIR1_Attr4_Pos*/) /*!< MPU MAIR1: Attr4 Mask */ + +/*@} end of group CMSIS_MPU */ +#endif + + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SAU Security Attribution Unit (SAU) + \brief Type definitions for the Security Attribution Unit (SAU) + @{ + */ + +/** + \brief Structure type to access the Security Attribution Unit (SAU). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SAU Control Register */ + __IM uint32_t TYPE; /*!< Offset: 0x004 (R/ ) SAU Type Register */ +#if defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) + __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) SAU Region Number Register */ + __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) SAU Region Base Address Register */ + __IOM uint32_t RLAR; /*!< Offset: 0x010 (R/W) SAU Region Limit Address Register */ +#else + uint32_t RESERVED0[3]; +#endif + __IOM uint32_t SFSR; /*!< Offset: 0x014 (R/W) Secure Fault Status Register */ + __IOM uint32_t SFAR; /*!< Offset: 0x018 (R/W) Secure Fault Address Register */ +} SAU_Type; + +/* SAU Control Register Definitions */ +#define SAU_CTRL_ALLNS_Pos 1U /*!< SAU CTRL: ALLNS Position */ +#define SAU_CTRL_ALLNS_Msk (1UL << SAU_CTRL_ALLNS_Pos) /*!< SAU CTRL: ALLNS Mask */ + +#define SAU_CTRL_ENABLE_Pos 0U /*!< SAU CTRL: ENABLE Position */ +#define SAU_CTRL_ENABLE_Msk (1UL /*<< SAU_CTRL_ENABLE_Pos*/) /*!< SAU CTRL: ENABLE Mask */ + +/* SAU Type Register Definitions */ +#define SAU_TYPE_SREGION_Pos 0U /*!< SAU TYPE: SREGION Position */ +#define SAU_TYPE_SREGION_Msk (0xFFUL /*<< SAU_TYPE_SREGION_Pos*/) /*!< SAU TYPE: SREGION Mask */ + +#if defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) +/* SAU Region Number Register Definitions */ +#define SAU_RNR_REGION_Pos 0U /*!< SAU RNR: REGION Position */ +#define SAU_RNR_REGION_Msk (0xFFUL /*<< SAU_RNR_REGION_Pos*/) /*!< SAU RNR: REGION Mask */ + +/* SAU Region Base Address Register Definitions */ +#define SAU_RBAR_BADDR_Pos 5U /*!< SAU RBAR: BADDR Position */ +#define SAU_RBAR_BADDR_Msk (0x7FFFFFFUL << SAU_RBAR_BADDR_Pos) /*!< SAU RBAR: BADDR Mask */ + +/* SAU Region Limit Address Register Definitions */ +#define SAU_RLAR_LADDR_Pos 5U /*!< SAU RLAR: LADDR Position */ +#define SAU_RLAR_LADDR_Msk (0x7FFFFFFUL << SAU_RLAR_LADDR_Pos) /*!< SAU RLAR: LADDR Mask */ + +#define SAU_RLAR_NSC_Pos 1U /*!< SAU RLAR: NSC Position */ +#define SAU_RLAR_NSC_Msk (1UL << SAU_RLAR_NSC_Pos) /*!< SAU RLAR: NSC Mask */ + +#define SAU_RLAR_ENABLE_Pos 0U /*!< SAU RLAR: ENABLE Position */ +#define SAU_RLAR_ENABLE_Msk (1UL /*<< SAU_RLAR_ENABLE_Pos*/) /*!< SAU RLAR: ENABLE Mask */ + +#endif /* defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) */ + +/* Secure Fault Status Register Definitions */ +#define SAU_SFSR_LSERR_Pos 7U /*!< SAU SFSR: LSERR Position */ +#define SAU_SFSR_LSERR_Msk (1UL << SAU_SFSR_LSERR_Pos) /*!< SAU SFSR: LSERR Mask */ + +#define SAU_SFSR_SFARVALID_Pos 6U /*!< SAU SFSR: SFARVALID Position */ +#define SAU_SFSR_SFARVALID_Msk (1UL << SAU_SFSR_SFARVALID_Pos) /*!< SAU SFSR: SFARVALID Mask */ + +#define SAU_SFSR_LSPERR_Pos 5U /*!< SAU SFSR: LSPERR Position */ +#define SAU_SFSR_LSPERR_Msk (1UL << SAU_SFSR_LSPERR_Pos) /*!< SAU SFSR: LSPERR Mask */ + +#define SAU_SFSR_INVTRAN_Pos 4U /*!< SAU SFSR: INVTRAN Position */ +#define SAU_SFSR_INVTRAN_Msk (1UL << SAU_SFSR_INVTRAN_Pos) /*!< SAU SFSR: INVTRAN Mask */ + +#define SAU_SFSR_AUVIOL_Pos 3U /*!< SAU SFSR: AUVIOL Position */ +#define SAU_SFSR_AUVIOL_Msk (1UL << SAU_SFSR_AUVIOL_Pos) /*!< SAU SFSR: AUVIOL Mask */ + +#define SAU_SFSR_INVER_Pos 2U /*!< SAU SFSR: INVER Position */ +#define SAU_SFSR_INVER_Msk (1UL << SAU_SFSR_INVER_Pos) /*!< SAU SFSR: INVER Mask */ + +#define SAU_SFSR_INVIS_Pos 1U /*!< SAU SFSR: INVIS Position */ +#define SAU_SFSR_INVIS_Msk (1UL << SAU_SFSR_INVIS_Pos) /*!< SAU SFSR: INVIS Mask */ + +#define SAU_SFSR_INVEP_Pos 0U /*!< SAU SFSR: INVEP Position */ +#define SAU_SFSR_INVEP_Msk (1UL /*<< SAU_SFSR_INVEP_Pos*/) /*!< SAU SFSR: INVEP Mask */ + +/*@} end of group CMSIS_SAU */ +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_FPU Floating Point Unit (FPU) + \brief Type definitions for the Floating Point Unit (FPU) + @{ + */ + +/** + \brief Structure type to access the Floating Point Unit (FPU). + */ +typedef struct +{ + uint32_t RESERVED0[1U]; + __IOM uint32_t FPCCR; /*!< Offset: 0x004 (R/W) Floating-Point Context Control Register */ + __IOM uint32_t FPCAR; /*!< Offset: 0x008 (R/W) Floating-Point Context Address Register */ + __IOM uint32_t FPDSCR; /*!< Offset: 0x00C (R/W) Floating-Point Default Status Control Register */ + __IM uint32_t MVFR0; /*!< Offset: 0x010 (R/ ) Media and VFP Feature Register 0 */ + __IM uint32_t MVFR1; /*!< Offset: 0x014 (R/ ) Media and VFP Feature Register 1 */ + __IM uint32_t MVFR2; /*!< Offset: 0x018 (R/ ) Media and VFP Feature Register 2 */ +} FPU_Type; + +/* Floating-Point Context Control Register Definitions */ +#define FPU_FPCCR_ASPEN_Pos 31U /*!< FPCCR: ASPEN bit Position */ +#define FPU_FPCCR_ASPEN_Msk (1UL << FPU_FPCCR_ASPEN_Pos) /*!< FPCCR: ASPEN bit Mask */ + +#define FPU_FPCCR_LSPEN_Pos 30U /*!< FPCCR: LSPEN Position */ +#define FPU_FPCCR_LSPEN_Msk (1UL << FPU_FPCCR_LSPEN_Pos) /*!< FPCCR: LSPEN bit Mask */ + +#define FPU_FPCCR_LSPENS_Pos 29U /*!< FPCCR: LSPENS Position */ +#define FPU_FPCCR_LSPENS_Msk (1UL << FPU_FPCCR_LSPENS_Pos) /*!< FPCCR: LSPENS bit Mask */ + +#define FPU_FPCCR_CLRONRET_Pos 28U /*!< FPCCR: CLRONRET Position */ +#define FPU_FPCCR_CLRONRET_Msk (1UL << FPU_FPCCR_CLRONRET_Pos) /*!< FPCCR: CLRONRET bit Mask */ + +#define FPU_FPCCR_CLRONRETS_Pos 27U /*!< FPCCR: CLRONRETS Position */ +#define FPU_FPCCR_CLRONRETS_Msk (1UL << FPU_FPCCR_CLRONRETS_Pos) /*!< FPCCR: CLRONRETS bit Mask */ + +#define FPU_FPCCR_TS_Pos 26U /*!< FPCCR: TS Position */ +#define FPU_FPCCR_TS_Msk (1UL << FPU_FPCCR_TS_Pos) /*!< FPCCR: TS bit Mask */ + +#define FPU_FPCCR_UFRDY_Pos 10U /*!< FPCCR: UFRDY Position */ +#define FPU_FPCCR_UFRDY_Msk (1UL << FPU_FPCCR_UFRDY_Pos) /*!< FPCCR: UFRDY bit Mask */ + +#define FPU_FPCCR_SPLIMVIOL_Pos 9U /*!< FPCCR: SPLIMVIOL Position */ +#define FPU_FPCCR_SPLIMVIOL_Msk (1UL << FPU_FPCCR_SPLIMVIOL_Pos) /*!< FPCCR: SPLIMVIOL bit Mask */ + +#define FPU_FPCCR_MONRDY_Pos 8U /*!< FPCCR: MONRDY Position */ +#define FPU_FPCCR_MONRDY_Msk (1UL << FPU_FPCCR_MONRDY_Pos) /*!< FPCCR: MONRDY bit Mask */ + +#define FPU_FPCCR_SFRDY_Pos 7U /*!< FPCCR: SFRDY Position */ +#define FPU_FPCCR_SFRDY_Msk (1UL << FPU_FPCCR_SFRDY_Pos) /*!< FPCCR: SFRDY bit Mask */ + +#define FPU_FPCCR_BFRDY_Pos 6U /*!< FPCCR: BFRDY Position */ +#define FPU_FPCCR_BFRDY_Msk (1UL << FPU_FPCCR_BFRDY_Pos) /*!< FPCCR: BFRDY bit Mask */ + +#define FPU_FPCCR_MMRDY_Pos 5U /*!< FPCCR: MMRDY Position */ +#define FPU_FPCCR_MMRDY_Msk (1UL << FPU_FPCCR_MMRDY_Pos) /*!< FPCCR: MMRDY bit Mask */ + +#define FPU_FPCCR_HFRDY_Pos 4U /*!< FPCCR: HFRDY Position */ +#define FPU_FPCCR_HFRDY_Msk (1UL << FPU_FPCCR_HFRDY_Pos) /*!< FPCCR: HFRDY bit Mask */ + +#define FPU_FPCCR_THREAD_Pos 3U /*!< FPCCR: processor mode bit Position */ +#define FPU_FPCCR_THREAD_Msk (1UL << FPU_FPCCR_THREAD_Pos) /*!< FPCCR: processor mode active bit Mask */ + +#define FPU_FPCCR_S_Pos 2U /*!< FPCCR: Security status of the FP context bit Position */ +#define FPU_FPCCR_S_Msk (1UL << FPU_FPCCR_S_Pos) /*!< FPCCR: Security status of the FP context bit Mask */ + +#define FPU_FPCCR_USER_Pos 1U /*!< FPCCR: privilege level bit Position */ +#define FPU_FPCCR_USER_Msk (1UL << FPU_FPCCR_USER_Pos) /*!< FPCCR: privilege level bit Mask */ + +#define FPU_FPCCR_LSPACT_Pos 0U /*!< FPCCR: Lazy state preservation active bit Position */ +#define FPU_FPCCR_LSPACT_Msk (1UL /*<< FPU_FPCCR_LSPACT_Pos*/) /*!< FPCCR: Lazy state preservation active bit Mask */ + +/* Floating-Point Context Address Register Definitions */ +#define FPU_FPCAR_ADDRESS_Pos 3U /*!< FPCAR: ADDRESS bit Position */ +#define FPU_FPCAR_ADDRESS_Msk (0x1FFFFFFFUL << FPU_FPCAR_ADDRESS_Pos) /*!< FPCAR: ADDRESS bit Mask */ + +/* Floating-Point Default Status Control Register Definitions */ +#define FPU_FPDSCR_AHP_Pos 26U /*!< FPDSCR: AHP bit Position */ +#define FPU_FPDSCR_AHP_Msk (1UL << FPU_FPDSCR_AHP_Pos) /*!< FPDSCR: AHP bit Mask */ + +#define FPU_FPDSCR_DN_Pos 25U /*!< FPDSCR: DN bit Position */ +#define FPU_FPDSCR_DN_Msk (1UL << FPU_FPDSCR_DN_Pos) /*!< FPDSCR: DN bit Mask */ + +#define FPU_FPDSCR_FZ_Pos 24U /*!< FPDSCR: FZ bit Position */ +#define FPU_FPDSCR_FZ_Msk (1UL << FPU_FPDSCR_FZ_Pos) /*!< FPDSCR: FZ bit Mask */ + +#define FPU_FPDSCR_RMode_Pos 22U /*!< FPDSCR: RMode bit Position */ +#define FPU_FPDSCR_RMode_Msk (3UL << FPU_FPDSCR_RMode_Pos) /*!< FPDSCR: RMode bit Mask */ + +/* Media and VFP Feature Register 0 Definitions */ +#define FPU_MVFR0_FP_rounding_modes_Pos 28U /*!< MVFR0: FP rounding modes bits Position */ +#define FPU_MVFR0_FP_rounding_modes_Msk (0xFUL << FPU_MVFR0_FP_rounding_modes_Pos) /*!< MVFR0: FP rounding modes bits Mask */ + +#define FPU_MVFR0_Short_vectors_Pos 24U /*!< MVFR0: Short vectors bits Position */ +#define FPU_MVFR0_Short_vectors_Msk (0xFUL << FPU_MVFR0_Short_vectors_Pos) /*!< MVFR0: Short vectors bits Mask */ + +#define FPU_MVFR0_Square_root_Pos 20U /*!< MVFR0: Square root bits Position */ +#define FPU_MVFR0_Square_root_Msk (0xFUL << FPU_MVFR0_Square_root_Pos) /*!< MVFR0: Square root bits Mask */ + +#define FPU_MVFR0_Divide_Pos 16U /*!< MVFR0: Divide bits Position */ +#define FPU_MVFR0_Divide_Msk (0xFUL << FPU_MVFR0_Divide_Pos) /*!< MVFR0: Divide bits Mask */ + +#define FPU_MVFR0_FP_excep_trapping_Pos 12U /*!< MVFR0: FP exception trapping bits Position */ +#define FPU_MVFR0_FP_excep_trapping_Msk (0xFUL << FPU_MVFR0_FP_excep_trapping_Pos) /*!< MVFR0: FP exception trapping bits Mask */ + +#define FPU_MVFR0_Double_precision_Pos 8U /*!< MVFR0: Double-precision bits Position */ +#define FPU_MVFR0_Double_precision_Msk (0xFUL << FPU_MVFR0_Double_precision_Pos) /*!< MVFR0: Double-precision bits Mask */ + +#define FPU_MVFR0_Single_precision_Pos 4U /*!< MVFR0: Single-precision bits Position */ +#define FPU_MVFR0_Single_precision_Msk (0xFUL << FPU_MVFR0_Single_precision_Pos) /*!< MVFR0: Single-precision bits Mask */ + +#define FPU_MVFR0_A_SIMD_registers_Pos 0U /*!< MVFR0: A_SIMD registers bits Position */ +#define FPU_MVFR0_A_SIMD_registers_Msk (0xFUL /*<< FPU_MVFR0_A_SIMD_registers_Pos*/) /*!< MVFR0: A_SIMD registers bits Mask */ + +/* Media and VFP Feature Register 1 Definitions */ +#define FPU_MVFR1_FP_fused_MAC_Pos 28U /*!< MVFR1: FP fused MAC bits Position */ +#define FPU_MVFR1_FP_fused_MAC_Msk (0xFUL << FPU_MVFR1_FP_fused_MAC_Pos) /*!< MVFR1: FP fused MAC bits Mask */ + +#define FPU_MVFR1_FP_HPFP_Pos 24U /*!< MVFR1: FP HPFP bits Position */ +#define FPU_MVFR1_FP_HPFP_Msk (0xFUL << FPU_MVFR1_FP_HPFP_Pos) /*!< MVFR1: FP HPFP bits Mask */ + +#define FPU_MVFR1_D_NaN_mode_Pos 4U /*!< MVFR1: D_NaN mode bits Position */ +#define FPU_MVFR1_D_NaN_mode_Msk (0xFUL << FPU_MVFR1_D_NaN_mode_Pos) /*!< MVFR1: D_NaN mode bits Mask */ + +#define FPU_MVFR1_FtZ_mode_Pos 0U /*!< MVFR1: FtZ mode bits Position */ +#define FPU_MVFR1_FtZ_mode_Msk (0xFUL /*<< FPU_MVFR1_FtZ_mode_Pos*/) /*!< MVFR1: FtZ mode bits Mask */ + +/* Media and VFP Feature Register 2 Definitions */ +#define FPU_MVFR2_FPMisc_Pos 4U /*!< MVFR2: FPMisc bits Position */ +#define FPU_MVFR2_FPMisc_Msk (0xFUL << FPU_MVFR2_FPMisc_Pos) /*!< MVFR2: FPMisc bits Mask */ + +/*@} end of group CMSIS_FPU */ + +/* CoreDebug is deprecated. replaced by DCB (Debug Control Block) */ +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CoreDebug Core Debug Registers (CoreDebug) + \brief Type definitions for the Core Debug Registers + @{ + */ + +/** + \brief \deprecated Structure type to access the Core Debug Register (CoreDebug). + */ +typedef struct +{ + __IOM uint32_t DHCSR; /*!< Offset: 0x000 (R/W) Debug Halting Control and Status Register */ + __OM uint32_t DCRSR; /*!< Offset: 0x004 ( /W) Debug Core Register Selector Register */ + __IOM uint32_t DCRDR; /*!< Offset: 0x008 (R/W) Debug Core Register Data Register */ + __IOM uint32_t DEMCR; /*!< Offset: 0x00C (R/W) Debug Exception and Monitor Control Register */ + uint32_t RESERVED0[1U]; + __IOM uint32_t DAUTHCTRL; /*!< Offset: 0x014 (R/W) Debug Authentication Control Register */ + __IOM uint32_t DSCSR; /*!< Offset: 0x018 (R/W) Debug Security Control and Status Register */ +} CoreDebug_Type; + +/* Debug Halting Control and Status Register Definitions */ +#define CoreDebug_DHCSR_DBGKEY_Pos 16U /*!< \deprecated CoreDebug DHCSR: DBGKEY Position */ +#define CoreDebug_DHCSR_DBGKEY_Msk (0xFFFFUL << CoreDebug_DHCSR_DBGKEY_Pos) /*!< \deprecated CoreDebug DHCSR: DBGKEY Mask */ + +#define CoreDebug_DHCSR_S_RESTART_ST_Pos 26U /*!< \deprecated CoreDebug DHCSR: S_RESTART_ST Position */ +#define CoreDebug_DHCSR_S_RESTART_ST_Msk (1UL << CoreDebug_DHCSR_S_RESTART_ST_Pos) /*!< \deprecated CoreDebug DHCSR: S_RESTART_ST Mask */ + +#define CoreDebug_DHCSR_S_RESET_ST_Pos 25U /*!< \deprecated CoreDebug DHCSR: S_RESET_ST Position */ +#define CoreDebug_DHCSR_S_RESET_ST_Msk (1UL << CoreDebug_DHCSR_S_RESET_ST_Pos) /*!< \deprecated CoreDebug DHCSR: S_RESET_ST Mask */ + +#define CoreDebug_DHCSR_S_RETIRE_ST_Pos 24U /*!< \deprecated CoreDebug DHCSR: S_RETIRE_ST Position */ +#define CoreDebug_DHCSR_S_RETIRE_ST_Msk (1UL << CoreDebug_DHCSR_S_RETIRE_ST_Pos) /*!< \deprecated CoreDebug DHCSR: S_RETIRE_ST Mask */ + +#define CoreDebug_DHCSR_S_LOCKUP_Pos 19U /*!< \deprecated CoreDebug DHCSR: S_LOCKUP Position */ +#define CoreDebug_DHCSR_S_LOCKUP_Msk (1UL << CoreDebug_DHCSR_S_LOCKUP_Pos) /*!< \deprecated CoreDebug DHCSR: S_LOCKUP Mask */ + +#define CoreDebug_DHCSR_S_SLEEP_Pos 18U /*!< \deprecated CoreDebug DHCSR: S_SLEEP Position */ +#define CoreDebug_DHCSR_S_SLEEP_Msk (1UL << CoreDebug_DHCSR_S_SLEEP_Pos) /*!< \deprecated CoreDebug DHCSR: S_SLEEP Mask */ + +#define CoreDebug_DHCSR_S_HALT_Pos 17U /*!< \deprecated CoreDebug DHCSR: S_HALT Position */ +#define CoreDebug_DHCSR_S_HALT_Msk (1UL << CoreDebug_DHCSR_S_HALT_Pos) /*!< \deprecated CoreDebug DHCSR: S_HALT Mask */ + +#define CoreDebug_DHCSR_S_REGRDY_Pos 16U /*!< \deprecated CoreDebug DHCSR: S_REGRDY Position */ +#define CoreDebug_DHCSR_S_REGRDY_Msk (1UL << CoreDebug_DHCSR_S_REGRDY_Pos) /*!< \deprecated CoreDebug DHCSR: S_REGRDY Mask */ + +#define CoreDebug_DHCSR_C_SNAPSTALL_Pos 5U /*!< \deprecated CoreDebug DHCSR: C_SNAPSTALL Position */ +#define CoreDebug_DHCSR_C_SNAPSTALL_Msk (1UL << CoreDebug_DHCSR_C_SNAPSTALL_Pos) /*!< \deprecated CoreDebug DHCSR: C_SNAPSTALL Mask */ + +#define CoreDebug_DHCSR_C_MASKINTS_Pos 3U /*!< \deprecated CoreDebug DHCSR: C_MASKINTS Position */ +#define CoreDebug_DHCSR_C_MASKINTS_Msk (1UL << CoreDebug_DHCSR_C_MASKINTS_Pos) /*!< \deprecated CoreDebug DHCSR: C_MASKINTS Mask */ + +#define CoreDebug_DHCSR_C_STEP_Pos 2U /*!< \deprecated CoreDebug DHCSR: C_STEP Position */ +#define CoreDebug_DHCSR_C_STEP_Msk (1UL << CoreDebug_DHCSR_C_STEP_Pos) /*!< \deprecated CoreDebug DHCSR: C_STEP Mask */ + +#define CoreDebug_DHCSR_C_HALT_Pos 1U /*!< \deprecated CoreDebug DHCSR: C_HALT Position */ +#define CoreDebug_DHCSR_C_HALT_Msk (1UL << CoreDebug_DHCSR_C_HALT_Pos) /*!< \deprecated CoreDebug DHCSR: C_HALT Mask */ + +#define CoreDebug_DHCSR_C_DEBUGEN_Pos 0U /*!< \deprecated CoreDebug DHCSR: C_DEBUGEN Position */ +#define CoreDebug_DHCSR_C_DEBUGEN_Msk (1UL /*<< CoreDebug_DHCSR_C_DEBUGEN_Pos*/) /*!< \deprecated CoreDebug DHCSR: C_DEBUGEN Mask */ + +/* Debug Core Register Selector Register Definitions */ +#define CoreDebug_DCRSR_REGWnR_Pos 16U /*!< \deprecated CoreDebug DCRSR: REGWnR Position */ +#define CoreDebug_DCRSR_REGWnR_Msk (1UL << CoreDebug_DCRSR_REGWnR_Pos) /*!< \deprecated CoreDebug DCRSR: REGWnR Mask */ + +#define CoreDebug_DCRSR_REGSEL_Pos 0U /*!< \deprecated CoreDebug DCRSR: REGSEL Position */ +#define CoreDebug_DCRSR_REGSEL_Msk (0x1FUL /*<< CoreDebug_DCRSR_REGSEL_Pos*/) /*!< \deprecated CoreDebug DCRSR: REGSEL Mask */ + +/* Debug Exception and Monitor Control Register Definitions */ +#define CoreDebug_DEMCR_TRCENA_Pos 24U /*!< \deprecated CoreDebug DEMCR: TRCENA Position */ +#define CoreDebug_DEMCR_TRCENA_Msk (1UL << CoreDebug_DEMCR_TRCENA_Pos) /*!< \deprecated CoreDebug DEMCR: TRCENA Mask */ + +#define CoreDebug_DEMCR_MON_REQ_Pos 19U /*!< \deprecated CoreDebug DEMCR: MON_REQ Position */ +#define CoreDebug_DEMCR_MON_REQ_Msk (1UL << CoreDebug_DEMCR_MON_REQ_Pos) /*!< \deprecated CoreDebug DEMCR: MON_REQ Mask */ + +#define CoreDebug_DEMCR_MON_STEP_Pos 18U /*!< \deprecated CoreDebug DEMCR: MON_STEP Position */ +#define CoreDebug_DEMCR_MON_STEP_Msk (1UL << CoreDebug_DEMCR_MON_STEP_Pos) /*!< \deprecated CoreDebug DEMCR: MON_STEP Mask */ + +#define CoreDebug_DEMCR_MON_PEND_Pos 17U /*!< \deprecated CoreDebug DEMCR: MON_PEND Position */ +#define CoreDebug_DEMCR_MON_PEND_Msk (1UL << CoreDebug_DEMCR_MON_PEND_Pos) /*!< \deprecated CoreDebug DEMCR: MON_PEND Mask */ + +#define CoreDebug_DEMCR_MON_EN_Pos 16U /*!< \deprecated CoreDebug DEMCR: MON_EN Position */ +#define CoreDebug_DEMCR_MON_EN_Msk (1UL << CoreDebug_DEMCR_MON_EN_Pos) /*!< \deprecated CoreDebug DEMCR: MON_EN Mask */ + +#define CoreDebug_DEMCR_VC_HARDERR_Pos 10U /*!< \deprecated CoreDebug DEMCR: VC_HARDERR Position */ +#define CoreDebug_DEMCR_VC_HARDERR_Msk (1UL << CoreDebug_DEMCR_VC_HARDERR_Pos) /*!< \deprecated CoreDebug DEMCR: VC_HARDERR Mask */ + +#define CoreDebug_DEMCR_VC_INTERR_Pos 9U /*!< \deprecated CoreDebug DEMCR: VC_INTERR Position */ +#define CoreDebug_DEMCR_VC_INTERR_Msk (1UL << CoreDebug_DEMCR_VC_INTERR_Pos) /*!< \deprecated CoreDebug DEMCR: VC_INTERR Mask */ + +#define CoreDebug_DEMCR_VC_BUSERR_Pos 8U /*!< \deprecated CoreDebug DEMCR: VC_BUSERR Position */ +#define CoreDebug_DEMCR_VC_BUSERR_Msk (1UL << CoreDebug_DEMCR_VC_BUSERR_Pos) /*!< \deprecated CoreDebug DEMCR: VC_BUSERR Mask */ + +#define CoreDebug_DEMCR_VC_STATERR_Pos 7U /*!< \deprecated CoreDebug DEMCR: VC_STATERR Position */ +#define CoreDebug_DEMCR_VC_STATERR_Msk (1UL << CoreDebug_DEMCR_VC_STATERR_Pos) /*!< \deprecated CoreDebug DEMCR: VC_STATERR Mask */ + +#define CoreDebug_DEMCR_VC_CHKERR_Pos 6U /*!< \deprecated CoreDebug DEMCR: VC_CHKERR Position */ +#define CoreDebug_DEMCR_VC_CHKERR_Msk (1UL << CoreDebug_DEMCR_VC_CHKERR_Pos) /*!< \deprecated CoreDebug DEMCR: VC_CHKERR Mask */ + +#define CoreDebug_DEMCR_VC_NOCPERR_Pos 5U /*!< \deprecated CoreDebug DEMCR: VC_NOCPERR Position */ +#define CoreDebug_DEMCR_VC_NOCPERR_Msk (1UL << CoreDebug_DEMCR_VC_NOCPERR_Pos) /*!< \deprecated CoreDebug DEMCR: VC_NOCPERR Mask */ + +#define CoreDebug_DEMCR_VC_MMERR_Pos 4U /*!< \deprecated CoreDebug DEMCR: VC_MMERR Position */ +#define CoreDebug_DEMCR_VC_MMERR_Msk (1UL << CoreDebug_DEMCR_VC_MMERR_Pos) /*!< \deprecated CoreDebug DEMCR: VC_MMERR Mask */ + +#define CoreDebug_DEMCR_VC_CORERESET_Pos 0U /*!< \deprecated CoreDebug DEMCR: VC_CORERESET Position */ +#define CoreDebug_DEMCR_VC_CORERESET_Msk (1UL /*<< CoreDebug_DEMCR_VC_CORERESET_Pos*/) /*!< \deprecated CoreDebug DEMCR: VC_CORERESET Mask */ + +/* Debug Authentication Control Register Definitions */ +#define CoreDebug_DAUTHCTRL_INTSPNIDEN_Pos 3U /*!< \deprecated CoreDebug DAUTHCTRL: INTSPNIDEN, Position */ +#define CoreDebug_DAUTHCTRL_INTSPNIDEN_Msk (1UL << CoreDebug_DAUTHCTRL_INTSPNIDEN_Pos) /*!< \deprecated CoreDebug DAUTHCTRL: INTSPNIDEN, Mask */ + +#define CoreDebug_DAUTHCTRL_SPNIDENSEL_Pos 2U /*!< \deprecated CoreDebug DAUTHCTRL: SPNIDENSEL Position */ +#define CoreDebug_DAUTHCTRL_SPNIDENSEL_Msk (1UL << CoreDebug_DAUTHCTRL_SPNIDENSEL_Pos) /*!< \deprecated CoreDebug DAUTHCTRL: SPNIDENSEL Mask */ + +#define CoreDebug_DAUTHCTRL_INTSPIDEN_Pos 1U /*!< \deprecated CoreDebug DAUTHCTRL: INTSPIDEN Position */ +#define CoreDebug_DAUTHCTRL_INTSPIDEN_Msk (1UL << CoreDebug_DAUTHCTRL_INTSPIDEN_Pos) /*!< \deprecated CoreDebug DAUTHCTRL: INTSPIDEN Mask */ + +#define CoreDebug_DAUTHCTRL_SPIDENSEL_Pos 0U /*!< \deprecated CoreDebug DAUTHCTRL: SPIDENSEL Position */ +#define CoreDebug_DAUTHCTRL_SPIDENSEL_Msk (1UL /*<< CoreDebug_DAUTHCTRL_SPIDENSEL_Pos*/) /*!< \deprecated CoreDebug DAUTHCTRL: SPIDENSEL Mask */ + +/* Debug Security Control and Status Register Definitions */ +#define CoreDebug_DSCSR_CDS_Pos 16U /*!< \deprecated CoreDebug DSCSR: CDS Position */ +#define CoreDebug_DSCSR_CDS_Msk (1UL << CoreDebug_DSCSR_CDS_Pos) /*!< \deprecated CoreDebug DSCSR: CDS Mask */ + +#define CoreDebug_DSCSR_SBRSEL_Pos 1U /*!< \deprecated CoreDebug DSCSR: SBRSEL Position */ +#define CoreDebug_DSCSR_SBRSEL_Msk (1UL << CoreDebug_DSCSR_SBRSEL_Pos) /*!< \deprecated CoreDebug DSCSR: SBRSEL Mask */ + +#define CoreDebug_DSCSR_SBRSELEN_Pos 0U /*!< \deprecated CoreDebug DSCSR: SBRSELEN Position */ +#define CoreDebug_DSCSR_SBRSELEN_Msk (1UL /*<< CoreDebug_DSCSR_SBRSELEN_Pos*/) /*!< \deprecated CoreDebug DSCSR: SBRSELEN Mask */ + +/*@} end of group CMSIS_CoreDebug */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_DCB Debug Control Block + \brief Type definitions for the Debug Control Block Registers + @{ + */ + +/** + \brief Structure type to access the Debug Control Block Registers (DCB). + */ +typedef struct +{ + __IOM uint32_t DHCSR; /*!< Offset: 0x000 (R/W) Debug Halting Control and Status Register */ + __OM uint32_t DCRSR; /*!< Offset: 0x004 ( /W) Debug Core Register Selector Register */ + __IOM uint32_t DCRDR; /*!< Offset: 0x008 (R/W) Debug Core Register Data Register */ + __IOM uint32_t DEMCR; /*!< Offset: 0x00C (R/W) Debug Exception and Monitor Control Register */ + uint32_t RESERVED0[1U]; + __IOM uint32_t DAUTHCTRL; /*!< Offset: 0x014 (R/W) Debug Authentication Control Register */ + __IOM uint32_t DSCSR; /*!< Offset: 0x018 (R/W) Debug Security Control and Status Register */ +} DCB_Type; + +/* DHCSR, Debug Halting Control and Status Register Definitions */ +#define DCB_DHCSR_DBGKEY_Pos 16U /*!< DCB DHCSR: Debug key Position */ +#define DCB_DHCSR_DBGKEY_Msk (0xFFFFUL << DCB_DHCSR_DBGKEY_Pos) /*!< DCB DHCSR: Debug key Mask */ + +#define DCB_DHCSR_S_RESTART_ST_Pos 26U /*!< DCB DHCSR: Restart sticky status Position */ +#define DCB_DHCSR_S_RESTART_ST_Msk (0x1UL << DCB_DHCSR_S_RESTART_ST_Pos) /*!< DCB DHCSR: Restart sticky status Mask */ + +#define DCB_DHCSR_S_RESET_ST_Pos 25U /*!< DCB DHCSR: Reset sticky status Position */ +#define DCB_DHCSR_S_RESET_ST_Msk (0x1UL << DCB_DHCSR_S_RESET_ST_Pos) /*!< DCB DHCSR: Reset sticky status Mask */ + +#define DCB_DHCSR_S_RETIRE_ST_Pos 24U /*!< DCB DHCSR: Retire sticky status Position */ +#define DCB_DHCSR_S_RETIRE_ST_Msk (0x1UL << DCB_DHCSR_S_RETIRE_ST_Pos) /*!< DCB DHCSR: Retire sticky status Mask */ + +#define DCB_DHCSR_S_SDE_Pos 20U /*!< DCB DHCSR: Secure debug enabled Position */ +#define DCB_DHCSR_S_SDE_Msk (0x1UL << DCB_DHCSR_S_SDE_Pos) /*!< DCB DHCSR: Secure debug enabled Mask */ + +#define DCB_DHCSR_S_LOCKUP_Pos 19U /*!< DCB DHCSR: Lockup status Position */ +#define DCB_DHCSR_S_LOCKUP_Msk (0x1UL << DCB_DHCSR_S_LOCKUP_Pos) /*!< DCB DHCSR: Lockup status Mask */ + +#define DCB_DHCSR_S_SLEEP_Pos 18U /*!< DCB DHCSR: Sleeping status Position */ +#define DCB_DHCSR_S_SLEEP_Msk (0x1UL << DCB_DHCSR_S_SLEEP_Pos) /*!< DCB DHCSR: Sleeping status Mask */ + +#define DCB_DHCSR_S_HALT_Pos 17U /*!< DCB DHCSR: Halted status Position */ +#define DCB_DHCSR_S_HALT_Msk (0x1UL << DCB_DHCSR_S_HALT_Pos) /*!< DCB DHCSR: Halted status Mask */ + +#define DCB_DHCSR_S_REGRDY_Pos 16U /*!< DCB DHCSR: Register ready status Position */ +#define DCB_DHCSR_S_REGRDY_Msk (0x1UL << DCB_DHCSR_S_REGRDY_Pos) /*!< DCB DHCSR: Register ready status Mask */ + +#define DCB_DHCSR_C_SNAPSTALL_Pos 5U /*!< DCB DHCSR: Snap stall control Position */ +#define DCB_DHCSR_C_SNAPSTALL_Msk (0x1UL << DCB_DHCSR_C_SNAPSTALL_Pos) /*!< DCB DHCSR: Snap stall control Mask */ + +#define DCB_DHCSR_C_MASKINTS_Pos 3U /*!< DCB DHCSR: Mask interrupts control Position */ +#define DCB_DHCSR_C_MASKINTS_Msk (0x1UL << DCB_DHCSR_C_MASKINTS_Pos) /*!< DCB DHCSR: Mask interrupts control Mask */ + +#define DCB_DHCSR_C_STEP_Pos 2U /*!< DCB DHCSR: Step control Position */ +#define DCB_DHCSR_C_STEP_Msk (0x1UL << DCB_DHCSR_C_STEP_Pos) /*!< DCB DHCSR: Step control Mask */ + +#define DCB_DHCSR_C_HALT_Pos 1U /*!< DCB DHCSR: Halt control Position */ +#define DCB_DHCSR_C_HALT_Msk (0x1UL << DCB_DHCSR_C_HALT_Pos) /*!< DCB DHCSR: Halt control Mask */ + +#define DCB_DHCSR_C_DEBUGEN_Pos 0U /*!< DCB DHCSR: Debug enable control Position */ +#define DCB_DHCSR_C_DEBUGEN_Msk (0x1UL /*<< DCB_DHCSR_C_DEBUGEN_Pos*/) /*!< DCB DHCSR: Debug enable control Mask */ + +/* DCRSR, Debug Core Register Select Register Definitions */ +#define DCB_DCRSR_REGWnR_Pos 16U /*!< DCB DCRSR: Register write/not-read Position */ +#define DCB_DCRSR_REGWnR_Msk (0x1UL << DCB_DCRSR_REGWnR_Pos) /*!< DCB DCRSR: Register write/not-read Mask */ + +#define DCB_DCRSR_REGSEL_Pos 0U /*!< DCB DCRSR: Register selector Position */ +#define DCB_DCRSR_REGSEL_Msk (0x7FUL /*<< DCB_DCRSR_REGSEL_Pos*/) /*!< DCB DCRSR: Register selector Mask */ + +/* DCRDR, Debug Core Register Data Register Definitions */ +#define DCB_DCRDR_DBGTMP_Pos 0U /*!< DCB DCRDR: Data temporary buffer Position */ +#define DCB_DCRDR_DBGTMP_Msk (0xFFFFFFFFUL /*<< DCB_DCRDR_DBGTMP_Pos*/) /*!< DCB DCRDR: Data temporary buffer Mask */ + +/* DEMCR, Debug Exception and Monitor Control Register Definitions */ +#define DCB_DEMCR_TRCENA_Pos 24U /*!< DCB DEMCR: Trace enable Position */ +#define DCB_DEMCR_TRCENA_Msk (0x1UL << DCB_DEMCR_TRCENA_Pos) /*!< DCB DEMCR: Trace enable Mask */ + +#define DCB_DEMCR_MONPRKEY_Pos 23U /*!< DCB DEMCR: Monitor pend req key Position */ +#define DCB_DEMCR_MONPRKEY_Msk (0x1UL << DCB_DEMCR_MONPRKEY_Pos) /*!< DCB DEMCR: Monitor pend req key Mask */ + +#define DCB_DEMCR_UMON_EN_Pos 21U /*!< DCB DEMCR: Unprivileged monitor enable Position */ +#define DCB_DEMCR_UMON_EN_Msk (0x1UL << DCB_DEMCR_UMON_EN_Pos) /*!< DCB DEMCR: Unprivileged monitor enable Mask */ + +#define DCB_DEMCR_SDME_Pos 20U /*!< DCB DEMCR: Secure DebugMonitor enable Position */ +#define DCB_DEMCR_SDME_Msk (0x1UL << DCB_DEMCR_SDME_Pos) /*!< DCB DEMCR: Secure DebugMonitor enable Mask */ + +#define DCB_DEMCR_MON_REQ_Pos 19U /*!< DCB DEMCR: Monitor request Position */ +#define DCB_DEMCR_MON_REQ_Msk (0x1UL << DCB_DEMCR_MON_REQ_Pos) /*!< DCB DEMCR: Monitor request Mask */ + +#define DCB_DEMCR_MON_STEP_Pos 18U /*!< DCB DEMCR: Monitor step Position */ +#define DCB_DEMCR_MON_STEP_Msk (0x1UL << DCB_DEMCR_MON_STEP_Pos) /*!< DCB DEMCR: Monitor step Mask */ + +#define DCB_DEMCR_MON_PEND_Pos 17U /*!< DCB DEMCR: Monitor pend Position */ +#define DCB_DEMCR_MON_PEND_Msk (0x1UL << DCB_DEMCR_MON_PEND_Pos) /*!< DCB DEMCR: Monitor pend Mask */ + +#define DCB_DEMCR_MON_EN_Pos 16U /*!< DCB DEMCR: Monitor enable Position */ +#define DCB_DEMCR_MON_EN_Msk (0x1UL << DCB_DEMCR_MON_EN_Pos) /*!< DCB DEMCR: Monitor enable Mask */ + +#define DCB_DEMCR_VC_SFERR_Pos 11U /*!< DCB DEMCR: Vector Catch SecureFault Position */ +#define DCB_DEMCR_VC_SFERR_Msk (0x1UL << DCB_DEMCR_VC_SFERR_Pos) /*!< DCB DEMCR: Vector Catch SecureFault Mask */ + +#define DCB_DEMCR_VC_HARDERR_Pos 10U /*!< DCB DEMCR: Vector Catch HardFault errors Position */ +#define DCB_DEMCR_VC_HARDERR_Msk (0x1UL << DCB_DEMCR_VC_HARDERR_Pos) /*!< DCB DEMCR: Vector Catch HardFault errors Mask */ + +#define DCB_DEMCR_VC_INTERR_Pos 9U /*!< DCB DEMCR: Vector Catch interrupt errors Position */ +#define DCB_DEMCR_VC_INTERR_Msk (0x1UL << DCB_DEMCR_VC_INTERR_Pos) /*!< DCB DEMCR: Vector Catch interrupt errors Mask */ + +#define DCB_DEMCR_VC_BUSERR_Pos 8U /*!< DCB DEMCR: Vector Catch BusFault errors Position */ +#define DCB_DEMCR_VC_BUSERR_Msk (0x1UL << DCB_DEMCR_VC_BUSERR_Pos) /*!< DCB DEMCR: Vector Catch BusFault errors Mask */ + +#define DCB_DEMCR_VC_STATERR_Pos 7U /*!< DCB DEMCR: Vector Catch state errors Position */ +#define DCB_DEMCR_VC_STATERR_Msk (0x1UL << DCB_DEMCR_VC_STATERR_Pos) /*!< DCB DEMCR: Vector Catch state errors Mask */ + +#define DCB_DEMCR_VC_CHKERR_Pos 6U /*!< DCB DEMCR: Vector Catch check errors Position */ +#define DCB_DEMCR_VC_CHKERR_Msk (0x1UL << DCB_DEMCR_VC_CHKERR_Pos) /*!< DCB DEMCR: Vector Catch check errors Mask */ + +#define DCB_DEMCR_VC_NOCPERR_Pos 5U /*!< DCB DEMCR: Vector Catch NOCP errors Position */ +#define DCB_DEMCR_VC_NOCPERR_Msk (0x1UL << DCB_DEMCR_VC_NOCPERR_Pos) /*!< DCB DEMCR: Vector Catch NOCP errors Mask */ + +#define DCB_DEMCR_VC_MMERR_Pos 4U /*!< DCB DEMCR: Vector Catch MemManage errors Position */ +#define DCB_DEMCR_VC_MMERR_Msk (0x1UL << DCB_DEMCR_VC_MMERR_Pos) /*!< DCB DEMCR: Vector Catch MemManage errors Mask */ + +#define DCB_DEMCR_VC_CORERESET_Pos 0U /*!< DCB DEMCR: Vector Catch Core reset Position */ +#define DCB_DEMCR_VC_CORERESET_Msk (0x1UL /*<< DCB_DEMCR_VC_CORERESET_Pos*/) /*!< DCB DEMCR: Vector Catch Core reset Mask */ + +/* DAUTHCTRL, Debug Authentication Control Register Definitions */ +#define DCB_DAUTHCTRL_INTSPNIDEN_Pos 3U /*!< DCB DAUTHCTRL: Internal Secure non-invasive debug enable Position */ +#define DCB_DAUTHCTRL_INTSPNIDEN_Msk (0x1UL << DCB_DAUTHCTRL_INTSPNIDEN_Pos) /*!< DCB DAUTHCTRL: Internal Secure non-invasive debug enable Mask */ + +#define DCB_DAUTHCTRL_SPNIDENSEL_Pos 2U /*!< DCB DAUTHCTRL: Secure non-invasive debug enable select Position */ +#define DCB_DAUTHCTRL_SPNIDENSEL_Msk (0x1UL << DCB_DAUTHCTRL_SPNIDENSEL_Pos) /*!< DCB DAUTHCTRL: Secure non-invasive debug enable select Mask */ + +#define DCB_DAUTHCTRL_INTSPIDEN_Pos 1U /*!< DCB DAUTHCTRL: Internal Secure invasive debug enable Position */ +#define DCB_DAUTHCTRL_INTSPIDEN_Msk (0x1UL << DCB_DAUTHCTRL_INTSPIDEN_Pos) /*!< DCB DAUTHCTRL: Internal Secure invasive debug enable Mask */ + +#define DCB_DAUTHCTRL_SPIDENSEL_Pos 0U /*!< DCB DAUTHCTRL: Secure invasive debug enable select Position */ +#define DCB_DAUTHCTRL_SPIDENSEL_Msk (0x1UL /*<< DCB_DAUTHCTRL_SPIDENSEL_Pos*/) /*!< DCB DAUTHCTRL: Secure invasive debug enable select Mask */ + +/* DSCSR, Debug Security Control and Status Register Definitions */ +#define DCB_DSCSR_CDSKEY_Pos 17U /*!< DCB DSCSR: CDS write-enable key Position */ +#define DCB_DSCSR_CDSKEY_Msk (0x1UL << DCB_DSCSR_CDSKEY_Pos) /*!< DCB DSCSR: CDS write-enable key Mask */ + +#define DCB_DSCSR_CDS_Pos 16U /*!< DCB DSCSR: Current domain Secure Position */ +#define DCB_DSCSR_CDS_Msk (0x1UL << DCB_DSCSR_CDS_Pos) /*!< DCB DSCSR: Current domain Secure Mask */ + +#define DCB_DSCSR_SBRSEL_Pos 1U /*!< DCB DSCSR: Secure banked register select Position */ +#define DCB_DSCSR_SBRSEL_Msk (0x1UL << DCB_DSCSR_SBRSEL_Pos) /*!< DCB DSCSR: Secure banked register select Mask */ + +#define DCB_DSCSR_SBRSELEN_Pos 0U /*!< DCB DSCSR: Secure banked register select enable Position */ +#define DCB_DSCSR_SBRSELEN_Msk (0x1UL /*<< DCB_DSCSR_SBRSELEN_Pos*/) /*!< DCB DSCSR: Secure banked register select enable Mask */ + +/*@} end of group CMSIS_DCB */ + + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_DIB Debug Identification Block + \brief Type definitions for the Debug Identification Block Registers + @{ + */ + +/** + \brief Structure type to access the Debug Identification Block Registers (DIB). + */ +typedef struct +{ + __OM uint32_t DLAR; /*!< Offset: 0x000 ( /W) SCS Software Lock Access Register */ + __IM uint32_t DLSR; /*!< Offset: 0x004 (R/ ) SCS Software Lock Status Register */ + __IM uint32_t DAUTHSTATUS; /*!< Offset: 0x008 (R/ ) Debug Authentication Status Register */ + __IM uint32_t DDEVARCH; /*!< Offset: 0x00C (R/ ) SCS Device Architecture Register */ + __IM uint32_t DDEVTYPE; /*!< Offset: 0x010 (R/ ) SCS Device Type Register */ +} DIB_Type; + +/* DLAR, SCS Software Lock Access Register Definitions */ +#define DIB_DLAR_KEY_Pos 0U /*!< DIB DLAR: KEY Position */ +#define DIB_DLAR_KEY_Msk (0xFFFFFFFFUL /*<< DIB_DLAR_KEY_Pos */) /*!< DIB DLAR: KEY Mask */ + +/* DLSR, SCS Software Lock Status Register Definitions */ +#define DIB_DLSR_nTT_Pos 2U /*!< DIB DLSR: Not thirty-two bit Position */ +#define DIB_DLSR_nTT_Msk (0x1UL << DIB_DLSR_nTT_Pos ) /*!< DIB DLSR: Not thirty-two bit Mask */ + +#define DIB_DLSR_SLK_Pos 1U /*!< DIB DLSR: Software Lock status Position */ +#define DIB_DLSR_SLK_Msk (0x1UL << DIB_DLSR_SLK_Pos ) /*!< DIB DLSR: Software Lock status Mask */ + +#define DIB_DLSR_SLI_Pos 0U /*!< DIB DLSR: Software Lock implemented Position */ +#define DIB_DLSR_SLI_Msk (0x1UL /*<< DIB_DLSR_SLI_Pos*/) /*!< DIB DLSR: Software Lock implemented Mask */ + +/* DAUTHSTATUS, Debug Authentication Status Register Definitions */ +#define DIB_DAUTHSTATUS_SNID_Pos 6U /*!< DIB DAUTHSTATUS: Secure Non-invasive Debug Position */ +#define DIB_DAUTHSTATUS_SNID_Msk (0x3UL << DIB_DAUTHSTATUS_SNID_Pos ) /*!< DIB DAUTHSTATUS: Secure Non-invasive Debug Mask */ + +#define DIB_DAUTHSTATUS_SID_Pos 4U /*!< DIB DAUTHSTATUS: Secure Invasive Debug Position */ +#define DIB_DAUTHSTATUS_SID_Msk (0x3UL << DIB_DAUTHSTATUS_SID_Pos ) /*!< DIB DAUTHSTATUS: Secure Invasive Debug Mask */ + +#define DIB_DAUTHSTATUS_NSNID_Pos 2U /*!< DIB DAUTHSTATUS: Non-secure Non-invasive Debug Position */ +#define DIB_DAUTHSTATUS_NSNID_Msk (0x3UL << DIB_DAUTHSTATUS_NSNID_Pos ) /*!< DIB DAUTHSTATUS: Non-secure Non-invasive Debug Mask */ + +#define DIB_DAUTHSTATUS_NSID_Pos 0U /*!< DIB DAUTHSTATUS: Non-secure Invasive Debug Position */ +#define DIB_DAUTHSTATUS_NSID_Msk (0x3UL /*<< DIB_DAUTHSTATUS_NSID_Pos*/) /*!< DIB DAUTHSTATUS: Non-secure Invasive Debug Mask */ + +/* DDEVARCH, SCS Device Architecture Register Definitions */ +#define DIB_DDEVARCH_ARCHITECT_Pos 21U /*!< DIB DDEVARCH: Architect Position */ +#define DIB_DDEVARCH_ARCHITECT_Msk (0x7FFUL << DIB_DDEVARCH_ARCHITECT_Pos ) /*!< DIB DDEVARCH: Architect Mask */ + +#define DIB_DDEVARCH_PRESENT_Pos 20U /*!< DIB DDEVARCH: DEVARCH Present Position */ +#define DIB_DDEVARCH_PRESENT_Msk (0x1FUL << DIB_DDEVARCH_PRESENT_Pos ) /*!< DIB DDEVARCH: DEVARCH Present Mask */ + +#define DIB_DDEVARCH_REVISION_Pos 16U /*!< DIB DDEVARCH: Revision Position */ +#define DIB_DDEVARCH_REVISION_Msk (0xFUL << DIB_DDEVARCH_REVISION_Pos ) /*!< DIB DDEVARCH: Revision Mask */ + +#define DIB_DDEVARCH_ARCHVER_Pos 12U /*!< DIB DDEVARCH: Architecture Version Position */ +#define DIB_DDEVARCH_ARCHVER_Msk (0xFUL << DIB_DDEVARCH_ARCHVER_Pos ) /*!< DIB DDEVARCH: Architecture Version Mask */ + +#define DIB_DDEVARCH_ARCHPART_Pos 0U /*!< DIB DDEVARCH: Architecture Part Position */ +#define DIB_DDEVARCH_ARCHPART_Msk (0xFFFUL /*<< DIB_DDEVARCH_ARCHPART_Pos*/) /*!< DIB DDEVARCH: Architecture Part Mask */ + +/* DDEVTYPE, SCS Device Type Register Definitions */ +#define DIB_DDEVTYPE_SUB_Pos 4U /*!< DIB DDEVTYPE: Sub-type Position */ +#define DIB_DDEVTYPE_SUB_Msk (0xFUL << DIB_DDEVTYPE_SUB_Pos ) /*!< DIB DDEVTYPE: Sub-type Mask */ + +#define DIB_DDEVTYPE_MAJOR_Pos 0U /*!< DIB DDEVTYPE: Major type Position */ +#define DIB_DDEVTYPE_MAJOR_Msk (0xFUL /*<< DIB_DDEVTYPE_MAJOR_Pos*/) /*!< DIB DDEVTYPE: Major type Mask */ + + +/*@} end of group CMSIS_DIB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_bitfield Core register bit field macros + \brief Macros for use with bit field definitions (xxx_Pos, xxx_Msk). + @{ + */ + +/** + \brief Mask and shift a bit field value for use in a register bit range. + \param[in] field Name of the register bit field. + \param[in] value Value of the bit field. This parameter is interpreted as an uint32_t type. + \return Masked and shifted value. +*/ +#define _VAL2FLD(field, value) (((uint32_t)(value) << field ## _Pos) & field ## _Msk) + +/** + \brief Mask and shift a register value to extract a bit filed value. + \param[in] field Name of the register bit field. + \param[in] value Value of register. This parameter is interpreted as an uint32_t type. + \return Masked and shifted bit field value. +*/ +#define _FLD2VAL(field, value) (((uint32_t)(value) & field ## _Msk) >> field ## _Pos) + +/*@} end of group CMSIS_core_bitfield */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_base Core Definitions + \brief Definitions for base addresses, unions, and structures. + @{ + */ + +/* Memory mapping of Core Hardware */ + #define SCS_BASE (0xE000E000UL) /*!< System Control Space Base Address */ + #define ITM_BASE (0xE0000000UL) /*!< ITM Base Address */ + #define DWT_BASE (0xE0001000UL) /*!< DWT Base Address */ + #define TPI_BASE (0xE0040000UL) /*!< TPI Base Address */ + #define CoreDebug_BASE (0xE000EDF0UL) /*!< \deprecated Core Debug Base Address */ + #define DCB_BASE (0xE000EDF0UL) /*!< DCB Base Address */ + #define DIB_BASE (0xE000EFB0UL) /*!< DIB Base Address */ + #define SysTick_BASE (SCS_BASE + 0x0010UL) /*!< SysTick Base Address */ + #define NVIC_BASE (SCS_BASE + 0x0100UL) /*!< NVIC Base Address */ + #define SCB_BASE (SCS_BASE + 0x0D00UL) /*!< System Control Block Base Address */ + + #define SCnSCB ((SCnSCB_Type *) SCS_BASE ) /*!< System control Register not in SCB */ + #define SCB ((SCB_Type *) SCB_BASE ) /*!< SCB configuration struct */ + #define SysTick ((SysTick_Type *) SysTick_BASE ) /*!< SysTick configuration struct */ + #define NVIC ((NVIC_Type *) NVIC_BASE ) /*!< NVIC configuration struct */ + #define ITM ((ITM_Type *) ITM_BASE ) /*!< ITM configuration struct */ + #define DWT ((DWT_Type *) DWT_BASE ) /*!< DWT configuration struct */ + #define TPI ((TPI_Type *) TPI_BASE ) /*!< TPI configuration struct */ + #define CoreDebug ((CoreDebug_Type *) CoreDebug_BASE ) /*!< \deprecated Core Debug configuration struct */ + #define DCB ((DCB_Type *) DCB_BASE ) /*!< DCB configuration struct */ + #define DIB ((DIB_Type *) DIB_BASE ) /*!< DIB configuration struct */ + + #if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + #define MPU_BASE (SCS_BASE + 0x0D90UL) /*!< Memory Protection Unit */ + #define MPU ((MPU_Type *) MPU_BASE ) /*!< Memory Protection Unit */ + #endif + + #if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) + #define SAU_BASE (SCS_BASE + 0x0DD0UL) /*!< Security Attribution Unit */ + #define SAU ((SAU_Type *) SAU_BASE ) /*!< Security Attribution Unit */ + #endif + + #define FPU_BASE (SCS_BASE + 0x0F30UL) /*!< Floating Point Unit */ + #define FPU ((FPU_Type *) FPU_BASE ) /*!< Floating Point Unit */ + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) + #define SCS_BASE_NS (0xE002E000UL) /*!< System Control Space Base Address (non-secure address space) */ + #define CoreDebug_BASE_NS (0xE002EDF0UL) /*!< \deprecated Core Debug Base Address (non-secure address space) */ + #define DCB_BASE_NS (0xE002EDF0UL) /*!< DCB Base Address (non-secure address space) */ + #define DIB_BASE_NS (0xE002EFB0UL) /*!< DIB Base Address (non-secure address space) */ + #define SysTick_BASE_NS (SCS_BASE_NS + 0x0010UL) /*!< SysTick Base Address (non-secure address space) */ + #define NVIC_BASE_NS (SCS_BASE_NS + 0x0100UL) /*!< NVIC Base Address (non-secure address space) */ + #define SCB_BASE_NS (SCS_BASE_NS + 0x0D00UL) /*!< System Control Block Base Address (non-secure address space) */ + + #define SCnSCB_NS ((SCnSCB_Type *) SCS_BASE_NS ) /*!< System control Register not in SCB(non-secure address space) */ + #define SCB_NS ((SCB_Type *) SCB_BASE_NS ) /*!< SCB configuration struct (non-secure address space) */ + #define SysTick_NS ((SysTick_Type *) SysTick_BASE_NS ) /*!< SysTick configuration struct (non-secure address space) */ + #define NVIC_NS ((NVIC_Type *) NVIC_BASE_NS ) /*!< NVIC configuration struct (non-secure address space) */ + #define CoreDebug_NS ((CoreDebug_Type *) CoreDebug_BASE_NS) /*!< \deprecated Core Debug configuration struct (non-secure address space) */ + #define DCB_NS ((DCB_Type *) DCB_BASE_NS ) /*!< DCB configuration struct (non-secure address space) */ + #define DIB_NS ((DIB_Type *) DIB_BASE_NS ) /*!< DIB configuration struct (non-secure address space) */ + + #if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + #define MPU_BASE_NS (SCS_BASE_NS + 0x0D90UL) /*!< Memory Protection Unit (non-secure address space) */ + #define MPU_NS ((MPU_Type *) MPU_BASE_NS ) /*!< Memory Protection Unit (non-secure address space) */ + #endif + + #define FPU_BASE_NS (SCS_BASE_NS + 0x0F30UL) /*!< Floating Point Unit (non-secure address space) */ + #define FPU_NS ((FPU_Type *) FPU_BASE_NS ) /*!< Floating Point Unit (non-secure address space) */ + +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ +/*@} */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_register_aliases Backwards Compatibility Aliases + \brief Register alias definitions for backwards compatibility. + @{ + */ +#define ID_ADR (ID_AFR) /*!< SCB Auxiliary Feature Register */ +/*@} */ + + +/******************************************************************************* + * Hardware Abstraction Layer + Core Function Interface contains: + - Core NVIC Functions + - Core SysTick Functions + - Core Debug Functions + - Core Register Access Functions + ******************************************************************************/ +/** + \defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference +*/ + + + +/* ########################## NVIC functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_NVICFunctions NVIC Functions + \brief Functions that manage interrupts and exceptions via the NVIC. + @{ + */ + +#ifdef CMSIS_NVIC_VIRTUAL + #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE + #define CMSIS_NVIC_VIRTUAL_HEADER_FILE "cmsis_nvic_virtual.h" + #endif + #include CMSIS_NVIC_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetPriorityGrouping __NVIC_SetPriorityGrouping + #define NVIC_GetPriorityGrouping __NVIC_GetPriorityGrouping + #define NVIC_EnableIRQ __NVIC_EnableIRQ + #define NVIC_GetEnableIRQ __NVIC_GetEnableIRQ + #define NVIC_DisableIRQ __NVIC_DisableIRQ + #define NVIC_GetPendingIRQ __NVIC_GetPendingIRQ + #define NVIC_SetPendingIRQ __NVIC_SetPendingIRQ + #define NVIC_ClearPendingIRQ __NVIC_ClearPendingIRQ + #define NVIC_GetActive __NVIC_GetActive + #define NVIC_SetPriority __NVIC_SetPriority + #define NVIC_GetPriority __NVIC_GetPriority + #define NVIC_SystemReset __NVIC_SystemReset +#endif /* CMSIS_NVIC_VIRTUAL */ + +#ifdef CMSIS_VECTAB_VIRTUAL + #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE + #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE "cmsis_vectab_virtual.h" + #endif + #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetVector __NVIC_SetVector + #define NVIC_GetVector __NVIC_GetVector +#endif /* (CMSIS_VECTAB_VIRTUAL) */ + +#define NVIC_USER_IRQ_OFFSET 16 + + +/* Special LR values for Secure/Non-Secure call handling and exception handling */ + +/* Function Return Payload (from ARMv8-M Architecture Reference Manual) LR value on entry from Secure BLXNS */ +#define FNC_RETURN (0xFEFFFFFFUL) /* bit [0] ignored when processing a branch */ + +/* The following EXC_RETURN mask values are used to evaluate the LR on exception entry */ +#define EXC_RETURN_PREFIX (0xFF000000UL) /* bits [31:24] set to indicate an EXC_RETURN value */ +#define EXC_RETURN_S (0x00000040UL) /* bit [6] stack used to push registers: 0=Non-secure 1=Secure */ +#define EXC_RETURN_DCRS (0x00000020UL) /* bit [5] stacking rules for called registers: 0=skipped 1=saved */ +#define EXC_RETURN_FTYPE (0x00000010UL) /* bit [4] allocate stack for floating-point context: 0=done 1=skipped */ +#define EXC_RETURN_MODE (0x00000008UL) /* bit [3] processor mode for return: 0=Handler mode 1=Thread mode */ +#define EXC_RETURN_SPSEL (0x00000004UL) /* bit [2] stack pointer used to restore context: 0=MSP 1=PSP */ +#define EXC_RETURN_ES (0x00000001UL) /* bit [0] security state exception was taken to: 0=Non-secure 1=Secure */ + +/* Integrity Signature (from ARMv8-M Architecture Reference Manual) for exception context stacking */ +#if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) /* Value for processors with floating-point extension: */ +#define EXC_INTEGRITY_SIGNATURE (0xFEFA125AUL) /* bit [0] SFTC must match LR bit[4] EXC_RETURN_FTYPE */ +#else +#define EXC_INTEGRITY_SIGNATURE (0xFEFA125BUL) /* Value for processors without floating-point extension */ +#endif + + +/** + \brief Set Priority Grouping + \details Sets the priority grouping field using the required unlock sequence. + The parameter PriorityGroup is assigned to the field SCB->AIRCR [10:8] PRIGROUP field. + Only values from 0..7 are used. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Priority grouping field. + */ +__STATIC_INLINE void __NVIC_SetPriorityGrouping(uint32_t PriorityGroup) +{ + uint32_t reg_value; + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + + reg_value = SCB->AIRCR; /* read old register configuration */ + reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change */ + reg_value = (reg_value | + ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (PriorityGroupTmp << SCB_AIRCR_PRIGROUP_Pos) ); /* Insert write key and priority group */ + SCB->AIRCR = reg_value; +} + + +/** + \brief Get Priority Grouping + \details Reads the priority grouping field from the NVIC Interrupt Controller. + \return Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field). + */ +__STATIC_INLINE uint32_t __NVIC_GetPriorityGrouping(void) +{ + return ((uint32_t)((SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos)); +} + + +/** + \brief Enable Interrupt + \details Enables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + __COMPILER_BARRIER(); + NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __COMPILER_BARRIER(); + } +} + + +/** + \brief Get Interrupt Enable status + \details Returns a device specific interrupt enable status from the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt is not enabled. + \return 1 Interrupt is enabled. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Disable Interrupt + \details Disables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_DisableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __DSB(); + __ISB(); + } +} + + +/** + \brief Get Pending Interrupt + \details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not pending. + \return 1 Interrupt status is pending. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Pending Interrupt + \details Sets the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Clear Pending Interrupt + \details Clears the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Active Interrupt + \details Reads the active register in the NVIC and returns the active bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not active. + \return 1 Interrupt status is active. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetActive(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief Get Interrupt Target State + \details Reads the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 if interrupt is assigned to Secure + \return 1 if interrupt is assigned to Non Secure + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t NVIC_GetTargetState(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Interrupt Target State + \details Sets the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 if interrupt is assigned to Secure + 1 if interrupt is assigned to Non Secure + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t NVIC_SetTargetState(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] |= ((uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL))); + return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Clear Interrupt Target State + \details Clears the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 if interrupt is assigned to Secure + 1 if interrupt is assigned to Non Secure + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t NVIC_ClearTargetState(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] &= ~((uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL))); + return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + + +/** + \brief Set Interrupt Priority + \details Sets the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \param [in] priority Priority to set. + \note The priority cannot be set for every processor exception. + */ +__STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->IPR[((uint32_t)IRQn)] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } + else + { + SCB->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } +} + + +/** + \brief Get Interrupt Priority + \details Reads the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Interrupt Priority. + Value is aligned automatically to the implemented priority bits of the microcontroller. + */ +__STATIC_INLINE uint32_t __NVIC_GetPriority(IRQn_Type IRQn) +{ + + if ((int32_t)(IRQn) >= 0) + { + return(((uint32_t)NVIC->IPR[((uint32_t)IRQn)] >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return(((uint32_t)SCB->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] >> (8U - __NVIC_PRIO_BITS))); + } +} + + +/** + \brief Encode Priority + \details Encodes the priority for an interrupt with the given priority group, + preemptive priority value, and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Used priority group. + \param [in] PreemptPriority Preemptive priority value (starting from 0). + \param [in] SubPriority Subpriority value (starting from 0). + \return Encoded priority. Value can be used in the function \ref NVIC_SetPriority(). + */ +__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + return ( + ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) | + ((SubPriority & (uint32_t)((1UL << (SubPriorityBits )) - 1UL))) + ); +} + + +/** + \brief Decode Priority + \details Decodes an interrupt priority value with a given priority group to + preemptive priority value and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set. + \param [in] Priority Priority value, which can be retrieved with the function \ref NVIC_GetPriority(). + \param [in] PriorityGroup Used priority group. + \param [out] pPreemptPriority Preemptive priority value (starting from 0). + \param [out] pSubPriority Subpriority value (starting from 0). + */ +__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* const pPreemptPriority, uint32_t* const pSubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + *pPreemptPriority = (Priority >> SubPriorityBits) & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL); + *pSubPriority = (Priority ) & (uint32_t)((1UL << (SubPriorityBits )) - 1UL); +} + + +/** + \brief Set Interrupt Vector + \details Sets an interrupt vector in SRAM based interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + VTOR must been relocated to SRAM before. + \param [in] IRQn Interrupt number + \param [in] vector Address of interrupt handler function + */ +__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector) +{ + uint32_t *vectors = (uint32_t *)SCB->VTOR; + vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET] = vector; + __DSB(); +} + + +/** + \brief Get Interrupt Vector + \details Reads an interrupt vector from interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Address of interrupt handler function + */ +__STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn) +{ + uint32_t *vectors = (uint32_t *)SCB->VTOR; + return vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET]; +} + + +/** + \brief System Reset + \details Initiates a system reset request to reset the MCU. + */ +__NO_RETURN __STATIC_INLINE void __NVIC_SystemReset(void) +{ + __DSB(); /* Ensure all outstanding memory accesses included + buffered write are completed before reset */ + SCB->AIRCR = (uint32_t)((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) | + SCB_AIRCR_SYSRESETREQ_Msk ); /* Keep priority group unchanged */ + __DSB(); /* Ensure completion of memory access */ + + for(;;) /* wait until reset */ + { + __NOP(); + } +} + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief Set Priority Grouping (non-secure) + \details Sets the non-secure priority grouping field when in secure state using the required unlock sequence. + The parameter PriorityGroup is assigned to the field SCB->AIRCR [10:8] PRIGROUP field. + Only values from 0..7 are used. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Priority grouping field. + */ +__STATIC_INLINE void TZ_NVIC_SetPriorityGrouping_NS(uint32_t PriorityGroup) +{ + uint32_t reg_value; + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + + reg_value = SCB_NS->AIRCR; /* read old register configuration */ + reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change */ + reg_value = (reg_value | + ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (PriorityGroupTmp << SCB_AIRCR_PRIGROUP_Pos) ); /* Insert write key and priority group */ + SCB_NS->AIRCR = reg_value; +} + + +/** + \brief Get Priority Grouping (non-secure) + \details Reads the priority grouping field from the non-secure NVIC when in secure state. + \return Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field). + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetPriorityGrouping_NS(void) +{ + return ((uint32_t)((SCB_NS->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos)); +} + + +/** + \brief Enable Interrupt (non-secure) + \details Enables a device specific interrupt in the non-secure NVIC interrupt controller when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_EnableIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Interrupt Enable status (non-secure) + \details Returns a device specific interrupt enable status from the non-secure NVIC interrupt controller when in secure state. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt is not enabled. + \return 1 Interrupt is enabled. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetEnableIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Disable Interrupt (non-secure) + \details Disables a device specific interrupt in the non-secure NVIC interrupt controller when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_DisableIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Pending Interrupt (non-secure) + \details Reads the NVIC pending register in the non-secure NVIC when in secure state and returns the pending bit for the specified device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not pending. + \return 1 Interrupt status is pending. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetPendingIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Pending Interrupt (non-secure) + \details Sets the pending bit of a device specific interrupt in the non-secure NVIC pending register when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_SetPendingIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Clear Pending Interrupt (non-secure) + \details Clears the pending bit of a device specific interrupt in the non-secure NVIC pending register when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_ClearPendingIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Active Interrupt (non-secure) + \details Reads the active register in non-secure NVIC when in secure state and returns the active bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not active. + \return 1 Interrupt status is active. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetActive_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Interrupt Priority (non-secure) + \details Sets the priority of a non-secure device specific interrupt or a non-secure processor exception when in secure state. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \param [in] priority Priority to set. + \note The priority cannot be set for every non-secure processor exception. + */ +__STATIC_INLINE void TZ_NVIC_SetPriority_NS(IRQn_Type IRQn, uint32_t priority) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->IPR[((uint32_t)IRQn)] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } + else + { + SCB_NS->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } +} + + +/** + \brief Get Interrupt Priority (non-secure) + \details Reads the priority of a non-secure device specific interrupt or a non-secure processor exception when in secure state. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Interrupt Priority. Value is aligned automatically to the implemented priority bits of the microcontroller. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetPriority_NS(IRQn_Type IRQn) +{ + + if ((int32_t)(IRQn) >= 0) + { + return(((uint32_t)NVIC_NS->IPR[((uint32_t)IRQn)] >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return(((uint32_t)SCB_NS->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] >> (8U - __NVIC_PRIO_BITS))); + } +} +#endif /* defined (__ARM_FEATURE_CMSE) &&(__ARM_FEATURE_CMSE == 3U) */ + +/*@} end of CMSIS_Core_NVICFunctions */ + +/* ########################## MPU functions #################################### */ + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + +#include "mpu_armv8.h" + +#endif + +/* ########################## FPU functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_FpuFunctions FPU Functions + \brief Function that provides FPU type. + @{ + */ + +/** + \brief get FPU type + \details returns the FPU type + \returns + - \b 0: No FPU + - \b 1: Single precision FPU + - \b 2: Double + Single precision FPU + */ +__STATIC_INLINE uint32_t SCB_GetFPUType(void) +{ + uint32_t mvfr0; + + mvfr0 = FPU->MVFR0; + if ((mvfr0 & (FPU_MVFR0_Single_precision_Msk | FPU_MVFR0_Double_precision_Msk)) == 0x220U) + { + return 2U; /* Double + Single precision FPU */ + } + else if ((mvfr0 & (FPU_MVFR0_Single_precision_Msk | FPU_MVFR0_Double_precision_Msk)) == 0x020U) + { + return 1U; /* Single precision FPU */ + } + else + { + return 0U; /* No FPU */ + } +} + + +/*@} end of CMSIS_Core_FpuFunctions */ + + + +/* ########################## SAU functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SAUFunctions SAU Functions + \brief Functions that configure the SAU. + @{ + */ + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) + +/** + \brief Enable SAU + \details Enables the Security Attribution Unit (SAU). + */ +__STATIC_INLINE void TZ_SAU_Enable(void) +{ + SAU->CTRL |= (SAU_CTRL_ENABLE_Msk); +} + + + +/** + \brief Disable SAU + \details Disables the Security Attribution Unit (SAU). + */ +__STATIC_INLINE void TZ_SAU_Disable(void) +{ + SAU->CTRL &= ~(SAU_CTRL_ENABLE_Msk); +} + +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + +/*@} end of CMSIS_Core_SAUFunctions */ + + + + +/* ################################## Debug Control function ############################################ */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_DCBFunctions Debug Control Functions + \brief Functions that access the Debug Control Block. + @{ + */ + + +/** + \brief Set Debug Authentication Control Register + \details writes to Debug Authentication Control register. + \param [in] value value to be writen. + */ +__STATIC_INLINE void DCB_SetAuthCtrl(uint32_t value) +{ + __DSB(); + __ISB(); + DCB->DAUTHCTRL = value; + __DSB(); + __ISB(); +} + + +/** + \brief Get Debug Authentication Control Register + \details Reads Debug Authentication Control register. + \return Debug Authentication Control Register. + */ +__STATIC_INLINE uint32_t DCB_GetAuthCtrl(void) +{ + return (DCB->DAUTHCTRL); +} + + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief Set Debug Authentication Control Register (non-secure) + \details writes to non-secure Debug Authentication Control register when in secure state. + \param [in] value value to be writen + */ +__STATIC_INLINE void TZ_DCB_SetAuthCtrl_NS(uint32_t value) +{ + __DSB(); + __ISB(); + DCB_NS->DAUTHCTRL = value; + __DSB(); + __ISB(); +} + + +/** + \brief Get Debug Authentication Control Register (non-secure) + \details Reads non-secure Debug Authentication Control register when in secure state. + \return Debug Authentication Control Register. + */ +__STATIC_INLINE uint32_t TZ_DCB_GetAuthCtrl_NS(void) +{ + return (DCB_NS->DAUTHCTRL); +} +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + +/*@} end of CMSIS_Core_DCBFunctions */ + + + + +/* ################################## Debug Identification function ############################################ */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_DIBFunctions Debug Identification Functions + \brief Functions that access the Debug Identification Block. + @{ + */ + + +/** + \brief Get Debug Authentication Status Register + \details Reads Debug Authentication Status register. + \return Debug Authentication Status Register. + */ +__STATIC_INLINE uint32_t DIB_GetAuthStatus(void) +{ + return (DIB->DAUTHSTATUS); +} + + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief Get Debug Authentication Status Register (non-secure) + \details Reads non-secure Debug Authentication Status register when in secure state. + \return Debug Authentication Status Register. + */ +__STATIC_INLINE uint32_t TZ_DIB_GetAuthStatus_NS(void) +{ + return (DIB_NS->DAUTHSTATUS); +} +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + +/*@} end of CMSIS_Core_DCBFunctions */ + + + + +/* ################################## SysTick function ############################################ */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SysTickFunctions SysTick Functions + \brief Functions that configure the System. + @{ + */ + +#if defined (__Vendor_SysTickConfig) && (__Vendor_SysTickConfig == 0U) + +/** + \brief System Tick Configuration + \details Initializes the System Timer and its interrupt, and starts the System Tick Timer. + Counter is in free running mode to generate periodic interrupts. + \param [in] ticks Number of ticks between two interrupts. + \return 0 Function succeeded. + \return 1 Function failed. + \note When the variable __Vendor_SysTickConfig is set to 1, then the + function SysTick_Config is not included. In this case, the file device.h + must contain a vendor-specific implementation of this function. + */ +__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks) +{ + if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) + { + return (1UL); /* Reload value impossible */ + } + + SysTick->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ + NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ + SysTick->VAL = 0UL; /* Load the SysTick Counter Value */ + SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0UL); /* Function successful */ +} + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief System Tick Configuration (non-secure) + \details Initializes the non-secure System Timer and its interrupt when in secure state, and starts the System Tick Timer. + Counter is in free running mode to generate periodic interrupts. + \param [in] ticks Number of ticks between two interrupts. + \return 0 Function succeeded. + \return 1 Function failed. + \note When the variable __Vendor_SysTickConfig is set to 1, then the + function TZ_SysTick_Config_NS is not included. In this case, the file device.h + must contain a vendor-specific implementation of this function. + + */ +__STATIC_INLINE uint32_t TZ_SysTick_Config_NS(uint32_t ticks) +{ + if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) + { + return (1UL); /* Reload value impossible */ + } + + SysTick_NS->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ + TZ_NVIC_SetPriority_NS (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ + SysTick_NS->VAL = 0UL; /* Load the SysTick Counter Value */ + SysTick_NS->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0UL); /* Function successful */ +} +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + +#endif + +/*@} end of CMSIS_Core_SysTickFunctions */ + + + +/* ##################################### Debug In/Output function ########################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_core_DebugFunctions ITM Functions + \brief Functions that access the ITM debug interface. + @{ + */ + +extern volatile int32_t ITM_RxBuffer; /*!< External variable to receive characters. */ +#define ITM_RXBUFFER_EMPTY ((int32_t)0x5AA55AA5U) /*!< Value identifying \ref ITM_RxBuffer is ready for next character. */ + + +/** + \brief ITM Send Character + \details Transmits a character via the ITM channel 0, and + \li Just returns when no debugger is connected that has booked the output. + \li Is blocking when a debugger is connected, but the previous character sent has not been transmitted. + \param [in] ch Character to transmit. + \returns Character to transmit. + */ +__STATIC_INLINE uint32_t ITM_SendChar (uint32_t ch) +{ + if (((ITM->TCR & ITM_TCR_ITMENA_Msk) != 0UL) && /* ITM enabled */ + ((ITM->TER & 1UL ) != 0UL) ) /* ITM Port #0 enabled */ + { + while (ITM->PORT[0U].u32 == 0UL) + { + __NOP(); + } + ITM->PORT[0U].u8 = (uint8_t)ch; + } + return (ch); +} + + +/** + \brief ITM Receive Character + \details Inputs a character via the external variable \ref ITM_RxBuffer. + \return Received character. + \return -1 No character pending. + */ +__STATIC_INLINE int32_t ITM_ReceiveChar (void) +{ + int32_t ch = -1; /* no character available */ + + if (ITM_RxBuffer != ITM_RXBUFFER_EMPTY) + { + ch = ITM_RxBuffer; + ITM_RxBuffer = ITM_RXBUFFER_EMPTY; /* ready for next character */ + } + + return (ch); +} + + +/** + \brief ITM Check Character + \details Checks whether a character is pending for reading in the variable \ref ITM_RxBuffer. + \return 0 No character available. + \return 1 Character available. + */ +__STATIC_INLINE int32_t ITM_CheckChar (void) +{ + + if (ITM_RxBuffer == ITM_RXBUFFER_EMPTY) + { + return (0); /* no character available */ + } + else + { + return (1); /* character available */ + } +} + +/*@} end of CMSIS_core_DebugFunctions */ + + + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_CM33_H_DEPENDANT */ + +#endif /* __CMSIS_GENERIC */ diff --git a/bsp/renesas/ra8m1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm35p.h b/bsp/renesas/ra8m1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm35p.h new file mode 100644 index 000000000000..3843d9542c5a --- /dev/null +++ b/bsp/renesas/ra8m1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm35p.h @@ -0,0 +1,3277 @@ +/**************************************************************************//** + * @file core_cm35p.h + * @brief CMSIS Cortex-M35P Core Peripheral Access Layer Header File + * @version V1.1.3 + * @date 13. October 2021 + ******************************************************************************/ +/* + * Copyright (c) 2018-2021 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#elif defined (__clang__) + #pragma clang system_header /* treat file as system include file */ +#elif defined ( __GNUC__ ) + #pragma GCC diagnostic ignored "-Wpedantic" /* disable pedantic warning due to unnamed structs/unions */ +#endif + +#ifndef __CORE_CM35P_H_GENERIC +#define __CORE_CM35P_H_GENERIC + +#include + +#ifdef __cplusplus + extern "C" { +#endif + +/** + \page CMSIS_MISRA_Exceptions MISRA-C:2004 Compliance Exceptions + CMSIS violates the following MISRA-C:2004 rules: + + \li Required Rule 8.5, object/function definition in header file.
+ Function definitions in header files are used to allow 'inlining'. + + \li Required Rule 18.4, declaration of union type or object of union type: '{...}'.
+ Unions are used for effective representation of core registers. + + \li Advisory Rule 19.7, Function-like macro defined.
+ Function-like macros are used to allow more efficient code. + */ + + +/******************************************************************************* + * CMSIS definitions + ******************************************************************************/ +/** + \ingroup Cortex_M35P + @{ + */ + +#include "cmsis_version.h" + +/* CMSIS CM35P definitions */ +#define __CM35P_CMSIS_VERSION_MAIN (__CM_CMSIS_VERSION_MAIN) /*!< \deprecated [31:16] CMSIS HAL main version */ +#define __CM35P_CMSIS_VERSION_SUB (__CM_CMSIS_VERSION_SUB) /*!< \deprecated [15:0] CMSIS HAL sub version */ +#define __CM35P_CMSIS_VERSION ((__CM35P_CMSIS_VERSION_MAIN << 16U) | \ + __CM35P_CMSIS_VERSION_SUB ) /*!< \deprecated CMSIS HAL version number */ + +#define __CORTEX_M (35U) /*!< Cortex-M Core */ + +/** __FPU_USED indicates whether an FPU is used or not. + For this, __FPU_PRESENT has to be checked prior to making use of FPU specific registers and functions. +*/ +#if defined ( __CC_ARM ) + #if defined (__TARGET_FPU_VFP) + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + + #if defined (__ARM_FEATURE_DSP) && (__ARM_FEATURE_DSP == 1U) + #if defined (__DSP_PRESENT) && (__DSP_PRESENT == 1U) + #define __DSP_USED 1U + #else + #error "Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)" + #define __DSP_USED 0U + #endif + #else + #define __DSP_USED 0U + #endif + +#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) + #if defined (__ARM_FP) + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #warning "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + + #if defined (__ARM_FEATURE_DSP) && (__ARM_FEATURE_DSP == 1U) + #if defined (__DSP_PRESENT) && (__DSP_PRESENT == 1U) + #define __DSP_USED 1U + #else + #error "Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)" + #define __DSP_USED 0U + #endif + #else + #define __DSP_USED 0U + #endif + +#elif defined ( __GNUC__ ) + #if defined (__VFP_FP__) && !defined(__SOFTFP__) + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + + #if defined (__ARM_FEATURE_DSP) && (__ARM_FEATURE_DSP == 1U) + #if defined (__DSP_PRESENT) && (__DSP_PRESENT == 1U) + #define __DSP_USED 1U + #else + #error "Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)" + #define __DSP_USED 0U + #endif + #else + #define __DSP_USED 0U + #endif + +#elif defined ( __ICCARM__ ) + #if defined (__ARMVFP__) + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + + #if defined (__ARM_FEATURE_DSP) && (__ARM_FEATURE_DSP == 1U) + #if defined (__DSP_PRESENT) && (__DSP_PRESENT == 1U) + #define __DSP_USED 1U + #else + #error "Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)" + #define __DSP_USED 0U + #endif + #else + #define __DSP_USED 0U + #endif + +#elif defined ( __TI_ARM__ ) + #if defined (__TI_VFP_SUPPORT__) + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined ( __TASKING__ ) + #if defined (__FPU_VFP__) + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined ( __CSMC__ ) + #if ( __CSMC__ & 0x400U) + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#endif + +#include "cmsis_compiler.h" /* CMSIS compiler specific defines */ + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_CM35P_H_GENERIC */ + +#ifndef __CMSIS_GENERIC + +#ifndef __CORE_CM35P_H_DEPENDANT +#define __CORE_CM35P_H_DEPENDANT + +#ifdef __cplusplus + extern "C" { +#endif + +/* check device defines and use defaults */ +#if defined __CHECK_DEVICE_DEFINES + #ifndef __CM35P_REV + #define __CM35P_REV 0x0000U + #warning "__CM35P_REV not defined in device header file; using default!" + #endif + + #ifndef __FPU_PRESENT + #define __FPU_PRESENT 0U + #warning "__FPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __MPU_PRESENT + #define __MPU_PRESENT 0U + #warning "__MPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __SAUREGION_PRESENT + #define __SAUREGION_PRESENT 0U + #warning "__SAUREGION_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __DSP_PRESENT + #define __DSP_PRESENT 0U + #warning "__DSP_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __VTOR_PRESENT + #define __VTOR_PRESENT 1U + #warning "__VTOR_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __NVIC_PRIO_BITS + #define __NVIC_PRIO_BITS 3U + #warning "__NVIC_PRIO_BITS not defined in device header file; using default!" + #endif + + #ifndef __Vendor_SysTickConfig + #define __Vendor_SysTickConfig 0U + #warning "__Vendor_SysTickConfig not defined in device header file; using default!" + #endif +#endif + +/* IO definitions (access restrictions to peripheral registers) */ +/** + \defgroup CMSIS_glob_defs CMSIS Global Defines + + IO Type Qualifiers are used + \li to specify the access to peripheral variables. + \li for automatic generation of peripheral register debug information. +*/ +#ifdef __cplusplus + #define __I volatile /*!< Defines 'read only' permissions */ +#else + #define __I volatile const /*!< Defines 'read only' permissions */ +#endif +#define __O volatile /*!< Defines 'write only' permissions */ +#define __IO volatile /*!< Defines 'read / write' permissions */ + +/* following defines should be used for structure members */ +#define __IM volatile const /*! Defines 'read only' structure member permissions */ +#define __OM volatile /*! Defines 'write only' structure member permissions */ +#define __IOM volatile /*! Defines 'read / write' structure member permissions */ + +/*@} end of group Cortex_M35P */ + + + +/******************************************************************************* + * Register Abstraction + Core Register contain: + - Core Register + - Core NVIC Register + - Core SCB Register + - Core SysTick Register + - Core Debug Register + - Core MPU Register + - Core SAU Register + - Core FPU Register + ******************************************************************************/ +/** + \defgroup CMSIS_core_register Defines and Type Definitions + \brief Type definitions and defines for Cortex-M processor based devices. +*/ + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CORE Status and Control Registers + \brief Core Register type definitions. + @{ + */ + +/** + \brief Union type to access the Application Program Status Register (APSR). + */ +typedef union +{ + struct + { + uint32_t _reserved0:16; /*!< bit: 0..15 Reserved */ + uint32_t GE:4; /*!< bit: 16..19 Greater than or Equal flags */ + uint32_t _reserved1:7; /*!< bit: 20..26 Reserved */ + uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} APSR_Type; + +/* APSR Register Definitions */ +#define APSR_N_Pos 31U /*!< APSR: N Position */ +#define APSR_N_Msk (1UL << APSR_N_Pos) /*!< APSR: N Mask */ + +#define APSR_Z_Pos 30U /*!< APSR: Z Position */ +#define APSR_Z_Msk (1UL << APSR_Z_Pos) /*!< APSR: Z Mask */ + +#define APSR_C_Pos 29U /*!< APSR: C Position */ +#define APSR_C_Msk (1UL << APSR_C_Pos) /*!< APSR: C Mask */ + +#define APSR_V_Pos 28U /*!< APSR: V Position */ +#define APSR_V_Msk (1UL << APSR_V_Pos) /*!< APSR: V Mask */ + +#define APSR_Q_Pos 27U /*!< APSR: Q Position */ +#define APSR_Q_Msk (1UL << APSR_Q_Pos) /*!< APSR: Q Mask */ + +#define APSR_GE_Pos 16U /*!< APSR: GE Position */ +#define APSR_GE_Msk (0xFUL << APSR_GE_Pos) /*!< APSR: GE Mask */ + + +/** + \brief Union type to access the Interrupt Program Status Register (IPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:23; /*!< bit: 9..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} IPSR_Type; + +/* IPSR Register Definitions */ +#define IPSR_ISR_Pos 0U /*!< IPSR: ISR Position */ +#define IPSR_ISR_Msk (0x1FFUL /*<< IPSR_ISR_Pos*/) /*!< IPSR: ISR Mask */ + + +/** + \brief Union type to access the Special-Purpose Program Status Registers (xPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:7; /*!< bit: 9..15 Reserved */ + uint32_t GE:4; /*!< bit: 16..19 Greater than or Equal flags */ + uint32_t _reserved1:4; /*!< bit: 20..23 Reserved */ + uint32_t T:1; /*!< bit: 24 Thumb bit (read 0) */ + uint32_t IT:2; /*!< bit: 25..26 saved IT state (read 0) */ + uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} xPSR_Type; + +/* xPSR Register Definitions */ +#define xPSR_N_Pos 31U /*!< xPSR: N Position */ +#define xPSR_N_Msk (1UL << xPSR_N_Pos) /*!< xPSR: N Mask */ + +#define xPSR_Z_Pos 30U /*!< xPSR: Z Position */ +#define xPSR_Z_Msk (1UL << xPSR_Z_Pos) /*!< xPSR: Z Mask */ + +#define xPSR_C_Pos 29U /*!< xPSR: C Position */ +#define xPSR_C_Msk (1UL << xPSR_C_Pos) /*!< xPSR: C Mask */ + +#define xPSR_V_Pos 28U /*!< xPSR: V Position */ +#define xPSR_V_Msk (1UL << xPSR_V_Pos) /*!< xPSR: V Mask */ + +#define xPSR_Q_Pos 27U /*!< xPSR: Q Position */ +#define xPSR_Q_Msk (1UL << xPSR_Q_Pos) /*!< xPSR: Q Mask */ + +#define xPSR_IT_Pos 25U /*!< xPSR: IT Position */ +#define xPSR_IT_Msk (3UL << xPSR_IT_Pos) /*!< xPSR: IT Mask */ + +#define xPSR_T_Pos 24U /*!< xPSR: T Position */ +#define xPSR_T_Msk (1UL << xPSR_T_Pos) /*!< xPSR: T Mask */ + +#define xPSR_GE_Pos 16U /*!< xPSR: GE Position */ +#define xPSR_GE_Msk (0xFUL << xPSR_GE_Pos) /*!< xPSR: GE Mask */ + +#define xPSR_ISR_Pos 0U /*!< xPSR: ISR Position */ +#define xPSR_ISR_Msk (0x1FFUL /*<< xPSR_ISR_Pos*/) /*!< xPSR: ISR Mask */ + + +/** + \brief Union type to access the Control Registers (CONTROL). + */ +typedef union +{ + struct + { + uint32_t nPRIV:1; /*!< bit: 0 Execution privilege in Thread mode */ + uint32_t SPSEL:1; /*!< bit: 1 Stack-pointer select */ + uint32_t FPCA:1; /*!< bit: 2 Floating-point context active */ + uint32_t SFPA:1; /*!< bit: 3 Secure floating-point active */ + uint32_t _reserved1:28; /*!< bit: 4..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} CONTROL_Type; + +/* CONTROL Register Definitions */ +#define CONTROL_SFPA_Pos 3U /*!< CONTROL: SFPA Position */ +#define CONTROL_SFPA_Msk (1UL << CONTROL_SFPA_Pos) /*!< CONTROL: SFPA Mask */ + +#define CONTROL_FPCA_Pos 2U /*!< CONTROL: FPCA Position */ +#define CONTROL_FPCA_Msk (1UL << CONTROL_FPCA_Pos) /*!< CONTROL: FPCA Mask */ + +#define CONTROL_SPSEL_Pos 1U /*!< CONTROL: SPSEL Position */ +#define CONTROL_SPSEL_Msk (1UL << CONTROL_SPSEL_Pos) /*!< CONTROL: SPSEL Mask */ + +#define CONTROL_nPRIV_Pos 0U /*!< CONTROL: nPRIV Position */ +#define CONTROL_nPRIV_Msk (1UL /*<< CONTROL_nPRIV_Pos*/) /*!< CONTROL: nPRIV Mask */ + +/*@} end of group CMSIS_CORE */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_NVIC Nested Vectored Interrupt Controller (NVIC) + \brief Type definitions for the NVIC Registers + @{ + */ + +/** + \brief Structure type to access the Nested Vectored Interrupt Controller (NVIC). + */ +typedef struct +{ + __IOM uint32_t ISER[16U]; /*!< Offset: 0x000 (R/W) Interrupt Set Enable Register */ + uint32_t RESERVED0[16U]; + __IOM uint32_t ICER[16U]; /*!< Offset: 0x080 (R/W) Interrupt Clear Enable Register */ + uint32_t RSERVED1[16U]; + __IOM uint32_t ISPR[16U]; /*!< Offset: 0x100 (R/W) Interrupt Set Pending Register */ + uint32_t RESERVED2[16U]; + __IOM uint32_t ICPR[16U]; /*!< Offset: 0x180 (R/W) Interrupt Clear Pending Register */ + uint32_t RESERVED3[16U]; + __IOM uint32_t IABR[16U]; /*!< Offset: 0x200 (R/W) Interrupt Active bit Register */ + uint32_t RESERVED4[16U]; + __IOM uint32_t ITNS[16U]; /*!< Offset: 0x280 (R/W) Interrupt Non-Secure State Register */ + uint32_t RESERVED5[16U]; + __IOM uint8_t IPR[496U]; /*!< Offset: 0x300 (R/W) Interrupt Priority Register (8Bit wide) */ + uint32_t RESERVED6[580U]; + __OM uint32_t STIR; /*!< Offset: 0xE00 ( /W) Software Trigger Interrupt Register */ +} NVIC_Type; + +/* Software Triggered Interrupt Register Definitions */ +#define NVIC_STIR_INTID_Pos 0U /*!< STIR: INTLINESNUM Position */ +#define NVIC_STIR_INTID_Msk (0x1FFUL /*<< NVIC_STIR_INTID_Pos*/) /*!< STIR: INTLINESNUM Mask */ + +/*@} end of group CMSIS_NVIC */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SCB System Control Block (SCB) + \brief Type definitions for the System Control Block Registers + @{ + */ + +/** + \brief Structure type to access the System Control Block (SCB). + */ +typedef struct +{ + __IM uint32_t CPUID; /*!< Offset: 0x000 (R/ ) CPUID Base Register */ + __IOM uint32_t ICSR; /*!< Offset: 0x004 (R/W) Interrupt Control and State Register */ + __IOM uint32_t VTOR; /*!< Offset: 0x008 (R/W) Vector Table Offset Register */ + __IOM uint32_t AIRCR; /*!< Offset: 0x00C (R/W) Application Interrupt and Reset Control Register */ + __IOM uint32_t SCR; /*!< Offset: 0x010 (R/W) System Control Register */ + __IOM uint32_t CCR; /*!< Offset: 0x014 (R/W) Configuration Control Register */ + __IOM uint8_t SHPR[12U]; /*!< Offset: 0x018 (R/W) System Handlers Priority Registers (4-7, 8-11, 12-15) */ + __IOM uint32_t SHCSR; /*!< Offset: 0x024 (R/W) System Handler Control and State Register */ + __IOM uint32_t CFSR; /*!< Offset: 0x028 (R/W) Configurable Fault Status Register */ + __IOM uint32_t HFSR; /*!< Offset: 0x02C (R/W) HardFault Status Register */ + __IOM uint32_t DFSR; /*!< Offset: 0x030 (R/W) Debug Fault Status Register */ + __IOM uint32_t MMFAR; /*!< Offset: 0x034 (R/W) MemManage Fault Address Register */ + __IOM uint32_t BFAR; /*!< Offset: 0x038 (R/W) BusFault Address Register */ + __IOM uint32_t AFSR; /*!< Offset: 0x03C (R/W) Auxiliary Fault Status Register */ + __IM uint32_t ID_PFR[2U]; /*!< Offset: 0x040 (R/ ) Processor Feature Register */ + __IM uint32_t ID_DFR; /*!< Offset: 0x048 (R/ ) Debug Feature Register */ + __IM uint32_t ID_AFR; /*!< Offset: 0x04C (R/ ) Auxiliary Feature Register */ + __IM uint32_t ID_MMFR[4U]; /*!< Offset: 0x050 (R/ ) Memory Model Feature Register */ + __IM uint32_t ID_ISAR[6U]; /*!< Offset: 0x060 (R/ ) Instruction Set Attributes Register */ + __IM uint32_t CLIDR; /*!< Offset: 0x078 (R/ ) Cache Level ID register */ + __IM uint32_t CTR; /*!< Offset: 0x07C (R/ ) Cache Type register */ + __IM uint32_t CCSIDR; /*!< Offset: 0x080 (R/ ) Cache Size ID Register */ + __IOM uint32_t CSSELR; /*!< Offset: 0x084 (R/W) Cache Size Selection Register */ + __IOM uint32_t CPACR; /*!< Offset: 0x088 (R/W) Coprocessor Access Control Register */ + __IOM uint32_t NSACR; /*!< Offset: 0x08C (R/W) Non-Secure Access Control Register */ + uint32_t RESERVED7[21U]; + __IOM uint32_t SFSR; /*!< Offset: 0x0E4 (R/W) Secure Fault Status Register */ + __IOM uint32_t SFAR; /*!< Offset: 0x0E8 (R/W) Secure Fault Address Register */ + uint32_t RESERVED3[69U]; + __OM uint32_t STIR; /*!< Offset: 0x200 ( /W) Software Triggered Interrupt Register */ + uint32_t RESERVED4[15U]; + __IM uint32_t MVFR0; /*!< Offset: 0x240 (R/ ) Media and VFP Feature Register 0 */ + __IM uint32_t MVFR1; /*!< Offset: 0x244 (R/ ) Media and VFP Feature Register 1 */ + __IM uint32_t MVFR2; /*!< Offset: 0x248 (R/ ) Media and VFP Feature Register 2 */ + uint32_t RESERVED5[1U]; + __OM uint32_t ICIALLU; /*!< Offset: 0x250 ( /W) I-Cache Invalidate All to PoU */ + uint32_t RESERVED6[1U]; + __OM uint32_t ICIMVAU; /*!< Offset: 0x258 ( /W) I-Cache Invalidate by MVA to PoU */ + __OM uint32_t DCIMVAC; /*!< Offset: 0x25C ( /W) D-Cache Invalidate by MVA to PoC */ + __OM uint32_t DCISW; /*!< Offset: 0x260 ( /W) D-Cache Invalidate by Set-way */ + __OM uint32_t DCCMVAU; /*!< Offset: 0x264 ( /W) D-Cache Clean by MVA to PoU */ + __OM uint32_t DCCMVAC; /*!< Offset: 0x268 ( /W) D-Cache Clean by MVA to PoC */ + __OM uint32_t DCCSW; /*!< Offset: 0x26C ( /W) D-Cache Clean by Set-way */ + __OM uint32_t DCCIMVAC; /*!< Offset: 0x270 ( /W) D-Cache Clean and Invalidate by MVA to PoC */ + __OM uint32_t DCCISW; /*!< Offset: 0x274 ( /W) D-Cache Clean and Invalidate by Set-way */ + __OM uint32_t BPIALL; /*!< Offset: 0x278 ( /W) Branch Predictor Invalidate All */ +} SCB_Type; + +/* SCB CPUID Register Definitions */ +#define SCB_CPUID_IMPLEMENTER_Pos 24U /*!< SCB CPUID: IMPLEMENTER Position */ +#define SCB_CPUID_IMPLEMENTER_Msk (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos) /*!< SCB CPUID: IMPLEMENTER Mask */ + +#define SCB_CPUID_VARIANT_Pos 20U /*!< SCB CPUID: VARIANT Position */ +#define SCB_CPUID_VARIANT_Msk (0xFUL << SCB_CPUID_VARIANT_Pos) /*!< SCB CPUID: VARIANT Mask */ + +#define SCB_CPUID_ARCHITECTURE_Pos 16U /*!< SCB CPUID: ARCHITECTURE Position */ +#define SCB_CPUID_ARCHITECTURE_Msk (0xFUL << SCB_CPUID_ARCHITECTURE_Pos) /*!< SCB CPUID: ARCHITECTURE Mask */ + +#define SCB_CPUID_PARTNO_Pos 4U /*!< SCB CPUID: PARTNO Position */ +#define SCB_CPUID_PARTNO_Msk (0xFFFUL << SCB_CPUID_PARTNO_Pos) /*!< SCB CPUID: PARTNO Mask */ + +#define SCB_CPUID_REVISION_Pos 0U /*!< SCB CPUID: REVISION Position */ +#define SCB_CPUID_REVISION_Msk (0xFUL /*<< SCB_CPUID_REVISION_Pos*/) /*!< SCB CPUID: REVISION Mask */ + +/* SCB Interrupt Control State Register Definitions */ +#define SCB_ICSR_PENDNMISET_Pos 31U /*!< SCB ICSR: PENDNMISET Position */ +#define SCB_ICSR_PENDNMISET_Msk (1UL << SCB_ICSR_PENDNMISET_Pos) /*!< SCB ICSR: PENDNMISET Mask */ + +#define SCB_ICSR_NMIPENDSET_Pos SCB_ICSR_PENDNMISET_Pos /*!< SCB ICSR: NMIPENDSET Position, backward compatibility */ +#define SCB_ICSR_NMIPENDSET_Msk SCB_ICSR_PENDNMISET_Msk /*!< SCB ICSR: NMIPENDSET Mask, backward compatibility */ + +#define SCB_ICSR_PENDNMICLR_Pos 30U /*!< SCB ICSR: PENDNMICLR Position */ +#define SCB_ICSR_PENDNMICLR_Msk (1UL << SCB_ICSR_PENDNMICLR_Pos) /*!< SCB ICSR: PENDNMICLR Mask */ + +#define SCB_ICSR_PENDSVSET_Pos 28U /*!< SCB ICSR: PENDSVSET Position */ +#define SCB_ICSR_PENDSVSET_Msk (1UL << SCB_ICSR_PENDSVSET_Pos) /*!< SCB ICSR: PENDSVSET Mask */ + +#define SCB_ICSR_PENDSVCLR_Pos 27U /*!< SCB ICSR: PENDSVCLR Position */ +#define SCB_ICSR_PENDSVCLR_Msk (1UL << SCB_ICSR_PENDSVCLR_Pos) /*!< SCB ICSR: PENDSVCLR Mask */ + +#define SCB_ICSR_PENDSTSET_Pos 26U /*!< SCB ICSR: PENDSTSET Position */ +#define SCB_ICSR_PENDSTSET_Msk (1UL << SCB_ICSR_PENDSTSET_Pos) /*!< SCB ICSR: PENDSTSET Mask */ + +#define SCB_ICSR_PENDSTCLR_Pos 25U /*!< SCB ICSR: PENDSTCLR Position */ +#define SCB_ICSR_PENDSTCLR_Msk (1UL << SCB_ICSR_PENDSTCLR_Pos) /*!< SCB ICSR: PENDSTCLR Mask */ + +#define SCB_ICSR_STTNS_Pos 24U /*!< SCB ICSR: STTNS Position (Security Extension) */ +#define SCB_ICSR_STTNS_Msk (1UL << SCB_ICSR_STTNS_Pos) /*!< SCB ICSR: STTNS Mask (Security Extension) */ + +#define SCB_ICSR_ISRPREEMPT_Pos 23U /*!< SCB ICSR: ISRPREEMPT Position */ +#define SCB_ICSR_ISRPREEMPT_Msk (1UL << SCB_ICSR_ISRPREEMPT_Pos) /*!< SCB ICSR: ISRPREEMPT Mask */ + +#define SCB_ICSR_ISRPENDING_Pos 22U /*!< SCB ICSR: ISRPENDING Position */ +#define SCB_ICSR_ISRPENDING_Msk (1UL << SCB_ICSR_ISRPENDING_Pos) /*!< SCB ICSR: ISRPENDING Mask */ + +#define SCB_ICSR_VECTPENDING_Pos 12U /*!< SCB ICSR: VECTPENDING Position */ +#define SCB_ICSR_VECTPENDING_Msk (0x1FFUL << SCB_ICSR_VECTPENDING_Pos) /*!< SCB ICSR: VECTPENDING Mask */ + +#define SCB_ICSR_RETTOBASE_Pos 11U /*!< SCB ICSR: RETTOBASE Position */ +#define SCB_ICSR_RETTOBASE_Msk (1UL << SCB_ICSR_RETTOBASE_Pos) /*!< SCB ICSR: RETTOBASE Mask */ + +#define SCB_ICSR_VECTACTIVE_Pos 0U /*!< SCB ICSR: VECTACTIVE Position */ +#define SCB_ICSR_VECTACTIVE_Msk (0x1FFUL /*<< SCB_ICSR_VECTACTIVE_Pos*/) /*!< SCB ICSR: VECTACTIVE Mask */ + +/* SCB Vector Table Offset Register Definitions */ +#define SCB_VTOR_TBLOFF_Pos 7U /*!< SCB VTOR: TBLOFF Position */ +#define SCB_VTOR_TBLOFF_Msk (0x1FFFFFFUL << SCB_VTOR_TBLOFF_Pos) /*!< SCB VTOR: TBLOFF Mask */ + +/* SCB Application Interrupt and Reset Control Register Definitions */ +#define SCB_AIRCR_VECTKEY_Pos 16U /*!< SCB AIRCR: VECTKEY Position */ +#define SCB_AIRCR_VECTKEY_Msk (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos) /*!< SCB AIRCR: VECTKEY Mask */ + +#define SCB_AIRCR_VECTKEYSTAT_Pos 16U /*!< SCB AIRCR: VECTKEYSTAT Position */ +#define SCB_AIRCR_VECTKEYSTAT_Msk (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos) /*!< SCB AIRCR: VECTKEYSTAT Mask */ + +#define SCB_AIRCR_ENDIANESS_Pos 15U /*!< SCB AIRCR: ENDIANESS Position */ +#define SCB_AIRCR_ENDIANESS_Msk (1UL << SCB_AIRCR_ENDIANESS_Pos) /*!< SCB AIRCR: ENDIANESS Mask */ + +#define SCB_AIRCR_PRIS_Pos 14U /*!< SCB AIRCR: PRIS Position */ +#define SCB_AIRCR_PRIS_Msk (1UL << SCB_AIRCR_PRIS_Pos) /*!< SCB AIRCR: PRIS Mask */ + +#define SCB_AIRCR_BFHFNMINS_Pos 13U /*!< SCB AIRCR: BFHFNMINS Position */ +#define SCB_AIRCR_BFHFNMINS_Msk (1UL << SCB_AIRCR_BFHFNMINS_Pos) /*!< SCB AIRCR: BFHFNMINS Mask */ + +#define SCB_AIRCR_PRIGROUP_Pos 8U /*!< SCB AIRCR: PRIGROUP Position */ +#define SCB_AIRCR_PRIGROUP_Msk (7UL << SCB_AIRCR_PRIGROUP_Pos) /*!< SCB AIRCR: PRIGROUP Mask */ + +#define SCB_AIRCR_SYSRESETREQS_Pos 3U /*!< SCB AIRCR: SYSRESETREQS Position */ +#define SCB_AIRCR_SYSRESETREQS_Msk (1UL << SCB_AIRCR_SYSRESETREQS_Pos) /*!< SCB AIRCR: SYSRESETREQS Mask */ + +#define SCB_AIRCR_SYSRESETREQ_Pos 2U /*!< SCB AIRCR: SYSRESETREQ Position */ +#define SCB_AIRCR_SYSRESETREQ_Msk (1UL << SCB_AIRCR_SYSRESETREQ_Pos) /*!< SCB AIRCR: SYSRESETREQ Mask */ + +#define SCB_AIRCR_VECTCLRACTIVE_Pos 1U /*!< SCB AIRCR: VECTCLRACTIVE Position */ +#define SCB_AIRCR_VECTCLRACTIVE_Msk (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos) /*!< SCB AIRCR: VECTCLRACTIVE Mask */ + +/* SCB System Control Register Definitions */ +#define SCB_SCR_SEVONPEND_Pos 4U /*!< SCB SCR: SEVONPEND Position */ +#define SCB_SCR_SEVONPEND_Msk (1UL << SCB_SCR_SEVONPEND_Pos) /*!< SCB SCR: SEVONPEND Mask */ + +#define SCB_SCR_SLEEPDEEPS_Pos 3U /*!< SCB SCR: SLEEPDEEPS Position */ +#define SCB_SCR_SLEEPDEEPS_Msk (1UL << SCB_SCR_SLEEPDEEPS_Pos) /*!< SCB SCR: SLEEPDEEPS Mask */ + +#define SCB_SCR_SLEEPDEEP_Pos 2U /*!< SCB SCR: SLEEPDEEP Position */ +#define SCB_SCR_SLEEPDEEP_Msk (1UL << SCB_SCR_SLEEPDEEP_Pos) /*!< SCB SCR: SLEEPDEEP Mask */ + +#define SCB_SCR_SLEEPONEXIT_Pos 1U /*!< SCB SCR: SLEEPONEXIT Position */ +#define SCB_SCR_SLEEPONEXIT_Msk (1UL << SCB_SCR_SLEEPONEXIT_Pos) /*!< SCB SCR: SLEEPONEXIT Mask */ + +/* SCB Configuration Control Register Definitions */ +#define SCB_CCR_BP_Pos 18U /*!< SCB CCR: BP Position */ +#define SCB_CCR_BP_Msk (1UL << SCB_CCR_BP_Pos) /*!< SCB CCR: BP Mask */ + +#define SCB_CCR_IC_Pos 17U /*!< SCB CCR: IC Position */ +#define SCB_CCR_IC_Msk (1UL << SCB_CCR_IC_Pos) /*!< SCB CCR: IC Mask */ + +#define SCB_CCR_DC_Pos 16U /*!< SCB CCR: DC Position */ +#define SCB_CCR_DC_Msk (1UL << SCB_CCR_DC_Pos) /*!< SCB CCR: DC Mask */ + +#define SCB_CCR_STKOFHFNMIGN_Pos 10U /*!< SCB CCR: STKOFHFNMIGN Position */ +#define SCB_CCR_STKOFHFNMIGN_Msk (1UL << SCB_CCR_STKOFHFNMIGN_Pos) /*!< SCB CCR: STKOFHFNMIGN Mask */ + +#define SCB_CCR_BFHFNMIGN_Pos 8U /*!< SCB CCR: BFHFNMIGN Position */ +#define SCB_CCR_BFHFNMIGN_Msk (1UL << SCB_CCR_BFHFNMIGN_Pos) /*!< SCB CCR: BFHFNMIGN Mask */ + +#define SCB_CCR_DIV_0_TRP_Pos 4U /*!< SCB CCR: DIV_0_TRP Position */ +#define SCB_CCR_DIV_0_TRP_Msk (1UL << SCB_CCR_DIV_0_TRP_Pos) /*!< SCB CCR: DIV_0_TRP Mask */ + +#define SCB_CCR_UNALIGN_TRP_Pos 3U /*!< SCB CCR: UNALIGN_TRP Position */ +#define SCB_CCR_UNALIGN_TRP_Msk (1UL << SCB_CCR_UNALIGN_TRP_Pos) /*!< SCB CCR: UNALIGN_TRP Mask */ + +#define SCB_CCR_USERSETMPEND_Pos 1U /*!< SCB CCR: USERSETMPEND Position */ +#define SCB_CCR_USERSETMPEND_Msk (1UL << SCB_CCR_USERSETMPEND_Pos) /*!< SCB CCR: USERSETMPEND Mask */ + +/* SCB System Handler Control and State Register Definitions */ +#define SCB_SHCSR_HARDFAULTPENDED_Pos 21U /*!< SCB SHCSR: HARDFAULTPENDED Position */ +#define SCB_SHCSR_HARDFAULTPENDED_Msk (1UL << SCB_SHCSR_HARDFAULTPENDED_Pos) /*!< SCB SHCSR: HARDFAULTPENDED Mask */ + +#define SCB_SHCSR_SECUREFAULTPENDED_Pos 20U /*!< SCB SHCSR: SECUREFAULTPENDED Position */ +#define SCB_SHCSR_SECUREFAULTPENDED_Msk (1UL << SCB_SHCSR_SECUREFAULTPENDED_Pos) /*!< SCB SHCSR: SECUREFAULTPENDED Mask */ + +#define SCB_SHCSR_SECUREFAULTENA_Pos 19U /*!< SCB SHCSR: SECUREFAULTENA Position */ +#define SCB_SHCSR_SECUREFAULTENA_Msk (1UL << SCB_SHCSR_SECUREFAULTENA_Pos) /*!< SCB SHCSR: SECUREFAULTENA Mask */ + +#define SCB_SHCSR_USGFAULTENA_Pos 18U /*!< SCB SHCSR: USGFAULTENA Position */ +#define SCB_SHCSR_USGFAULTENA_Msk (1UL << SCB_SHCSR_USGFAULTENA_Pos) /*!< SCB SHCSR: USGFAULTENA Mask */ + +#define SCB_SHCSR_BUSFAULTENA_Pos 17U /*!< SCB SHCSR: BUSFAULTENA Position */ +#define SCB_SHCSR_BUSFAULTENA_Msk (1UL << SCB_SHCSR_BUSFAULTENA_Pos) /*!< SCB SHCSR: BUSFAULTENA Mask */ + +#define SCB_SHCSR_MEMFAULTENA_Pos 16U /*!< SCB SHCSR: MEMFAULTENA Position */ +#define SCB_SHCSR_MEMFAULTENA_Msk (1UL << SCB_SHCSR_MEMFAULTENA_Pos) /*!< SCB SHCSR: MEMFAULTENA Mask */ + +#define SCB_SHCSR_SVCALLPENDED_Pos 15U /*!< SCB SHCSR: SVCALLPENDED Position */ +#define SCB_SHCSR_SVCALLPENDED_Msk (1UL << SCB_SHCSR_SVCALLPENDED_Pos) /*!< SCB SHCSR: SVCALLPENDED Mask */ + +#define SCB_SHCSR_BUSFAULTPENDED_Pos 14U /*!< SCB SHCSR: BUSFAULTPENDED Position */ +#define SCB_SHCSR_BUSFAULTPENDED_Msk (1UL << SCB_SHCSR_BUSFAULTPENDED_Pos) /*!< SCB SHCSR: BUSFAULTPENDED Mask */ + +#define SCB_SHCSR_MEMFAULTPENDED_Pos 13U /*!< SCB SHCSR: MEMFAULTPENDED Position */ +#define SCB_SHCSR_MEMFAULTPENDED_Msk (1UL << SCB_SHCSR_MEMFAULTPENDED_Pos) /*!< SCB SHCSR: MEMFAULTPENDED Mask */ + +#define SCB_SHCSR_USGFAULTPENDED_Pos 12U /*!< SCB SHCSR: USGFAULTPENDED Position */ +#define SCB_SHCSR_USGFAULTPENDED_Msk (1UL << SCB_SHCSR_USGFAULTPENDED_Pos) /*!< SCB SHCSR: USGFAULTPENDED Mask */ + +#define SCB_SHCSR_SYSTICKACT_Pos 11U /*!< SCB SHCSR: SYSTICKACT Position */ +#define SCB_SHCSR_SYSTICKACT_Msk (1UL << SCB_SHCSR_SYSTICKACT_Pos) /*!< SCB SHCSR: SYSTICKACT Mask */ + +#define SCB_SHCSR_PENDSVACT_Pos 10U /*!< SCB SHCSR: PENDSVACT Position */ +#define SCB_SHCSR_PENDSVACT_Msk (1UL << SCB_SHCSR_PENDSVACT_Pos) /*!< SCB SHCSR: PENDSVACT Mask */ + +#define SCB_SHCSR_MONITORACT_Pos 8U /*!< SCB SHCSR: MONITORACT Position */ +#define SCB_SHCSR_MONITORACT_Msk (1UL << SCB_SHCSR_MONITORACT_Pos) /*!< SCB SHCSR: MONITORACT Mask */ + +#define SCB_SHCSR_SVCALLACT_Pos 7U /*!< SCB SHCSR: SVCALLACT Position */ +#define SCB_SHCSR_SVCALLACT_Msk (1UL << SCB_SHCSR_SVCALLACT_Pos) /*!< SCB SHCSR: SVCALLACT Mask */ + +#define SCB_SHCSR_NMIACT_Pos 5U /*!< SCB SHCSR: NMIACT Position */ +#define SCB_SHCSR_NMIACT_Msk (1UL << SCB_SHCSR_NMIACT_Pos) /*!< SCB SHCSR: NMIACT Mask */ + +#define SCB_SHCSR_SECUREFAULTACT_Pos 4U /*!< SCB SHCSR: SECUREFAULTACT Position */ +#define SCB_SHCSR_SECUREFAULTACT_Msk (1UL << SCB_SHCSR_SECUREFAULTACT_Pos) /*!< SCB SHCSR: SECUREFAULTACT Mask */ + +#define SCB_SHCSR_USGFAULTACT_Pos 3U /*!< SCB SHCSR: USGFAULTACT Position */ +#define SCB_SHCSR_USGFAULTACT_Msk (1UL << SCB_SHCSR_USGFAULTACT_Pos) /*!< SCB SHCSR: USGFAULTACT Mask */ + +#define SCB_SHCSR_HARDFAULTACT_Pos 2U /*!< SCB SHCSR: HARDFAULTACT Position */ +#define SCB_SHCSR_HARDFAULTACT_Msk (1UL << SCB_SHCSR_HARDFAULTACT_Pos) /*!< SCB SHCSR: HARDFAULTACT Mask */ + +#define SCB_SHCSR_BUSFAULTACT_Pos 1U /*!< SCB SHCSR: BUSFAULTACT Position */ +#define SCB_SHCSR_BUSFAULTACT_Msk (1UL << SCB_SHCSR_BUSFAULTACT_Pos) /*!< SCB SHCSR: BUSFAULTACT Mask */ + +#define SCB_SHCSR_MEMFAULTACT_Pos 0U /*!< SCB SHCSR: MEMFAULTACT Position */ +#define SCB_SHCSR_MEMFAULTACT_Msk (1UL /*<< SCB_SHCSR_MEMFAULTACT_Pos*/) /*!< SCB SHCSR: MEMFAULTACT Mask */ + +/* SCB Configurable Fault Status Register Definitions */ +#define SCB_CFSR_USGFAULTSR_Pos 16U /*!< SCB CFSR: Usage Fault Status Register Position */ +#define SCB_CFSR_USGFAULTSR_Msk (0xFFFFUL << SCB_CFSR_USGFAULTSR_Pos) /*!< SCB CFSR: Usage Fault Status Register Mask */ + +#define SCB_CFSR_BUSFAULTSR_Pos 8U /*!< SCB CFSR: Bus Fault Status Register Position */ +#define SCB_CFSR_BUSFAULTSR_Msk (0xFFUL << SCB_CFSR_BUSFAULTSR_Pos) /*!< SCB CFSR: Bus Fault Status Register Mask */ + +#define SCB_CFSR_MEMFAULTSR_Pos 0U /*!< SCB CFSR: Memory Manage Fault Status Register Position */ +#define SCB_CFSR_MEMFAULTSR_Msk (0xFFUL /*<< SCB_CFSR_MEMFAULTSR_Pos*/) /*!< SCB CFSR: Memory Manage Fault Status Register Mask */ + +/* MemManage Fault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_MMARVALID_Pos (SCB_CFSR_MEMFAULTSR_Pos + 7U) /*!< SCB CFSR (MMFSR): MMARVALID Position */ +#define SCB_CFSR_MMARVALID_Msk (1UL << SCB_CFSR_MMARVALID_Pos) /*!< SCB CFSR (MMFSR): MMARVALID Mask */ + +#define SCB_CFSR_MLSPERR_Pos (SCB_CFSR_MEMFAULTSR_Pos + 5U) /*!< SCB CFSR (MMFSR): MLSPERR Position */ +#define SCB_CFSR_MLSPERR_Msk (1UL << SCB_CFSR_MLSPERR_Pos) /*!< SCB CFSR (MMFSR): MLSPERR Mask */ + +#define SCB_CFSR_MSTKERR_Pos (SCB_CFSR_MEMFAULTSR_Pos + 4U) /*!< SCB CFSR (MMFSR): MSTKERR Position */ +#define SCB_CFSR_MSTKERR_Msk (1UL << SCB_CFSR_MSTKERR_Pos) /*!< SCB CFSR (MMFSR): MSTKERR Mask */ + +#define SCB_CFSR_MUNSTKERR_Pos (SCB_CFSR_MEMFAULTSR_Pos + 3U) /*!< SCB CFSR (MMFSR): MUNSTKERR Position */ +#define SCB_CFSR_MUNSTKERR_Msk (1UL << SCB_CFSR_MUNSTKERR_Pos) /*!< SCB CFSR (MMFSR): MUNSTKERR Mask */ + +#define SCB_CFSR_DACCVIOL_Pos (SCB_CFSR_MEMFAULTSR_Pos + 1U) /*!< SCB CFSR (MMFSR): DACCVIOL Position */ +#define SCB_CFSR_DACCVIOL_Msk (1UL << SCB_CFSR_DACCVIOL_Pos) /*!< SCB CFSR (MMFSR): DACCVIOL Mask */ + +#define SCB_CFSR_IACCVIOL_Pos (SCB_CFSR_MEMFAULTSR_Pos + 0U) /*!< SCB CFSR (MMFSR): IACCVIOL Position */ +#define SCB_CFSR_IACCVIOL_Msk (1UL /*<< SCB_CFSR_IACCVIOL_Pos*/) /*!< SCB CFSR (MMFSR): IACCVIOL Mask */ + +/* BusFault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_BFARVALID_Pos (SCB_CFSR_BUSFAULTSR_Pos + 7U) /*!< SCB CFSR (BFSR): BFARVALID Position */ +#define SCB_CFSR_BFARVALID_Msk (1UL << SCB_CFSR_BFARVALID_Pos) /*!< SCB CFSR (BFSR): BFARVALID Mask */ + +#define SCB_CFSR_LSPERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 5U) /*!< SCB CFSR (BFSR): LSPERR Position */ +#define SCB_CFSR_LSPERR_Msk (1UL << SCB_CFSR_LSPERR_Pos) /*!< SCB CFSR (BFSR): LSPERR Mask */ + +#define SCB_CFSR_STKERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 4U) /*!< SCB CFSR (BFSR): STKERR Position */ +#define SCB_CFSR_STKERR_Msk (1UL << SCB_CFSR_STKERR_Pos) /*!< SCB CFSR (BFSR): STKERR Mask */ + +#define SCB_CFSR_UNSTKERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 3U) /*!< SCB CFSR (BFSR): UNSTKERR Position */ +#define SCB_CFSR_UNSTKERR_Msk (1UL << SCB_CFSR_UNSTKERR_Pos) /*!< SCB CFSR (BFSR): UNSTKERR Mask */ + +#define SCB_CFSR_IMPRECISERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 2U) /*!< SCB CFSR (BFSR): IMPRECISERR Position */ +#define SCB_CFSR_IMPRECISERR_Msk (1UL << SCB_CFSR_IMPRECISERR_Pos) /*!< SCB CFSR (BFSR): IMPRECISERR Mask */ + +#define SCB_CFSR_PRECISERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 1U) /*!< SCB CFSR (BFSR): PRECISERR Position */ +#define SCB_CFSR_PRECISERR_Msk (1UL << SCB_CFSR_PRECISERR_Pos) /*!< SCB CFSR (BFSR): PRECISERR Mask */ + +#define SCB_CFSR_IBUSERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 0U) /*!< SCB CFSR (BFSR): IBUSERR Position */ +#define SCB_CFSR_IBUSERR_Msk (1UL << SCB_CFSR_IBUSERR_Pos) /*!< SCB CFSR (BFSR): IBUSERR Mask */ + +/* UsageFault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_DIVBYZERO_Pos (SCB_CFSR_USGFAULTSR_Pos + 9U) /*!< SCB CFSR (UFSR): DIVBYZERO Position */ +#define SCB_CFSR_DIVBYZERO_Msk (1UL << SCB_CFSR_DIVBYZERO_Pos) /*!< SCB CFSR (UFSR): DIVBYZERO Mask */ + +#define SCB_CFSR_UNALIGNED_Pos (SCB_CFSR_USGFAULTSR_Pos + 8U) /*!< SCB CFSR (UFSR): UNALIGNED Position */ +#define SCB_CFSR_UNALIGNED_Msk (1UL << SCB_CFSR_UNALIGNED_Pos) /*!< SCB CFSR (UFSR): UNALIGNED Mask */ + +#define SCB_CFSR_STKOF_Pos (SCB_CFSR_USGFAULTSR_Pos + 4U) /*!< SCB CFSR (UFSR): STKOF Position */ +#define SCB_CFSR_STKOF_Msk (1UL << SCB_CFSR_STKOF_Pos) /*!< SCB CFSR (UFSR): STKOF Mask */ + +#define SCB_CFSR_NOCP_Pos (SCB_CFSR_USGFAULTSR_Pos + 3U) /*!< SCB CFSR (UFSR): NOCP Position */ +#define SCB_CFSR_NOCP_Msk (1UL << SCB_CFSR_NOCP_Pos) /*!< SCB CFSR (UFSR): NOCP Mask */ + +#define SCB_CFSR_INVPC_Pos (SCB_CFSR_USGFAULTSR_Pos + 2U) /*!< SCB CFSR (UFSR): INVPC Position */ +#define SCB_CFSR_INVPC_Msk (1UL << SCB_CFSR_INVPC_Pos) /*!< SCB CFSR (UFSR): INVPC Mask */ + +#define SCB_CFSR_INVSTATE_Pos (SCB_CFSR_USGFAULTSR_Pos + 1U) /*!< SCB CFSR (UFSR): INVSTATE Position */ +#define SCB_CFSR_INVSTATE_Msk (1UL << SCB_CFSR_INVSTATE_Pos) /*!< SCB CFSR (UFSR): INVSTATE Mask */ + +#define SCB_CFSR_UNDEFINSTR_Pos (SCB_CFSR_USGFAULTSR_Pos + 0U) /*!< SCB CFSR (UFSR): UNDEFINSTR Position */ +#define SCB_CFSR_UNDEFINSTR_Msk (1UL << SCB_CFSR_UNDEFINSTR_Pos) /*!< SCB CFSR (UFSR): UNDEFINSTR Mask */ + +/* SCB Hard Fault Status Register Definitions */ +#define SCB_HFSR_DEBUGEVT_Pos 31U /*!< SCB HFSR: DEBUGEVT Position */ +#define SCB_HFSR_DEBUGEVT_Msk (1UL << SCB_HFSR_DEBUGEVT_Pos) /*!< SCB HFSR: DEBUGEVT Mask */ + +#define SCB_HFSR_FORCED_Pos 30U /*!< SCB HFSR: FORCED Position */ +#define SCB_HFSR_FORCED_Msk (1UL << SCB_HFSR_FORCED_Pos) /*!< SCB HFSR: FORCED Mask */ + +#define SCB_HFSR_VECTTBL_Pos 1U /*!< SCB HFSR: VECTTBL Position */ +#define SCB_HFSR_VECTTBL_Msk (1UL << SCB_HFSR_VECTTBL_Pos) /*!< SCB HFSR: VECTTBL Mask */ + +/* SCB Debug Fault Status Register Definitions */ +#define SCB_DFSR_EXTERNAL_Pos 4U /*!< SCB DFSR: EXTERNAL Position */ +#define SCB_DFSR_EXTERNAL_Msk (1UL << SCB_DFSR_EXTERNAL_Pos) /*!< SCB DFSR: EXTERNAL Mask */ + +#define SCB_DFSR_VCATCH_Pos 3U /*!< SCB DFSR: VCATCH Position */ +#define SCB_DFSR_VCATCH_Msk (1UL << SCB_DFSR_VCATCH_Pos) /*!< SCB DFSR: VCATCH Mask */ + +#define SCB_DFSR_DWTTRAP_Pos 2U /*!< SCB DFSR: DWTTRAP Position */ +#define SCB_DFSR_DWTTRAP_Msk (1UL << SCB_DFSR_DWTTRAP_Pos) /*!< SCB DFSR: DWTTRAP Mask */ + +#define SCB_DFSR_BKPT_Pos 1U /*!< SCB DFSR: BKPT Position */ +#define SCB_DFSR_BKPT_Msk (1UL << SCB_DFSR_BKPT_Pos) /*!< SCB DFSR: BKPT Mask */ + +#define SCB_DFSR_HALTED_Pos 0U /*!< SCB DFSR: HALTED Position */ +#define SCB_DFSR_HALTED_Msk (1UL /*<< SCB_DFSR_HALTED_Pos*/) /*!< SCB DFSR: HALTED Mask */ + +/* SCB Non-Secure Access Control Register Definitions */ +#define SCB_NSACR_CP11_Pos 11U /*!< SCB NSACR: CP11 Position */ +#define SCB_NSACR_CP11_Msk (1UL << SCB_NSACR_CP11_Pos) /*!< SCB NSACR: CP11 Mask */ + +#define SCB_NSACR_CP10_Pos 10U /*!< SCB NSACR: CP10 Position */ +#define SCB_NSACR_CP10_Msk (1UL << SCB_NSACR_CP10_Pos) /*!< SCB NSACR: CP10 Mask */ + +#define SCB_NSACR_CPn_Pos 0U /*!< SCB NSACR: CPn Position */ +#define SCB_NSACR_CPn_Msk (1UL /*<< SCB_NSACR_CPn_Pos*/) /*!< SCB NSACR: CPn Mask */ + +/* SCB Cache Level ID Register Definitions */ +#define SCB_CLIDR_LOUU_Pos 27U /*!< SCB CLIDR: LoUU Position */ +#define SCB_CLIDR_LOUU_Msk (7UL << SCB_CLIDR_LOUU_Pos) /*!< SCB CLIDR: LoUU Mask */ + +#define SCB_CLIDR_LOC_Pos 24U /*!< SCB CLIDR: LoC Position */ +#define SCB_CLIDR_LOC_Msk (7UL << SCB_CLIDR_LOC_Pos) /*!< SCB CLIDR: LoC Mask */ + +/* SCB Cache Type Register Definitions */ +#define SCB_CTR_FORMAT_Pos 29U /*!< SCB CTR: Format Position */ +#define SCB_CTR_FORMAT_Msk (7UL << SCB_CTR_FORMAT_Pos) /*!< SCB CTR: Format Mask */ + +#define SCB_CTR_CWG_Pos 24U /*!< SCB CTR: CWG Position */ +#define SCB_CTR_CWG_Msk (0xFUL << SCB_CTR_CWG_Pos) /*!< SCB CTR: CWG Mask */ + +#define SCB_CTR_ERG_Pos 20U /*!< SCB CTR: ERG Position */ +#define SCB_CTR_ERG_Msk (0xFUL << SCB_CTR_ERG_Pos) /*!< SCB CTR: ERG Mask */ + +#define SCB_CTR_DMINLINE_Pos 16U /*!< SCB CTR: DminLine Position */ +#define SCB_CTR_DMINLINE_Msk (0xFUL << SCB_CTR_DMINLINE_Pos) /*!< SCB CTR: DminLine Mask */ + +#define SCB_CTR_IMINLINE_Pos 0U /*!< SCB CTR: ImInLine Position */ +#define SCB_CTR_IMINLINE_Msk (0xFUL /*<< SCB_CTR_IMINLINE_Pos*/) /*!< SCB CTR: ImInLine Mask */ + +/* SCB Cache Size ID Register Definitions */ +#define SCB_CCSIDR_WT_Pos 31U /*!< SCB CCSIDR: WT Position */ +#define SCB_CCSIDR_WT_Msk (1UL << SCB_CCSIDR_WT_Pos) /*!< SCB CCSIDR: WT Mask */ + +#define SCB_CCSIDR_WB_Pos 30U /*!< SCB CCSIDR: WB Position */ +#define SCB_CCSIDR_WB_Msk (1UL << SCB_CCSIDR_WB_Pos) /*!< SCB CCSIDR: WB Mask */ + +#define SCB_CCSIDR_RA_Pos 29U /*!< SCB CCSIDR: RA Position */ +#define SCB_CCSIDR_RA_Msk (1UL << SCB_CCSIDR_RA_Pos) /*!< SCB CCSIDR: RA Mask */ + +#define SCB_CCSIDR_WA_Pos 28U /*!< SCB CCSIDR: WA Position */ +#define SCB_CCSIDR_WA_Msk (1UL << SCB_CCSIDR_WA_Pos) /*!< SCB CCSIDR: WA Mask */ + +#define SCB_CCSIDR_NUMSETS_Pos 13U /*!< SCB CCSIDR: NumSets Position */ +#define SCB_CCSIDR_NUMSETS_Msk (0x7FFFUL << SCB_CCSIDR_NUMSETS_Pos) /*!< SCB CCSIDR: NumSets Mask */ + +#define SCB_CCSIDR_ASSOCIATIVITY_Pos 3U /*!< SCB CCSIDR: Associativity Position */ +#define SCB_CCSIDR_ASSOCIATIVITY_Msk (0x3FFUL << SCB_CCSIDR_ASSOCIATIVITY_Pos) /*!< SCB CCSIDR: Associativity Mask */ + +#define SCB_CCSIDR_LINESIZE_Pos 0U /*!< SCB CCSIDR: LineSize Position */ +#define SCB_CCSIDR_LINESIZE_Msk (7UL /*<< SCB_CCSIDR_LINESIZE_Pos*/) /*!< SCB CCSIDR: LineSize Mask */ + +/* SCB Cache Size Selection Register Definitions */ +#define SCB_CSSELR_LEVEL_Pos 1U /*!< SCB CSSELR: Level Position */ +#define SCB_CSSELR_LEVEL_Msk (7UL << SCB_CSSELR_LEVEL_Pos) /*!< SCB CSSELR: Level Mask */ + +#define SCB_CSSELR_IND_Pos 0U /*!< SCB CSSELR: InD Position */ +#define SCB_CSSELR_IND_Msk (1UL /*<< SCB_CSSELR_IND_Pos*/) /*!< SCB CSSELR: InD Mask */ + +/* SCB Software Triggered Interrupt Register Definitions */ +#define SCB_STIR_INTID_Pos 0U /*!< SCB STIR: INTID Position */ +#define SCB_STIR_INTID_Msk (0x1FFUL /*<< SCB_STIR_INTID_Pos*/) /*!< SCB STIR: INTID Mask */ + +/* SCB D-Cache Invalidate by Set-way Register Definitions */ +#define SCB_DCISW_WAY_Pos 30U /*!< SCB DCISW: Way Position */ +#define SCB_DCISW_WAY_Msk (3UL << SCB_DCISW_WAY_Pos) /*!< SCB DCISW: Way Mask */ + +#define SCB_DCISW_SET_Pos 5U /*!< SCB DCISW: Set Position */ +#define SCB_DCISW_SET_Msk (0x1FFUL << SCB_DCISW_SET_Pos) /*!< SCB DCISW: Set Mask */ + +/* SCB D-Cache Clean by Set-way Register Definitions */ +#define SCB_DCCSW_WAY_Pos 30U /*!< SCB DCCSW: Way Position */ +#define SCB_DCCSW_WAY_Msk (3UL << SCB_DCCSW_WAY_Pos) /*!< SCB DCCSW: Way Mask */ + +#define SCB_DCCSW_SET_Pos 5U /*!< SCB DCCSW: Set Position */ +#define SCB_DCCSW_SET_Msk (0x1FFUL << SCB_DCCSW_SET_Pos) /*!< SCB DCCSW: Set Mask */ + +/* SCB D-Cache Clean and Invalidate by Set-way Register Definitions */ +#define SCB_DCCISW_WAY_Pos 30U /*!< SCB DCCISW: Way Position */ +#define SCB_DCCISW_WAY_Msk (3UL << SCB_DCCISW_WAY_Pos) /*!< SCB DCCISW: Way Mask */ + +#define SCB_DCCISW_SET_Pos 5U /*!< SCB DCCISW: Set Position */ +#define SCB_DCCISW_SET_Msk (0x1FFUL << SCB_DCCISW_SET_Pos) /*!< SCB DCCISW: Set Mask */ + +/*@} end of group CMSIS_SCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SCnSCB System Controls not in SCB (SCnSCB) + \brief Type definitions for the System Control and ID Register not in the SCB + @{ + */ + +/** + \brief Structure type to access the System Control and ID Register not in the SCB. + */ +typedef struct +{ + uint32_t RESERVED0[1U]; + __IM uint32_t ICTR; /*!< Offset: 0x004 (R/ ) Interrupt Controller Type Register */ + __IOM uint32_t ACTLR; /*!< Offset: 0x008 (R/W) Auxiliary Control Register */ + __IOM uint32_t CPPWR; /*!< Offset: 0x00C (R/W) Coprocessor Power Control Register */ +} SCnSCB_Type; + +/* Interrupt Controller Type Register Definitions */ +#define SCnSCB_ICTR_INTLINESNUM_Pos 0U /*!< ICTR: INTLINESNUM Position */ +#define SCnSCB_ICTR_INTLINESNUM_Msk (0xFUL /*<< SCnSCB_ICTR_INTLINESNUM_Pos*/) /*!< ICTR: INTLINESNUM Mask */ + +/*@} end of group CMSIS_SCnotSCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SysTick System Tick Timer (SysTick) + \brief Type definitions for the System Timer Registers. + @{ + */ + +/** + \brief Structure type to access the System Timer (SysTick). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SysTick Control and Status Register */ + __IOM uint32_t LOAD; /*!< Offset: 0x004 (R/W) SysTick Reload Value Register */ + __IOM uint32_t VAL; /*!< Offset: 0x008 (R/W) SysTick Current Value Register */ + __IM uint32_t CALIB; /*!< Offset: 0x00C (R/ ) SysTick Calibration Register */ +} SysTick_Type; + +/* SysTick Control / Status Register Definitions */ +#define SysTick_CTRL_COUNTFLAG_Pos 16U /*!< SysTick CTRL: COUNTFLAG Position */ +#define SysTick_CTRL_COUNTFLAG_Msk (1UL << SysTick_CTRL_COUNTFLAG_Pos) /*!< SysTick CTRL: COUNTFLAG Mask */ + +#define SysTick_CTRL_CLKSOURCE_Pos 2U /*!< SysTick CTRL: CLKSOURCE Position */ +#define SysTick_CTRL_CLKSOURCE_Msk (1UL << SysTick_CTRL_CLKSOURCE_Pos) /*!< SysTick CTRL: CLKSOURCE Mask */ + +#define SysTick_CTRL_TICKINT_Pos 1U /*!< SysTick CTRL: TICKINT Position */ +#define SysTick_CTRL_TICKINT_Msk (1UL << SysTick_CTRL_TICKINT_Pos) /*!< SysTick CTRL: TICKINT Mask */ + +#define SysTick_CTRL_ENABLE_Pos 0U /*!< SysTick CTRL: ENABLE Position */ +#define SysTick_CTRL_ENABLE_Msk (1UL /*<< SysTick_CTRL_ENABLE_Pos*/) /*!< SysTick CTRL: ENABLE Mask */ + +/* SysTick Reload Register Definitions */ +#define SysTick_LOAD_RELOAD_Pos 0U /*!< SysTick LOAD: RELOAD Position */ +#define SysTick_LOAD_RELOAD_Msk (0xFFFFFFUL /*<< SysTick_LOAD_RELOAD_Pos*/) /*!< SysTick LOAD: RELOAD Mask */ + +/* SysTick Current Register Definitions */ +#define SysTick_VAL_CURRENT_Pos 0U /*!< SysTick VAL: CURRENT Position */ +#define SysTick_VAL_CURRENT_Msk (0xFFFFFFUL /*<< SysTick_VAL_CURRENT_Pos*/) /*!< SysTick VAL: CURRENT Mask */ + +/* SysTick Calibration Register Definitions */ +#define SysTick_CALIB_NOREF_Pos 31U /*!< SysTick CALIB: NOREF Position */ +#define SysTick_CALIB_NOREF_Msk (1UL << SysTick_CALIB_NOREF_Pos) /*!< SysTick CALIB: NOREF Mask */ + +#define SysTick_CALIB_SKEW_Pos 30U /*!< SysTick CALIB: SKEW Position */ +#define SysTick_CALIB_SKEW_Msk (1UL << SysTick_CALIB_SKEW_Pos) /*!< SysTick CALIB: SKEW Mask */ + +#define SysTick_CALIB_TENMS_Pos 0U /*!< SysTick CALIB: TENMS Position */ +#define SysTick_CALIB_TENMS_Msk (0xFFFFFFUL /*<< SysTick_CALIB_TENMS_Pos*/) /*!< SysTick CALIB: TENMS Mask */ + +/*@} end of group CMSIS_SysTick */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_ITM Instrumentation Trace Macrocell (ITM) + \brief Type definitions for the Instrumentation Trace Macrocell (ITM) + @{ + */ + +/** + \brief Structure type to access the Instrumentation Trace Macrocell Register (ITM). + */ +typedef struct +{ + __OM union + { + __OM uint8_t u8; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 8-bit */ + __OM uint16_t u16; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 16-bit */ + __OM uint32_t u32; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 32-bit */ + } PORT [32U]; /*!< Offset: 0x000 ( /W) ITM Stimulus Port Registers */ + uint32_t RESERVED0[864U]; + __IOM uint32_t TER; /*!< Offset: 0xE00 (R/W) ITM Trace Enable Register */ + uint32_t RESERVED1[15U]; + __IOM uint32_t TPR; /*!< Offset: 0xE40 (R/W) ITM Trace Privilege Register */ + uint32_t RESERVED2[15U]; + __IOM uint32_t TCR; /*!< Offset: 0xE80 (R/W) ITM Trace Control Register */ + uint32_t RESERVED3[32U]; + uint32_t RESERVED4[43U]; + __OM uint32_t LAR; /*!< Offset: 0xFB0 ( /W) ITM Lock Access Register */ + __IM uint32_t LSR; /*!< Offset: 0xFB4 (R/ ) ITM Lock Status Register */ + uint32_t RESERVED5[1U]; + __IM uint32_t DEVARCH; /*!< Offset: 0xFBC (R/ ) ITM Device Architecture Register */ + uint32_t RESERVED6[4U]; + __IM uint32_t PID4; /*!< Offset: 0xFD0 (R/ ) ITM Peripheral Identification Register #4 */ + __IM uint32_t PID5; /*!< Offset: 0xFD4 (R/ ) ITM Peripheral Identification Register #5 */ + __IM uint32_t PID6; /*!< Offset: 0xFD8 (R/ ) ITM Peripheral Identification Register #6 */ + __IM uint32_t PID7; /*!< Offset: 0xFDC (R/ ) ITM Peripheral Identification Register #7 */ + __IM uint32_t PID0; /*!< Offset: 0xFE0 (R/ ) ITM Peripheral Identification Register #0 */ + __IM uint32_t PID1; /*!< Offset: 0xFE4 (R/ ) ITM Peripheral Identification Register #1 */ + __IM uint32_t PID2; /*!< Offset: 0xFE8 (R/ ) ITM Peripheral Identification Register #2 */ + __IM uint32_t PID3; /*!< Offset: 0xFEC (R/ ) ITM Peripheral Identification Register #3 */ + __IM uint32_t CID0; /*!< Offset: 0xFF0 (R/ ) ITM Component Identification Register #0 */ + __IM uint32_t CID1; /*!< Offset: 0xFF4 (R/ ) ITM Component Identification Register #1 */ + __IM uint32_t CID2; /*!< Offset: 0xFF8 (R/ ) ITM Component Identification Register #2 */ + __IM uint32_t CID3; /*!< Offset: 0xFFC (R/ ) ITM Component Identification Register #3 */ +} ITM_Type; + +/* ITM Stimulus Port Register Definitions */ +#define ITM_STIM_DISABLED_Pos 1U /*!< ITM STIM: DISABLED Position */ +#define ITM_STIM_DISABLED_Msk (0x1UL << ITM_STIM_DISABLED_Pos) /*!< ITM STIM: DISABLED Mask */ + +#define ITM_STIM_FIFOREADY_Pos 0U /*!< ITM STIM: FIFOREADY Position */ +#define ITM_STIM_FIFOREADY_Msk (0x1UL /*<< ITM_STIM_FIFOREADY_Pos*/) /*!< ITM STIM: FIFOREADY Mask */ + +/* ITM Trace Privilege Register Definitions */ +#define ITM_TPR_PRIVMASK_Pos 0U /*!< ITM TPR: PRIVMASK Position */ +#define ITM_TPR_PRIVMASK_Msk (0xFFFFFFFFUL /*<< ITM_TPR_PRIVMASK_Pos*/) /*!< ITM TPR: PRIVMASK Mask */ + +/* ITM Trace Control Register Definitions */ +#define ITM_TCR_BUSY_Pos 23U /*!< ITM TCR: BUSY Position */ +#define ITM_TCR_BUSY_Msk (1UL << ITM_TCR_BUSY_Pos) /*!< ITM TCR: BUSY Mask */ + +#define ITM_TCR_TRACEBUSID_Pos 16U /*!< ITM TCR: ATBID Position */ +#define ITM_TCR_TRACEBUSID_Msk (0x7FUL << ITM_TCR_TRACEBUSID_Pos) /*!< ITM TCR: ATBID Mask */ + +#define ITM_TCR_GTSFREQ_Pos 10U /*!< ITM TCR: Global timestamp frequency Position */ +#define ITM_TCR_GTSFREQ_Msk (3UL << ITM_TCR_GTSFREQ_Pos) /*!< ITM TCR: Global timestamp frequency Mask */ + +#define ITM_TCR_TSPRESCALE_Pos 8U /*!< ITM TCR: TSPRESCALE Position */ +#define ITM_TCR_TSPRESCALE_Msk (3UL << ITM_TCR_TSPRESCALE_Pos) /*!< ITM TCR: TSPRESCALE Mask */ + +#define ITM_TCR_STALLENA_Pos 5U /*!< ITM TCR: STALLENA Position */ +#define ITM_TCR_STALLENA_Msk (1UL << ITM_TCR_STALLENA_Pos) /*!< ITM TCR: STALLENA Mask */ + +#define ITM_TCR_SWOENA_Pos 4U /*!< ITM TCR: SWOENA Position */ +#define ITM_TCR_SWOENA_Msk (1UL << ITM_TCR_SWOENA_Pos) /*!< ITM TCR: SWOENA Mask */ + +#define ITM_TCR_DWTENA_Pos 3U /*!< ITM TCR: DWTENA Position */ +#define ITM_TCR_DWTENA_Msk (1UL << ITM_TCR_DWTENA_Pos) /*!< ITM TCR: DWTENA Mask */ + +#define ITM_TCR_SYNCENA_Pos 2U /*!< ITM TCR: SYNCENA Position */ +#define ITM_TCR_SYNCENA_Msk (1UL << ITM_TCR_SYNCENA_Pos) /*!< ITM TCR: SYNCENA Mask */ + +#define ITM_TCR_TSENA_Pos 1U /*!< ITM TCR: TSENA Position */ +#define ITM_TCR_TSENA_Msk (1UL << ITM_TCR_TSENA_Pos) /*!< ITM TCR: TSENA Mask */ + +#define ITM_TCR_ITMENA_Pos 0U /*!< ITM TCR: ITM Enable bit Position */ +#define ITM_TCR_ITMENA_Msk (1UL /*<< ITM_TCR_ITMENA_Pos*/) /*!< ITM TCR: ITM Enable bit Mask */ + +/* ITM Lock Status Register Definitions */ +#define ITM_LSR_ByteAcc_Pos 2U /*!< ITM LSR: ByteAcc Position */ +#define ITM_LSR_ByteAcc_Msk (1UL << ITM_LSR_ByteAcc_Pos) /*!< ITM LSR: ByteAcc Mask */ + +#define ITM_LSR_Access_Pos 1U /*!< ITM LSR: Access Position */ +#define ITM_LSR_Access_Msk (1UL << ITM_LSR_Access_Pos) /*!< ITM LSR: Access Mask */ + +#define ITM_LSR_Present_Pos 0U /*!< ITM LSR: Present Position */ +#define ITM_LSR_Present_Msk (1UL /*<< ITM_LSR_Present_Pos*/) /*!< ITM LSR: Present Mask */ + +/*@}*/ /* end of group CMSIS_ITM */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_DWT Data Watchpoint and Trace (DWT) + \brief Type definitions for the Data Watchpoint and Trace (DWT) + @{ + */ + +/** + \brief Structure type to access the Data Watchpoint and Trace Register (DWT). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) Control Register */ + __IOM uint32_t CYCCNT; /*!< Offset: 0x004 (R/W) Cycle Count Register */ + __IOM uint32_t CPICNT; /*!< Offset: 0x008 (R/W) CPI Count Register */ + __IOM uint32_t EXCCNT; /*!< Offset: 0x00C (R/W) Exception Overhead Count Register */ + __IOM uint32_t SLEEPCNT; /*!< Offset: 0x010 (R/W) Sleep Count Register */ + __IOM uint32_t LSUCNT; /*!< Offset: 0x014 (R/W) LSU Count Register */ + __IOM uint32_t FOLDCNT; /*!< Offset: 0x018 (R/W) Folded-instruction Count Register */ + __IM uint32_t PCSR; /*!< Offset: 0x01C (R/ ) Program Counter Sample Register */ + __IOM uint32_t COMP0; /*!< Offset: 0x020 (R/W) Comparator Register 0 */ + uint32_t RESERVED1[1U]; + __IOM uint32_t FUNCTION0; /*!< Offset: 0x028 (R/W) Function Register 0 */ + uint32_t RESERVED2[1U]; + __IOM uint32_t COMP1; /*!< Offset: 0x030 (R/W) Comparator Register 1 */ + uint32_t RESERVED3[1U]; + __IOM uint32_t FUNCTION1; /*!< Offset: 0x038 (R/W) Function Register 1 */ + uint32_t RESERVED4[1U]; + __IOM uint32_t COMP2; /*!< Offset: 0x040 (R/W) Comparator Register 2 */ + uint32_t RESERVED5[1U]; + __IOM uint32_t FUNCTION2; /*!< Offset: 0x048 (R/W) Function Register 2 */ + uint32_t RESERVED6[1U]; + __IOM uint32_t COMP3; /*!< Offset: 0x050 (R/W) Comparator Register 3 */ + uint32_t RESERVED7[1U]; + __IOM uint32_t FUNCTION3; /*!< Offset: 0x058 (R/W) Function Register 3 */ + uint32_t RESERVED8[1U]; + __IOM uint32_t COMP4; /*!< Offset: 0x060 (R/W) Comparator Register 4 */ + uint32_t RESERVED9[1U]; + __IOM uint32_t FUNCTION4; /*!< Offset: 0x068 (R/W) Function Register 4 */ + uint32_t RESERVED10[1U]; + __IOM uint32_t COMP5; /*!< Offset: 0x070 (R/W) Comparator Register 5 */ + uint32_t RESERVED11[1U]; + __IOM uint32_t FUNCTION5; /*!< Offset: 0x078 (R/W) Function Register 5 */ + uint32_t RESERVED12[1U]; + __IOM uint32_t COMP6; /*!< Offset: 0x080 (R/W) Comparator Register 6 */ + uint32_t RESERVED13[1U]; + __IOM uint32_t FUNCTION6; /*!< Offset: 0x088 (R/W) Function Register 6 */ + uint32_t RESERVED14[1U]; + __IOM uint32_t COMP7; /*!< Offset: 0x090 (R/W) Comparator Register 7 */ + uint32_t RESERVED15[1U]; + __IOM uint32_t FUNCTION7; /*!< Offset: 0x098 (R/W) Function Register 7 */ + uint32_t RESERVED16[1U]; + __IOM uint32_t COMP8; /*!< Offset: 0x0A0 (R/W) Comparator Register 8 */ + uint32_t RESERVED17[1U]; + __IOM uint32_t FUNCTION8; /*!< Offset: 0x0A8 (R/W) Function Register 8 */ + uint32_t RESERVED18[1U]; + __IOM uint32_t COMP9; /*!< Offset: 0x0B0 (R/W) Comparator Register 9 */ + uint32_t RESERVED19[1U]; + __IOM uint32_t FUNCTION9; /*!< Offset: 0x0B8 (R/W) Function Register 9 */ + uint32_t RESERVED20[1U]; + __IOM uint32_t COMP10; /*!< Offset: 0x0C0 (R/W) Comparator Register 10 */ + uint32_t RESERVED21[1U]; + __IOM uint32_t FUNCTION10; /*!< Offset: 0x0C8 (R/W) Function Register 10 */ + uint32_t RESERVED22[1U]; + __IOM uint32_t COMP11; /*!< Offset: 0x0D0 (R/W) Comparator Register 11 */ + uint32_t RESERVED23[1U]; + __IOM uint32_t FUNCTION11; /*!< Offset: 0x0D8 (R/W) Function Register 11 */ + uint32_t RESERVED24[1U]; + __IOM uint32_t COMP12; /*!< Offset: 0x0E0 (R/W) Comparator Register 12 */ + uint32_t RESERVED25[1U]; + __IOM uint32_t FUNCTION12; /*!< Offset: 0x0E8 (R/W) Function Register 12 */ + uint32_t RESERVED26[1U]; + __IOM uint32_t COMP13; /*!< Offset: 0x0F0 (R/W) Comparator Register 13 */ + uint32_t RESERVED27[1U]; + __IOM uint32_t FUNCTION13; /*!< Offset: 0x0F8 (R/W) Function Register 13 */ + uint32_t RESERVED28[1U]; + __IOM uint32_t COMP14; /*!< Offset: 0x100 (R/W) Comparator Register 14 */ + uint32_t RESERVED29[1U]; + __IOM uint32_t FUNCTION14; /*!< Offset: 0x108 (R/W) Function Register 14 */ + uint32_t RESERVED30[1U]; + __IOM uint32_t COMP15; /*!< Offset: 0x110 (R/W) Comparator Register 15 */ + uint32_t RESERVED31[1U]; + __IOM uint32_t FUNCTION15; /*!< Offset: 0x118 (R/W) Function Register 15 */ + uint32_t RESERVED32[934U]; + __IM uint32_t LSR; /*!< Offset: 0xFB4 (R ) Lock Status Register */ + uint32_t RESERVED33[1U]; + __IM uint32_t DEVARCH; /*!< Offset: 0xFBC (R/ ) Device Architecture Register */ +} DWT_Type; + +/* DWT Control Register Definitions */ +#define DWT_CTRL_NUMCOMP_Pos 28U /*!< DWT CTRL: NUMCOMP Position */ +#define DWT_CTRL_NUMCOMP_Msk (0xFUL << DWT_CTRL_NUMCOMP_Pos) /*!< DWT CTRL: NUMCOMP Mask */ + +#define DWT_CTRL_NOTRCPKT_Pos 27U /*!< DWT CTRL: NOTRCPKT Position */ +#define DWT_CTRL_NOTRCPKT_Msk (0x1UL << DWT_CTRL_NOTRCPKT_Pos) /*!< DWT CTRL: NOTRCPKT Mask */ + +#define DWT_CTRL_NOEXTTRIG_Pos 26U /*!< DWT CTRL: NOEXTTRIG Position */ +#define DWT_CTRL_NOEXTTRIG_Msk (0x1UL << DWT_CTRL_NOEXTTRIG_Pos) /*!< DWT CTRL: NOEXTTRIG Mask */ + +#define DWT_CTRL_NOCYCCNT_Pos 25U /*!< DWT CTRL: NOCYCCNT Position */ +#define DWT_CTRL_NOCYCCNT_Msk (0x1UL << DWT_CTRL_NOCYCCNT_Pos) /*!< DWT CTRL: NOCYCCNT Mask */ + +#define DWT_CTRL_NOPRFCNT_Pos 24U /*!< DWT CTRL: NOPRFCNT Position */ +#define DWT_CTRL_NOPRFCNT_Msk (0x1UL << DWT_CTRL_NOPRFCNT_Pos) /*!< DWT CTRL: NOPRFCNT Mask */ + +#define DWT_CTRL_CYCDISS_Pos 23U /*!< DWT CTRL: CYCDISS Position */ +#define DWT_CTRL_CYCDISS_Msk (0x1UL << DWT_CTRL_CYCDISS_Pos) /*!< DWT CTRL: CYCDISS Mask */ + +#define DWT_CTRL_CYCEVTENA_Pos 22U /*!< DWT CTRL: CYCEVTENA Position */ +#define DWT_CTRL_CYCEVTENA_Msk (0x1UL << DWT_CTRL_CYCEVTENA_Pos) /*!< DWT CTRL: CYCEVTENA Mask */ + +#define DWT_CTRL_FOLDEVTENA_Pos 21U /*!< DWT CTRL: FOLDEVTENA Position */ +#define DWT_CTRL_FOLDEVTENA_Msk (0x1UL << DWT_CTRL_FOLDEVTENA_Pos) /*!< DWT CTRL: FOLDEVTENA Mask */ + +#define DWT_CTRL_LSUEVTENA_Pos 20U /*!< DWT CTRL: LSUEVTENA Position */ +#define DWT_CTRL_LSUEVTENA_Msk (0x1UL << DWT_CTRL_LSUEVTENA_Pos) /*!< DWT CTRL: LSUEVTENA Mask */ + +#define DWT_CTRL_SLEEPEVTENA_Pos 19U /*!< DWT CTRL: SLEEPEVTENA Position */ +#define DWT_CTRL_SLEEPEVTENA_Msk (0x1UL << DWT_CTRL_SLEEPEVTENA_Pos) /*!< DWT CTRL: SLEEPEVTENA Mask */ + +#define DWT_CTRL_EXCEVTENA_Pos 18U /*!< DWT CTRL: EXCEVTENA Position */ +#define DWT_CTRL_EXCEVTENA_Msk (0x1UL << DWT_CTRL_EXCEVTENA_Pos) /*!< DWT CTRL: EXCEVTENA Mask */ + +#define DWT_CTRL_CPIEVTENA_Pos 17U /*!< DWT CTRL: CPIEVTENA Position */ +#define DWT_CTRL_CPIEVTENA_Msk (0x1UL << DWT_CTRL_CPIEVTENA_Pos) /*!< DWT CTRL: CPIEVTENA Mask */ + +#define DWT_CTRL_EXCTRCENA_Pos 16U /*!< DWT CTRL: EXCTRCENA Position */ +#define DWT_CTRL_EXCTRCENA_Msk (0x1UL << DWT_CTRL_EXCTRCENA_Pos) /*!< DWT CTRL: EXCTRCENA Mask */ + +#define DWT_CTRL_PCSAMPLENA_Pos 12U /*!< DWT CTRL: PCSAMPLENA Position */ +#define DWT_CTRL_PCSAMPLENA_Msk (0x1UL << DWT_CTRL_PCSAMPLENA_Pos) /*!< DWT CTRL: PCSAMPLENA Mask */ + +#define DWT_CTRL_SYNCTAP_Pos 10U /*!< DWT CTRL: SYNCTAP Position */ +#define DWT_CTRL_SYNCTAP_Msk (0x3UL << DWT_CTRL_SYNCTAP_Pos) /*!< DWT CTRL: SYNCTAP Mask */ + +#define DWT_CTRL_CYCTAP_Pos 9U /*!< DWT CTRL: CYCTAP Position */ +#define DWT_CTRL_CYCTAP_Msk (0x1UL << DWT_CTRL_CYCTAP_Pos) /*!< DWT CTRL: CYCTAP Mask */ + +#define DWT_CTRL_POSTINIT_Pos 5U /*!< DWT CTRL: POSTINIT Position */ +#define DWT_CTRL_POSTINIT_Msk (0xFUL << DWT_CTRL_POSTINIT_Pos) /*!< DWT CTRL: POSTINIT Mask */ + +#define DWT_CTRL_POSTPRESET_Pos 1U /*!< DWT CTRL: POSTPRESET Position */ +#define DWT_CTRL_POSTPRESET_Msk (0xFUL << DWT_CTRL_POSTPRESET_Pos) /*!< DWT CTRL: POSTPRESET Mask */ + +#define DWT_CTRL_CYCCNTENA_Pos 0U /*!< DWT CTRL: CYCCNTENA Position */ +#define DWT_CTRL_CYCCNTENA_Msk (0x1UL /*<< DWT_CTRL_CYCCNTENA_Pos*/) /*!< DWT CTRL: CYCCNTENA Mask */ + +/* DWT CPI Count Register Definitions */ +#define DWT_CPICNT_CPICNT_Pos 0U /*!< DWT CPICNT: CPICNT Position */ +#define DWT_CPICNT_CPICNT_Msk (0xFFUL /*<< DWT_CPICNT_CPICNT_Pos*/) /*!< DWT CPICNT: CPICNT Mask */ + +/* DWT Exception Overhead Count Register Definitions */ +#define DWT_EXCCNT_EXCCNT_Pos 0U /*!< DWT EXCCNT: EXCCNT Position */ +#define DWT_EXCCNT_EXCCNT_Msk (0xFFUL /*<< DWT_EXCCNT_EXCCNT_Pos*/) /*!< DWT EXCCNT: EXCCNT Mask */ + +/* DWT Sleep Count Register Definitions */ +#define DWT_SLEEPCNT_SLEEPCNT_Pos 0U /*!< DWT SLEEPCNT: SLEEPCNT Position */ +#define DWT_SLEEPCNT_SLEEPCNT_Msk (0xFFUL /*<< DWT_SLEEPCNT_SLEEPCNT_Pos*/) /*!< DWT SLEEPCNT: SLEEPCNT Mask */ + +/* DWT LSU Count Register Definitions */ +#define DWT_LSUCNT_LSUCNT_Pos 0U /*!< DWT LSUCNT: LSUCNT Position */ +#define DWT_LSUCNT_LSUCNT_Msk (0xFFUL /*<< DWT_LSUCNT_LSUCNT_Pos*/) /*!< DWT LSUCNT: LSUCNT Mask */ + +/* DWT Folded-instruction Count Register Definitions */ +#define DWT_FOLDCNT_FOLDCNT_Pos 0U /*!< DWT FOLDCNT: FOLDCNT Position */ +#define DWT_FOLDCNT_FOLDCNT_Msk (0xFFUL /*<< DWT_FOLDCNT_FOLDCNT_Pos*/) /*!< DWT FOLDCNT: FOLDCNT Mask */ + +/* DWT Comparator Function Register Definitions */ +#define DWT_FUNCTION_ID_Pos 27U /*!< DWT FUNCTION: ID Position */ +#define DWT_FUNCTION_ID_Msk (0x1FUL << DWT_FUNCTION_ID_Pos) /*!< DWT FUNCTION: ID Mask */ + +#define DWT_FUNCTION_MATCHED_Pos 24U /*!< DWT FUNCTION: MATCHED Position */ +#define DWT_FUNCTION_MATCHED_Msk (0x1UL << DWT_FUNCTION_MATCHED_Pos) /*!< DWT FUNCTION: MATCHED Mask */ + +#define DWT_FUNCTION_DATAVSIZE_Pos 10U /*!< DWT FUNCTION: DATAVSIZE Position */ +#define DWT_FUNCTION_DATAVSIZE_Msk (0x3UL << DWT_FUNCTION_DATAVSIZE_Pos) /*!< DWT FUNCTION: DATAVSIZE Mask */ + +#define DWT_FUNCTION_ACTION_Pos 4U /*!< DWT FUNCTION: ACTION Position */ +#define DWT_FUNCTION_ACTION_Msk (0x1UL << DWT_FUNCTION_ACTION_Pos) /*!< DWT FUNCTION: ACTION Mask */ + +#define DWT_FUNCTION_MATCH_Pos 0U /*!< DWT FUNCTION: MATCH Position */ +#define DWT_FUNCTION_MATCH_Msk (0xFUL /*<< DWT_FUNCTION_MATCH_Pos*/) /*!< DWT FUNCTION: MATCH Mask */ + +/*@}*/ /* end of group CMSIS_DWT */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_TPI Trace Port Interface (TPI) + \brief Type definitions for the Trace Port Interface (TPI) + @{ + */ + +/** + \brief Structure type to access the Trace Port Interface Register (TPI). + */ +typedef struct +{ + __IM uint32_t SSPSR; /*!< Offset: 0x000 (R/ ) Supported Parallel Port Size Register */ + __IOM uint32_t CSPSR; /*!< Offset: 0x004 (R/W) Current Parallel Port Size Register */ + uint32_t RESERVED0[2U]; + __IOM uint32_t ACPR; /*!< Offset: 0x010 (R/W) Asynchronous Clock Prescaler Register */ + uint32_t RESERVED1[55U]; + __IOM uint32_t SPPR; /*!< Offset: 0x0F0 (R/W) Selected Pin Protocol Register */ + uint32_t RESERVED2[131U]; + __IM uint32_t FFSR; /*!< Offset: 0x300 (R/ ) Formatter and Flush Status Register */ + __IOM uint32_t FFCR; /*!< Offset: 0x304 (R/W) Formatter and Flush Control Register */ + __IOM uint32_t PSCR; /*!< Offset: 0x308 (R/W) Periodic Synchronization Control Register */ + uint32_t RESERVED3[759U]; + __IM uint32_t TRIGGER; /*!< Offset: 0xEE8 (R/ ) TRIGGER Register */ + __IM uint32_t ITFTTD0; /*!< Offset: 0xEEC (R/ ) Integration Test FIFO Test Data 0 Register */ + __IOM uint32_t ITATBCTR2; /*!< Offset: 0xEF0 (R/W) Integration Test ATB Control Register 2 */ + uint32_t RESERVED4[1U]; + __IM uint32_t ITATBCTR0; /*!< Offset: 0xEF8 (R/ ) Integration Test ATB Control Register 0 */ + __IM uint32_t ITFTTD1; /*!< Offset: 0xEFC (R/ ) Integration Test FIFO Test Data 1 Register */ + __IOM uint32_t ITCTRL; /*!< Offset: 0xF00 (R/W) Integration Mode Control */ + uint32_t RESERVED5[39U]; + __IOM uint32_t CLAIMSET; /*!< Offset: 0xFA0 (R/W) Claim tag set */ + __IOM uint32_t CLAIMCLR; /*!< Offset: 0xFA4 (R/W) Claim tag clear */ + uint32_t RESERVED7[8U]; + __IM uint32_t DEVID; /*!< Offset: 0xFC8 (R/ ) Device Configuration Register */ + __IM uint32_t DEVTYPE; /*!< Offset: 0xFCC (R/ ) Device Type Identifier Register */ +} TPI_Type; + +/* TPI Asynchronous Clock Prescaler Register Definitions */ +#define TPI_ACPR_PRESCALER_Pos 0U /*!< TPI ACPR: PRESCALER Position */ +#define TPI_ACPR_PRESCALER_Msk (0x1FFFUL /*<< TPI_ACPR_PRESCALER_Pos*/) /*!< TPI ACPR: PRESCALER Mask */ + +/* TPI Selected Pin Protocol Register Definitions */ +#define TPI_SPPR_TXMODE_Pos 0U /*!< TPI SPPR: TXMODE Position */ +#define TPI_SPPR_TXMODE_Msk (0x3UL /*<< TPI_SPPR_TXMODE_Pos*/) /*!< TPI SPPR: TXMODE Mask */ + +/* TPI Formatter and Flush Status Register Definitions */ +#define TPI_FFSR_FtNonStop_Pos 3U /*!< TPI FFSR: FtNonStop Position */ +#define TPI_FFSR_FtNonStop_Msk (0x1UL << TPI_FFSR_FtNonStop_Pos) /*!< TPI FFSR: FtNonStop Mask */ + +#define TPI_FFSR_TCPresent_Pos 2U /*!< TPI FFSR: TCPresent Position */ +#define TPI_FFSR_TCPresent_Msk (0x1UL << TPI_FFSR_TCPresent_Pos) /*!< TPI FFSR: TCPresent Mask */ + +#define TPI_FFSR_FtStopped_Pos 1U /*!< TPI FFSR: FtStopped Position */ +#define TPI_FFSR_FtStopped_Msk (0x1UL << TPI_FFSR_FtStopped_Pos) /*!< TPI FFSR: FtStopped Mask */ + +#define TPI_FFSR_FlInProg_Pos 0U /*!< TPI FFSR: FlInProg Position */ +#define TPI_FFSR_FlInProg_Msk (0x1UL /*<< TPI_FFSR_FlInProg_Pos*/) /*!< TPI FFSR: FlInProg Mask */ + +/* TPI Formatter and Flush Control Register Definitions */ +#define TPI_FFCR_TrigIn_Pos 8U /*!< TPI FFCR: TrigIn Position */ +#define TPI_FFCR_TrigIn_Msk (0x1UL << TPI_FFCR_TrigIn_Pos) /*!< TPI FFCR: TrigIn Mask */ + +#define TPI_FFCR_FOnMan_Pos 6U /*!< TPI FFCR: FOnMan Position */ +#define TPI_FFCR_FOnMan_Msk (0x1UL << TPI_FFCR_FOnMan_Pos) /*!< TPI FFCR: FOnMan Mask */ + +#define TPI_FFCR_EnFCont_Pos 1U /*!< TPI FFCR: EnFCont Position */ +#define TPI_FFCR_EnFCont_Msk (0x1UL << TPI_FFCR_EnFCont_Pos) /*!< TPI FFCR: EnFCont Mask */ + +/* TPI TRIGGER Register Definitions */ +#define TPI_TRIGGER_TRIGGER_Pos 0U /*!< TPI TRIGGER: TRIGGER Position */ +#define TPI_TRIGGER_TRIGGER_Msk (0x1UL /*<< TPI_TRIGGER_TRIGGER_Pos*/) /*!< TPI TRIGGER: TRIGGER Mask */ + +/* TPI Integration Test FIFO Test Data 0 Register Definitions */ +#define TPI_ITFTTD0_ATB_IF2_ATVALID_Pos 29U /*!< TPI ITFTTD0: ATB Interface 2 ATVALIDPosition */ +#define TPI_ITFTTD0_ATB_IF2_ATVALID_Msk (0x3UL << TPI_ITFTTD0_ATB_IF2_ATVALID_Pos) /*!< TPI ITFTTD0: ATB Interface 2 ATVALID Mask */ + +#define TPI_ITFTTD0_ATB_IF2_bytecount_Pos 27U /*!< TPI ITFTTD0: ATB Interface 2 byte count Position */ +#define TPI_ITFTTD0_ATB_IF2_bytecount_Msk (0x3UL << TPI_ITFTTD0_ATB_IF2_bytecount_Pos) /*!< TPI ITFTTD0: ATB Interface 2 byte count Mask */ + +#define TPI_ITFTTD0_ATB_IF1_ATVALID_Pos 26U /*!< TPI ITFTTD0: ATB Interface 1 ATVALID Position */ +#define TPI_ITFTTD0_ATB_IF1_ATVALID_Msk (0x3UL << TPI_ITFTTD0_ATB_IF1_ATVALID_Pos) /*!< TPI ITFTTD0: ATB Interface 1 ATVALID Mask */ + +#define TPI_ITFTTD0_ATB_IF1_bytecount_Pos 24U /*!< TPI ITFTTD0: ATB Interface 1 byte count Position */ +#define TPI_ITFTTD0_ATB_IF1_bytecount_Msk (0x3UL << TPI_ITFTTD0_ATB_IF1_bytecount_Pos) /*!< TPI ITFTTD0: ATB Interface 1 byte countt Mask */ + +#define TPI_ITFTTD0_ATB_IF1_data2_Pos 16U /*!< TPI ITFTTD0: ATB Interface 1 data2 Position */ +#define TPI_ITFTTD0_ATB_IF1_data2_Msk (0xFFUL << TPI_ITFTTD0_ATB_IF1_data1_Pos) /*!< TPI ITFTTD0: ATB Interface 1 data2 Mask */ + +#define TPI_ITFTTD0_ATB_IF1_data1_Pos 8U /*!< TPI ITFTTD0: ATB Interface 1 data1 Position */ +#define TPI_ITFTTD0_ATB_IF1_data1_Msk (0xFFUL << TPI_ITFTTD0_ATB_IF1_data1_Pos) /*!< TPI ITFTTD0: ATB Interface 1 data1 Mask */ + +#define TPI_ITFTTD0_ATB_IF1_data0_Pos 0U /*!< TPI ITFTTD0: ATB Interface 1 data0 Position */ +#define TPI_ITFTTD0_ATB_IF1_data0_Msk (0xFFUL /*<< TPI_ITFTTD0_ATB_IF1_data0_Pos*/) /*!< TPI ITFTTD0: ATB Interface 1 data0 Mask */ + +/* TPI Integration Test ATB Control Register 2 Register Definitions */ +#define TPI_ITATBCTR2_AFVALID2S_Pos 1U /*!< TPI ITATBCTR2: AFVALID2S Position */ +#define TPI_ITATBCTR2_AFVALID2S_Msk (0x1UL << TPI_ITATBCTR2_AFVALID2S_Pos) /*!< TPI ITATBCTR2: AFVALID2SS Mask */ + +#define TPI_ITATBCTR2_AFVALID1S_Pos 1U /*!< TPI ITATBCTR2: AFVALID1S Position */ +#define TPI_ITATBCTR2_AFVALID1S_Msk (0x1UL << TPI_ITATBCTR2_AFVALID1S_Pos) /*!< TPI ITATBCTR2: AFVALID1SS Mask */ + +#define TPI_ITATBCTR2_ATREADY2S_Pos 0U /*!< TPI ITATBCTR2: ATREADY2S Position */ +#define TPI_ITATBCTR2_ATREADY2S_Msk (0x1UL /*<< TPI_ITATBCTR2_ATREADY2S_Pos*/) /*!< TPI ITATBCTR2: ATREADY2S Mask */ + +#define TPI_ITATBCTR2_ATREADY1S_Pos 0U /*!< TPI ITATBCTR2: ATREADY1S Position */ +#define TPI_ITATBCTR2_ATREADY1S_Msk (0x1UL /*<< TPI_ITATBCTR2_ATREADY1S_Pos*/) /*!< TPI ITATBCTR2: ATREADY1S Mask */ + +/* TPI Integration Test FIFO Test Data 1 Register Definitions */ +#define TPI_ITFTTD1_ATB_IF2_ATVALID_Pos 29U /*!< TPI ITFTTD1: ATB Interface 2 ATVALID Position */ +#define TPI_ITFTTD1_ATB_IF2_ATVALID_Msk (0x3UL << TPI_ITFTTD1_ATB_IF2_ATVALID_Pos) /*!< TPI ITFTTD1: ATB Interface 2 ATVALID Mask */ + +#define TPI_ITFTTD1_ATB_IF2_bytecount_Pos 27U /*!< TPI ITFTTD1: ATB Interface 2 byte count Position */ +#define TPI_ITFTTD1_ATB_IF2_bytecount_Msk (0x3UL << TPI_ITFTTD1_ATB_IF2_bytecount_Pos) /*!< TPI ITFTTD1: ATB Interface 2 byte count Mask */ + +#define TPI_ITFTTD1_ATB_IF1_ATVALID_Pos 26U /*!< TPI ITFTTD1: ATB Interface 1 ATVALID Position */ +#define TPI_ITFTTD1_ATB_IF1_ATVALID_Msk (0x3UL << TPI_ITFTTD1_ATB_IF1_ATVALID_Pos) /*!< TPI ITFTTD1: ATB Interface 1 ATVALID Mask */ + +#define TPI_ITFTTD1_ATB_IF1_bytecount_Pos 24U /*!< TPI ITFTTD1: ATB Interface 1 byte count Position */ +#define TPI_ITFTTD1_ATB_IF1_bytecount_Msk (0x3UL << TPI_ITFTTD1_ATB_IF1_bytecount_Pos) /*!< TPI ITFTTD1: ATB Interface 1 byte countt Mask */ + +#define TPI_ITFTTD1_ATB_IF2_data2_Pos 16U /*!< TPI ITFTTD1: ATB Interface 2 data2 Position */ +#define TPI_ITFTTD1_ATB_IF2_data2_Msk (0xFFUL << TPI_ITFTTD1_ATB_IF2_data1_Pos) /*!< TPI ITFTTD1: ATB Interface 2 data2 Mask */ + +#define TPI_ITFTTD1_ATB_IF2_data1_Pos 8U /*!< TPI ITFTTD1: ATB Interface 2 data1 Position */ +#define TPI_ITFTTD1_ATB_IF2_data1_Msk (0xFFUL << TPI_ITFTTD1_ATB_IF2_data1_Pos) /*!< TPI ITFTTD1: ATB Interface 2 data1 Mask */ + +#define TPI_ITFTTD1_ATB_IF2_data0_Pos 0U /*!< TPI ITFTTD1: ATB Interface 2 data0 Position */ +#define TPI_ITFTTD1_ATB_IF2_data0_Msk (0xFFUL /*<< TPI_ITFTTD1_ATB_IF2_data0_Pos*/) /*!< TPI ITFTTD1: ATB Interface 2 data0 Mask */ + +/* TPI Integration Test ATB Control Register 0 Definitions */ +#define TPI_ITATBCTR0_AFVALID2S_Pos 1U /*!< TPI ITATBCTR0: AFVALID2S Position */ +#define TPI_ITATBCTR0_AFVALID2S_Msk (0x1UL << TPI_ITATBCTR0_AFVALID2S_Pos) /*!< TPI ITATBCTR0: AFVALID2SS Mask */ + +#define TPI_ITATBCTR0_AFVALID1S_Pos 1U /*!< TPI ITATBCTR0: AFVALID1S Position */ +#define TPI_ITATBCTR0_AFVALID1S_Msk (0x1UL << TPI_ITATBCTR0_AFVALID1S_Pos) /*!< TPI ITATBCTR0: AFVALID1SS Mask */ + +#define TPI_ITATBCTR0_ATREADY2S_Pos 0U /*!< TPI ITATBCTR0: ATREADY2S Position */ +#define TPI_ITATBCTR0_ATREADY2S_Msk (0x1UL /*<< TPI_ITATBCTR0_ATREADY2S_Pos*/) /*!< TPI ITATBCTR0: ATREADY2S Mask */ + +#define TPI_ITATBCTR0_ATREADY1S_Pos 0U /*!< TPI ITATBCTR0: ATREADY1S Position */ +#define TPI_ITATBCTR0_ATREADY1S_Msk (0x1UL /*<< TPI_ITATBCTR0_ATREADY1S_Pos*/) /*!< TPI ITATBCTR0: ATREADY1S Mask */ + +/* TPI Integration Mode Control Register Definitions */ +#define TPI_ITCTRL_Mode_Pos 0U /*!< TPI ITCTRL: Mode Position */ +#define TPI_ITCTRL_Mode_Msk (0x3UL /*<< TPI_ITCTRL_Mode_Pos*/) /*!< TPI ITCTRL: Mode Mask */ + +/* TPI DEVID Register Definitions */ +#define TPI_DEVID_NRZVALID_Pos 11U /*!< TPI DEVID: NRZVALID Position */ +#define TPI_DEVID_NRZVALID_Msk (0x1UL << TPI_DEVID_NRZVALID_Pos) /*!< TPI DEVID: NRZVALID Mask */ + +#define TPI_DEVID_MANCVALID_Pos 10U /*!< TPI DEVID: MANCVALID Position */ +#define TPI_DEVID_MANCVALID_Msk (0x1UL << TPI_DEVID_MANCVALID_Pos) /*!< TPI DEVID: MANCVALID Mask */ + +#define TPI_DEVID_PTINVALID_Pos 9U /*!< TPI DEVID: PTINVALID Position */ +#define TPI_DEVID_PTINVALID_Msk (0x1UL << TPI_DEVID_PTINVALID_Pos) /*!< TPI DEVID: PTINVALID Mask */ + +#define TPI_DEVID_FIFOSZ_Pos 6U /*!< TPI DEVID: FIFOSZ Position */ +#define TPI_DEVID_FIFOSZ_Msk (0x7UL << TPI_DEVID_FIFOSZ_Pos) /*!< TPI DEVID: FIFOSZ Mask */ + +#define TPI_DEVID_NrTraceInput_Pos 0U /*!< TPI DEVID: NrTraceInput Position */ +#define TPI_DEVID_NrTraceInput_Msk (0x3FUL /*<< TPI_DEVID_NrTraceInput_Pos*/) /*!< TPI DEVID: NrTraceInput Mask */ + +/* TPI DEVTYPE Register Definitions */ +#define TPI_DEVTYPE_SubType_Pos 4U /*!< TPI DEVTYPE: SubType Position */ +#define TPI_DEVTYPE_SubType_Msk (0xFUL /*<< TPI_DEVTYPE_SubType_Pos*/) /*!< TPI DEVTYPE: SubType Mask */ + +#define TPI_DEVTYPE_MajorType_Pos 0U /*!< TPI DEVTYPE: MajorType Position */ +#define TPI_DEVTYPE_MajorType_Msk (0xFUL << TPI_DEVTYPE_MajorType_Pos) /*!< TPI DEVTYPE: MajorType Mask */ + +/*@}*/ /* end of group CMSIS_TPI */ + + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_MPU Memory Protection Unit (MPU) + \brief Type definitions for the Memory Protection Unit (MPU) + @{ + */ + +/** + \brief Structure type to access the Memory Protection Unit (MPU). + */ +typedef struct +{ + __IM uint32_t TYPE; /*!< Offset: 0x000 (R/ ) MPU Type Register */ + __IOM uint32_t CTRL; /*!< Offset: 0x004 (R/W) MPU Control Register */ + __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) MPU Region Number Register */ + __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) MPU Region Base Address Register */ + __IOM uint32_t RLAR; /*!< Offset: 0x010 (R/W) MPU Region Limit Address Register */ + __IOM uint32_t RBAR_A1; /*!< Offset: 0x014 (R/W) MPU Region Base Address Register Alias 1 */ + __IOM uint32_t RLAR_A1; /*!< Offset: 0x018 (R/W) MPU Region Limit Address Register Alias 1 */ + __IOM uint32_t RBAR_A2; /*!< Offset: 0x01C (R/W) MPU Region Base Address Register Alias 2 */ + __IOM uint32_t RLAR_A2; /*!< Offset: 0x020 (R/W) MPU Region Limit Address Register Alias 2 */ + __IOM uint32_t RBAR_A3; /*!< Offset: 0x024 (R/W) MPU Region Base Address Register Alias 3 */ + __IOM uint32_t RLAR_A3; /*!< Offset: 0x028 (R/W) MPU Region Limit Address Register Alias 3 */ + uint32_t RESERVED0[1]; + union { + __IOM uint32_t MAIR[2]; + struct { + __IOM uint32_t MAIR0; /*!< Offset: 0x030 (R/W) MPU Memory Attribute Indirection Register 0 */ + __IOM uint32_t MAIR1; /*!< Offset: 0x034 (R/W) MPU Memory Attribute Indirection Register 1 */ + }; + }; +} MPU_Type; + +#define MPU_TYPE_RALIASES 4U + +/* MPU Type Register Definitions */ +#define MPU_TYPE_IREGION_Pos 16U /*!< MPU TYPE: IREGION Position */ +#define MPU_TYPE_IREGION_Msk (0xFFUL << MPU_TYPE_IREGION_Pos) /*!< MPU TYPE: IREGION Mask */ + +#define MPU_TYPE_DREGION_Pos 8U /*!< MPU TYPE: DREGION Position */ +#define MPU_TYPE_DREGION_Msk (0xFFUL << MPU_TYPE_DREGION_Pos) /*!< MPU TYPE: DREGION Mask */ + +#define MPU_TYPE_SEPARATE_Pos 0U /*!< MPU TYPE: SEPARATE Position */ +#define MPU_TYPE_SEPARATE_Msk (1UL /*<< MPU_TYPE_SEPARATE_Pos*/) /*!< MPU TYPE: SEPARATE Mask */ + +/* MPU Control Register Definitions */ +#define MPU_CTRL_PRIVDEFENA_Pos 2U /*!< MPU CTRL: PRIVDEFENA Position */ +#define MPU_CTRL_PRIVDEFENA_Msk (1UL << MPU_CTRL_PRIVDEFENA_Pos) /*!< MPU CTRL: PRIVDEFENA Mask */ + +#define MPU_CTRL_HFNMIENA_Pos 1U /*!< MPU CTRL: HFNMIENA Position */ +#define MPU_CTRL_HFNMIENA_Msk (1UL << MPU_CTRL_HFNMIENA_Pos) /*!< MPU CTRL: HFNMIENA Mask */ + +#define MPU_CTRL_ENABLE_Pos 0U /*!< MPU CTRL: ENABLE Position */ +#define MPU_CTRL_ENABLE_Msk (1UL /*<< MPU_CTRL_ENABLE_Pos*/) /*!< MPU CTRL: ENABLE Mask */ + +/* MPU Region Number Register Definitions */ +#define MPU_RNR_REGION_Pos 0U /*!< MPU RNR: REGION Position */ +#define MPU_RNR_REGION_Msk (0xFFUL /*<< MPU_RNR_REGION_Pos*/) /*!< MPU RNR: REGION Mask */ + +/* MPU Region Base Address Register Definitions */ +#define MPU_RBAR_BASE_Pos 5U /*!< MPU RBAR: BASE Position */ +#define MPU_RBAR_BASE_Msk (0x7FFFFFFUL << MPU_RBAR_BASE_Pos) /*!< MPU RBAR: BASE Mask */ + +#define MPU_RBAR_SH_Pos 3U /*!< MPU RBAR: SH Position */ +#define MPU_RBAR_SH_Msk (0x3UL << MPU_RBAR_SH_Pos) /*!< MPU RBAR: SH Mask */ + +#define MPU_RBAR_AP_Pos 1U /*!< MPU RBAR: AP Position */ +#define MPU_RBAR_AP_Msk (0x3UL << MPU_RBAR_AP_Pos) /*!< MPU RBAR: AP Mask */ + +#define MPU_RBAR_XN_Pos 0U /*!< MPU RBAR: XN Position */ +#define MPU_RBAR_XN_Msk (01UL /*<< MPU_RBAR_XN_Pos*/) /*!< MPU RBAR: XN Mask */ + +/* MPU Region Limit Address Register Definitions */ +#define MPU_RLAR_LIMIT_Pos 5U /*!< MPU RLAR: LIMIT Position */ +#define MPU_RLAR_LIMIT_Msk (0x7FFFFFFUL << MPU_RLAR_LIMIT_Pos) /*!< MPU RLAR: LIMIT Mask */ + +#define MPU_RLAR_AttrIndx_Pos 1U /*!< MPU RLAR: AttrIndx Position */ +#define MPU_RLAR_AttrIndx_Msk (0x7UL << MPU_RLAR_AttrIndx_Pos) /*!< MPU RLAR: AttrIndx Mask */ + +#define MPU_RLAR_EN_Pos 0U /*!< MPU RLAR: Region enable bit Position */ +#define MPU_RLAR_EN_Msk (1UL /*<< MPU_RLAR_EN_Pos*/) /*!< MPU RLAR: Region enable bit Disable Mask */ + +/* MPU Memory Attribute Indirection Register 0 Definitions */ +#define MPU_MAIR0_Attr3_Pos 24U /*!< MPU MAIR0: Attr3 Position */ +#define MPU_MAIR0_Attr3_Msk (0xFFUL << MPU_MAIR0_Attr3_Pos) /*!< MPU MAIR0: Attr3 Mask */ + +#define MPU_MAIR0_Attr2_Pos 16U /*!< MPU MAIR0: Attr2 Position */ +#define MPU_MAIR0_Attr2_Msk (0xFFUL << MPU_MAIR0_Attr2_Pos) /*!< MPU MAIR0: Attr2 Mask */ + +#define MPU_MAIR0_Attr1_Pos 8U /*!< MPU MAIR0: Attr1 Position */ +#define MPU_MAIR0_Attr1_Msk (0xFFUL << MPU_MAIR0_Attr1_Pos) /*!< MPU MAIR0: Attr1 Mask */ + +#define MPU_MAIR0_Attr0_Pos 0U /*!< MPU MAIR0: Attr0 Position */ +#define MPU_MAIR0_Attr0_Msk (0xFFUL /*<< MPU_MAIR0_Attr0_Pos*/) /*!< MPU MAIR0: Attr0 Mask */ + +/* MPU Memory Attribute Indirection Register 1 Definitions */ +#define MPU_MAIR1_Attr7_Pos 24U /*!< MPU MAIR1: Attr7 Position */ +#define MPU_MAIR1_Attr7_Msk (0xFFUL << MPU_MAIR1_Attr7_Pos) /*!< MPU MAIR1: Attr7 Mask */ + +#define MPU_MAIR1_Attr6_Pos 16U /*!< MPU MAIR1: Attr6 Position */ +#define MPU_MAIR1_Attr6_Msk (0xFFUL << MPU_MAIR1_Attr6_Pos) /*!< MPU MAIR1: Attr6 Mask */ + +#define MPU_MAIR1_Attr5_Pos 8U /*!< MPU MAIR1: Attr5 Position */ +#define MPU_MAIR1_Attr5_Msk (0xFFUL << MPU_MAIR1_Attr5_Pos) /*!< MPU MAIR1: Attr5 Mask */ + +#define MPU_MAIR1_Attr4_Pos 0U /*!< MPU MAIR1: Attr4 Position */ +#define MPU_MAIR1_Attr4_Msk (0xFFUL /*<< MPU_MAIR1_Attr4_Pos*/) /*!< MPU MAIR1: Attr4 Mask */ + +/*@} end of group CMSIS_MPU */ +#endif + + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SAU Security Attribution Unit (SAU) + \brief Type definitions for the Security Attribution Unit (SAU) + @{ + */ + +/** + \brief Structure type to access the Security Attribution Unit (SAU). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SAU Control Register */ + __IM uint32_t TYPE; /*!< Offset: 0x004 (R/ ) SAU Type Register */ +#if defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) + __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) SAU Region Number Register */ + __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) SAU Region Base Address Register */ + __IOM uint32_t RLAR; /*!< Offset: 0x010 (R/W) SAU Region Limit Address Register */ +#else + uint32_t RESERVED0[3]; +#endif + __IOM uint32_t SFSR; /*!< Offset: 0x014 (R/W) Secure Fault Status Register */ + __IOM uint32_t SFAR; /*!< Offset: 0x018 (R/W) Secure Fault Address Register */ +} SAU_Type; + +/* SAU Control Register Definitions */ +#define SAU_CTRL_ALLNS_Pos 1U /*!< SAU CTRL: ALLNS Position */ +#define SAU_CTRL_ALLNS_Msk (1UL << SAU_CTRL_ALLNS_Pos) /*!< SAU CTRL: ALLNS Mask */ + +#define SAU_CTRL_ENABLE_Pos 0U /*!< SAU CTRL: ENABLE Position */ +#define SAU_CTRL_ENABLE_Msk (1UL /*<< SAU_CTRL_ENABLE_Pos*/) /*!< SAU CTRL: ENABLE Mask */ + +/* SAU Type Register Definitions */ +#define SAU_TYPE_SREGION_Pos 0U /*!< SAU TYPE: SREGION Position */ +#define SAU_TYPE_SREGION_Msk (0xFFUL /*<< SAU_TYPE_SREGION_Pos*/) /*!< SAU TYPE: SREGION Mask */ + +#if defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) +/* SAU Region Number Register Definitions */ +#define SAU_RNR_REGION_Pos 0U /*!< SAU RNR: REGION Position */ +#define SAU_RNR_REGION_Msk (0xFFUL /*<< SAU_RNR_REGION_Pos*/) /*!< SAU RNR: REGION Mask */ + +/* SAU Region Base Address Register Definitions */ +#define SAU_RBAR_BADDR_Pos 5U /*!< SAU RBAR: BADDR Position */ +#define SAU_RBAR_BADDR_Msk (0x7FFFFFFUL << SAU_RBAR_BADDR_Pos) /*!< SAU RBAR: BADDR Mask */ + +/* SAU Region Limit Address Register Definitions */ +#define SAU_RLAR_LADDR_Pos 5U /*!< SAU RLAR: LADDR Position */ +#define SAU_RLAR_LADDR_Msk (0x7FFFFFFUL << SAU_RLAR_LADDR_Pos) /*!< SAU RLAR: LADDR Mask */ + +#define SAU_RLAR_NSC_Pos 1U /*!< SAU RLAR: NSC Position */ +#define SAU_RLAR_NSC_Msk (1UL << SAU_RLAR_NSC_Pos) /*!< SAU RLAR: NSC Mask */ + +#define SAU_RLAR_ENABLE_Pos 0U /*!< SAU RLAR: ENABLE Position */ +#define SAU_RLAR_ENABLE_Msk (1UL /*<< SAU_RLAR_ENABLE_Pos*/) /*!< SAU RLAR: ENABLE Mask */ + +#endif /* defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) */ + +/* Secure Fault Status Register Definitions */ +#define SAU_SFSR_LSERR_Pos 7U /*!< SAU SFSR: LSERR Position */ +#define SAU_SFSR_LSERR_Msk (1UL << SAU_SFSR_LSERR_Pos) /*!< SAU SFSR: LSERR Mask */ + +#define SAU_SFSR_SFARVALID_Pos 6U /*!< SAU SFSR: SFARVALID Position */ +#define SAU_SFSR_SFARVALID_Msk (1UL << SAU_SFSR_SFARVALID_Pos) /*!< SAU SFSR: SFARVALID Mask */ + +#define SAU_SFSR_LSPERR_Pos 5U /*!< SAU SFSR: LSPERR Position */ +#define SAU_SFSR_LSPERR_Msk (1UL << SAU_SFSR_LSPERR_Pos) /*!< SAU SFSR: LSPERR Mask */ + +#define SAU_SFSR_INVTRAN_Pos 4U /*!< SAU SFSR: INVTRAN Position */ +#define SAU_SFSR_INVTRAN_Msk (1UL << SAU_SFSR_INVTRAN_Pos) /*!< SAU SFSR: INVTRAN Mask */ + +#define SAU_SFSR_AUVIOL_Pos 3U /*!< SAU SFSR: AUVIOL Position */ +#define SAU_SFSR_AUVIOL_Msk (1UL << SAU_SFSR_AUVIOL_Pos) /*!< SAU SFSR: AUVIOL Mask */ + +#define SAU_SFSR_INVER_Pos 2U /*!< SAU SFSR: INVER Position */ +#define SAU_SFSR_INVER_Msk (1UL << SAU_SFSR_INVER_Pos) /*!< SAU SFSR: INVER Mask */ + +#define SAU_SFSR_INVIS_Pos 1U /*!< SAU SFSR: INVIS Position */ +#define SAU_SFSR_INVIS_Msk (1UL << SAU_SFSR_INVIS_Pos) /*!< SAU SFSR: INVIS Mask */ + +#define SAU_SFSR_INVEP_Pos 0U /*!< SAU SFSR: INVEP Position */ +#define SAU_SFSR_INVEP_Msk (1UL /*<< SAU_SFSR_INVEP_Pos*/) /*!< SAU SFSR: INVEP Mask */ + +/*@} end of group CMSIS_SAU */ +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_FPU Floating Point Unit (FPU) + \brief Type definitions for the Floating Point Unit (FPU) + @{ + */ + +/** + \brief Structure type to access the Floating Point Unit (FPU). + */ +typedef struct +{ + uint32_t RESERVED0[1U]; + __IOM uint32_t FPCCR; /*!< Offset: 0x004 (R/W) Floating-Point Context Control Register */ + __IOM uint32_t FPCAR; /*!< Offset: 0x008 (R/W) Floating-Point Context Address Register */ + __IOM uint32_t FPDSCR; /*!< Offset: 0x00C (R/W) Floating-Point Default Status Control Register */ + __IM uint32_t MVFR0; /*!< Offset: 0x010 (R/ ) Media and VFP Feature Register 0 */ + __IM uint32_t MVFR1; /*!< Offset: 0x014 (R/ ) Media and VFP Feature Register 1 */ + __IM uint32_t MVFR2; /*!< Offset: 0x018 (R/ ) Media and VFP Feature Register 2 */ +} FPU_Type; + +/* Floating-Point Context Control Register Definitions */ +#define FPU_FPCCR_ASPEN_Pos 31U /*!< FPCCR: ASPEN bit Position */ +#define FPU_FPCCR_ASPEN_Msk (1UL << FPU_FPCCR_ASPEN_Pos) /*!< FPCCR: ASPEN bit Mask */ + +#define FPU_FPCCR_LSPEN_Pos 30U /*!< FPCCR: LSPEN Position */ +#define FPU_FPCCR_LSPEN_Msk (1UL << FPU_FPCCR_LSPEN_Pos) /*!< FPCCR: LSPEN bit Mask */ + +#define FPU_FPCCR_LSPENS_Pos 29U /*!< FPCCR: LSPENS Position */ +#define FPU_FPCCR_LSPENS_Msk (1UL << FPU_FPCCR_LSPENS_Pos) /*!< FPCCR: LSPENS bit Mask */ + +#define FPU_FPCCR_CLRONRET_Pos 28U /*!< FPCCR: CLRONRET Position */ +#define FPU_FPCCR_CLRONRET_Msk (1UL << FPU_FPCCR_CLRONRET_Pos) /*!< FPCCR: CLRONRET bit Mask */ + +#define FPU_FPCCR_CLRONRETS_Pos 27U /*!< FPCCR: CLRONRETS Position */ +#define FPU_FPCCR_CLRONRETS_Msk (1UL << FPU_FPCCR_CLRONRETS_Pos) /*!< FPCCR: CLRONRETS bit Mask */ + +#define FPU_FPCCR_TS_Pos 26U /*!< FPCCR: TS Position */ +#define FPU_FPCCR_TS_Msk (1UL << FPU_FPCCR_TS_Pos) /*!< FPCCR: TS bit Mask */ + +#define FPU_FPCCR_UFRDY_Pos 10U /*!< FPCCR: UFRDY Position */ +#define FPU_FPCCR_UFRDY_Msk (1UL << FPU_FPCCR_UFRDY_Pos) /*!< FPCCR: UFRDY bit Mask */ + +#define FPU_FPCCR_SPLIMVIOL_Pos 9U /*!< FPCCR: SPLIMVIOL Position */ +#define FPU_FPCCR_SPLIMVIOL_Msk (1UL << FPU_FPCCR_SPLIMVIOL_Pos) /*!< FPCCR: SPLIMVIOL bit Mask */ + +#define FPU_FPCCR_MONRDY_Pos 8U /*!< FPCCR: MONRDY Position */ +#define FPU_FPCCR_MONRDY_Msk (1UL << FPU_FPCCR_MONRDY_Pos) /*!< FPCCR: MONRDY bit Mask */ + +#define FPU_FPCCR_SFRDY_Pos 7U /*!< FPCCR: SFRDY Position */ +#define FPU_FPCCR_SFRDY_Msk (1UL << FPU_FPCCR_SFRDY_Pos) /*!< FPCCR: SFRDY bit Mask */ + +#define FPU_FPCCR_BFRDY_Pos 6U /*!< FPCCR: BFRDY Position */ +#define FPU_FPCCR_BFRDY_Msk (1UL << FPU_FPCCR_BFRDY_Pos) /*!< FPCCR: BFRDY bit Mask */ + +#define FPU_FPCCR_MMRDY_Pos 5U /*!< FPCCR: MMRDY Position */ +#define FPU_FPCCR_MMRDY_Msk (1UL << FPU_FPCCR_MMRDY_Pos) /*!< FPCCR: MMRDY bit Mask */ + +#define FPU_FPCCR_HFRDY_Pos 4U /*!< FPCCR: HFRDY Position */ +#define FPU_FPCCR_HFRDY_Msk (1UL << FPU_FPCCR_HFRDY_Pos) /*!< FPCCR: HFRDY bit Mask */ + +#define FPU_FPCCR_THREAD_Pos 3U /*!< FPCCR: processor mode bit Position */ +#define FPU_FPCCR_THREAD_Msk (1UL << FPU_FPCCR_THREAD_Pos) /*!< FPCCR: processor mode active bit Mask */ + +#define FPU_FPCCR_S_Pos 2U /*!< FPCCR: Security status of the FP context bit Position */ +#define FPU_FPCCR_S_Msk (1UL << FPU_FPCCR_S_Pos) /*!< FPCCR: Security status of the FP context bit Mask */ + +#define FPU_FPCCR_USER_Pos 1U /*!< FPCCR: privilege level bit Position */ +#define FPU_FPCCR_USER_Msk (1UL << FPU_FPCCR_USER_Pos) /*!< FPCCR: privilege level bit Mask */ + +#define FPU_FPCCR_LSPACT_Pos 0U /*!< FPCCR: Lazy state preservation active bit Position */ +#define FPU_FPCCR_LSPACT_Msk (1UL /*<< FPU_FPCCR_LSPACT_Pos*/) /*!< FPCCR: Lazy state preservation active bit Mask */ + +/* Floating-Point Context Address Register Definitions */ +#define FPU_FPCAR_ADDRESS_Pos 3U /*!< FPCAR: ADDRESS bit Position */ +#define FPU_FPCAR_ADDRESS_Msk (0x1FFFFFFFUL << FPU_FPCAR_ADDRESS_Pos) /*!< FPCAR: ADDRESS bit Mask */ + +/* Floating-Point Default Status Control Register Definitions */ +#define FPU_FPDSCR_AHP_Pos 26U /*!< FPDSCR: AHP bit Position */ +#define FPU_FPDSCR_AHP_Msk (1UL << FPU_FPDSCR_AHP_Pos) /*!< FPDSCR: AHP bit Mask */ + +#define FPU_FPDSCR_DN_Pos 25U /*!< FPDSCR: DN bit Position */ +#define FPU_FPDSCR_DN_Msk (1UL << FPU_FPDSCR_DN_Pos) /*!< FPDSCR: DN bit Mask */ + +#define FPU_FPDSCR_FZ_Pos 24U /*!< FPDSCR: FZ bit Position */ +#define FPU_FPDSCR_FZ_Msk (1UL << FPU_FPDSCR_FZ_Pos) /*!< FPDSCR: FZ bit Mask */ + +#define FPU_FPDSCR_RMode_Pos 22U /*!< FPDSCR: RMode bit Position */ +#define FPU_FPDSCR_RMode_Msk (3UL << FPU_FPDSCR_RMode_Pos) /*!< FPDSCR: RMode bit Mask */ + +/* Media and VFP Feature Register 0 Definitions */ +#define FPU_MVFR0_FP_rounding_modes_Pos 28U /*!< MVFR0: FP rounding modes bits Position */ +#define FPU_MVFR0_FP_rounding_modes_Msk (0xFUL << FPU_MVFR0_FP_rounding_modes_Pos) /*!< MVFR0: FP rounding modes bits Mask */ + +#define FPU_MVFR0_Short_vectors_Pos 24U /*!< MVFR0: Short vectors bits Position */ +#define FPU_MVFR0_Short_vectors_Msk (0xFUL << FPU_MVFR0_Short_vectors_Pos) /*!< MVFR0: Short vectors bits Mask */ + +#define FPU_MVFR0_Square_root_Pos 20U /*!< MVFR0: Square root bits Position */ +#define FPU_MVFR0_Square_root_Msk (0xFUL << FPU_MVFR0_Square_root_Pos) /*!< MVFR0: Square root bits Mask */ + +#define FPU_MVFR0_Divide_Pos 16U /*!< MVFR0: Divide bits Position */ +#define FPU_MVFR0_Divide_Msk (0xFUL << FPU_MVFR0_Divide_Pos) /*!< MVFR0: Divide bits Mask */ + +#define FPU_MVFR0_FP_excep_trapping_Pos 12U /*!< MVFR0: FP exception trapping bits Position */ +#define FPU_MVFR0_FP_excep_trapping_Msk (0xFUL << FPU_MVFR0_FP_excep_trapping_Pos) /*!< MVFR0: FP exception trapping bits Mask */ + +#define FPU_MVFR0_Double_precision_Pos 8U /*!< MVFR0: Double-precision bits Position */ +#define FPU_MVFR0_Double_precision_Msk (0xFUL << FPU_MVFR0_Double_precision_Pos) /*!< MVFR0: Double-precision bits Mask */ + +#define FPU_MVFR0_Single_precision_Pos 4U /*!< MVFR0: Single-precision bits Position */ +#define FPU_MVFR0_Single_precision_Msk (0xFUL << FPU_MVFR0_Single_precision_Pos) /*!< MVFR0: Single-precision bits Mask */ + +#define FPU_MVFR0_A_SIMD_registers_Pos 0U /*!< MVFR0: A_SIMD registers bits Position */ +#define FPU_MVFR0_A_SIMD_registers_Msk (0xFUL /*<< FPU_MVFR0_A_SIMD_registers_Pos*/) /*!< MVFR0: A_SIMD registers bits Mask */ + +/* Media and VFP Feature Register 1 Definitions */ +#define FPU_MVFR1_FP_fused_MAC_Pos 28U /*!< MVFR1: FP fused MAC bits Position */ +#define FPU_MVFR1_FP_fused_MAC_Msk (0xFUL << FPU_MVFR1_FP_fused_MAC_Pos) /*!< MVFR1: FP fused MAC bits Mask */ + +#define FPU_MVFR1_FP_HPFP_Pos 24U /*!< MVFR1: FP HPFP bits Position */ +#define FPU_MVFR1_FP_HPFP_Msk (0xFUL << FPU_MVFR1_FP_HPFP_Pos) /*!< MVFR1: FP HPFP bits Mask */ + +#define FPU_MVFR1_D_NaN_mode_Pos 4U /*!< MVFR1: D_NaN mode bits Position */ +#define FPU_MVFR1_D_NaN_mode_Msk (0xFUL << FPU_MVFR1_D_NaN_mode_Pos) /*!< MVFR1: D_NaN mode bits Mask */ + +#define FPU_MVFR1_FtZ_mode_Pos 0U /*!< MVFR1: FtZ mode bits Position */ +#define FPU_MVFR1_FtZ_mode_Msk (0xFUL /*<< FPU_MVFR1_FtZ_mode_Pos*/) /*!< MVFR1: FtZ mode bits Mask */ + +/* Media and VFP Feature Register 2 Definitions */ +#define FPU_MVFR2_FPMisc_Pos 4U /*!< MVFR2: FPMisc bits Position */ +#define FPU_MVFR2_FPMisc_Msk (0xFUL << FPU_MVFR2_FPMisc_Pos) /*!< MVFR2: FPMisc bits Mask */ + +/*@} end of group CMSIS_FPU */ + +/* CoreDebug is deprecated. replaced by DCB (Debug Control Block) */ +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CoreDebug Core Debug Registers (CoreDebug) + \brief Type definitions for the Core Debug Registers + @{ + */ + +/** + \brief \deprecated Structure type to access the Core Debug Register (CoreDebug). + */ +typedef struct +{ + __IOM uint32_t DHCSR; /*!< Offset: 0x000 (R/W) Debug Halting Control and Status Register */ + __OM uint32_t DCRSR; /*!< Offset: 0x004 ( /W) Debug Core Register Selector Register */ + __IOM uint32_t DCRDR; /*!< Offset: 0x008 (R/W) Debug Core Register Data Register */ + __IOM uint32_t DEMCR; /*!< Offset: 0x00C (R/W) Debug Exception and Monitor Control Register */ + uint32_t RESERVED0[1U]; + __IOM uint32_t DAUTHCTRL; /*!< Offset: 0x014 (R/W) Debug Authentication Control Register */ + __IOM uint32_t DSCSR; /*!< Offset: 0x018 (R/W) Debug Security Control and Status Register */ +} CoreDebug_Type; + +/* Debug Halting Control and Status Register Definitions */ +#define CoreDebug_DHCSR_DBGKEY_Pos 16U /*!< \deprecated CoreDebug DHCSR: DBGKEY Position */ +#define CoreDebug_DHCSR_DBGKEY_Msk (0xFFFFUL << CoreDebug_DHCSR_DBGKEY_Pos) /*!< \deprecated CoreDebug DHCSR: DBGKEY Mask */ + +#define CoreDebug_DHCSR_S_RESTART_ST_Pos 26U /*!< \deprecated CoreDebug DHCSR: S_RESTART_ST Position */ +#define CoreDebug_DHCSR_S_RESTART_ST_Msk (1UL << CoreDebug_DHCSR_S_RESTART_ST_Pos) /*!< \deprecated CoreDebug DHCSR: S_RESTART_ST Mask */ + +#define CoreDebug_DHCSR_S_RESET_ST_Pos 25U /*!< \deprecated CoreDebug DHCSR: S_RESET_ST Position */ +#define CoreDebug_DHCSR_S_RESET_ST_Msk (1UL << CoreDebug_DHCSR_S_RESET_ST_Pos) /*!< \deprecated CoreDebug DHCSR: S_RESET_ST Mask */ + +#define CoreDebug_DHCSR_S_RETIRE_ST_Pos 24U /*!< \deprecated CoreDebug DHCSR: S_RETIRE_ST Position */ +#define CoreDebug_DHCSR_S_RETIRE_ST_Msk (1UL << CoreDebug_DHCSR_S_RETIRE_ST_Pos) /*!< \deprecated CoreDebug DHCSR: S_RETIRE_ST Mask */ + +#define CoreDebug_DHCSR_S_LOCKUP_Pos 19U /*!< \deprecated CoreDebug DHCSR: S_LOCKUP Position */ +#define CoreDebug_DHCSR_S_LOCKUP_Msk (1UL << CoreDebug_DHCSR_S_LOCKUP_Pos) /*!< \deprecated CoreDebug DHCSR: S_LOCKUP Mask */ + +#define CoreDebug_DHCSR_S_SLEEP_Pos 18U /*!< \deprecated CoreDebug DHCSR: S_SLEEP Position */ +#define CoreDebug_DHCSR_S_SLEEP_Msk (1UL << CoreDebug_DHCSR_S_SLEEP_Pos) /*!< \deprecated CoreDebug DHCSR: S_SLEEP Mask */ + +#define CoreDebug_DHCSR_S_HALT_Pos 17U /*!< \deprecated CoreDebug DHCSR: S_HALT Position */ +#define CoreDebug_DHCSR_S_HALT_Msk (1UL << CoreDebug_DHCSR_S_HALT_Pos) /*!< \deprecated CoreDebug DHCSR: S_HALT Mask */ + +#define CoreDebug_DHCSR_S_REGRDY_Pos 16U /*!< \deprecated CoreDebug DHCSR: S_REGRDY Position */ +#define CoreDebug_DHCSR_S_REGRDY_Msk (1UL << CoreDebug_DHCSR_S_REGRDY_Pos) /*!< \deprecated CoreDebug DHCSR: S_REGRDY Mask */ + +#define CoreDebug_DHCSR_C_SNAPSTALL_Pos 5U /*!< \deprecated CoreDebug DHCSR: C_SNAPSTALL Position */ +#define CoreDebug_DHCSR_C_SNAPSTALL_Msk (1UL << CoreDebug_DHCSR_C_SNAPSTALL_Pos) /*!< \deprecated CoreDebug DHCSR: C_SNAPSTALL Mask */ + +#define CoreDebug_DHCSR_C_MASKINTS_Pos 3U /*!< \deprecated CoreDebug DHCSR: C_MASKINTS Position */ +#define CoreDebug_DHCSR_C_MASKINTS_Msk (1UL << CoreDebug_DHCSR_C_MASKINTS_Pos) /*!< \deprecated CoreDebug DHCSR: C_MASKINTS Mask */ + +#define CoreDebug_DHCSR_C_STEP_Pos 2U /*!< \deprecated CoreDebug DHCSR: C_STEP Position */ +#define CoreDebug_DHCSR_C_STEP_Msk (1UL << CoreDebug_DHCSR_C_STEP_Pos) /*!< \deprecated CoreDebug DHCSR: C_STEP Mask */ + +#define CoreDebug_DHCSR_C_HALT_Pos 1U /*!< \deprecated CoreDebug DHCSR: C_HALT Position */ +#define CoreDebug_DHCSR_C_HALT_Msk (1UL << CoreDebug_DHCSR_C_HALT_Pos) /*!< \deprecated CoreDebug DHCSR: C_HALT Mask */ + +#define CoreDebug_DHCSR_C_DEBUGEN_Pos 0U /*!< \deprecated CoreDebug DHCSR: C_DEBUGEN Position */ +#define CoreDebug_DHCSR_C_DEBUGEN_Msk (1UL /*<< CoreDebug_DHCSR_C_DEBUGEN_Pos*/) /*!< \deprecated CoreDebug DHCSR: C_DEBUGEN Mask */ + +/* Debug Core Register Selector Register Definitions */ +#define CoreDebug_DCRSR_REGWnR_Pos 16U /*!< \deprecated CoreDebug DCRSR: REGWnR Position */ +#define CoreDebug_DCRSR_REGWnR_Msk (1UL << CoreDebug_DCRSR_REGWnR_Pos) /*!< \deprecated CoreDebug DCRSR: REGWnR Mask */ + +#define CoreDebug_DCRSR_REGSEL_Pos 0U /*!< \deprecated CoreDebug DCRSR: REGSEL Position */ +#define CoreDebug_DCRSR_REGSEL_Msk (0x1FUL /*<< CoreDebug_DCRSR_REGSEL_Pos*/) /*!< \deprecated CoreDebug DCRSR: REGSEL Mask */ + +/* Debug Exception and Monitor Control Register Definitions */ +#define CoreDebug_DEMCR_TRCENA_Pos 24U /*!< \deprecated CoreDebug DEMCR: TRCENA Position */ +#define CoreDebug_DEMCR_TRCENA_Msk (1UL << CoreDebug_DEMCR_TRCENA_Pos) /*!< \deprecated CoreDebug DEMCR: TRCENA Mask */ + +#define CoreDebug_DEMCR_MON_REQ_Pos 19U /*!< \deprecated CoreDebug DEMCR: MON_REQ Position */ +#define CoreDebug_DEMCR_MON_REQ_Msk (1UL << CoreDebug_DEMCR_MON_REQ_Pos) /*!< \deprecated CoreDebug DEMCR: MON_REQ Mask */ + +#define CoreDebug_DEMCR_MON_STEP_Pos 18U /*!< \deprecated CoreDebug DEMCR: MON_STEP Position */ +#define CoreDebug_DEMCR_MON_STEP_Msk (1UL << CoreDebug_DEMCR_MON_STEP_Pos) /*!< \deprecated CoreDebug DEMCR: MON_STEP Mask */ + +#define CoreDebug_DEMCR_MON_PEND_Pos 17U /*!< \deprecated CoreDebug DEMCR: MON_PEND Position */ +#define CoreDebug_DEMCR_MON_PEND_Msk (1UL << CoreDebug_DEMCR_MON_PEND_Pos) /*!< \deprecated CoreDebug DEMCR: MON_PEND Mask */ + +#define CoreDebug_DEMCR_MON_EN_Pos 16U /*!< \deprecated CoreDebug DEMCR: MON_EN Position */ +#define CoreDebug_DEMCR_MON_EN_Msk (1UL << CoreDebug_DEMCR_MON_EN_Pos) /*!< \deprecated CoreDebug DEMCR: MON_EN Mask */ + +#define CoreDebug_DEMCR_VC_HARDERR_Pos 10U /*!< \deprecated CoreDebug DEMCR: VC_HARDERR Position */ +#define CoreDebug_DEMCR_VC_HARDERR_Msk (1UL << CoreDebug_DEMCR_VC_HARDERR_Pos) /*!< \deprecated CoreDebug DEMCR: VC_HARDERR Mask */ + +#define CoreDebug_DEMCR_VC_INTERR_Pos 9U /*!< \deprecated CoreDebug DEMCR: VC_INTERR Position */ +#define CoreDebug_DEMCR_VC_INTERR_Msk (1UL << CoreDebug_DEMCR_VC_INTERR_Pos) /*!< \deprecated CoreDebug DEMCR: VC_INTERR Mask */ + +#define CoreDebug_DEMCR_VC_BUSERR_Pos 8U /*!< \deprecated CoreDebug DEMCR: VC_BUSERR Position */ +#define CoreDebug_DEMCR_VC_BUSERR_Msk (1UL << CoreDebug_DEMCR_VC_BUSERR_Pos) /*!< \deprecated CoreDebug DEMCR: VC_BUSERR Mask */ + +#define CoreDebug_DEMCR_VC_STATERR_Pos 7U /*!< \deprecated CoreDebug DEMCR: VC_STATERR Position */ +#define CoreDebug_DEMCR_VC_STATERR_Msk (1UL << CoreDebug_DEMCR_VC_STATERR_Pos) /*!< \deprecated CoreDebug DEMCR: VC_STATERR Mask */ + +#define CoreDebug_DEMCR_VC_CHKERR_Pos 6U /*!< \deprecated CoreDebug DEMCR: VC_CHKERR Position */ +#define CoreDebug_DEMCR_VC_CHKERR_Msk (1UL << CoreDebug_DEMCR_VC_CHKERR_Pos) /*!< \deprecated CoreDebug DEMCR: VC_CHKERR Mask */ + +#define CoreDebug_DEMCR_VC_NOCPERR_Pos 5U /*!< \deprecated CoreDebug DEMCR: VC_NOCPERR Position */ +#define CoreDebug_DEMCR_VC_NOCPERR_Msk (1UL << CoreDebug_DEMCR_VC_NOCPERR_Pos) /*!< \deprecated CoreDebug DEMCR: VC_NOCPERR Mask */ + +#define CoreDebug_DEMCR_VC_MMERR_Pos 4U /*!< \deprecated CoreDebug DEMCR: VC_MMERR Position */ +#define CoreDebug_DEMCR_VC_MMERR_Msk (1UL << CoreDebug_DEMCR_VC_MMERR_Pos) /*!< \deprecated CoreDebug DEMCR: VC_MMERR Mask */ + +#define CoreDebug_DEMCR_VC_CORERESET_Pos 0U /*!< \deprecated CoreDebug DEMCR: VC_CORERESET Position */ +#define CoreDebug_DEMCR_VC_CORERESET_Msk (1UL /*<< CoreDebug_DEMCR_VC_CORERESET_Pos*/) /*!< \deprecated CoreDebug DEMCR: VC_CORERESET Mask */ + +/* Debug Authentication Control Register Definitions */ +#define CoreDebug_DAUTHCTRL_INTSPNIDEN_Pos 3U /*!< \deprecated CoreDebug DAUTHCTRL: INTSPNIDEN, Position */ +#define CoreDebug_DAUTHCTRL_INTSPNIDEN_Msk (1UL << CoreDebug_DAUTHCTRL_INTSPNIDEN_Pos) /*!< \deprecated CoreDebug DAUTHCTRL: INTSPNIDEN, Mask */ + +#define CoreDebug_DAUTHCTRL_SPNIDENSEL_Pos 2U /*!< \deprecated CoreDebug DAUTHCTRL: SPNIDENSEL Position */ +#define CoreDebug_DAUTHCTRL_SPNIDENSEL_Msk (1UL << CoreDebug_DAUTHCTRL_SPNIDENSEL_Pos) /*!< \deprecated CoreDebug DAUTHCTRL: SPNIDENSEL Mask */ + +#define CoreDebug_DAUTHCTRL_INTSPIDEN_Pos 1U /*!< \deprecated CoreDebug DAUTHCTRL: INTSPIDEN Position */ +#define CoreDebug_DAUTHCTRL_INTSPIDEN_Msk (1UL << CoreDebug_DAUTHCTRL_INTSPIDEN_Pos) /*!< \deprecated CoreDebug DAUTHCTRL: INTSPIDEN Mask */ + +#define CoreDebug_DAUTHCTRL_SPIDENSEL_Pos 0U /*!< \deprecated CoreDebug DAUTHCTRL: SPIDENSEL Position */ +#define CoreDebug_DAUTHCTRL_SPIDENSEL_Msk (1UL /*<< CoreDebug_DAUTHCTRL_SPIDENSEL_Pos*/) /*!< \deprecated CoreDebug DAUTHCTRL: SPIDENSEL Mask */ + +/* Debug Security Control and Status Register Definitions */ +#define CoreDebug_DSCSR_CDS_Pos 16U /*!< \deprecated CoreDebug DSCSR: CDS Position */ +#define CoreDebug_DSCSR_CDS_Msk (1UL << CoreDebug_DSCSR_CDS_Pos) /*!< \deprecated CoreDebug DSCSR: CDS Mask */ + +#define CoreDebug_DSCSR_SBRSEL_Pos 1U /*!< \deprecated CoreDebug DSCSR: SBRSEL Position */ +#define CoreDebug_DSCSR_SBRSEL_Msk (1UL << CoreDebug_DSCSR_SBRSEL_Pos) /*!< \deprecated CoreDebug DSCSR: SBRSEL Mask */ + +#define CoreDebug_DSCSR_SBRSELEN_Pos 0U /*!< \deprecated CoreDebug DSCSR: SBRSELEN Position */ +#define CoreDebug_DSCSR_SBRSELEN_Msk (1UL /*<< CoreDebug_DSCSR_SBRSELEN_Pos*/) /*!< \deprecated CoreDebug DSCSR: SBRSELEN Mask */ + +/*@} end of group CMSIS_CoreDebug */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_DCB Debug Control Block + \brief Type definitions for the Debug Control Block Registers + @{ + */ + +/** + \brief Structure type to access the Debug Control Block Registers (DCB). + */ +typedef struct +{ + __IOM uint32_t DHCSR; /*!< Offset: 0x000 (R/W) Debug Halting Control and Status Register */ + __OM uint32_t DCRSR; /*!< Offset: 0x004 ( /W) Debug Core Register Selector Register */ + __IOM uint32_t DCRDR; /*!< Offset: 0x008 (R/W) Debug Core Register Data Register */ + __IOM uint32_t DEMCR; /*!< Offset: 0x00C (R/W) Debug Exception and Monitor Control Register */ + uint32_t RESERVED0[1U]; + __IOM uint32_t DAUTHCTRL; /*!< Offset: 0x014 (R/W) Debug Authentication Control Register */ + __IOM uint32_t DSCSR; /*!< Offset: 0x018 (R/W) Debug Security Control and Status Register */ +} DCB_Type; + +/* DHCSR, Debug Halting Control and Status Register Definitions */ +#define DCB_DHCSR_DBGKEY_Pos 16U /*!< DCB DHCSR: Debug key Position */ +#define DCB_DHCSR_DBGKEY_Msk (0xFFFFUL << DCB_DHCSR_DBGKEY_Pos) /*!< DCB DHCSR: Debug key Mask */ + +#define DCB_DHCSR_S_RESTART_ST_Pos 26U /*!< DCB DHCSR: Restart sticky status Position */ +#define DCB_DHCSR_S_RESTART_ST_Msk (0x1UL << DCB_DHCSR_S_RESTART_ST_Pos) /*!< DCB DHCSR: Restart sticky status Mask */ + +#define DCB_DHCSR_S_RESET_ST_Pos 25U /*!< DCB DHCSR: Reset sticky status Position */ +#define DCB_DHCSR_S_RESET_ST_Msk (0x1UL << DCB_DHCSR_S_RESET_ST_Pos) /*!< DCB DHCSR: Reset sticky status Mask */ + +#define DCB_DHCSR_S_RETIRE_ST_Pos 24U /*!< DCB DHCSR: Retire sticky status Position */ +#define DCB_DHCSR_S_RETIRE_ST_Msk (0x1UL << DCB_DHCSR_S_RETIRE_ST_Pos) /*!< DCB DHCSR: Retire sticky status Mask */ + +#define DCB_DHCSR_S_SDE_Pos 20U /*!< DCB DHCSR: Secure debug enabled Position */ +#define DCB_DHCSR_S_SDE_Msk (0x1UL << DCB_DHCSR_S_SDE_Pos) /*!< DCB DHCSR: Secure debug enabled Mask */ + +#define DCB_DHCSR_S_LOCKUP_Pos 19U /*!< DCB DHCSR: Lockup status Position */ +#define DCB_DHCSR_S_LOCKUP_Msk (0x1UL << DCB_DHCSR_S_LOCKUP_Pos) /*!< DCB DHCSR: Lockup status Mask */ + +#define DCB_DHCSR_S_SLEEP_Pos 18U /*!< DCB DHCSR: Sleeping status Position */ +#define DCB_DHCSR_S_SLEEP_Msk (0x1UL << DCB_DHCSR_S_SLEEP_Pos) /*!< DCB DHCSR: Sleeping status Mask */ + +#define DCB_DHCSR_S_HALT_Pos 17U /*!< DCB DHCSR: Halted status Position */ +#define DCB_DHCSR_S_HALT_Msk (0x1UL << DCB_DHCSR_S_HALT_Pos) /*!< DCB DHCSR: Halted status Mask */ + +#define DCB_DHCSR_S_REGRDY_Pos 16U /*!< DCB DHCSR: Register ready status Position */ +#define DCB_DHCSR_S_REGRDY_Msk (0x1UL << DCB_DHCSR_S_REGRDY_Pos) /*!< DCB DHCSR: Register ready status Mask */ + +#define DCB_DHCSR_C_SNAPSTALL_Pos 5U /*!< DCB DHCSR: Snap stall control Position */ +#define DCB_DHCSR_C_SNAPSTALL_Msk (0x1UL << DCB_DHCSR_C_SNAPSTALL_Pos) /*!< DCB DHCSR: Snap stall control Mask */ + +#define DCB_DHCSR_C_MASKINTS_Pos 3U /*!< DCB DHCSR: Mask interrupts control Position */ +#define DCB_DHCSR_C_MASKINTS_Msk (0x1UL << DCB_DHCSR_C_MASKINTS_Pos) /*!< DCB DHCSR: Mask interrupts control Mask */ + +#define DCB_DHCSR_C_STEP_Pos 2U /*!< DCB DHCSR: Step control Position */ +#define DCB_DHCSR_C_STEP_Msk (0x1UL << DCB_DHCSR_C_STEP_Pos) /*!< DCB DHCSR: Step control Mask */ + +#define DCB_DHCSR_C_HALT_Pos 1U /*!< DCB DHCSR: Halt control Position */ +#define DCB_DHCSR_C_HALT_Msk (0x1UL << DCB_DHCSR_C_HALT_Pos) /*!< DCB DHCSR: Halt control Mask */ + +#define DCB_DHCSR_C_DEBUGEN_Pos 0U /*!< DCB DHCSR: Debug enable control Position */ +#define DCB_DHCSR_C_DEBUGEN_Msk (0x1UL /*<< DCB_DHCSR_C_DEBUGEN_Pos*/) /*!< DCB DHCSR: Debug enable control Mask */ + +/* DCRSR, Debug Core Register Select Register Definitions */ +#define DCB_DCRSR_REGWnR_Pos 16U /*!< DCB DCRSR: Register write/not-read Position */ +#define DCB_DCRSR_REGWnR_Msk (0x1UL << DCB_DCRSR_REGWnR_Pos) /*!< DCB DCRSR: Register write/not-read Mask */ + +#define DCB_DCRSR_REGSEL_Pos 0U /*!< DCB DCRSR: Register selector Position */ +#define DCB_DCRSR_REGSEL_Msk (0x7FUL /*<< DCB_DCRSR_REGSEL_Pos*/) /*!< DCB DCRSR: Register selector Mask */ + +/* DCRDR, Debug Core Register Data Register Definitions */ +#define DCB_DCRDR_DBGTMP_Pos 0U /*!< DCB DCRDR: Data temporary buffer Position */ +#define DCB_DCRDR_DBGTMP_Msk (0xFFFFFFFFUL /*<< DCB_DCRDR_DBGTMP_Pos*/) /*!< DCB DCRDR: Data temporary buffer Mask */ + +/* DEMCR, Debug Exception and Monitor Control Register Definitions */ +#define DCB_DEMCR_TRCENA_Pos 24U /*!< DCB DEMCR: Trace enable Position */ +#define DCB_DEMCR_TRCENA_Msk (0x1UL << DCB_DEMCR_TRCENA_Pos) /*!< DCB DEMCR: Trace enable Mask */ + +#define DCB_DEMCR_MONPRKEY_Pos 23U /*!< DCB DEMCR: Monitor pend req key Position */ +#define DCB_DEMCR_MONPRKEY_Msk (0x1UL << DCB_DEMCR_MONPRKEY_Pos) /*!< DCB DEMCR: Monitor pend req key Mask */ + +#define DCB_DEMCR_UMON_EN_Pos 21U /*!< DCB DEMCR: Unprivileged monitor enable Position */ +#define DCB_DEMCR_UMON_EN_Msk (0x1UL << DCB_DEMCR_UMON_EN_Pos) /*!< DCB DEMCR: Unprivileged monitor enable Mask */ + +#define DCB_DEMCR_SDME_Pos 20U /*!< DCB DEMCR: Secure DebugMonitor enable Position */ +#define DCB_DEMCR_SDME_Msk (0x1UL << DCB_DEMCR_SDME_Pos) /*!< DCB DEMCR: Secure DebugMonitor enable Mask */ + +#define DCB_DEMCR_MON_REQ_Pos 19U /*!< DCB DEMCR: Monitor request Position */ +#define DCB_DEMCR_MON_REQ_Msk (0x1UL << DCB_DEMCR_MON_REQ_Pos) /*!< DCB DEMCR: Monitor request Mask */ + +#define DCB_DEMCR_MON_STEP_Pos 18U /*!< DCB DEMCR: Monitor step Position */ +#define DCB_DEMCR_MON_STEP_Msk (0x1UL << DCB_DEMCR_MON_STEP_Pos) /*!< DCB DEMCR: Monitor step Mask */ + +#define DCB_DEMCR_MON_PEND_Pos 17U /*!< DCB DEMCR: Monitor pend Position */ +#define DCB_DEMCR_MON_PEND_Msk (0x1UL << DCB_DEMCR_MON_PEND_Pos) /*!< DCB DEMCR: Monitor pend Mask */ + +#define DCB_DEMCR_MON_EN_Pos 16U /*!< DCB DEMCR: Monitor enable Position */ +#define DCB_DEMCR_MON_EN_Msk (0x1UL << DCB_DEMCR_MON_EN_Pos) /*!< DCB DEMCR: Monitor enable Mask */ + +#define DCB_DEMCR_VC_SFERR_Pos 11U /*!< DCB DEMCR: Vector Catch SecureFault Position */ +#define DCB_DEMCR_VC_SFERR_Msk (0x1UL << DCB_DEMCR_VC_SFERR_Pos) /*!< DCB DEMCR: Vector Catch SecureFault Mask */ + +#define DCB_DEMCR_VC_HARDERR_Pos 10U /*!< DCB DEMCR: Vector Catch HardFault errors Position */ +#define DCB_DEMCR_VC_HARDERR_Msk (0x1UL << DCB_DEMCR_VC_HARDERR_Pos) /*!< DCB DEMCR: Vector Catch HardFault errors Mask */ + +#define DCB_DEMCR_VC_INTERR_Pos 9U /*!< DCB DEMCR: Vector Catch interrupt errors Position */ +#define DCB_DEMCR_VC_INTERR_Msk (0x1UL << DCB_DEMCR_VC_INTERR_Pos) /*!< DCB DEMCR: Vector Catch interrupt errors Mask */ + +#define DCB_DEMCR_VC_BUSERR_Pos 8U /*!< DCB DEMCR: Vector Catch BusFault errors Position */ +#define DCB_DEMCR_VC_BUSERR_Msk (0x1UL << DCB_DEMCR_VC_BUSERR_Pos) /*!< DCB DEMCR: Vector Catch BusFault errors Mask */ + +#define DCB_DEMCR_VC_STATERR_Pos 7U /*!< DCB DEMCR: Vector Catch state errors Position */ +#define DCB_DEMCR_VC_STATERR_Msk (0x1UL << DCB_DEMCR_VC_STATERR_Pos) /*!< DCB DEMCR: Vector Catch state errors Mask */ + +#define DCB_DEMCR_VC_CHKERR_Pos 6U /*!< DCB DEMCR: Vector Catch check errors Position */ +#define DCB_DEMCR_VC_CHKERR_Msk (0x1UL << DCB_DEMCR_VC_CHKERR_Pos) /*!< DCB DEMCR: Vector Catch check errors Mask */ + +#define DCB_DEMCR_VC_NOCPERR_Pos 5U /*!< DCB DEMCR: Vector Catch NOCP errors Position */ +#define DCB_DEMCR_VC_NOCPERR_Msk (0x1UL << DCB_DEMCR_VC_NOCPERR_Pos) /*!< DCB DEMCR: Vector Catch NOCP errors Mask */ + +#define DCB_DEMCR_VC_MMERR_Pos 4U /*!< DCB DEMCR: Vector Catch MemManage errors Position */ +#define DCB_DEMCR_VC_MMERR_Msk (0x1UL << DCB_DEMCR_VC_MMERR_Pos) /*!< DCB DEMCR: Vector Catch MemManage errors Mask */ + +#define DCB_DEMCR_VC_CORERESET_Pos 0U /*!< DCB DEMCR: Vector Catch Core reset Position */ +#define DCB_DEMCR_VC_CORERESET_Msk (0x1UL /*<< DCB_DEMCR_VC_CORERESET_Pos*/) /*!< DCB DEMCR: Vector Catch Core reset Mask */ + +/* DAUTHCTRL, Debug Authentication Control Register Definitions */ +#define DCB_DAUTHCTRL_INTSPNIDEN_Pos 3U /*!< DCB DAUTHCTRL: Internal Secure non-invasive debug enable Position */ +#define DCB_DAUTHCTRL_INTSPNIDEN_Msk (0x1UL << DCB_DAUTHCTRL_INTSPNIDEN_Pos) /*!< DCB DAUTHCTRL: Internal Secure non-invasive debug enable Mask */ + +#define DCB_DAUTHCTRL_SPNIDENSEL_Pos 2U /*!< DCB DAUTHCTRL: Secure non-invasive debug enable select Position */ +#define DCB_DAUTHCTRL_SPNIDENSEL_Msk (0x1UL << DCB_DAUTHCTRL_SPNIDENSEL_Pos) /*!< DCB DAUTHCTRL: Secure non-invasive debug enable select Mask */ + +#define DCB_DAUTHCTRL_INTSPIDEN_Pos 1U /*!< DCB DAUTHCTRL: Internal Secure invasive debug enable Position */ +#define DCB_DAUTHCTRL_INTSPIDEN_Msk (0x1UL << DCB_DAUTHCTRL_INTSPIDEN_Pos) /*!< DCB DAUTHCTRL: Internal Secure invasive debug enable Mask */ + +#define DCB_DAUTHCTRL_SPIDENSEL_Pos 0U /*!< DCB DAUTHCTRL: Secure invasive debug enable select Position */ +#define DCB_DAUTHCTRL_SPIDENSEL_Msk (0x1UL /*<< DCB_DAUTHCTRL_SPIDENSEL_Pos*/) /*!< DCB DAUTHCTRL: Secure invasive debug enable select Mask */ + +/* DSCSR, Debug Security Control and Status Register Definitions */ +#define DCB_DSCSR_CDSKEY_Pos 17U /*!< DCB DSCSR: CDS write-enable key Position */ +#define DCB_DSCSR_CDSKEY_Msk (0x1UL << DCB_DSCSR_CDSKEY_Pos) /*!< DCB DSCSR: CDS write-enable key Mask */ + +#define DCB_DSCSR_CDS_Pos 16U /*!< DCB DSCSR: Current domain Secure Position */ +#define DCB_DSCSR_CDS_Msk (0x1UL << DCB_DSCSR_CDS_Pos) /*!< DCB DSCSR: Current domain Secure Mask */ + +#define DCB_DSCSR_SBRSEL_Pos 1U /*!< DCB DSCSR: Secure banked register select Position */ +#define DCB_DSCSR_SBRSEL_Msk (0x1UL << DCB_DSCSR_SBRSEL_Pos) /*!< DCB DSCSR: Secure banked register select Mask */ + +#define DCB_DSCSR_SBRSELEN_Pos 0U /*!< DCB DSCSR: Secure banked register select enable Position */ +#define DCB_DSCSR_SBRSELEN_Msk (0x1UL /*<< DCB_DSCSR_SBRSELEN_Pos*/) /*!< DCB DSCSR: Secure banked register select enable Mask */ + +/*@} end of group CMSIS_DCB */ + + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_DIB Debug Identification Block + \brief Type definitions for the Debug Identification Block Registers + @{ + */ + +/** + \brief Structure type to access the Debug Identification Block Registers (DIB). + */ +typedef struct +{ + __OM uint32_t DLAR; /*!< Offset: 0x000 ( /W) SCS Software Lock Access Register */ + __IM uint32_t DLSR; /*!< Offset: 0x004 (R/ ) SCS Software Lock Status Register */ + __IM uint32_t DAUTHSTATUS; /*!< Offset: 0x008 (R/ ) Debug Authentication Status Register */ + __IM uint32_t DDEVARCH; /*!< Offset: 0x00C (R/ ) SCS Device Architecture Register */ + __IM uint32_t DDEVTYPE; /*!< Offset: 0x010 (R/ ) SCS Device Type Register */ +} DIB_Type; + +/* DLAR, SCS Software Lock Access Register Definitions */ +#define DIB_DLAR_KEY_Pos 0U /*!< DIB DLAR: KEY Position */ +#define DIB_DLAR_KEY_Msk (0xFFFFFFFFUL /*<< DIB_DLAR_KEY_Pos */) /*!< DIB DLAR: KEY Mask */ + +/* DLSR, SCS Software Lock Status Register Definitions */ +#define DIB_DLSR_nTT_Pos 2U /*!< DIB DLSR: Not thirty-two bit Position */ +#define DIB_DLSR_nTT_Msk (0x1UL << DIB_DLSR_nTT_Pos ) /*!< DIB DLSR: Not thirty-two bit Mask */ + +#define DIB_DLSR_SLK_Pos 1U /*!< DIB DLSR: Software Lock status Position */ +#define DIB_DLSR_SLK_Msk (0x1UL << DIB_DLSR_SLK_Pos ) /*!< DIB DLSR: Software Lock status Mask */ + +#define DIB_DLSR_SLI_Pos 0U /*!< DIB DLSR: Software Lock implemented Position */ +#define DIB_DLSR_SLI_Msk (0x1UL /*<< DIB_DLSR_SLI_Pos*/) /*!< DIB DLSR: Software Lock implemented Mask */ + +/* DAUTHSTATUS, Debug Authentication Status Register Definitions */ +#define DIB_DAUTHSTATUS_SNID_Pos 6U /*!< DIB DAUTHSTATUS: Secure Non-invasive Debug Position */ +#define DIB_DAUTHSTATUS_SNID_Msk (0x3UL << DIB_DAUTHSTATUS_SNID_Pos ) /*!< DIB DAUTHSTATUS: Secure Non-invasive Debug Mask */ + +#define DIB_DAUTHSTATUS_SID_Pos 4U /*!< DIB DAUTHSTATUS: Secure Invasive Debug Position */ +#define DIB_DAUTHSTATUS_SID_Msk (0x3UL << DIB_DAUTHSTATUS_SID_Pos ) /*!< DIB DAUTHSTATUS: Secure Invasive Debug Mask */ + +#define DIB_DAUTHSTATUS_NSNID_Pos 2U /*!< DIB DAUTHSTATUS: Non-secure Non-invasive Debug Position */ +#define DIB_DAUTHSTATUS_NSNID_Msk (0x3UL << DIB_DAUTHSTATUS_NSNID_Pos ) /*!< DIB DAUTHSTATUS: Non-secure Non-invasive Debug Mask */ + +#define DIB_DAUTHSTATUS_NSID_Pos 0U /*!< DIB DAUTHSTATUS: Non-secure Invasive Debug Position */ +#define DIB_DAUTHSTATUS_NSID_Msk (0x3UL /*<< DIB_DAUTHSTATUS_NSID_Pos*/) /*!< DIB DAUTHSTATUS: Non-secure Invasive Debug Mask */ + +/* DDEVARCH, SCS Device Architecture Register Definitions */ +#define DIB_DDEVARCH_ARCHITECT_Pos 21U /*!< DIB DDEVARCH: Architect Position */ +#define DIB_DDEVARCH_ARCHITECT_Msk (0x7FFUL << DIB_DDEVARCH_ARCHITECT_Pos ) /*!< DIB DDEVARCH: Architect Mask */ + +#define DIB_DDEVARCH_PRESENT_Pos 20U /*!< DIB DDEVARCH: DEVARCH Present Position */ +#define DIB_DDEVARCH_PRESENT_Msk (0x1FUL << DIB_DDEVARCH_PRESENT_Pos ) /*!< DIB DDEVARCH: DEVARCH Present Mask */ + +#define DIB_DDEVARCH_REVISION_Pos 16U /*!< DIB DDEVARCH: Revision Position */ +#define DIB_DDEVARCH_REVISION_Msk (0xFUL << DIB_DDEVARCH_REVISION_Pos ) /*!< DIB DDEVARCH: Revision Mask */ + +#define DIB_DDEVARCH_ARCHVER_Pos 12U /*!< DIB DDEVARCH: Architecture Version Position */ +#define DIB_DDEVARCH_ARCHVER_Msk (0xFUL << DIB_DDEVARCH_ARCHVER_Pos ) /*!< DIB DDEVARCH: Architecture Version Mask */ + +#define DIB_DDEVARCH_ARCHPART_Pos 0U /*!< DIB DDEVARCH: Architecture Part Position */ +#define DIB_DDEVARCH_ARCHPART_Msk (0xFFFUL /*<< DIB_DDEVARCH_ARCHPART_Pos*/) /*!< DIB DDEVARCH: Architecture Part Mask */ + +/* DDEVTYPE, SCS Device Type Register Definitions */ +#define DIB_DDEVTYPE_SUB_Pos 4U /*!< DIB DDEVTYPE: Sub-type Position */ +#define DIB_DDEVTYPE_SUB_Msk (0xFUL << DIB_DDEVTYPE_SUB_Pos ) /*!< DIB DDEVTYPE: Sub-type Mask */ + +#define DIB_DDEVTYPE_MAJOR_Pos 0U /*!< DIB DDEVTYPE: Major type Position */ +#define DIB_DDEVTYPE_MAJOR_Msk (0xFUL /*<< DIB_DDEVTYPE_MAJOR_Pos*/) /*!< DIB DDEVTYPE: Major type Mask */ + + +/*@} end of group CMSIS_DIB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_bitfield Core register bit field macros + \brief Macros for use with bit field definitions (xxx_Pos, xxx_Msk). + @{ + */ + +/** + \brief Mask and shift a bit field value for use in a register bit range. + \param[in] field Name of the register bit field. + \param[in] value Value of the bit field. This parameter is interpreted as an uint32_t type. + \return Masked and shifted value. +*/ +#define _VAL2FLD(field, value) (((uint32_t)(value) << field ## _Pos) & field ## _Msk) + +/** + \brief Mask and shift a register value to extract a bit filed value. + \param[in] field Name of the register bit field. + \param[in] value Value of register. This parameter is interpreted as an uint32_t type. + \return Masked and shifted bit field value. +*/ +#define _FLD2VAL(field, value) (((uint32_t)(value) & field ## _Msk) >> field ## _Pos) + +/*@} end of group CMSIS_core_bitfield */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_base Core Definitions + \brief Definitions for base addresses, unions, and structures. + @{ + */ + +/* Memory mapping of Core Hardware */ + #define SCS_BASE (0xE000E000UL) /*!< System Control Space Base Address */ + #define ITM_BASE (0xE0000000UL) /*!< ITM Base Address */ + #define DWT_BASE (0xE0001000UL) /*!< DWT Base Address */ + #define TPI_BASE (0xE0040000UL) /*!< TPI Base Address */ + #define CoreDebug_BASE (0xE000EDF0UL) /*!< \deprecated Core Debug Base Address */ + #define DCB_BASE (0xE000EDF0UL) /*!< DCB Base Address */ + #define DIB_BASE (0xE000EFB0UL) /*!< DIB Base Address */ + #define SysTick_BASE (SCS_BASE + 0x0010UL) /*!< SysTick Base Address */ + #define NVIC_BASE (SCS_BASE + 0x0100UL) /*!< NVIC Base Address */ + #define SCB_BASE (SCS_BASE + 0x0D00UL) /*!< System Control Block Base Address */ + + #define SCnSCB ((SCnSCB_Type *) SCS_BASE ) /*!< System control Register not in SCB */ + #define SCB ((SCB_Type *) SCB_BASE ) /*!< SCB configuration struct */ + #define SysTick ((SysTick_Type *) SysTick_BASE ) /*!< SysTick configuration struct */ + #define NVIC ((NVIC_Type *) NVIC_BASE ) /*!< NVIC configuration struct */ + #define ITM ((ITM_Type *) ITM_BASE ) /*!< ITM configuration struct */ + #define DWT ((DWT_Type *) DWT_BASE ) /*!< DWT configuration struct */ + #define TPI ((TPI_Type *) TPI_BASE ) /*!< TPI configuration struct */ + #define CoreDebug ((CoreDebug_Type *) CoreDebug_BASE ) /*!< \deprecated Core Debug configuration struct */ + #define DCB ((DCB_Type *) DCB_BASE ) /*!< DCB configuration struct */ + #define DIB ((DIB_Type *) DIB_BASE ) /*!< DIB configuration struct */ + + #if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + #define MPU_BASE (SCS_BASE + 0x0D90UL) /*!< Memory Protection Unit */ + #define MPU ((MPU_Type *) MPU_BASE ) /*!< Memory Protection Unit */ + #endif + + #if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) + #define SAU_BASE (SCS_BASE + 0x0DD0UL) /*!< Security Attribution Unit */ + #define SAU ((SAU_Type *) SAU_BASE ) /*!< Security Attribution Unit */ + #endif + + #define FPU_BASE (SCS_BASE + 0x0F30UL) /*!< Floating Point Unit */ + #define FPU ((FPU_Type *) FPU_BASE ) /*!< Floating Point Unit */ + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) + #define SCS_BASE_NS (0xE002E000UL) /*!< System Control Space Base Address (non-secure address space) */ + #define CoreDebug_BASE_NS (0xE002EDF0UL) /*!< \deprecated Core Debug Base Address (non-secure address space) */ + #define DCB_BASE_NS (0xE002EDF0UL) /*!< DCB Base Address (non-secure address space) */ + #define DIB_BASE_NS (0xE002EFB0UL) /*!< DIB Base Address (non-secure address space) */ + #define SysTick_BASE_NS (SCS_BASE_NS + 0x0010UL) /*!< SysTick Base Address (non-secure address space) */ + #define NVIC_BASE_NS (SCS_BASE_NS + 0x0100UL) /*!< NVIC Base Address (non-secure address space) */ + #define SCB_BASE_NS (SCS_BASE_NS + 0x0D00UL) /*!< System Control Block Base Address (non-secure address space) */ + + #define SCnSCB_NS ((SCnSCB_Type *) SCS_BASE_NS ) /*!< System control Register not in SCB(non-secure address space) */ + #define SCB_NS ((SCB_Type *) SCB_BASE_NS ) /*!< SCB configuration struct (non-secure address space) */ + #define SysTick_NS ((SysTick_Type *) SysTick_BASE_NS ) /*!< SysTick configuration struct (non-secure address space) */ + #define NVIC_NS ((NVIC_Type *) NVIC_BASE_NS ) /*!< NVIC configuration struct (non-secure address space) */ + #define CoreDebug_NS ((CoreDebug_Type *) CoreDebug_BASE_NS) /*!< \deprecated Core Debug configuration struct (non-secure address space) */ + #define DCB_NS ((DCB_Type *) DCB_BASE_NS ) /*!< DCB configuration struct (non-secure address space) */ + #define DIB_NS ((DIB_Type *) DIB_BASE_NS ) /*!< DIB configuration struct (non-secure address space) */ + + #if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + #define MPU_BASE_NS (SCS_BASE_NS + 0x0D90UL) /*!< Memory Protection Unit (non-secure address space) */ + #define MPU_NS ((MPU_Type *) MPU_BASE_NS ) /*!< Memory Protection Unit (non-secure address space) */ + #endif + + #define FPU_BASE_NS (SCS_BASE_NS + 0x0F30UL) /*!< Floating Point Unit (non-secure address space) */ + #define FPU_NS ((FPU_Type *) FPU_BASE_NS ) /*!< Floating Point Unit (non-secure address space) */ + +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ +/*@} */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_register_aliases Backwards Compatibility Aliases + \brief Register alias definitions for backwards compatibility. + @{ + */ +#define ID_ADR (ID_AFR) /*!< SCB Auxiliary Feature Register */ +/*@} */ + + +/******************************************************************************* + * Hardware Abstraction Layer + Core Function Interface contains: + - Core NVIC Functions + - Core SysTick Functions + - Core Debug Functions + - Core Register Access Functions + ******************************************************************************/ +/** + \defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference +*/ + + + +/* ########################## NVIC functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_NVICFunctions NVIC Functions + \brief Functions that manage interrupts and exceptions via the NVIC. + @{ + */ + +#ifdef CMSIS_NVIC_VIRTUAL + #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE + #define CMSIS_NVIC_VIRTUAL_HEADER_FILE "cmsis_nvic_virtual.h" + #endif + #include CMSIS_NVIC_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetPriorityGrouping __NVIC_SetPriorityGrouping + #define NVIC_GetPriorityGrouping __NVIC_GetPriorityGrouping + #define NVIC_EnableIRQ __NVIC_EnableIRQ + #define NVIC_GetEnableIRQ __NVIC_GetEnableIRQ + #define NVIC_DisableIRQ __NVIC_DisableIRQ + #define NVIC_GetPendingIRQ __NVIC_GetPendingIRQ + #define NVIC_SetPendingIRQ __NVIC_SetPendingIRQ + #define NVIC_ClearPendingIRQ __NVIC_ClearPendingIRQ + #define NVIC_GetActive __NVIC_GetActive + #define NVIC_SetPriority __NVIC_SetPriority + #define NVIC_GetPriority __NVIC_GetPriority + #define NVIC_SystemReset __NVIC_SystemReset +#endif /* CMSIS_NVIC_VIRTUAL */ + +#ifdef CMSIS_VECTAB_VIRTUAL + #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE + #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE "cmsis_vectab_virtual.h" + #endif + #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetVector __NVIC_SetVector + #define NVIC_GetVector __NVIC_GetVector +#endif /* (CMSIS_VECTAB_VIRTUAL) */ + +#define NVIC_USER_IRQ_OFFSET 16 + + +/* Special LR values for Secure/Non-Secure call handling and exception handling */ + +/* Function Return Payload (from ARMv8-M Architecture Reference Manual) LR value on entry from Secure BLXNS */ +#define FNC_RETURN (0xFEFFFFFFUL) /* bit [0] ignored when processing a branch */ + +/* The following EXC_RETURN mask values are used to evaluate the LR on exception entry */ +#define EXC_RETURN_PREFIX (0xFF000000UL) /* bits [31:24] set to indicate an EXC_RETURN value */ +#define EXC_RETURN_S (0x00000040UL) /* bit [6] stack used to push registers: 0=Non-secure 1=Secure */ +#define EXC_RETURN_DCRS (0x00000020UL) /* bit [5] stacking rules for called registers: 0=skipped 1=saved */ +#define EXC_RETURN_FTYPE (0x00000010UL) /* bit [4] allocate stack for floating-point context: 0=done 1=skipped */ +#define EXC_RETURN_MODE (0x00000008UL) /* bit [3] processor mode for return: 0=Handler mode 1=Thread mode */ +#define EXC_RETURN_SPSEL (0x00000004UL) /* bit [2] stack pointer used to restore context: 0=MSP 1=PSP */ +#define EXC_RETURN_ES (0x00000001UL) /* bit [0] security state exception was taken to: 0=Non-secure 1=Secure */ + +/* Integrity Signature (from ARMv8-M Architecture Reference Manual) for exception context stacking */ +#if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) /* Value for processors with floating-point extension: */ +#define EXC_INTEGRITY_SIGNATURE (0xFEFA125AUL) /* bit [0] SFTC must match LR bit[4] EXC_RETURN_FTYPE */ +#else +#define EXC_INTEGRITY_SIGNATURE (0xFEFA125BUL) /* Value for processors without floating-point extension */ +#endif + + +/** + \brief Set Priority Grouping + \details Sets the priority grouping field using the required unlock sequence. + The parameter PriorityGroup is assigned to the field SCB->AIRCR [10:8] PRIGROUP field. + Only values from 0..7 are used. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Priority grouping field. + */ +__STATIC_INLINE void __NVIC_SetPriorityGrouping(uint32_t PriorityGroup) +{ + uint32_t reg_value; + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + + reg_value = SCB->AIRCR; /* read old register configuration */ + reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change */ + reg_value = (reg_value | + ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (PriorityGroupTmp << SCB_AIRCR_PRIGROUP_Pos) ); /* Insert write key and priority group */ + SCB->AIRCR = reg_value; +} + + +/** + \brief Get Priority Grouping + \details Reads the priority grouping field from the NVIC Interrupt Controller. + \return Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field). + */ +__STATIC_INLINE uint32_t __NVIC_GetPriorityGrouping(void) +{ + return ((uint32_t)((SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos)); +} + + +/** + \brief Enable Interrupt + \details Enables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + __COMPILER_BARRIER(); + NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __COMPILER_BARRIER(); + } +} + + +/** + \brief Get Interrupt Enable status + \details Returns a device specific interrupt enable status from the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt is not enabled. + \return 1 Interrupt is enabled. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Disable Interrupt + \details Disables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_DisableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __DSB(); + __ISB(); + } +} + + +/** + \brief Get Pending Interrupt + \details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not pending. + \return 1 Interrupt status is pending. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Pending Interrupt + \details Sets the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Clear Pending Interrupt + \details Clears the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Active Interrupt + \details Reads the active register in the NVIC and returns the active bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not active. + \return 1 Interrupt status is active. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetActive(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief Get Interrupt Target State + \details Reads the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 if interrupt is assigned to Secure + \return 1 if interrupt is assigned to Non Secure + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t NVIC_GetTargetState(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Interrupt Target State + \details Sets the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 if interrupt is assigned to Secure + 1 if interrupt is assigned to Non Secure + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t NVIC_SetTargetState(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] |= ((uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL))); + return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Clear Interrupt Target State + \details Clears the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 if interrupt is assigned to Secure + 1 if interrupt is assigned to Non Secure + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t NVIC_ClearTargetState(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] &= ~((uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL))); + return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + + +/** + \brief Set Interrupt Priority + \details Sets the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \param [in] priority Priority to set. + \note The priority cannot be set for every processor exception. + */ +__STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->IPR[((uint32_t)IRQn)] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } + else + { + SCB->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } +} + + +/** + \brief Get Interrupt Priority + \details Reads the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Interrupt Priority. + Value is aligned automatically to the implemented priority bits of the microcontroller. + */ +__STATIC_INLINE uint32_t __NVIC_GetPriority(IRQn_Type IRQn) +{ + + if ((int32_t)(IRQn) >= 0) + { + return(((uint32_t)NVIC->IPR[((uint32_t)IRQn)] >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return(((uint32_t)SCB->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] >> (8U - __NVIC_PRIO_BITS))); + } +} + + +/** + \brief Encode Priority + \details Encodes the priority for an interrupt with the given priority group, + preemptive priority value, and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Used priority group. + \param [in] PreemptPriority Preemptive priority value (starting from 0). + \param [in] SubPriority Subpriority value (starting from 0). + \return Encoded priority. Value can be used in the function \ref NVIC_SetPriority(). + */ +__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + return ( + ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) | + ((SubPriority & (uint32_t)((1UL << (SubPriorityBits )) - 1UL))) + ); +} + + +/** + \brief Decode Priority + \details Decodes an interrupt priority value with a given priority group to + preemptive priority value and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set. + \param [in] Priority Priority value, which can be retrieved with the function \ref NVIC_GetPriority(). + \param [in] PriorityGroup Used priority group. + \param [out] pPreemptPriority Preemptive priority value (starting from 0). + \param [out] pSubPriority Subpriority value (starting from 0). + */ +__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* const pPreemptPriority, uint32_t* const pSubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + *pPreemptPriority = (Priority >> SubPriorityBits) & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL); + *pSubPriority = (Priority ) & (uint32_t)((1UL << (SubPriorityBits )) - 1UL); +} + + +/** + \brief Set Interrupt Vector + \details Sets an interrupt vector in SRAM based interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + VTOR must been relocated to SRAM before. + \param [in] IRQn Interrupt number + \param [in] vector Address of interrupt handler function + */ +__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector) +{ + uint32_t *vectors = (uint32_t *)SCB->VTOR; + vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET] = vector; + __DSB(); +} + + +/** + \brief Get Interrupt Vector + \details Reads an interrupt vector from interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Address of interrupt handler function + */ +__STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn) +{ + uint32_t *vectors = (uint32_t *)SCB->VTOR; + return vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET]; +} + + +/** + \brief System Reset + \details Initiates a system reset request to reset the MCU. + */ +__NO_RETURN __STATIC_INLINE void __NVIC_SystemReset(void) +{ + __DSB(); /* Ensure all outstanding memory accesses included + buffered write are completed before reset */ + SCB->AIRCR = (uint32_t)((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) | + SCB_AIRCR_SYSRESETREQ_Msk ); /* Keep priority group unchanged */ + __DSB(); /* Ensure completion of memory access */ + + for(;;) /* wait until reset */ + { + __NOP(); + } +} + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief Set Priority Grouping (non-secure) + \details Sets the non-secure priority grouping field when in secure state using the required unlock sequence. + The parameter PriorityGroup is assigned to the field SCB->AIRCR [10:8] PRIGROUP field. + Only values from 0..7 are used. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Priority grouping field. + */ +__STATIC_INLINE void TZ_NVIC_SetPriorityGrouping_NS(uint32_t PriorityGroup) +{ + uint32_t reg_value; + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + + reg_value = SCB_NS->AIRCR; /* read old register configuration */ + reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change */ + reg_value = (reg_value | + ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (PriorityGroupTmp << SCB_AIRCR_PRIGROUP_Pos) ); /* Insert write key and priority group */ + SCB_NS->AIRCR = reg_value; +} + + +/** + \brief Get Priority Grouping (non-secure) + \details Reads the priority grouping field from the non-secure NVIC when in secure state. + \return Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field). + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetPriorityGrouping_NS(void) +{ + return ((uint32_t)((SCB_NS->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos)); +} + + +/** + \brief Enable Interrupt (non-secure) + \details Enables a device specific interrupt in the non-secure NVIC interrupt controller when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_EnableIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Interrupt Enable status (non-secure) + \details Returns a device specific interrupt enable status from the non-secure NVIC interrupt controller when in secure state. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt is not enabled. + \return 1 Interrupt is enabled. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetEnableIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Disable Interrupt (non-secure) + \details Disables a device specific interrupt in the non-secure NVIC interrupt controller when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_DisableIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Pending Interrupt (non-secure) + \details Reads the NVIC pending register in the non-secure NVIC when in secure state and returns the pending bit for the specified device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not pending. + \return 1 Interrupt status is pending. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetPendingIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Pending Interrupt (non-secure) + \details Sets the pending bit of a device specific interrupt in the non-secure NVIC pending register when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_SetPendingIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Clear Pending Interrupt (non-secure) + \details Clears the pending bit of a device specific interrupt in the non-secure NVIC pending register when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_ClearPendingIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Active Interrupt (non-secure) + \details Reads the active register in non-secure NVIC when in secure state and returns the active bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not active. + \return 1 Interrupt status is active. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetActive_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Interrupt Priority (non-secure) + \details Sets the priority of a non-secure device specific interrupt or a non-secure processor exception when in secure state. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \param [in] priority Priority to set. + \note The priority cannot be set for every non-secure processor exception. + */ +__STATIC_INLINE void TZ_NVIC_SetPriority_NS(IRQn_Type IRQn, uint32_t priority) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->IPR[((uint32_t)IRQn)] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } + else + { + SCB_NS->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } +} + + +/** + \brief Get Interrupt Priority (non-secure) + \details Reads the priority of a non-secure device specific interrupt or a non-secure processor exception when in secure state. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Interrupt Priority. Value is aligned automatically to the implemented priority bits of the microcontroller. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetPriority_NS(IRQn_Type IRQn) +{ + + if ((int32_t)(IRQn) >= 0) + { + return(((uint32_t)NVIC_NS->IPR[((uint32_t)IRQn)] >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return(((uint32_t)SCB_NS->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] >> (8U - __NVIC_PRIO_BITS))); + } +} +#endif /* defined (__ARM_FEATURE_CMSE) &&(__ARM_FEATURE_CMSE == 3U) */ + +/*@} end of CMSIS_Core_NVICFunctions */ + +/* ########################## MPU functions #################################### */ + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + +#include "mpu_armv8.h" + +#endif + +/* ########################## FPU functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_FpuFunctions FPU Functions + \brief Function that provides FPU type. + @{ + */ + +/** + \brief get FPU type + \details returns the FPU type + \returns + - \b 0: No FPU + - \b 1: Single precision FPU + - \b 2: Double + Single precision FPU + */ +__STATIC_INLINE uint32_t SCB_GetFPUType(void) +{ + uint32_t mvfr0; + + mvfr0 = FPU->MVFR0; + if ((mvfr0 & (FPU_MVFR0_Single_precision_Msk | FPU_MVFR0_Double_precision_Msk)) == 0x220U) + { + return 2U; /* Double + Single precision FPU */ + } + else if ((mvfr0 & (FPU_MVFR0_Single_precision_Msk | FPU_MVFR0_Double_precision_Msk)) == 0x020U) + { + return 1U; /* Single precision FPU */ + } + else + { + return 0U; /* No FPU */ + } +} + + +/*@} end of CMSIS_Core_FpuFunctions */ + + + +/* ########################## SAU functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SAUFunctions SAU Functions + \brief Functions that configure the SAU. + @{ + */ + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) + +/** + \brief Enable SAU + \details Enables the Security Attribution Unit (SAU). + */ +__STATIC_INLINE void TZ_SAU_Enable(void) +{ + SAU->CTRL |= (SAU_CTRL_ENABLE_Msk); +} + + + +/** + \brief Disable SAU + \details Disables the Security Attribution Unit (SAU). + */ +__STATIC_INLINE void TZ_SAU_Disable(void) +{ + SAU->CTRL &= ~(SAU_CTRL_ENABLE_Msk); +} + +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + +/*@} end of CMSIS_Core_SAUFunctions */ + + + + +/* ################################## Debug Control function ############################################ */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_DCBFunctions Debug Control Functions + \brief Functions that access the Debug Control Block. + @{ + */ + + +/** + \brief Set Debug Authentication Control Register + \details writes to Debug Authentication Control register. + \param [in] value value to be writen. + */ +__STATIC_INLINE void DCB_SetAuthCtrl(uint32_t value) +{ + __DSB(); + __ISB(); + DCB->DAUTHCTRL = value; + __DSB(); + __ISB(); +} + + +/** + \brief Get Debug Authentication Control Register + \details Reads Debug Authentication Control register. + \return Debug Authentication Control Register. + */ +__STATIC_INLINE uint32_t DCB_GetAuthCtrl(void) +{ + return (DCB->DAUTHCTRL); +} + + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief Set Debug Authentication Control Register (non-secure) + \details writes to non-secure Debug Authentication Control register when in secure state. + \param [in] value value to be writen + */ +__STATIC_INLINE void TZ_DCB_SetAuthCtrl_NS(uint32_t value) +{ + __DSB(); + __ISB(); + DCB_NS->DAUTHCTRL = value; + __DSB(); + __ISB(); +} + + +/** + \brief Get Debug Authentication Control Register (non-secure) + \details Reads non-secure Debug Authentication Control register when in secure state. + \return Debug Authentication Control Register. + */ +__STATIC_INLINE uint32_t TZ_DCB_GetAuthCtrl_NS(void) +{ + return (DCB_NS->DAUTHCTRL); +} +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + +/*@} end of CMSIS_Core_DCBFunctions */ + + + + +/* ################################## Debug Identification function ############################################ */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_DIBFunctions Debug Identification Functions + \brief Functions that access the Debug Identification Block. + @{ + */ + + +/** + \brief Get Debug Authentication Status Register + \details Reads Debug Authentication Status register. + \return Debug Authentication Status Register. + */ +__STATIC_INLINE uint32_t DIB_GetAuthStatus(void) +{ + return (DIB->DAUTHSTATUS); +} + + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief Get Debug Authentication Status Register (non-secure) + \details Reads non-secure Debug Authentication Status register when in secure state. + \return Debug Authentication Status Register. + */ +__STATIC_INLINE uint32_t TZ_DIB_GetAuthStatus_NS(void) +{ + return (DIB_NS->DAUTHSTATUS); +} +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + +/*@} end of CMSIS_Core_DCBFunctions */ + + + + +/* ################################## SysTick function ############################################ */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SysTickFunctions SysTick Functions + \brief Functions that configure the System. + @{ + */ + +#if defined (__Vendor_SysTickConfig) && (__Vendor_SysTickConfig == 0U) + +/** + \brief System Tick Configuration + \details Initializes the System Timer and its interrupt, and starts the System Tick Timer. + Counter is in free running mode to generate periodic interrupts. + \param [in] ticks Number of ticks between two interrupts. + \return 0 Function succeeded. + \return 1 Function failed. + \note When the variable __Vendor_SysTickConfig is set to 1, then the + function SysTick_Config is not included. In this case, the file device.h + must contain a vendor-specific implementation of this function. + */ +__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks) +{ + if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) + { + return (1UL); /* Reload value impossible */ + } + + SysTick->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ + NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ + SysTick->VAL = 0UL; /* Load the SysTick Counter Value */ + SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0UL); /* Function successful */ +} + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief System Tick Configuration (non-secure) + \details Initializes the non-secure System Timer and its interrupt when in secure state, and starts the System Tick Timer. + Counter is in free running mode to generate periodic interrupts. + \param [in] ticks Number of ticks between two interrupts. + \return 0 Function succeeded. + \return 1 Function failed. + \note When the variable __Vendor_SysTickConfig is set to 1, then the + function TZ_SysTick_Config_NS is not included. In this case, the file device.h + must contain a vendor-specific implementation of this function. + + */ +__STATIC_INLINE uint32_t TZ_SysTick_Config_NS(uint32_t ticks) +{ + if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) + { + return (1UL); /* Reload value impossible */ + } + + SysTick_NS->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ + TZ_NVIC_SetPriority_NS (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ + SysTick_NS->VAL = 0UL; /* Load the SysTick Counter Value */ + SysTick_NS->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0UL); /* Function successful */ +} +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + +#endif + +/*@} end of CMSIS_Core_SysTickFunctions */ + + + +/* ##################################### Debug In/Output function ########################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_core_DebugFunctions ITM Functions + \brief Functions that access the ITM debug interface. + @{ + */ + +extern volatile int32_t ITM_RxBuffer; /*!< External variable to receive characters. */ +#define ITM_RXBUFFER_EMPTY ((int32_t)0x5AA55AA5U) /*!< Value identifying \ref ITM_RxBuffer is ready for next character. */ + + +/** + \brief ITM Send Character + \details Transmits a character via the ITM channel 0, and + \li Just returns when no debugger is connected that has booked the output. + \li Is blocking when a debugger is connected, but the previous character sent has not been transmitted. + \param [in] ch Character to transmit. + \returns Character to transmit. + */ +__STATIC_INLINE uint32_t ITM_SendChar (uint32_t ch) +{ + if (((ITM->TCR & ITM_TCR_ITMENA_Msk) != 0UL) && /* ITM enabled */ + ((ITM->TER & 1UL ) != 0UL) ) /* ITM Port #0 enabled */ + { + while (ITM->PORT[0U].u32 == 0UL) + { + __NOP(); + } + ITM->PORT[0U].u8 = (uint8_t)ch; + } + return (ch); +} + + +/** + \brief ITM Receive Character + \details Inputs a character via the external variable \ref ITM_RxBuffer. + \return Received character. + \return -1 No character pending. + */ +__STATIC_INLINE int32_t ITM_ReceiveChar (void) +{ + int32_t ch = -1; /* no character available */ + + if (ITM_RxBuffer != ITM_RXBUFFER_EMPTY) + { + ch = ITM_RxBuffer; + ITM_RxBuffer = ITM_RXBUFFER_EMPTY; /* ready for next character */ + } + + return (ch); +} + + +/** + \brief ITM Check Character + \details Checks whether a character is pending for reading in the variable \ref ITM_RxBuffer. + \return 0 No character available. + \return 1 Character available. + */ +__STATIC_INLINE int32_t ITM_CheckChar (void) +{ + + if (ITM_RxBuffer == ITM_RXBUFFER_EMPTY) + { + return (0); /* no character available */ + } + else + { + return (1); /* character available */ + } +} + +/*@} end of CMSIS_core_DebugFunctions */ + + + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_CM35P_H_DEPENDANT */ + +#endif /* __CMSIS_GENERIC */ diff --git a/bsp/renesas/ra8m1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm4.h b/bsp/renesas/ra8m1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm4.h new file mode 100644 index 000000000000..e21cd1492560 --- /dev/null +++ b/bsp/renesas/ra8m1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm4.h @@ -0,0 +1,2129 @@ +/**************************************************************************//** + * @file core_cm4.h + * @brief CMSIS Cortex-M4 Core Peripheral Access Layer Header File + * @version V5.1.2 + * @date 04. June 2021 + ******************************************************************************/ +/* + * Copyright (c) 2009-2020 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#elif defined (__clang__) + #pragma clang system_header /* treat file as system include file */ +#endif + +#ifndef __CORE_CM4_H_GENERIC +#define __CORE_CM4_H_GENERIC + +#include + +#ifdef __cplusplus + extern "C" { +#endif + +/** + \page CMSIS_MISRA_Exceptions MISRA-C:2004 Compliance Exceptions + CMSIS violates the following MISRA-C:2004 rules: + + \li Required Rule 8.5, object/function definition in header file.
+ Function definitions in header files are used to allow 'inlining'. + + \li Required Rule 18.4, declaration of union type or object of union type: '{...}'.
+ Unions are used for effective representation of core registers. + + \li Advisory Rule 19.7, Function-like macro defined.
+ Function-like macros are used to allow more efficient code. + */ + + +/******************************************************************************* + * CMSIS definitions + ******************************************************************************/ +/** + \ingroup Cortex_M4 + @{ + */ + +#include "cmsis_version.h" + +/* CMSIS CM4 definitions */ +#define __CM4_CMSIS_VERSION_MAIN (__CM_CMSIS_VERSION_MAIN) /*!< \deprecated [31:16] CMSIS HAL main version */ +#define __CM4_CMSIS_VERSION_SUB (__CM_CMSIS_VERSION_SUB) /*!< \deprecated [15:0] CMSIS HAL sub version */ +#define __CM4_CMSIS_VERSION ((__CM4_CMSIS_VERSION_MAIN << 16U) | \ + __CM4_CMSIS_VERSION_SUB ) /*!< \deprecated CMSIS HAL version number */ + +#define __CORTEX_M (4U) /*!< Cortex-M Core */ + +/** __FPU_USED indicates whether an FPU is used or not. + For this, __FPU_PRESENT has to be checked prior to making use of FPU specific registers and functions. +*/ +#if defined ( __CC_ARM ) + #if defined __TARGET_FPU_VFP + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) + #if defined __ARM_FP + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #warning "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined ( __GNUC__ ) + #if defined (__VFP_FP__) && !defined(__SOFTFP__) + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined ( __ICCARM__ ) + #if defined __ARMVFP__ + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined ( __TI_ARM__ ) + #if defined __TI_VFP_SUPPORT__ + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined ( __TASKING__ ) + #if defined __FPU_VFP__ + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined ( __CSMC__ ) + #if ( __CSMC__ & 0x400U) + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#endif + +#include "cmsis_compiler.h" /* CMSIS compiler specific defines */ + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_CM4_H_GENERIC */ + +#ifndef __CMSIS_GENERIC + +#ifndef __CORE_CM4_H_DEPENDANT +#define __CORE_CM4_H_DEPENDANT + +#ifdef __cplusplus + extern "C" { +#endif + +/* check device defines and use defaults */ +#if defined __CHECK_DEVICE_DEFINES + #ifndef __CM4_REV + #define __CM4_REV 0x0000U + #warning "__CM4_REV not defined in device header file; using default!" + #endif + + #ifndef __FPU_PRESENT + #define __FPU_PRESENT 0U + #warning "__FPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __MPU_PRESENT + #define __MPU_PRESENT 0U + #warning "__MPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __VTOR_PRESENT + #define __VTOR_PRESENT 1U + #warning "__VTOR_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __NVIC_PRIO_BITS + #define __NVIC_PRIO_BITS 3U + #warning "__NVIC_PRIO_BITS not defined in device header file; using default!" + #endif + + #ifndef __Vendor_SysTickConfig + #define __Vendor_SysTickConfig 0U + #warning "__Vendor_SysTickConfig not defined in device header file; using default!" + #endif +#endif + +/* IO definitions (access restrictions to peripheral registers) */ +/** + \defgroup CMSIS_glob_defs CMSIS Global Defines + + IO Type Qualifiers are used + \li to specify the access to peripheral variables. + \li for automatic generation of peripheral register debug information. +*/ +#ifdef __cplusplus + #define __I volatile /*!< Defines 'read only' permissions */ +#else + #define __I volatile const /*!< Defines 'read only' permissions */ +#endif +#define __O volatile /*!< Defines 'write only' permissions */ +#define __IO volatile /*!< Defines 'read / write' permissions */ + +/* following defines should be used for structure members */ +#define __IM volatile const /*! Defines 'read only' structure member permissions */ +#define __OM volatile /*! Defines 'write only' structure member permissions */ +#define __IOM volatile /*! Defines 'read / write' structure member permissions */ + +/*@} end of group Cortex_M4 */ + + + +/******************************************************************************* + * Register Abstraction + Core Register contain: + - Core Register + - Core NVIC Register + - Core SCB Register + - Core SysTick Register + - Core Debug Register + - Core MPU Register + - Core FPU Register + ******************************************************************************/ +/** + \defgroup CMSIS_core_register Defines and Type Definitions + \brief Type definitions and defines for Cortex-M processor based devices. +*/ + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CORE Status and Control Registers + \brief Core Register type definitions. + @{ + */ + +/** + \brief Union type to access the Application Program Status Register (APSR). + */ +typedef union +{ + struct + { + uint32_t _reserved0:16; /*!< bit: 0..15 Reserved */ + uint32_t GE:4; /*!< bit: 16..19 Greater than or Equal flags */ + uint32_t _reserved1:7; /*!< bit: 20..26 Reserved */ + uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} APSR_Type; + +/* APSR Register Definitions */ +#define APSR_N_Pos 31U /*!< APSR: N Position */ +#define APSR_N_Msk (1UL << APSR_N_Pos) /*!< APSR: N Mask */ + +#define APSR_Z_Pos 30U /*!< APSR: Z Position */ +#define APSR_Z_Msk (1UL << APSR_Z_Pos) /*!< APSR: Z Mask */ + +#define APSR_C_Pos 29U /*!< APSR: C Position */ +#define APSR_C_Msk (1UL << APSR_C_Pos) /*!< APSR: C Mask */ + +#define APSR_V_Pos 28U /*!< APSR: V Position */ +#define APSR_V_Msk (1UL << APSR_V_Pos) /*!< APSR: V Mask */ + +#define APSR_Q_Pos 27U /*!< APSR: Q Position */ +#define APSR_Q_Msk (1UL << APSR_Q_Pos) /*!< APSR: Q Mask */ + +#define APSR_GE_Pos 16U /*!< APSR: GE Position */ +#define APSR_GE_Msk (0xFUL << APSR_GE_Pos) /*!< APSR: GE Mask */ + + +/** + \brief Union type to access the Interrupt Program Status Register (IPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:23; /*!< bit: 9..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} IPSR_Type; + +/* IPSR Register Definitions */ +#define IPSR_ISR_Pos 0U /*!< IPSR: ISR Position */ +#define IPSR_ISR_Msk (0x1FFUL /*<< IPSR_ISR_Pos*/) /*!< IPSR: ISR Mask */ + + +/** + \brief Union type to access the Special-Purpose Program Status Registers (xPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:1; /*!< bit: 9 Reserved */ + uint32_t ICI_IT_1:6; /*!< bit: 10..15 ICI/IT part 1 */ + uint32_t GE:4; /*!< bit: 16..19 Greater than or Equal flags */ + uint32_t _reserved1:4; /*!< bit: 20..23 Reserved */ + uint32_t T:1; /*!< bit: 24 Thumb bit */ + uint32_t ICI_IT_2:2; /*!< bit: 25..26 ICI/IT part 2 */ + uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} xPSR_Type; + +/* xPSR Register Definitions */ +#define xPSR_N_Pos 31U /*!< xPSR: N Position */ +#define xPSR_N_Msk (1UL << xPSR_N_Pos) /*!< xPSR: N Mask */ + +#define xPSR_Z_Pos 30U /*!< xPSR: Z Position */ +#define xPSR_Z_Msk (1UL << xPSR_Z_Pos) /*!< xPSR: Z Mask */ + +#define xPSR_C_Pos 29U /*!< xPSR: C Position */ +#define xPSR_C_Msk (1UL << xPSR_C_Pos) /*!< xPSR: C Mask */ + +#define xPSR_V_Pos 28U /*!< xPSR: V Position */ +#define xPSR_V_Msk (1UL << xPSR_V_Pos) /*!< xPSR: V Mask */ + +#define xPSR_Q_Pos 27U /*!< xPSR: Q Position */ +#define xPSR_Q_Msk (1UL << xPSR_Q_Pos) /*!< xPSR: Q Mask */ + +#define xPSR_ICI_IT_2_Pos 25U /*!< xPSR: ICI/IT part 2 Position */ +#define xPSR_ICI_IT_2_Msk (3UL << xPSR_ICI_IT_2_Pos) /*!< xPSR: ICI/IT part 2 Mask */ + +#define xPSR_T_Pos 24U /*!< xPSR: T Position */ +#define xPSR_T_Msk (1UL << xPSR_T_Pos) /*!< xPSR: T Mask */ + +#define xPSR_GE_Pos 16U /*!< xPSR: GE Position */ +#define xPSR_GE_Msk (0xFUL << xPSR_GE_Pos) /*!< xPSR: GE Mask */ + +#define xPSR_ICI_IT_1_Pos 10U /*!< xPSR: ICI/IT part 1 Position */ +#define xPSR_ICI_IT_1_Msk (0x3FUL << xPSR_ICI_IT_1_Pos) /*!< xPSR: ICI/IT part 1 Mask */ + +#define xPSR_ISR_Pos 0U /*!< xPSR: ISR Position */ +#define xPSR_ISR_Msk (0x1FFUL /*<< xPSR_ISR_Pos*/) /*!< xPSR: ISR Mask */ + + +/** + \brief Union type to access the Control Registers (CONTROL). + */ +typedef union +{ + struct + { + uint32_t nPRIV:1; /*!< bit: 0 Execution privilege in Thread mode */ + uint32_t SPSEL:1; /*!< bit: 1 Stack to be used */ + uint32_t FPCA:1; /*!< bit: 2 FP extension active flag */ + uint32_t _reserved0:29; /*!< bit: 3..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} CONTROL_Type; + +/* CONTROL Register Definitions */ +#define CONTROL_FPCA_Pos 2U /*!< CONTROL: FPCA Position */ +#define CONTROL_FPCA_Msk (1UL << CONTROL_FPCA_Pos) /*!< CONTROL: FPCA Mask */ + +#define CONTROL_SPSEL_Pos 1U /*!< CONTROL: SPSEL Position */ +#define CONTROL_SPSEL_Msk (1UL << CONTROL_SPSEL_Pos) /*!< CONTROL: SPSEL Mask */ + +#define CONTROL_nPRIV_Pos 0U /*!< CONTROL: nPRIV Position */ +#define CONTROL_nPRIV_Msk (1UL /*<< CONTROL_nPRIV_Pos*/) /*!< CONTROL: nPRIV Mask */ + +/*@} end of group CMSIS_CORE */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_NVIC Nested Vectored Interrupt Controller (NVIC) + \brief Type definitions for the NVIC Registers + @{ + */ + +/** + \brief Structure type to access the Nested Vectored Interrupt Controller (NVIC). + */ +typedef struct +{ + __IOM uint32_t ISER[8U]; /*!< Offset: 0x000 (R/W) Interrupt Set Enable Register */ + uint32_t RESERVED0[24U]; + __IOM uint32_t ICER[8U]; /*!< Offset: 0x080 (R/W) Interrupt Clear Enable Register */ + uint32_t RESERVED1[24U]; + __IOM uint32_t ISPR[8U]; /*!< Offset: 0x100 (R/W) Interrupt Set Pending Register */ + uint32_t RESERVED2[24U]; + __IOM uint32_t ICPR[8U]; /*!< Offset: 0x180 (R/W) Interrupt Clear Pending Register */ + uint32_t RESERVED3[24U]; + __IOM uint32_t IABR[8U]; /*!< Offset: 0x200 (R/W) Interrupt Active bit Register */ + uint32_t RESERVED4[56U]; + __IOM uint8_t IP[240U]; /*!< Offset: 0x300 (R/W) Interrupt Priority Register (8Bit wide) */ + uint32_t RESERVED5[644U]; + __OM uint32_t STIR; /*!< Offset: 0xE00 ( /W) Software Trigger Interrupt Register */ +} NVIC_Type; + +/* Software Triggered Interrupt Register Definitions */ +#define NVIC_STIR_INTID_Pos 0U /*!< STIR: INTLINESNUM Position */ +#define NVIC_STIR_INTID_Msk (0x1FFUL /*<< NVIC_STIR_INTID_Pos*/) /*!< STIR: INTLINESNUM Mask */ + +/*@} end of group CMSIS_NVIC */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SCB System Control Block (SCB) + \brief Type definitions for the System Control Block Registers + @{ + */ + +/** + \brief Structure type to access the System Control Block (SCB). + */ +typedef struct +{ + __IM uint32_t CPUID; /*!< Offset: 0x000 (R/ ) CPUID Base Register */ + __IOM uint32_t ICSR; /*!< Offset: 0x004 (R/W) Interrupt Control and State Register */ + __IOM uint32_t VTOR; /*!< Offset: 0x008 (R/W) Vector Table Offset Register */ + __IOM uint32_t AIRCR; /*!< Offset: 0x00C (R/W) Application Interrupt and Reset Control Register */ + __IOM uint32_t SCR; /*!< Offset: 0x010 (R/W) System Control Register */ + __IOM uint32_t CCR; /*!< Offset: 0x014 (R/W) Configuration Control Register */ + __IOM uint8_t SHP[12U]; /*!< Offset: 0x018 (R/W) System Handlers Priority Registers (4-7, 8-11, 12-15) */ + __IOM uint32_t SHCSR; /*!< Offset: 0x024 (R/W) System Handler Control and State Register */ + __IOM uint32_t CFSR; /*!< Offset: 0x028 (R/W) Configurable Fault Status Register */ + __IOM uint32_t HFSR; /*!< Offset: 0x02C (R/W) HardFault Status Register */ + __IOM uint32_t DFSR; /*!< Offset: 0x030 (R/W) Debug Fault Status Register */ + __IOM uint32_t MMFAR; /*!< Offset: 0x034 (R/W) MemManage Fault Address Register */ + __IOM uint32_t BFAR; /*!< Offset: 0x038 (R/W) BusFault Address Register */ + __IOM uint32_t AFSR; /*!< Offset: 0x03C (R/W) Auxiliary Fault Status Register */ + __IM uint32_t PFR[2U]; /*!< Offset: 0x040 (R/ ) Processor Feature Register */ + __IM uint32_t DFR; /*!< Offset: 0x048 (R/ ) Debug Feature Register */ + __IM uint32_t ADR; /*!< Offset: 0x04C (R/ ) Auxiliary Feature Register */ + __IM uint32_t MMFR[4U]; /*!< Offset: 0x050 (R/ ) Memory Model Feature Register */ + __IM uint32_t ISAR[5U]; /*!< Offset: 0x060 (R/ ) Instruction Set Attributes Register */ + uint32_t RESERVED0[5U]; + __IOM uint32_t CPACR; /*!< Offset: 0x088 (R/W) Coprocessor Access Control Register */ +} SCB_Type; + +/* SCB CPUID Register Definitions */ +#define SCB_CPUID_IMPLEMENTER_Pos 24U /*!< SCB CPUID: IMPLEMENTER Position */ +#define SCB_CPUID_IMPLEMENTER_Msk (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos) /*!< SCB CPUID: IMPLEMENTER Mask */ + +#define SCB_CPUID_VARIANT_Pos 20U /*!< SCB CPUID: VARIANT Position */ +#define SCB_CPUID_VARIANT_Msk (0xFUL << SCB_CPUID_VARIANT_Pos) /*!< SCB CPUID: VARIANT Mask */ + +#define SCB_CPUID_ARCHITECTURE_Pos 16U /*!< SCB CPUID: ARCHITECTURE Position */ +#define SCB_CPUID_ARCHITECTURE_Msk (0xFUL << SCB_CPUID_ARCHITECTURE_Pos) /*!< SCB CPUID: ARCHITECTURE Mask */ + +#define SCB_CPUID_PARTNO_Pos 4U /*!< SCB CPUID: PARTNO Position */ +#define SCB_CPUID_PARTNO_Msk (0xFFFUL << SCB_CPUID_PARTNO_Pos) /*!< SCB CPUID: PARTNO Mask */ + +#define SCB_CPUID_REVISION_Pos 0U /*!< SCB CPUID: REVISION Position */ +#define SCB_CPUID_REVISION_Msk (0xFUL /*<< SCB_CPUID_REVISION_Pos*/) /*!< SCB CPUID: REVISION Mask */ + +/* SCB Interrupt Control State Register Definitions */ +#define SCB_ICSR_NMIPENDSET_Pos 31U /*!< SCB ICSR: NMIPENDSET Position */ +#define SCB_ICSR_NMIPENDSET_Msk (1UL << SCB_ICSR_NMIPENDSET_Pos) /*!< SCB ICSR: NMIPENDSET Mask */ + +#define SCB_ICSR_PENDSVSET_Pos 28U /*!< SCB ICSR: PENDSVSET Position */ +#define SCB_ICSR_PENDSVSET_Msk (1UL << SCB_ICSR_PENDSVSET_Pos) /*!< SCB ICSR: PENDSVSET Mask */ + +#define SCB_ICSR_PENDSVCLR_Pos 27U /*!< SCB ICSR: PENDSVCLR Position */ +#define SCB_ICSR_PENDSVCLR_Msk (1UL << SCB_ICSR_PENDSVCLR_Pos) /*!< SCB ICSR: PENDSVCLR Mask */ + +#define SCB_ICSR_PENDSTSET_Pos 26U /*!< SCB ICSR: PENDSTSET Position */ +#define SCB_ICSR_PENDSTSET_Msk (1UL << SCB_ICSR_PENDSTSET_Pos) /*!< SCB ICSR: PENDSTSET Mask */ + +#define SCB_ICSR_PENDSTCLR_Pos 25U /*!< SCB ICSR: PENDSTCLR Position */ +#define SCB_ICSR_PENDSTCLR_Msk (1UL << SCB_ICSR_PENDSTCLR_Pos) /*!< SCB ICSR: PENDSTCLR Mask */ + +#define SCB_ICSR_ISRPREEMPT_Pos 23U /*!< SCB ICSR: ISRPREEMPT Position */ +#define SCB_ICSR_ISRPREEMPT_Msk (1UL << SCB_ICSR_ISRPREEMPT_Pos) /*!< SCB ICSR: ISRPREEMPT Mask */ + +#define SCB_ICSR_ISRPENDING_Pos 22U /*!< SCB ICSR: ISRPENDING Position */ +#define SCB_ICSR_ISRPENDING_Msk (1UL << SCB_ICSR_ISRPENDING_Pos) /*!< SCB ICSR: ISRPENDING Mask */ + +#define SCB_ICSR_VECTPENDING_Pos 12U /*!< SCB ICSR: VECTPENDING Position */ +#define SCB_ICSR_VECTPENDING_Msk (0x1FFUL << SCB_ICSR_VECTPENDING_Pos) /*!< SCB ICSR: VECTPENDING Mask */ + +#define SCB_ICSR_RETTOBASE_Pos 11U /*!< SCB ICSR: RETTOBASE Position */ +#define SCB_ICSR_RETTOBASE_Msk (1UL << SCB_ICSR_RETTOBASE_Pos) /*!< SCB ICSR: RETTOBASE Mask */ + +#define SCB_ICSR_VECTACTIVE_Pos 0U /*!< SCB ICSR: VECTACTIVE Position */ +#define SCB_ICSR_VECTACTIVE_Msk (0x1FFUL /*<< SCB_ICSR_VECTACTIVE_Pos*/) /*!< SCB ICSR: VECTACTIVE Mask */ + +/* SCB Vector Table Offset Register Definitions */ +#define SCB_VTOR_TBLOFF_Pos 7U /*!< SCB VTOR: TBLOFF Position */ +#define SCB_VTOR_TBLOFF_Msk (0x1FFFFFFUL << SCB_VTOR_TBLOFF_Pos) /*!< SCB VTOR: TBLOFF Mask */ + +/* SCB Application Interrupt and Reset Control Register Definitions */ +#define SCB_AIRCR_VECTKEY_Pos 16U /*!< SCB AIRCR: VECTKEY Position */ +#define SCB_AIRCR_VECTKEY_Msk (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos) /*!< SCB AIRCR: VECTKEY Mask */ + +#define SCB_AIRCR_VECTKEYSTAT_Pos 16U /*!< SCB AIRCR: VECTKEYSTAT Position */ +#define SCB_AIRCR_VECTKEYSTAT_Msk (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos) /*!< SCB AIRCR: VECTKEYSTAT Mask */ + +#define SCB_AIRCR_ENDIANESS_Pos 15U /*!< SCB AIRCR: ENDIANESS Position */ +#define SCB_AIRCR_ENDIANESS_Msk (1UL << SCB_AIRCR_ENDIANESS_Pos) /*!< SCB AIRCR: ENDIANESS Mask */ + +#define SCB_AIRCR_PRIGROUP_Pos 8U /*!< SCB AIRCR: PRIGROUP Position */ +#define SCB_AIRCR_PRIGROUP_Msk (7UL << SCB_AIRCR_PRIGROUP_Pos) /*!< SCB AIRCR: PRIGROUP Mask */ + +#define SCB_AIRCR_SYSRESETREQ_Pos 2U /*!< SCB AIRCR: SYSRESETREQ Position */ +#define SCB_AIRCR_SYSRESETREQ_Msk (1UL << SCB_AIRCR_SYSRESETREQ_Pos) /*!< SCB AIRCR: SYSRESETREQ Mask */ + +#define SCB_AIRCR_VECTCLRACTIVE_Pos 1U /*!< SCB AIRCR: VECTCLRACTIVE Position */ +#define SCB_AIRCR_VECTCLRACTIVE_Msk (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos) /*!< SCB AIRCR: VECTCLRACTIVE Mask */ + +#define SCB_AIRCR_VECTRESET_Pos 0U /*!< SCB AIRCR: VECTRESET Position */ +#define SCB_AIRCR_VECTRESET_Msk (1UL /*<< SCB_AIRCR_VECTRESET_Pos*/) /*!< SCB AIRCR: VECTRESET Mask */ + +/* SCB System Control Register Definitions */ +#define SCB_SCR_SEVONPEND_Pos 4U /*!< SCB SCR: SEVONPEND Position */ +#define SCB_SCR_SEVONPEND_Msk (1UL << SCB_SCR_SEVONPEND_Pos) /*!< SCB SCR: SEVONPEND Mask */ + +#define SCB_SCR_SLEEPDEEP_Pos 2U /*!< SCB SCR: SLEEPDEEP Position */ +#define SCB_SCR_SLEEPDEEP_Msk (1UL << SCB_SCR_SLEEPDEEP_Pos) /*!< SCB SCR: SLEEPDEEP Mask */ + +#define SCB_SCR_SLEEPONEXIT_Pos 1U /*!< SCB SCR: SLEEPONEXIT Position */ +#define SCB_SCR_SLEEPONEXIT_Msk (1UL << SCB_SCR_SLEEPONEXIT_Pos) /*!< SCB SCR: SLEEPONEXIT Mask */ + +/* SCB Configuration Control Register Definitions */ +#define SCB_CCR_STKALIGN_Pos 9U /*!< SCB CCR: STKALIGN Position */ +#define SCB_CCR_STKALIGN_Msk (1UL << SCB_CCR_STKALIGN_Pos) /*!< SCB CCR: STKALIGN Mask */ + +#define SCB_CCR_BFHFNMIGN_Pos 8U /*!< SCB CCR: BFHFNMIGN Position */ +#define SCB_CCR_BFHFNMIGN_Msk (1UL << SCB_CCR_BFHFNMIGN_Pos) /*!< SCB CCR: BFHFNMIGN Mask */ + +#define SCB_CCR_DIV_0_TRP_Pos 4U /*!< SCB CCR: DIV_0_TRP Position */ +#define SCB_CCR_DIV_0_TRP_Msk (1UL << SCB_CCR_DIV_0_TRP_Pos) /*!< SCB CCR: DIV_0_TRP Mask */ + +#define SCB_CCR_UNALIGN_TRP_Pos 3U /*!< SCB CCR: UNALIGN_TRP Position */ +#define SCB_CCR_UNALIGN_TRP_Msk (1UL << SCB_CCR_UNALIGN_TRP_Pos) /*!< SCB CCR: UNALIGN_TRP Mask */ + +#define SCB_CCR_USERSETMPEND_Pos 1U /*!< SCB CCR: USERSETMPEND Position */ +#define SCB_CCR_USERSETMPEND_Msk (1UL << SCB_CCR_USERSETMPEND_Pos) /*!< SCB CCR: USERSETMPEND Mask */ + +#define SCB_CCR_NONBASETHRDENA_Pos 0U /*!< SCB CCR: NONBASETHRDENA Position */ +#define SCB_CCR_NONBASETHRDENA_Msk (1UL /*<< SCB_CCR_NONBASETHRDENA_Pos*/) /*!< SCB CCR: NONBASETHRDENA Mask */ + +/* SCB System Handler Control and State Register Definitions */ +#define SCB_SHCSR_USGFAULTENA_Pos 18U /*!< SCB SHCSR: USGFAULTENA Position */ +#define SCB_SHCSR_USGFAULTENA_Msk (1UL << SCB_SHCSR_USGFAULTENA_Pos) /*!< SCB SHCSR: USGFAULTENA Mask */ + +#define SCB_SHCSR_BUSFAULTENA_Pos 17U /*!< SCB SHCSR: BUSFAULTENA Position */ +#define SCB_SHCSR_BUSFAULTENA_Msk (1UL << SCB_SHCSR_BUSFAULTENA_Pos) /*!< SCB SHCSR: BUSFAULTENA Mask */ + +#define SCB_SHCSR_MEMFAULTENA_Pos 16U /*!< SCB SHCSR: MEMFAULTENA Position */ +#define SCB_SHCSR_MEMFAULTENA_Msk (1UL << SCB_SHCSR_MEMFAULTENA_Pos) /*!< SCB SHCSR: MEMFAULTENA Mask */ + +#define SCB_SHCSR_SVCALLPENDED_Pos 15U /*!< SCB SHCSR: SVCALLPENDED Position */ +#define SCB_SHCSR_SVCALLPENDED_Msk (1UL << SCB_SHCSR_SVCALLPENDED_Pos) /*!< SCB SHCSR: SVCALLPENDED Mask */ + +#define SCB_SHCSR_BUSFAULTPENDED_Pos 14U /*!< SCB SHCSR: BUSFAULTPENDED Position */ +#define SCB_SHCSR_BUSFAULTPENDED_Msk (1UL << SCB_SHCSR_BUSFAULTPENDED_Pos) /*!< SCB SHCSR: BUSFAULTPENDED Mask */ + +#define SCB_SHCSR_MEMFAULTPENDED_Pos 13U /*!< SCB SHCSR: MEMFAULTPENDED Position */ +#define SCB_SHCSR_MEMFAULTPENDED_Msk (1UL << SCB_SHCSR_MEMFAULTPENDED_Pos) /*!< SCB SHCSR: MEMFAULTPENDED Mask */ + +#define SCB_SHCSR_USGFAULTPENDED_Pos 12U /*!< SCB SHCSR: USGFAULTPENDED Position */ +#define SCB_SHCSR_USGFAULTPENDED_Msk (1UL << SCB_SHCSR_USGFAULTPENDED_Pos) /*!< SCB SHCSR: USGFAULTPENDED Mask */ + +#define SCB_SHCSR_SYSTICKACT_Pos 11U /*!< SCB SHCSR: SYSTICKACT Position */ +#define SCB_SHCSR_SYSTICKACT_Msk (1UL << SCB_SHCSR_SYSTICKACT_Pos) /*!< SCB SHCSR: SYSTICKACT Mask */ + +#define SCB_SHCSR_PENDSVACT_Pos 10U /*!< SCB SHCSR: PENDSVACT Position */ +#define SCB_SHCSR_PENDSVACT_Msk (1UL << SCB_SHCSR_PENDSVACT_Pos) /*!< SCB SHCSR: PENDSVACT Mask */ + +#define SCB_SHCSR_MONITORACT_Pos 8U /*!< SCB SHCSR: MONITORACT Position */ +#define SCB_SHCSR_MONITORACT_Msk (1UL << SCB_SHCSR_MONITORACT_Pos) /*!< SCB SHCSR: MONITORACT Mask */ + +#define SCB_SHCSR_SVCALLACT_Pos 7U /*!< SCB SHCSR: SVCALLACT Position */ +#define SCB_SHCSR_SVCALLACT_Msk (1UL << SCB_SHCSR_SVCALLACT_Pos) /*!< SCB SHCSR: SVCALLACT Mask */ + +#define SCB_SHCSR_USGFAULTACT_Pos 3U /*!< SCB SHCSR: USGFAULTACT Position */ +#define SCB_SHCSR_USGFAULTACT_Msk (1UL << SCB_SHCSR_USGFAULTACT_Pos) /*!< SCB SHCSR: USGFAULTACT Mask */ + +#define SCB_SHCSR_BUSFAULTACT_Pos 1U /*!< SCB SHCSR: BUSFAULTACT Position */ +#define SCB_SHCSR_BUSFAULTACT_Msk (1UL << SCB_SHCSR_BUSFAULTACT_Pos) /*!< SCB SHCSR: BUSFAULTACT Mask */ + +#define SCB_SHCSR_MEMFAULTACT_Pos 0U /*!< SCB SHCSR: MEMFAULTACT Position */ +#define SCB_SHCSR_MEMFAULTACT_Msk (1UL /*<< SCB_SHCSR_MEMFAULTACT_Pos*/) /*!< SCB SHCSR: MEMFAULTACT Mask */ + +/* SCB Configurable Fault Status Register Definitions */ +#define SCB_CFSR_USGFAULTSR_Pos 16U /*!< SCB CFSR: Usage Fault Status Register Position */ +#define SCB_CFSR_USGFAULTSR_Msk (0xFFFFUL << SCB_CFSR_USGFAULTSR_Pos) /*!< SCB CFSR: Usage Fault Status Register Mask */ + +#define SCB_CFSR_BUSFAULTSR_Pos 8U /*!< SCB CFSR: Bus Fault Status Register Position */ +#define SCB_CFSR_BUSFAULTSR_Msk (0xFFUL << SCB_CFSR_BUSFAULTSR_Pos) /*!< SCB CFSR: Bus Fault Status Register Mask */ + +#define SCB_CFSR_MEMFAULTSR_Pos 0U /*!< SCB CFSR: Memory Manage Fault Status Register Position */ +#define SCB_CFSR_MEMFAULTSR_Msk (0xFFUL /*<< SCB_CFSR_MEMFAULTSR_Pos*/) /*!< SCB CFSR: Memory Manage Fault Status Register Mask */ + +/* MemManage Fault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_MMARVALID_Pos (SCB_CFSR_MEMFAULTSR_Pos + 7U) /*!< SCB CFSR (MMFSR): MMARVALID Position */ +#define SCB_CFSR_MMARVALID_Msk (1UL << SCB_CFSR_MMARVALID_Pos) /*!< SCB CFSR (MMFSR): MMARVALID Mask */ + +#define SCB_CFSR_MLSPERR_Pos (SCB_CFSR_MEMFAULTSR_Pos + 5U) /*!< SCB CFSR (MMFSR): MLSPERR Position */ +#define SCB_CFSR_MLSPERR_Msk (1UL << SCB_CFSR_MLSPERR_Pos) /*!< SCB CFSR (MMFSR): MLSPERR Mask */ + +#define SCB_CFSR_MSTKERR_Pos (SCB_CFSR_MEMFAULTSR_Pos + 4U) /*!< SCB CFSR (MMFSR): MSTKERR Position */ +#define SCB_CFSR_MSTKERR_Msk (1UL << SCB_CFSR_MSTKERR_Pos) /*!< SCB CFSR (MMFSR): MSTKERR Mask */ + +#define SCB_CFSR_MUNSTKERR_Pos (SCB_CFSR_MEMFAULTSR_Pos + 3U) /*!< SCB CFSR (MMFSR): MUNSTKERR Position */ +#define SCB_CFSR_MUNSTKERR_Msk (1UL << SCB_CFSR_MUNSTKERR_Pos) /*!< SCB CFSR (MMFSR): MUNSTKERR Mask */ + +#define SCB_CFSR_DACCVIOL_Pos (SCB_CFSR_MEMFAULTSR_Pos + 1U) /*!< SCB CFSR (MMFSR): DACCVIOL Position */ +#define SCB_CFSR_DACCVIOL_Msk (1UL << SCB_CFSR_DACCVIOL_Pos) /*!< SCB CFSR (MMFSR): DACCVIOL Mask */ + +#define SCB_CFSR_IACCVIOL_Pos (SCB_CFSR_MEMFAULTSR_Pos + 0U) /*!< SCB CFSR (MMFSR): IACCVIOL Position */ +#define SCB_CFSR_IACCVIOL_Msk (1UL /*<< SCB_CFSR_IACCVIOL_Pos*/) /*!< SCB CFSR (MMFSR): IACCVIOL Mask */ + +/* BusFault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_BFARVALID_Pos (SCB_CFSR_BUSFAULTSR_Pos + 7U) /*!< SCB CFSR (BFSR): BFARVALID Position */ +#define SCB_CFSR_BFARVALID_Msk (1UL << SCB_CFSR_BFARVALID_Pos) /*!< SCB CFSR (BFSR): BFARVALID Mask */ + +#define SCB_CFSR_LSPERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 5U) /*!< SCB CFSR (BFSR): LSPERR Position */ +#define SCB_CFSR_LSPERR_Msk (1UL << SCB_CFSR_LSPERR_Pos) /*!< SCB CFSR (BFSR): LSPERR Mask */ + +#define SCB_CFSR_STKERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 4U) /*!< SCB CFSR (BFSR): STKERR Position */ +#define SCB_CFSR_STKERR_Msk (1UL << SCB_CFSR_STKERR_Pos) /*!< SCB CFSR (BFSR): STKERR Mask */ + +#define SCB_CFSR_UNSTKERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 3U) /*!< SCB CFSR (BFSR): UNSTKERR Position */ +#define SCB_CFSR_UNSTKERR_Msk (1UL << SCB_CFSR_UNSTKERR_Pos) /*!< SCB CFSR (BFSR): UNSTKERR Mask */ + +#define SCB_CFSR_IMPRECISERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 2U) /*!< SCB CFSR (BFSR): IMPRECISERR Position */ +#define SCB_CFSR_IMPRECISERR_Msk (1UL << SCB_CFSR_IMPRECISERR_Pos) /*!< SCB CFSR (BFSR): IMPRECISERR Mask */ + +#define SCB_CFSR_PRECISERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 1U) /*!< SCB CFSR (BFSR): PRECISERR Position */ +#define SCB_CFSR_PRECISERR_Msk (1UL << SCB_CFSR_PRECISERR_Pos) /*!< SCB CFSR (BFSR): PRECISERR Mask */ + +#define SCB_CFSR_IBUSERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 0U) /*!< SCB CFSR (BFSR): IBUSERR Position */ +#define SCB_CFSR_IBUSERR_Msk (1UL << SCB_CFSR_IBUSERR_Pos) /*!< SCB CFSR (BFSR): IBUSERR Mask */ + +/* UsageFault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_DIVBYZERO_Pos (SCB_CFSR_USGFAULTSR_Pos + 9U) /*!< SCB CFSR (UFSR): DIVBYZERO Position */ +#define SCB_CFSR_DIVBYZERO_Msk (1UL << SCB_CFSR_DIVBYZERO_Pos) /*!< SCB CFSR (UFSR): DIVBYZERO Mask */ + +#define SCB_CFSR_UNALIGNED_Pos (SCB_CFSR_USGFAULTSR_Pos + 8U) /*!< SCB CFSR (UFSR): UNALIGNED Position */ +#define SCB_CFSR_UNALIGNED_Msk (1UL << SCB_CFSR_UNALIGNED_Pos) /*!< SCB CFSR (UFSR): UNALIGNED Mask */ + +#define SCB_CFSR_NOCP_Pos (SCB_CFSR_USGFAULTSR_Pos + 3U) /*!< SCB CFSR (UFSR): NOCP Position */ +#define SCB_CFSR_NOCP_Msk (1UL << SCB_CFSR_NOCP_Pos) /*!< SCB CFSR (UFSR): NOCP Mask */ + +#define SCB_CFSR_INVPC_Pos (SCB_CFSR_USGFAULTSR_Pos + 2U) /*!< SCB CFSR (UFSR): INVPC Position */ +#define SCB_CFSR_INVPC_Msk (1UL << SCB_CFSR_INVPC_Pos) /*!< SCB CFSR (UFSR): INVPC Mask */ + +#define SCB_CFSR_INVSTATE_Pos (SCB_CFSR_USGFAULTSR_Pos + 1U) /*!< SCB CFSR (UFSR): INVSTATE Position */ +#define SCB_CFSR_INVSTATE_Msk (1UL << SCB_CFSR_INVSTATE_Pos) /*!< SCB CFSR (UFSR): INVSTATE Mask */ + +#define SCB_CFSR_UNDEFINSTR_Pos (SCB_CFSR_USGFAULTSR_Pos + 0U) /*!< SCB CFSR (UFSR): UNDEFINSTR Position */ +#define SCB_CFSR_UNDEFINSTR_Msk (1UL << SCB_CFSR_UNDEFINSTR_Pos) /*!< SCB CFSR (UFSR): UNDEFINSTR Mask */ + +/* SCB Hard Fault Status Register Definitions */ +#define SCB_HFSR_DEBUGEVT_Pos 31U /*!< SCB HFSR: DEBUGEVT Position */ +#define SCB_HFSR_DEBUGEVT_Msk (1UL << SCB_HFSR_DEBUGEVT_Pos) /*!< SCB HFSR: DEBUGEVT Mask */ + +#define SCB_HFSR_FORCED_Pos 30U /*!< SCB HFSR: FORCED Position */ +#define SCB_HFSR_FORCED_Msk (1UL << SCB_HFSR_FORCED_Pos) /*!< SCB HFSR: FORCED Mask */ + +#define SCB_HFSR_VECTTBL_Pos 1U /*!< SCB HFSR: VECTTBL Position */ +#define SCB_HFSR_VECTTBL_Msk (1UL << SCB_HFSR_VECTTBL_Pos) /*!< SCB HFSR: VECTTBL Mask */ + +/* SCB Debug Fault Status Register Definitions */ +#define SCB_DFSR_EXTERNAL_Pos 4U /*!< SCB DFSR: EXTERNAL Position */ +#define SCB_DFSR_EXTERNAL_Msk (1UL << SCB_DFSR_EXTERNAL_Pos) /*!< SCB DFSR: EXTERNAL Mask */ + +#define SCB_DFSR_VCATCH_Pos 3U /*!< SCB DFSR: VCATCH Position */ +#define SCB_DFSR_VCATCH_Msk (1UL << SCB_DFSR_VCATCH_Pos) /*!< SCB DFSR: VCATCH Mask */ + +#define SCB_DFSR_DWTTRAP_Pos 2U /*!< SCB DFSR: DWTTRAP Position */ +#define SCB_DFSR_DWTTRAP_Msk (1UL << SCB_DFSR_DWTTRAP_Pos) /*!< SCB DFSR: DWTTRAP Mask */ + +#define SCB_DFSR_BKPT_Pos 1U /*!< SCB DFSR: BKPT Position */ +#define SCB_DFSR_BKPT_Msk (1UL << SCB_DFSR_BKPT_Pos) /*!< SCB DFSR: BKPT Mask */ + +#define SCB_DFSR_HALTED_Pos 0U /*!< SCB DFSR: HALTED Position */ +#define SCB_DFSR_HALTED_Msk (1UL /*<< SCB_DFSR_HALTED_Pos*/) /*!< SCB DFSR: HALTED Mask */ + +/*@} end of group CMSIS_SCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SCnSCB System Controls not in SCB (SCnSCB) + \brief Type definitions for the System Control and ID Register not in the SCB + @{ + */ + +/** + \brief Structure type to access the System Control and ID Register not in the SCB. + */ +typedef struct +{ + uint32_t RESERVED0[1U]; + __IM uint32_t ICTR; /*!< Offset: 0x004 (R/ ) Interrupt Controller Type Register */ + __IOM uint32_t ACTLR; /*!< Offset: 0x008 (R/W) Auxiliary Control Register */ +} SCnSCB_Type; + +/* Interrupt Controller Type Register Definitions */ +#define SCnSCB_ICTR_INTLINESNUM_Pos 0U /*!< ICTR: INTLINESNUM Position */ +#define SCnSCB_ICTR_INTLINESNUM_Msk (0xFUL /*<< SCnSCB_ICTR_INTLINESNUM_Pos*/) /*!< ICTR: INTLINESNUM Mask */ + +/* Auxiliary Control Register Definitions */ +#define SCnSCB_ACTLR_DISOOFP_Pos 9U /*!< ACTLR: DISOOFP Position */ +#define SCnSCB_ACTLR_DISOOFP_Msk (1UL << SCnSCB_ACTLR_DISOOFP_Pos) /*!< ACTLR: DISOOFP Mask */ + +#define SCnSCB_ACTLR_DISFPCA_Pos 8U /*!< ACTLR: DISFPCA Position */ +#define SCnSCB_ACTLR_DISFPCA_Msk (1UL << SCnSCB_ACTLR_DISFPCA_Pos) /*!< ACTLR: DISFPCA Mask */ + +#define SCnSCB_ACTLR_DISFOLD_Pos 2U /*!< ACTLR: DISFOLD Position */ +#define SCnSCB_ACTLR_DISFOLD_Msk (1UL << SCnSCB_ACTLR_DISFOLD_Pos) /*!< ACTLR: DISFOLD Mask */ + +#define SCnSCB_ACTLR_DISDEFWBUF_Pos 1U /*!< ACTLR: DISDEFWBUF Position */ +#define SCnSCB_ACTLR_DISDEFWBUF_Msk (1UL << SCnSCB_ACTLR_DISDEFWBUF_Pos) /*!< ACTLR: DISDEFWBUF Mask */ + +#define SCnSCB_ACTLR_DISMCYCINT_Pos 0U /*!< ACTLR: DISMCYCINT Position */ +#define SCnSCB_ACTLR_DISMCYCINT_Msk (1UL /*<< SCnSCB_ACTLR_DISMCYCINT_Pos*/) /*!< ACTLR: DISMCYCINT Mask */ + +/*@} end of group CMSIS_SCnotSCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SysTick System Tick Timer (SysTick) + \brief Type definitions for the System Timer Registers. + @{ + */ + +/** + \brief Structure type to access the System Timer (SysTick). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SysTick Control and Status Register */ + __IOM uint32_t LOAD; /*!< Offset: 0x004 (R/W) SysTick Reload Value Register */ + __IOM uint32_t VAL; /*!< Offset: 0x008 (R/W) SysTick Current Value Register */ + __IM uint32_t CALIB; /*!< Offset: 0x00C (R/ ) SysTick Calibration Register */ +} SysTick_Type; + +/* SysTick Control / Status Register Definitions */ +#define SysTick_CTRL_COUNTFLAG_Pos 16U /*!< SysTick CTRL: COUNTFLAG Position */ +#define SysTick_CTRL_COUNTFLAG_Msk (1UL << SysTick_CTRL_COUNTFLAG_Pos) /*!< SysTick CTRL: COUNTFLAG Mask */ + +#define SysTick_CTRL_CLKSOURCE_Pos 2U /*!< SysTick CTRL: CLKSOURCE Position */ +#define SysTick_CTRL_CLKSOURCE_Msk (1UL << SysTick_CTRL_CLKSOURCE_Pos) /*!< SysTick CTRL: CLKSOURCE Mask */ + +#define SysTick_CTRL_TICKINT_Pos 1U /*!< SysTick CTRL: TICKINT Position */ +#define SysTick_CTRL_TICKINT_Msk (1UL << SysTick_CTRL_TICKINT_Pos) /*!< SysTick CTRL: TICKINT Mask */ + +#define SysTick_CTRL_ENABLE_Pos 0U /*!< SysTick CTRL: ENABLE Position */ +#define SysTick_CTRL_ENABLE_Msk (1UL /*<< SysTick_CTRL_ENABLE_Pos*/) /*!< SysTick CTRL: ENABLE Mask */ + +/* SysTick Reload Register Definitions */ +#define SysTick_LOAD_RELOAD_Pos 0U /*!< SysTick LOAD: RELOAD Position */ +#define SysTick_LOAD_RELOAD_Msk (0xFFFFFFUL /*<< SysTick_LOAD_RELOAD_Pos*/) /*!< SysTick LOAD: RELOAD Mask */ + +/* SysTick Current Register Definitions */ +#define SysTick_VAL_CURRENT_Pos 0U /*!< SysTick VAL: CURRENT Position */ +#define SysTick_VAL_CURRENT_Msk (0xFFFFFFUL /*<< SysTick_VAL_CURRENT_Pos*/) /*!< SysTick VAL: CURRENT Mask */ + +/* SysTick Calibration Register Definitions */ +#define SysTick_CALIB_NOREF_Pos 31U /*!< SysTick CALIB: NOREF Position */ +#define SysTick_CALIB_NOREF_Msk (1UL << SysTick_CALIB_NOREF_Pos) /*!< SysTick CALIB: NOREF Mask */ + +#define SysTick_CALIB_SKEW_Pos 30U /*!< SysTick CALIB: SKEW Position */ +#define SysTick_CALIB_SKEW_Msk (1UL << SysTick_CALIB_SKEW_Pos) /*!< SysTick CALIB: SKEW Mask */ + +#define SysTick_CALIB_TENMS_Pos 0U /*!< SysTick CALIB: TENMS Position */ +#define SysTick_CALIB_TENMS_Msk (0xFFFFFFUL /*<< SysTick_CALIB_TENMS_Pos*/) /*!< SysTick CALIB: TENMS Mask */ + +/*@} end of group CMSIS_SysTick */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_ITM Instrumentation Trace Macrocell (ITM) + \brief Type definitions for the Instrumentation Trace Macrocell (ITM) + @{ + */ + +/** + \brief Structure type to access the Instrumentation Trace Macrocell Register (ITM). + */ +typedef struct +{ + __OM union + { + __OM uint8_t u8; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 8-bit */ + __OM uint16_t u16; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 16-bit */ + __OM uint32_t u32; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 32-bit */ + } PORT [32U]; /*!< Offset: 0x000 ( /W) ITM Stimulus Port Registers */ + uint32_t RESERVED0[864U]; + __IOM uint32_t TER; /*!< Offset: 0xE00 (R/W) ITM Trace Enable Register */ + uint32_t RESERVED1[15U]; + __IOM uint32_t TPR; /*!< Offset: 0xE40 (R/W) ITM Trace Privilege Register */ + uint32_t RESERVED2[15U]; + __IOM uint32_t TCR; /*!< Offset: 0xE80 (R/W) ITM Trace Control Register */ + uint32_t RESERVED3[32U]; + uint32_t RESERVED4[43U]; + __OM uint32_t LAR; /*!< Offset: 0xFB0 ( /W) ITM Lock Access Register */ + __IM uint32_t LSR; /*!< Offset: 0xFB4 (R/ ) ITM Lock Status Register */ + uint32_t RESERVED5[6U]; + __IM uint32_t PID4; /*!< Offset: 0xFD0 (R/ ) ITM Peripheral Identification Register #4 */ + __IM uint32_t PID5; /*!< Offset: 0xFD4 (R/ ) ITM Peripheral Identification Register #5 */ + __IM uint32_t PID6; /*!< Offset: 0xFD8 (R/ ) ITM Peripheral Identification Register #6 */ + __IM uint32_t PID7; /*!< Offset: 0xFDC (R/ ) ITM Peripheral Identification Register #7 */ + __IM uint32_t PID0; /*!< Offset: 0xFE0 (R/ ) ITM Peripheral Identification Register #0 */ + __IM uint32_t PID1; /*!< Offset: 0xFE4 (R/ ) ITM Peripheral Identification Register #1 */ + __IM uint32_t PID2; /*!< Offset: 0xFE8 (R/ ) ITM Peripheral Identification Register #2 */ + __IM uint32_t PID3; /*!< Offset: 0xFEC (R/ ) ITM Peripheral Identification Register #3 */ + __IM uint32_t CID0; /*!< Offset: 0xFF0 (R/ ) ITM Component Identification Register #0 */ + __IM uint32_t CID1; /*!< Offset: 0xFF4 (R/ ) ITM Component Identification Register #1 */ + __IM uint32_t CID2; /*!< Offset: 0xFF8 (R/ ) ITM Component Identification Register #2 */ + __IM uint32_t CID3; /*!< Offset: 0xFFC (R/ ) ITM Component Identification Register #3 */ +} ITM_Type; + +/* ITM Trace Privilege Register Definitions */ +#define ITM_TPR_PRIVMASK_Pos 0U /*!< ITM TPR: PRIVMASK Position */ +#define ITM_TPR_PRIVMASK_Msk (0xFFFFFFFFUL /*<< ITM_TPR_PRIVMASK_Pos*/) /*!< ITM TPR: PRIVMASK Mask */ + +/* ITM Trace Control Register Definitions */ +#define ITM_TCR_BUSY_Pos 23U /*!< ITM TCR: BUSY Position */ +#define ITM_TCR_BUSY_Msk (1UL << ITM_TCR_BUSY_Pos) /*!< ITM TCR: BUSY Mask */ + +#define ITM_TCR_TraceBusID_Pos 16U /*!< ITM TCR: ATBID Position */ +#define ITM_TCR_TraceBusID_Msk (0x7FUL << ITM_TCR_TraceBusID_Pos) /*!< ITM TCR: ATBID Mask */ + +#define ITM_TCR_GTSFREQ_Pos 10U /*!< ITM TCR: Global timestamp frequency Position */ +#define ITM_TCR_GTSFREQ_Msk (3UL << ITM_TCR_GTSFREQ_Pos) /*!< ITM TCR: Global timestamp frequency Mask */ + +#define ITM_TCR_TSPrescale_Pos 8U /*!< ITM TCR: TSPrescale Position */ +#define ITM_TCR_TSPrescale_Msk (3UL << ITM_TCR_TSPrescale_Pos) /*!< ITM TCR: TSPrescale Mask */ + +#define ITM_TCR_SWOENA_Pos 4U /*!< ITM TCR: SWOENA Position */ +#define ITM_TCR_SWOENA_Msk (1UL << ITM_TCR_SWOENA_Pos) /*!< ITM TCR: SWOENA Mask */ + +#define ITM_TCR_DWTENA_Pos 3U /*!< ITM TCR: DWTENA Position */ +#define ITM_TCR_DWTENA_Msk (1UL << ITM_TCR_DWTENA_Pos) /*!< ITM TCR: DWTENA Mask */ + +#define ITM_TCR_SYNCENA_Pos 2U /*!< ITM TCR: SYNCENA Position */ +#define ITM_TCR_SYNCENA_Msk (1UL << ITM_TCR_SYNCENA_Pos) /*!< ITM TCR: SYNCENA Mask */ + +#define ITM_TCR_TSENA_Pos 1U /*!< ITM TCR: TSENA Position */ +#define ITM_TCR_TSENA_Msk (1UL << ITM_TCR_TSENA_Pos) /*!< ITM TCR: TSENA Mask */ + +#define ITM_TCR_ITMENA_Pos 0U /*!< ITM TCR: ITM Enable bit Position */ +#define ITM_TCR_ITMENA_Msk (1UL /*<< ITM_TCR_ITMENA_Pos*/) /*!< ITM TCR: ITM Enable bit Mask */ + +/* ITM Lock Status Register Definitions */ +#define ITM_LSR_ByteAcc_Pos 2U /*!< ITM LSR: ByteAcc Position */ +#define ITM_LSR_ByteAcc_Msk (1UL << ITM_LSR_ByteAcc_Pos) /*!< ITM LSR: ByteAcc Mask */ + +#define ITM_LSR_Access_Pos 1U /*!< ITM LSR: Access Position */ +#define ITM_LSR_Access_Msk (1UL << ITM_LSR_Access_Pos) /*!< ITM LSR: Access Mask */ + +#define ITM_LSR_Present_Pos 0U /*!< ITM LSR: Present Position */ +#define ITM_LSR_Present_Msk (1UL /*<< ITM_LSR_Present_Pos*/) /*!< ITM LSR: Present Mask */ + +/*@}*/ /* end of group CMSIS_ITM */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_DWT Data Watchpoint and Trace (DWT) + \brief Type definitions for the Data Watchpoint and Trace (DWT) + @{ + */ + +/** + \brief Structure type to access the Data Watchpoint and Trace Register (DWT). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) Control Register */ + __IOM uint32_t CYCCNT; /*!< Offset: 0x004 (R/W) Cycle Count Register */ + __IOM uint32_t CPICNT; /*!< Offset: 0x008 (R/W) CPI Count Register */ + __IOM uint32_t EXCCNT; /*!< Offset: 0x00C (R/W) Exception Overhead Count Register */ + __IOM uint32_t SLEEPCNT; /*!< Offset: 0x010 (R/W) Sleep Count Register */ + __IOM uint32_t LSUCNT; /*!< Offset: 0x014 (R/W) LSU Count Register */ + __IOM uint32_t FOLDCNT; /*!< Offset: 0x018 (R/W) Folded-instruction Count Register */ + __IM uint32_t PCSR; /*!< Offset: 0x01C (R/ ) Program Counter Sample Register */ + __IOM uint32_t COMP0; /*!< Offset: 0x020 (R/W) Comparator Register 0 */ + __IOM uint32_t MASK0; /*!< Offset: 0x024 (R/W) Mask Register 0 */ + __IOM uint32_t FUNCTION0; /*!< Offset: 0x028 (R/W) Function Register 0 */ + uint32_t RESERVED0[1U]; + __IOM uint32_t COMP1; /*!< Offset: 0x030 (R/W) Comparator Register 1 */ + __IOM uint32_t MASK1; /*!< Offset: 0x034 (R/W) Mask Register 1 */ + __IOM uint32_t FUNCTION1; /*!< Offset: 0x038 (R/W) Function Register 1 */ + uint32_t RESERVED1[1U]; + __IOM uint32_t COMP2; /*!< Offset: 0x040 (R/W) Comparator Register 2 */ + __IOM uint32_t MASK2; /*!< Offset: 0x044 (R/W) Mask Register 2 */ + __IOM uint32_t FUNCTION2; /*!< Offset: 0x048 (R/W) Function Register 2 */ + uint32_t RESERVED2[1U]; + __IOM uint32_t COMP3; /*!< Offset: 0x050 (R/W) Comparator Register 3 */ + __IOM uint32_t MASK3; /*!< Offset: 0x054 (R/W) Mask Register 3 */ + __IOM uint32_t FUNCTION3; /*!< Offset: 0x058 (R/W) Function Register 3 */ +} DWT_Type; + +/* DWT Control Register Definitions */ +#define DWT_CTRL_NUMCOMP_Pos 28U /*!< DWT CTRL: NUMCOMP Position */ +#define DWT_CTRL_NUMCOMP_Msk (0xFUL << DWT_CTRL_NUMCOMP_Pos) /*!< DWT CTRL: NUMCOMP Mask */ + +#define DWT_CTRL_NOTRCPKT_Pos 27U /*!< DWT CTRL: NOTRCPKT Position */ +#define DWT_CTRL_NOTRCPKT_Msk (0x1UL << DWT_CTRL_NOTRCPKT_Pos) /*!< DWT CTRL: NOTRCPKT Mask */ + +#define DWT_CTRL_NOEXTTRIG_Pos 26U /*!< DWT CTRL: NOEXTTRIG Position */ +#define DWT_CTRL_NOEXTTRIG_Msk (0x1UL << DWT_CTRL_NOEXTTRIG_Pos) /*!< DWT CTRL: NOEXTTRIG Mask */ + +#define DWT_CTRL_NOCYCCNT_Pos 25U /*!< DWT CTRL: NOCYCCNT Position */ +#define DWT_CTRL_NOCYCCNT_Msk (0x1UL << DWT_CTRL_NOCYCCNT_Pos) /*!< DWT CTRL: NOCYCCNT Mask */ + +#define DWT_CTRL_NOPRFCNT_Pos 24U /*!< DWT CTRL: NOPRFCNT Position */ +#define DWT_CTRL_NOPRFCNT_Msk (0x1UL << DWT_CTRL_NOPRFCNT_Pos) /*!< DWT CTRL: NOPRFCNT Mask */ + +#define DWT_CTRL_CYCEVTENA_Pos 22U /*!< DWT CTRL: CYCEVTENA Position */ +#define DWT_CTRL_CYCEVTENA_Msk (0x1UL << DWT_CTRL_CYCEVTENA_Pos) /*!< DWT CTRL: CYCEVTENA Mask */ + +#define DWT_CTRL_FOLDEVTENA_Pos 21U /*!< DWT CTRL: FOLDEVTENA Position */ +#define DWT_CTRL_FOLDEVTENA_Msk (0x1UL << DWT_CTRL_FOLDEVTENA_Pos) /*!< DWT CTRL: FOLDEVTENA Mask */ + +#define DWT_CTRL_LSUEVTENA_Pos 20U /*!< DWT CTRL: LSUEVTENA Position */ +#define DWT_CTRL_LSUEVTENA_Msk (0x1UL << DWT_CTRL_LSUEVTENA_Pos) /*!< DWT CTRL: LSUEVTENA Mask */ + +#define DWT_CTRL_SLEEPEVTENA_Pos 19U /*!< DWT CTRL: SLEEPEVTENA Position */ +#define DWT_CTRL_SLEEPEVTENA_Msk (0x1UL << DWT_CTRL_SLEEPEVTENA_Pos) /*!< DWT CTRL: SLEEPEVTENA Mask */ + +#define DWT_CTRL_EXCEVTENA_Pos 18U /*!< DWT CTRL: EXCEVTENA Position */ +#define DWT_CTRL_EXCEVTENA_Msk (0x1UL << DWT_CTRL_EXCEVTENA_Pos) /*!< DWT CTRL: EXCEVTENA Mask */ + +#define DWT_CTRL_CPIEVTENA_Pos 17U /*!< DWT CTRL: CPIEVTENA Position */ +#define DWT_CTRL_CPIEVTENA_Msk (0x1UL << DWT_CTRL_CPIEVTENA_Pos) /*!< DWT CTRL: CPIEVTENA Mask */ + +#define DWT_CTRL_EXCTRCENA_Pos 16U /*!< DWT CTRL: EXCTRCENA Position */ +#define DWT_CTRL_EXCTRCENA_Msk (0x1UL << DWT_CTRL_EXCTRCENA_Pos) /*!< DWT CTRL: EXCTRCENA Mask */ + +#define DWT_CTRL_PCSAMPLENA_Pos 12U /*!< DWT CTRL: PCSAMPLENA Position */ +#define DWT_CTRL_PCSAMPLENA_Msk (0x1UL << DWT_CTRL_PCSAMPLENA_Pos) /*!< DWT CTRL: PCSAMPLENA Mask */ + +#define DWT_CTRL_SYNCTAP_Pos 10U /*!< DWT CTRL: SYNCTAP Position */ +#define DWT_CTRL_SYNCTAP_Msk (0x3UL << DWT_CTRL_SYNCTAP_Pos) /*!< DWT CTRL: SYNCTAP Mask */ + +#define DWT_CTRL_CYCTAP_Pos 9U /*!< DWT CTRL: CYCTAP Position */ +#define DWT_CTRL_CYCTAP_Msk (0x1UL << DWT_CTRL_CYCTAP_Pos) /*!< DWT CTRL: CYCTAP Mask */ + +#define DWT_CTRL_POSTINIT_Pos 5U /*!< DWT CTRL: POSTINIT Position */ +#define DWT_CTRL_POSTINIT_Msk (0xFUL << DWT_CTRL_POSTINIT_Pos) /*!< DWT CTRL: POSTINIT Mask */ + +#define DWT_CTRL_POSTPRESET_Pos 1U /*!< DWT CTRL: POSTPRESET Position */ +#define DWT_CTRL_POSTPRESET_Msk (0xFUL << DWT_CTRL_POSTPRESET_Pos) /*!< DWT CTRL: POSTPRESET Mask */ + +#define DWT_CTRL_CYCCNTENA_Pos 0U /*!< DWT CTRL: CYCCNTENA Position */ +#define DWT_CTRL_CYCCNTENA_Msk (0x1UL /*<< DWT_CTRL_CYCCNTENA_Pos*/) /*!< DWT CTRL: CYCCNTENA Mask */ + +/* DWT CPI Count Register Definitions */ +#define DWT_CPICNT_CPICNT_Pos 0U /*!< DWT CPICNT: CPICNT Position */ +#define DWT_CPICNT_CPICNT_Msk (0xFFUL /*<< DWT_CPICNT_CPICNT_Pos*/) /*!< DWT CPICNT: CPICNT Mask */ + +/* DWT Exception Overhead Count Register Definitions */ +#define DWT_EXCCNT_EXCCNT_Pos 0U /*!< DWT EXCCNT: EXCCNT Position */ +#define DWT_EXCCNT_EXCCNT_Msk (0xFFUL /*<< DWT_EXCCNT_EXCCNT_Pos*/) /*!< DWT EXCCNT: EXCCNT Mask */ + +/* DWT Sleep Count Register Definitions */ +#define DWT_SLEEPCNT_SLEEPCNT_Pos 0U /*!< DWT SLEEPCNT: SLEEPCNT Position */ +#define DWT_SLEEPCNT_SLEEPCNT_Msk (0xFFUL /*<< DWT_SLEEPCNT_SLEEPCNT_Pos*/) /*!< DWT SLEEPCNT: SLEEPCNT Mask */ + +/* DWT LSU Count Register Definitions */ +#define DWT_LSUCNT_LSUCNT_Pos 0U /*!< DWT LSUCNT: LSUCNT Position */ +#define DWT_LSUCNT_LSUCNT_Msk (0xFFUL /*<< DWT_LSUCNT_LSUCNT_Pos*/) /*!< DWT LSUCNT: LSUCNT Mask */ + +/* DWT Folded-instruction Count Register Definitions */ +#define DWT_FOLDCNT_FOLDCNT_Pos 0U /*!< DWT FOLDCNT: FOLDCNT Position */ +#define DWT_FOLDCNT_FOLDCNT_Msk (0xFFUL /*<< DWT_FOLDCNT_FOLDCNT_Pos*/) /*!< DWT FOLDCNT: FOLDCNT Mask */ + +/* DWT Comparator Mask Register Definitions */ +#define DWT_MASK_MASK_Pos 0U /*!< DWT MASK: MASK Position */ +#define DWT_MASK_MASK_Msk (0x1FUL /*<< DWT_MASK_MASK_Pos*/) /*!< DWT MASK: MASK Mask */ + +/* DWT Comparator Function Register Definitions */ +#define DWT_FUNCTION_MATCHED_Pos 24U /*!< DWT FUNCTION: MATCHED Position */ +#define DWT_FUNCTION_MATCHED_Msk (0x1UL << DWT_FUNCTION_MATCHED_Pos) /*!< DWT FUNCTION: MATCHED Mask */ + +#define DWT_FUNCTION_DATAVADDR1_Pos 16U /*!< DWT FUNCTION: DATAVADDR1 Position */ +#define DWT_FUNCTION_DATAVADDR1_Msk (0xFUL << DWT_FUNCTION_DATAVADDR1_Pos) /*!< DWT FUNCTION: DATAVADDR1 Mask */ + +#define DWT_FUNCTION_DATAVADDR0_Pos 12U /*!< DWT FUNCTION: DATAVADDR0 Position */ +#define DWT_FUNCTION_DATAVADDR0_Msk (0xFUL << DWT_FUNCTION_DATAVADDR0_Pos) /*!< DWT FUNCTION: DATAVADDR0 Mask */ + +#define DWT_FUNCTION_DATAVSIZE_Pos 10U /*!< DWT FUNCTION: DATAVSIZE Position */ +#define DWT_FUNCTION_DATAVSIZE_Msk (0x3UL << DWT_FUNCTION_DATAVSIZE_Pos) /*!< DWT FUNCTION: DATAVSIZE Mask */ + +#define DWT_FUNCTION_LNK1ENA_Pos 9U /*!< DWT FUNCTION: LNK1ENA Position */ +#define DWT_FUNCTION_LNK1ENA_Msk (0x1UL << DWT_FUNCTION_LNK1ENA_Pos) /*!< DWT FUNCTION: LNK1ENA Mask */ + +#define DWT_FUNCTION_DATAVMATCH_Pos 8U /*!< DWT FUNCTION: DATAVMATCH Position */ +#define DWT_FUNCTION_DATAVMATCH_Msk (0x1UL << DWT_FUNCTION_DATAVMATCH_Pos) /*!< DWT FUNCTION: DATAVMATCH Mask */ + +#define DWT_FUNCTION_CYCMATCH_Pos 7U /*!< DWT FUNCTION: CYCMATCH Position */ +#define DWT_FUNCTION_CYCMATCH_Msk (0x1UL << DWT_FUNCTION_CYCMATCH_Pos) /*!< DWT FUNCTION: CYCMATCH Mask */ + +#define DWT_FUNCTION_EMITRANGE_Pos 5U /*!< DWT FUNCTION: EMITRANGE Position */ +#define DWT_FUNCTION_EMITRANGE_Msk (0x1UL << DWT_FUNCTION_EMITRANGE_Pos) /*!< DWT FUNCTION: EMITRANGE Mask */ + +#define DWT_FUNCTION_FUNCTION_Pos 0U /*!< DWT FUNCTION: FUNCTION Position */ +#define DWT_FUNCTION_FUNCTION_Msk (0xFUL /*<< DWT_FUNCTION_FUNCTION_Pos*/) /*!< DWT FUNCTION: FUNCTION Mask */ + +/*@}*/ /* end of group CMSIS_DWT */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_TPI Trace Port Interface (TPI) + \brief Type definitions for the Trace Port Interface (TPI) + @{ + */ + +/** + \brief Structure type to access the Trace Port Interface Register (TPI). + */ +typedef struct +{ + __IM uint32_t SSPSR; /*!< Offset: 0x000 (R/ ) Supported Parallel Port Size Register */ + __IOM uint32_t CSPSR; /*!< Offset: 0x004 (R/W) Current Parallel Port Size Register */ + uint32_t RESERVED0[2U]; + __IOM uint32_t ACPR; /*!< Offset: 0x010 (R/W) Asynchronous Clock Prescaler Register */ + uint32_t RESERVED1[55U]; + __IOM uint32_t SPPR; /*!< Offset: 0x0F0 (R/W) Selected Pin Protocol Register */ + uint32_t RESERVED2[131U]; + __IM uint32_t FFSR; /*!< Offset: 0x300 (R/ ) Formatter and Flush Status Register */ + __IOM uint32_t FFCR; /*!< Offset: 0x304 (R/W) Formatter and Flush Control Register */ + __IM uint32_t FSCR; /*!< Offset: 0x308 (R/ ) Formatter Synchronization Counter Register */ + uint32_t RESERVED3[759U]; + __IM uint32_t TRIGGER; /*!< Offset: 0xEE8 (R/ ) TRIGGER Register */ + __IM uint32_t FIFO0; /*!< Offset: 0xEEC (R/ ) Integration ETM Data */ + __IM uint32_t ITATBCTR2; /*!< Offset: 0xEF0 (R/ ) ITATBCTR2 */ + uint32_t RESERVED4[1U]; + __IM uint32_t ITATBCTR0; /*!< Offset: 0xEF8 (R/ ) ITATBCTR0 */ + __IM uint32_t FIFO1; /*!< Offset: 0xEFC (R/ ) Integration ITM Data */ + __IOM uint32_t ITCTRL; /*!< Offset: 0xF00 (R/W) Integration Mode Control */ + uint32_t RESERVED5[39U]; + __IOM uint32_t CLAIMSET; /*!< Offset: 0xFA0 (R/W) Claim tag set */ + __IOM uint32_t CLAIMCLR; /*!< Offset: 0xFA4 (R/W) Claim tag clear */ + uint32_t RESERVED7[8U]; + __IM uint32_t DEVID; /*!< Offset: 0xFC8 (R/ ) TPIU_DEVID */ + __IM uint32_t DEVTYPE; /*!< Offset: 0xFCC (R/ ) TPIU_DEVTYPE */ +} TPI_Type; + +/* TPI Asynchronous Clock Prescaler Register Definitions */ +#define TPI_ACPR_PRESCALER_Pos 0U /*!< TPI ACPR: PRESCALER Position */ +#define TPI_ACPR_PRESCALER_Msk (0x1FFFUL /*<< TPI_ACPR_PRESCALER_Pos*/) /*!< TPI ACPR: PRESCALER Mask */ + +/* TPI Selected Pin Protocol Register Definitions */ +#define TPI_SPPR_TXMODE_Pos 0U /*!< TPI SPPR: TXMODE Position */ +#define TPI_SPPR_TXMODE_Msk (0x3UL /*<< TPI_SPPR_TXMODE_Pos*/) /*!< TPI SPPR: TXMODE Mask */ + +/* TPI Formatter and Flush Status Register Definitions */ +#define TPI_FFSR_FtNonStop_Pos 3U /*!< TPI FFSR: FtNonStop Position */ +#define TPI_FFSR_FtNonStop_Msk (0x1UL << TPI_FFSR_FtNonStop_Pos) /*!< TPI FFSR: FtNonStop Mask */ + +#define TPI_FFSR_TCPresent_Pos 2U /*!< TPI FFSR: TCPresent Position */ +#define TPI_FFSR_TCPresent_Msk (0x1UL << TPI_FFSR_TCPresent_Pos) /*!< TPI FFSR: TCPresent Mask */ + +#define TPI_FFSR_FtStopped_Pos 1U /*!< TPI FFSR: FtStopped Position */ +#define TPI_FFSR_FtStopped_Msk (0x1UL << TPI_FFSR_FtStopped_Pos) /*!< TPI FFSR: FtStopped Mask */ + +#define TPI_FFSR_FlInProg_Pos 0U /*!< TPI FFSR: FlInProg Position */ +#define TPI_FFSR_FlInProg_Msk (0x1UL /*<< TPI_FFSR_FlInProg_Pos*/) /*!< TPI FFSR: FlInProg Mask */ + +/* TPI Formatter and Flush Control Register Definitions */ +#define TPI_FFCR_TrigIn_Pos 8U /*!< TPI FFCR: TrigIn Position */ +#define TPI_FFCR_TrigIn_Msk (0x1UL << TPI_FFCR_TrigIn_Pos) /*!< TPI FFCR: TrigIn Mask */ + +#define TPI_FFCR_EnFCont_Pos 1U /*!< TPI FFCR: EnFCont Position */ +#define TPI_FFCR_EnFCont_Msk (0x1UL << TPI_FFCR_EnFCont_Pos) /*!< TPI FFCR: EnFCont Mask */ + +/* TPI TRIGGER Register Definitions */ +#define TPI_TRIGGER_TRIGGER_Pos 0U /*!< TPI TRIGGER: TRIGGER Position */ +#define TPI_TRIGGER_TRIGGER_Msk (0x1UL /*<< TPI_TRIGGER_TRIGGER_Pos*/) /*!< TPI TRIGGER: TRIGGER Mask */ + +/* TPI Integration ETM Data Register Definitions (FIFO0) */ +#define TPI_FIFO0_ITM_ATVALID_Pos 29U /*!< TPI FIFO0: ITM_ATVALID Position */ +#define TPI_FIFO0_ITM_ATVALID_Msk (0x1UL << TPI_FIFO0_ITM_ATVALID_Pos) /*!< TPI FIFO0: ITM_ATVALID Mask */ + +#define TPI_FIFO0_ITM_bytecount_Pos 27U /*!< TPI FIFO0: ITM_bytecount Position */ +#define TPI_FIFO0_ITM_bytecount_Msk (0x3UL << TPI_FIFO0_ITM_bytecount_Pos) /*!< TPI FIFO0: ITM_bytecount Mask */ + +#define TPI_FIFO0_ETM_ATVALID_Pos 26U /*!< TPI FIFO0: ETM_ATVALID Position */ +#define TPI_FIFO0_ETM_ATVALID_Msk (0x1UL << TPI_FIFO0_ETM_ATVALID_Pos) /*!< TPI FIFO0: ETM_ATVALID Mask */ + +#define TPI_FIFO0_ETM_bytecount_Pos 24U /*!< TPI FIFO0: ETM_bytecount Position */ +#define TPI_FIFO0_ETM_bytecount_Msk (0x3UL << TPI_FIFO0_ETM_bytecount_Pos) /*!< TPI FIFO0: ETM_bytecount Mask */ + +#define TPI_FIFO0_ETM2_Pos 16U /*!< TPI FIFO0: ETM2 Position */ +#define TPI_FIFO0_ETM2_Msk (0xFFUL << TPI_FIFO0_ETM2_Pos) /*!< TPI FIFO0: ETM2 Mask */ + +#define TPI_FIFO0_ETM1_Pos 8U /*!< TPI FIFO0: ETM1 Position */ +#define TPI_FIFO0_ETM1_Msk (0xFFUL << TPI_FIFO0_ETM1_Pos) /*!< TPI FIFO0: ETM1 Mask */ + +#define TPI_FIFO0_ETM0_Pos 0U /*!< TPI FIFO0: ETM0 Position */ +#define TPI_FIFO0_ETM0_Msk (0xFFUL /*<< TPI_FIFO0_ETM0_Pos*/) /*!< TPI FIFO0: ETM0 Mask */ + +/* TPI ITATBCTR2 Register Definitions */ +#define TPI_ITATBCTR2_ATREADY2_Pos 0U /*!< TPI ITATBCTR2: ATREADY2 Position */ +#define TPI_ITATBCTR2_ATREADY2_Msk (0x1UL /*<< TPI_ITATBCTR2_ATREADY2_Pos*/) /*!< TPI ITATBCTR2: ATREADY2 Mask */ + +#define TPI_ITATBCTR2_ATREADY1_Pos 0U /*!< TPI ITATBCTR2: ATREADY1 Position */ +#define TPI_ITATBCTR2_ATREADY1_Msk (0x1UL /*<< TPI_ITATBCTR2_ATREADY1_Pos*/) /*!< TPI ITATBCTR2: ATREADY1 Mask */ + +/* TPI Integration ITM Data Register Definitions (FIFO1) */ +#define TPI_FIFO1_ITM_ATVALID_Pos 29U /*!< TPI FIFO1: ITM_ATVALID Position */ +#define TPI_FIFO1_ITM_ATVALID_Msk (0x1UL << TPI_FIFO1_ITM_ATVALID_Pos) /*!< TPI FIFO1: ITM_ATVALID Mask */ + +#define TPI_FIFO1_ITM_bytecount_Pos 27U /*!< TPI FIFO1: ITM_bytecount Position */ +#define TPI_FIFO1_ITM_bytecount_Msk (0x3UL << TPI_FIFO1_ITM_bytecount_Pos) /*!< TPI FIFO1: ITM_bytecount Mask */ + +#define TPI_FIFO1_ETM_ATVALID_Pos 26U /*!< TPI FIFO1: ETM_ATVALID Position */ +#define TPI_FIFO1_ETM_ATVALID_Msk (0x1UL << TPI_FIFO1_ETM_ATVALID_Pos) /*!< TPI FIFO1: ETM_ATVALID Mask */ + +#define TPI_FIFO1_ETM_bytecount_Pos 24U /*!< TPI FIFO1: ETM_bytecount Position */ +#define TPI_FIFO1_ETM_bytecount_Msk (0x3UL << TPI_FIFO1_ETM_bytecount_Pos) /*!< TPI FIFO1: ETM_bytecount Mask */ + +#define TPI_FIFO1_ITM2_Pos 16U /*!< TPI FIFO1: ITM2 Position */ +#define TPI_FIFO1_ITM2_Msk (0xFFUL << TPI_FIFO1_ITM2_Pos) /*!< TPI FIFO1: ITM2 Mask */ + +#define TPI_FIFO1_ITM1_Pos 8U /*!< TPI FIFO1: ITM1 Position */ +#define TPI_FIFO1_ITM1_Msk (0xFFUL << TPI_FIFO1_ITM1_Pos) /*!< TPI FIFO1: ITM1 Mask */ + +#define TPI_FIFO1_ITM0_Pos 0U /*!< TPI FIFO1: ITM0 Position */ +#define TPI_FIFO1_ITM0_Msk (0xFFUL /*<< TPI_FIFO1_ITM0_Pos*/) /*!< TPI FIFO1: ITM0 Mask */ + +/* TPI ITATBCTR0 Register Definitions */ +#define TPI_ITATBCTR0_ATREADY2_Pos 0U /*!< TPI ITATBCTR0: ATREADY2 Position */ +#define TPI_ITATBCTR0_ATREADY2_Msk (0x1UL /*<< TPI_ITATBCTR0_ATREADY2_Pos*/) /*!< TPI ITATBCTR0: ATREADY2 Mask */ + +#define TPI_ITATBCTR0_ATREADY1_Pos 0U /*!< TPI ITATBCTR0: ATREADY1 Position */ +#define TPI_ITATBCTR0_ATREADY1_Msk (0x1UL /*<< TPI_ITATBCTR0_ATREADY1_Pos*/) /*!< TPI ITATBCTR0: ATREADY1 Mask */ + +/* TPI Integration Mode Control Register Definitions */ +#define TPI_ITCTRL_Mode_Pos 0U /*!< TPI ITCTRL: Mode Position */ +#define TPI_ITCTRL_Mode_Msk (0x3UL /*<< TPI_ITCTRL_Mode_Pos*/) /*!< TPI ITCTRL: Mode Mask */ + +/* TPI DEVID Register Definitions */ +#define TPI_DEVID_NRZVALID_Pos 11U /*!< TPI DEVID: NRZVALID Position */ +#define TPI_DEVID_NRZVALID_Msk (0x1UL << TPI_DEVID_NRZVALID_Pos) /*!< TPI DEVID: NRZVALID Mask */ + +#define TPI_DEVID_MANCVALID_Pos 10U /*!< TPI DEVID: MANCVALID Position */ +#define TPI_DEVID_MANCVALID_Msk (0x1UL << TPI_DEVID_MANCVALID_Pos) /*!< TPI DEVID: MANCVALID Mask */ + +#define TPI_DEVID_PTINVALID_Pos 9U /*!< TPI DEVID: PTINVALID Position */ +#define TPI_DEVID_PTINVALID_Msk (0x1UL << TPI_DEVID_PTINVALID_Pos) /*!< TPI DEVID: PTINVALID Mask */ + +#define TPI_DEVID_MinBufSz_Pos 6U /*!< TPI DEVID: MinBufSz Position */ +#define TPI_DEVID_MinBufSz_Msk (0x7UL << TPI_DEVID_MinBufSz_Pos) /*!< TPI DEVID: MinBufSz Mask */ + +#define TPI_DEVID_AsynClkIn_Pos 5U /*!< TPI DEVID: AsynClkIn Position */ +#define TPI_DEVID_AsynClkIn_Msk (0x1UL << TPI_DEVID_AsynClkIn_Pos) /*!< TPI DEVID: AsynClkIn Mask */ + +#define TPI_DEVID_NrTraceInput_Pos 0U /*!< TPI DEVID: NrTraceInput Position */ +#define TPI_DEVID_NrTraceInput_Msk (0x1FUL /*<< TPI_DEVID_NrTraceInput_Pos*/) /*!< TPI DEVID: NrTraceInput Mask */ + +/* TPI DEVTYPE Register Definitions */ +#define TPI_DEVTYPE_SubType_Pos 4U /*!< TPI DEVTYPE: SubType Position */ +#define TPI_DEVTYPE_SubType_Msk (0xFUL /*<< TPI_DEVTYPE_SubType_Pos*/) /*!< TPI DEVTYPE: SubType Mask */ + +#define TPI_DEVTYPE_MajorType_Pos 0U /*!< TPI DEVTYPE: MajorType Position */ +#define TPI_DEVTYPE_MajorType_Msk (0xFUL << TPI_DEVTYPE_MajorType_Pos) /*!< TPI DEVTYPE: MajorType Mask */ + +/*@}*/ /* end of group CMSIS_TPI */ + + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_MPU Memory Protection Unit (MPU) + \brief Type definitions for the Memory Protection Unit (MPU) + @{ + */ + +/** + \brief Structure type to access the Memory Protection Unit (MPU). + */ +typedef struct +{ + __IM uint32_t TYPE; /*!< Offset: 0x000 (R/ ) MPU Type Register */ + __IOM uint32_t CTRL; /*!< Offset: 0x004 (R/W) MPU Control Register */ + __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) MPU Region RNRber Register */ + __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) MPU Region Base Address Register */ + __IOM uint32_t RASR; /*!< Offset: 0x010 (R/W) MPU Region Attribute and Size Register */ + __IOM uint32_t RBAR_A1; /*!< Offset: 0x014 (R/W) MPU Alias 1 Region Base Address Register */ + __IOM uint32_t RASR_A1; /*!< Offset: 0x018 (R/W) MPU Alias 1 Region Attribute and Size Register */ + __IOM uint32_t RBAR_A2; /*!< Offset: 0x01C (R/W) MPU Alias 2 Region Base Address Register */ + __IOM uint32_t RASR_A2; /*!< Offset: 0x020 (R/W) MPU Alias 2 Region Attribute and Size Register */ + __IOM uint32_t RBAR_A3; /*!< Offset: 0x024 (R/W) MPU Alias 3 Region Base Address Register */ + __IOM uint32_t RASR_A3; /*!< Offset: 0x028 (R/W) MPU Alias 3 Region Attribute and Size Register */ +} MPU_Type; + +#define MPU_TYPE_RALIASES 4U + +/* MPU Type Register Definitions */ +#define MPU_TYPE_IREGION_Pos 16U /*!< MPU TYPE: IREGION Position */ +#define MPU_TYPE_IREGION_Msk (0xFFUL << MPU_TYPE_IREGION_Pos) /*!< MPU TYPE: IREGION Mask */ + +#define MPU_TYPE_DREGION_Pos 8U /*!< MPU TYPE: DREGION Position */ +#define MPU_TYPE_DREGION_Msk (0xFFUL << MPU_TYPE_DREGION_Pos) /*!< MPU TYPE: DREGION Mask */ + +#define MPU_TYPE_SEPARATE_Pos 0U /*!< MPU TYPE: SEPARATE Position */ +#define MPU_TYPE_SEPARATE_Msk (1UL /*<< MPU_TYPE_SEPARATE_Pos*/) /*!< MPU TYPE: SEPARATE Mask */ + +/* MPU Control Register Definitions */ +#define MPU_CTRL_PRIVDEFENA_Pos 2U /*!< MPU CTRL: PRIVDEFENA Position */ +#define MPU_CTRL_PRIVDEFENA_Msk (1UL << MPU_CTRL_PRIVDEFENA_Pos) /*!< MPU CTRL: PRIVDEFENA Mask */ + +#define MPU_CTRL_HFNMIENA_Pos 1U /*!< MPU CTRL: HFNMIENA Position */ +#define MPU_CTRL_HFNMIENA_Msk (1UL << MPU_CTRL_HFNMIENA_Pos) /*!< MPU CTRL: HFNMIENA Mask */ + +#define MPU_CTRL_ENABLE_Pos 0U /*!< MPU CTRL: ENABLE Position */ +#define MPU_CTRL_ENABLE_Msk (1UL /*<< MPU_CTRL_ENABLE_Pos*/) /*!< MPU CTRL: ENABLE Mask */ + +/* MPU Region Number Register Definitions */ +#define MPU_RNR_REGION_Pos 0U /*!< MPU RNR: REGION Position */ +#define MPU_RNR_REGION_Msk (0xFFUL /*<< MPU_RNR_REGION_Pos*/) /*!< MPU RNR: REGION Mask */ + +/* MPU Region Base Address Register Definitions */ +#define MPU_RBAR_ADDR_Pos 5U /*!< MPU RBAR: ADDR Position */ +#define MPU_RBAR_ADDR_Msk (0x7FFFFFFUL << MPU_RBAR_ADDR_Pos) /*!< MPU RBAR: ADDR Mask */ + +#define MPU_RBAR_VALID_Pos 4U /*!< MPU RBAR: VALID Position */ +#define MPU_RBAR_VALID_Msk (1UL << MPU_RBAR_VALID_Pos) /*!< MPU RBAR: VALID Mask */ + +#define MPU_RBAR_REGION_Pos 0U /*!< MPU RBAR: REGION Position */ +#define MPU_RBAR_REGION_Msk (0xFUL /*<< MPU_RBAR_REGION_Pos*/) /*!< MPU RBAR: REGION Mask */ + +/* MPU Region Attribute and Size Register Definitions */ +#define MPU_RASR_ATTRS_Pos 16U /*!< MPU RASR: MPU Region Attribute field Position */ +#define MPU_RASR_ATTRS_Msk (0xFFFFUL << MPU_RASR_ATTRS_Pos) /*!< MPU RASR: MPU Region Attribute field Mask */ + +#define MPU_RASR_XN_Pos 28U /*!< MPU RASR: ATTRS.XN Position */ +#define MPU_RASR_XN_Msk (1UL << MPU_RASR_XN_Pos) /*!< MPU RASR: ATTRS.XN Mask */ + +#define MPU_RASR_AP_Pos 24U /*!< MPU RASR: ATTRS.AP Position */ +#define MPU_RASR_AP_Msk (0x7UL << MPU_RASR_AP_Pos) /*!< MPU RASR: ATTRS.AP Mask */ + +#define MPU_RASR_TEX_Pos 19U /*!< MPU RASR: ATTRS.TEX Position */ +#define MPU_RASR_TEX_Msk (0x7UL << MPU_RASR_TEX_Pos) /*!< MPU RASR: ATTRS.TEX Mask */ + +#define MPU_RASR_S_Pos 18U /*!< MPU RASR: ATTRS.S Position */ +#define MPU_RASR_S_Msk (1UL << MPU_RASR_S_Pos) /*!< MPU RASR: ATTRS.S Mask */ + +#define MPU_RASR_C_Pos 17U /*!< MPU RASR: ATTRS.C Position */ +#define MPU_RASR_C_Msk (1UL << MPU_RASR_C_Pos) /*!< MPU RASR: ATTRS.C Mask */ + +#define MPU_RASR_B_Pos 16U /*!< MPU RASR: ATTRS.B Position */ +#define MPU_RASR_B_Msk (1UL << MPU_RASR_B_Pos) /*!< MPU RASR: ATTRS.B Mask */ + +#define MPU_RASR_SRD_Pos 8U /*!< MPU RASR: Sub-Region Disable Position */ +#define MPU_RASR_SRD_Msk (0xFFUL << MPU_RASR_SRD_Pos) /*!< MPU RASR: Sub-Region Disable Mask */ + +#define MPU_RASR_SIZE_Pos 1U /*!< MPU RASR: Region Size Field Position */ +#define MPU_RASR_SIZE_Msk (0x1FUL << MPU_RASR_SIZE_Pos) /*!< MPU RASR: Region Size Field Mask */ + +#define MPU_RASR_ENABLE_Pos 0U /*!< MPU RASR: Region enable bit Position */ +#define MPU_RASR_ENABLE_Msk (1UL /*<< MPU_RASR_ENABLE_Pos*/) /*!< MPU RASR: Region enable bit Disable Mask */ + +/*@} end of group CMSIS_MPU */ +#endif /* defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_FPU Floating Point Unit (FPU) + \brief Type definitions for the Floating Point Unit (FPU) + @{ + */ + +/** + \brief Structure type to access the Floating Point Unit (FPU). + */ +typedef struct +{ + uint32_t RESERVED0[1U]; + __IOM uint32_t FPCCR; /*!< Offset: 0x004 (R/W) Floating-Point Context Control Register */ + __IOM uint32_t FPCAR; /*!< Offset: 0x008 (R/W) Floating-Point Context Address Register */ + __IOM uint32_t FPDSCR; /*!< Offset: 0x00C (R/W) Floating-Point Default Status Control Register */ + __IM uint32_t MVFR0; /*!< Offset: 0x010 (R/ ) Media and FP Feature Register 0 */ + __IM uint32_t MVFR1; /*!< Offset: 0x014 (R/ ) Media and FP Feature Register 1 */ + __IM uint32_t MVFR2; /*!< Offset: 0x018 (R/ ) Media and FP Feature Register 2 */ +} FPU_Type; + +/* Floating-Point Context Control Register Definitions */ +#define FPU_FPCCR_ASPEN_Pos 31U /*!< FPCCR: ASPEN bit Position */ +#define FPU_FPCCR_ASPEN_Msk (1UL << FPU_FPCCR_ASPEN_Pos) /*!< FPCCR: ASPEN bit Mask */ + +#define FPU_FPCCR_LSPEN_Pos 30U /*!< FPCCR: LSPEN Position */ +#define FPU_FPCCR_LSPEN_Msk (1UL << FPU_FPCCR_LSPEN_Pos) /*!< FPCCR: LSPEN bit Mask */ + +#define FPU_FPCCR_MONRDY_Pos 8U /*!< FPCCR: MONRDY Position */ +#define FPU_FPCCR_MONRDY_Msk (1UL << FPU_FPCCR_MONRDY_Pos) /*!< FPCCR: MONRDY bit Mask */ + +#define FPU_FPCCR_BFRDY_Pos 6U /*!< FPCCR: BFRDY Position */ +#define FPU_FPCCR_BFRDY_Msk (1UL << FPU_FPCCR_BFRDY_Pos) /*!< FPCCR: BFRDY bit Mask */ + +#define FPU_FPCCR_MMRDY_Pos 5U /*!< FPCCR: MMRDY Position */ +#define FPU_FPCCR_MMRDY_Msk (1UL << FPU_FPCCR_MMRDY_Pos) /*!< FPCCR: MMRDY bit Mask */ + +#define FPU_FPCCR_HFRDY_Pos 4U /*!< FPCCR: HFRDY Position */ +#define FPU_FPCCR_HFRDY_Msk (1UL << FPU_FPCCR_HFRDY_Pos) /*!< FPCCR: HFRDY bit Mask */ + +#define FPU_FPCCR_THREAD_Pos 3U /*!< FPCCR: processor mode bit Position */ +#define FPU_FPCCR_THREAD_Msk (1UL << FPU_FPCCR_THREAD_Pos) /*!< FPCCR: processor mode active bit Mask */ + +#define FPU_FPCCR_USER_Pos 1U /*!< FPCCR: privilege level bit Position */ +#define FPU_FPCCR_USER_Msk (1UL << FPU_FPCCR_USER_Pos) /*!< FPCCR: privilege level bit Mask */ + +#define FPU_FPCCR_LSPACT_Pos 0U /*!< FPCCR: Lazy state preservation active bit Position */ +#define FPU_FPCCR_LSPACT_Msk (1UL /*<< FPU_FPCCR_LSPACT_Pos*/) /*!< FPCCR: Lazy state preservation active bit Mask */ + +/* Floating-Point Context Address Register Definitions */ +#define FPU_FPCAR_ADDRESS_Pos 3U /*!< FPCAR: ADDRESS bit Position */ +#define FPU_FPCAR_ADDRESS_Msk (0x1FFFFFFFUL << FPU_FPCAR_ADDRESS_Pos) /*!< FPCAR: ADDRESS bit Mask */ + +/* Floating-Point Default Status Control Register Definitions */ +#define FPU_FPDSCR_AHP_Pos 26U /*!< FPDSCR: AHP bit Position */ +#define FPU_FPDSCR_AHP_Msk (1UL << FPU_FPDSCR_AHP_Pos) /*!< FPDSCR: AHP bit Mask */ + +#define FPU_FPDSCR_DN_Pos 25U /*!< FPDSCR: DN bit Position */ +#define FPU_FPDSCR_DN_Msk (1UL << FPU_FPDSCR_DN_Pos) /*!< FPDSCR: DN bit Mask */ + +#define FPU_FPDSCR_FZ_Pos 24U /*!< FPDSCR: FZ bit Position */ +#define FPU_FPDSCR_FZ_Msk (1UL << FPU_FPDSCR_FZ_Pos) /*!< FPDSCR: FZ bit Mask */ + +#define FPU_FPDSCR_RMode_Pos 22U /*!< FPDSCR: RMode bit Position */ +#define FPU_FPDSCR_RMode_Msk (3UL << FPU_FPDSCR_RMode_Pos) /*!< FPDSCR: RMode bit Mask */ + +/* Media and FP Feature Register 0 Definitions */ +#define FPU_MVFR0_FP_rounding_modes_Pos 28U /*!< MVFR0: FP rounding modes bits Position */ +#define FPU_MVFR0_FP_rounding_modes_Msk (0xFUL << FPU_MVFR0_FP_rounding_modes_Pos) /*!< MVFR0: FP rounding modes bits Mask */ + +#define FPU_MVFR0_Short_vectors_Pos 24U /*!< MVFR0: Short vectors bits Position */ +#define FPU_MVFR0_Short_vectors_Msk (0xFUL << FPU_MVFR0_Short_vectors_Pos) /*!< MVFR0: Short vectors bits Mask */ + +#define FPU_MVFR0_Square_root_Pos 20U /*!< MVFR0: Square root bits Position */ +#define FPU_MVFR0_Square_root_Msk (0xFUL << FPU_MVFR0_Square_root_Pos) /*!< MVFR0: Square root bits Mask */ + +#define FPU_MVFR0_Divide_Pos 16U /*!< MVFR0: Divide bits Position */ +#define FPU_MVFR0_Divide_Msk (0xFUL << FPU_MVFR0_Divide_Pos) /*!< MVFR0: Divide bits Mask */ + +#define FPU_MVFR0_FP_excep_trapping_Pos 12U /*!< MVFR0: FP exception trapping bits Position */ +#define FPU_MVFR0_FP_excep_trapping_Msk (0xFUL << FPU_MVFR0_FP_excep_trapping_Pos) /*!< MVFR0: FP exception trapping bits Mask */ + +#define FPU_MVFR0_Double_precision_Pos 8U /*!< MVFR0: Double-precision bits Position */ +#define FPU_MVFR0_Double_precision_Msk (0xFUL << FPU_MVFR0_Double_precision_Pos) /*!< MVFR0: Double-precision bits Mask */ + +#define FPU_MVFR0_Single_precision_Pos 4U /*!< MVFR0: Single-precision bits Position */ +#define FPU_MVFR0_Single_precision_Msk (0xFUL << FPU_MVFR0_Single_precision_Pos) /*!< MVFR0: Single-precision bits Mask */ + +#define FPU_MVFR0_A_SIMD_registers_Pos 0U /*!< MVFR0: A_SIMD registers bits Position */ +#define FPU_MVFR0_A_SIMD_registers_Msk (0xFUL /*<< FPU_MVFR0_A_SIMD_registers_Pos*/) /*!< MVFR0: A_SIMD registers bits Mask */ + +/* Media and FP Feature Register 1 Definitions */ +#define FPU_MVFR1_FP_fused_MAC_Pos 28U /*!< MVFR1: FP fused MAC bits Position */ +#define FPU_MVFR1_FP_fused_MAC_Msk (0xFUL << FPU_MVFR1_FP_fused_MAC_Pos) /*!< MVFR1: FP fused MAC bits Mask */ + +#define FPU_MVFR1_FP_HPFP_Pos 24U /*!< MVFR1: FP HPFP bits Position */ +#define FPU_MVFR1_FP_HPFP_Msk (0xFUL << FPU_MVFR1_FP_HPFP_Pos) /*!< MVFR1: FP HPFP bits Mask */ + +#define FPU_MVFR1_D_NaN_mode_Pos 4U /*!< MVFR1: D_NaN mode bits Position */ +#define FPU_MVFR1_D_NaN_mode_Msk (0xFUL << FPU_MVFR1_D_NaN_mode_Pos) /*!< MVFR1: D_NaN mode bits Mask */ + +#define FPU_MVFR1_FtZ_mode_Pos 0U /*!< MVFR1: FtZ mode bits Position */ +#define FPU_MVFR1_FtZ_mode_Msk (0xFUL /*<< FPU_MVFR1_FtZ_mode_Pos*/) /*!< MVFR1: FtZ mode bits Mask */ + +/* Media and FP Feature Register 2 Definitions */ + +#define FPU_MVFR2_VFP_Misc_Pos 4U /*!< MVFR2: VFP Misc bits Position */ +#define FPU_MVFR2_VFP_Misc_Msk (0xFUL << FPU_MVFR2_VFP_Misc_Pos) /*!< MVFR2: VFP Misc bits Mask */ + +/*@} end of group CMSIS_FPU */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CoreDebug Core Debug Registers (CoreDebug) + \brief Type definitions for the Core Debug Registers + @{ + */ + +/** + \brief Structure type to access the Core Debug Register (CoreDebug). + */ +typedef struct +{ + __IOM uint32_t DHCSR; /*!< Offset: 0x000 (R/W) Debug Halting Control and Status Register */ + __OM uint32_t DCRSR; /*!< Offset: 0x004 ( /W) Debug Core Register Selector Register */ + __IOM uint32_t DCRDR; /*!< Offset: 0x008 (R/W) Debug Core Register Data Register */ + __IOM uint32_t DEMCR; /*!< Offset: 0x00C (R/W) Debug Exception and Monitor Control Register */ +} CoreDebug_Type; + +/* Debug Halting Control and Status Register Definitions */ +#define CoreDebug_DHCSR_DBGKEY_Pos 16U /*!< CoreDebug DHCSR: DBGKEY Position */ +#define CoreDebug_DHCSR_DBGKEY_Msk (0xFFFFUL << CoreDebug_DHCSR_DBGKEY_Pos) /*!< CoreDebug DHCSR: DBGKEY Mask */ + +#define CoreDebug_DHCSR_S_RESET_ST_Pos 25U /*!< CoreDebug DHCSR: S_RESET_ST Position */ +#define CoreDebug_DHCSR_S_RESET_ST_Msk (1UL << CoreDebug_DHCSR_S_RESET_ST_Pos) /*!< CoreDebug DHCSR: S_RESET_ST Mask */ + +#define CoreDebug_DHCSR_S_RETIRE_ST_Pos 24U /*!< CoreDebug DHCSR: S_RETIRE_ST Position */ +#define CoreDebug_DHCSR_S_RETIRE_ST_Msk (1UL << CoreDebug_DHCSR_S_RETIRE_ST_Pos) /*!< CoreDebug DHCSR: S_RETIRE_ST Mask */ + +#define CoreDebug_DHCSR_S_LOCKUP_Pos 19U /*!< CoreDebug DHCSR: S_LOCKUP Position */ +#define CoreDebug_DHCSR_S_LOCKUP_Msk (1UL << CoreDebug_DHCSR_S_LOCKUP_Pos) /*!< CoreDebug DHCSR: S_LOCKUP Mask */ + +#define CoreDebug_DHCSR_S_SLEEP_Pos 18U /*!< CoreDebug DHCSR: S_SLEEP Position */ +#define CoreDebug_DHCSR_S_SLEEP_Msk (1UL << CoreDebug_DHCSR_S_SLEEP_Pos) /*!< CoreDebug DHCSR: S_SLEEP Mask */ + +#define CoreDebug_DHCSR_S_HALT_Pos 17U /*!< CoreDebug DHCSR: S_HALT Position */ +#define CoreDebug_DHCSR_S_HALT_Msk (1UL << CoreDebug_DHCSR_S_HALT_Pos) /*!< CoreDebug DHCSR: S_HALT Mask */ + +#define CoreDebug_DHCSR_S_REGRDY_Pos 16U /*!< CoreDebug DHCSR: S_REGRDY Position */ +#define CoreDebug_DHCSR_S_REGRDY_Msk (1UL << CoreDebug_DHCSR_S_REGRDY_Pos) /*!< CoreDebug DHCSR: S_REGRDY Mask */ + +#define CoreDebug_DHCSR_C_SNAPSTALL_Pos 5U /*!< CoreDebug DHCSR: C_SNAPSTALL Position */ +#define CoreDebug_DHCSR_C_SNAPSTALL_Msk (1UL << CoreDebug_DHCSR_C_SNAPSTALL_Pos) /*!< CoreDebug DHCSR: C_SNAPSTALL Mask */ + +#define CoreDebug_DHCSR_C_MASKINTS_Pos 3U /*!< CoreDebug DHCSR: C_MASKINTS Position */ +#define CoreDebug_DHCSR_C_MASKINTS_Msk (1UL << CoreDebug_DHCSR_C_MASKINTS_Pos) /*!< CoreDebug DHCSR: C_MASKINTS Mask */ + +#define CoreDebug_DHCSR_C_STEP_Pos 2U /*!< CoreDebug DHCSR: C_STEP Position */ +#define CoreDebug_DHCSR_C_STEP_Msk (1UL << CoreDebug_DHCSR_C_STEP_Pos) /*!< CoreDebug DHCSR: C_STEP Mask */ + +#define CoreDebug_DHCSR_C_HALT_Pos 1U /*!< CoreDebug DHCSR: C_HALT Position */ +#define CoreDebug_DHCSR_C_HALT_Msk (1UL << CoreDebug_DHCSR_C_HALT_Pos) /*!< CoreDebug DHCSR: C_HALT Mask */ + +#define CoreDebug_DHCSR_C_DEBUGEN_Pos 0U /*!< CoreDebug DHCSR: C_DEBUGEN Position */ +#define CoreDebug_DHCSR_C_DEBUGEN_Msk (1UL /*<< CoreDebug_DHCSR_C_DEBUGEN_Pos*/) /*!< CoreDebug DHCSR: C_DEBUGEN Mask */ + +/* Debug Core Register Selector Register Definitions */ +#define CoreDebug_DCRSR_REGWnR_Pos 16U /*!< CoreDebug DCRSR: REGWnR Position */ +#define CoreDebug_DCRSR_REGWnR_Msk (1UL << CoreDebug_DCRSR_REGWnR_Pos) /*!< CoreDebug DCRSR: REGWnR Mask */ + +#define CoreDebug_DCRSR_REGSEL_Pos 0U /*!< CoreDebug DCRSR: REGSEL Position */ +#define CoreDebug_DCRSR_REGSEL_Msk (0x1FUL /*<< CoreDebug_DCRSR_REGSEL_Pos*/) /*!< CoreDebug DCRSR: REGSEL Mask */ + +/* Debug Exception and Monitor Control Register Definitions */ +#define CoreDebug_DEMCR_TRCENA_Pos 24U /*!< CoreDebug DEMCR: TRCENA Position */ +#define CoreDebug_DEMCR_TRCENA_Msk (1UL << CoreDebug_DEMCR_TRCENA_Pos) /*!< CoreDebug DEMCR: TRCENA Mask */ + +#define CoreDebug_DEMCR_MON_REQ_Pos 19U /*!< CoreDebug DEMCR: MON_REQ Position */ +#define CoreDebug_DEMCR_MON_REQ_Msk (1UL << CoreDebug_DEMCR_MON_REQ_Pos) /*!< CoreDebug DEMCR: MON_REQ Mask */ + +#define CoreDebug_DEMCR_MON_STEP_Pos 18U /*!< CoreDebug DEMCR: MON_STEP Position */ +#define CoreDebug_DEMCR_MON_STEP_Msk (1UL << CoreDebug_DEMCR_MON_STEP_Pos) /*!< CoreDebug DEMCR: MON_STEP Mask */ + +#define CoreDebug_DEMCR_MON_PEND_Pos 17U /*!< CoreDebug DEMCR: MON_PEND Position */ +#define CoreDebug_DEMCR_MON_PEND_Msk (1UL << CoreDebug_DEMCR_MON_PEND_Pos) /*!< CoreDebug DEMCR: MON_PEND Mask */ + +#define CoreDebug_DEMCR_MON_EN_Pos 16U /*!< CoreDebug DEMCR: MON_EN Position */ +#define CoreDebug_DEMCR_MON_EN_Msk (1UL << CoreDebug_DEMCR_MON_EN_Pos) /*!< CoreDebug DEMCR: MON_EN Mask */ + +#define CoreDebug_DEMCR_VC_HARDERR_Pos 10U /*!< CoreDebug DEMCR: VC_HARDERR Position */ +#define CoreDebug_DEMCR_VC_HARDERR_Msk (1UL << CoreDebug_DEMCR_VC_HARDERR_Pos) /*!< CoreDebug DEMCR: VC_HARDERR Mask */ + +#define CoreDebug_DEMCR_VC_INTERR_Pos 9U /*!< CoreDebug DEMCR: VC_INTERR Position */ +#define CoreDebug_DEMCR_VC_INTERR_Msk (1UL << CoreDebug_DEMCR_VC_INTERR_Pos) /*!< CoreDebug DEMCR: VC_INTERR Mask */ + +#define CoreDebug_DEMCR_VC_BUSERR_Pos 8U /*!< CoreDebug DEMCR: VC_BUSERR Position */ +#define CoreDebug_DEMCR_VC_BUSERR_Msk (1UL << CoreDebug_DEMCR_VC_BUSERR_Pos) /*!< CoreDebug DEMCR: VC_BUSERR Mask */ + +#define CoreDebug_DEMCR_VC_STATERR_Pos 7U /*!< CoreDebug DEMCR: VC_STATERR Position */ +#define CoreDebug_DEMCR_VC_STATERR_Msk (1UL << CoreDebug_DEMCR_VC_STATERR_Pos) /*!< CoreDebug DEMCR: VC_STATERR Mask */ + +#define CoreDebug_DEMCR_VC_CHKERR_Pos 6U /*!< CoreDebug DEMCR: VC_CHKERR Position */ +#define CoreDebug_DEMCR_VC_CHKERR_Msk (1UL << CoreDebug_DEMCR_VC_CHKERR_Pos) /*!< CoreDebug DEMCR: VC_CHKERR Mask */ + +#define CoreDebug_DEMCR_VC_NOCPERR_Pos 5U /*!< CoreDebug DEMCR: VC_NOCPERR Position */ +#define CoreDebug_DEMCR_VC_NOCPERR_Msk (1UL << CoreDebug_DEMCR_VC_NOCPERR_Pos) /*!< CoreDebug DEMCR: VC_NOCPERR Mask */ + +#define CoreDebug_DEMCR_VC_MMERR_Pos 4U /*!< CoreDebug DEMCR: VC_MMERR Position */ +#define CoreDebug_DEMCR_VC_MMERR_Msk (1UL << CoreDebug_DEMCR_VC_MMERR_Pos) /*!< CoreDebug DEMCR: VC_MMERR Mask */ + +#define CoreDebug_DEMCR_VC_CORERESET_Pos 0U /*!< CoreDebug DEMCR: VC_CORERESET Position */ +#define CoreDebug_DEMCR_VC_CORERESET_Msk (1UL /*<< CoreDebug_DEMCR_VC_CORERESET_Pos*/) /*!< CoreDebug DEMCR: VC_CORERESET Mask */ + +/*@} end of group CMSIS_CoreDebug */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_bitfield Core register bit field macros + \brief Macros for use with bit field definitions (xxx_Pos, xxx_Msk). + @{ + */ + +/** + \brief Mask and shift a bit field value for use in a register bit range. + \param[in] field Name of the register bit field. + \param[in] value Value of the bit field. This parameter is interpreted as an uint32_t type. + \return Masked and shifted value. +*/ +#define _VAL2FLD(field, value) (((uint32_t)(value) << field ## _Pos) & field ## _Msk) + +/** + \brief Mask and shift a register value to extract a bit filed value. + \param[in] field Name of the register bit field. + \param[in] value Value of register. This parameter is interpreted as an uint32_t type. + \return Masked and shifted bit field value. +*/ +#define _FLD2VAL(field, value) (((uint32_t)(value) & field ## _Msk) >> field ## _Pos) + +/*@} end of group CMSIS_core_bitfield */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_base Core Definitions + \brief Definitions for base addresses, unions, and structures. + @{ + */ + +/* Memory mapping of Core Hardware */ +#define SCS_BASE (0xE000E000UL) /*!< System Control Space Base Address */ +#define ITM_BASE (0xE0000000UL) /*!< ITM Base Address */ +#define DWT_BASE (0xE0001000UL) /*!< DWT Base Address */ +#define TPI_BASE (0xE0040000UL) /*!< TPI Base Address */ +#define CoreDebug_BASE (0xE000EDF0UL) /*!< Core Debug Base Address */ +#define SysTick_BASE (SCS_BASE + 0x0010UL) /*!< SysTick Base Address */ +#define NVIC_BASE (SCS_BASE + 0x0100UL) /*!< NVIC Base Address */ +#define SCB_BASE (SCS_BASE + 0x0D00UL) /*!< System Control Block Base Address */ + +#define SCnSCB ((SCnSCB_Type *) SCS_BASE ) /*!< System control Register not in SCB */ +#define SCB ((SCB_Type *) SCB_BASE ) /*!< SCB configuration struct */ +#define SysTick ((SysTick_Type *) SysTick_BASE ) /*!< SysTick configuration struct */ +#define NVIC ((NVIC_Type *) NVIC_BASE ) /*!< NVIC configuration struct */ +#define ITM ((ITM_Type *) ITM_BASE ) /*!< ITM configuration struct */ +#define DWT ((DWT_Type *) DWT_BASE ) /*!< DWT configuration struct */ +#define TPI ((TPI_Type *) TPI_BASE ) /*!< TPI configuration struct */ +#define CoreDebug ((CoreDebug_Type *) CoreDebug_BASE) /*!< Core Debug configuration struct */ + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + #define MPU_BASE (SCS_BASE + 0x0D90UL) /*!< Memory Protection Unit */ + #define MPU ((MPU_Type *) MPU_BASE ) /*!< Memory Protection Unit */ +#endif + +#define FPU_BASE (SCS_BASE + 0x0F30UL) /*!< Floating Point Unit */ +#define FPU ((FPU_Type *) FPU_BASE ) /*!< Floating Point Unit */ + +/*@} */ + + + +/******************************************************************************* + * Hardware Abstraction Layer + Core Function Interface contains: + - Core NVIC Functions + - Core SysTick Functions + - Core Debug Functions + - Core Register Access Functions + ******************************************************************************/ +/** + \defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference +*/ + + + +/* ########################## NVIC functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_NVICFunctions NVIC Functions + \brief Functions that manage interrupts and exceptions via the NVIC. + @{ + */ + +#ifdef CMSIS_NVIC_VIRTUAL + #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE + #define CMSIS_NVIC_VIRTUAL_HEADER_FILE "cmsis_nvic_virtual.h" + #endif + #include CMSIS_NVIC_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetPriorityGrouping __NVIC_SetPriorityGrouping + #define NVIC_GetPriorityGrouping __NVIC_GetPriorityGrouping + #define NVIC_EnableIRQ __NVIC_EnableIRQ + #define NVIC_GetEnableIRQ __NVIC_GetEnableIRQ + #define NVIC_DisableIRQ __NVIC_DisableIRQ + #define NVIC_GetPendingIRQ __NVIC_GetPendingIRQ + #define NVIC_SetPendingIRQ __NVIC_SetPendingIRQ + #define NVIC_ClearPendingIRQ __NVIC_ClearPendingIRQ + #define NVIC_GetActive __NVIC_GetActive + #define NVIC_SetPriority __NVIC_SetPriority + #define NVIC_GetPriority __NVIC_GetPriority + #define NVIC_SystemReset __NVIC_SystemReset +#endif /* CMSIS_NVIC_VIRTUAL */ + +#ifdef CMSIS_VECTAB_VIRTUAL + #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE + #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE "cmsis_vectab_virtual.h" + #endif + #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetVector __NVIC_SetVector + #define NVIC_GetVector __NVIC_GetVector +#endif /* (CMSIS_VECTAB_VIRTUAL) */ + +#define NVIC_USER_IRQ_OFFSET 16 + + +/* The following EXC_RETURN values are saved the LR on exception entry */ +#define EXC_RETURN_HANDLER (0xFFFFFFF1UL) /* return to Handler mode, uses MSP after return */ +#define EXC_RETURN_THREAD_MSP (0xFFFFFFF9UL) /* return to Thread mode, uses MSP after return */ +#define EXC_RETURN_THREAD_PSP (0xFFFFFFFDUL) /* return to Thread mode, uses PSP after return */ +#define EXC_RETURN_HANDLER_FPU (0xFFFFFFE1UL) /* return to Handler mode, uses MSP after return, restore floating-point state */ +#define EXC_RETURN_THREAD_MSP_FPU (0xFFFFFFE9UL) /* return to Thread mode, uses MSP after return, restore floating-point state */ +#define EXC_RETURN_THREAD_PSP_FPU (0xFFFFFFEDUL) /* return to Thread mode, uses PSP after return, restore floating-point state */ + + +/** + \brief Set Priority Grouping + \details Sets the priority grouping field using the required unlock sequence. + The parameter PriorityGroup is assigned to the field SCB->AIRCR [10:8] PRIGROUP field. + Only values from 0..7 are used. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Priority grouping field. + */ +__STATIC_INLINE void __NVIC_SetPriorityGrouping(uint32_t PriorityGroup) +{ + uint32_t reg_value; + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + + reg_value = SCB->AIRCR; /* read old register configuration */ + reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change */ + reg_value = (reg_value | + ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (PriorityGroupTmp << SCB_AIRCR_PRIGROUP_Pos) ); /* Insert write key and priority group */ + SCB->AIRCR = reg_value; +} + + +/** + \brief Get Priority Grouping + \details Reads the priority grouping field from the NVIC Interrupt Controller. + \return Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field). + */ +__STATIC_INLINE uint32_t __NVIC_GetPriorityGrouping(void) +{ + return ((uint32_t)((SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos)); +} + + +/** + \brief Enable Interrupt + \details Enables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + __COMPILER_BARRIER(); + NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __COMPILER_BARRIER(); + } +} + + +/** + \brief Get Interrupt Enable status + \details Returns a device specific interrupt enable status from the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt is not enabled. + \return 1 Interrupt is enabled. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Disable Interrupt + \details Disables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_DisableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __DSB(); + __ISB(); + } +} + + +/** + \brief Get Pending Interrupt + \details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not pending. + \return 1 Interrupt status is pending. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Pending Interrupt + \details Sets the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Clear Pending Interrupt + \details Clears the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Active Interrupt + \details Reads the active register in the NVIC and returns the active bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not active. + \return 1 Interrupt status is active. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetActive(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Interrupt Priority + \details Sets the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \param [in] priority Priority to set. + \note The priority cannot be set for every processor exception. + */ +__STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->IP[((uint32_t)IRQn)] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } + else + { + SCB->SHP[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } +} + + +/** + \brief Get Interrupt Priority + \details Reads the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Interrupt Priority. + Value is aligned automatically to the implemented priority bits of the microcontroller. + */ +__STATIC_INLINE uint32_t __NVIC_GetPriority(IRQn_Type IRQn) +{ + + if ((int32_t)(IRQn) >= 0) + { + return(((uint32_t)NVIC->IP[((uint32_t)IRQn)] >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return(((uint32_t)SCB->SHP[(((uint32_t)IRQn) & 0xFUL)-4UL] >> (8U - __NVIC_PRIO_BITS))); + } +} + + +/** + \brief Encode Priority + \details Encodes the priority for an interrupt with the given priority group, + preemptive priority value, and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Used priority group. + \param [in] PreemptPriority Preemptive priority value (starting from 0). + \param [in] SubPriority Subpriority value (starting from 0). + \return Encoded priority. Value can be used in the function \ref NVIC_SetPriority(). + */ +__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + return ( + ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) | + ((SubPriority & (uint32_t)((1UL << (SubPriorityBits )) - 1UL))) + ); +} + + +/** + \brief Decode Priority + \details Decodes an interrupt priority value with a given priority group to + preemptive priority value and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set. + \param [in] Priority Priority value, which can be retrieved with the function \ref NVIC_GetPriority(). + \param [in] PriorityGroup Used priority group. + \param [out] pPreemptPriority Preemptive priority value (starting from 0). + \param [out] pSubPriority Subpriority value (starting from 0). + */ +__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* const pPreemptPriority, uint32_t* const pSubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + *pPreemptPriority = (Priority >> SubPriorityBits) & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL); + *pSubPriority = (Priority ) & (uint32_t)((1UL << (SubPriorityBits )) - 1UL); +} + + +/** + \brief Set Interrupt Vector + \details Sets an interrupt vector in SRAM based interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + VTOR must been relocated to SRAM before. + \param [in] IRQn Interrupt number + \param [in] vector Address of interrupt handler function + */ +__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector) +{ + uint32_t *vectors = (uint32_t *)SCB->VTOR; + vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET] = vector; + /* ARM Application Note 321 states that the M4 does not require the architectural barrier */ +} + + +/** + \brief Get Interrupt Vector + \details Reads an interrupt vector from interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Address of interrupt handler function + */ +__STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn) +{ + uint32_t *vectors = (uint32_t *)SCB->VTOR; + return vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET]; +} + + +/** + \brief System Reset + \details Initiates a system reset request to reset the MCU. + */ +__NO_RETURN __STATIC_INLINE void __NVIC_SystemReset(void) +{ + __DSB(); /* Ensure all outstanding memory accesses included + buffered write are completed before reset */ + SCB->AIRCR = (uint32_t)((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) | + SCB_AIRCR_SYSRESETREQ_Msk ); /* Keep priority group unchanged */ + __DSB(); /* Ensure completion of memory access */ + + for(;;) /* wait until reset */ + { + __NOP(); + } +} + +/*@} end of CMSIS_Core_NVICFunctions */ + + +/* ########################## MPU functions #################################### */ + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + +#include "mpu_armv7.h" + +#endif + + +/* ########################## FPU functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_FpuFunctions FPU Functions + \brief Function that provides FPU type. + @{ + */ + +/** + \brief get FPU type + \details returns the FPU type + \returns + - \b 0: No FPU + - \b 1: Single precision FPU + - \b 2: Double + Single precision FPU + */ +__STATIC_INLINE uint32_t SCB_GetFPUType(void) +{ + uint32_t mvfr0; + + mvfr0 = FPU->MVFR0; + if ((mvfr0 & (FPU_MVFR0_Single_precision_Msk | FPU_MVFR0_Double_precision_Msk)) == 0x020U) + { + return 1U; /* Single precision FPU */ + } + else + { + return 0U; /* No FPU */ + } +} + + +/*@} end of CMSIS_Core_FpuFunctions */ + + + +/* ################################## SysTick function ############################################ */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SysTickFunctions SysTick Functions + \brief Functions that configure the System. + @{ + */ + +#if defined (__Vendor_SysTickConfig) && (__Vendor_SysTickConfig == 0U) + +/** + \brief System Tick Configuration + \details Initializes the System Timer and its interrupt, and starts the System Tick Timer. + Counter is in free running mode to generate periodic interrupts. + \param [in] ticks Number of ticks between two interrupts. + \return 0 Function succeeded. + \return 1 Function failed. + \note When the variable __Vendor_SysTickConfig is set to 1, then the + function SysTick_Config is not included. In this case, the file device.h + must contain a vendor-specific implementation of this function. + */ +__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks) +{ + if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) + { + return (1UL); /* Reload value impossible */ + } + + SysTick->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ + NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ + SysTick->VAL = 0UL; /* Load the SysTick Counter Value */ + SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0UL); /* Function successful */ +} + +#endif + +/*@} end of CMSIS_Core_SysTickFunctions */ + + + +/* ##################################### Debug In/Output function ########################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_core_DebugFunctions ITM Functions + \brief Functions that access the ITM debug interface. + @{ + */ + +extern volatile int32_t ITM_RxBuffer; /*!< External variable to receive characters. */ +#define ITM_RXBUFFER_EMPTY ((int32_t)0x5AA55AA5U) /*!< Value identifying \ref ITM_RxBuffer is ready for next character. */ + + +/** + \brief ITM Send Character + \details Transmits a character via the ITM channel 0, and + \li Just returns when no debugger is connected that has booked the output. + \li Is blocking when a debugger is connected, but the previous character sent has not been transmitted. + \param [in] ch Character to transmit. + \returns Character to transmit. + */ +__STATIC_INLINE uint32_t ITM_SendChar (uint32_t ch) +{ + if (((ITM->TCR & ITM_TCR_ITMENA_Msk) != 0UL) && /* ITM enabled */ + ((ITM->TER & 1UL ) != 0UL) ) /* ITM Port #0 enabled */ + { + while (ITM->PORT[0U].u32 == 0UL) + { + __NOP(); + } + ITM->PORT[0U].u8 = (uint8_t)ch; + } + return (ch); +} + + +/** + \brief ITM Receive Character + \details Inputs a character via the external variable \ref ITM_RxBuffer. + \return Received character. + \return -1 No character pending. + */ +__STATIC_INLINE int32_t ITM_ReceiveChar (void) +{ + int32_t ch = -1; /* no character available */ + + if (ITM_RxBuffer != ITM_RXBUFFER_EMPTY) + { + ch = ITM_RxBuffer; + ITM_RxBuffer = ITM_RXBUFFER_EMPTY; /* ready for next character */ + } + + return (ch); +} + + +/** + \brief ITM Check Character + \details Checks whether a character is pending for reading in the variable \ref ITM_RxBuffer. + \return 0 No character available. + \return 1 Character available. + */ +__STATIC_INLINE int32_t ITM_CheckChar (void) +{ + + if (ITM_RxBuffer == ITM_RXBUFFER_EMPTY) + { + return (0); /* no character available */ + } + else + { + return (1); /* character available */ + } +} + +/*@} end of CMSIS_core_DebugFunctions */ + + + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_CM4_H_DEPENDANT */ + +#endif /* __CMSIS_GENERIC */ diff --git a/bsp/renesas/ra8m1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm55.h b/bsp/renesas/ra8m1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm55.h new file mode 100644 index 000000000000..faa30ce36a98 --- /dev/null +++ b/bsp/renesas/ra8m1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm55.h @@ -0,0 +1,4817 @@ +/**************************************************************************//** + * @file core_cm55.h + * @brief CMSIS Cortex-M55 Core Peripheral Access Layer Header File + * @version V1.2.4 + * @date 21. April 2022 + ******************************************************************************/ +/* + * Copyright (c) 2018-2022 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#elif defined (__clang__) + #pragma clang system_header /* treat file as system include file */ +#elif defined ( __GNUC__ ) + #pragma GCC diagnostic ignored "-Wpedantic" /* disable pedantic warning due to unnamed structs/unions */ +#endif + +#ifndef __CORE_CM55_H_GENERIC +#define __CORE_CM55_H_GENERIC + +#include + +#ifdef __cplusplus + extern "C" { +#endif + +/** + \page CMSIS_MISRA_Exceptions MISRA-C:2004 Compliance Exceptions + CMSIS violates the following MISRA-C:2004 rules: + + \li Required Rule 8.5, object/function definition in header file.
+ Function definitions in header files are used to allow 'inlining'. + + \li Required Rule 18.4, declaration of union type or object of union type: '{...}'.
+ Unions are used for effective representation of core registers. + + \li Advisory Rule 19.7, Function-like macro defined.
+ Function-like macros are used to allow more efficient code. + */ + + +/******************************************************************************* + * CMSIS definitions + ******************************************************************************/ +/** + \ingroup Cortex_M55 + @{ + */ + +#include "cmsis_version.h" + +/* CMSIS CM55 definitions */ +#define __CM55_CMSIS_VERSION_MAIN (__CM_CMSIS_VERSION_MAIN) /*!< \deprecated [31:16] CMSIS HAL main version */ +#define __CM55_CMSIS_VERSION_SUB (__CM_CMSIS_VERSION_SUB) /*!< \deprecated [15:0] CMSIS HAL sub version */ +#define __CM55_CMSIS_VERSION ((__CM55_CMSIS_VERSION_MAIN << 16U) | \ + __CM55_CMSIS_VERSION_SUB ) /*!< \deprecated CMSIS HAL version number */ + +#define __CORTEX_M (55U) /*!< Cortex-M Core */ + +#if defined ( __CC_ARM ) + #error Legacy Arm Compiler does not support Armv8.1-M target architecture. +#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) + #if defined __ARM_FP + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + + #if defined(__ARM_FEATURE_DSP) + #if defined(__DSP_PRESENT) && (__DSP_PRESENT == 1U) + #define __DSP_USED 1U + #else + #error "Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)" + #define __DSP_USED 0U + #endif + #else + #define __DSP_USED 0U + #endif + +#elif defined ( __GNUC__ ) + #if defined (__VFP_FP__) && !defined(__SOFTFP__) + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + + #if defined(__ARM_FEATURE_DSP) + #if defined(__DSP_PRESENT) && (__DSP_PRESENT == 1U) + #define __DSP_USED 1U + #else + #error "Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)" + #define __DSP_USED 0U + #endif + #else + #define __DSP_USED 0U + #endif + +#elif defined ( __ICCARM__ ) + #if defined __ARMVFP__ + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + + #if defined(__ARM_FEATURE_DSP) + #if defined(__DSP_PRESENT) && (__DSP_PRESENT == 1U) + #define __DSP_USED 1U + #else + #error "Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)" + #define __DSP_USED 0U + #endif + #else + #define __DSP_USED 0U + #endif + +#elif defined ( __TI_ARM__ ) + #if defined __TI_VFP_SUPPORT__ + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined ( __TASKING__ ) + #if defined __FPU_VFP__ + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined ( __CSMC__ ) + #if ( __CSMC__ & 0x400U) + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#endif + +#include "cmsis_compiler.h" /* CMSIS compiler specific defines */ + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_CM55_H_GENERIC */ + +#ifndef __CMSIS_GENERIC + +#ifndef __CORE_CM55_H_DEPENDANT +#define __CORE_CM55_H_DEPENDANT + +#ifdef __cplusplus + extern "C" { +#endif + +/* check device defines and use defaults */ +#if defined __CHECK_DEVICE_DEFINES + #ifndef __CM55_REV + #define __CM55_REV 0x0000U + #warning "__CM55_REV not defined in device header file; using default!" + #endif + + #ifndef __FPU_PRESENT + #define __FPU_PRESENT 0U + #warning "__FPU_PRESENT not defined in device header file; using default!" + #endif + + #if __FPU_PRESENT != 0U + #ifndef __FPU_DP + #define __FPU_DP 0U + #warning "__FPU_DP not defined in device header file; using default!" + #endif + #endif + + #ifndef __MPU_PRESENT + #define __MPU_PRESENT 0U + #warning "__MPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __ICACHE_PRESENT + #define __ICACHE_PRESENT 0U + #warning "__ICACHE_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __DCACHE_PRESENT + #define __DCACHE_PRESENT 0U + #warning "__DCACHE_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __VTOR_PRESENT + #define __VTOR_PRESENT 1U + #warning "__VTOR_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __PMU_PRESENT + #define __PMU_PRESENT 0U + #warning "__PMU_PRESENT not defined in device header file; using default!" + #endif + + #if __PMU_PRESENT != 0U + #ifndef __PMU_NUM_EVENTCNT + #define __PMU_NUM_EVENTCNT 8U + #warning "__PMU_NUM_EVENTCNT not defined in device header file; using default!" + #elif (__PMU_NUM_EVENTCNT > 8 || __PMU_NUM_EVENTCNT < 2) + #error "__PMU_NUM_EVENTCNT is out of range in device header file!" */ + #endif + #endif + + #ifndef __SAUREGION_PRESENT + #define __SAUREGION_PRESENT 0U + #warning "__SAUREGION_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __DSP_PRESENT + #define __DSP_PRESENT 0U + #warning "__DSP_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __NVIC_PRIO_BITS + #define __NVIC_PRIO_BITS 3U + #warning "__NVIC_PRIO_BITS not defined in device header file; using default!" + #endif + + #ifndef __Vendor_SysTickConfig + #define __Vendor_SysTickConfig 0U + #warning "__Vendor_SysTickConfig not defined in device header file; using default!" + #endif +#endif + +/* IO definitions (access restrictions to peripheral registers) */ +/** + \defgroup CMSIS_glob_defs CMSIS Global Defines + + IO Type Qualifiers are used + \li to specify the access to peripheral variables. + \li for automatic generation of peripheral register debug information. +*/ +#ifdef __cplusplus + #define __I volatile /*!< Defines 'read only' permissions */ +#else + #define __I volatile const /*!< Defines 'read only' permissions */ +#endif +#define __O volatile /*!< Defines 'write only' permissions */ +#define __IO volatile /*!< Defines 'read / write' permissions */ + +/* following defines should be used for structure members */ +#define __IM volatile const /*! Defines 'read only' structure member permissions */ +#define __OM volatile /*! Defines 'write only' structure member permissions */ +#define __IOM volatile /*! Defines 'read / write' structure member permissions */ + +/*@} end of group Cortex_M55 */ + + + +/******************************************************************************* + * Register Abstraction + Core Register contain: + - Core Register + - Core NVIC Register + - Core EWIC Register + - Core SCB Register + - Core SysTick Register + - Core Debug Register + - Core PMU Register + - Core MPU Register + - Core SAU Register + - Core FPU Register + ******************************************************************************/ +/** + \defgroup CMSIS_core_register Defines and Type Definitions + \brief Type definitions and defines for Cortex-M processor based devices. +*/ + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CORE Status and Control Registers + \brief Core Register type definitions. + @{ + */ + +/** + \brief Union type to access the Application Program Status Register (APSR). + */ +typedef union +{ + struct + { + uint32_t _reserved0:16; /*!< bit: 0..15 Reserved */ + uint32_t GE:4; /*!< bit: 16..19 Greater than or Equal flags */ + uint32_t _reserved1:7; /*!< bit: 20..26 Reserved */ + uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} APSR_Type; + +/* APSR Register Definitions */ +#define APSR_N_Pos 31U /*!< APSR: N Position */ +#define APSR_N_Msk (1UL << APSR_N_Pos) /*!< APSR: N Mask */ + +#define APSR_Z_Pos 30U /*!< APSR: Z Position */ +#define APSR_Z_Msk (1UL << APSR_Z_Pos) /*!< APSR: Z Mask */ + +#define APSR_C_Pos 29U /*!< APSR: C Position */ +#define APSR_C_Msk (1UL << APSR_C_Pos) /*!< APSR: C Mask */ + +#define APSR_V_Pos 28U /*!< APSR: V Position */ +#define APSR_V_Msk (1UL << APSR_V_Pos) /*!< APSR: V Mask */ + +#define APSR_Q_Pos 27U /*!< APSR: Q Position */ +#define APSR_Q_Msk (1UL << APSR_Q_Pos) /*!< APSR: Q Mask */ + +#define APSR_GE_Pos 16U /*!< APSR: GE Position */ +#define APSR_GE_Msk (0xFUL << APSR_GE_Pos) /*!< APSR: GE Mask */ + + +/** + \brief Union type to access the Interrupt Program Status Register (IPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:23; /*!< bit: 9..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} IPSR_Type; + +/* IPSR Register Definitions */ +#define IPSR_ISR_Pos 0U /*!< IPSR: ISR Position */ +#define IPSR_ISR_Msk (0x1FFUL /*<< IPSR_ISR_Pos*/) /*!< IPSR: ISR Mask */ + + +/** + \brief Union type to access the Special-Purpose Program Status Registers (xPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:7; /*!< bit: 9..15 Reserved */ + uint32_t GE:4; /*!< bit: 16..19 Greater than or Equal flags */ + uint32_t _reserved1:4; /*!< bit: 20..23 Reserved */ + uint32_t T:1; /*!< bit: 24 Thumb bit (read 0) */ + uint32_t IT:2; /*!< bit: 25..26 saved IT state (read 0) */ + uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} xPSR_Type; + +/* xPSR Register Definitions */ +#define xPSR_N_Pos 31U /*!< xPSR: N Position */ +#define xPSR_N_Msk (1UL << xPSR_N_Pos) /*!< xPSR: N Mask */ + +#define xPSR_Z_Pos 30U /*!< xPSR: Z Position */ +#define xPSR_Z_Msk (1UL << xPSR_Z_Pos) /*!< xPSR: Z Mask */ + +#define xPSR_C_Pos 29U /*!< xPSR: C Position */ +#define xPSR_C_Msk (1UL << xPSR_C_Pos) /*!< xPSR: C Mask */ + +#define xPSR_V_Pos 28U /*!< xPSR: V Position */ +#define xPSR_V_Msk (1UL << xPSR_V_Pos) /*!< xPSR: V Mask */ + +#define xPSR_Q_Pos 27U /*!< xPSR: Q Position */ +#define xPSR_Q_Msk (1UL << xPSR_Q_Pos) /*!< xPSR: Q Mask */ + +#define xPSR_IT_Pos 25U /*!< xPSR: IT Position */ +#define xPSR_IT_Msk (3UL << xPSR_IT_Pos) /*!< xPSR: IT Mask */ + +#define xPSR_T_Pos 24U /*!< xPSR: T Position */ +#define xPSR_T_Msk (1UL << xPSR_T_Pos) /*!< xPSR: T Mask */ + +#define xPSR_GE_Pos 16U /*!< xPSR: GE Position */ +#define xPSR_GE_Msk (0xFUL << xPSR_GE_Pos) /*!< xPSR: GE Mask */ + +#define xPSR_ISR_Pos 0U /*!< xPSR: ISR Position */ +#define xPSR_ISR_Msk (0x1FFUL /*<< xPSR_ISR_Pos*/) /*!< xPSR: ISR Mask */ + + +/** + \brief Union type to access the Control Registers (CONTROL). + */ +typedef union +{ + struct + { + uint32_t nPRIV:1; /*!< bit: 0 Execution privilege in Thread mode */ + uint32_t SPSEL:1; /*!< bit: 1 Stack-pointer select */ + uint32_t FPCA:1; /*!< bit: 2 Floating-point context active */ + uint32_t SFPA:1; /*!< bit: 3 Secure floating-point active */ + uint32_t _reserved1:28; /*!< bit: 4..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} CONTROL_Type; + +/* CONTROL Register Definitions */ +#define CONTROL_SFPA_Pos 3U /*!< CONTROL: SFPA Position */ +#define CONTROL_SFPA_Msk (1UL << CONTROL_SFPA_Pos) /*!< CONTROL: SFPA Mask */ + +#define CONTROL_FPCA_Pos 2U /*!< CONTROL: FPCA Position */ +#define CONTROL_FPCA_Msk (1UL << CONTROL_FPCA_Pos) /*!< CONTROL: FPCA Mask */ + +#define CONTROL_SPSEL_Pos 1U /*!< CONTROL: SPSEL Position */ +#define CONTROL_SPSEL_Msk (1UL << CONTROL_SPSEL_Pos) /*!< CONTROL: SPSEL Mask */ + +#define CONTROL_nPRIV_Pos 0U /*!< CONTROL: nPRIV Position */ +#define CONTROL_nPRIV_Msk (1UL /*<< CONTROL_nPRIV_Pos*/) /*!< CONTROL: nPRIV Mask */ + +/*@} end of group CMSIS_CORE */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_NVIC Nested Vectored Interrupt Controller (NVIC) + \brief Type definitions for the NVIC Registers + @{ + */ + +/** + \brief Structure type to access the Nested Vectored Interrupt Controller (NVIC). + */ +typedef struct +{ + __IOM uint32_t ISER[16U]; /*!< Offset: 0x000 (R/W) Interrupt Set Enable Register */ + uint32_t RESERVED0[16U]; + __IOM uint32_t ICER[16U]; /*!< Offset: 0x080 (R/W) Interrupt Clear Enable Register */ + uint32_t RSERVED1[16U]; + __IOM uint32_t ISPR[16U]; /*!< Offset: 0x100 (R/W) Interrupt Set Pending Register */ + uint32_t RESERVED2[16U]; + __IOM uint32_t ICPR[16U]; /*!< Offset: 0x180 (R/W) Interrupt Clear Pending Register */ + uint32_t RESERVED3[16U]; + __IOM uint32_t IABR[16U]; /*!< Offset: 0x200 (R/W) Interrupt Active bit Register */ + uint32_t RESERVED4[16U]; + __IOM uint32_t ITNS[16U]; /*!< Offset: 0x280 (R/W) Interrupt Non-Secure State Register */ + uint32_t RESERVED5[16U]; + __IOM uint8_t IPR[496U]; /*!< Offset: 0x300 (R/W) Interrupt Priority Register (8Bit wide) */ + uint32_t RESERVED6[580U]; + __OM uint32_t STIR; /*!< Offset: 0xE00 ( /W) Software Trigger Interrupt Register */ +} NVIC_Type; + +/* Software Triggered Interrupt Register Definitions */ +#define NVIC_STIR_INTID_Pos 0U /*!< STIR: INTLINESNUM Position */ +#define NVIC_STIR_INTID_Msk (0x1FFUL /*<< NVIC_STIR_INTID_Pos*/) /*!< STIR: INTLINESNUM Mask */ + +/*@} end of group CMSIS_NVIC */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SCB System Control Block (SCB) + \brief Type definitions for the System Control Block Registers + @{ + */ + +/** + \brief Structure type to access the System Control Block (SCB). + */ +typedef struct +{ + __IM uint32_t CPUID; /*!< Offset: 0x000 (R/ ) CPUID Base Register */ + __IOM uint32_t ICSR; /*!< Offset: 0x004 (R/W) Interrupt Control and State Register */ + __IOM uint32_t VTOR; /*!< Offset: 0x008 (R/W) Vector Table Offset Register */ + __IOM uint32_t AIRCR; /*!< Offset: 0x00C (R/W) Application Interrupt and Reset Control Register */ + __IOM uint32_t SCR; /*!< Offset: 0x010 (R/W) System Control Register */ + __IOM uint32_t CCR; /*!< Offset: 0x014 (R/W) Configuration Control Register */ + __IOM uint8_t SHPR[12U]; /*!< Offset: 0x018 (R/W) System Handlers Priority Registers (4-7, 8-11, 12-15) */ + __IOM uint32_t SHCSR; /*!< Offset: 0x024 (R/W) System Handler Control and State Register */ + __IOM uint32_t CFSR; /*!< Offset: 0x028 (R/W) Configurable Fault Status Register */ + __IOM uint32_t HFSR; /*!< Offset: 0x02C (R/W) HardFault Status Register */ + __IOM uint32_t DFSR; /*!< Offset: 0x030 (R/W) Debug Fault Status Register */ + __IOM uint32_t MMFAR; /*!< Offset: 0x034 (R/W) MemManage Fault Address Register */ + __IOM uint32_t BFAR; /*!< Offset: 0x038 (R/W) BusFault Address Register */ + __IOM uint32_t AFSR; /*!< Offset: 0x03C (R/W) Auxiliary Fault Status Register */ + __IM uint32_t ID_PFR[2U]; /*!< Offset: 0x040 (R/ ) Processor Feature Register */ + __IM uint32_t ID_DFR; /*!< Offset: 0x048 (R/ ) Debug Feature Register */ + __IM uint32_t ID_AFR; /*!< Offset: 0x04C (R/ ) Auxiliary Feature Register */ + __IM uint32_t ID_MMFR[4U]; /*!< Offset: 0x050 (R/ ) Memory Model Feature Register */ + __IM uint32_t ID_ISAR[6U]; /*!< Offset: 0x060 (R/ ) Instruction Set Attributes Register */ + __IM uint32_t CLIDR; /*!< Offset: 0x078 (R/ ) Cache Level ID register */ + __IM uint32_t CTR; /*!< Offset: 0x07C (R/ ) Cache Type register */ + __IM uint32_t CCSIDR; /*!< Offset: 0x080 (R/ ) Cache Size ID Register */ + __IOM uint32_t CSSELR; /*!< Offset: 0x084 (R/W) Cache Size Selection Register */ + __IOM uint32_t CPACR; /*!< Offset: 0x088 (R/W) Coprocessor Access Control Register */ + __IOM uint32_t NSACR; /*!< Offset: 0x08C (R/W) Non-Secure Access Control Register */ + uint32_t RESERVED7[21U]; + __IOM uint32_t SFSR; /*!< Offset: 0x0E4 (R/W) Secure Fault Status Register */ + __IOM uint32_t SFAR; /*!< Offset: 0x0E8 (R/W) Secure Fault Address Register */ + uint32_t RESERVED3[69U]; + __OM uint32_t STIR; /*!< Offset: 0x200 ( /W) Software Triggered Interrupt Register */ + __IOM uint32_t RFSR; /*!< Offset: 0x204 (R/W) RAS Fault Status Register */ + uint32_t RESERVED4[14U]; + __IM uint32_t MVFR0; /*!< Offset: 0x240 (R/ ) Media and VFP Feature Register 0 */ + __IM uint32_t MVFR1; /*!< Offset: 0x244 (R/ ) Media and VFP Feature Register 1 */ + __IM uint32_t MVFR2; /*!< Offset: 0x248 (R/ ) Media and VFP Feature Register 2 */ + uint32_t RESERVED5[1U]; + __OM uint32_t ICIALLU; /*!< Offset: 0x250 ( /W) I-Cache Invalidate All to PoU */ + uint32_t RESERVED6[1U]; + __OM uint32_t ICIMVAU; /*!< Offset: 0x258 ( /W) I-Cache Invalidate by MVA to PoU */ + __OM uint32_t DCIMVAC; /*!< Offset: 0x25C ( /W) D-Cache Invalidate by MVA to PoC */ + __OM uint32_t DCISW; /*!< Offset: 0x260 ( /W) D-Cache Invalidate by Set-way */ + __OM uint32_t DCCMVAU; /*!< Offset: 0x264 ( /W) D-Cache Clean by MVA to PoU */ + __OM uint32_t DCCMVAC; /*!< Offset: 0x268 ( /W) D-Cache Clean by MVA to PoC */ + __OM uint32_t DCCSW; /*!< Offset: 0x26C ( /W) D-Cache Clean by Set-way */ + __OM uint32_t DCCIMVAC; /*!< Offset: 0x270 ( /W) D-Cache Clean and Invalidate by MVA to PoC */ + __OM uint32_t DCCISW; /*!< Offset: 0x274 ( /W) D-Cache Clean and Invalidate by Set-way */ + __OM uint32_t BPIALL; /*!< Offset: 0x278 ( /W) Branch Predictor Invalidate All */ +} SCB_Type; + +/* SCB CPUID Register Definitions */ +#define SCB_CPUID_IMPLEMENTER_Pos 24U /*!< SCB CPUID: IMPLEMENTER Position */ +#define SCB_CPUID_IMPLEMENTER_Msk (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos) /*!< SCB CPUID: IMPLEMENTER Mask */ + +#define SCB_CPUID_VARIANT_Pos 20U /*!< SCB CPUID: VARIANT Position */ +#define SCB_CPUID_VARIANT_Msk (0xFUL << SCB_CPUID_VARIANT_Pos) /*!< SCB CPUID: VARIANT Mask */ + +#define SCB_CPUID_ARCHITECTURE_Pos 16U /*!< SCB CPUID: ARCHITECTURE Position */ +#define SCB_CPUID_ARCHITECTURE_Msk (0xFUL << SCB_CPUID_ARCHITECTURE_Pos) /*!< SCB CPUID: ARCHITECTURE Mask */ + +#define SCB_CPUID_PARTNO_Pos 4U /*!< SCB CPUID: PARTNO Position */ +#define SCB_CPUID_PARTNO_Msk (0xFFFUL << SCB_CPUID_PARTNO_Pos) /*!< SCB CPUID: PARTNO Mask */ + +#define SCB_CPUID_REVISION_Pos 0U /*!< SCB CPUID: REVISION Position */ +#define SCB_CPUID_REVISION_Msk (0xFUL /*<< SCB_CPUID_REVISION_Pos*/) /*!< SCB CPUID: REVISION Mask */ + +/* SCB Interrupt Control State Register Definitions */ +#define SCB_ICSR_PENDNMISET_Pos 31U /*!< SCB ICSR: PENDNMISET Position */ +#define SCB_ICSR_PENDNMISET_Msk (1UL << SCB_ICSR_PENDNMISET_Pos) /*!< SCB ICSR: PENDNMISET Mask */ + +#define SCB_ICSR_NMIPENDSET_Pos SCB_ICSR_PENDNMISET_Pos /*!< SCB ICSR: NMIPENDSET Position, backward compatibility */ +#define SCB_ICSR_NMIPENDSET_Msk SCB_ICSR_PENDNMISET_Msk /*!< SCB ICSR: NMIPENDSET Mask, backward compatibility */ + +#define SCB_ICSR_PENDNMICLR_Pos 30U /*!< SCB ICSR: PENDNMICLR Position */ +#define SCB_ICSR_PENDNMICLR_Msk (1UL << SCB_ICSR_PENDNMICLR_Pos) /*!< SCB ICSR: PENDNMICLR Mask */ + +#define SCB_ICSR_PENDSVSET_Pos 28U /*!< SCB ICSR: PENDSVSET Position */ +#define SCB_ICSR_PENDSVSET_Msk (1UL << SCB_ICSR_PENDSVSET_Pos) /*!< SCB ICSR: PENDSVSET Mask */ + +#define SCB_ICSR_PENDSVCLR_Pos 27U /*!< SCB ICSR: PENDSVCLR Position */ +#define SCB_ICSR_PENDSVCLR_Msk (1UL << SCB_ICSR_PENDSVCLR_Pos) /*!< SCB ICSR: PENDSVCLR Mask */ + +#define SCB_ICSR_PENDSTSET_Pos 26U /*!< SCB ICSR: PENDSTSET Position */ +#define SCB_ICSR_PENDSTSET_Msk (1UL << SCB_ICSR_PENDSTSET_Pos) /*!< SCB ICSR: PENDSTSET Mask */ + +#define SCB_ICSR_PENDSTCLR_Pos 25U /*!< SCB ICSR: PENDSTCLR Position */ +#define SCB_ICSR_PENDSTCLR_Msk (1UL << SCB_ICSR_PENDSTCLR_Pos) /*!< SCB ICSR: PENDSTCLR Mask */ + +#define SCB_ICSR_STTNS_Pos 24U /*!< SCB ICSR: STTNS Position (Security Extension) */ +#define SCB_ICSR_STTNS_Msk (1UL << SCB_ICSR_STTNS_Pos) /*!< SCB ICSR: STTNS Mask (Security Extension) */ + +#define SCB_ICSR_ISRPREEMPT_Pos 23U /*!< SCB ICSR: ISRPREEMPT Position */ +#define SCB_ICSR_ISRPREEMPT_Msk (1UL << SCB_ICSR_ISRPREEMPT_Pos) /*!< SCB ICSR: ISRPREEMPT Mask */ + +#define SCB_ICSR_ISRPENDING_Pos 22U /*!< SCB ICSR: ISRPENDING Position */ +#define SCB_ICSR_ISRPENDING_Msk (1UL << SCB_ICSR_ISRPENDING_Pos) /*!< SCB ICSR: ISRPENDING Mask */ + +#define SCB_ICSR_VECTPENDING_Pos 12U /*!< SCB ICSR: VECTPENDING Position */ +#define SCB_ICSR_VECTPENDING_Msk (0x1FFUL << SCB_ICSR_VECTPENDING_Pos) /*!< SCB ICSR: VECTPENDING Mask */ + +#define SCB_ICSR_RETTOBASE_Pos 11U /*!< SCB ICSR: RETTOBASE Position */ +#define SCB_ICSR_RETTOBASE_Msk (1UL << SCB_ICSR_RETTOBASE_Pos) /*!< SCB ICSR: RETTOBASE Mask */ + +#define SCB_ICSR_VECTACTIVE_Pos 0U /*!< SCB ICSR: VECTACTIVE Position */ +#define SCB_ICSR_VECTACTIVE_Msk (0x1FFUL /*<< SCB_ICSR_VECTACTIVE_Pos*/) /*!< SCB ICSR: VECTACTIVE Mask */ + +/* SCB Vector Table Offset Register Definitions */ +#define SCB_VTOR_TBLOFF_Pos 7U /*!< SCB VTOR: TBLOFF Position */ +#define SCB_VTOR_TBLOFF_Msk (0x1FFFFFFUL << SCB_VTOR_TBLOFF_Pos) /*!< SCB VTOR: TBLOFF Mask */ + +/* SCB Application Interrupt and Reset Control Register Definitions */ +#define SCB_AIRCR_VECTKEY_Pos 16U /*!< SCB AIRCR: VECTKEY Position */ +#define SCB_AIRCR_VECTKEY_Msk (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos) /*!< SCB AIRCR: VECTKEY Mask */ + +#define SCB_AIRCR_VECTKEYSTAT_Pos 16U /*!< SCB AIRCR: VECTKEYSTAT Position */ +#define SCB_AIRCR_VECTKEYSTAT_Msk (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos) /*!< SCB AIRCR: VECTKEYSTAT Mask */ + +#define SCB_AIRCR_ENDIANESS_Pos 15U /*!< SCB AIRCR: ENDIANESS Position */ +#define SCB_AIRCR_ENDIANESS_Msk (1UL << SCB_AIRCR_ENDIANESS_Pos) /*!< SCB AIRCR: ENDIANESS Mask */ + +#define SCB_AIRCR_PRIS_Pos 14U /*!< SCB AIRCR: PRIS Position */ +#define SCB_AIRCR_PRIS_Msk (1UL << SCB_AIRCR_PRIS_Pos) /*!< SCB AIRCR: PRIS Mask */ + +#define SCB_AIRCR_BFHFNMINS_Pos 13U /*!< SCB AIRCR: BFHFNMINS Position */ +#define SCB_AIRCR_BFHFNMINS_Msk (1UL << SCB_AIRCR_BFHFNMINS_Pos) /*!< SCB AIRCR: BFHFNMINS Mask */ + +#define SCB_AIRCR_PRIGROUP_Pos 8U /*!< SCB AIRCR: PRIGROUP Position */ +#define SCB_AIRCR_PRIGROUP_Msk (7UL << SCB_AIRCR_PRIGROUP_Pos) /*!< SCB AIRCR: PRIGROUP Mask */ + +#define SCB_AIRCR_IESB_Pos 5U /*!< SCB AIRCR: Implicit ESB Enable Position */ +#define SCB_AIRCR_IESB_Msk (1UL << SCB_AIRCR_IESB_Pos) /*!< SCB AIRCR: Implicit ESB Enable Mask */ + +#define SCB_AIRCR_DIT_Pos 4U /*!< SCB AIRCR: Data Independent Timing Position */ +#define SCB_AIRCR_DIT_Msk (1UL << SCB_AIRCR_DIT_Pos) /*!< SCB AIRCR: Data Independent Timing Mask */ + +#define SCB_AIRCR_SYSRESETREQS_Pos 3U /*!< SCB AIRCR: SYSRESETREQS Position */ +#define SCB_AIRCR_SYSRESETREQS_Msk (1UL << SCB_AIRCR_SYSRESETREQS_Pos) /*!< SCB AIRCR: SYSRESETREQS Mask */ + +#define SCB_AIRCR_SYSRESETREQ_Pos 2U /*!< SCB AIRCR: SYSRESETREQ Position */ +#define SCB_AIRCR_SYSRESETREQ_Msk (1UL << SCB_AIRCR_SYSRESETREQ_Pos) /*!< SCB AIRCR: SYSRESETREQ Mask */ + +#define SCB_AIRCR_VECTCLRACTIVE_Pos 1U /*!< SCB AIRCR: VECTCLRACTIVE Position */ +#define SCB_AIRCR_VECTCLRACTIVE_Msk (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos) /*!< SCB AIRCR: VECTCLRACTIVE Mask */ + +/* SCB System Control Register Definitions */ +#define SCB_SCR_SEVONPEND_Pos 4U /*!< SCB SCR: SEVONPEND Position */ +#define SCB_SCR_SEVONPEND_Msk (1UL << SCB_SCR_SEVONPEND_Pos) /*!< SCB SCR: SEVONPEND Mask */ + +#define SCB_SCR_SLEEPDEEPS_Pos 3U /*!< SCB SCR: SLEEPDEEPS Position */ +#define SCB_SCR_SLEEPDEEPS_Msk (1UL << SCB_SCR_SLEEPDEEPS_Pos) /*!< SCB SCR: SLEEPDEEPS Mask */ + +#define SCB_SCR_SLEEPDEEP_Pos 2U /*!< SCB SCR: SLEEPDEEP Position */ +#define SCB_SCR_SLEEPDEEP_Msk (1UL << SCB_SCR_SLEEPDEEP_Pos) /*!< SCB SCR: SLEEPDEEP Mask */ + +#define SCB_SCR_SLEEPONEXIT_Pos 1U /*!< SCB SCR: SLEEPONEXIT Position */ +#define SCB_SCR_SLEEPONEXIT_Msk (1UL << SCB_SCR_SLEEPONEXIT_Pos) /*!< SCB SCR: SLEEPONEXIT Mask */ + +/* SCB Configuration Control Register Definitions */ +#define SCB_CCR_TRD_Pos 20U /*!< SCB CCR: TRD Position */ +#define SCB_CCR_TRD_Msk (1UL << SCB_CCR_TRD_Pos) /*!< SCB CCR: TRD Mask */ + +#define SCB_CCR_LOB_Pos 19U /*!< SCB CCR: LOB Position */ +#define SCB_CCR_LOB_Msk (1UL << SCB_CCR_LOB_Pos) /*!< SCB CCR: LOB Mask */ + +#define SCB_CCR_BP_Pos 18U /*!< SCB CCR: BP Position */ +#define SCB_CCR_BP_Msk (1UL << SCB_CCR_BP_Pos) /*!< SCB CCR: BP Mask */ + +#define SCB_CCR_IC_Pos 17U /*!< SCB CCR: IC Position */ +#define SCB_CCR_IC_Msk (1UL << SCB_CCR_IC_Pos) /*!< SCB CCR: IC Mask */ + +#define SCB_CCR_DC_Pos 16U /*!< SCB CCR: DC Position */ +#define SCB_CCR_DC_Msk (1UL << SCB_CCR_DC_Pos) /*!< SCB CCR: DC Mask */ + +#define SCB_CCR_STKOFHFNMIGN_Pos 10U /*!< SCB CCR: STKOFHFNMIGN Position */ +#define SCB_CCR_STKOFHFNMIGN_Msk (1UL << SCB_CCR_STKOFHFNMIGN_Pos) /*!< SCB CCR: STKOFHFNMIGN Mask */ + +#define SCB_CCR_BFHFNMIGN_Pos 8U /*!< SCB CCR: BFHFNMIGN Position */ +#define SCB_CCR_BFHFNMIGN_Msk (1UL << SCB_CCR_BFHFNMIGN_Pos) /*!< SCB CCR: BFHFNMIGN Mask */ + +#define SCB_CCR_DIV_0_TRP_Pos 4U /*!< SCB CCR: DIV_0_TRP Position */ +#define SCB_CCR_DIV_0_TRP_Msk (1UL << SCB_CCR_DIV_0_TRP_Pos) /*!< SCB CCR: DIV_0_TRP Mask */ + +#define SCB_CCR_UNALIGN_TRP_Pos 3U /*!< SCB CCR: UNALIGN_TRP Position */ +#define SCB_CCR_UNALIGN_TRP_Msk (1UL << SCB_CCR_UNALIGN_TRP_Pos) /*!< SCB CCR: UNALIGN_TRP Mask */ + +#define SCB_CCR_USERSETMPEND_Pos 1U /*!< SCB CCR: USERSETMPEND Position */ +#define SCB_CCR_USERSETMPEND_Msk (1UL << SCB_CCR_USERSETMPEND_Pos) /*!< SCB CCR: USERSETMPEND Mask */ + +/* SCB System Handler Control and State Register Definitions */ +#define SCB_SHCSR_HARDFAULTPENDED_Pos 21U /*!< SCB SHCSR: HARDFAULTPENDED Position */ +#define SCB_SHCSR_HARDFAULTPENDED_Msk (1UL << SCB_SHCSR_HARDFAULTPENDED_Pos) /*!< SCB SHCSR: HARDFAULTPENDED Mask */ + +#define SCB_SHCSR_SECUREFAULTPENDED_Pos 20U /*!< SCB SHCSR: SECUREFAULTPENDED Position */ +#define SCB_SHCSR_SECUREFAULTPENDED_Msk (1UL << SCB_SHCSR_SECUREFAULTPENDED_Pos) /*!< SCB SHCSR: SECUREFAULTPENDED Mask */ + +#define SCB_SHCSR_SECUREFAULTENA_Pos 19U /*!< SCB SHCSR: SECUREFAULTENA Position */ +#define SCB_SHCSR_SECUREFAULTENA_Msk (1UL << SCB_SHCSR_SECUREFAULTENA_Pos) /*!< SCB SHCSR: SECUREFAULTENA Mask */ + +#define SCB_SHCSR_USGFAULTENA_Pos 18U /*!< SCB SHCSR: USGFAULTENA Position */ +#define SCB_SHCSR_USGFAULTENA_Msk (1UL << SCB_SHCSR_USGFAULTENA_Pos) /*!< SCB SHCSR: USGFAULTENA Mask */ + +#define SCB_SHCSR_BUSFAULTENA_Pos 17U /*!< SCB SHCSR: BUSFAULTENA Position */ +#define SCB_SHCSR_BUSFAULTENA_Msk (1UL << SCB_SHCSR_BUSFAULTENA_Pos) /*!< SCB SHCSR: BUSFAULTENA Mask */ + +#define SCB_SHCSR_MEMFAULTENA_Pos 16U /*!< SCB SHCSR: MEMFAULTENA Position */ +#define SCB_SHCSR_MEMFAULTENA_Msk (1UL << SCB_SHCSR_MEMFAULTENA_Pos) /*!< SCB SHCSR: MEMFAULTENA Mask */ + +#define SCB_SHCSR_SVCALLPENDED_Pos 15U /*!< SCB SHCSR: SVCALLPENDED Position */ +#define SCB_SHCSR_SVCALLPENDED_Msk (1UL << SCB_SHCSR_SVCALLPENDED_Pos) /*!< SCB SHCSR: SVCALLPENDED Mask */ + +#define SCB_SHCSR_BUSFAULTPENDED_Pos 14U /*!< SCB SHCSR: BUSFAULTPENDED Position */ +#define SCB_SHCSR_BUSFAULTPENDED_Msk (1UL << SCB_SHCSR_BUSFAULTPENDED_Pos) /*!< SCB SHCSR: BUSFAULTPENDED Mask */ + +#define SCB_SHCSR_MEMFAULTPENDED_Pos 13U /*!< SCB SHCSR: MEMFAULTPENDED Position */ +#define SCB_SHCSR_MEMFAULTPENDED_Msk (1UL << SCB_SHCSR_MEMFAULTPENDED_Pos) /*!< SCB SHCSR: MEMFAULTPENDED Mask */ + +#define SCB_SHCSR_USGFAULTPENDED_Pos 12U /*!< SCB SHCSR: USGFAULTPENDED Position */ +#define SCB_SHCSR_USGFAULTPENDED_Msk (1UL << SCB_SHCSR_USGFAULTPENDED_Pos) /*!< SCB SHCSR: USGFAULTPENDED Mask */ + +#define SCB_SHCSR_SYSTICKACT_Pos 11U /*!< SCB SHCSR: SYSTICKACT Position */ +#define SCB_SHCSR_SYSTICKACT_Msk (1UL << SCB_SHCSR_SYSTICKACT_Pos) /*!< SCB SHCSR: SYSTICKACT Mask */ + +#define SCB_SHCSR_PENDSVACT_Pos 10U /*!< SCB SHCSR: PENDSVACT Position */ +#define SCB_SHCSR_PENDSVACT_Msk (1UL << SCB_SHCSR_PENDSVACT_Pos) /*!< SCB SHCSR: PENDSVACT Mask */ + +#define SCB_SHCSR_MONITORACT_Pos 8U /*!< SCB SHCSR: MONITORACT Position */ +#define SCB_SHCSR_MONITORACT_Msk (1UL << SCB_SHCSR_MONITORACT_Pos) /*!< SCB SHCSR: MONITORACT Mask */ + +#define SCB_SHCSR_SVCALLACT_Pos 7U /*!< SCB SHCSR: SVCALLACT Position */ +#define SCB_SHCSR_SVCALLACT_Msk (1UL << SCB_SHCSR_SVCALLACT_Pos) /*!< SCB SHCSR: SVCALLACT Mask */ + +#define SCB_SHCSR_NMIACT_Pos 5U /*!< SCB SHCSR: NMIACT Position */ +#define SCB_SHCSR_NMIACT_Msk (1UL << SCB_SHCSR_NMIACT_Pos) /*!< SCB SHCSR: NMIACT Mask */ + +#define SCB_SHCSR_SECUREFAULTACT_Pos 4U /*!< SCB SHCSR: SECUREFAULTACT Position */ +#define SCB_SHCSR_SECUREFAULTACT_Msk (1UL << SCB_SHCSR_SECUREFAULTACT_Pos) /*!< SCB SHCSR: SECUREFAULTACT Mask */ + +#define SCB_SHCSR_USGFAULTACT_Pos 3U /*!< SCB SHCSR: USGFAULTACT Position */ +#define SCB_SHCSR_USGFAULTACT_Msk (1UL << SCB_SHCSR_USGFAULTACT_Pos) /*!< SCB SHCSR: USGFAULTACT Mask */ + +#define SCB_SHCSR_HARDFAULTACT_Pos 2U /*!< SCB SHCSR: HARDFAULTACT Position */ +#define SCB_SHCSR_HARDFAULTACT_Msk (1UL << SCB_SHCSR_HARDFAULTACT_Pos) /*!< SCB SHCSR: HARDFAULTACT Mask */ + +#define SCB_SHCSR_BUSFAULTACT_Pos 1U /*!< SCB SHCSR: BUSFAULTACT Position */ +#define SCB_SHCSR_BUSFAULTACT_Msk (1UL << SCB_SHCSR_BUSFAULTACT_Pos) /*!< SCB SHCSR: BUSFAULTACT Mask */ + +#define SCB_SHCSR_MEMFAULTACT_Pos 0U /*!< SCB SHCSR: MEMFAULTACT Position */ +#define SCB_SHCSR_MEMFAULTACT_Msk (1UL /*<< SCB_SHCSR_MEMFAULTACT_Pos*/) /*!< SCB SHCSR: MEMFAULTACT Mask */ + +/* SCB Configurable Fault Status Register Definitions */ +#define SCB_CFSR_USGFAULTSR_Pos 16U /*!< SCB CFSR: Usage Fault Status Register Position */ +#define SCB_CFSR_USGFAULTSR_Msk (0xFFFFUL << SCB_CFSR_USGFAULTSR_Pos) /*!< SCB CFSR: Usage Fault Status Register Mask */ + +#define SCB_CFSR_BUSFAULTSR_Pos 8U /*!< SCB CFSR: Bus Fault Status Register Position */ +#define SCB_CFSR_BUSFAULTSR_Msk (0xFFUL << SCB_CFSR_BUSFAULTSR_Pos) /*!< SCB CFSR: Bus Fault Status Register Mask */ + +#define SCB_CFSR_MEMFAULTSR_Pos 0U /*!< SCB CFSR: Memory Manage Fault Status Register Position */ +#define SCB_CFSR_MEMFAULTSR_Msk (0xFFUL /*<< SCB_CFSR_MEMFAULTSR_Pos*/) /*!< SCB CFSR: Memory Manage Fault Status Register Mask */ + +/* MemManage Fault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_MMARVALID_Pos (SCB_CFSR_MEMFAULTSR_Pos + 7U) /*!< SCB CFSR (MMFSR): MMARVALID Position */ +#define SCB_CFSR_MMARVALID_Msk (1UL << SCB_CFSR_MMARVALID_Pos) /*!< SCB CFSR (MMFSR): MMARVALID Mask */ + +#define SCB_CFSR_MLSPERR_Pos (SCB_CFSR_MEMFAULTSR_Pos + 5U) /*!< SCB CFSR (MMFSR): MLSPERR Position */ +#define SCB_CFSR_MLSPERR_Msk (1UL << SCB_CFSR_MLSPERR_Pos) /*!< SCB CFSR (MMFSR): MLSPERR Mask */ + +#define SCB_CFSR_MSTKERR_Pos (SCB_CFSR_MEMFAULTSR_Pos + 4U) /*!< SCB CFSR (MMFSR): MSTKERR Position */ +#define SCB_CFSR_MSTKERR_Msk (1UL << SCB_CFSR_MSTKERR_Pos) /*!< SCB CFSR (MMFSR): MSTKERR Mask */ + +#define SCB_CFSR_MUNSTKERR_Pos (SCB_CFSR_MEMFAULTSR_Pos + 3U) /*!< SCB CFSR (MMFSR): MUNSTKERR Position */ +#define SCB_CFSR_MUNSTKERR_Msk (1UL << SCB_CFSR_MUNSTKERR_Pos) /*!< SCB CFSR (MMFSR): MUNSTKERR Mask */ + +#define SCB_CFSR_DACCVIOL_Pos (SCB_CFSR_MEMFAULTSR_Pos + 1U) /*!< SCB CFSR (MMFSR): DACCVIOL Position */ +#define SCB_CFSR_DACCVIOL_Msk (1UL << SCB_CFSR_DACCVIOL_Pos) /*!< SCB CFSR (MMFSR): DACCVIOL Mask */ + +#define SCB_CFSR_IACCVIOL_Pos (SCB_CFSR_MEMFAULTSR_Pos + 0U) /*!< SCB CFSR (MMFSR): IACCVIOL Position */ +#define SCB_CFSR_IACCVIOL_Msk (1UL /*<< SCB_CFSR_IACCVIOL_Pos*/) /*!< SCB CFSR (MMFSR): IACCVIOL Mask */ + +/* BusFault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_BFARVALID_Pos (SCB_CFSR_BUSFAULTSR_Pos + 7U) /*!< SCB CFSR (BFSR): BFARVALID Position */ +#define SCB_CFSR_BFARVALID_Msk (1UL << SCB_CFSR_BFARVALID_Pos) /*!< SCB CFSR (BFSR): BFARVALID Mask */ + +#define SCB_CFSR_LSPERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 5U) /*!< SCB CFSR (BFSR): LSPERR Position */ +#define SCB_CFSR_LSPERR_Msk (1UL << SCB_CFSR_LSPERR_Pos) /*!< SCB CFSR (BFSR): LSPERR Mask */ + +#define SCB_CFSR_STKERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 4U) /*!< SCB CFSR (BFSR): STKERR Position */ +#define SCB_CFSR_STKERR_Msk (1UL << SCB_CFSR_STKERR_Pos) /*!< SCB CFSR (BFSR): STKERR Mask */ + +#define SCB_CFSR_UNSTKERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 3U) /*!< SCB CFSR (BFSR): UNSTKERR Position */ +#define SCB_CFSR_UNSTKERR_Msk (1UL << SCB_CFSR_UNSTKERR_Pos) /*!< SCB CFSR (BFSR): UNSTKERR Mask */ + +#define SCB_CFSR_IMPRECISERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 2U) /*!< SCB CFSR (BFSR): IMPRECISERR Position */ +#define SCB_CFSR_IMPRECISERR_Msk (1UL << SCB_CFSR_IMPRECISERR_Pos) /*!< SCB CFSR (BFSR): IMPRECISERR Mask */ + +#define SCB_CFSR_PRECISERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 1U) /*!< SCB CFSR (BFSR): PRECISERR Position */ +#define SCB_CFSR_PRECISERR_Msk (1UL << SCB_CFSR_PRECISERR_Pos) /*!< SCB CFSR (BFSR): PRECISERR Mask */ + +#define SCB_CFSR_IBUSERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 0U) /*!< SCB CFSR (BFSR): IBUSERR Position */ +#define SCB_CFSR_IBUSERR_Msk (1UL << SCB_CFSR_IBUSERR_Pos) /*!< SCB CFSR (BFSR): IBUSERR Mask */ + +/* UsageFault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_DIVBYZERO_Pos (SCB_CFSR_USGFAULTSR_Pos + 9U) /*!< SCB CFSR (UFSR): DIVBYZERO Position */ +#define SCB_CFSR_DIVBYZERO_Msk (1UL << SCB_CFSR_DIVBYZERO_Pos) /*!< SCB CFSR (UFSR): DIVBYZERO Mask */ + +#define SCB_CFSR_UNALIGNED_Pos (SCB_CFSR_USGFAULTSR_Pos + 8U) /*!< SCB CFSR (UFSR): UNALIGNED Position */ +#define SCB_CFSR_UNALIGNED_Msk (1UL << SCB_CFSR_UNALIGNED_Pos) /*!< SCB CFSR (UFSR): UNALIGNED Mask */ + +#define SCB_CFSR_STKOF_Pos (SCB_CFSR_USGFAULTSR_Pos + 4U) /*!< SCB CFSR (UFSR): STKOF Position */ +#define SCB_CFSR_STKOF_Msk (1UL << SCB_CFSR_STKOF_Pos) /*!< SCB CFSR (UFSR): STKOF Mask */ + +#define SCB_CFSR_NOCP_Pos (SCB_CFSR_USGFAULTSR_Pos + 3U) /*!< SCB CFSR (UFSR): NOCP Position */ +#define SCB_CFSR_NOCP_Msk (1UL << SCB_CFSR_NOCP_Pos) /*!< SCB CFSR (UFSR): NOCP Mask */ + +#define SCB_CFSR_INVPC_Pos (SCB_CFSR_USGFAULTSR_Pos + 2U) /*!< SCB CFSR (UFSR): INVPC Position */ +#define SCB_CFSR_INVPC_Msk (1UL << SCB_CFSR_INVPC_Pos) /*!< SCB CFSR (UFSR): INVPC Mask */ + +#define SCB_CFSR_INVSTATE_Pos (SCB_CFSR_USGFAULTSR_Pos + 1U) /*!< SCB CFSR (UFSR): INVSTATE Position */ +#define SCB_CFSR_INVSTATE_Msk (1UL << SCB_CFSR_INVSTATE_Pos) /*!< SCB CFSR (UFSR): INVSTATE Mask */ + +#define SCB_CFSR_UNDEFINSTR_Pos (SCB_CFSR_USGFAULTSR_Pos + 0U) /*!< SCB CFSR (UFSR): UNDEFINSTR Position */ +#define SCB_CFSR_UNDEFINSTR_Msk (1UL << SCB_CFSR_UNDEFINSTR_Pos) /*!< SCB CFSR (UFSR): UNDEFINSTR Mask */ + +/* SCB Hard Fault Status Register Definitions */ +#define SCB_HFSR_DEBUGEVT_Pos 31U /*!< SCB HFSR: DEBUGEVT Position */ +#define SCB_HFSR_DEBUGEVT_Msk (1UL << SCB_HFSR_DEBUGEVT_Pos) /*!< SCB HFSR: DEBUGEVT Mask */ + +#define SCB_HFSR_FORCED_Pos 30U /*!< SCB HFSR: FORCED Position */ +#define SCB_HFSR_FORCED_Msk (1UL << SCB_HFSR_FORCED_Pos) /*!< SCB HFSR: FORCED Mask */ + +#define SCB_HFSR_VECTTBL_Pos 1U /*!< SCB HFSR: VECTTBL Position */ +#define SCB_HFSR_VECTTBL_Msk (1UL << SCB_HFSR_VECTTBL_Pos) /*!< SCB HFSR: VECTTBL Mask */ + +/* SCB Debug Fault Status Register Definitions */ +#define SCB_DFSR_PMU_Pos 5U /*!< SCB DFSR: PMU Position */ +#define SCB_DFSR_PMU_Msk (1UL << SCB_DFSR_PMU_Pos) /*!< SCB DFSR: PMU Mask */ + +#define SCB_DFSR_EXTERNAL_Pos 4U /*!< SCB DFSR: EXTERNAL Position */ +#define SCB_DFSR_EXTERNAL_Msk (1UL << SCB_DFSR_EXTERNAL_Pos) /*!< SCB DFSR: EXTERNAL Mask */ + +#define SCB_DFSR_VCATCH_Pos 3U /*!< SCB DFSR: VCATCH Position */ +#define SCB_DFSR_VCATCH_Msk (1UL << SCB_DFSR_VCATCH_Pos) /*!< SCB DFSR: VCATCH Mask */ + +#define SCB_DFSR_DWTTRAP_Pos 2U /*!< SCB DFSR: DWTTRAP Position */ +#define SCB_DFSR_DWTTRAP_Msk (1UL << SCB_DFSR_DWTTRAP_Pos) /*!< SCB DFSR: DWTTRAP Mask */ + +#define SCB_DFSR_BKPT_Pos 1U /*!< SCB DFSR: BKPT Position */ +#define SCB_DFSR_BKPT_Msk (1UL << SCB_DFSR_BKPT_Pos) /*!< SCB DFSR: BKPT Mask */ + +#define SCB_DFSR_HALTED_Pos 0U /*!< SCB DFSR: HALTED Position */ +#define SCB_DFSR_HALTED_Msk (1UL /*<< SCB_DFSR_HALTED_Pos*/) /*!< SCB DFSR: HALTED Mask */ + +/* SCB Non-Secure Access Control Register Definitions */ +#define SCB_NSACR_CP11_Pos 11U /*!< SCB NSACR: CP11 Position */ +#define SCB_NSACR_CP11_Msk (1UL << SCB_NSACR_CP11_Pos) /*!< SCB NSACR: CP11 Mask */ + +#define SCB_NSACR_CP10_Pos 10U /*!< SCB NSACR: CP10 Position */ +#define SCB_NSACR_CP10_Msk (1UL << SCB_NSACR_CP10_Pos) /*!< SCB NSACR: CP10 Mask */ + +#define SCB_NSACR_CP7_Pos 7U /*!< SCB NSACR: CP7 Position */ +#define SCB_NSACR_CP7_Msk (1UL << SCB_NSACR_CP7_Pos) /*!< SCB NSACR: CP7 Mask */ + +#define SCB_NSACR_CP6_Pos 6U /*!< SCB NSACR: CP6 Position */ +#define SCB_NSACR_CP6_Msk (1UL << SCB_NSACR_CP6_Pos) /*!< SCB NSACR: CP6 Mask */ + +#define SCB_NSACR_CP5_Pos 5U /*!< SCB NSACR: CP5 Position */ +#define SCB_NSACR_CP5_Msk (1UL << SCB_NSACR_CP5_Pos) /*!< SCB NSACR: CP5 Mask */ + +#define SCB_NSACR_CP4_Pos 4U /*!< SCB NSACR: CP4 Position */ +#define SCB_NSACR_CP4_Msk (1UL << SCB_NSACR_CP4_Pos) /*!< SCB NSACR: CP4 Mask */ + +#define SCB_NSACR_CP3_Pos 3U /*!< SCB NSACR: CP3 Position */ +#define SCB_NSACR_CP3_Msk (1UL << SCB_NSACR_CP3_Pos) /*!< SCB NSACR: CP3 Mask */ + +#define SCB_NSACR_CP2_Pos 2U /*!< SCB NSACR: CP2 Position */ +#define SCB_NSACR_CP2_Msk (1UL << SCB_NSACR_CP2_Pos) /*!< SCB NSACR: CP2 Mask */ + +#define SCB_NSACR_CP1_Pos 1U /*!< SCB NSACR: CP1 Position */ +#define SCB_NSACR_CP1_Msk (1UL << SCB_NSACR_CP1_Pos) /*!< SCB NSACR: CP1 Mask */ + +#define SCB_NSACR_CP0_Pos 0U /*!< SCB NSACR: CP0 Position */ +#define SCB_NSACR_CP0_Msk (1UL /*<< SCB_NSACR_CP0_Pos*/) /*!< SCB NSACR: CP0 Mask */ + +/* SCB Debug Feature Register 0 Definitions */ +#define SCB_ID_DFR_UDE_Pos 28U /*!< SCB ID_DFR: UDE Position */ +#define SCB_ID_DFR_UDE_Msk (0xFUL << SCB_ID_DFR_UDE_Pos) /*!< SCB ID_DFR: UDE Mask */ + +#define SCB_ID_DFR_MProfDbg_Pos 20U /*!< SCB ID_DFR: MProfDbg Position */ +#define SCB_ID_DFR_MProfDbg_Msk (0xFUL << SCB_ID_DFR_MProfDbg_Pos) /*!< SCB ID_DFR: MProfDbg Mask */ + +/* SCB Cache Level ID Register Definitions */ +#define SCB_CLIDR_LOUU_Pos 27U /*!< SCB CLIDR: LoUU Position */ +#define SCB_CLIDR_LOUU_Msk (7UL << SCB_CLIDR_LOUU_Pos) /*!< SCB CLIDR: LoUU Mask */ + +#define SCB_CLIDR_LOC_Pos 24U /*!< SCB CLIDR: LoC Position */ +#define SCB_CLIDR_LOC_Msk (7UL << SCB_CLIDR_LOC_Pos) /*!< SCB CLIDR: LoC Mask */ + +/* SCB Cache Type Register Definitions */ +#define SCB_CTR_FORMAT_Pos 29U /*!< SCB CTR: Format Position */ +#define SCB_CTR_FORMAT_Msk (7UL << SCB_CTR_FORMAT_Pos) /*!< SCB CTR: Format Mask */ + +#define SCB_CTR_CWG_Pos 24U /*!< SCB CTR: CWG Position */ +#define SCB_CTR_CWG_Msk (0xFUL << SCB_CTR_CWG_Pos) /*!< SCB CTR: CWG Mask */ + +#define SCB_CTR_ERG_Pos 20U /*!< SCB CTR: ERG Position */ +#define SCB_CTR_ERG_Msk (0xFUL << SCB_CTR_ERG_Pos) /*!< SCB CTR: ERG Mask */ + +#define SCB_CTR_DMINLINE_Pos 16U /*!< SCB CTR: DminLine Position */ +#define SCB_CTR_DMINLINE_Msk (0xFUL << SCB_CTR_DMINLINE_Pos) /*!< SCB CTR: DminLine Mask */ + +#define SCB_CTR_IMINLINE_Pos 0U /*!< SCB CTR: ImInLine Position */ +#define SCB_CTR_IMINLINE_Msk (0xFUL /*<< SCB_CTR_IMINLINE_Pos*/) /*!< SCB CTR: ImInLine Mask */ + +/* SCB Cache Size ID Register Definitions */ +#define SCB_CCSIDR_WT_Pos 31U /*!< SCB CCSIDR: WT Position */ +#define SCB_CCSIDR_WT_Msk (1UL << SCB_CCSIDR_WT_Pos) /*!< SCB CCSIDR: WT Mask */ + +#define SCB_CCSIDR_WB_Pos 30U /*!< SCB CCSIDR: WB Position */ +#define SCB_CCSIDR_WB_Msk (1UL << SCB_CCSIDR_WB_Pos) /*!< SCB CCSIDR: WB Mask */ + +#define SCB_CCSIDR_RA_Pos 29U /*!< SCB CCSIDR: RA Position */ +#define SCB_CCSIDR_RA_Msk (1UL << SCB_CCSIDR_RA_Pos) /*!< SCB CCSIDR: RA Mask */ + +#define SCB_CCSIDR_WA_Pos 28U /*!< SCB CCSIDR: WA Position */ +#define SCB_CCSIDR_WA_Msk (1UL << SCB_CCSIDR_WA_Pos) /*!< SCB CCSIDR: WA Mask */ + +#define SCB_CCSIDR_NUMSETS_Pos 13U /*!< SCB CCSIDR: NumSets Position */ +#define SCB_CCSIDR_NUMSETS_Msk (0x7FFFUL << SCB_CCSIDR_NUMSETS_Pos) /*!< SCB CCSIDR: NumSets Mask */ + +#define SCB_CCSIDR_ASSOCIATIVITY_Pos 3U /*!< SCB CCSIDR: Associativity Position */ +#define SCB_CCSIDR_ASSOCIATIVITY_Msk (0x3FFUL << SCB_CCSIDR_ASSOCIATIVITY_Pos) /*!< SCB CCSIDR: Associativity Mask */ + +#define SCB_CCSIDR_LINESIZE_Pos 0U /*!< SCB CCSIDR: LineSize Position */ +#define SCB_CCSIDR_LINESIZE_Msk (7UL /*<< SCB_CCSIDR_LINESIZE_Pos*/) /*!< SCB CCSIDR: LineSize Mask */ + +/* SCB Cache Size Selection Register Definitions */ +#define SCB_CSSELR_LEVEL_Pos 1U /*!< SCB CSSELR: Level Position */ +#define SCB_CSSELR_LEVEL_Msk (7UL << SCB_CSSELR_LEVEL_Pos) /*!< SCB CSSELR: Level Mask */ + +#define SCB_CSSELR_IND_Pos 0U /*!< SCB CSSELR: InD Position */ +#define SCB_CSSELR_IND_Msk (1UL /*<< SCB_CSSELR_IND_Pos*/) /*!< SCB CSSELR: InD Mask */ + +/* SCB Software Triggered Interrupt Register Definitions */ +#define SCB_STIR_INTID_Pos 0U /*!< SCB STIR: INTID Position */ +#define SCB_STIR_INTID_Msk (0x1FFUL /*<< SCB_STIR_INTID_Pos*/) /*!< SCB STIR: INTID Mask */ + +/* SCB RAS Fault Status Register Definitions */ +#define SCB_RFSR_V_Pos 31U /*!< SCB RFSR: V Position */ +#define SCB_RFSR_V_Msk (1UL << SCB_RFSR_V_Pos) /*!< SCB RFSR: V Mask */ + +#define SCB_RFSR_IS_Pos 16U /*!< SCB RFSR: IS Position */ +#define SCB_RFSR_IS_Msk (0x7FFFUL << SCB_RFSR_IS_Pos) /*!< SCB RFSR: IS Mask */ + +#define SCB_RFSR_UET_Pos 0U /*!< SCB RFSR: UET Position */ +#define SCB_RFSR_UET_Msk (3UL /*<< SCB_RFSR_UET_Pos*/) /*!< SCB RFSR: UET Mask */ + +/* SCB D-Cache Invalidate by Set-way Register Definitions */ +#define SCB_DCISW_WAY_Pos 30U /*!< SCB DCISW: Way Position */ +#define SCB_DCISW_WAY_Msk (3UL << SCB_DCISW_WAY_Pos) /*!< SCB DCISW: Way Mask */ + +#define SCB_DCISW_SET_Pos 5U /*!< SCB DCISW: Set Position */ +#define SCB_DCISW_SET_Msk (0x1FFUL << SCB_DCISW_SET_Pos) /*!< SCB DCISW: Set Mask */ + +/* SCB D-Cache Clean by Set-way Register Definitions */ +#define SCB_DCCSW_WAY_Pos 30U /*!< SCB DCCSW: Way Position */ +#define SCB_DCCSW_WAY_Msk (3UL << SCB_DCCSW_WAY_Pos) /*!< SCB DCCSW: Way Mask */ + +#define SCB_DCCSW_SET_Pos 5U /*!< SCB DCCSW: Set Position */ +#define SCB_DCCSW_SET_Msk (0x1FFUL << SCB_DCCSW_SET_Pos) /*!< SCB DCCSW: Set Mask */ + +/* SCB D-Cache Clean and Invalidate by Set-way Register Definitions */ +#define SCB_DCCISW_WAY_Pos 30U /*!< SCB DCCISW: Way Position */ +#define SCB_DCCISW_WAY_Msk (3UL << SCB_DCCISW_WAY_Pos) /*!< SCB DCCISW: Way Mask */ + +#define SCB_DCCISW_SET_Pos 5U /*!< SCB DCCISW: Set Position */ +#define SCB_DCCISW_SET_Msk (0x1FFUL << SCB_DCCISW_SET_Pos) /*!< SCB DCCISW: Set Mask */ + +/*@} end of group CMSIS_SCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_ICB Implementation Control Block register (ICB) + \brief Type definitions for the Implementation Control Block Register + @{ + */ + +/** + \brief Structure type to access the Implementation Control Block (ICB). + */ +typedef struct +{ + uint32_t RESERVED0[1U]; + __IM uint32_t ICTR; /*!< Offset: 0x004 (R/ ) Interrupt Controller Type Register */ + __IOM uint32_t ACTLR; /*!< Offset: 0x008 (R/W) Auxiliary Control Register */ + __IOM uint32_t CPPWR; /*!< Offset: 0x00C (R/W) Coprocessor Power Control Register */ +} ICB_Type; + +/* Auxiliary Control Register Definitions */ +#define ICB_ACTLR_DISCRITAXIRUW_Pos 27U /*!< ACTLR: DISCRITAXIRUW Position */ +#define ICB_ACTLR_DISCRITAXIRUW_Msk (1UL << ICB_ACTLR_DISCRITAXIRUW_Pos) /*!< ACTLR: DISCRITAXIRUW Mask */ + +#define ICB_ACTLR_DISDI_Pos 16U /*!< ACTLR: DISDI Position */ +#define ICB_ACTLR_DISDI_Msk (3UL << ICB_ACTLR_DISDI_Pos) /*!< ACTLR: DISDI Mask */ + +#define ICB_ACTLR_DISCRITAXIRUR_Pos 15U /*!< ACTLR: DISCRITAXIRUR Position */ +#define ICB_ACTLR_DISCRITAXIRUR_Msk (1UL << ICB_ACTLR_DISCRITAXIRUR_Pos) /*!< ACTLR: DISCRITAXIRUR Mask */ + +#define ICB_ACTLR_EVENTBUSEN_Pos 14U /*!< ACTLR: EVENTBUSEN Position */ +#define ICB_ACTLR_EVENTBUSEN_Msk (1UL << ICB_ACTLR_EVENTBUSEN_Pos) /*!< ACTLR: EVENTBUSEN Mask */ + +#define ICB_ACTLR_EVENTBUSEN_S_Pos 13U /*!< ACTLR: EVENTBUSEN_S Position */ +#define ICB_ACTLR_EVENTBUSEN_S_Msk (1UL << ICB_ACTLR_EVENTBUSEN_S_Pos) /*!< ACTLR: EVENTBUSEN_S Mask */ + +#define ICB_ACTLR_DISITMATBFLUSH_Pos 12U /*!< ACTLR: DISITMATBFLUSH Position */ +#define ICB_ACTLR_DISITMATBFLUSH_Msk (1UL << ICB_ACTLR_DISITMATBFLUSH_Pos) /*!< ACTLR: DISITMATBFLUSH Mask */ + +#define ICB_ACTLR_DISNWAMODE_Pos 11U /*!< ACTLR: DISNWAMODE Position */ +#define ICB_ACTLR_DISNWAMODE_Msk (1UL << ICB_ACTLR_DISNWAMODE_Pos) /*!< ACTLR: DISNWAMODE Mask */ + +#define ICB_ACTLR_FPEXCODIS_Pos 10U /*!< ACTLR: FPEXCODIS Position */ +#define ICB_ACTLR_FPEXCODIS_Msk (1UL << ICB_ACTLR_FPEXCODIS_Pos) /*!< ACTLR: FPEXCODIS Mask */ + +#define ICB_ACTLR_DISOLAP_Pos 7U /*!< ACTLR: DISOLAP Position */ +#define ICB_ACTLR_DISOLAP_Msk (1UL << ICB_ACTLR_DISOLAP_Pos) /*!< ACTLR: DISOLAP Mask */ + +#define ICB_ACTLR_DISOLAPS_Pos 6U /*!< ACTLR: DISOLAPS Position */ +#define ICB_ACTLR_DISOLAPS_Msk (1UL << ICB_ACTLR_DISOLAPS_Pos) /*!< ACTLR: DISOLAPS Mask */ + +#define ICB_ACTLR_DISLOBR_Pos 5U /*!< ACTLR: DISLOBR Position */ +#define ICB_ACTLR_DISLOBR_Msk (1UL << ICB_ACTLR_DISLOBR_Pos) /*!< ACTLR: DISLOBR Mask */ + +#define ICB_ACTLR_DISLO_Pos 4U /*!< ACTLR: DISLO Position */ +#define ICB_ACTLR_DISLO_Msk (1UL << ICB_ACTLR_DISLO_Pos) /*!< ACTLR: DISLO Mask */ + +#define ICB_ACTLR_DISLOLEP_Pos 3U /*!< ACTLR: DISLOLEP Position */ +#define ICB_ACTLR_DISLOLEP_Msk (1UL << ICB_ACTLR_DISLOLEP_Pos) /*!< ACTLR: DISLOLEP Mask */ + +#define ICB_ACTLR_DISFOLD_Pos 2U /*!< ACTLR: DISFOLD Position */ +#define ICB_ACTLR_DISFOLD_Msk (1UL << ICB_ACTLR_DISFOLD_Pos) /*!< ACTLR: DISFOLD Mask */ + +/* Interrupt Controller Type Register Definitions */ +#define ICB_ICTR_INTLINESNUM_Pos 0U /*!< ICTR: INTLINESNUM Position */ +#define ICB_ICTR_INTLINESNUM_Msk (0xFUL /*<< ICB_ICTR_INTLINESNUM_Pos*/) /*!< ICTR: INTLINESNUM Mask */ + +/*@} end of group CMSIS_ICB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SysTick System Tick Timer (SysTick) + \brief Type definitions for the System Timer Registers. + @{ + */ + +/** + \brief Structure type to access the System Timer (SysTick). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SysTick Control and Status Register */ + __IOM uint32_t LOAD; /*!< Offset: 0x004 (R/W) SysTick Reload Value Register */ + __IOM uint32_t VAL; /*!< Offset: 0x008 (R/W) SysTick Current Value Register */ + __IM uint32_t CALIB; /*!< Offset: 0x00C (R/ ) SysTick Calibration Register */ +} SysTick_Type; + +/* SysTick Control / Status Register Definitions */ +#define SysTick_CTRL_COUNTFLAG_Pos 16U /*!< SysTick CTRL: COUNTFLAG Position */ +#define SysTick_CTRL_COUNTFLAG_Msk (1UL << SysTick_CTRL_COUNTFLAG_Pos) /*!< SysTick CTRL: COUNTFLAG Mask */ + +#define SysTick_CTRL_CLKSOURCE_Pos 2U /*!< SysTick CTRL: CLKSOURCE Position */ +#define SysTick_CTRL_CLKSOURCE_Msk (1UL << SysTick_CTRL_CLKSOURCE_Pos) /*!< SysTick CTRL: CLKSOURCE Mask */ + +#define SysTick_CTRL_TICKINT_Pos 1U /*!< SysTick CTRL: TICKINT Position */ +#define SysTick_CTRL_TICKINT_Msk (1UL << SysTick_CTRL_TICKINT_Pos) /*!< SysTick CTRL: TICKINT Mask */ + +#define SysTick_CTRL_ENABLE_Pos 0U /*!< SysTick CTRL: ENABLE Position */ +#define SysTick_CTRL_ENABLE_Msk (1UL /*<< SysTick_CTRL_ENABLE_Pos*/) /*!< SysTick CTRL: ENABLE Mask */ + +/* SysTick Reload Register Definitions */ +#define SysTick_LOAD_RELOAD_Pos 0U /*!< SysTick LOAD: RELOAD Position */ +#define SysTick_LOAD_RELOAD_Msk (0xFFFFFFUL /*<< SysTick_LOAD_RELOAD_Pos*/) /*!< SysTick LOAD: RELOAD Mask */ + +/* SysTick Current Register Definitions */ +#define SysTick_VAL_CURRENT_Pos 0U /*!< SysTick VAL: CURRENT Position */ +#define SysTick_VAL_CURRENT_Msk (0xFFFFFFUL /*<< SysTick_VAL_CURRENT_Pos*/) /*!< SysTick VAL: CURRENT Mask */ + +/* SysTick Calibration Register Definitions */ +#define SysTick_CALIB_NOREF_Pos 31U /*!< SysTick CALIB: NOREF Position */ +#define SysTick_CALIB_NOREF_Msk (1UL << SysTick_CALIB_NOREF_Pos) /*!< SysTick CALIB: NOREF Mask */ + +#define SysTick_CALIB_SKEW_Pos 30U /*!< SysTick CALIB: SKEW Position */ +#define SysTick_CALIB_SKEW_Msk (1UL << SysTick_CALIB_SKEW_Pos) /*!< SysTick CALIB: SKEW Mask */ + +#define SysTick_CALIB_TENMS_Pos 0U /*!< SysTick CALIB: TENMS Position */ +#define SysTick_CALIB_TENMS_Msk (0xFFFFFFUL /*<< SysTick_CALIB_TENMS_Pos*/) /*!< SysTick CALIB: TENMS Mask */ + +/*@} end of group CMSIS_SysTick */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_ITM Instrumentation Trace Macrocell (ITM) + \brief Type definitions for the Instrumentation Trace Macrocell (ITM) + @{ + */ + +/** + \brief Structure type to access the Instrumentation Trace Macrocell Register (ITM). + */ +typedef struct +{ + __OM union + { + __OM uint8_t u8; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 8-bit */ + __OM uint16_t u16; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 16-bit */ + __OM uint32_t u32; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 32-bit */ + } PORT [32U]; /*!< Offset: 0x000 ( /W) ITM Stimulus Port Registers */ + uint32_t RESERVED0[864U]; + __IOM uint32_t TER; /*!< Offset: 0xE00 (R/W) ITM Trace Enable Register */ + uint32_t RESERVED1[15U]; + __IOM uint32_t TPR; /*!< Offset: 0xE40 (R/W) ITM Trace Privilege Register */ + uint32_t RESERVED2[15U]; + __IOM uint32_t TCR; /*!< Offset: 0xE80 (R/W) ITM Trace Control Register */ + uint32_t RESERVED3[32U]; + uint32_t RESERVED4[43U]; + __OM uint32_t LAR; /*!< Offset: 0xFB0 ( /W) ITM Lock Access Register */ + __IM uint32_t LSR; /*!< Offset: 0xFB4 (R/ ) ITM Lock Status Register */ + uint32_t RESERVED5[1U]; + __IM uint32_t DEVARCH; /*!< Offset: 0xFBC (R/ ) ITM Device Architecture Register */ + uint32_t RESERVED6[3U]; + __IM uint32_t DEVTYPE; /*!< Offset: 0xFCC (R/ ) ITM Device Type Register */ + __IM uint32_t PID4; /*!< Offset: 0xFD0 (R/ ) ITM Peripheral Identification Register #4 */ + __IM uint32_t PID5; /*!< Offset: 0xFD4 (R/ ) ITM Peripheral Identification Register #5 */ + __IM uint32_t PID6; /*!< Offset: 0xFD8 (R/ ) ITM Peripheral Identification Register #6 */ + __IM uint32_t PID7; /*!< Offset: 0xFDC (R/ ) ITM Peripheral Identification Register #7 */ + __IM uint32_t PID0; /*!< Offset: 0xFE0 (R/ ) ITM Peripheral Identification Register #0 */ + __IM uint32_t PID1; /*!< Offset: 0xFE4 (R/ ) ITM Peripheral Identification Register #1 */ + __IM uint32_t PID2; /*!< Offset: 0xFE8 (R/ ) ITM Peripheral Identification Register #2 */ + __IM uint32_t PID3; /*!< Offset: 0xFEC (R/ ) ITM Peripheral Identification Register #3 */ + __IM uint32_t CID0; /*!< Offset: 0xFF0 (R/ ) ITM Component Identification Register #0 */ + __IM uint32_t CID1; /*!< Offset: 0xFF4 (R/ ) ITM Component Identification Register #1 */ + __IM uint32_t CID2; /*!< Offset: 0xFF8 (R/ ) ITM Component Identification Register #2 */ + __IM uint32_t CID3; /*!< Offset: 0xFFC (R/ ) ITM Component Identification Register #3 */ +} ITM_Type; + +/* ITM Stimulus Port Register Definitions */ +#define ITM_STIM_DISABLED_Pos 1U /*!< ITM STIM: DISABLED Position */ +#define ITM_STIM_DISABLED_Msk (0x1UL << ITM_STIM_DISABLED_Pos) /*!< ITM STIM: DISABLED Mask */ + +#define ITM_STIM_FIFOREADY_Pos 0U /*!< ITM STIM: FIFOREADY Position */ +#define ITM_STIM_FIFOREADY_Msk (0x1UL /*<< ITM_STIM_FIFOREADY_Pos*/) /*!< ITM STIM: FIFOREADY Mask */ + +/* ITM Trace Privilege Register Definitions */ +#define ITM_TPR_PRIVMASK_Pos 0U /*!< ITM TPR: PRIVMASK Position */ +#define ITM_TPR_PRIVMASK_Msk (0xFUL /*<< ITM_TPR_PRIVMASK_Pos*/) /*!< ITM TPR: PRIVMASK Mask */ + +/* ITM Trace Control Register Definitions */ +#define ITM_TCR_BUSY_Pos 23U /*!< ITM TCR: BUSY Position */ +#define ITM_TCR_BUSY_Msk (1UL << ITM_TCR_BUSY_Pos) /*!< ITM TCR: BUSY Mask */ + +#define ITM_TCR_TRACEBUSID_Pos 16U /*!< ITM TCR: ATBID Position */ +#define ITM_TCR_TRACEBUSID_Msk (0x7FUL << ITM_TCR_TRACEBUSID_Pos) /*!< ITM TCR: ATBID Mask */ + +#define ITM_TCR_GTSFREQ_Pos 10U /*!< ITM TCR: Global timestamp frequency Position */ +#define ITM_TCR_GTSFREQ_Msk (3UL << ITM_TCR_GTSFREQ_Pos) /*!< ITM TCR: Global timestamp frequency Mask */ + +#define ITM_TCR_TSPRESCALE_Pos 8U /*!< ITM TCR: TSPRESCALE Position */ +#define ITM_TCR_TSPRESCALE_Msk (3UL << ITM_TCR_TSPRESCALE_Pos) /*!< ITM TCR: TSPRESCALE Mask */ + +#define ITM_TCR_STALLENA_Pos 5U /*!< ITM TCR: STALLENA Position */ +#define ITM_TCR_STALLENA_Msk (1UL << ITM_TCR_STALLENA_Pos) /*!< ITM TCR: STALLENA Mask */ + +#define ITM_TCR_SWOENA_Pos 4U /*!< ITM TCR: SWOENA Position */ +#define ITM_TCR_SWOENA_Msk (1UL << ITM_TCR_SWOENA_Pos) /*!< ITM TCR: SWOENA Mask */ + +#define ITM_TCR_DWTENA_Pos 3U /*!< ITM TCR: DWTENA Position */ +#define ITM_TCR_DWTENA_Msk (1UL << ITM_TCR_DWTENA_Pos) /*!< ITM TCR: DWTENA Mask */ + +#define ITM_TCR_SYNCENA_Pos 2U /*!< ITM TCR: SYNCENA Position */ +#define ITM_TCR_SYNCENA_Msk (1UL << ITM_TCR_SYNCENA_Pos) /*!< ITM TCR: SYNCENA Mask */ + +#define ITM_TCR_TSENA_Pos 1U /*!< ITM TCR: TSENA Position */ +#define ITM_TCR_TSENA_Msk (1UL << ITM_TCR_TSENA_Pos) /*!< ITM TCR: TSENA Mask */ + +#define ITM_TCR_ITMENA_Pos 0U /*!< ITM TCR: ITM Enable bit Position */ +#define ITM_TCR_ITMENA_Msk (1UL /*<< ITM_TCR_ITMENA_Pos*/) /*!< ITM TCR: ITM Enable bit Mask */ + +/* ITM Lock Status Register Definitions */ +#define ITM_LSR_ByteAcc_Pos 2U /*!< ITM LSR: ByteAcc Position */ +#define ITM_LSR_ByteAcc_Msk (1UL << ITM_LSR_ByteAcc_Pos) /*!< ITM LSR: ByteAcc Mask */ + +#define ITM_LSR_Access_Pos 1U /*!< ITM LSR: Access Position */ +#define ITM_LSR_Access_Msk (1UL << ITM_LSR_Access_Pos) /*!< ITM LSR: Access Mask */ + +#define ITM_LSR_Present_Pos 0U /*!< ITM LSR: Present Position */ +#define ITM_LSR_Present_Msk (1UL /*<< ITM_LSR_Present_Pos*/) /*!< ITM LSR: Present Mask */ + +/*@}*/ /* end of group CMSIS_ITM */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_DWT Data Watchpoint and Trace (DWT) + \brief Type definitions for the Data Watchpoint and Trace (DWT) + @{ + */ + +/** + \brief Structure type to access the Data Watchpoint and Trace Register (DWT). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) Control Register */ + __IOM uint32_t CYCCNT; /*!< Offset: 0x004 (R/W) Cycle Count Register */ + __IOM uint32_t CPICNT; /*!< Offset: 0x008 (R/W) CPI Count Register */ + __IOM uint32_t EXCCNT; /*!< Offset: 0x00C (R/W) Exception Overhead Count Register */ + __IOM uint32_t SLEEPCNT; /*!< Offset: 0x010 (R/W) Sleep Count Register */ + __IOM uint32_t LSUCNT; /*!< Offset: 0x014 (R/W) LSU Count Register */ + __IOM uint32_t FOLDCNT; /*!< Offset: 0x018 (R/W) Folded-instruction Count Register */ + __IM uint32_t PCSR; /*!< Offset: 0x01C (R/ ) Program Counter Sample Register */ + __IOM uint32_t COMP0; /*!< Offset: 0x020 (R/W) Comparator Register 0 */ + uint32_t RESERVED1[1U]; + __IOM uint32_t FUNCTION0; /*!< Offset: 0x028 (R/W) Function Register 0 */ + uint32_t RESERVED2[1U]; + __IOM uint32_t COMP1; /*!< Offset: 0x030 (R/W) Comparator Register 1 */ + uint32_t RESERVED3[1U]; + __IOM uint32_t FUNCTION1; /*!< Offset: 0x038 (R/W) Function Register 1 */ + uint32_t RESERVED4[1U]; + __IOM uint32_t COMP2; /*!< Offset: 0x040 (R/W) Comparator Register 2 */ + uint32_t RESERVED5[1U]; + __IOM uint32_t FUNCTION2; /*!< Offset: 0x048 (R/W) Function Register 2 */ + uint32_t RESERVED6[1U]; + __IOM uint32_t COMP3; /*!< Offset: 0x050 (R/W) Comparator Register 3 */ + uint32_t RESERVED7[1U]; + __IOM uint32_t FUNCTION3; /*!< Offset: 0x058 (R/W) Function Register 3 */ + uint32_t RESERVED8[1U]; + __IOM uint32_t COMP4; /*!< Offset: 0x060 (R/W) Comparator Register 4 */ + uint32_t RESERVED9[1U]; + __IOM uint32_t FUNCTION4; /*!< Offset: 0x068 (R/W) Function Register 4 */ + uint32_t RESERVED10[1U]; + __IOM uint32_t COMP5; /*!< Offset: 0x070 (R/W) Comparator Register 5 */ + uint32_t RESERVED11[1U]; + __IOM uint32_t FUNCTION5; /*!< Offset: 0x078 (R/W) Function Register 5 */ + uint32_t RESERVED12[1U]; + __IOM uint32_t COMP6; /*!< Offset: 0x080 (R/W) Comparator Register 6 */ + uint32_t RESERVED13[1U]; + __IOM uint32_t FUNCTION6; /*!< Offset: 0x088 (R/W) Function Register 6 */ + uint32_t RESERVED14[1U]; + __IOM uint32_t COMP7; /*!< Offset: 0x090 (R/W) Comparator Register 7 */ + uint32_t RESERVED15[1U]; + __IOM uint32_t FUNCTION7; /*!< Offset: 0x098 (R/W) Function Register 7 */ + uint32_t RESERVED16[1U]; + __IOM uint32_t COMP8; /*!< Offset: 0x0A0 (R/W) Comparator Register 8 */ + uint32_t RESERVED17[1U]; + __IOM uint32_t FUNCTION8; /*!< Offset: 0x0A8 (R/W) Function Register 8 */ + uint32_t RESERVED18[1U]; + __IOM uint32_t COMP9; /*!< Offset: 0x0B0 (R/W) Comparator Register 9 */ + uint32_t RESERVED19[1U]; + __IOM uint32_t FUNCTION9; /*!< Offset: 0x0B8 (R/W) Function Register 9 */ + uint32_t RESERVED20[1U]; + __IOM uint32_t COMP10; /*!< Offset: 0x0C0 (R/W) Comparator Register 10 */ + uint32_t RESERVED21[1U]; + __IOM uint32_t FUNCTION10; /*!< Offset: 0x0C8 (R/W) Function Register 10 */ + uint32_t RESERVED22[1U]; + __IOM uint32_t COMP11; /*!< Offset: 0x0D0 (R/W) Comparator Register 11 */ + uint32_t RESERVED23[1U]; + __IOM uint32_t FUNCTION11; /*!< Offset: 0x0D8 (R/W) Function Register 11 */ + uint32_t RESERVED24[1U]; + __IOM uint32_t COMP12; /*!< Offset: 0x0E0 (R/W) Comparator Register 12 */ + uint32_t RESERVED25[1U]; + __IOM uint32_t FUNCTION12; /*!< Offset: 0x0E8 (R/W) Function Register 12 */ + uint32_t RESERVED26[1U]; + __IOM uint32_t COMP13; /*!< Offset: 0x0F0 (R/W) Comparator Register 13 */ + uint32_t RESERVED27[1U]; + __IOM uint32_t FUNCTION13; /*!< Offset: 0x0F8 (R/W) Function Register 13 */ + uint32_t RESERVED28[1U]; + __IOM uint32_t COMP14; /*!< Offset: 0x100 (R/W) Comparator Register 14 */ + uint32_t RESERVED29[1U]; + __IOM uint32_t FUNCTION14; /*!< Offset: 0x108 (R/W) Function Register 14 */ + uint32_t RESERVED30[1U]; + __IOM uint32_t COMP15; /*!< Offset: 0x110 (R/W) Comparator Register 15 */ + uint32_t RESERVED31[1U]; + __IOM uint32_t FUNCTION15; /*!< Offset: 0x118 (R/W) Function Register 15 */ + uint32_t RESERVED32[934U]; + __IM uint32_t LSR; /*!< Offset: 0xFB4 (R ) Lock Status Register */ + uint32_t RESERVED33[1U]; + __IM uint32_t DEVARCH; /*!< Offset: 0xFBC (R/ ) Device Architecture Register */ +} DWT_Type; + +/* DWT Control Register Definitions */ +#define DWT_CTRL_NUMCOMP_Pos 28U /*!< DWT CTRL: NUMCOMP Position */ +#define DWT_CTRL_NUMCOMP_Msk (0xFUL << DWT_CTRL_NUMCOMP_Pos) /*!< DWT CTRL: NUMCOMP Mask */ + +#define DWT_CTRL_NOTRCPKT_Pos 27U /*!< DWT CTRL: NOTRCPKT Position */ +#define DWT_CTRL_NOTRCPKT_Msk (0x1UL << DWT_CTRL_NOTRCPKT_Pos) /*!< DWT CTRL: NOTRCPKT Mask */ + +#define DWT_CTRL_NOEXTTRIG_Pos 26U /*!< DWT CTRL: NOEXTTRIG Position */ +#define DWT_CTRL_NOEXTTRIG_Msk (0x1UL << DWT_CTRL_NOEXTTRIG_Pos) /*!< DWT CTRL: NOEXTTRIG Mask */ + +#define DWT_CTRL_NOCYCCNT_Pos 25U /*!< DWT CTRL: NOCYCCNT Position */ +#define DWT_CTRL_NOCYCCNT_Msk (0x1UL << DWT_CTRL_NOCYCCNT_Pos) /*!< DWT CTRL: NOCYCCNT Mask */ + +#define DWT_CTRL_NOPRFCNT_Pos 24U /*!< DWT CTRL: NOPRFCNT Position */ +#define DWT_CTRL_NOPRFCNT_Msk (0x1UL << DWT_CTRL_NOPRFCNT_Pos) /*!< DWT CTRL: NOPRFCNT Mask */ + +#define DWT_CTRL_CYCDISS_Pos 23U /*!< DWT CTRL: CYCDISS Position */ +#define DWT_CTRL_CYCDISS_Msk (0x1UL << DWT_CTRL_CYCDISS_Pos) /*!< DWT CTRL: CYCDISS Mask */ + +#define DWT_CTRL_CYCEVTENA_Pos 22U /*!< DWT CTRL: CYCEVTENA Position */ +#define DWT_CTRL_CYCEVTENA_Msk (0x1UL << DWT_CTRL_CYCEVTENA_Pos) /*!< DWT CTRL: CYCEVTENA Mask */ + +#define DWT_CTRL_FOLDEVTENA_Pos 21U /*!< DWT CTRL: FOLDEVTENA Position */ +#define DWT_CTRL_FOLDEVTENA_Msk (0x1UL << DWT_CTRL_FOLDEVTENA_Pos) /*!< DWT CTRL: FOLDEVTENA Mask */ + +#define DWT_CTRL_LSUEVTENA_Pos 20U /*!< DWT CTRL: LSUEVTENA Position */ +#define DWT_CTRL_LSUEVTENA_Msk (0x1UL << DWT_CTRL_LSUEVTENA_Pos) /*!< DWT CTRL: LSUEVTENA Mask */ + +#define DWT_CTRL_SLEEPEVTENA_Pos 19U /*!< DWT CTRL: SLEEPEVTENA Position */ +#define DWT_CTRL_SLEEPEVTENA_Msk (0x1UL << DWT_CTRL_SLEEPEVTENA_Pos) /*!< DWT CTRL: SLEEPEVTENA Mask */ + +#define DWT_CTRL_EXCEVTENA_Pos 18U /*!< DWT CTRL: EXCEVTENA Position */ +#define DWT_CTRL_EXCEVTENA_Msk (0x1UL << DWT_CTRL_EXCEVTENA_Pos) /*!< DWT CTRL: EXCEVTENA Mask */ + +#define DWT_CTRL_CPIEVTENA_Pos 17U /*!< DWT CTRL: CPIEVTENA Position */ +#define DWT_CTRL_CPIEVTENA_Msk (0x1UL << DWT_CTRL_CPIEVTENA_Pos) /*!< DWT CTRL: CPIEVTENA Mask */ + +#define DWT_CTRL_EXCTRCENA_Pos 16U /*!< DWT CTRL: EXCTRCENA Position */ +#define DWT_CTRL_EXCTRCENA_Msk (0x1UL << DWT_CTRL_EXCTRCENA_Pos) /*!< DWT CTRL: EXCTRCENA Mask */ + +#define DWT_CTRL_PCSAMPLENA_Pos 12U /*!< DWT CTRL: PCSAMPLENA Position */ +#define DWT_CTRL_PCSAMPLENA_Msk (0x1UL << DWT_CTRL_PCSAMPLENA_Pos) /*!< DWT CTRL: PCSAMPLENA Mask */ + +#define DWT_CTRL_SYNCTAP_Pos 10U /*!< DWT CTRL: SYNCTAP Position */ +#define DWT_CTRL_SYNCTAP_Msk (0x3UL << DWT_CTRL_SYNCTAP_Pos) /*!< DWT CTRL: SYNCTAP Mask */ + +#define DWT_CTRL_CYCTAP_Pos 9U /*!< DWT CTRL: CYCTAP Position */ +#define DWT_CTRL_CYCTAP_Msk (0x1UL << DWT_CTRL_CYCTAP_Pos) /*!< DWT CTRL: CYCTAP Mask */ + +#define DWT_CTRL_POSTINIT_Pos 5U /*!< DWT CTRL: POSTINIT Position */ +#define DWT_CTRL_POSTINIT_Msk (0xFUL << DWT_CTRL_POSTINIT_Pos) /*!< DWT CTRL: POSTINIT Mask */ + +#define DWT_CTRL_POSTPRESET_Pos 1U /*!< DWT CTRL: POSTPRESET Position */ +#define DWT_CTRL_POSTPRESET_Msk (0xFUL << DWT_CTRL_POSTPRESET_Pos) /*!< DWT CTRL: POSTPRESET Mask */ + +#define DWT_CTRL_CYCCNTENA_Pos 0U /*!< DWT CTRL: CYCCNTENA Position */ +#define DWT_CTRL_CYCCNTENA_Msk (0x1UL /*<< DWT_CTRL_CYCCNTENA_Pos*/) /*!< DWT CTRL: CYCCNTENA Mask */ + +/* DWT CPI Count Register Definitions */ +#define DWT_CPICNT_CPICNT_Pos 0U /*!< DWT CPICNT: CPICNT Position */ +#define DWT_CPICNT_CPICNT_Msk (0xFFUL /*<< DWT_CPICNT_CPICNT_Pos*/) /*!< DWT CPICNT: CPICNT Mask */ + +/* DWT Exception Overhead Count Register Definitions */ +#define DWT_EXCCNT_EXCCNT_Pos 0U /*!< DWT EXCCNT: EXCCNT Position */ +#define DWT_EXCCNT_EXCCNT_Msk (0xFFUL /*<< DWT_EXCCNT_EXCCNT_Pos*/) /*!< DWT EXCCNT: EXCCNT Mask */ + +/* DWT Sleep Count Register Definitions */ +#define DWT_SLEEPCNT_SLEEPCNT_Pos 0U /*!< DWT SLEEPCNT: SLEEPCNT Position */ +#define DWT_SLEEPCNT_SLEEPCNT_Msk (0xFFUL /*<< DWT_SLEEPCNT_SLEEPCNT_Pos*/) /*!< DWT SLEEPCNT: SLEEPCNT Mask */ + +/* DWT LSU Count Register Definitions */ +#define DWT_LSUCNT_LSUCNT_Pos 0U /*!< DWT LSUCNT: LSUCNT Position */ +#define DWT_LSUCNT_LSUCNT_Msk (0xFFUL /*<< DWT_LSUCNT_LSUCNT_Pos*/) /*!< DWT LSUCNT: LSUCNT Mask */ + +/* DWT Folded-instruction Count Register Definitions */ +#define DWT_FOLDCNT_FOLDCNT_Pos 0U /*!< DWT FOLDCNT: FOLDCNT Position */ +#define DWT_FOLDCNT_FOLDCNT_Msk (0xFFUL /*<< DWT_FOLDCNT_FOLDCNT_Pos*/) /*!< DWT FOLDCNT: FOLDCNT Mask */ + +/* DWT Comparator Function Register Definitions */ +#define DWT_FUNCTION_ID_Pos 27U /*!< DWT FUNCTION: ID Position */ +#define DWT_FUNCTION_ID_Msk (0x1FUL << DWT_FUNCTION_ID_Pos) /*!< DWT FUNCTION: ID Mask */ + +#define DWT_FUNCTION_MATCHED_Pos 24U /*!< DWT FUNCTION: MATCHED Position */ +#define DWT_FUNCTION_MATCHED_Msk (0x1UL << DWT_FUNCTION_MATCHED_Pos) /*!< DWT FUNCTION: MATCHED Mask */ + +#define DWT_FUNCTION_DATAVSIZE_Pos 10U /*!< DWT FUNCTION: DATAVSIZE Position */ +#define DWT_FUNCTION_DATAVSIZE_Msk (0x3UL << DWT_FUNCTION_DATAVSIZE_Pos) /*!< DWT FUNCTION: DATAVSIZE Mask */ + +#define DWT_FUNCTION_ACTION_Pos 4U /*!< DWT FUNCTION: ACTION Position */ +#define DWT_FUNCTION_ACTION_Msk (0x1UL << DWT_FUNCTION_ACTION_Pos) /*!< DWT FUNCTION: ACTION Mask */ + +#define DWT_FUNCTION_MATCH_Pos 0U /*!< DWT FUNCTION: MATCH Position */ +#define DWT_FUNCTION_MATCH_Msk (0xFUL /*<< DWT_FUNCTION_MATCH_Pos*/) /*!< DWT FUNCTION: MATCH Mask */ + +/*@}*/ /* end of group CMSIS_DWT */ + + +/** + \ingroup CMSIS_core_register + \defgroup MemSysCtl_Type Memory System Control Registers (IMPLEMENTATION DEFINED) + \brief Type definitions for the Memory System Control Registers (MEMSYSCTL) + @{ + */ + +/** + \brief Structure type to access the Memory System Control Registers (MEMSYSCTL). + */ +typedef struct +{ + __IOM uint32_t MSCR; /*!< Offset: 0x000 (R/W) Memory System Control Register */ + __IOM uint32_t PFCR; /*!< Offset: 0x004 (R/W) Prefetcher Control Register */ + uint32_t RESERVED1[2U]; + __IOM uint32_t ITCMCR; /*!< Offset: 0x010 (R/W) ITCM Control Register */ + __IOM uint32_t DTCMCR; /*!< Offset: 0x014 (R/W) DTCM Control Register */ + __IOM uint32_t PAHBCR; /*!< Offset: 0x018 (R/W) P-AHB Control Register */ + uint32_t RESERVED2[313U]; + __IOM uint32_t ITGU_CTRL; /*!< Offset: 0x500 (R/W) ITGU Control Register */ + __IOM uint32_t ITGU_CFG; /*!< Offset: 0x504 (R/W) ITGU Configuration Register */ + uint32_t RESERVED3[2U]; + __IOM uint32_t ITGU_LUT[16U]; /*!< Offset: 0x510 (R/W) ITGU Look Up Table Register */ + uint32_t RESERVED4[44U]; + __IOM uint32_t DTGU_CTRL; /*!< Offset: 0x600 (R/W) DTGU Control Registers */ + __IOM uint32_t DTGU_CFG; /*!< Offset: 0x604 (R/W) DTGU Configuration Register */ + uint32_t RESERVED5[2U]; + __IOM uint32_t DTGU_LUT[16U]; /*!< Offset: 0x610 (R/W) DTGU Look Up Table Register */ +} MemSysCtl_Type; + +/* MEMSYSCTL Memory System Control Register (MSCR) Register Definitions */ +#define MEMSYSCTL_MSCR_CPWRDN_Pos 17U /*!< MEMSYSCTL MSCR: CPWRDN Position */ +#define MEMSYSCTL_MSCR_CPWRDN_Msk (0x1UL << MEMSYSCTL_MSCR_CPWRDN_Pos) /*!< MEMSYSCTL MSCR: CPWRDN Mask */ + +#define MEMSYSCTL_MSCR_DCCLEAN_Pos 16U /*!< MEMSYSCTL MSCR: DCCLEAN Position */ +#define MEMSYSCTL_MSCR_DCCLEAN_Msk (0x1UL << MEMSYSCTL_MSCR_DCCLEAN_Pos) /*!< MEMSYSCTL MSCR: DCCLEAN Mask */ + +#define MEMSYSCTL_MSCR_ICACTIVE_Pos 13U /*!< MEMSYSCTL MSCR: ICACTIVE Position */ +#define MEMSYSCTL_MSCR_ICACTIVE_Msk (0x1UL << MEMSYSCTL_MSCR_ICACTIVE_Pos) /*!< MEMSYSCTL MSCR: ICACTIVE Mask */ + +#define MEMSYSCTL_MSCR_DCACTIVE_Pos 12U /*!< MEMSYSCTL MSCR: DCACTIVE Position */ +#define MEMSYSCTL_MSCR_DCACTIVE_Msk (0x1UL << MEMSYSCTL_MSCR_DCACTIVE_Pos) /*!< MEMSYSCTL MSCR: DCACTIVE Mask */ + +#define MEMSYSCTL_MSCR_TECCCHKDIS_Pos 4U /*!< MEMSYSCTL MSCR: TECCCHKDIS Position */ +#define MEMSYSCTL_MSCR_TECCCHKDIS_Msk (0x1UL << MEMSYSCTL_MSCR_TECCCHKDIS_Pos) /*!< MEMSYSCTL MSCR: TECCCHKDIS Mask */ + +#define MEMSYSCTL_MSCR_EVECCFAULT_Pos 3U /*!< MEMSYSCTL MSCR: EVECCFAULT Position */ +#define MEMSYSCTL_MSCR_EVECCFAULT_Msk (0x1UL << MEMSYSCTL_MSCR_EVECCFAULT_Pos) /*!< MEMSYSCTL MSCR: EVECCFAULT Mask */ + +#define MEMSYSCTL_MSCR_FORCEWT_Pos 2U /*!< MEMSYSCTL MSCR: FORCEWT Position */ +#define MEMSYSCTL_MSCR_FORCEWT_Msk (0x1UL << MEMSYSCTL_MSCR_FORCEWT_Pos) /*!< MEMSYSCTL MSCR: FORCEWT Mask */ + +#define MEMSYSCTL_MSCR_ECCEN_Pos 1U /*!< MEMSYSCTL MSCR: ECCEN Position */ +#define MEMSYSCTL_MSCR_ECCEN_Msk (0x1UL << MEMSYSCTL_MSCR_ECCEN_Pos) /*!< MEMSYSCTL MSCR: ECCEN Mask */ + +/* MEMSYSCTL Prefetcher Control Register (PFCR) Register Definitions */ +#define MEMSYSCTL_PFCR_MAX_OS_Pos 7U /*!< MEMSYSCTL PFCR: MAX_OS Position */ +#define MEMSYSCTL_PFCR_MAX_OS_Msk (0x7UL << MEMSYSCTL_PFCR_MAX_OS_Pos) /*!< MEMSYSCTL PFCR: MAX_OS Mask */ + +#define MEMSYSCTL_PFCR_MAX_LA_Pos 4U /*!< MEMSYSCTL PFCR: MAX_LA Position */ +#define MEMSYSCTL_PFCR_MAX_LA_Msk (0x7UL << MEMSYSCTL_PFCR_MAX_LA_Pos) /*!< MEMSYSCTL PFCR: MAX_LA Mask */ + +#define MEMSYSCTL_PFCR_MIN_LA_Pos 1U /*!< MEMSYSCTL PFCR: MIN_LA Position */ +#define MEMSYSCTL_PFCR_MIN_LA_Msk (0x7UL << MEMSYSCTL_PFCR_MIN_LA_Pos) /*!< MEMSYSCTL PFCR: MIN_LA Mask */ + +#define MEMSYSCTL_PFCR_ENABLE_Pos 0U /*!< MEMSYSCTL PFCR: ENABLE Position */ +#define MEMSYSCTL_PFCR_ENABLE_Msk (0x1UL /*<< MEMSYSCTL_PFCR_ENABLE_Pos*/) /*!< MEMSYSCTL PFCR: ENABLE Mask */ + +/* MEMSYSCTL ITCM Control Register (ITCMCR) Register Definitions */ +#define MEMSYSCTL_ITCMCR_SZ_Pos 3U /*!< MEMSYSCTL ITCMCR: SZ Position */ +#define MEMSYSCTL_ITCMCR_SZ_Msk (0xFUL << MEMSYSCTL_ITCMCR_SZ_Pos) /*!< MEMSYSCTL ITCMCR: SZ Mask */ + +#define MEMSYSCTL_ITCMCR_EN_Pos 0U /*!< MEMSYSCTL ITCMCR: EN Position */ +#define MEMSYSCTL_ITCMCR_EN_Msk (0x1UL /*<< MEMSYSCTL_ITCMCR_EN_Pos*/) /*!< MEMSYSCTL ITCMCR: EN Mask */ + +/* MEMSYSCTL DTCM Control Register (DTCMCR) Register Definitions */ +#define MEMSYSCTL_DTCMCR_SZ_Pos 3U /*!< MEMSYSCTL DTCMCR: SZ Position */ +#define MEMSYSCTL_DTCMCR_SZ_Msk (0xFUL << MEMSYSCTL_DTCMCR_SZ_Pos) /*!< MEMSYSCTL DTCMCR: SZ Mask */ + +#define MEMSYSCTL_DTCMCR_EN_Pos 0U /*!< MEMSYSCTL DTCMCR: EN Position */ +#define MEMSYSCTL_DTCMCR_EN_Msk (0x1UL /*<< MEMSYSCTL_DTCMCR_EN_Pos*/) /*!< MEMSYSCTL DTCMCR: EN Mask */ + +/* MEMSYSCTL P-AHB Control Register (PAHBCR) Register Definitions */ +#define MEMSYSCTL_PAHBCR_SZ_Pos 1U /*!< MEMSYSCTL PAHBCR: SZ Position */ +#define MEMSYSCTL_PAHBCR_SZ_Msk (0x7UL << MEMSYSCTL_PAHBCR_SZ_Pos) /*!< MEMSYSCTL PAHBCR: SZ Mask */ + +#define MEMSYSCTL_PAHBCR_EN_Pos 0U /*!< MEMSYSCTL PAHBCR: EN Position */ +#define MEMSYSCTL_PAHBCR_EN_Msk (0x1UL /*<< MEMSYSCTL_PAHBCR_EN_Pos*/) /*!< MEMSYSCTL PAHBCR: EN Mask */ + +/* MEMSYSCTL ITGU Control Register (ITGU_CTRL) Register Definitions */ +#define MEMSYSCTL_ITGU_CTRL_DEREN_Pos 1U /*!< MEMSYSCTL ITGU_CTRL: DEREN Position */ +#define MEMSYSCTL_ITGU_CTRL_DEREN_Msk (0x1UL << MEMSYSCTL_ITGU_CTRL_DEREN_Pos) /*!< MEMSYSCTL ITGU_CTRL: DEREN Mask */ + +#define MEMSYSCTL_ITGU_CTRL_DBFEN_Pos 0U /*!< MEMSYSCTL ITGU_CTRL: DBFEN Position */ +#define MEMSYSCTL_ITGU_CTRL_DBFEN_Msk (0x1UL /*<< MEMSYSCTL_ITGU_CTRL_DBFEN_Pos*/) /*!< MEMSYSCTL ITGU_CTRL: DBFEN Mask */ + +/* MEMSYSCTL ITGU Configuration Register (ITGU_CFG) Register Definitions */ +#define MEMSYSCTL_ITGU_CFG_PRESENT_Pos 31U /*!< MEMSYSCTL ITGU_CFG: PRESENT Position */ +#define MEMSYSCTL_ITGU_CFG_PRESENT_Msk (0x1UL << MEMSYSCTL_ITGU_CFG_PRESENT_Pos) /*!< MEMSYSCTL ITGU_CFG: PRESENT Mask */ + +#define MEMSYSCTL_ITGU_CFG_NUMBLKS_Pos 8U /*!< MEMSYSCTL ITGU_CFG: NUMBLKS Position */ +#define MEMSYSCTL_ITGU_CFG_NUMBLKS_Msk (0xFUL << MEMSYSCTL_ITGU_CFG_NUMBLKS_Pos) /*!< MEMSYSCTL ITGU_CFG: NUMBLKS Mask */ + +#define MEMSYSCTL_ITGU_CFG_BLKSZ_Pos 0U /*!< MEMSYSCTL ITGU_CFG: BLKSZ Position */ +#define MEMSYSCTL_ITGU_CFG_BLKSZ_Msk (0xFUL /*<< MEMSYSCTL_ITGU_CFG_BLKSZ_Pos*/) /*!< MEMSYSCTL ITGU_CFG: BLKSZ Mask */ + +/* MEMSYSCTL DTGU Control Registers (DTGU_CTRL) Register Definitions */ +#define MEMSYSCTL_DTGU_CTRL_DEREN_Pos 1U /*!< MEMSYSCTL DTGU_CTRL: DEREN Position */ +#define MEMSYSCTL_DTGU_CTRL_DEREN_Msk (0x1UL << MEMSYSCTL_DTGU_CTRL_DEREN_Pos) /*!< MEMSYSCTL DTGU_CTRL: DEREN Mask */ + +#define MEMSYSCTL_DTGU_CTRL_DBFEN_Pos 0U /*!< MEMSYSCTL DTGU_CTRL: DBFEN Position */ +#define MEMSYSCTL_DTGU_CTRL_DBFEN_Msk (0x1UL /*<< MEMSYSCTL_DTGU_CTRL_DBFEN_Pos*/) /*!< MEMSYSCTL DTGU_CTRL: DBFEN Mask */ + +/* MEMSYSCTL DTGU Configuration Register (DTGU_CFG) Register Definitions */ +#define MEMSYSCTL_DTGU_CFG_PRESENT_Pos 31U /*!< MEMSYSCTL DTGU_CFG: PRESENT Position */ +#define MEMSYSCTL_DTGU_CFG_PRESENT_Msk (0x1UL << MEMSYSCTL_DTGU_CFG_PRESENT_Pos) /*!< MEMSYSCTL DTGU_CFG: PRESENT Mask */ + +#define MEMSYSCTL_DTGU_CFG_NUMBLKS_Pos 8U /*!< MEMSYSCTL DTGU_CFG: NUMBLKS Position */ +#define MEMSYSCTL_DTGU_CFG_NUMBLKS_Msk (0xFUL << MEMSYSCTL_DTGU_CFG_NUMBLKS_Pos) /*!< MEMSYSCTL DTGU_CFG: NUMBLKS Mask */ + +#define MEMSYSCTL_DTGU_CFG_BLKSZ_Pos 0U /*!< MEMSYSCTL DTGU_CFG: BLKSZ Position */ +#define MEMSYSCTL_DTGU_CFG_BLKSZ_Msk (0xFUL /*<< MEMSYSCTL_DTGU_CFG_BLKSZ_Pos*/) /*!< MEMSYSCTL DTGU_CFG: BLKSZ Mask */ + + +/*@}*/ /* end of group MemSysCtl_Type */ + + +/** + \ingroup CMSIS_core_register + \defgroup PwrModCtl_Type Power Mode Control Registers + \brief Type definitions for the Power Mode Control Registers (PWRMODCTL) + @{ + */ + +/** + \brief Structure type to access the Power Mode Control Registers (PWRMODCTL). + */ +typedef struct +{ + __IOM uint32_t CPDLPSTATE; /*!< Offset: 0x000 (R/W) Core Power Domain Low Power State Register */ + __IOM uint32_t DPDLPSTATE; /*!< Offset: 0x004 (R/W) Debug Power Domain Low Power State Register */ +} PwrModCtl_Type; + +/* PWRMODCTL Core Power Domain Low Power State (CPDLPSTATE) Register Definitions */ +#define PWRMODCTL_CPDLPSTATE_RLPSTATE_Pos 8U /*!< PWRMODCTL CPDLPSTATE: RLPSTATE Position */ +#define PWRMODCTL_CPDLPSTATE_RLPSTATE_Msk (0x3UL << PWRMODCTL_CPDLPSTATE_RLPSTATE_Pos) /*!< PWRMODCTL CPDLPSTATE: RLPSTATE Mask */ + +#define PWRMODCTL_CPDLPSTATE_ELPSTATE_Pos 4U /*!< PWRMODCTL CPDLPSTATE: ELPSTATE Position */ +#define PWRMODCTL_CPDLPSTATE_ELPSTATE_Msk (0x3UL << PWRMODCTL_CPDLPSTATE_ELPSTATE_Pos) /*!< PWRMODCTL CPDLPSTATE: ELPSTATE Mask */ + +#define PWRMODCTL_CPDLPSTATE_CLPSTATE_Pos 0U /*!< PWRMODCTL CPDLPSTATE: CLPSTATE Position */ +#define PWRMODCTL_CPDLPSTATE_CLPSTATE_Msk (0x3UL /*<< PWRMODCTL_CPDLPSTATE_CLPSTATE_Pos*/) /*!< PWRMODCTL CPDLPSTATE: CLPSTATE Mask */ + +/* PWRMODCTL Debug Power Domain Low Power State (DPDLPSTATE) Register Definitions */ +#define PWRMODCTL_DPDLPSTATE_DLPSTATE_Pos 0U /*!< PWRMODCTL DPDLPSTATE: DLPSTATE Position */ +#define PWRMODCTL_DPDLPSTATE_DLPSTATE_Msk (0x3UL /*<< PWRMODCTL_DPDLPSTATE_DLPSTATE_Pos*/) /*!< PWRMODCTL DPDLPSTATE: DLPSTATE Mask */ + +/*@}*/ /* end of group PwrModCtl_Type */ + + +/** + \ingroup CMSIS_core_register + \defgroup EWIC_Type External Wakeup Interrupt Controller Registers + \brief Type definitions for the External Wakeup Interrupt Controller Registers (EWIC) + @{ + */ + +/** + \brief Structure type to access the External Wakeup Interrupt Controller Registers (EWIC). + */ +typedef struct +{ + __OM uint32_t EVENTSPR; /*!< Offset: 0x000 ( /W) Event Set Pending Register */ + uint32_t RESERVED0[31U]; + __IM uint32_t EVENTMASKA; /*!< Offset: 0x080 (R/W) Event Mask A Register */ + __IM uint32_t EVENTMASK[15]; /*!< Offset: 0x084 (R/W) Event Mask Register */ +} EWIC_Type; + +/* EWIC External Wakeup Interrupt Controller (EVENTSPR) Register Definitions */ +#define EWIC_EVENTSPR_EDBGREQ_Pos 2U /*!< EWIC EVENTSPR: EDBGREQ Position */ +#define EWIC_EVENTSPR_EDBGREQ_Msk (0x1UL << EWIC_EVENTSPR_EDBGREQ_Pos) /*!< EWIC EVENTSPR: EDBGREQ Mask */ + +#define EWIC_EVENTSPR_NMI_Pos 1U /*!< EWIC EVENTSPR: NMI Position */ +#define EWIC_EVENTSPR_NMI_Msk (0x1UL << EWIC_EVENTSPR_NMI_Pos) /*!< EWIC EVENTSPR: NMI Mask */ + +#define EWIC_EVENTSPR_EVENT_Pos 0U /*!< EWIC EVENTSPR: EVENT Position */ +#define EWIC_EVENTSPR_EVENT_Msk (0x1UL /*<< EWIC_EVENTSPR_EVENT_Pos*/) /*!< EWIC EVENTSPR: EVENT Mask */ + +/* EWIC External Wakeup Interrupt Controller (EVENTMASKA) Register Definitions */ +#define EWIC_EVENTMASKA_EDBGREQ_Pos 2U /*!< EWIC EVENTMASKA: EDBGREQ Position */ +#define EWIC_EVENTMASKA_EDBGREQ_Msk (0x1UL << EWIC_EVENTMASKA_EDBGREQ_Pos) /*!< EWIC EVENTMASKA: EDBGREQ Mask */ + +#define EWIC_EVENTMASKA_NMI_Pos 1U /*!< EWIC EVENTMASKA: NMI Position */ +#define EWIC_EVENTMASKA_NMI_Msk (0x1UL << EWIC_EVENTMASKA_NMI_Pos) /*!< EWIC EVENTMASKA: NMI Mask */ + +#define EWIC_EVENTMASKA_EVENT_Pos 0U /*!< EWIC EVENTMASKA: EVENT Position */ +#define EWIC_EVENTMASKA_EVENT_Msk (0x1UL /*<< EWIC_EVENTMASKA_EVENT_Pos*/) /*!< EWIC EVENTMASKA: EVENT Mask */ + +/* EWIC External Wakeup Interrupt Controller (EVENTMASK) Register Definitions */ +#define EWIC_EVENTMASK_IRQ_Pos 0U /*!< EWIC EVENTMASKA: IRQ Position */ +#define EWIC_EVENTMASK_IRQ_Msk (0xFFFFFFFFUL /*<< EWIC_EVENTMASKA_IRQ_Pos*/) /*!< EWIC EVENTMASKA: IRQ Mask */ + +/*@}*/ /* end of group EWIC_Type */ + + +/** + \ingroup CMSIS_core_register + \defgroup ErrBnk_Type Error Banking Registers (IMPLEMENTATION DEFINED) + \brief Type definitions for the Error Banking Registers (ERRBNK) + @{ + */ + +/** + \brief Structure type to access the Error Banking Registers (ERRBNK). + */ +typedef struct +{ + __IOM uint32_t IEBR0; /*!< Offset: 0x000 (R/W) Instruction Cache Error Bank Register 0 */ + __IOM uint32_t IEBR1; /*!< Offset: 0x004 (R/W) Instruction Cache Error Bank Register 1 */ + uint32_t RESERVED0[2U]; + __IOM uint32_t DEBR0; /*!< Offset: 0x010 (R/W) Data Cache Error Bank Register 0 */ + __IOM uint32_t DEBR1; /*!< Offset: 0x014 (R/W) Data Cache Error Bank Register 1 */ + uint32_t RESERVED1[2U]; + __IOM uint32_t TEBR0; /*!< Offset: 0x020 (R/W) TCM Error Bank Register 0 */ + uint32_t RESERVED2[1U]; + __IOM uint32_t TEBR1; /*!< Offset: 0x028 (R/W) TCM Error Bank Register 1 */ +} ErrBnk_Type; + +/* ERRBNK Instruction Cache Error Bank Register 0 (IEBR0) Register Definitions */ +#define ERRBNK_IEBR0_SWDEF_Pos 30U /*!< ERRBNK IEBR0: SWDEF Position */ +#define ERRBNK_IEBR0_SWDEF_Msk (0x3UL << ERRBNK_IEBR0_SWDEF_Pos) /*!< ERRBNK IEBR0: SWDEF Mask */ + +#define ERRBNK_IEBR0_BANK_Pos 16U /*!< ERRBNK IEBR0: BANK Position */ +#define ERRBNK_IEBR0_BANK_Msk (0x1UL << ERRBNK_IEBR0_BANK_Pos) /*!< ERRBNK IEBR0: BANK Mask */ + +#define ERRBNK_IEBR0_LOCATION_Pos 2U /*!< ERRBNK IEBR0: LOCATION Position */ +#define ERRBNK_IEBR0_LOCATION_Msk (0x3FFFUL << ERRBNK_IEBR0_LOCATION_Pos) /*!< ERRBNK IEBR0: LOCATION Mask */ + +#define ERRBNK_IEBR0_LOCKED_Pos 1U /*!< ERRBNK IEBR0: LOCKED Position */ +#define ERRBNK_IEBR0_LOCKED_Msk (0x1UL << ERRBNK_IEBR0_LOCKED_Pos) /*!< ERRBNK IEBR0: LOCKED Mask */ + +#define ERRBNK_IEBR0_VALID_Pos 0U /*!< ERRBNK IEBR0: VALID Position */ +#define ERRBNK_IEBR0_VALID_Msk (0x1UL << /*ERRBNK_IEBR0_VALID_Pos*/) /*!< ERRBNK IEBR0: VALID Mask */ + +/* ERRBNK Instruction Cache Error Bank Register 1 (IEBR1) Register Definitions */ +#define ERRBNK_IEBR1_SWDEF_Pos 30U /*!< ERRBNK IEBR1: SWDEF Position */ +#define ERRBNK_IEBR1_SWDEF_Msk (0x3UL << ERRBNK_IEBR1_SWDEF_Pos) /*!< ERRBNK IEBR1: SWDEF Mask */ + +#define ERRBNK_IEBR1_BANK_Pos 16U /*!< ERRBNK IEBR1: BANK Position */ +#define ERRBNK_IEBR1_BANK_Msk (0x1UL << ERRBNK_IEBR1_BANK_Pos) /*!< ERRBNK IEBR1: BANK Mask */ + +#define ERRBNK_IEBR1_LOCATION_Pos 2U /*!< ERRBNK IEBR1: LOCATION Position */ +#define ERRBNK_IEBR1_LOCATION_Msk (0x3FFFUL << ERRBNK_IEBR1_LOCATION_Pos) /*!< ERRBNK IEBR1: LOCATION Mask */ + +#define ERRBNK_IEBR1_LOCKED_Pos 1U /*!< ERRBNK IEBR1: LOCKED Position */ +#define ERRBNK_IEBR1_LOCKED_Msk (0x1UL << ERRBNK_IEBR1_LOCKED_Pos) /*!< ERRBNK IEBR1: LOCKED Mask */ + +#define ERRBNK_IEBR1_VALID_Pos 0U /*!< ERRBNK IEBR1: VALID Position */ +#define ERRBNK_IEBR1_VALID_Msk (0x1UL << /*ERRBNK_IEBR1_VALID_Pos*/) /*!< ERRBNK IEBR1: VALID Mask */ + +/* ERRBNK Data Cache Error Bank Register 0 (DEBR0) Register Definitions */ +#define ERRBNK_DEBR0_SWDEF_Pos 30U /*!< ERRBNK DEBR0: SWDEF Position */ +#define ERRBNK_DEBR0_SWDEF_Msk (0x3UL << ERRBNK_DEBR0_SWDEF_Pos) /*!< ERRBNK DEBR0: SWDEF Mask */ + +#define ERRBNK_DEBR0_TYPE_Pos 17U /*!< ERRBNK DEBR0: TYPE Position */ +#define ERRBNK_DEBR0_TYPE_Msk (0x1UL << ERRBNK_DEBR0_TYPE_Pos) /*!< ERRBNK DEBR0: TYPE Mask */ + +#define ERRBNK_DEBR0_BANK_Pos 16U /*!< ERRBNK DEBR0: BANK Position */ +#define ERRBNK_DEBR0_BANK_Msk (0x1UL << ERRBNK_DEBR0_BANK_Pos) /*!< ERRBNK DEBR0: BANK Mask */ + +#define ERRBNK_DEBR0_LOCATION_Pos 2U /*!< ERRBNK DEBR0: LOCATION Position */ +#define ERRBNK_DEBR0_LOCATION_Msk (0x3FFFUL << ERRBNK_DEBR0_LOCATION_Pos) /*!< ERRBNK DEBR0: LOCATION Mask */ + +#define ERRBNK_DEBR0_LOCKED_Pos 1U /*!< ERRBNK DEBR0: LOCKED Position */ +#define ERRBNK_DEBR0_LOCKED_Msk (0x1UL << ERRBNK_DEBR0_LOCKED_Pos) /*!< ERRBNK DEBR0: LOCKED Mask */ + +#define ERRBNK_DEBR0_VALID_Pos 0U /*!< ERRBNK DEBR0: VALID Position */ +#define ERRBNK_DEBR0_VALID_Msk (0x1UL << /*ERRBNK_DEBR0_VALID_Pos*/) /*!< ERRBNK DEBR0: VALID Mask */ + +/* ERRBNK Data Cache Error Bank Register 1 (DEBR1) Register Definitions */ +#define ERRBNK_DEBR1_SWDEF_Pos 30U /*!< ERRBNK DEBR1: SWDEF Position */ +#define ERRBNK_DEBR1_SWDEF_Msk (0x3UL << ERRBNK_DEBR1_SWDEF_Pos) /*!< ERRBNK DEBR1: SWDEF Mask */ + +#define ERRBNK_DEBR1_TYPE_Pos 17U /*!< ERRBNK DEBR1: TYPE Position */ +#define ERRBNK_DEBR1_TYPE_Msk (0x1UL << ERRBNK_DEBR1_TYPE_Pos) /*!< ERRBNK DEBR1: TYPE Mask */ + +#define ERRBNK_DEBR1_BANK_Pos 16U /*!< ERRBNK DEBR1: BANK Position */ +#define ERRBNK_DEBR1_BANK_Msk (0x1UL << ERRBNK_DEBR1_BANK_Pos) /*!< ERRBNK DEBR1: BANK Mask */ + +#define ERRBNK_DEBR1_LOCATION_Pos 2U /*!< ERRBNK DEBR1: LOCATION Position */ +#define ERRBNK_DEBR1_LOCATION_Msk (0x3FFFUL << ERRBNK_DEBR1_LOCATION_Pos) /*!< ERRBNK DEBR1: LOCATION Mask */ + +#define ERRBNK_DEBR1_LOCKED_Pos 1U /*!< ERRBNK DEBR1: LOCKED Position */ +#define ERRBNK_DEBR1_LOCKED_Msk (0x1UL << ERRBNK_DEBR1_LOCKED_Pos) /*!< ERRBNK DEBR1: LOCKED Mask */ + +#define ERRBNK_DEBR1_VALID_Pos 0U /*!< ERRBNK DEBR1: VALID Position */ +#define ERRBNK_DEBR1_VALID_Msk (0x1UL << /*ERRBNK_DEBR1_VALID_Pos*/) /*!< ERRBNK DEBR1: VALID Mask */ + +/* ERRBNK TCM Error Bank Register 0 (TEBR0) Register Definitions */ +#define ERRBNK_TEBR0_SWDEF_Pos 30U /*!< ERRBNK TEBR0: SWDEF Position */ +#define ERRBNK_TEBR0_SWDEF_Msk (0x3UL << ERRBNK_TEBR0_SWDEF_Pos) /*!< ERRBNK TEBR0: SWDEF Mask */ + +#define ERRBNK_TEBR0_POISON_Pos 28U /*!< ERRBNK TEBR0: POISON Position */ +#define ERRBNK_TEBR0_POISON_Msk (0x1UL << ERRBNK_TEBR0_POISON_Pos) /*!< ERRBNK TEBR0: POISON Mask */ + +#define ERRBNK_TEBR0_TYPE_Pos 27U /*!< ERRBNK TEBR0: TYPE Position */ +#define ERRBNK_TEBR0_TYPE_Msk (0x1UL << ERRBNK_TEBR0_TYPE_Pos) /*!< ERRBNK TEBR0: TYPE Mask */ + +#define ERRBNK_TEBR0_BANK_Pos 24U /*!< ERRBNK TEBR0: BANK Position */ +#define ERRBNK_TEBR0_BANK_Msk (0x3UL << ERRBNK_TEBR0_BANK_Pos) /*!< ERRBNK TEBR0: BANK Mask */ + +#define ERRBNK_TEBR0_LOCATION_Pos 2U /*!< ERRBNK TEBR0: LOCATION Position */ +#define ERRBNK_TEBR0_LOCATION_Msk (0x3FFFFFUL << ERRBNK_TEBR0_LOCATION_Pos) /*!< ERRBNK TEBR0: LOCATION Mask */ + +#define ERRBNK_TEBR0_LOCKED_Pos 1U /*!< ERRBNK TEBR0: LOCKED Position */ +#define ERRBNK_TEBR0_LOCKED_Msk (0x1UL << ERRBNK_TEBR0_LOCKED_Pos) /*!< ERRBNK TEBR0: LOCKED Mask */ + +#define ERRBNK_TEBR0_VALID_Pos 0U /*!< ERRBNK TEBR0: VALID Position */ +#define ERRBNK_TEBR0_VALID_Msk (0x1UL << /*ERRBNK_TEBR0_VALID_Pos*/) /*!< ERRBNK TEBR0: VALID Mask */ + +/* ERRBNK TCM Error Bank Register 1 (TEBR1) Register Definitions */ +#define ERRBNK_TEBR1_SWDEF_Pos 30U /*!< ERRBNK TEBR1: SWDEF Position */ +#define ERRBNK_TEBR1_SWDEF_Msk (0x3UL << ERRBNK_TEBR1_SWDEF_Pos) /*!< ERRBNK TEBR1: SWDEF Mask */ + +#define ERRBNK_TEBR1_POISON_Pos 28U /*!< ERRBNK TEBR1: POISON Position */ +#define ERRBNK_TEBR1_POISON_Msk (0x1UL << ERRBNK_TEBR1_POISON_Pos) /*!< ERRBNK TEBR1: POISON Mask */ + +#define ERRBNK_TEBR1_TYPE_Pos 27U /*!< ERRBNK TEBR1: TYPE Position */ +#define ERRBNK_TEBR1_TYPE_Msk (0x1UL << ERRBNK_TEBR1_TYPE_Pos) /*!< ERRBNK TEBR1: TYPE Mask */ + +#define ERRBNK_TEBR1_BANK_Pos 24U /*!< ERRBNK TEBR1: BANK Position */ +#define ERRBNK_TEBR1_BANK_Msk (0x3UL << ERRBNK_TEBR1_BANK_Pos) /*!< ERRBNK TEBR1: BANK Mask */ + +#define ERRBNK_TEBR1_LOCATION_Pos 2U /*!< ERRBNK TEBR1: LOCATION Position */ +#define ERRBNK_TEBR1_LOCATION_Msk (0x3FFFFFUL << ERRBNK_TEBR1_LOCATION_Pos) /*!< ERRBNK TEBR1: LOCATION Mask */ + +#define ERRBNK_TEBR1_LOCKED_Pos 1U /*!< ERRBNK TEBR1: LOCKED Position */ +#define ERRBNK_TEBR1_LOCKED_Msk (0x1UL << ERRBNK_TEBR1_LOCKED_Pos) /*!< ERRBNK TEBR1: LOCKED Mask */ + +#define ERRBNK_TEBR1_VALID_Pos 0U /*!< ERRBNK TEBR1: VALID Position */ +#define ERRBNK_TEBR1_VALID_Msk (0x1UL << /*ERRBNK_TEBR1_VALID_Pos*/) /*!< ERRBNK TEBR1: VALID Mask */ + +/*@}*/ /* end of group ErrBnk_Type */ + + +/** + \ingroup CMSIS_core_register + \defgroup PrcCfgInf_Type Processor Configuration Information Registers (IMPLEMENTATION DEFINED) + \brief Type definitions for the Processor Configuration Information Registerss (PRCCFGINF) + @{ + */ + +/** + \brief Structure type to access the Processor Configuration Information Registerss (PRCCFGINF). + */ +typedef struct +{ + __OM uint32_t CFGINFOSEL; /*!< Offset: 0x000 ( /W) Processor Configuration Information Selection Register */ + __IM uint32_t CFGINFORD; /*!< Offset: 0x004 (R/ ) Processor Configuration Information Read Data Register */ +} PrcCfgInf_Type; + +/* PRCCFGINF Processor Configuration Information Selection Register (CFGINFOSEL) Definitions */ + +/* PRCCFGINF Processor Configuration Information Read Data Register (CFGINFORD) Definitions */ + +/*@}*/ /* end of group PrcCfgInf_Type */ + + +/** + \ingroup CMSIS_core_register + \defgroup STL_Type Software Test Library Observation Registers + \brief Type definitions for the Software Test Library Observation Registerss (STL) + @{ + */ + +/** + \brief Structure type to access the Software Test Library Observation Registerss (STL). + */ +typedef struct +{ + __IM uint32_t STLNVICPENDOR; /*!< Offset: 0x000 (R/ ) NVIC Pending Priority Tree Register */ + __IM uint32_t STLNVICACTVOR; /*!< Offset: 0x004 (R/ ) NVIC Active Priority Tree Register */ + uint32_t RESERVED0[2U]; + __OM uint32_t STLIDMPUSR; /*!< Offset: 0x010 ( /W) MPU Sanple Register */ + __IM uint32_t STLIMPUOR; /*!< Offset: 0x014 (R/ ) MPU Region Hit Register */ + __IM uint32_t STLD0MPUOR; /*!< Offset: 0x018 (R/ ) MPU Memory Attributes Register 0 */ + __IM uint32_t STLD1MPUOR; /*!< Offset: 0x01C (R/ ) MPU Memory Attributes Register 1 */ + +} STL_Type; + +/* STL Software Test Library Observation Register (STLNVICPENDOR) Definitions */ +#define STL_STLNVICPENDOR_VALID_Pos 18U /*!< STL STLNVICPENDOR: VALID Position */ +#define STL_STLNVICPENDOR_VALID_Msk (0x1UL << STL_STLNVICPENDOR_VALID_Pos) /*!< STL STLNVICPENDOR: VALID Mask */ + +#define STL_STLNVICPENDOR_TARGET_Pos 17U /*!< STL STLNVICPENDOR: TARGET Position */ +#define STL_STLNVICPENDOR_TARGET_Msk (0x1UL << STL_STLNVICPENDOR_TARGET_Pos) /*!< STL STLNVICPENDOR: TARGET Mask */ + +#define STL_STLNVICPENDOR_PRIORITY_Pos 9U /*!< STL STLNVICPENDOR: PRIORITY Position */ +#define STL_STLNVICPENDOR_PRIORITY_Msk (0xFFUL << STL_STLNVICPENDOR_PRIORITY_Pos) /*!< STL STLNVICPENDOR: PRIORITY Mask */ + +#define STL_STLNVICPENDOR_INTNUM_Pos 0U /*!< STL STLNVICPENDOR: INTNUM Position */ +#define STL_STLNVICPENDOR_INTNUM_Msk (0x1FFUL /*<< STL_STLNVICPENDOR_INTNUM_Pos*/) /*!< STL STLNVICPENDOR: INTNUM Mask */ + +/* STL Software Test Library Observation Register (STLNVICACTVOR) Definitions */ +#define STL_STLNVICACTVOR_VALID_Pos 18U /*!< STL STLNVICACTVOR: VALID Position */ +#define STL_STLNVICACTVOR_VALID_Msk (0x1UL << STL_STLNVICACTVOR_VALID_Pos) /*!< STL STLNVICACTVOR: VALID Mask */ + +#define STL_STLNVICACTVOR_TARGET_Pos 17U /*!< STL STLNVICACTVOR: TARGET Position */ +#define STL_STLNVICACTVOR_TARGET_Msk (0x1UL << STL_STLNVICACTVOR_TARGET_Pos) /*!< STL STLNVICACTVOR: TARGET Mask */ + +#define STL_STLNVICACTVOR_PRIORITY_Pos 9U /*!< STL STLNVICACTVOR: PRIORITY Position */ +#define STL_STLNVICACTVOR_PRIORITY_Msk (0xFFUL << STL_STLNVICACTVOR_PRIORITY_Pos) /*!< STL STLNVICACTVOR: PRIORITY Mask */ + +#define STL_STLNVICACTVOR_INTNUM_Pos 0U /*!< STL STLNVICACTVOR: INTNUM Position */ +#define STL_STLNVICACTVOR_INTNUM_Msk (0x1FFUL /*<< STL_STLNVICACTVOR_INTNUM_Pos*/) /*!< STL STLNVICACTVOR: INTNUM Mask */ + +/* STL Software Test Library Observation Register (STLIDMPUSR) Definitions */ +#define STL_STLIDMPUSR_ADDR_Pos 5U /*!< STL STLIDMPUSR: ADDR Position */ +#define STL_STLIDMPUSR_ADDR_Msk (0x7FFFFFFUL << STL_STLIDMPUSR_ADDR_Pos) /*!< STL STLIDMPUSR: ADDR Mask */ + +#define STL_STLIDMPUSR_INSTR_Pos 2U /*!< STL STLIDMPUSR: INSTR Position */ +#define STL_STLIDMPUSR_INSTR_Msk (0x1UL << STL_STLIDMPUSR_INSTR_Pos) /*!< STL STLIDMPUSR: INSTR Mask */ + +#define STL_STLIDMPUSR_DATA_Pos 1U /*!< STL STLIDMPUSR: DATA Position */ +#define STL_STLIDMPUSR_DATA_Msk (0x1UL << STL_STLIDMPUSR_DATA_Pos) /*!< STL STLIDMPUSR: DATA Mask */ + +/* STL Software Test Library Observation Register (STLIMPUOR) Definitions */ +#define STL_STLIMPUOR_HITREGION_Pos 9U /*!< STL STLIMPUOR: HITREGION Position */ +#define STL_STLIMPUOR_HITREGION_Msk (0xFFUL << STL_STLIMPUOR_HITREGION_Pos) /*!< STL STLIMPUOR: HITREGION Mask */ + +#define STL_STLIMPUOR_ATTR_Pos 0U /*!< STL STLIMPUOR: ATTR Position */ +#define STL_STLIMPUOR_ATTR_Msk (0x1FFUL /*<< STL_STLIMPUOR_ATTR_Pos*/) /*!< STL STLIMPUOR: ATTR Mask */ + +/* STL Software Test Library Observation Register (STLD0MPUOR) Definitions */ +#define STL_STLD0MPUOR_HITREGION_Pos 9U /*!< STL STLD0MPUOR: HITREGION Position */ +#define STL_STLD0MPUOR_HITREGION_Msk (0xFFUL << STL_STLD0MPUOR_HITREGION_Pos) /*!< STL STLD0MPUOR: HITREGION Mask */ + +#define STL_STLD0MPUOR_ATTR_Pos 0U /*!< STL STLD0MPUOR: ATTR Position */ +#define STL_STLD0MPUOR_ATTR_Msk (0x1FFUL /*<< STL_STLD0MPUOR_ATTR_Pos*/) /*!< STL STLD0MPUOR: ATTR Mask */ + +/* STL Software Test Library Observation Register (STLD1MPUOR) Definitions */ +#define STL_STLD1MPUOR_HITREGION_Pos 9U /*!< STL STLD1MPUOR: HITREGION Position */ +#define STL_STLD1MPUOR_HITREGION_Msk (0xFFUL << STL_STLD1MPUOR_HITREGION_Pos) /*!< STL STLD1MPUOR: HITREGION Mask */ + +#define STL_STLD1MPUOR_ATTR_Pos 0U /*!< STL STLD1MPUOR: ATTR Position */ +#define STL_STLD1MPUOR_ATTR_Msk (0x1FFUL /*<< STL_STLD1MPUOR_ATTR_Pos*/) /*!< STL STLD1MPUOR: ATTR Mask */ + +/*@}*/ /* end of group STL_Type */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_TPI Trace Port Interface (TPI) + \brief Type definitions for the Trace Port Interface (TPI) + @{ + */ + +/** + \brief Structure type to access the Trace Port Interface Register (TPI). + */ +typedef struct +{ + __IM uint32_t SSPSR; /*!< Offset: 0x000 (R/ ) Supported Parallel Port Sizes Register */ + __IOM uint32_t CSPSR; /*!< Offset: 0x004 (R/W) Current Parallel Port Sizes Register */ + uint32_t RESERVED0[2U]; + __IOM uint32_t ACPR; /*!< Offset: 0x010 (R/W) Asynchronous Clock Prescaler Register */ + uint32_t RESERVED1[55U]; + __IOM uint32_t SPPR; /*!< Offset: 0x0F0 (R/W) Selected Pin Protocol Register */ + uint32_t RESERVED2[131U]; + __IM uint32_t FFSR; /*!< Offset: 0x300 (R/ ) Formatter and Flush Status Register */ + __IOM uint32_t FFCR; /*!< Offset: 0x304 (R/W) Formatter and Flush Control Register */ + __IOM uint32_t PSCR; /*!< Offset: 0x308 (R/W) Periodic Synchronization Control Register */ + uint32_t RESERVED3[809U]; + __OM uint32_t LAR; /*!< Offset: 0xFB0 ( /W) Software Lock Access Register */ + __IM uint32_t LSR; /*!< Offset: 0xFB4 (R/ ) Software Lock Status Register */ + uint32_t RESERVED4[4U]; + __IM uint32_t TYPE; /*!< Offset: 0xFC8 (R/ ) Device Identifier Register */ + __IM uint32_t DEVTYPE; /*!< Offset: 0xFCC (R/ ) Device Type Register */ +} TPI_Type; + +/* TPI Asynchronous Clock Prescaler Register Definitions */ +#define TPI_ACPR_SWOSCALER_Pos 0U /*!< TPI ACPR: SWOSCALER Position */ +#define TPI_ACPR_SWOSCALER_Msk (0xFFFFUL /*<< TPI_ACPR_SWOSCALER_Pos*/) /*!< TPI ACPR: SWOSCALER Mask */ + +/* TPI Selected Pin Protocol Register Definitions */ +#define TPI_SPPR_TXMODE_Pos 0U /*!< TPI SPPR: TXMODE Position */ +#define TPI_SPPR_TXMODE_Msk (0x3UL /*<< TPI_SPPR_TXMODE_Pos*/) /*!< TPI SPPR: TXMODE Mask */ + +/* TPI Formatter and Flush Status Register Definitions */ +#define TPI_FFSR_FtNonStop_Pos 3U /*!< TPI FFSR: FtNonStop Position */ +#define TPI_FFSR_FtNonStop_Msk (0x1UL << TPI_FFSR_FtNonStop_Pos) /*!< TPI FFSR: FtNonStop Mask */ + +#define TPI_FFSR_TCPresent_Pos 2U /*!< TPI FFSR: TCPresent Position */ +#define TPI_FFSR_TCPresent_Msk (0x1UL << TPI_FFSR_TCPresent_Pos) /*!< TPI FFSR: TCPresent Mask */ + +#define TPI_FFSR_FtStopped_Pos 1U /*!< TPI FFSR: FtStopped Position */ +#define TPI_FFSR_FtStopped_Msk (0x1UL << TPI_FFSR_FtStopped_Pos) /*!< TPI FFSR: FtStopped Mask */ + +#define TPI_FFSR_FlInProg_Pos 0U /*!< TPI FFSR: FlInProg Position */ +#define TPI_FFSR_FlInProg_Msk (0x1UL /*<< TPI_FFSR_FlInProg_Pos*/) /*!< TPI FFSR: FlInProg Mask */ + +/* TPI Formatter and Flush Control Register Definitions */ +#define TPI_FFCR_TrigIn_Pos 8U /*!< TPI FFCR: TrigIn Position */ +#define TPI_FFCR_TrigIn_Msk (0x1UL << TPI_FFCR_TrigIn_Pos) /*!< TPI FFCR: TrigIn Mask */ + +#define TPI_FFCR_FOnMan_Pos 6U /*!< TPI FFCR: FOnMan Position */ +#define TPI_FFCR_FOnMan_Msk (0x1UL << TPI_FFCR_FOnMan_Pos) /*!< TPI FFCR: FOnMan Mask */ + +#define TPI_FFCR_EnFmt_Pos 0U /*!< TPI FFCR: EnFmt Position */ +#define TPI_FFCR_EnFmt_Msk (0x3UL << /*TPI_FFCR_EnFmt_Pos*/) /*!< TPI FFCR: EnFmt Mask */ + +/* TPI Periodic Synchronization Control Register Definitions */ +#define TPI_PSCR_PSCount_Pos 0U /*!< TPI PSCR: PSCount Position */ +#define TPI_PSCR_PSCount_Msk (0x1FUL /*<< TPI_PSCR_PSCount_Pos*/) /*!< TPI PSCR: TPSCount Mask */ + +/* TPI Software Lock Status Register Definitions */ +#define TPI_LSR_nTT_Pos 1U /*!< TPI LSR: Not thirty-two bit. Position */ +#define TPI_LSR_nTT_Msk (0x1UL << TPI_LSR_nTT_Pos) /*!< TPI LSR: Not thirty-two bit. Mask */ + +#define TPI_LSR_SLK_Pos 1U /*!< TPI LSR: Software Lock status Position */ +#define TPI_LSR_SLK_Msk (0x1UL << TPI_LSR_SLK_Pos) /*!< TPI LSR: Software Lock status Mask */ + +#define TPI_LSR_SLI_Pos 0U /*!< TPI LSR: Software Lock implemented Position */ +#define TPI_LSR_SLI_Msk (0x1UL /*<< TPI_LSR_SLI_Pos*/) /*!< TPI LSR: Software Lock implemented Mask */ + +/* TPI DEVID Register Definitions */ +#define TPI_DEVID_NRZVALID_Pos 11U /*!< TPI DEVID: NRZVALID Position */ +#define TPI_DEVID_NRZVALID_Msk (0x1UL << TPI_DEVID_NRZVALID_Pos) /*!< TPI DEVID: NRZVALID Mask */ + +#define TPI_DEVID_MANCVALID_Pos 10U /*!< TPI DEVID: MANCVALID Position */ +#define TPI_DEVID_MANCVALID_Msk (0x1UL << TPI_DEVID_MANCVALID_Pos) /*!< TPI DEVID: MANCVALID Mask */ + +#define TPI_DEVID_PTINVALID_Pos 9U /*!< TPI DEVID: PTINVALID Position */ +#define TPI_DEVID_PTINVALID_Msk (0x1UL << TPI_DEVID_PTINVALID_Pos) /*!< TPI DEVID: PTINVALID Mask */ + +#define TPI_DEVID_FIFOSZ_Pos 6U /*!< TPI DEVID: FIFO depth Position */ +#define TPI_DEVID_FIFOSZ_Msk (0x7UL << TPI_DEVID_FIFOSZ_Pos) /*!< TPI DEVID: FIFO depth Mask */ + +/* TPI DEVTYPE Register Definitions */ +#define TPI_DEVTYPE_SubType_Pos 4U /*!< TPI DEVTYPE: SubType Position */ +#define TPI_DEVTYPE_SubType_Msk (0xFUL /*<< TPI_DEVTYPE_SubType_Pos*/) /*!< TPI DEVTYPE: SubType Mask */ + +#define TPI_DEVTYPE_MajorType_Pos 0U /*!< TPI DEVTYPE: MajorType Position */ +#define TPI_DEVTYPE_MajorType_Msk (0xFUL << TPI_DEVTYPE_MajorType_Pos) /*!< TPI DEVTYPE: MajorType Mask */ + +/*@}*/ /* end of group CMSIS_TPI */ + +#if defined (__PMU_PRESENT) && (__PMU_PRESENT == 1U) +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_PMU Performance Monitoring Unit (PMU) + \brief Type definitions for the Performance Monitoring Unit (PMU) + @{ + */ + +/** + \brief Structure type to access the Performance Monitoring Unit (PMU). + */ +typedef struct +{ + __IOM uint32_t EVCNTR[__PMU_NUM_EVENTCNT]; /*!< Offset: 0x0 (R/W) PMU Event Counter Registers */ +#if __PMU_NUM_EVENTCNT<31 + uint32_t RESERVED0[31U-__PMU_NUM_EVENTCNT]; +#endif + __IOM uint32_t CCNTR; /*!< Offset: 0x7C (R/W) PMU Cycle Counter Register */ + uint32_t RESERVED1[224]; + __IOM uint32_t EVTYPER[__PMU_NUM_EVENTCNT]; /*!< Offset: 0x400 (R/W) PMU Event Type and Filter Registers */ +#if __PMU_NUM_EVENTCNT<31 + uint32_t RESERVED2[31U-__PMU_NUM_EVENTCNT]; +#endif + __IOM uint32_t CCFILTR; /*!< Offset: 0x47C (R/W) PMU Cycle Counter Filter Register */ + uint32_t RESERVED3[480]; + __IOM uint32_t CNTENSET; /*!< Offset: 0xC00 (R/W) PMU Count Enable Set Register */ + uint32_t RESERVED4[7]; + __IOM uint32_t CNTENCLR; /*!< Offset: 0xC20 (R/W) PMU Count Enable Clear Register */ + uint32_t RESERVED5[7]; + __IOM uint32_t INTENSET; /*!< Offset: 0xC40 (R/W) PMU Interrupt Enable Set Register */ + uint32_t RESERVED6[7]; + __IOM uint32_t INTENCLR; /*!< Offset: 0xC60 (R/W) PMU Interrupt Enable Clear Register */ + uint32_t RESERVED7[7]; + __IOM uint32_t OVSCLR; /*!< Offset: 0xC80 (R/W) PMU Overflow Flag Status Clear Register */ + uint32_t RESERVED8[7]; + __IOM uint32_t SWINC; /*!< Offset: 0xCA0 (R/W) PMU Software Increment Register */ + uint32_t RESERVED9[7]; + __IOM uint32_t OVSSET; /*!< Offset: 0xCC0 (R/W) PMU Overflow Flag Status Set Register */ + uint32_t RESERVED10[79]; + __IOM uint32_t TYPE; /*!< Offset: 0xE00 (R/W) PMU Type Register */ + __IOM uint32_t CTRL; /*!< Offset: 0xE04 (R/W) PMU Control Register */ + uint32_t RESERVED11[108]; + __IOM uint32_t AUTHSTATUS; /*!< Offset: 0xFB8 (R/W) PMU Authentication Status Register */ + __IOM uint32_t DEVARCH; /*!< Offset: 0xFBC (R/W) PMU Device Architecture Register */ + uint32_t RESERVED12[3]; + __IOM uint32_t DEVTYPE; /*!< Offset: 0xFCC (R/W) PMU Device Type Register */ + __IOM uint32_t PIDR4; /*!< Offset: 0xFD0 (R/W) PMU Peripheral Identification Register 4 */ + uint32_t RESERVED13[3]; + __IOM uint32_t PIDR0; /*!< Offset: 0xFE0 (R/W) PMU Peripheral Identification Register 0 */ + __IOM uint32_t PIDR1; /*!< Offset: 0xFE4 (R/W) PMU Peripheral Identification Register 1 */ + __IOM uint32_t PIDR2; /*!< Offset: 0xFE8 (R/W) PMU Peripheral Identification Register 2 */ + __IOM uint32_t PIDR3; /*!< Offset: 0xFEC (R/W) PMU Peripheral Identification Register 3 */ + __IOM uint32_t CIDR0; /*!< Offset: 0xFF0 (R/W) PMU Component Identification Register 0 */ + __IOM uint32_t CIDR1; /*!< Offset: 0xFF4 (R/W) PMU Component Identification Register 1 */ + __IOM uint32_t CIDR2; /*!< Offset: 0xFF8 (R/W) PMU Component Identification Register 2 */ + __IOM uint32_t CIDR3; /*!< Offset: 0xFFC (R/W) PMU Component Identification Register 3 */ +} PMU_Type; + +/** \brief PMU Event Counter Registers (0-30) Definitions */ + +#define PMU_EVCNTR_CNT_Pos 0U /*!< PMU EVCNTR: Counter Position */ +#define PMU_EVCNTR_CNT_Msk (0xFFFFUL /*<< PMU_EVCNTRx_CNT_Pos*/) /*!< PMU EVCNTR: Counter Mask */ + +/** \brief PMU Event Type and Filter Registers (0-30) Definitions */ + +#define PMU_EVTYPER_EVENTTOCNT_Pos 0U /*!< PMU EVTYPER: Event to Count Position */ +#define PMU_EVTYPER_EVENTTOCNT_Msk (0xFFFFUL /*<< EVTYPERx_EVENTTOCNT_Pos*/) /*!< PMU EVTYPER: Event to Count Mask */ + +/** \brief PMU Count Enable Set Register Definitions */ + +#define PMU_CNTENSET_CNT0_ENABLE_Pos 0U /*!< PMU CNTENSET: Event Counter 0 Enable Set Position */ +#define PMU_CNTENSET_CNT0_ENABLE_Msk (1UL /*<< PMU_CNTENSET_CNT0_ENABLE_Pos*/) /*!< PMU CNTENSET: Event Counter 0 Enable Set Mask */ + +#define PMU_CNTENSET_CNT1_ENABLE_Pos 1U /*!< PMU CNTENSET: Event Counter 1 Enable Set Position */ +#define PMU_CNTENSET_CNT1_ENABLE_Msk (1UL << PMU_CNTENSET_CNT1_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 1 Enable Set Mask */ + +#define PMU_CNTENSET_CNT2_ENABLE_Pos 2U /*!< PMU CNTENSET: Event Counter 2 Enable Set Position */ +#define PMU_CNTENSET_CNT2_ENABLE_Msk (1UL << PMU_CNTENSET_CNT2_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 2 Enable Set Mask */ + +#define PMU_CNTENSET_CNT3_ENABLE_Pos 3U /*!< PMU CNTENSET: Event Counter 3 Enable Set Position */ +#define PMU_CNTENSET_CNT3_ENABLE_Msk (1UL << PMU_CNTENSET_CNT3_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 3 Enable Set Mask */ + +#define PMU_CNTENSET_CNT4_ENABLE_Pos 4U /*!< PMU CNTENSET: Event Counter 4 Enable Set Position */ +#define PMU_CNTENSET_CNT4_ENABLE_Msk (1UL << PMU_CNTENSET_CNT4_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 4 Enable Set Mask */ + +#define PMU_CNTENSET_CNT5_ENABLE_Pos 5U /*!< PMU CNTENSET: Event Counter 5 Enable Set Position */ +#define PMU_CNTENSET_CNT5_ENABLE_Msk (1UL << PMU_CNTENSET_CNT5_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 5 Enable Set Mask */ + +#define PMU_CNTENSET_CNT6_ENABLE_Pos 6U /*!< PMU CNTENSET: Event Counter 6 Enable Set Position */ +#define PMU_CNTENSET_CNT6_ENABLE_Msk (1UL << PMU_CNTENSET_CNT6_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 6 Enable Set Mask */ + +#define PMU_CNTENSET_CNT7_ENABLE_Pos 7U /*!< PMU CNTENSET: Event Counter 7 Enable Set Position */ +#define PMU_CNTENSET_CNT7_ENABLE_Msk (1UL << PMU_CNTENSET_CNT7_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 7 Enable Set Mask */ + +#define PMU_CNTENSET_CNT8_ENABLE_Pos 8U /*!< PMU CNTENSET: Event Counter 8 Enable Set Position */ +#define PMU_CNTENSET_CNT8_ENABLE_Msk (1UL << PMU_CNTENSET_CNT8_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 8 Enable Set Mask */ + +#define PMU_CNTENSET_CNT9_ENABLE_Pos 9U /*!< PMU CNTENSET: Event Counter 9 Enable Set Position */ +#define PMU_CNTENSET_CNT9_ENABLE_Msk (1UL << PMU_CNTENSET_CNT9_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 9 Enable Set Mask */ + +#define PMU_CNTENSET_CNT10_ENABLE_Pos 10U /*!< PMU CNTENSET: Event Counter 10 Enable Set Position */ +#define PMU_CNTENSET_CNT10_ENABLE_Msk (1UL << PMU_CNTENSET_CNT10_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 10 Enable Set Mask */ + +#define PMU_CNTENSET_CNT11_ENABLE_Pos 11U /*!< PMU CNTENSET: Event Counter 11 Enable Set Position */ +#define PMU_CNTENSET_CNT11_ENABLE_Msk (1UL << PMU_CNTENSET_CNT11_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 11 Enable Set Mask */ + +#define PMU_CNTENSET_CNT12_ENABLE_Pos 12U /*!< PMU CNTENSET: Event Counter 12 Enable Set Position */ +#define PMU_CNTENSET_CNT12_ENABLE_Msk (1UL << PMU_CNTENSET_CNT12_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 12 Enable Set Mask */ + +#define PMU_CNTENSET_CNT13_ENABLE_Pos 13U /*!< PMU CNTENSET: Event Counter 13 Enable Set Position */ +#define PMU_CNTENSET_CNT13_ENABLE_Msk (1UL << PMU_CNTENSET_CNT13_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 13 Enable Set Mask */ + +#define PMU_CNTENSET_CNT14_ENABLE_Pos 14U /*!< PMU CNTENSET: Event Counter 14 Enable Set Position */ +#define PMU_CNTENSET_CNT14_ENABLE_Msk (1UL << PMU_CNTENSET_CNT14_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 14 Enable Set Mask */ + +#define PMU_CNTENSET_CNT15_ENABLE_Pos 15U /*!< PMU CNTENSET: Event Counter 15 Enable Set Position */ +#define PMU_CNTENSET_CNT15_ENABLE_Msk (1UL << PMU_CNTENSET_CNT15_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 15 Enable Set Mask */ + +#define PMU_CNTENSET_CNT16_ENABLE_Pos 16U /*!< PMU CNTENSET: Event Counter 16 Enable Set Position */ +#define PMU_CNTENSET_CNT16_ENABLE_Msk (1UL << PMU_CNTENSET_CNT16_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 16 Enable Set Mask */ + +#define PMU_CNTENSET_CNT17_ENABLE_Pos 17U /*!< PMU CNTENSET: Event Counter 17 Enable Set Position */ +#define PMU_CNTENSET_CNT17_ENABLE_Msk (1UL << PMU_CNTENSET_CNT17_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 17 Enable Set Mask */ + +#define PMU_CNTENSET_CNT18_ENABLE_Pos 18U /*!< PMU CNTENSET: Event Counter 18 Enable Set Position */ +#define PMU_CNTENSET_CNT18_ENABLE_Msk (1UL << PMU_CNTENSET_CNT18_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 18 Enable Set Mask */ + +#define PMU_CNTENSET_CNT19_ENABLE_Pos 19U /*!< PMU CNTENSET: Event Counter 19 Enable Set Position */ +#define PMU_CNTENSET_CNT19_ENABLE_Msk (1UL << PMU_CNTENSET_CNT19_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 19 Enable Set Mask */ + +#define PMU_CNTENSET_CNT20_ENABLE_Pos 20U /*!< PMU CNTENSET: Event Counter 20 Enable Set Position */ +#define PMU_CNTENSET_CNT20_ENABLE_Msk (1UL << PMU_CNTENSET_CNT20_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 20 Enable Set Mask */ + +#define PMU_CNTENSET_CNT21_ENABLE_Pos 21U /*!< PMU CNTENSET: Event Counter 21 Enable Set Position */ +#define PMU_CNTENSET_CNT21_ENABLE_Msk (1UL << PMU_CNTENSET_CNT21_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 21 Enable Set Mask */ + +#define PMU_CNTENSET_CNT22_ENABLE_Pos 22U /*!< PMU CNTENSET: Event Counter 22 Enable Set Position */ +#define PMU_CNTENSET_CNT22_ENABLE_Msk (1UL << PMU_CNTENSET_CNT22_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 22 Enable Set Mask */ + +#define PMU_CNTENSET_CNT23_ENABLE_Pos 23U /*!< PMU CNTENSET: Event Counter 23 Enable Set Position */ +#define PMU_CNTENSET_CNT23_ENABLE_Msk (1UL << PMU_CNTENSET_CNT23_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 23 Enable Set Mask */ + +#define PMU_CNTENSET_CNT24_ENABLE_Pos 24U /*!< PMU CNTENSET: Event Counter 24 Enable Set Position */ +#define PMU_CNTENSET_CNT24_ENABLE_Msk (1UL << PMU_CNTENSET_CNT24_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 24 Enable Set Mask */ + +#define PMU_CNTENSET_CNT25_ENABLE_Pos 25U /*!< PMU CNTENSET: Event Counter 25 Enable Set Position */ +#define PMU_CNTENSET_CNT25_ENABLE_Msk (1UL << PMU_CNTENSET_CNT25_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 25 Enable Set Mask */ + +#define PMU_CNTENSET_CNT26_ENABLE_Pos 26U /*!< PMU CNTENSET: Event Counter 26 Enable Set Position */ +#define PMU_CNTENSET_CNT26_ENABLE_Msk (1UL << PMU_CNTENSET_CNT26_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 26 Enable Set Mask */ + +#define PMU_CNTENSET_CNT27_ENABLE_Pos 27U /*!< PMU CNTENSET: Event Counter 27 Enable Set Position */ +#define PMU_CNTENSET_CNT27_ENABLE_Msk (1UL << PMU_CNTENSET_CNT27_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 27 Enable Set Mask */ + +#define PMU_CNTENSET_CNT28_ENABLE_Pos 28U /*!< PMU CNTENSET: Event Counter 28 Enable Set Position */ +#define PMU_CNTENSET_CNT28_ENABLE_Msk (1UL << PMU_CNTENSET_CNT28_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 28 Enable Set Mask */ + +#define PMU_CNTENSET_CNT29_ENABLE_Pos 29U /*!< PMU CNTENSET: Event Counter 29 Enable Set Position */ +#define PMU_CNTENSET_CNT29_ENABLE_Msk (1UL << PMU_CNTENSET_CNT29_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 29 Enable Set Mask */ + +#define PMU_CNTENSET_CNT30_ENABLE_Pos 30U /*!< PMU CNTENSET: Event Counter 30 Enable Set Position */ +#define PMU_CNTENSET_CNT30_ENABLE_Msk (1UL << PMU_CNTENSET_CNT30_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 30 Enable Set Mask */ + +#define PMU_CNTENSET_CCNTR_ENABLE_Pos 31U /*!< PMU CNTENSET: Cycle Counter Enable Set Position */ +#define PMU_CNTENSET_CCNTR_ENABLE_Msk (1UL << PMU_CNTENSET_CCNTR_ENABLE_Pos) /*!< PMU CNTENSET: Cycle Counter Enable Set Mask */ + +/** \brief PMU Count Enable Clear Register Definitions */ + +#define PMU_CNTENSET_CNT0_ENABLE_Pos 0U /*!< PMU CNTENCLR: Event Counter 0 Enable Clear Position */ +#define PMU_CNTENCLR_CNT0_ENABLE_Msk (1UL /*<< PMU_CNTENCLR_CNT0_ENABLE_Pos*/) /*!< PMU CNTENCLR: Event Counter 0 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT1_ENABLE_Pos 1U /*!< PMU CNTENCLR: Event Counter 1 Enable Clear Position */ +#define PMU_CNTENCLR_CNT1_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT1_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 1 Enable Clear */ + +#define PMU_CNTENCLR_CNT2_ENABLE_Pos 2U /*!< PMU CNTENCLR: Event Counter 2 Enable Clear Position */ +#define PMU_CNTENCLR_CNT2_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT2_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 2 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT3_ENABLE_Pos 3U /*!< PMU CNTENCLR: Event Counter 3 Enable Clear Position */ +#define PMU_CNTENCLR_CNT3_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT3_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 3 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT4_ENABLE_Pos 4U /*!< PMU CNTENCLR: Event Counter 4 Enable Clear Position */ +#define PMU_CNTENCLR_CNT4_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT4_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 4 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT5_ENABLE_Pos 5U /*!< PMU CNTENCLR: Event Counter 5 Enable Clear Position */ +#define PMU_CNTENCLR_CNT5_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT5_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 5 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT6_ENABLE_Pos 6U /*!< PMU CNTENCLR: Event Counter 6 Enable Clear Position */ +#define PMU_CNTENCLR_CNT6_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT6_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 6 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT7_ENABLE_Pos 7U /*!< PMU CNTENCLR: Event Counter 7 Enable Clear Position */ +#define PMU_CNTENCLR_CNT7_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT7_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 7 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT8_ENABLE_Pos 8U /*!< PMU CNTENCLR: Event Counter 8 Enable Clear Position */ +#define PMU_CNTENCLR_CNT8_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT8_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 8 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT9_ENABLE_Pos 9U /*!< PMU CNTENCLR: Event Counter 9 Enable Clear Position */ +#define PMU_CNTENCLR_CNT9_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT9_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 9 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT10_ENABLE_Pos 10U /*!< PMU CNTENCLR: Event Counter 10 Enable Clear Position */ +#define PMU_CNTENCLR_CNT10_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT10_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 10 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT11_ENABLE_Pos 11U /*!< PMU CNTENCLR: Event Counter 11 Enable Clear Position */ +#define PMU_CNTENCLR_CNT11_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT11_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 11 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT12_ENABLE_Pos 12U /*!< PMU CNTENCLR: Event Counter 12 Enable Clear Position */ +#define PMU_CNTENCLR_CNT12_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT12_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 12 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT13_ENABLE_Pos 13U /*!< PMU CNTENCLR: Event Counter 13 Enable Clear Position */ +#define PMU_CNTENCLR_CNT13_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT13_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 13 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT14_ENABLE_Pos 14U /*!< PMU CNTENCLR: Event Counter 14 Enable Clear Position */ +#define PMU_CNTENCLR_CNT14_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT14_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 14 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT15_ENABLE_Pos 15U /*!< PMU CNTENCLR: Event Counter 15 Enable Clear Position */ +#define PMU_CNTENCLR_CNT15_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT15_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 15 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT16_ENABLE_Pos 16U /*!< PMU CNTENCLR: Event Counter 16 Enable Clear Position */ +#define PMU_CNTENCLR_CNT16_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT16_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 16 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT17_ENABLE_Pos 17U /*!< PMU CNTENCLR: Event Counter 17 Enable Clear Position */ +#define PMU_CNTENCLR_CNT17_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT17_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 17 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT18_ENABLE_Pos 18U /*!< PMU CNTENCLR: Event Counter 18 Enable Clear Position */ +#define PMU_CNTENCLR_CNT18_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT18_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 18 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT19_ENABLE_Pos 19U /*!< PMU CNTENCLR: Event Counter 19 Enable Clear Position */ +#define PMU_CNTENCLR_CNT19_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT19_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 19 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT20_ENABLE_Pos 20U /*!< PMU CNTENCLR: Event Counter 20 Enable Clear Position */ +#define PMU_CNTENCLR_CNT20_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT20_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 20 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT21_ENABLE_Pos 21U /*!< PMU CNTENCLR: Event Counter 21 Enable Clear Position */ +#define PMU_CNTENCLR_CNT21_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT21_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 21 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT22_ENABLE_Pos 22U /*!< PMU CNTENCLR: Event Counter 22 Enable Clear Position */ +#define PMU_CNTENCLR_CNT22_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT22_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 22 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT23_ENABLE_Pos 23U /*!< PMU CNTENCLR: Event Counter 23 Enable Clear Position */ +#define PMU_CNTENCLR_CNT23_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT23_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 23 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT24_ENABLE_Pos 24U /*!< PMU CNTENCLR: Event Counter 24 Enable Clear Position */ +#define PMU_CNTENCLR_CNT24_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT24_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 24 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT25_ENABLE_Pos 25U /*!< PMU CNTENCLR: Event Counter 25 Enable Clear Position */ +#define PMU_CNTENCLR_CNT25_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT25_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 25 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT26_ENABLE_Pos 26U /*!< PMU CNTENCLR: Event Counter 26 Enable Clear Position */ +#define PMU_CNTENCLR_CNT26_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT26_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 26 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT27_ENABLE_Pos 27U /*!< PMU CNTENCLR: Event Counter 27 Enable Clear Position */ +#define PMU_CNTENCLR_CNT27_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT27_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 27 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT28_ENABLE_Pos 28U /*!< PMU CNTENCLR: Event Counter 28 Enable Clear Position */ +#define PMU_CNTENCLR_CNT28_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT28_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 28 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT29_ENABLE_Pos 29U /*!< PMU CNTENCLR: Event Counter 29 Enable Clear Position */ +#define PMU_CNTENCLR_CNT29_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT29_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 29 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT30_ENABLE_Pos 30U /*!< PMU CNTENCLR: Event Counter 30 Enable Clear Position */ +#define PMU_CNTENCLR_CNT30_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT30_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 30 Enable Clear Mask */ + +#define PMU_CNTENCLR_CCNTR_ENABLE_Pos 31U /*!< PMU CNTENCLR: Cycle Counter Enable Clear Position */ +#define PMU_CNTENCLR_CCNTR_ENABLE_Msk (1UL << PMU_CNTENCLR_CCNTR_ENABLE_Pos) /*!< PMU CNTENCLR: Cycle Counter Enable Clear Mask */ + +/** \brief PMU Interrupt Enable Set Register Definitions */ + +#define PMU_INTENSET_CNT0_ENABLE_Pos 0U /*!< PMU INTENSET: Event Counter 0 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT0_ENABLE_Msk (1UL /*<< PMU_INTENSET_CNT0_ENABLE_Pos*/) /*!< PMU INTENSET: Event Counter 0 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT1_ENABLE_Pos 1U /*!< PMU INTENSET: Event Counter 1 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT1_ENABLE_Msk (1UL << PMU_INTENSET_CNT1_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 1 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT2_ENABLE_Pos 2U /*!< PMU INTENSET: Event Counter 2 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT2_ENABLE_Msk (1UL << PMU_INTENSET_CNT2_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 2 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT3_ENABLE_Pos 3U /*!< PMU INTENSET: Event Counter 3 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT3_ENABLE_Msk (1UL << PMU_INTENSET_CNT3_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 3 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT4_ENABLE_Pos 4U /*!< PMU INTENSET: Event Counter 4 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT4_ENABLE_Msk (1UL << PMU_INTENSET_CNT4_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 4 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT5_ENABLE_Pos 5U /*!< PMU INTENSET: Event Counter 5 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT5_ENABLE_Msk (1UL << PMU_INTENSET_CNT5_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 5 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT6_ENABLE_Pos 6U /*!< PMU INTENSET: Event Counter 6 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT6_ENABLE_Msk (1UL << PMU_INTENSET_CNT6_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 6 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT7_ENABLE_Pos 7U /*!< PMU INTENSET: Event Counter 7 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT7_ENABLE_Msk (1UL << PMU_INTENSET_CNT7_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 7 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT8_ENABLE_Pos 8U /*!< PMU INTENSET: Event Counter 8 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT8_ENABLE_Msk (1UL << PMU_INTENSET_CNT8_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 8 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT9_ENABLE_Pos 9U /*!< PMU INTENSET: Event Counter 9 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT9_ENABLE_Msk (1UL << PMU_INTENSET_CNT9_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 9 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT10_ENABLE_Pos 10U /*!< PMU INTENSET: Event Counter 10 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT10_ENABLE_Msk (1UL << PMU_INTENSET_CNT10_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 10 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT11_ENABLE_Pos 11U /*!< PMU INTENSET: Event Counter 11 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT11_ENABLE_Msk (1UL << PMU_INTENSET_CNT11_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 11 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT12_ENABLE_Pos 12U /*!< PMU INTENSET: Event Counter 12 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT12_ENABLE_Msk (1UL << PMU_INTENSET_CNT12_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 12 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT13_ENABLE_Pos 13U /*!< PMU INTENSET: Event Counter 13 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT13_ENABLE_Msk (1UL << PMU_INTENSET_CNT13_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 13 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT14_ENABLE_Pos 14U /*!< PMU INTENSET: Event Counter 14 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT14_ENABLE_Msk (1UL << PMU_INTENSET_CNT14_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 14 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT15_ENABLE_Pos 15U /*!< PMU INTENSET: Event Counter 15 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT15_ENABLE_Msk (1UL << PMU_INTENSET_CNT15_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 15 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT16_ENABLE_Pos 16U /*!< PMU INTENSET: Event Counter 16 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT16_ENABLE_Msk (1UL << PMU_INTENSET_CNT16_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 16 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT17_ENABLE_Pos 17U /*!< PMU INTENSET: Event Counter 17 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT17_ENABLE_Msk (1UL << PMU_INTENSET_CNT17_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 17 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT18_ENABLE_Pos 18U /*!< PMU INTENSET: Event Counter 18 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT18_ENABLE_Msk (1UL << PMU_INTENSET_CNT18_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 18 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT19_ENABLE_Pos 19U /*!< PMU INTENSET: Event Counter 19 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT19_ENABLE_Msk (1UL << PMU_INTENSET_CNT19_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 19 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT20_ENABLE_Pos 20U /*!< PMU INTENSET: Event Counter 20 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT20_ENABLE_Msk (1UL << PMU_INTENSET_CNT20_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 20 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT21_ENABLE_Pos 21U /*!< PMU INTENSET: Event Counter 21 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT21_ENABLE_Msk (1UL << PMU_INTENSET_CNT21_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 21 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT22_ENABLE_Pos 22U /*!< PMU INTENSET: Event Counter 22 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT22_ENABLE_Msk (1UL << PMU_INTENSET_CNT22_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 22 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT23_ENABLE_Pos 23U /*!< PMU INTENSET: Event Counter 23 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT23_ENABLE_Msk (1UL << PMU_INTENSET_CNT23_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 23 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT24_ENABLE_Pos 24U /*!< PMU INTENSET: Event Counter 24 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT24_ENABLE_Msk (1UL << PMU_INTENSET_CNT24_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 24 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT25_ENABLE_Pos 25U /*!< PMU INTENSET: Event Counter 25 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT25_ENABLE_Msk (1UL << PMU_INTENSET_CNT25_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 25 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT26_ENABLE_Pos 26U /*!< PMU INTENSET: Event Counter 26 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT26_ENABLE_Msk (1UL << PMU_INTENSET_CNT26_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 26 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT27_ENABLE_Pos 27U /*!< PMU INTENSET: Event Counter 27 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT27_ENABLE_Msk (1UL << PMU_INTENSET_CNT27_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 27 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT28_ENABLE_Pos 28U /*!< PMU INTENSET: Event Counter 28 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT28_ENABLE_Msk (1UL << PMU_INTENSET_CNT28_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 28 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT29_ENABLE_Pos 29U /*!< PMU INTENSET: Event Counter 29 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT29_ENABLE_Msk (1UL << PMU_INTENSET_CNT29_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 29 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT30_ENABLE_Pos 30U /*!< PMU INTENSET: Event Counter 30 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT30_ENABLE_Msk (1UL << PMU_INTENSET_CNT30_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 30 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CYCCNT_ENABLE_Pos 31U /*!< PMU INTENSET: Cycle Counter Interrupt Enable Set Position */ +#define PMU_INTENSET_CCYCNT_ENABLE_Msk (1UL << PMU_INTENSET_CYCCNT_ENABLE_Pos) /*!< PMU INTENSET: Cycle Counter Interrupt Enable Set Mask */ + +/** \brief PMU Interrupt Enable Clear Register Definitions */ + +#define PMU_INTENSET_CNT0_ENABLE_Pos 0U /*!< PMU INTENCLR: Event Counter 0 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT0_ENABLE_Msk (1UL /*<< PMU_INTENCLR_CNT0_ENABLE_Pos*/) /*!< PMU INTENCLR: Event Counter 0 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT1_ENABLE_Pos 1U /*!< PMU INTENCLR: Event Counter 1 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT1_ENABLE_Msk (1UL << PMU_INTENCLR_CNT1_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 1 Interrupt Enable Clear */ + +#define PMU_INTENCLR_CNT2_ENABLE_Pos 2U /*!< PMU INTENCLR: Event Counter 2 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT2_ENABLE_Msk (1UL << PMU_INTENCLR_CNT2_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 2 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT3_ENABLE_Pos 3U /*!< PMU INTENCLR: Event Counter 3 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT3_ENABLE_Msk (1UL << PMU_INTENCLR_CNT3_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 3 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT4_ENABLE_Pos 4U /*!< PMU INTENCLR: Event Counter 4 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT4_ENABLE_Msk (1UL << PMU_INTENCLR_CNT4_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 4 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT5_ENABLE_Pos 5U /*!< PMU INTENCLR: Event Counter 5 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT5_ENABLE_Msk (1UL << PMU_INTENCLR_CNT5_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 5 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT6_ENABLE_Pos 6U /*!< PMU INTENCLR: Event Counter 6 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT6_ENABLE_Msk (1UL << PMU_INTENCLR_CNT6_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 6 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT7_ENABLE_Pos 7U /*!< PMU INTENCLR: Event Counter 7 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT7_ENABLE_Msk (1UL << PMU_INTENCLR_CNT7_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 7 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT8_ENABLE_Pos 8U /*!< PMU INTENCLR: Event Counter 8 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT8_ENABLE_Msk (1UL << PMU_INTENCLR_CNT8_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 8 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT9_ENABLE_Pos 9U /*!< PMU INTENCLR: Event Counter 9 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT9_ENABLE_Msk (1UL << PMU_INTENCLR_CNT9_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 9 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT10_ENABLE_Pos 10U /*!< PMU INTENCLR: Event Counter 10 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT10_ENABLE_Msk (1UL << PMU_INTENCLR_CNT10_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 10 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT11_ENABLE_Pos 11U /*!< PMU INTENCLR: Event Counter 11 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT11_ENABLE_Msk (1UL << PMU_INTENCLR_CNT11_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 11 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT12_ENABLE_Pos 12U /*!< PMU INTENCLR: Event Counter 12 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT12_ENABLE_Msk (1UL << PMU_INTENCLR_CNT12_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 12 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT13_ENABLE_Pos 13U /*!< PMU INTENCLR: Event Counter 13 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT13_ENABLE_Msk (1UL << PMU_INTENCLR_CNT13_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 13 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT14_ENABLE_Pos 14U /*!< PMU INTENCLR: Event Counter 14 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT14_ENABLE_Msk (1UL << PMU_INTENCLR_CNT14_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 14 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT15_ENABLE_Pos 15U /*!< PMU INTENCLR: Event Counter 15 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT15_ENABLE_Msk (1UL << PMU_INTENCLR_CNT15_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 15 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT16_ENABLE_Pos 16U /*!< PMU INTENCLR: Event Counter 16 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT16_ENABLE_Msk (1UL << PMU_INTENCLR_CNT16_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 16 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT17_ENABLE_Pos 17U /*!< PMU INTENCLR: Event Counter 17 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT17_ENABLE_Msk (1UL << PMU_INTENCLR_CNT17_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 17 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT18_ENABLE_Pos 18U /*!< PMU INTENCLR: Event Counter 18 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT18_ENABLE_Msk (1UL << PMU_INTENCLR_CNT18_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 18 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT19_ENABLE_Pos 19U /*!< PMU INTENCLR: Event Counter 19 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT19_ENABLE_Msk (1UL << PMU_INTENCLR_CNT19_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 19 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT20_ENABLE_Pos 20U /*!< PMU INTENCLR: Event Counter 20 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT20_ENABLE_Msk (1UL << PMU_INTENCLR_CNT20_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 20 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT21_ENABLE_Pos 21U /*!< PMU INTENCLR: Event Counter 21 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT21_ENABLE_Msk (1UL << PMU_INTENCLR_CNT21_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 21 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT22_ENABLE_Pos 22U /*!< PMU INTENCLR: Event Counter 22 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT22_ENABLE_Msk (1UL << PMU_INTENCLR_CNT22_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 22 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT23_ENABLE_Pos 23U /*!< PMU INTENCLR: Event Counter 23 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT23_ENABLE_Msk (1UL << PMU_INTENCLR_CNT23_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 23 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT24_ENABLE_Pos 24U /*!< PMU INTENCLR: Event Counter 24 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT24_ENABLE_Msk (1UL << PMU_INTENCLR_CNT24_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 24 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT25_ENABLE_Pos 25U /*!< PMU INTENCLR: Event Counter 25 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT25_ENABLE_Msk (1UL << PMU_INTENCLR_CNT25_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 25 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT26_ENABLE_Pos 26U /*!< PMU INTENCLR: Event Counter 26 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT26_ENABLE_Msk (1UL << PMU_INTENCLR_CNT26_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 26 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT27_ENABLE_Pos 27U /*!< PMU INTENCLR: Event Counter 27 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT27_ENABLE_Msk (1UL << PMU_INTENCLR_CNT27_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 27 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT28_ENABLE_Pos 28U /*!< PMU INTENCLR: Event Counter 28 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT28_ENABLE_Msk (1UL << PMU_INTENCLR_CNT28_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 28 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT29_ENABLE_Pos 29U /*!< PMU INTENCLR: Event Counter 29 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT29_ENABLE_Msk (1UL << PMU_INTENCLR_CNT29_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 29 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT30_ENABLE_Pos 30U /*!< PMU INTENCLR: Event Counter 30 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT30_ENABLE_Msk (1UL << PMU_INTENCLR_CNT30_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 30 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CYCCNT_ENABLE_Pos 31U /*!< PMU INTENCLR: Cycle Counter Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CYCCNT_ENABLE_Msk (1UL << PMU_INTENCLR_CYCCNT_ENABLE_Pos) /*!< PMU INTENCLR: Cycle Counter Interrupt Enable Clear Mask */ + +/** \brief PMU Overflow Flag Status Set Register Definitions */ + +#define PMU_OVSSET_CNT0_STATUS_Pos 0U /*!< PMU OVSSET: Event Counter 0 Overflow Set Position */ +#define PMU_OVSSET_CNT0_STATUS_Msk (1UL /*<< PMU_OVSSET_CNT0_STATUS_Pos*/) /*!< PMU OVSSET: Event Counter 0 Overflow Set Mask */ + +#define PMU_OVSSET_CNT1_STATUS_Pos 1U /*!< PMU OVSSET: Event Counter 1 Overflow Set Position */ +#define PMU_OVSSET_CNT1_STATUS_Msk (1UL << PMU_OVSSET_CNT1_STATUS_Pos) /*!< PMU OVSSET: Event Counter 1 Overflow Set Mask */ + +#define PMU_OVSSET_CNT2_STATUS_Pos 2U /*!< PMU OVSSET: Event Counter 2 Overflow Set Position */ +#define PMU_OVSSET_CNT2_STATUS_Msk (1UL << PMU_OVSSET_CNT2_STATUS_Pos) /*!< PMU OVSSET: Event Counter 2 Overflow Set Mask */ + +#define PMU_OVSSET_CNT3_STATUS_Pos 3U /*!< PMU OVSSET: Event Counter 3 Overflow Set Position */ +#define PMU_OVSSET_CNT3_STATUS_Msk (1UL << PMU_OVSSET_CNT3_STATUS_Pos) /*!< PMU OVSSET: Event Counter 3 Overflow Set Mask */ + +#define PMU_OVSSET_CNT4_STATUS_Pos 4U /*!< PMU OVSSET: Event Counter 4 Overflow Set Position */ +#define PMU_OVSSET_CNT4_STATUS_Msk (1UL << PMU_OVSSET_CNT4_STATUS_Pos) /*!< PMU OVSSET: Event Counter 4 Overflow Set Mask */ + +#define PMU_OVSSET_CNT5_STATUS_Pos 5U /*!< PMU OVSSET: Event Counter 5 Overflow Set Position */ +#define PMU_OVSSET_CNT5_STATUS_Msk (1UL << PMU_OVSSET_CNT5_STATUS_Pos) /*!< PMU OVSSET: Event Counter 5 Overflow Set Mask */ + +#define PMU_OVSSET_CNT6_STATUS_Pos 6U /*!< PMU OVSSET: Event Counter 6 Overflow Set Position */ +#define PMU_OVSSET_CNT6_STATUS_Msk (1UL << PMU_OVSSET_CNT6_STATUS_Pos) /*!< PMU OVSSET: Event Counter 6 Overflow Set Mask */ + +#define PMU_OVSSET_CNT7_STATUS_Pos 7U /*!< PMU OVSSET: Event Counter 7 Overflow Set Position */ +#define PMU_OVSSET_CNT7_STATUS_Msk (1UL << PMU_OVSSET_CNT7_STATUS_Pos) /*!< PMU OVSSET: Event Counter 7 Overflow Set Mask */ + +#define PMU_OVSSET_CNT8_STATUS_Pos 8U /*!< PMU OVSSET: Event Counter 8 Overflow Set Position */ +#define PMU_OVSSET_CNT8_STATUS_Msk (1UL << PMU_OVSSET_CNT8_STATUS_Pos) /*!< PMU OVSSET: Event Counter 8 Overflow Set Mask */ + +#define PMU_OVSSET_CNT9_STATUS_Pos 9U /*!< PMU OVSSET: Event Counter 9 Overflow Set Position */ +#define PMU_OVSSET_CNT9_STATUS_Msk (1UL << PMU_OVSSET_CNT9_STATUS_Pos) /*!< PMU OVSSET: Event Counter 9 Overflow Set Mask */ + +#define PMU_OVSSET_CNT10_STATUS_Pos 10U /*!< PMU OVSSET: Event Counter 10 Overflow Set Position */ +#define PMU_OVSSET_CNT10_STATUS_Msk (1UL << PMU_OVSSET_CNT10_STATUS_Pos) /*!< PMU OVSSET: Event Counter 10 Overflow Set Mask */ + +#define PMU_OVSSET_CNT11_STATUS_Pos 11U /*!< PMU OVSSET: Event Counter 11 Overflow Set Position */ +#define PMU_OVSSET_CNT11_STATUS_Msk (1UL << PMU_OVSSET_CNT11_STATUS_Pos) /*!< PMU OVSSET: Event Counter 11 Overflow Set Mask */ + +#define PMU_OVSSET_CNT12_STATUS_Pos 12U /*!< PMU OVSSET: Event Counter 12 Overflow Set Position */ +#define PMU_OVSSET_CNT12_STATUS_Msk (1UL << PMU_OVSSET_CNT12_STATUS_Pos) /*!< PMU OVSSET: Event Counter 12 Overflow Set Mask */ + +#define PMU_OVSSET_CNT13_STATUS_Pos 13U /*!< PMU OVSSET: Event Counter 13 Overflow Set Position */ +#define PMU_OVSSET_CNT13_STATUS_Msk (1UL << PMU_OVSSET_CNT13_STATUS_Pos) /*!< PMU OVSSET: Event Counter 13 Overflow Set Mask */ + +#define PMU_OVSSET_CNT14_STATUS_Pos 14U /*!< PMU OVSSET: Event Counter 14 Overflow Set Position */ +#define PMU_OVSSET_CNT14_STATUS_Msk (1UL << PMU_OVSSET_CNT14_STATUS_Pos) /*!< PMU OVSSET: Event Counter 14 Overflow Set Mask */ + +#define PMU_OVSSET_CNT15_STATUS_Pos 15U /*!< PMU OVSSET: Event Counter 15 Overflow Set Position */ +#define PMU_OVSSET_CNT15_STATUS_Msk (1UL << PMU_OVSSET_CNT15_STATUS_Pos) /*!< PMU OVSSET: Event Counter 15 Overflow Set Mask */ + +#define PMU_OVSSET_CNT16_STATUS_Pos 16U /*!< PMU OVSSET: Event Counter 16 Overflow Set Position */ +#define PMU_OVSSET_CNT16_STATUS_Msk (1UL << PMU_OVSSET_CNT16_STATUS_Pos) /*!< PMU OVSSET: Event Counter 16 Overflow Set Mask */ + +#define PMU_OVSSET_CNT17_STATUS_Pos 17U /*!< PMU OVSSET: Event Counter 17 Overflow Set Position */ +#define PMU_OVSSET_CNT17_STATUS_Msk (1UL << PMU_OVSSET_CNT17_STATUS_Pos) /*!< PMU OVSSET: Event Counter 17 Overflow Set Mask */ + +#define PMU_OVSSET_CNT18_STATUS_Pos 18U /*!< PMU OVSSET: Event Counter 18 Overflow Set Position */ +#define PMU_OVSSET_CNT18_STATUS_Msk (1UL << PMU_OVSSET_CNT18_STATUS_Pos) /*!< PMU OVSSET: Event Counter 18 Overflow Set Mask */ + +#define PMU_OVSSET_CNT19_STATUS_Pos 19U /*!< PMU OVSSET: Event Counter 19 Overflow Set Position */ +#define PMU_OVSSET_CNT19_STATUS_Msk (1UL << PMU_OVSSET_CNT19_STATUS_Pos) /*!< PMU OVSSET: Event Counter 19 Overflow Set Mask */ + +#define PMU_OVSSET_CNT20_STATUS_Pos 20U /*!< PMU OVSSET: Event Counter 20 Overflow Set Position */ +#define PMU_OVSSET_CNT20_STATUS_Msk (1UL << PMU_OVSSET_CNT20_STATUS_Pos) /*!< PMU OVSSET: Event Counter 20 Overflow Set Mask */ + +#define PMU_OVSSET_CNT21_STATUS_Pos 21U /*!< PMU OVSSET: Event Counter 21 Overflow Set Position */ +#define PMU_OVSSET_CNT21_STATUS_Msk (1UL << PMU_OVSSET_CNT21_STATUS_Pos) /*!< PMU OVSSET: Event Counter 21 Overflow Set Mask */ + +#define PMU_OVSSET_CNT22_STATUS_Pos 22U /*!< PMU OVSSET: Event Counter 22 Overflow Set Position */ +#define PMU_OVSSET_CNT22_STATUS_Msk (1UL << PMU_OVSSET_CNT22_STATUS_Pos) /*!< PMU OVSSET: Event Counter 22 Overflow Set Mask */ + +#define PMU_OVSSET_CNT23_STATUS_Pos 23U /*!< PMU OVSSET: Event Counter 23 Overflow Set Position */ +#define PMU_OVSSET_CNT23_STATUS_Msk (1UL << PMU_OVSSET_CNT23_STATUS_Pos) /*!< PMU OVSSET: Event Counter 23 Overflow Set Mask */ + +#define PMU_OVSSET_CNT24_STATUS_Pos 24U /*!< PMU OVSSET: Event Counter 24 Overflow Set Position */ +#define PMU_OVSSET_CNT24_STATUS_Msk (1UL << PMU_OVSSET_CNT24_STATUS_Pos) /*!< PMU OVSSET: Event Counter 24 Overflow Set Mask */ + +#define PMU_OVSSET_CNT25_STATUS_Pos 25U /*!< PMU OVSSET: Event Counter 25 Overflow Set Position */ +#define PMU_OVSSET_CNT25_STATUS_Msk (1UL << PMU_OVSSET_CNT25_STATUS_Pos) /*!< PMU OVSSET: Event Counter 25 Overflow Set Mask */ + +#define PMU_OVSSET_CNT26_STATUS_Pos 26U /*!< PMU OVSSET: Event Counter 26 Overflow Set Position */ +#define PMU_OVSSET_CNT26_STATUS_Msk (1UL << PMU_OVSSET_CNT26_STATUS_Pos) /*!< PMU OVSSET: Event Counter 26 Overflow Set Mask */ + +#define PMU_OVSSET_CNT27_STATUS_Pos 27U /*!< PMU OVSSET: Event Counter 27 Overflow Set Position */ +#define PMU_OVSSET_CNT27_STATUS_Msk (1UL << PMU_OVSSET_CNT27_STATUS_Pos) /*!< PMU OVSSET: Event Counter 27 Overflow Set Mask */ + +#define PMU_OVSSET_CNT28_STATUS_Pos 28U /*!< PMU OVSSET: Event Counter 28 Overflow Set Position */ +#define PMU_OVSSET_CNT28_STATUS_Msk (1UL << PMU_OVSSET_CNT28_STATUS_Pos) /*!< PMU OVSSET: Event Counter 28 Overflow Set Mask */ + +#define PMU_OVSSET_CNT29_STATUS_Pos 29U /*!< PMU OVSSET: Event Counter 29 Overflow Set Position */ +#define PMU_OVSSET_CNT29_STATUS_Msk (1UL << PMU_OVSSET_CNT29_STATUS_Pos) /*!< PMU OVSSET: Event Counter 29 Overflow Set Mask */ + +#define PMU_OVSSET_CNT30_STATUS_Pos 30U /*!< PMU OVSSET: Event Counter 30 Overflow Set Position */ +#define PMU_OVSSET_CNT30_STATUS_Msk (1UL << PMU_OVSSET_CNT30_STATUS_Pos) /*!< PMU OVSSET: Event Counter 30 Overflow Set Mask */ + +#define PMU_OVSSET_CYCCNT_STATUS_Pos 31U /*!< PMU OVSSET: Cycle Counter Overflow Set Position */ +#define PMU_OVSSET_CYCCNT_STATUS_Msk (1UL << PMU_OVSSET_CYCCNT_STATUS_Pos) /*!< PMU OVSSET: Cycle Counter Overflow Set Mask */ + +/** \brief PMU Overflow Flag Status Clear Register Definitions */ + +#define PMU_OVSCLR_CNT0_STATUS_Pos 0U /*!< PMU OVSCLR: Event Counter 0 Overflow Clear Position */ +#define PMU_OVSCLR_CNT0_STATUS_Msk (1UL /*<< PMU_OVSCLR_CNT0_STATUS_Pos*/) /*!< PMU OVSCLR: Event Counter 0 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT1_STATUS_Pos 1U /*!< PMU OVSCLR: Event Counter 1 Overflow Clear Position */ +#define PMU_OVSCLR_CNT1_STATUS_Msk (1UL << PMU_OVSCLR_CNT1_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 1 Overflow Clear */ + +#define PMU_OVSCLR_CNT2_STATUS_Pos 2U /*!< PMU OVSCLR: Event Counter 2 Overflow Clear Position */ +#define PMU_OVSCLR_CNT2_STATUS_Msk (1UL << PMU_OVSCLR_CNT2_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 2 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT3_STATUS_Pos 3U /*!< PMU OVSCLR: Event Counter 3 Overflow Clear Position */ +#define PMU_OVSCLR_CNT3_STATUS_Msk (1UL << PMU_OVSCLR_CNT3_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 3 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT4_STATUS_Pos 4U /*!< PMU OVSCLR: Event Counter 4 Overflow Clear Position */ +#define PMU_OVSCLR_CNT4_STATUS_Msk (1UL << PMU_OVSCLR_CNT4_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 4 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT5_STATUS_Pos 5U /*!< PMU OVSCLR: Event Counter 5 Overflow Clear Position */ +#define PMU_OVSCLR_CNT5_STATUS_Msk (1UL << PMU_OVSCLR_CNT5_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 5 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT6_STATUS_Pos 6U /*!< PMU OVSCLR: Event Counter 6 Overflow Clear Position */ +#define PMU_OVSCLR_CNT6_STATUS_Msk (1UL << PMU_OVSCLR_CNT6_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 6 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT7_STATUS_Pos 7U /*!< PMU OVSCLR: Event Counter 7 Overflow Clear Position */ +#define PMU_OVSCLR_CNT7_STATUS_Msk (1UL << PMU_OVSCLR_CNT7_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 7 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT8_STATUS_Pos 8U /*!< PMU OVSCLR: Event Counter 8 Overflow Clear Position */ +#define PMU_OVSCLR_CNT8_STATUS_Msk (1UL << PMU_OVSCLR_CNT8_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 8 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT9_STATUS_Pos 9U /*!< PMU OVSCLR: Event Counter 9 Overflow Clear Position */ +#define PMU_OVSCLR_CNT9_STATUS_Msk (1UL << PMU_OVSCLR_CNT9_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 9 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT10_STATUS_Pos 10U /*!< PMU OVSCLR: Event Counter 10 Overflow Clear Position */ +#define PMU_OVSCLR_CNT10_STATUS_Msk (1UL << PMU_OVSCLR_CNT10_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 10 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT11_STATUS_Pos 11U /*!< PMU OVSCLR: Event Counter 11 Overflow Clear Position */ +#define PMU_OVSCLR_CNT11_STATUS_Msk (1UL << PMU_OVSCLR_CNT11_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 11 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT12_STATUS_Pos 12U /*!< PMU OVSCLR: Event Counter 12 Overflow Clear Position */ +#define PMU_OVSCLR_CNT12_STATUS_Msk (1UL << PMU_OVSCLR_CNT12_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 12 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT13_STATUS_Pos 13U /*!< PMU OVSCLR: Event Counter 13 Overflow Clear Position */ +#define PMU_OVSCLR_CNT13_STATUS_Msk (1UL << PMU_OVSCLR_CNT13_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 13 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT14_STATUS_Pos 14U /*!< PMU OVSCLR: Event Counter 14 Overflow Clear Position */ +#define PMU_OVSCLR_CNT14_STATUS_Msk (1UL << PMU_OVSCLR_CNT14_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 14 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT15_STATUS_Pos 15U /*!< PMU OVSCLR: Event Counter 15 Overflow Clear Position */ +#define PMU_OVSCLR_CNT15_STATUS_Msk (1UL << PMU_OVSCLR_CNT15_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 15 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT16_STATUS_Pos 16U /*!< PMU OVSCLR: Event Counter 16 Overflow Clear Position */ +#define PMU_OVSCLR_CNT16_STATUS_Msk (1UL << PMU_OVSCLR_CNT16_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 16 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT17_STATUS_Pos 17U /*!< PMU OVSCLR: Event Counter 17 Overflow Clear Position */ +#define PMU_OVSCLR_CNT17_STATUS_Msk (1UL << PMU_OVSCLR_CNT17_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 17 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT18_STATUS_Pos 18U /*!< PMU OVSCLR: Event Counter 18 Overflow Clear Position */ +#define PMU_OVSCLR_CNT18_STATUS_Msk (1UL << PMU_OVSCLR_CNT18_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 18 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT19_STATUS_Pos 19U /*!< PMU OVSCLR: Event Counter 19 Overflow Clear Position */ +#define PMU_OVSCLR_CNT19_STATUS_Msk (1UL << PMU_OVSCLR_CNT19_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 19 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT20_STATUS_Pos 20U /*!< PMU OVSCLR: Event Counter 20 Overflow Clear Position */ +#define PMU_OVSCLR_CNT20_STATUS_Msk (1UL << PMU_OVSCLR_CNT20_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 20 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT21_STATUS_Pos 21U /*!< PMU OVSCLR: Event Counter 21 Overflow Clear Position */ +#define PMU_OVSCLR_CNT21_STATUS_Msk (1UL << PMU_OVSCLR_CNT21_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 21 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT22_STATUS_Pos 22U /*!< PMU OVSCLR: Event Counter 22 Overflow Clear Position */ +#define PMU_OVSCLR_CNT22_STATUS_Msk (1UL << PMU_OVSCLR_CNT22_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 22 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT23_STATUS_Pos 23U /*!< PMU OVSCLR: Event Counter 23 Overflow Clear Position */ +#define PMU_OVSCLR_CNT23_STATUS_Msk (1UL << PMU_OVSCLR_CNT23_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 23 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT24_STATUS_Pos 24U /*!< PMU OVSCLR: Event Counter 24 Overflow Clear Position */ +#define PMU_OVSCLR_CNT24_STATUS_Msk (1UL << PMU_OVSCLR_CNT24_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 24 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT25_STATUS_Pos 25U /*!< PMU OVSCLR: Event Counter 25 Overflow Clear Position */ +#define PMU_OVSCLR_CNT25_STATUS_Msk (1UL << PMU_OVSCLR_CNT25_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 25 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT26_STATUS_Pos 26U /*!< PMU OVSCLR: Event Counter 26 Overflow Clear Position */ +#define PMU_OVSCLR_CNT26_STATUS_Msk (1UL << PMU_OVSCLR_CNT26_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 26 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT27_STATUS_Pos 27U /*!< PMU OVSCLR: Event Counter 27 Overflow Clear Position */ +#define PMU_OVSCLR_CNT27_STATUS_Msk (1UL << PMU_OVSCLR_CNT27_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 27 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT28_STATUS_Pos 28U /*!< PMU OVSCLR: Event Counter 28 Overflow Clear Position */ +#define PMU_OVSCLR_CNT28_STATUS_Msk (1UL << PMU_OVSCLR_CNT28_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 28 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT29_STATUS_Pos 29U /*!< PMU OVSCLR: Event Counter 29 Overflow Clear Position */ +#define PMU_OVSCLR_CNT29_STATUS_Msk (1UL << PMU_OVSCLR_CNT29_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 29 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT30_STATUS_Pos 30U /*!< PMU OVSCLR: Event Counter 30 Overflow Clear Position */ +#define PMU_OVSCLR_CNT30_STATUS_Msk (1UL << PMU_OVSCLR_CNT30_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 30 Overflow Clear Mask */ + +#define PMU_OVSCLR_CYCCNT_STATUS_Pos 31U /*!< PMU OVSCLR: Cycle Counter Overflow Clear Position */ +#define PMU_OVSCLR_CYCCNT_STATUS_Msk (1UL << PMU_OVSCLR_CYCCNT_STATUS_Pos) /*!< PMU OVSCLR: Cycle Counter Overflow Clear Mask */ + +/** \brief PMU Software Increment Counter */ + +#define PMU_SWINC_CNT0_Pos 0U /*!< PMU SWINC: Event Counter 0 Software Increment Position */ +#define PMU_SWINC_CNT0_Msk (1UL /*<< PMU_SWINC_CNT0_Pos */) /*!< PMU SWINC: Event Counter 0 Software Increment Mask */ + +#define PMU_SWINC_CNT1_Pos 1U /*!< PMU SWINC: Event Counter 1 Software Increment Position */ +#define PMU_SWINC_CNT1_Msk (1UL << PMU_SWINC_CNT1_Pos) /*!< PMU SWINC: Event Counter 1 Software Increment Mask */ + +#define PMU_SWINC_CNT2_Pos 2U /*!< PMU SWINC: Event Counter 2 Software Increment Position */ +#define PMU_SWINC_CNT2_Msk (1UL << PMU_SWINC_CNT2_Pos) /*!< PMU SWINC: Event Counter 2 Software Increment Mask */ + +#define PMU_SWINC_CNT3_Pos 3U /*!< PMU SWINC: Event Counter 3 Software Increment Position */ +#define PMU_SWINC_CNT3_Msk (1UL << PMU_SWINC_CNT3_Pos) /*!< PMU SWINC: Event Counter 3 Software Increment Mask */ + +#define PMU_SWINC_CNT4_Pos 4U /*!< PMU SWINC: Event Counter 4 Software Increment Position */ +#define PMU_SWINC_CNT4_Msk (1UL << PMU_SWINC_CNT4_Pos) /*!< PMU SWINC: Event Counter 4 Software Increment Mask */ + +#define PMU_SWINC_CNT5_Pos 5U /*!< PMU SWINC: Event Counter 5 Software Increment Position */ +#define PMU_SWINC_CNT5_Msk (1UL << PMU_SWINC_CNT5_Pos) /*!< PMU SWINC: Event Counter 5 Software Increment Mask */ + +#define PMU_SWINC_CNT6_Pos 6U /*!< PMU SWINC: Event Counter 6 Software Increment Position */ +#define PMU_SWINC_CNT6_Msk (1UL << PMU_SWINC_CNT6_Pos) /*!< PMU SWINC: Event Counter 6 Software Increment Mask */ + +#define PMU_SWINC_CNT7_Pos 7U /*!< PMU SWINC: Event Counter 7 Software Increment Position */ +#define PMU_SWINC_CNT7_Msk (1UL << PMU_SWINC_CNT7_Pos) /*!< PMU SWINC: Event Counter 7 Software Increment Mask */ + +#define PMU_SWINC_CNT8_Pos 8U /*!< PMU SWINC: Event Counter 8 Software Increment Position */ +#define PMU_SWINC_CNT8_Msk (1UL << PMU_SWINC_CNT8_Pos) /*!< PMU SWINC: Event Counter 8 Software Increment Mask */ + +#define PMU_SWINC_CNT9_Pos 9U /*!< PMU SWINC: Event Counter 9 Software Increment Position */ +#define PMU_SWINC_CNT9_Msk (1UL << PMU_SWINC_CNT9_Pos) /*!< PMU SWINC: Event Counter 9 Software Increment Mask */ + +#define PMU_SWINC_CNT10_Pos 10U /*!< PMU SWINC: Event Counter 10 Software Increment Position */ +#define PMU_SWINC_CNT10_Msk (1UL << PMU_SWINC_CNT10_Pos) /*!< PMU SWINC: Event Counter 10 Software Increment Mask */ + +#define PMU_SWINC_CNT11_Pos 11U /*!< PMU SWINC: Event Counter 11 Software Increment Position */ +#define PMU_SWINC_CNT11_Msk (1UL << PMU_SWINC_CNT11_Pos) /*!< PMU SWINC: Event Counter 11 Software Increment Mask */ + +#define PMU_SWINC_CNT12_Pos 12U /*!< PMU SWINC: Event Counter 12 Software Increment Position */ +#define PMU_SWINC_CNT12_Msk (1UL << PMU_SWINC_CNT12_Pos) /*!< PMU SWINC: Event Counter 12 Software Increment Mask */ + +#define PMU_SWINC_CNT13_Pos 13U /*!< PMU SWINC: Event Counter 13 Software Increment Position */ +#define PMU_SWINC_CNT13_Msk (1UL << PMU_SWINC_CNT13_Pos) /*!< PMU SWINC: Event Counter 13 Software Increment Mask */ + +#define PMU_SWINC_CNT14_Pos 14U /*!< PMU SWINC: Event Counter 14 Software Increment Position */ +#define PMU_SWINC_CNT14_Msk (1UL << PMU_SWINC_CNT14_Pos) /*!< PMU SWINC: Event Counter 14 Software Increment Mask */ + +#define PMU_SWINC_CNT15_Pos 15U /*!< PMU SWINC: Event Counter 15 Software Increment Position */ +#define PMU_SWINC_CNT15_Msk (1UL << PMU_SWINC_CNT15_Pos) /*!< PMU SWINC: Event Counter 15 Software Increment Mask */ + +#define PMU_SWINC_CNT16_Pos 16U /*!< PMU SWINC: Event Counter 16 Software Increment Position */ +#define PMU_SWINC_CNT16_Msk (1UL << PMU_SWINC_CNT16_Pos) /*!< PMU SWINC: Event Counter 16 Software Increment Mask */ + +#define PMU_SWINC_CNT17_Pos 17U /*!< PMU SWINC: Event Counter 17 Software Increment Position */ +#define PMU_SWINC_CNT17_Msk (1UL << PMU_SWINC_CNT17_Pos) /*!< PMU SWINC: Event Counter 17 Software Increment Mask */ + +#define PMU_SWINC_CNT18_Pos 18U /*!< PMU SWINC: Event Counter 18 Software Increment Position */ +#define PMU_SWINC_CNT18_Msk (1UL << PMU_SWINC_CNT18_Pos) /*!< PMU SWINC: Event Counter 18 Software Increment Mask */ + +#define PMU_SWINC_CNT19_Pos 19U /*!< PMU SWINC: Event Counter 19 Software Increment Position */ +#define PMU_SWINC_CNT19_Msk (1UL << PMU_SWINC_CNT19_Pos) /*!< PMU SWINC: Event Counter 19 Software Increment Mask */ + +#define PMU_SWINC_CNT20_Pos 20U /*!< PMU SWINC: Event Counter 20 Software Increment Position */ +#define PMU_SWINC_CNT20_Msk (1UL << PMU_SWINC_CNT20_Pos) /*!< PMU SWINC: Event Counter 20 Software Increment Mask */ + +#define PMU_SWINC_CNT21_Pos 21U /*!< PMU SWINC: Event Counter 21 Software Increment Position */ +#define PMU_SWINC_CNT21_Msk (1UL << PMU_SWINC_CNT21_Pos) /*!< PMU SWINC: Event Counter 21 Software Increment Mask */ + +#define PMU_SWINC_CNT22_Pos 22U /*!< PMU SWINC: Event Counter 22 Software Increment Position */ +#define PMU_SWINC_CNT22_Msk (1UL << PMU_SWINC_CNT22_Pos) /*!< PMU SWINC: Event Counter 22 Software Increment Mask */ + +#define PMU_SWINC_CNT23_Pos 23U /*!< PMU SWINC: Event Counter 23 Software Increment Position */ +#define PMU_SWINC_CNT23_Msk (1UL << PMU_SWINC_CNT23_Pos) /*!< PMU SWINC: Event Counter 23 Software Increment Mask */ + +#define PMU_SWINC_CNT24_Pos 24U /*!< PMU SWINC: Event Counter 24 Software Increment Position */ +#define PMU_SWINC_CNT24_Msk (1UL << PMU_SWINC_CNT24_Pos) /*!< PMU SWINC: Event Counter 24 Software Increment Mask */ + +#define PMU_SWINC_CNT25_Pos 25U /*!< PMU SWINC: Event Counter 25 Software Increment Position */ +#define PMU_SWINC_CNT25_Msk (1UL << PMU_SWINC_CNT25_Pos) /*!< PMU SWINC: Event Counter 25 Software Increment Mask */ + +#define PMU_SWINC_CNT26_Pos 26U /*!< PMU SWINC: Event Counter 26 Software Increment Position */ +#define PMU_SWINC_CNT26_Msk (1UL << PMU_SWINC_CNT26_Pos) /*!< PMU SWINC: Event Counter 26 Software Increment Mask */ + +#define PMU_SWINC_CNT27_Pos 27U /*!< PMU SWINC: Event Counter 27 Software Increment Position */ +#define PMU_SWINC_CNT27_Msk (1UL << PMU_SWINC_CNT27_Pos) /*!< PMU SWINC: Event Counter 27 Software Increment Mask */ + +#define PMU_SWINC_CNT28_Pos 28U /*!< PMU SWINC: Event Counter 28 Software Increment Position */ +#define PMU_SWINC_CNT28_Msk (1UL << PMU_SWINC_CNT28_Pos) /*!< PMU SWINC: Event Counter 28 Software Increment Mask */ + +#define PMU_SWINC_CNT29_Pos 29U /*!< PMU SWINC: Event Counter 29 Software Increment Position */ +#define PMU_SWINC_CNT29_Msk (1UL << PMU_SWINC_CNT29_Pos) /*!< PMU SWINC: Event Counter 29 Software Increment Mask */ + +#define PMU_SWINC_CNT30_Pos 30U /*!< PMU SWINC: Event Counter 30 Software Increment Position */ +#define PMU_SWINC_CNT30_Msk (1UL << PMU_SWINC_CNT30_Pos) /*!< PMU SWINC: Event Counter 30 Software Increment Mask */ + +/** \brief PMU Control Register Definitions */ + +#define PMU_CTRL_ENABLE_Pos 0U /*!< PMU CTRL: ENABLE Position */ +#define PMU_CTRL_ENABLE_Msk (1UL /*<< PMU_CTRL_ENABLE_Pos*/) /*!< PMU CTRL: ENABLE Mask */ + +#define PMU_CTRL_EVENTCNT_RESET_Pos 1U /*!< PMU CTRL: Event Counter Reset Position */ +#define PMU_CTRL_EVENTCNT_RESET_Msk (1UL << PMU_CTRL_EVENTCNT_RESET_Pos) /*!< PMU CTRL: Event Counter Reset Mask */ + +#define PMU_CTRL_CYCCNT_RESET_Pos 2U /*!< PMU CTRL: Cycle Counter Reset Position */ +#define PMU_CTRL_CYCCNT_RESET_Msk (1UL << PMU_CTRL_CYCCNT_RESET_Pos) /*!< PMU CTRL: Cycle Counter Reset Mask */ + +#define PMU_CTRL_CYCCNT_DISABLE_Pos 5U /*!< PMU CTRL: Disable Cycle Counter Position */ +#define PMU_CTRL_CYCCNT_DISABLE_Msk (1UL << PMU_CTRL_CYCCNT_DISABLE_Pos) /*!< PMU CTRL: Disable Cycle Counter Mask */ + +#define PMU_CTRL_FRZ_ON_OV_Pos 9U /*!< PMU CTRL: Freeze-on-overflow Position */ +#define PMU_CTRL_FRZ_ON_OV_Msk (1UL << PMU_CTRL_FRZ_ON_OVERFLOW_Pos) /*!< PMU CTRL: Freeze-on-overflow Mask */ + +#define PMU_CTRL_TRACE_ON_OV_Pos 11U /*!< PMU CTRL: Trace-on-overflow Position */ +#define PMU_CTRL_TRACE_ON_OV_Msk (1UL << PMU_CTRL_TRACE_ON_OVERFLOW_Pos) /*!< PMU CTRL: Trace-on-overflow Mask */ + +/** \brief PMU Type Register Definitions */ + +#define PMU_TYPE_NUM_CNTS_Pos 0U /*!< PMU TYPE: Number of Counters Position */ +#define PMU_TYPE_NUM_CNTS_Msk (0xFFUL /*<< PMU_TYPE_NUM_CNTS_Pos*/) /*!< PMU TYPE: Number of Counters Mask */ + +#define PMU_TYPE_SIZE_CNTS_Pos 8U /*!< PMU TYPE: Size of Counters Position */ +#define PMU_TYPE_SIZE_CNTS_Msk (0x3FUL << PMU_TYPE_SIZE_CNTS_Pos) /*!< PMU TYPE: Size of Counters Mask */ + +#define PMU_TYPE_CYCCNT_PRESENT_Pos 14U /*!< PMU TYPE: Cycle Counter Present Position */ +#define PMU_TYPE_CYCCNT_PRESENT_Msk (1UL << PMU_TYPE_CYCCNT_PRESENT_Pos) /*!< PMU TYPE: Cycle Counter Present Mask */ + +#define PMU_TYPE_FRZ_OV_SUPPORT_Pos 21U /*!< PMU TYPE: Freeze-on-overflow Support Position */ +#define PMU_TYPE_FRZ_OV_SUPPORT_Msk (1UL << PMU_TYPE_FRZ_OV_SUPPORT_Pos) /*!< PMU TYPE: Freeze-on-overflow Support Mask */ + +#define PMU_TYPE_TRACE_ON_OV_SUPPORT_Pos 23U /*!< PMU TYPE: Trace-on-overflow Support Position */ +#define PMU_TYPE_TRACE_ON_OV_SUPPORT_Msk (1UL << PMU_TYPE_FRZ_OV_SUPPORT_Pos) /*!< PMU TYPE: Trace-on-overflow Support Mask */ + +/** \brief PMU Authentication Status Register Definitions */ + +#define PMU_AUTHSTATUS_NSID_Pos 0U /*!< PMU AUTHSTATUS: Non-secure Invasive Debug Position */ +#define PMU_AUTHSTATUS_NSID_Msk (0x3UL /*<< PMU_AUTHSTATUS_NSID_Pos*/) /*!< PMU AUTHSTATUS: Non-secure Invasive Debug Mask */ + +#define PMU_AUTHSTATUS_NSNID_Pos 2U /*!< PMU AUTHSTATUS: Non-secure Non-invasive Debug Position */ +#define PMU_AUTHSTATUS_NSNID_Msk (0x3UL << PMU_AUTHSTATUS_NSNID_Pos) /*!< PMU AUTHSTATUS: Non-secure Non-invasive Debug Mask */ + +#define PMU_AUTHSTATUS_SID_Pos 4U /*!< PMU AUTHSTATUS: Secure Invasive Debug Position */ +#define PMU_AUTHSTATUS_SID_Msk (0x3UL << PMU_AUTHSTATUS_SID_Pos) /*!< PMU AUTHSTATUS: Secure Invasive Debug Mask */ + +#define PMU_AUTHSTATUS_SNID_Pos 6U /*!< PMU AUTHSTATUS: Secure Non-invasive Debug Position */ +#define PMU_AUTHSTATUS_SNID_Msk (0x3UL << PMU_AUTHSTATUS_SNID_Pos) /*!< PMU AUTHSTATUS: Secure Non-invasive Debug Mask */ + +#define PMU_AUTHSTATUS_NSUID_Pos 16U /*!< PMU AUTHSTATUS: Non-secure Unprivileged Invasive Debug Position */ +#define PMU_AUTHSTATUS_NSUID_Msk (0x3UL << PMU_AUTHSTATUS_NSUID_Pos) /*!< PMU AUTHSTATUS: Non-secure Unprivileged Invasive Debug Mask */ + +#define PMU_AUTHSTATUS_NSUNID_Pos 18U /*!< PMU AUTHSTATUS: Non-secure Unprivileged Non-invasive Debug Position */ +#define PMU_AUTHSTATUS_NSUNID_Msk (0x3UL << PMU_AUTHSTATUS_NSUNID_Pos) /*!< PMU AUTHSTATUS: Non-secure Unprivileged Non-invasive Debug Mask */ + +#define PMU_AUTHSTATUS_SUID_Pos 20U /*!< PMU AUTHSTATUS: Secure Unprivileged Invasive Debug Position */ +#define PMU_AUTHSTATUS_SUID_Msk (0x3UL << PMU_AUTHSTATUS_SUID_Pos) /*!< PMU AUTHSTATUS: Secure Unprivileged Invasive Debug Mask */ + +#define PMU_AUTHSTATUS_SUNID_Pos 22U /*!< PMU AUTHSTATUS: Secure Unprivileged Non-invasive Debug Position */ +#define PMU_AUTHSTATUS_SUNID_Msk (0x3UL << PMU_AUTHSTATUS_SUNID_Pos) /*!< PMU AUTHSTATUS: Secure Unprivileged Non-invasive Debug Mask */ + + +/*@} end of group CMSIS_PMU */ +#endif + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_MPU Memory Protection Unit (MPU) + \brief Type definitions for the Memory Protection Unit (MPU) + @{ + */ + +/** + \brief Structure type to access the Memory Protection Unit (MPU). + */ +typedef struct +{ + __IM uint32_t TYPE; /*!< Offset: 0x000 (R/ ) MPU Type Register */ + __IOM uint32_t CTRL; /*!< Offset: 0x004 (R/W) MPU Control Register */ + __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) MPU Region Number Register */ + __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) MPU Region Base Address Register */ + __IOM uint32_t RLAR; /*!< Offset: 0x010 (R/W) MPU Region Limit Address Register */ + __IOM uint32_t RBAR_A1; /*!< Offset: 0x014 (R/W) MPU Region Base Address Register Alias 1 */ + __IOM uint32_t RLAR_A1; /*!< Offset: 0x018 (R/W) MPU Region Limit Address Register Alias 1 */ + __IOM uint32_t RBAR_A2; /*!< Offset: 0x01C (R/W) MPU Region Base Address Register Alias 2 */ + __IOM uint32_t RLAR_A2; /*!< Offset: 0x020 (R/W) MPU Region Limit Address Register Alias 2 */ + __IOM uint32_t RBAR_A3; /*!< Offset: 0x024 (R/W) MPU Region Base Address Register Alias 3 */ + __IOM uint32_t RLAR_A3; /*!< Offset: 0x028 (R/W) MPU Region Limit Address Register Alias 3 */ + uint32_t RESERVED0[1]; + union { + __IOM uint32_t MAIR[2]; + struct { + __IOM uint32_t MAIR0; /*!< Offset: 0x030 (R/W) MPU Memory Attribute Indirection Register 0 */ + __IOM uint32_t MAIR1; /*!< Offset: 0x034 (R/W) MPU Memory Attribute Indirection Register 1 */ + }; + }; +} MPU_Type; + +#define MPU_TYPE_RALIASES 4U + +/* MPU Type Register Definitions */ +#define MPU_TYPE_IREGION_Pos 16U /*!< MPU TYPE: IREGION Position */ +#define MPU_TYPE_IREGION_Msk (0xFFUL << MPU_TYPE_IREGION_Pos) /*!< MPU TYPE: IREGION Mask */ + +#define MPU_TYPE_DREGION_Pos 8U /*!< MPU TYPE: DREGION Position */ +#define MPU_TYPE_DREGION_Msk (0xFFUL << MPU_TYPE_DREGION_Pos) /*!< MPU TYPE: DREGION Mask */ + +#define MPU_TYPE_SEPARATE_Pos 0U /*!< MPU TYPE: SEPARATE Position */ +#define MPU_TYPE_SEPARATE_Msk (1UL /*<< MPU_TYPE_SEPARATE_Pos*/) /*!< MPU TYPE: SEPARATE Mask */ + +/* MPU Control Register Definitions */ +#define MPU_CTRL_PRIVDEFENA_Pos 2U /*!< MPU CTRL: PRIVDEFENA Position */ +#define MPU_CTRL_PRIVDEFENA_Msk (1UL << MPU_CTRL_PRIVDEFENA_Pos) /*!< MPU CTRL: PRIVDEFENA Mask */ + +#define MPU_CTRL_HFNMIENA_Pos 1U /*!< MPU CTRL: HFNMIENA Position */ +#define MPU_CTRL_HFNMIENA_Msk (1UL << MPU_CTRL_HFNMIENA_Pos) /*!< MPU CTRL: HFNMIENA Mask */ + +#define MPU_CTRL_ENABLE_Pos 0U /*!< MPU CTRL: ENABLE Position */ +#define MPU_CTRL_ENABLE_Msk (1UL /*<< MPU_CTRL_ENABLE_Pos*/) /*!< MPU CTRL: ENABLE Mask */ + +/* MPU Region Number Register Definitions */ +#define MPU_RNR_REGION_Pos 0U /*!< MPU RNR: REGION Position */ +#define MPU_RNR_REGION_Msk (0xFFUL /*<< MPU_RNR_REGION_Pos*/) /*!< MPU RNR: REGION Mask */ + +/* MPU Region Base Address Register Definitions */ +#define MPU_RBAR_BASE_Pos 5U /*!< MPU RBAR: BASE Position */ +#define MPU_RBAR_BASE_Msk (0x7FFFFFFUL << MPU_RBAR_BASE_Pos) /*!< MPU RBAR: BASE Mask */ + +#define MPU_RBAR_SH_Pos 3U /*!< MPU RBAR: SH Position */ +#define MPU_RBAR_SH_Msk (0x3UL << MPU_RBAR_SH_Pos) /*!< MPU RBAR: SH Mask */ + +#define MPU_RBAR_AP_Pos 1U /*!< MPU RBAR: AP Position */ +#define MPU_RBAR_AP_Msk (0x3UL << MPU_RBAR_AP_Pos) /*!< MPU RBAR: AP Mask */ + +#define MPU_RBAR_XN_Pos 0U /*!< MPU RBAR: XN Position */ +#define MPU_RBAR_XN_Msk (01UL /*<< MPU_RBAR_XN_Pos*/) /*!< MPU RBAR: XN Mask */ + +/* MPU Region Limit Address Register Definitions */ +#define MPU_RLAR_LIMIT_Pos 5U /*!< MPU RLAR: LIMIT Position */ +#define MPU_RLAR_LIMIT_Msk (0x7FFFFFFUL << MPU_RLAR_LIMIT_Pos) /*!< MPU RLAR: LIMIT Mask */ + +#define MPU_RLAR_PXN_Pos 4U /*!< MPU RLAR: PXN Position */ +#define MPU_RLAR_PXN_Msk (1UL << MPU_RLAR_PXN_Pos) /*!< MPU RLAR: PXN Mask */ + +#define MPU_RLAR_AttrIndx_Pos 1U /*!< MPU RLAR: AttrIndx Position */ +#define MPU_RLAR_AttrIndx_Msk (7UL << MPU_RLAR_AttrIndx_Pos) /*!< MPU RLAR: AttrIndx Mask */ + +#define MPU_RLAR_EN_Pos 0U /*!< MPU RLAR: Region enable bit Position */ +#define MPU_RLAR_EN_Msk (1UL /*<< MPU_RLAR_EN_Pos*/) /*!< MPU RLAR: Region enable bit Disable Mask */ + +/* MPU Memory Attribute Indirection Register 0 Definitions */ +#define MPU_MAIR0_Attr3_Pos 24U /*!< MPU MAIR0: Attr3 Position */ +#define MPU_MAIR0_Attr3_Msk (0xFFUL << MPU_MAIR0_Attr3_Pos) /*!< MPU MAIR0: Attr3 Mask */ + +#define MPU_MAIR0_Attr2_Pos 16U /*!< MPU MAIR0: Attr2 Position */ +#define MPU_MAIR0_Attr2_Msk (0xFFUL << MPU_MAIR0_Attr2_Pos) /*!< MPU MAIR0: Attr2 Mask */ + +#define MPU_MAIR0_Attr1_Pos 8U /*!< MPU MAIR0: Attr1 Position */ +#define MPU_MAIR0_Attr1_Msk (0xFFUL << MPU_MAIR0_Attr1_Pos) /*!< MPU MAIR0: Attr1 Mask */ + +#define MPU_MAIR0_Attr0_Pos 0U /*!< MPU MAIR0: Attr0 Position */ +#define MPU_MAIR0_Attr0_Msk (0xFFUL /*<< MPU_MAIR0_Attr0_Pos*/) /*!< MPU MAIR0: Attr0 Mask */ + +/* MPU Memory Attribute Indirection Register 1 Definitions */ +#define MPU_MAIR1_Attr7_Pos 24U /*!< MPU MAIR1: Attr7 Position */ +#define MPU_MAIR1_Attr7_Msk (0xFFUL << MPU_MAIR1_Attr7_Pos) /*!< MPU MAIR1: Attr7 Mask */ + +#define MPU_MAIR1_Attr6_Pos 16U /*!< MPU MAIR1: Attr6 Position */ +#define MPU_MAIR1_Attr6_Msk (0xFFUL << MPU_MAIR1_Attr6_Pos) /*!< MPU MAIR1: Attr6 Mask */ + +#define MPU_MAIR1_Attr5_Pos 8U /*!< MPU MAIR1: Attr5 Position */ +#define MPU_MAIR1_Attr5_Msk (0xFFUL << MPU_MAIR1_Attr5_Pos) /*!< MPU MAIR1: Attr5 Mask */ + +#define MPU_MAIR1_Attr4_Pos 0U /*!< MPU MAIR1: Attr4 Position */ +#define MPU_MAIR1_Attr4_Msk (0xFFUL /*<< MPU_MAIR1_Attr4_Pos*/) /*!< MPU MAIR1: Attr4 Mask */ + +/*@} end of group CMSIS_MPU */ +#endif + + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SAU Security Attribution Unit (SAU) + \brief Type definitions for the Security Attribution Unit (SAU) + @{ + */ + +/** + \brief Structure type to access the Security Attribution Unit (SAU). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SAU Control Register */ + __IM uint32_t TYPE; /*!< Offset: 0x004 (R/ ) SAU Type Register */ +#if defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) + __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) SAU Region Number Register */ + __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) SAU Region Base Address Register */ + __IOM uint32_t RLAR; /*!< Offset: 0x010 (R/W) SAU Region Limit Address Register */ +#else + uint32_t RESERVED0[3]; +#endif + __IOM uint32_t SFSR; /*!< Offset: 0x014 (R/W) Secure Fault Status Register */ + __IOM uint32_t SFAR; /*!< Offset: 0x018 (R/W) Secure Fault Address Register */ +} SAU_Type; + +/* SAU Control Register Definitions */ +#define SAU_CTRL_ALLNS_Pos 1U /*!< SAU CTRL: ALLNS Position */ +#define SAU_CTRL_ALLNS_Msk (1UL << SAU_CTRL_ALLNS_Pos) /*!< SAU CTRL: ALLNS Mask */ + +#define SAU_CTRL_ENABLE_Pos 0U /*!< SAU CTRL: ENABLE Position */ +#define SAU_CTRL_ENABLE_Msk (1UL /*<< SAU_CTRL_ENABLE_Pos*/) /*!< SAU CTRL: ENABLE Mask */ + +/* SAU Type Register Definitions */ +#define SAU_TYPE_SREGION_Pos 0U /*!< SAU TYPE: SREGION Position */ +#define SAU_TYPE_SREGION_Msk (0xFFUL /*<< SAU_TYPE_SREGION_Pos*/) /*!< SAU TYPE: SREGION Mask */ + +#if defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) +/* SAU Region Number Register Definitions */ +#define SAU_RNR_REGION_Pos 0U /*!< SAU RNR: REGION Position */ +#define SAU_RNR_REGION_Msk (0xFFUL /*<< SAU_RNR_REGION_Pos*/) /*!< SAU RNR: REGION Mask */ + +/* SAU Region Base Address Register Definitions */ +#define SAU_RBAR_BADDR_Pos 5U /*!< SAU RBAR: BADDR Position */ +#define SAU_RBAR_BADDR_Msk (0x7FFFFFFUL << SAU_RBAR_BADDR_Pos) /*!< SAU RBAR: BADDR Mask */ + +/* SAU Region Limit Address Register Definitions */ +#define SAU_RLAR_LADDR_Pos 5U /*!< SAU RLAR: LADDR Position */ +#define SAU_RLAR_LADDR_Msk (0x7FFFFFFUL << SAU_RLAR_LADDR_Pos) /*!< SAU RLAR: LADDR Mask */ + +#define SAU_RLAR_NSC_Pos 1U /*!< SAU RLAR: NSC Position */ +#define SAU_RLAR_NSC_Msk (1UL << SAU_RLAR_NSC_Pos) /*!< SAU RLAR: NSC Mask */ + +#define SAU_RLAR_ENABLE_Pos 0U /*!< SAU RLAR: ENABLE Position */ +#define SAU_RLAR_ENABLE_Msk (1UL /*<< SAU_RLAR_ENABLE_Pos*/) /*!< SAU RLAR: ENABLE Mask */ + +#endif /* defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) */ + +/* Secure Fault Status Register Definitions */ +#define SAU_SFSR_LSERR_Pos 7U /*!< SAU SFSR: LSERR Position */ +#define SAU_SFSR_LSERR_Msk (1UL << SAU_SFSR_LSERR_Pos) /*!< SAU SFSR: LSERR Mask */ + +#define SAU_SFSR_SFARVALID_Pos 6U /*!< SAU SFSR: SFARVALID Position */ +#define SAU_SFSR_SFARVALID_Msk (1UL << SAU_SFSR_SFARVALID_Pos) /*!< SAU SFSR: SFARVALID Mask */ + +#define SAU_SFSR_LSPERR_Pos 5U /*!< SAU SFSR: LSPERR Position */ +#define SAU_SFSR_LSPERR_Msk (1UL << SAU_SFSR_LSPERR_Pos) /*!< SAU SFSR: LSPERR Mask */ + +#define SAU_SFSR_INVTRAN_Pos 4U /*!< SAU SFSR: INVTRAN Position */ +#define SAU_SFSR_INVTRAN_Msk (1UL << SAU_SFSR_INVTRAN_Pos) /*!< SAU SFSR: INVTRAN Mask */ + +#define SAU_SFSR_AUVIOL_Pos 3U /*!< SAU SFSR: AUVIOL Position */ +#define SAU_SFSR_AUVIOL_Msk (1UL << SAU_SFSR_AUVIOL_Pos) /*!< SAU SFSR: AUVIOL Mask */ + +#define SAU_SFSR_INVER_Pos 2U /*!< SAU SFSR: INVER Position */ +#define SAU_SFSR_INVER_Msk (1UL << SAU_SFSR_INVER_Pos) /*!< SAU SFSR: INVER Mask */ + +#define SAU_SFSR_INVIS_Pos 1U /*!< SAU SFSR: INVIS Position */ +#define SAU_SFSR_INVIS_Msk (1UL << SAU_SFSR_INVIS_Pos) /*!< SAU SFSR: INVIS Mask */ + +#define SAU_SFSR_INVEP_Pos 0U /*!< SAU SFSR: INVEP Position */ +#define SAU_SFSR_INVEP_Msk (1UL /*<< SAU_SFSR_INVEP_Pos*/) /*!< SAU SFSR: INVEP Mask */ + +/*@} end of group CMSIS_SAU */ +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_FPU Floating Point Unit (FPU) + \brief Type definitions for the Floating Point Unit (FPU) + @{ + */ + +/** + \brief Structure type to access the Floating Point Unit (FPU). + */ +typedef struct +{ + uint32_t RESERVED0[1U]; + __IOM uint32_t FPCCR; /*!< Offset: 0x004 (R/W) Floating-Point Context Control Register */ + __IOM uint32_t FPCAR; /*!< Offset: 0x008 (R/W) Floating-Point Context Address Register */ + __IOM uint32_t FPDSCR; /*!< Offset: 0x00C (R/W) Floating-Point Default Status Control Register */ + __IM uint32_t MVFR0; /*!< Offset: 0x010 (R/ ) Media and VFP Feature Register 0 */ + __IM uint32_t MVFR1; /*!< Offset: 0x014 (R/ ) Media and VFP Feature Register 1 */ + __IM uint32_t MVFR2; /*!< Offset: 0x018 (R/ ) Media and VFP Feature Register 2 */ +} FPU_Type; + +/* Floating-Point Context Control Register Definitions */ +#define FPU_FPCCR_ASPEN_Pos 31U /*!< FPCCR: ASPEN bit Position */ +#define FPU_FPCCR_ASPEN_Msk (1UL << FPU_FPCCR_ASPEN_Pos) /*!< FPCCR: ASPEN bit Mask */ + +#define FPU_FPCCR_LSPEN_Pos 30U /*!< FPCCR: LSPEN Position */ +#define FPU_FPCCR_LSPEN_Msk (1UL << FPU_FPCCR_LSPEN_Pos) /*!< FPCCR: LSPEN bit Mask */ + +#define FPU_FPCCR_LSPENS_Pos 29U /*!< FPCCR: LSPENS Position */ +#define FPU_FPCCR_LSPENS_Msk (1UL << FPU_FPCCR_LSPENS_Pos) /*!< FPCCR: LSPENS bit Mask */ + +#define FPU_FPCCR_CLRONRET_Pos 28U /*!< FPCCR: CLRONRET Position */ +#define FPU_FPCCR_CLRONRET_Msk (1UL << FPU_FPCCR_CLRONRET_Pos) /*!< FPCCR: CLRONRET bit Mask */ + +#define FPU_FPCCR_CLRONRETS_Pos 27U /*!< FPCCR: CLRONRETS Position */ +#define FPU_FPCCR_CLRONRETS_Msk (1UL << FPU_FPCCR_CLRONRETS_Pos) /*!< FPCCR: CLRONRETS bit Mask */ + +#define FPU_FPCCR_TS_Pos 26U /*!< FPCCR: TS Position */ +#define FPU_FPCCR_TS_Msk (1UL << FPU_FPCCR_TS_Pos) /*!< FPCCR: TS bit Mask */ + +#define FPU_FPCCR_UFRDY_Pos 10U /*!< FPCCR: UFRDY Position */ +#define FPU_FPCCR_UFRDY_Msk (1UL << FPU_FPCCR_UFRDY_Pos) /*!< FPCCR: UFRDY bit Mask */ + +#define FPU_FPCCR_SPLIMVIOL_Pos 9U /*!< FPCCR: SPLIMVIOL Position */ +#define FPU_FPCCR_SPLIMVIOL_Msk (1UL << FPU_FPCCR_SPLIMVIOL_Pos) /*!< FPCCR: SPLIMVIOL bit Mask */ + +#define FPU_FPCCR_MONRDY_Pos 8U /*!< FPCCR: MONRDY Position */ +#define FPU_FPCCR_MONRDY_Msk (1UL << FPU_FPCCR_MONRDY_Pos) /*!< FPCCR: MONRDY bit Mask */ + +#define FPU_FPCCR_SFRDY_Pos 7U /*!< FPCCR: SFRDY Position */ +#define FPU_FPCCR_SFRDY_Msk (1UL << FPU_FPCCR_SFRDY_Pos) /*!< FPCCR: SFRDY bit Mask */ + +#define FPU_FPCCR_BFRDY_Pos 6U /*!< FPCCR: BFRDY Position */ +#define FPU_FPCCR_BFRDY_Msk (1UL << FPU_FPCCR_BFRDY_Pos) /*!< FPCCR: BFRDY bit Mask */ + +#define FPU_FPCCR_MMRDY_Pos 5U /*!< FPCCR: MMRDY Position */ +#define FPU_FPCCR_MMRDY_Msk (1UL << FPU_FPCCR_MMRDY_Pos) /*!< FPCCR: MMRDY bit Mask */ + +#define FPU_FPCCR_HFRDY_Pos 4U /*!< FPCCR: HFRDY Position */ +#define FPU_FPCCR_HFRDY_Msk (1UL << FPU_FPCCR_HFRDY_Pos) /*!< FPCCR: HFRDY bit Mask */ + +#define FPU_FPCCR_THREAD_Pos 3U /*!< FPCCR: processor mode bit Position */ +#define FPU_FPCCR_THREAD_Msk (1UL << FPU_FPCCR_THREAD_Pos) /*!< FPCCR: processor mode active bit Mask */ + +#define FPU_FPCCR_S_Pos 2U /*!< FPCCR: Security status of the FP context bit Position */ +#define FPU_FPCCR_S_Msk (1UL << FPU_FPCCR_S_Pos) /*!< FPCCR: Security status of the FP context bit Mask */ + +#define FPU_FPCCR_USER_Pos 1U /*!< FPCCR: privilege level bit Position */ +#define FPU_FPCCR_USER_Msk (1UL << FPU_FPCCR_USER_Pos) /*!< FPCCR: privilege level bit Mask */ + +#define FPU_FPCCR_LSPACT_Pos 0U /*!< FPCCR: Lazy state preservation active bit Position */ +#define FPU_FPCCR_LSPACT_Msk (1UL /*<< FPU_FPCCR_LSPACT_Pos*/) /*!< FPCCR: Lazy state preservation active bit Mask */ + +/* Floating-Point Context Address Register Definitions */ +#define FPU_FPCAR_ADDRESS_Pos 3U /*!< FPCAR: ADDRESS bit Position */ +#define FPU_FPCAR_ADDRESS_Msk (0x1FFFFFFFUL << FPU_FPCAR_ADDRESS_Pos) /*!< FPCAR: ADDRESS bit Mask */ + +/* Floating-Point Default Status Control Register Definitions */ +#define FPU_FPDSCR_AHP_Pos 26U /*!< FPDSCR: AHP bit Position */ +#define FPU_FPDSCR_AHP_Msk (1UL << FPU_FPDSCR_AHP_Pos) /*!< FPDSCR: AHP bit Mask */ + +#define FPU_FPDSCR_DN_Pos 25U /*!< FPDSCR: DN bit Position */ +#define FPU_FPDSCR_DN_Msk (1UL << FPU_FPDSCR_DN_Pos) /*!< FPDSCR: DN bit Mask */ + +#define FPU_FPDSCR_FZ_Pos 24U /*!< FPDSCR: FZ bit Position */ +#define FPU_FPDSCR_FZ_Msk (1UL << FPU_FPDSCR_FZ_Pos) /*!< FPDSCR: FZ bit Mask */ + +#define FPU_FPDSCR_RMode_Pos 22U /*!< FPDSCR: RMode bit Position */ +#define FPU_FPDSCR_RMode_Msk (3UL << FPU_FPDSCR_RMode_Pos) /*!< FPDSCR: RMode bit Mask */ + +#define FPU_FPDSCR_FZ16_Pos 19U /*!< FPDSCR: FZ16 bit Position */ +#define FPU_FPDSCR_FZ16_Msk (1UL << FPU_FPDSCR_FZ16_Pos) /*!< FPDSCR: FZ16 bit Mask */ + +#define FPU_FPDSCR_LTPSIZE_Pos 16U /*!< FPDSCR: LTPSIZE bit Position */ +#define FPU_FPDSCR_LTPSIZE_Msk (7UL << FPU_FPDSCR_LTPSIZE_Pos) /*!< FPDSCR: LTPSIZE bit Mask */ + +/* Media and VFP Feature Register 0 Definitions */ +#define FPU_MVFR0_FPRound_Pos 28U /*!< MVFR0: FPRound bits Position */ +#define FPU_MVFR0_FPRound_Msk (0xFUL << FPU_MVFR0_FPRound_Pos) /*!< MVFR0: FPRound bits Mask */ + +#define FPU_MVFR0_FPSqrt_Pos 20U /*!< MVFR0: FPSqrt bits Position */ +#define FPU_MVFR0_FPSqrt_Msk (0xFUL << FPU_MVFR0_FPSqrt_Pos) /*!< MVFR0: FPSqrt bits Mask */ + +#define FPU_MVFR0_FPDivide_Pos 16U /*!< MVFR0: FPDivide bits Position */ +#define FPU_MVFR0_FPDivide_Msk (0xFUL << FPU_MVFR0_FPDivide_Pos) /*!< MVFR0: Divide bits Mask */ + +#define FPU_MVFR0_FPDP_Pos 8U /*!< MVFR0: FPDP bits Position */ +#define FPU_MVFR0_FPDP_Msk (0xFUL << FPU_MVFR0_FPDP_Pos) /*!< MVFR0: FPDP bits Mask */ + +#define FPU_MVFR0_FPSP_Pos 4U /*!< MVFR0: FPSP bits Position */ +#define FPU_MVFR0_FPSP_Msk (0xFUL << FPU_MVFR0_FPSP_Pos) /*!< MVFR0: FPSP bits Mask */ + +#define FPU_MVFR0_SIMDReg_Pos 0U /*!< MVFR0: SIMDReg bits Position */ +#define FPU_MVFR0_SIMDReg_Msk (0xFUL /*<< FPU_MVFR0_SIMDReg_Pos*/) /*!< MVFR0: SIMDReg bits Mask */ + +/* Media and VFP Feature Register 1 Definitions */ +#define FPU_MVFR1_FMAC_Pos 28U /*!< MVFR1: FMAC bits Position */ +#define FPU_MVFR1_FMAC_Msk (0xFUL << FPU_MVFR1_FMAC_Pos) /*!< MVFR1: FMAC bits Mask */ + +#define FPU_MVFR1_FPHP_Pos 24U /*!< MVFR1: FPHP bits Position */ +#define FPU_MVFR1_FPHP_Msk (0xFUL << FPU_MVFR1_FPHP_Pos) /*!< MVFR1: FPHP bits Mask */ + +#define FPU_MVFR1_FP16_Pos 20U /*!< MVFR1: FP16 bits Position */ +#define FPU_MVFR1_FP16_Msk (0xFUL << FPU_MVFR1_FP16_Pos) /*!< MVFR1: FP16 bits Mask */ + +#define FPU_MVFR1_MVE_Pos 8U /*!< MVFR1: MVE bits Position */ +#define FPU_MVFR1_MVE_Msk (0xFUL << FPU_MVFR1_MVE_Pos) /*!< MVFR1: MVE bits Mask */ + +#define FPU_MVFR1_FPDNaN_Pos 4U /*!< MVFR1: FPDNaN bits Position */ +#define FPU_MVFR1_FPDNaN_Msk (0xFUL << FPU_MVFR1_FPDNaN_Pos) /*!< MVFR1: FPDNaN bits Mask */ + +#define FPU_MVFR1_FPFtZ_Pos 0U /*!< MVFR1: FPFtZ bits Position */ +#define FPU_MVFR1_FPFtZ_Msk (0xFUL /*<< FPU_MVFR1_FPFtZ_Pos*/) /*!< MVFR1: FPFtZ bits Mask */ + +/* Media and VFP Feature Register 2 Definitions */ +#define FPU_MVFR2_FPMisc_Pos 4U /*!< MVFR2: FPMisc bits Position */ +#define FPU_MVFR2_FPMisc_Msk (0xFUL << FPU_MVFR2_FPMisc_Pos) /*!< MVFR2: FPMisc bits Mask */ + +/*@} end of group CMSIS_FPU */ + +/* CoreDebug is deprecated. replaced by DCB (Debug Control Block) */ +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CoreDebug Core Debug Registers (CoreDebug) + \brief Type definitions for the Core Debug Registers + @{ + */ + +/** + \brief \deprecated Structure type to access the Core Debug Register (CoreDebug). + */ +typedef struct +{ + __IOM uint32_t DHCSR; /*!< Offset: 0x000 (R/W) Debug Halting Control and Status Register */ + __OM uint32_t DCRSR; /*!< Offset: 0x004 ( /W) Debug Core Register Selector Register */ + __IOM uint32_t DCRDR; /*!< Offset: 0x008 (R/W) Debug Core Register Data Register */ + __IOM uint32_t DEMCR; /*!< Offset: 0x00C (R/W) Debug Exception and Monitor Control Register */ + __OM uint32_t DSCEMCR; /*!< Offset: 0x010 ( /W) Debug Set Clear Exception and Monitor Control Register */ + __IOM uint32_t DAUTHCTRL; /*!< Offset: 0x014 (R/W) Debug Authentication Control Register */ + __IOM uint32_t DSCSR; /*!< Offset: 0x018 (R/W) Debug Security Control and Status Register */ +} CoreDebug_Type; + +/* Debug Halting Control and Status Register Definitions */ +#define CoreDebug_DHCSR_DBGKEY_Pos 16U /*!< \deprecated CoreDebug DHCSR: DBGKEY Position */ +#define CoreDebug_DHCSR_DBGKEY_Msk (0xFFFFUL << CoreDebug_DHCSR_DBGKEY_Pos) /*!< \deprecated CoreDebug DHCSR: DBGKEY Mask */ + +#define CoreDebug_DHCSR_S_RESTART_ST_Pos 26U /*!< \deprecated CoreDebug DHCSR: S_RESTART_ST Position */ +#define CoreDebug_DHCSR_S_RESTART_ST_Msk (1UL << CoreDebug_DHCSR_S_RESTART_ST_Pos) /*!< \deprecated CoreDebug DHCSR: S_RESTART_ST Mask */ + +#define CoreDebug_DHCSR_S_RESET_ST_Pos 25U /*!< \deprecated CoreDebug DHCSR: S_RESET_ST Position */ +#define CoreDebug_DHCSR_S_RESET_ST_Msk (1UL << CoreDebug_DHCSR_S_RESET_ST_Pos) /*!< \deprecated CoreDebug DHCSR: S_RESET_ST Mask */ + +#define CoreDebug_DHCSR_S_RETIRE_ST_Pos 24U /*!< \deprecated CoreDebug DHCSR: S_RETIRE_ST Position */ +#define CoreDebug_DHCSR_S_RETIRE_ST_Msk (1UL << CoreDebug_DHCSR_S_RETIRE_ST_Pos) /*!< \deprecated CoreDebug DHCSR: S_RETIRE_ST Mask */ + +#define CoreDebug_DHCSR_S_FPD_Pos 23U /*!< \deprecated CoreDebug DHCSR: S_FPD Position */ +#define CoreDebug_DHCSR_S_FPD_Msk (1UL << CoreDebug_DHCSR_S_FPD_Pos) /*!< \deprecated CoreDebug DHCSR: S_FPD Mask */ + +#define CoreDebug_DHCSR_S_SUIDE_Pos 22U /*!< \deprecated CoreDebug DHCSR: S_SUIDE Position */ +#define CoreDebug_DHCSR_S_SUIDE_Msk (1UL << CoreDebug_DHCSR_S_SUIDE_Pos) /*!< \deprecated CoreDebug DHCSR: S_SUIDE Mask */ + +#define CoreDebug_DHCSR_S_NSUIDE_Pos 21U /*!< \deprecated CoreDebug DHCSR: S_NSUIDE Position */ +#define CoreDebug_DHCSR_S_NSUIDE_Msk (1UL << CoreDebug_DHCSR_S_NSUIDE_Pos) /*!< \deprecated CoreDebug DHCSR: S_NSUIDE Mask */ + +#define CoreDebug_DHCSR_S_SDE_Pos 20U /*!< \deprecated CoreDebug DHCSR: S_SDE Position */ +#define CoreDebug_DHCSR_S_SDE_Msk (1UL << CoreDebug_DHCSR_S_SDE_Pos) /*!< \deprecated CoreDebug DHCSR: S_SDE Mask */ + +#define CoreDebug_DHCSR_S_LOCKUP_Pos 19U /*!< \deprecated CoreDebug DHCSR: S_LOCKUP Position */ +#define CoreDebug_DHCSR_S_LOCKUP_Msk (1UL << CoreDebug_DHCSR_S_LOCKUP_Pos) /*!< \deprecated CoreDebug DHCSR: S_LOCKUP Mask */ + +#define CoreDebug_DHCSR_S_SLEEP_Pos 18U /*!< \deprecated CoreDebug DHCSR: S_SLEEP Position */ +#define CoreDebug_DHCSR_S_SLEEP_Msk (1UL << CoreDebug_DHCSR_S_SLEEP_Pos) /*!< \deprecated CoreDebug DHCSR: S_SLEEP Mask */ + +#define CoreDebug_DHCSR_S_HALT_Pos 17U /*!< \deprecated CoreDebug DHCSR: S_HALT Position */ +#define CoreDebug_DHCSR_S_HALT_Msk (1UL << CoreDebug_DHCSR_S_HALT_Pos) /*!< \deprecated CoreDebug DHCSR: S_HALT Mask */ + +#define CoreDebug_DHCSR_S_REGRDY_Pos 16U /*!< \deprecated CoreDebug DHCSR: S_REGRDY Position */ +#define CoreDebug_DHCSR_S_REGRDY_Msk (1UL << CoreDebug_DHCSR_S_REGRDY_Pos) /*!< \deprecated CoreDebug DHCSR: S_REGRDY Mask */ + +#define CoreDebug_DHCSR_C_PMOV_Pos 6U /*!< \deprecated CoreDebug DHCSR: C_PMOV Position */ +#define CoreDebug_DHCSR_C_PMOV_Msk (1UL << CoreDebug_DHCSR_C_PMOV_Pos) /*!< \deprecated CoreDebug DHCSR: C_PMOV Mask */ + +#define CoreDebug_DHCSR_C_SNAPSTALL_Pos 5U /*!< \deprecated CoreDebug DHCSR: C_SNAPSTALL Position */ +#define CoreDebug_DHCSR_C_SNAPSTALL_Msk (1UL << CoreDebug_DHCSR_C_SNAPSTALL_Pos) /*!< \deprecated CoreDebug DHCSR: C_SNAPSTALL Mask */ + +#define CoreDebug_DHCSR_C_MASKINTS_Pos 3U /*!< \deprecated CoreDebug DHCSR: C_MASKINTS Position */ +#define CoreDebug_DHCSR_C_MASKINTS_Msk (1UL << CoreDebug_DHCSR_C_MASKINTS_Pos) /*!< \deprecated CoreDebug DHCSR: C_MASKINTS Mask */ + +#define CoreDebug_DHCSR_C_STEP_Pos 2U /*!< \deprecated CoreDebug DHCSR: C_STEP Position */ +#define CoreDebug_DHCSR_C_STEP_Msk (1UL << CoreDebug_DHCSR_C_STEP_Pos) /*!< \deprecated CoreDebug DHCSR: C_STEP Mask */ + +#define CoreDebug_DHCSR_C_HALT_Pos 1U /*!< \deprecated CoreDebug DHCSR: C_HALT Position */ +#define CoreDebug_DHCSR_C_HALT_Msk (1UL << CoreDebug_DHCSR_C_HALT_Pos) /*!< \deprecated CoreDebug DHCSR: C_HALT Mask */ + +#define CoreDebug_DHCSR_C_DEBUGEN_Pos 0U /*!< \deprecated CoreDebug DHCSR: C_DEBUGEN Position */ +#define CoreDebug_DHCSR_C_DEBUGEN_Msk (1UL /*<< CoreDebug_DHCSR_C_DEBUGEN_Pos*/) /*!< \deprecated CoreDebug DHCSR: C_DEBUGEN Mask */ + +/* Debug Core Register Selector Register Definitions */ +#define CoreDebug_DCRSR_REGWnR_Pos 16U /*!< \deprecated CoreDebug DCRSR: REGWnR Position */ +#define CoreDebug_DCRSR_REGWnR_Msk (1UL << CoreDebug_DCRSR_REGWnR_Pos) /*!< \deprecated CoreDebug DCRSR: REGWnR Mask */ + +#define CoreDebug_DCRSR_REGSEL_Pos 0U /*!< \deprecated CoreDebug DCRSR: REGSEL Position */ +#define CoreDebug_DCRSR_REGSEL_Msk (0x1FUL /*<< CoreDebug_DCRSR_REGSEL_Pos*/) /*!< \deprecated CoreDebug DCRSR: REGSEL Mask */ + +/* Debug Exception and Monitor Control Register Definitions */ +#define CoreDebug_DEMCR_TRCENA_Pos 24U /*!< \deprecated CoreDebug DEMCR: TRCENA Position */ +#define CoreDebug_DEMCR_TRCENA_Msk (1UL << CoreDebug_DEMCR_TRCENA_Pos) /*!< \deprecated CoreDebug DEMCR: TRCENA Mask */ + +#define CoreDebug_DEMCR_MON_REQ_Pos 19U /*!< \deprecated CoreDebug DEMCR: MON_REQ Position */ +#define CoreDebug_DEMCR_MON_REQ_Msk (1UL << CoreDebug_DEMCR_MON_REQ_Pos) /*!< \deprecated CoreDebug DEMCR: MON_REQ Mask */ + +#define CoreDebug_DEMCR_MON_STEP_Pos 18U /*!< \deprecated CoreDebug DEMCR: MON_STEP Position */ +#define CoreDebug_DEMCR_MON_STEP_Msk (1UL << CoreDebug_DEMCR_MON_STEP_Pos) /*!< \deprecated CoreDebug DEMCR: MON_STEP Mask */ + +#define CoreDebug_DEMCR_MON_PEND_Pos 17U /*!< \deprecated CoreDebug DEMCR: MON_PEND Position */ +#define CoreDebug_DEMCR_MON_PEND_Msk (1UL << CoreDebug_DEMCR_MON_PEND_Pos) /*!< \deprecated CoreDebug DEMCR: MON_PEND Mask */ + +#define CoreDebug_DEMCR_MON_EN_Pos 16U /*!< \deprecated CoreDebug DEMCR: MON_EN Position */ +#define CoreDebug_DEMCR_MON_EN_Msk (1UL << CoreDebug_DEMCR_MON_EN_Pos) /*!< \deprecated CoreDebug DEMCR: MON_EN Mask */ + +#define CoreDebug_DEMCR_VC_HARDERR_Pos 10U /*!< \deprecated CoreDebug DEMCR: VC_HARDERR Position */ +#define CoreDebug_DEMCR_VC_HARDERR_Msk (1UL << CoreDebug_DEMCR_VC_HARDERR_Pos) /*!< \deprecated CoreDebug DEMCR: VC_HARDERR Mask */ + +#define CoreDebug_DEMCR_VC_INTERR_Pos 9U /*!< \deprecated CoreDebug DEMCR: VC_INTERR Position */ +#define CoreDebug_DEMCR_VC_INTERR_Msk (1UL << CoreDebug_DEMCR_VC_INTERR_Pos) /*!< \deprecated CoreDebug DEMCR: VC_INTERR Mask */ + +#define CoreDebug_DEMCR_VC_BUSERR_Pos 8U /*!< \deprecated CoreDebug DEMCR: VC_BUSERR Position */ +#define CoreDebug_DEMCR_VC_BUSERR_Msk (1UL << CoreDebug_DEMCR_VC_BUSERR_Pos) /*!< \deprecated CoreDebug DEMCR: VC_BUSERR Mask */ + +#define CoreDebug_DEMCR_VC_STATERR_Pos 7U /*!< \deprecated CoreDebug DEMCR: VC_STATERR Position */ +#define CoreDebug_DEMCR_VC_STATERR_Msk (1UL << CoreDebug_DEMCR_VC_STATERR_Pos) /*!< \deprecated CoreDebug DEMCR: VC_STATERR Mask */ + +#define CoreDebug_DEMCR_VC_CHKERR_Pos 6U /*!< \deprecated CoreDebug DEMCR: VC_CHKERR Position */ +#define CoreDebug_DEMCR_VC_CHKERR_Msk (1UL << CoreDebug_DEMCR_VC_CHKERR_Pos) /*!< \deprecated CoreDebug DEMCR: VC_CHKERR Mask */ + +#define CoreDebug_DEMCR_VC_NOCPERR_Pos 5U /*!< \deprecated CoreDebug DEMCR: VC_NOCPERR Position */ +#define CoreDebug_DEMCR_VC_NOCPERR_Msk (1UL << CoreDebug_DEMCR_VC_NOCPERR_Pos) /*!< \deprecated CoreDebug DEMCR: VC_NOCPERR Mask */ + +#define CoreDebug_DEMCR_VC_MMERR_Pos 4U /*!< \deprecated CoreDebug DEMCR: VC_MMERR Position */ +#define CoreDebug_DEMCR_VC_MMERR_Msk (1UL << CoreDebug_DEMCR_VC_MMERR_Pos) /*!< \deprecated CoreDebug DEMCR: VC_MMERR Mask */ + +#define CoreDebug_DEMCR_VC_CORERESET_Pos 0U /*!< \deprecated CoreDebug DEMCR: VC_CORERESET Position */ +#define CoreDebug_DEMCR_VC_CORERESET_Msk (1UL /*<< CoreDebug_DEMCR_VC_CORERESET_Pos*/) /*!< \deprecated CoreDebug DEMCR: VC_CORERESET Mask */ + +/* Debug Set Clear Exception and Monitor Control Register Definitions */ +#define CoreDebug_DSCEMCR_CLR_MON_REQ_Pos 19U /*!< \deprecated CoreDebug DSCEMCR: CLR_MON_REQ, Position */ +#define CoreDebug_DSCEMCR_CLR_MON_REQ_Msk (1UL << CoreDebug_DSCEMCR_CLR_MON_REQ_Pos) /*!< \deprecated CoreDebug DSCEMCR: CLR_MON_REQ, Mask */ + +#define CoreDebug_DSCEMCR_CLR_MON_PEND_Pos 17U /*!< \deprecated CoreDebug DSCEMCR: CLR_MON_PEND, Position */ +#define CoreDebug_DSCEMCR_CLR_MON_PEND_Msk (1UL << CoreDebug_DSCEMCR_CLR_MON_PEND_Pos) /*!< \deprecated CoreDebug DSCEMCR: CLR_MON_PEND, Mask */ + +#define CoreDebug_DSCEMCR_SET_MON_REQ_Pos 3U /*!< \deprecated CoreDebug DSCEMCR: SET_MON_REQ, Position */ +#define CoreDebug_DSCEMCR_SET_MON_REQ_Msk (1UL << CoreDebug_DSCEMCR_SET_MON_REQ_Pos) /*!< \deprecated CoreDebug DSCEMCR: SET_MON_REQ, Mask */ + +#define CoreDebug_DSCEMCR_SET_MON_PEND_Pos 1U /*!< \deprecated CoreDebug DSCEMCR: SET_MON_PEND, Position */ +#define CoreDebug_DSCEMCR_SET_MON_PEND_Msk (1UL << CoreDebug_DSCEMCR_SET_MON_PEND_Pos) /*!< \deprecated CoreDebug DSCEMCR: SET_MON_PEND, Mask */ + +/* Debug Authentication Control Register Definitions */ +#define CoreDebug_DAUTHCTRL_UIDEN_Pos 10U /*!< \deprecated CoreDebug DAUTHCTRL: UIDEN, Position */ +#define CoreDebug_DAUTHCTRL_UIDEN_Msk (1UL << CoreDebug_DAUTHCTRL_UIDEN_Pos) /*!< \deprecated CoreDebug DAUTHCTRL: UIDEN, Mask */ + +#define CoreDebug_DAUTHCTRL_UIDAPEN_Pos 9U /*!< \deprecated CoreDebug DAUTHCTRL: UIDAPEN, Position */ +#define CoreDebug_DAUTHCTRL_UIDAPEN_Msk (1UL << CoreDebug_DAUTHCTRL_UIDAPEN_Pos) /*!< \deprecated CoreDebug DAUTHCTRL: UIDAPEN, Mask */ + +#define CoreDebug_DAUTHCTRL_FSDMA_Pos 8U /*!< \deprecated CoreDebug DAUTHCTRL: FSDMA, Position */ +#define CoreDebug_DAUTHCTRL_FSDMA_Msk (1UL << CoreDebug_DAUTHCTRL_FSDMA_Pos) /*!< \deprecated CoreDebug DAUTHCTRL: FSDMA, Mask */ + +#define CoreDebug_DAUTHCTRL_INTSPNIDEN_Pos 3U /*!< \deprecated CoreDebug DAUTHCTRL: INTSPNIDEN, Position */ +#define CoreDebug_DAUTHCTRL_INTSPNIDEN_Msk (1UL << CoreDebug_DAUTHCTRL_INTSPNIDEN_Pos) /*!< \deprecated CoreDebug DAUTHCTRL: INTSPNIDEN, Mask */ + +#define CoreDebug_DAUTHCTRL_SPNIDENSEL_Pos 2U /*!< \deprecated CoreDebug DAUTHCTRL: SPNIDENSEL Position */ +#define CoreDebug_DAUTHCTRL_SPNIDENSEL_Msk (1UL << CoreDebug_DAUTHCTRL_SPNIDENSEL_Pos) /*!< \deprecated CoreDebug DAUTHCTRL: SPNIDENSEL Mask */ + +#define CoreDebug_DAUTHCTRL_INTSPIDEN_Pos 1U /*!< \deprecated CoreDebug DAUTHCTRL: INTSPIDEN Position */ +#define CoreDebug_DAUTHCTRL_INTSPIDEN_Msk (1UL << CoreDebug_DAUTHCTRL_INTSPIDEN_Pos) /*!< \deprecated CoreDebug DAUTHCTRL: INTSPIDEN Mask */ + +#define CoreDebug_DAUTHCTRL_SPIDENSEL_Pos 0U /*!< \deprecated CoreDebug DAUTHCTRL: SPIDENSEL Position */ +#define CoreDebug_DAUTHCTRL_SPIDENSEL_Msk (1UL /*<< CoreDebug_DAUTHCTRL_SPIDENSEL_Pos*/) /*!< \deprecated CoreDebug DAUTHCTRL: SPIDENSEL Mask */ + +/* Debug Security Control and Status Register Definitions */ +#define CoreDebug_DSCSR_CDS_Pos 16U /*!< \deprecated CoreDebug DSCSR: CDS Position */ +#define CoreDebug_DSCSR_CDS_Msk (1UL << CoreDebug_DSCSR_CDS_Pos) /*!< \deprecated CoreDebug DSCSR: CDS Mask */ + +#define CoreDebug_DSCSR_SBRSEL_Pos 1U /*!< \deprecated CoreDebug DSCSR: SBRSEL Position */ +#define CoreDebug_DSCSR_SBRSEL_Msk (1UL << CoreDebug_DSCSR_SBRSEL_Pos) /*!< \deprecated CoreDebug DSCSR: SBRSEL Mask */ + +#define CoreDebug_DSCSR_SBRSELEN_Pos 0U /*!< \deprecated CoreDebug DSCSR: SBRSELEN Position */ +#define CoreDebug_DSCSR_SBRSELEN_Msk (1UL /*<< CoreDebug_DSCSR_SBRSELEN_Pos*/) /*!< \deprecated CoreDebug DSCSR: SBRSELEN Mask */ + +/*@} end of group CMSIS_CoreDebug */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_DCB Debug Control Block + \brief Type definitions for the Debug Control Block Registers + @{ + */ + +/** + \brief Structure type to access the Debug Control Block Registers (DCB). + */ +typedef struct +{ + __IOM uint32_t DHCSR; /*!< Offset: 0x000 (R/W) Debug Halting Control and Status Register */ + __OM uint32_t DCRSR; /*!< Offset: 0x004 ( /W) Debug Core Register Selector Register */ + __IOM uint32_t DCRDR; /*!< Offset: 0x008 (R/W) Debug Core Register Data Register */ + __IOM uint32_t DEMCR; /*!< Offset: 0x00C (R/W) Debug Exception and Monitor Control Register */ + __OM uint32_t DSCEMCR; /*!< Offset: 0x010 ( /W) Debug Set Clear Exception and Monitor Control Register */ + __IOM uint32_t DAUTHCTRL; /*!< Offset: 0x014 (R/W) Debug Authentication Control Register */ + __IOM uint32_t DSCSR; /*!< Offset: 0x018 (R/W) Debug Security Control and Status Register */ +} DCB_Type; + +/* DHCSR, Debug Halting Control and Status Register Definitions */ +#define DCB_DHCSR_DBGKEY_Pos 16U /*!< DCB DHCSR: Debug key Position */ +#define DCB_DHCSR_DBGKEY_Msk (0xFFFFUL << DCB_DHCSR_DBGKEY_Pos) /*!< DCB DHCSR: Debug key Mask */ + +#define DCB_DHCSR_S_RESTART_ST_Pos 26U /*!< DCB DHCSR: Restart sticky status Position */ +#define DCB_DHCSR_S_RESTART_ST_Msk (0x1UL << DCB_DHCSR_S_RESTART_ST_Pos) /*!< DCB DHCSR: Restart sticky status Mask */ + +#define DCB_DHCSR_S_RESET_ST_Pos 25U /*!< DCB DHCSR: Reset sticky status Position */ +#define DCB_DHCSR_S_RESET_ST_Msk (0x1UL << DCB_DHCSR_S_RESET_ST_Pos) /*!< DCB DHCSR: Reset sticky status Mask */ + +#define DCB_DHCSR_S_RETIRE_ST_Pos 24U /*!< DCB DHCSR: Retire sticky status Position */ +#define DCB_DHCSR_S_RETIRE_ST_Msk (0x1UL << DCB_DHCSR_S_RETIRE_ST_Pos) /*!< DCB DHCSR: Retire sticky status Mask */ + +#define DCB_DHCSR_S_FPD_Pos 23U /*!< DCB DHCSR: Floating-point registers Debuggable Position */ +#define DCB_DHCSR_S_FPD_Msk (0x1UL << DCB_DHCSR_S_FPD_Pos) /*!< DCB DHCSR: Floating-point registers Debuggable Mask */ + +#define DCB_DHCSR_S_SUIDE_Pos 22U /*!< DCB DHCSR: Secure unprivileged halting debug enabled Position */ +#define DCB_DHCSR_S_SUIDE_Msk (0x1UL << DCB_DHCSR_S_SUIDE_Pos) /*!< DCB DHCSR: Secure unprivileged halting debug enabled Mask */ + +#define DCB_DHCSR_S_NSUIDE_Pos 21U /*!< DCB DHCSR: Non-secure unprivileged halting debug enabled Position */ +#define DCB_DHCSR_S_NSUIDE_Msk (0x1UL << DCB_DHCSR_S_NSUIDE_Pos) /*!< DCB DHCSR: Non-secure unprivileged halting debug enabled Mask */ + +#define DCB_DHCSR_S_SDE_Pos 20U /*!< DCB DHCSR: Secure debug enabled Position */ +#define DCB_DHCSR_S_SDE_Msk (0x1UL << DCB_DHCSR_S_SDE_Pos) /*!< DCB DHCSR: Secure debug enabled Mask */ + +#define DCB_DHCSR_S_LOCKUP_Pos 19U /*!< DCB DHCSR: Lockup status Position */ +#define DCB_DHCSR_S_LOCKUP_Msk (0x1UL << DCB_DHCSR_S_LOCKUP_Pos) /*!< DCB DHCSR: Lockup status Mask */ + +#define DCB_DHCSR_S_SLEEP_Pos 18U /*!< DCB DHCSR: Sleeping status Position */ +#define DCB_DHCSR_S_SLEEP_Msk (0x1UL << DCB_DHCSR_S_SLEEP_Pos) /*!< DCB DHCSR: Sleeping status Mask */ + +#define DCB_DHCSR_S_HALT_Pos 17U /*!< DCB DHCSR: Halted status Position */ +#define DCB_DHCSR_S_HALT_Msk (0x1UL << DCB_DHCSR_S_HALT_Pos) /*!< DCB DHCSR: Halted status Mask */ + +#define DCB_DHCSR_S_REGRDY_Pos 16U /*!< DCB DHCSR: Register ready status Position */ +#define DCB_DHCSR_S_REGRDY_Msk (0x1UL << DCB_DHCSR_S_REGRDY_Pos) /*!< DCB DHCSR: Register ready status Mask */ + +#define DCB_DHCSR_C_PMOV_Pos 6U /*!< DCB DHCSR: Halt on PMU overflow control Position */ +#define DCB_DHCSR_C_PMOV_Msk (0x1UL << DCB_DHCSR_C_PMOV_Pos) /*!< DCB DHCSR: Halt on PMU overflow control Mask */ + +#define DCB_DHCSR_C_SNAPSTALL_Pos 5U /*!< DCB DHCSR: Snap stall control Position */ +#define DCB_DHCSR_C_SNAPSTALL_Msk (0x1UL << DCB_DHCSR_C_SNAPSTALL_Pos) /*!< DCB DHCSR: Snap stall control Mask */ + +#define DCB_DHCSR_C_MASKINTS_Pos 3U /*!< DCB DHCSR: Mask interrupts control Position */ +#define DCB_DHCSR_C_MASKINTS_Msk (0x1UL << DCB_DHCSR_C_MASKINTS_Pos) /*!< DCB DHCSR: Mask interrupts control Mask */ + +#define DCB_DHCSR_C_STEP_Pos 2U /*!< DCB DHCSR: Step control Position */ +#define DCB_DHCSR_C_STEP_Msk (0x1UL << DCB_DHCSR_C_STEP_Pos) /*!< DCB DHCSR: Step control Mask */ + +#define DCB_DHCSR_C_HALT_Pos 1U /*!< DCB DHCSR: Halt control Position */ +#define DCB_DHCSR_C_HALT_Msk (0x1UL << DCB_DHCSR_C_HALT_Pos) /*!< DCB DHCSR: Halt control Mask */ + +#define DCB_DHCSR_C_DEBUGEN_Pos 0U /*!< DCB DHCSR: Debug enable control Position */ +#define DCB_DHCSR_C_DEBUGEN_Msk (0x1UL /*<< DCB_DHCSR_C_DEBUGEN_Pos*/) /*!< DCB DHCSR: Debug enable control Mask */ + +/* DCRSR, Debug Core Register Select Register Definitions */ +#define DCB_DCRSR_REGWnR_Pos 16U /*!< DCB DCRSR: Register write/not-read Position */ +#define DCB_DCRSR_REGWnR_Msk (0x1UL << DCB_DCRSR_REGWnR_Pos) /*!< DCB DCRSR: Register write/not-read Mask */ + +#define DCB_DCRSR_REGSEL_Pos 0U /*!< DCB DCRSR: Register selector Position */ +#define DCB_DCRSR_REGSEL_Msk (0x7FUL /*<< DCB_DCRSR_REGSEL_Pos*/) /*!< DCB DCRSR: Register selector Mask */ + +/* DCRDR, Debug Core Register Data Register Definitions */ +#define DCB_DCRDR_DBGTMP_Pos 0U /*!< DCB DCRDR: Data temporary buffer Position */ +#define DCB_DCRDR_DBGTMP_Msk (0xFFFFFFFFUL /*<< DCB_DCRDR_DBGTMP_Pos*/) /*!< DCB DCRDR: Data temporary buffer Mask */ + +/* DEMCR, Debug Exception and Monitor Control Register Definitions */ +#define DCB_DEMCR_TRCENA_Pos 24U /*!< DCB DEMCR: Trace enable Position */ +#define DCB_DEMCR_TRCENA_Msk (0x1UL << DCB_DEMCR_TRCENA_Pos) /*!< DCB DEMCR: Trace enable Mask */ + +#define DCB_DEMCR_MONPRKEY_Pos 23U /*!< DCB DEMCR: Monitor pend req key Position */ +#define DCB_DEMCR_MONPRKEY_Msk (0x1UL << DCB_DEMCR_MONPRKEY_Pos) /*!< DCB DEMCR: Monitor pend req key Mask */ + +#define DCB_DEMCR_UMON_EN_Pos 21U /*!< DCB DEMCR: Unprivileged monitor enable Position */ +#define DCB_DEMCR_UMON_EN_Msk (0x1UL << DCB_DEMCR_UMON_EN_Pos) /*!< DCB DEMCR: Unprivileged monitor enable Mask */ + +#define DCB_DEMCR_SDME_Pos 20U /*!< DCB DEMCR: Secure DebugMonitor enable Position */ +#define DCB_DEMCR_SDME_Msk (0x1UL << DCB_DEMCR_SDME_Pos) /*!< DCB DEMCR: Secure DebugMonitor enable Mask */ + +#define DCB_DEMCR_MON_REQ_Pos 19U /*!< DCB DEMCR: Monitor request Position */ +#define DCB_DEMCR_MON_REQ_Msk (0x1UL << DCB_DEMCR_MON_REQ_Pos) /*!< DCB DEMCR: Monitor request Mask */ + +#define DCB_DEMCR_MON_STEP_Pos 18U /*!< DCB DEMCR: Monitor step Position */ +#define DCB_DEMCR_MON_STEP_Msk (0x1UL << DCB_DEMCR_MON_STEP_Pos) /*!< DCB DEMCR: Monitor step Mask */ + +#define DCB_DEMCR_MON_PEND_Pos 17U /*!< DCB DEMCR: Monitor pend Position */ +#define DCB_DEMCR_MON_PEND_Msk (0x1UL << DCB_DEMCR_MON_PEND_Pos) /*!< DCB DEMCR: Monitor pend Mask */ + +#define DCB_DEMCR_MON_EN_Pos 16U /*!< DCB DEMCR: Monitor enable Position */ +#define DCB_DEMCR_MON_EN_Msk (0x1UL << DCB_DEMCR_MON_EN_Pos) /*!< DCB DEMCR: Monitor enable Mask */ + +#define DCB_DEMCR_VC_SFERR_Pos 11U /*!< DCB DEMCR: Vector Catch SecureFault Position */ +#define DCB_DEMCR_VC_SFERR_Msk (0x1UL << DCB_DEMCR_VC_SFERR_Pos) /*!< DCB DEMCR: Vector Catch SecureFault Mask */ + +#define DCB_DEMCR_VC_HARDERR_Pos 10U /*!< DCB DEMCR: Vector Catch HardFault errors Position */ +#define DCB_DEMCR_VC_HARDERR_Msk (0x1UL << DCB_DEMCR_VC_HARDERR_Pos) /*!< DCB DEMCR: Vector Catch HardFault errors Mask */ + +#define DCB_DEMCR_VC_INTERR_Pos 9U /*!< DCB DEMCR: Vector Catch interrupt errors Position */ +#define DCB_DEMCR_VC_INTERR_Msk (0x1UL << DCB_DEMCR_VC_INTERR_Pos) /*!< DCB DEMCR: Vector Catch interrupt errors Mask */ + +#define DCB_DEMCR_VC_BUSERR_Pos 8U /*!< DCB DEMCR: Vector Catch BusFault errors Position */ +#define DCB_DEMCR_VC_BUSERR_Msk (0x1UL << DCB_DEMCR_VC_BUSERR_Pos) /*!< DCB DEMCR: Vector Catch BusFault errors Mask */ + +#define DCB_DEMCR_VC_STATERR_Pos 7U /*!< DCB DEMCR: Vector Catch state errors Position */ +#define DCB_DEMCR_VC_STATERR_Msk (0x1UL << DCB_DEMCR_VC_STATERR_Pos) /*!< DCB DEMCR: Vector Catch state errors Mask */ + +#define DCB_DEMCR_VC_CHKERR_Pos 6U /*!< DCB DEMCR: Vector Catch check errors Position */ +#define DCB_DEMCR_VC_CHKERR_Msk (0x1UL << DCB_DEMCR_VC_CHKERR_Pos) /*!< DCB DEMCR: Vector Catch check errors Mask */ + +#define DCB_DEMCR_VC_NOCPERR_Pos 5U /*!< DCB DEMCR: Vector Catch NOCP errors Position */ +#define DCB_DEMCR_VC_NOCPERR_Msk (0x1UL << DCB_DEMCR_VC_NOCPERR_Pos) /*!< DCB DEMCR: Vector Catch NOCP errors Mask */ + +#define DCB_DEMCR_VC_MMERR_Pos 4U /*!< DCB DEMCR: Vector Catch MemManage errors Position */ +#define DCB_DEMCR_VC_MMERR_Msk (0x1UL << DCB_DEMCR_VC_MMERR_Pos) /*!< DCB DEMCR: Vector Catch MemManage errors Mask */ + +#define DCB_DEMCR_VC_CORERESET_Pos 0U /*!< DCB DEMCR: Vector Catch Core reset Position */ +#define DCB_DEMCR_VC_CORERESET_Msk (0x1UL /*<< DCB_DEMCR_VC_CORERESET_Pos*/) /*!< DCB DEMCR: Vector Catch Core reset Mask */ + +/* DSCEMCR, Debug Set Clear Exception and Monitor Control Register Definitions */ +#define DCB_DSCEMCR_CLR_MON_REQ_Pos 19U /*!< DCB DSCEMCR: Clear monitor request Position */ +#define DCB_DSCEMCR_CLR_MON_REQ_Msk (0x1UL << DCB_DSCEMCR_CLR_MON_REQ_Pos) /*!< DCB DSCEMCR: Clear monitor request Mask */ + +#define DCB_DSCEMCR_CLR_MON_PEND_Pos 17U /*!< DCB DSCEMCR: Clear monitor pend Position */ +#define DCB_DSCEMCR_CLR_MON_PEND_Msk (0x1UL << DCB_DSCEMCR_CLR_MON_PEND_Pos) /*!< DCB DSCEMCR: Clear monitor pend Mask */ + +#define DCB_DSCEMCR_SET_MON_REQ_Pos 3U /*!< DCB DSCEMCR: Set monitor request Position */ +#define DCB_DSCEMCR_SET_MON_REQ_Msk (0x1UL << DCB_DSCEMCR_SET_MON_REQ_Pos) /*!< DCB DSCEMCR: Set monitor request Mask */ + +#define DCB_DSCEMCR_SET_MON_PEND_Pos 1U /*!< DCB DSCEMCR: Set monitor pend Position */ +#define DCB_DSCEMCR_SET_MON_PEND_Msk (0x1UL << DCB_DSCEMCR_SET_MON_PEND_Pos) /*!< DCB DSCEMCR: Set monitor pend Mask */ + +/* DAUTHCTRL, Debug Authentication Control Register Definitions */ +#define DCB_DAUTHCTRL_UIDEN_Pos 10U /*!< DCB DAUTHCTRL: Unprivileged Invasive Debug Enable Position */ +#define DCB_DAUTHCTRL_UIDEN_Msk (0x1UL << DCB_DAUTHCTRL_UIDEN_Pos) /*!< DCB DAUTHCTRL: Unprivileged Invasive Debug Enable Mask */ + +#define DCB_DAUTHCTRL_UIDAPEN_Pos 9U /*!< DCB DAUTHCTRL: Unprivileged Invasive DAP Access Enable Position */ +#define DCB_DAUTHCTRL_UIDAPEN_Msk (0x1UL << DCB_DAUTHCTRL_UIDAPEN_Pos) /*!< DCB DAUTHCTRL: Unprivileged Invasive DAP Access Enable Mask */ + +#define DCB_DAUTHCTRL_FSDMA_Pos 8U /*!< DCB DAUTHCTRL: Force Secure DebugMonitor Allowed Position */ +#define DCB_DAUTHCTRL_FSDMA_Msk (0x1UL << DCB_DAUTHCTRL_FSDMA_Pos) /*!< DCB DAUTHCTRL: Force Secure DebugMonitor Allowed Mask */ + +#define DCB_DAUTHCTRL_INTSPNIDEN_Pos 3U /*!< DCB DAUTHCTRL: Internal Secure non-invasive debug enable Position */ +#define DCB_DAUTHCTRL_INTSPNIDEN_Msk (0x1UL << DCB_DAUTHCTRL_INTSPNIDEN_Pos) /*!< DCB DAUTHCTRL: Internal Secure non-invasive debug enable Mask */ + +#define DCB_DAUTHCTRL_SPNIDENSEL_Pos 2U /*!< DCB DAUTHCTRL: Secure non-invasive debug enable select Position */ +#define DCB_DAUTHCTRL_SPNIDENSEL_Msk (0x1UL << DCB_DAUTHCTRL_SPNIDENSEL_Pos) /*!< DCB DAUTHCTRL: Secure non-invasive debug enable select Mask */ + +#define DCB_DAUTHCTRL_INTSPIDEN_Pos 1U /*!< DCB DAUTHCTRL: Internal Secure invasive debug enable Position */ +#define DCB_DAUTHCTRL_INTSPIDEN_Msk (0x1UL << DCB_DAUTHCTRL_INTSPIDEN_Pos) /*!< DCB DAUTHCTRL: Internal Secure invasive debug enable Mask */ + +#define DCB_DAUTHCTRL_SPIDENSEL_Pos 0U /*!< DCB DAUTHCTRL: Secure invasive debug enable select Position */ +#define DCB_DAUTHCTRL_SPIDENSEL_Msk (0x1UL /*<< DCB_DAUTHCTRL_SPIDENSEL_Pos*/) /*!< DCB DAUTHCTRL: Secure invasive debug enable select Mask */ + +/* DSCSR, Debug Security Control and Status Register Definitions */ +#define DCB_DSCSR_CDSKEY_Pos 17U /*!< DCB DSCSR: CDS write-enable key Position */ +#define DCB_DSCSR_CDSKEY_Msk (0x1UL << DCB_DSCSR_CDSKEY_Pos) /*!< DCB DSCSR: CDS write-enable key Mask */ + +#define DCB_DSCSR_CDS_Pos 16U /*!< DCB DSCSR: Current domain Secure Position */ +#define DCB_DSCSR_CDS_Msk (0x1UL << DCB_DSCSR_CDS_Pos) /*!< DCB DSCSR: Current domain Secure Mask */ + +#define DCB_DSCSR_SBRSEL_Pos 1U /*!< DCB DSCSR: Secure banked register select Position */ +#define DCB_DSCSR_SBRSEL_Msk (0x1UL << DCB_DSCSR_SBRSEL_Pos) /*!< DCB DSCSR: Secure banked register select Mask */ + +#define DCB_DSCSR_SBRSELEN_Pos 0U /*!< DCB DSCSR: Secure banked register select enable Position */ +#define DCB_DSCSR_SBRSELEN_Msk (0x1UL /*<< DCB_DSCSR_SBRSELEN_Pos*/) /*!< DCB DSCSR: Secure banked register select enable Mask */ + +/*@} end of group CMSIS_DCB */ + + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_DIB Debug Identification Block + \brief Type definitions for the Debug Identification Block Registers + @{ + */ + +/** + \brief Structure type to access the Debug Identification Block Registers (DIB). + */ +typedef struct +{ + __OM uint32_t DLAR; /*!< Offset: 0x000 ( /W) SCS Software Lock Access Register */ + __IM uint32_t DLSR; /*!< Offset: 0x004 (R/ ) SCS Software Lock Status Register */ + __IM uint32_t DAUTHSTATUS; /*!< Offset: 0x008 (R/ ) Debug Authentication Status Register */ + __IM uint32_t DDEVARCH; /*!< Offset: 0x00C (R/ ) SCS Device Architecture Register */ + __IM uint32_t DDEVTYPE; /*!< Offset: 0x010 (R/ ) SCS Device Type Register */ +} DIB_Type; + +/* DLAR, SCS Software Lock Access Register Definitions */ +#define DIB_DLAR_KEY_Pos 0U /*!< DIB DLAR: KEY Position */ +#define DIB_DLAR_KEY_Msk (0xFFFFFFFFUL /*<< DIB_DLAR_KEY_Pos */) /*!< DIB DLAR: KEY Mask */ + +/* DLSR, SCS Software Lock Status Register Definitions */ +#define DIB_DLSR_nTT_Pos 2U /*!< DIB DLSR: Not thirty-two bit Position */ +#define DIB_DLSR_nTT_Msk (0x1UL << DIB_DLSR_nTT_Pos ) /*!< DIB DLSR: Not thirty-two bit Mask */ + +#define DIB_DLSR_SLK_Pos 1U /*!< DIB DLSR: Software Lock status Position */ +#define DIB_DLSR_SLK_Msk (0x1UL << DIB_DLSR_SLK_Pos ) /*!< DIB DLSR: Software Lock status Mask */ + +#define DIB_DLSR_SLI_Pos 0U /*!< DIB DLSR: Software Lock implemented Position */ +#define DIB_DLSR_SLI_Msk (0x1UL /*<< DIB_DLSR_SLI_Pos*/) /*!< DIB DLSR: Software Lock implemented Mask */ + +/* DAUTHSTATUS, Debug Authentication Status Register Definitions */ +#define DIB_DAUTHSTATUS_SUNID_Pos 22U /*!< DIB DAUTHSTATUS: Secure Unprivileged Non-invasive Debug Allowed Position */ +#define DIB_DAUTHSTATUS_SUNID_Msk (0x3UL << DIB_DAUTHSTATUS_SUNID_Pos ) /*!< DIB DAUTHSTATUS: Secure Unprivileged Non-invasive Debug Allowed Mask */ + +#define DIB_DAUTHSTATUS_SUID_Pos 20U /*!< DIB DAUTHSTATUS: Secure Unprivileged Invasive Debug Allowed Position */ +#define DIB_DAUTHSTATUS_SUID_Msk (0x3UL << DIB_DAUTHSTATUS_SUID_Pos ) /*!< DIB DAUTHSTATUS: Secure Unprivileged Invasive Debug Allowed Mask */ + +#define DIB_DAUTHSTATUS_NSUNID_Pos 18U /*!< DIB DAUTHSTATUS: Non-secure Unprivileged Non-invasive Debug Allo Position */ +#define DIB_DAUTHSTATUS_NSUNID_Msk (0x3UL << DIB_DAUTHSTATUS_NSUNID_Pos ) /*!< DIB DAUTHSTATUS: Non-secure Unprivileged Non-invasive Debug Allo Mask */ + +#define DIB_DAUTHSTATUS_NSUID_Pos 16U /*!< DIB DAUTHSTATUS: Non-secure Unprivileged Invasive Debug Allowed Position */ +#define DIB_DAUTHSTATUS_NSUID_Msk (0x3UL << DIB_DAUTHSTATUS_NSUID_Pos ) /*!< DIB DAUTHSTATUS: Non-secure Unprivileged Invasive Debug Allowed Mask */ + +#define DIB_DAUTHSTATUS_SNID_Pos 6U /*!< DIB DAUTHSTATUS: Secure Non-invasive Debug Position */ +#define DIB_DAUTHSTATUS_SNID_Msk (0x3UL << DIB_DAUTHSTATUS_SNID_Pos ) /*!< DIB DAUTHSTATUS: Secure Non-invasive Debug Mask */ + +#define DIB_DAUTHSTATUS_SID_Pos 4U /*!< DIB DAUTHSTATUS: Secure Invasive Debug Position */ +#define DIB_DAUTHSTATUS_SID_Msk (0x3UL << DIB_DAUTHSTATUS_SID_Pos ) /*!< DIB DAUTHSTATUS: Secure Invasive Debug Mask */ + +#define DIB_DAUTHSTATUS_NSNID_Pos 2U /*!< DIB DAUTHSTATUS: Non-secure Non-invasive Debug Position */ +#define DIB_DAUTHSTATUS_NSNID_Msk (0x3UL << DIB_DAUTHSTATUS_NSNID_Pos ) /*!< DIB DAUTHSTATUS: Non-secure Non-invasive Debug Mask */ + +#define DIB_DAUTHSTATUS_NSID_Pos 0U /*!< DIB DAUTHSTATUS: Non-secure Invasive Debug Position */ +#define DIB_DAUTHSTATUS_NSID_Msk (0x3UL /*<< DIB_DAUTHSTATUS_NSID_Pos*/) /*!< DIB DAUTHSTATUS: Non-secure Invasive Debug Mask */ + +/* DDEVARCH, SCS Device Architecture Register Definitions */ +#define DIB_DDEVARCH_ARCHITECT_Pos 21U /*!< DIB DDEVARCH: Architect Position */ +#define DIB_DDEVARCH_ARCHITECT_Msk (0x7FFUL << DIB_DDEVARCH_ARCHITECT_Pos ) /*!< DIB DDEVARCH: Architect Mask */ + +#define DIB_DDEVARCH_PRESENT_Pos 20U /*!< DIB DDEVARCH: DEVARCH Present Position */ +#define DIB_DDEVARCH_PRESENT_Msk (0x1FUL << DIB_DDEVARCH_PRESENT_Pos ) /*!< DIB DDEVARCH: DEVARCH Present Mask */ + +#define DIB_DDEVARCH_REVISION_Pos 16U /*!< DIB DDEVARCH: Revision Position */ +#define DIB_DDEVARCH_REVISION_Msk (0xFUL << DIB_DDEVARCH_REVISION_Pos ) /*!< DIB DDEVARCH: Revision Mask */ + +#define DIB_DDEVARCH_ARCHVER_Pos 12U /*!< DIB DDEVARCH: Architecture Version Position */ +#define DIB_DDEVARCH_ARCHVER_Msk (0xFUL << DIB_DDEVARCH_ARCHVER_Pos ) /*!< DIB DDEVARCH: Architecture Version Mask */ + +#define DIB_DDEVARCH_ARCHPART_Pos 0U /*!< DIB DDEVARCH: Architecture Part Position */ +#define DIB_DDEVARCH_ARCHPART_Msk (0xFFFUL /*<< DIB_DDEVARCH_ARCHPART_Pos*/) /*!< DIB DDEVARCH: Architecture Part Mask */ + +/* DDEVTYPE, SCS Device Type Register Definitions */ +#define DIB_DDEVTYPE_SUB_Pos 4U /*!< DIB DDEVTYPE: Sub-type Position */ +#define DIB_DDEVTYPE_SUB_Msk (0xFUL << DIB_DDEVTYPE_SUB_Pos ) /*!< DIB DDEVTYPE: Sub-type Mask */ + +#define DIB_DDEVTYPE_MAJOR_Pos 0U /*!< DIB DDEVTYPE: Major type Position */ +#define DIB_DDEVTYPE_MAJOR_Msk (0xFUL /*<< DIB_DDEVTYPE_MAJOR_Pos*/) /*!< DIB DDEVTYPE: Major type Mask */ + + +/*@} end of group CMSIS_DIB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_bitfield Core register bit field macros + \brief Macros for use with bit field definitions (xxx_Pos, xxx_Msk). + @{ + */ + +/** + \brief Mask and shift a bit field value for use in a register bit range. + \param[in] field Name of the register bit field. + \param[in] value Value of the bit field. This parameter is interpreted as an uint32_t type. + \return Masked and shifted value. +*/ +#define _VAL2FLD(field, value) (((uint32_t)(value) << field ## _Pos) & field ## _Msk) + +/** + \brief Mask and shift a register value to extract a bit filed value. + \param[in] field Name of the register bit field. + \param[in] value Value of register. This parameter is interpreted as an uint32_t type. + \return Masked and shifted bit field value. +*/ +#define _FLD2VAL(field, value) (((uint32_t)(value) & field ## _Msk) >> field ## _Pos) + +/*@} end of group CMSIS_core_bitfield */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_base Core Definitions + \brief Definitions for base addresses, unions, and structures. + @{ + */ + +/* Memory mapping of Core Hardware */ + #define SCS_BASE (0xE000E000UL) /*!< System Control Space Base Address */ + #define ITM_BASE (0xE0000000UL) /*!< ITM Base Address */ + #define DWT_BASE (0xE0001000UL) /*!< DWT Base Address */ + #define MEMSYSCTL_BASE (0xE001E000UL) /*!< Memory System Control Base Address */ + #define ERRBNK_BASE (0xE001E100UL) /*!< Error Banking Base Address */ + #define PWRMODCTL_BASE (0xE001E300UL) /*!< Power Mode Control Base Address */ + #define EWIC_BASE (0xE001E400UL) /*!< External Wakeup Interrupt Controller Base Address */ + #define PRCCFGINF_BASE (0xE001E700UL) /*!< Processor Configuration Information Base Address */ + #define STL_BASE (0xE001E800UL) /*!< Software Test Library Base Address */ + #define TPI_BASE (0xE0040000UL) /*!< TPI Base Address */ + #define CoreDebug_BASE (0xE000EDF0UL) /*!< \deprecated Core Debug Base Address */ + #define DCB_BASE (0xE000EDF0UL) /*!< DCB Base Address */ + #define DIB_BASE (0xE000EFB0UL) /*!< DIB Base Address */ + #define SysTick_BASE (SCS_BASE + 0x0010UL) /*!< SysTick Base Address */ + #define NVIC_BASE (SCS_BASE + 0x0100UL) /*!< NVIC Base Address */ + #define SCB_BASE (SCS_BASE + 0x0D00UL) /*!< System Control Block Base Address */ + + #define ICB ((ICB_Type *) SCS_BASE ) /*!< System control Register not in SCB */ + #define SCB ((SCB_Type *) SCB_BASE ) /*!< SCB configuration struct */ + #define SysTick ((SysTick_Type *) SysTick_BASE ) /*!< SysTick configuration struct */ + #define NVIC ((NVIC_Type *) NVIC_BASE ) /*!< NVIC configuration struct */ + #define ITM ((ITM_Type *) ITM_BASE ) /*!< ITM configuration struct */ + #define DWT ((DWT_Type *) DWT_BASE ) /*!< DWT configuration struct */ + #define TPI ((TPI_Type *) TPI_BASE ) /*!< TPI configuration struct */ + #define MEMSYSCTL ((MemSysCtl_Type *) MEMSYSCTL_BASE ) /*!< Memory System Control configuration struct */ + #define ERRBNK ((ErrBnk_Type *) ERRBNK_BASE ) /*!< Error Banking configuration struct */ + #define PWRMODCTL ((PwrModCtl_Type *) PWRMODCTL_BASE ) /*!< Power Mode Control configuration struct */ + #define EWIC ((EWIC_Type *) EWIC_BASE ) /*!< EWIC configuration struct */ + #define PRCCFGINF ((PrcCfgInf_Type *) PRCCFGINF_BASE ) /*!< Processor Configuration Information configuration struct */ + #define STL ((STL_Type *) STL_BASE ) /*!< Software Test Library configuration struct */ + #define CoreDebug ((CoreDebug_Type *) CoreDebug_BASE ) /*!< \deprecated Core Debug configuration struct */ + #define DCB ((DCB_Type *) DCB_BASE ) /*!< DCB configuration struct */ + #define DIB ((DIB_Type *) DIB_BASE ) /*!< DIB configuration struct */ + + #if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + #define MPU_BASE (SCS_BASE + 0x0D90UL) /*!< Memory Protection Unit */ + #define MPU ((MPU_Type *) MPU_BASE ) /*!< Memory Protection Unit */ + #endif + + #if defined (__PMU_PRESENT) && (__PMU_PRESENT == 1U) + #define PMU_BASE (0xE0003000UL) /*!< PMU Base Address */ + #define PMU ((PMU_Type *) PMU_BASE ) /*!< PMU configuration struct */ + #endif + + #if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) + #define SAU_BASE (SCS_BASE + 0x0DD0UL) /*!< Security Attribution Unit */ + #define SAU ((SAU_Type *) SAU_BASE ) /*!< Security Attribution Unit */ + #endif + + #define FPU_BASE (SCS_BASE + 0x0F30UL) /*!< Floating Point Unit */ + #define FPU ((FPU_Type *) FPU_BASE ) /*!< Floating Point Unit */ + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) + #define SCS_BASE_NS (0xE002E000UL) /*!< System Control Space Base Address (non-secure address space) */ + #define CoreDebug_BASE_NS (0xE002EDF0UL) /*!< \deprecated Core Debug Base Address (non-secure address space) */ + #define DCB_BASE_NS (0xE002EDF0UL) /*!< DCB Base Address (non-secure address space) */ + #define DIB_BASE_NS (0xE002EFB0UL) /*!< DIB Base Address (non-secure address space) */ + #define SysTick_BASE_NS (SCS_BASE_NS + 0x0010UL) /*!< SysTick Base Address (non-secure address space) */ + #define NVIC_BASE_NS (SCS_BASE_NS + 0x0100UL) /*!< NVIC Base Address (non-secure address space) */ + #define SCB_BASE_NS (SCS_BASE_NS + 0x0D00UL) /*!< System Control Block Base Address (non-secure address space) */ + + #define ICB_NS ((ICB_Type *) SCS_BASE_NS ) /*!< System control Register not in SCB(non-secure address space) */ + #define SCB_NS ((SCB_Type *) SCB_BASE_NS ) /*!< SCB configuration struct (non-secure address space) */ + #define SysTick_NS ((SysTick_Type *) SysTick_BASE_NS ) /*!< SysTick configuration struct (non-secure address space) */ + #define NVIC_NS ((NVIC_Type *) NVIC_BASE_NS ) /*!< NVIC configuration struct (non-secure address space) */ + #define CoreDebug_NS ((CoreDebug_Type *) CoreDebug_BASE_NS) /*!< \deprecated Core Debug configuration struct (non-secure address space) */ + #define DCB_NS ((DCB_Type *) DCB_BASE_NS ) /*!< DCB configuration struct (non-secure address space) */ + #define DIB_NS ((DIB_Type *) DIB_BASE_NS ) /*!< DIB configuration struct (non-secure address space) */ + + #if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + #define MPU_BASE_NS (SCS_BASE_NS + 0x0D90UL) /*!< Memory Protection Unit (non-secure address space) */ + #define MPU_NS ((MPU_Type *) MPU_BASE_NS ) /*!< Memory Protection Unit (non-secure address space) */ + #endif + + #define FPU_BASE_NS (SCS_BASE_NS + 0x0F30UL) /*!< Floating Point Unit (non-secure address space) */ + #define FPU_NS ((FPU_Type *) FPU_BASE_NS ) /*!< Floating Point Unit (non-secure address space) */ + +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ +/*@} */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_register_aliases Backwards Compatibility Aliases + \brief Register alias definitions for backwards compatibility. + @{ + */ +#define ID_ADR (ID_AFR) /*!< SCB Auxiliary Feature Register */ + +/* 'SCnSCB' is deprecated and replaced by 'ICB' */ +typedef ICB_Type SCnSCB_Type; + +/* Auxiliary Control Register Definitions */ +#define SCnSCB_ACTLR_DISCRITAXIRUW_Pos (ICB_ACTLR_DISCRITAXIRUW_Pos) +#define SCnSCB_ACTLR_DISCRITAXIRUW_Msk (ICB_ACTLR_DISCRITAXIRUW_Msk) + +#define SCnSCB_ACTLR_DISDI_Pos (ICB_ACTLR_DISDI_Pos) +#define SCnSCB_ACTLR_DISDI_Msk (ICB_ACTLR_DISDI_Msk) + +#define SCnSCB_ACTLR_DISCRITAXIRUR_Pos (ICB_ACTLR_DISCRITAXIRUR_Pos) +#define SCnSCB_ACTLR_DISCRITAXIRUR_Msk (ICB_ACTLR_DISCRITAXIRUR_Msk) + +#define SCnSCB_ACTLR_EVENTBUSEN_Pos (ICB_ACTLR_EVENTBUSEN_Pos) +#define SCnSCB_ACTLR_EVENTBUSEN_Msk (ICB_ACTLR_EVENTBUSEN_Msk) + +#define SCnSCB_ACTLR_EVENTBUSEN_S_Pos (ICB_ACTLR_EVENTBUSEN_S_Pos) +#define SCnSCB_ACTLR_EVENTBUSEN_S_Msk (ICB_ACTLR_EVENTBUSEN_S_Msk) + +#define SCnSCB_ACTLR_DISITMATBFLUSH_Pos (ICB_ACTLR_DISITMATBFLUSH_Pos) +#define SCnSCB_ACTLR_DISITMATBFLUSH_Msk (ICB_ACTLR_DISITMATBFLUSH_Msk) + +#define SCnSCB_ACTLR_DISNWAMODE_Pos (ICB_ACTLR_DISNWAMODE_Pos) +#define SCnSCB_ACTLR_DISNWAMODE_Msk (ICB_ACTLR_DISNWAMODE_Msk) + +#define SCnSCB_ACTLR_FPEXCODIS_Pos (ICB_ACTLR_FPEXCODIS_Pos) +#define SCnSCB_ACTLR_FPEXCODIS_Msk (ICB_ACTLR_FPEXCODIS_Msk) + +#define SCnSCB_ACTLR_DISOLAP_Pos (ICB_ACTLR_DISOLAP_Pos) +#define SCnSCB_ACTLR_DISOLAP_Msk (ICB_ACTLR_DISOLAP_Msk) + +#define SCnSCB_ACTLR_DISOLAPS_Pos (ICB_ACTLR_DISOLAPS_Pos) +#define SCnSCB_ACTLR_DISOLAPS_Msk (ICB_ACTLR_DISOLAPS_Msk) + +#define SCnSCB_ACTLR_DISLOBR_Pos (ICB_ACTLR_DISLOBR_Pos) +#define SCnSCB_ACTLR_DISLOBR_Msk (ICB_ACTLR_DISLOBR_Msk) + +#define SCnSCB_ACTLR_DISLO_Pos (ICB_ACTLR_DISLO_Pos) +#define SCnSCB_ACTLR_DISLO_Msk (ICB_ACTLR_DISLO_Msk) + +#define SCnSCB_ACTLR_DISLOLEP_Pos (ICB_ACTLR_DISLOLEP_Pos) +#define SCnSCB_ACTLR_DISLOLEP_Msk (ICB_ACTLR_DISLOLEP_Msk) + +#define SCnSCB_ACTLR_DISFOLD_Pos (ICB_ACTLR_DISFOLD_Pos) +#define SCnSCB_ACTLR_DISFOLD_Msk (ICB_ACTLR_DISFOLD_Msk) + +/* Interrupt Controller Type Register Definitions */ +#define SCnSCB_ICTR_INTLINESNUM_Pos (ICB_ICTR_INTLINESNUM_Pos) +#define SCnSCB_ICTR_INTLINESNUM_Msk (ICB_ICTR_INTLINESNUM_Msk) + +#define SCnSCB (ICB) +#define SCnSCB_NS (ICB_NS) + +/*@} */ + + +/******************************************************************************* + * Hardware Abstraction Layer + Core Function Interface contains: + - Core NVIC Functions + - Core SysTick Functions + - Core Debug Functions + - Core Register Access Functions + ******************************************************************************/ +/** + \defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference +*/ + + + +/* ########################## NVIC functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_NVICFunctions NVIC Functions + \brief Functions that manage interrupts and exceptions via the NVIC. + @{ + */ + +#ifdef CMSIS_NVIC_VIRTUAL + #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE + #define CMSIS_NVIC_VIRTUAL_HEADER_FILE "cmsis_nvic_virtual.h" + #endif + #include CMSIS_NVIC_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetPriorityGrouping __NVIC_SetPriorityGrouping + #define NVIC_GetPriorityGrouping __NVIC_GetPriorityGrouping + #define NVIC_EnableIRQ __NVIC_EnableIRQ + #define NVIC_GetEnableIRQ __NVIC_GetEnableIRQ + #define NVIC_DisableIRQ __NVIC_DisableIRQ + #define NVIC_GetPendingIRQ __NVIC_GetPendingIRQ + #define NVIC_SetPendingIRQ __NVIC_SetPendingIRQ + #define NVIC_ClearPendingIRQ __NVIC_ClearPendingIRQ + #define NVIC_GetActive __NVIC_GetActive + #define NVIC_SetPriority __NVIC_SetPriority + #define NVIC_GetPriority __NVIC_GetPriority + #define NVIC_SystemReset __NVIC_SystemReset +#endif /* CMSIS_NVIC_VIRTUAL */ + +#ifdef CMSIS_VECTAB_VIRTUAL + #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE + #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE "cmsis_vectab_virtual.h" + #endif + #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetVector __NVIC_SetVector + #define NVIC_GetVector __NVIC_GetVector +#endif /* (CMSIS_VECTAB_VIRTUAL) */ + +#define NVIC_USER_IRQ_OFFSET 16 + + +/* Special LR values for Secure/Non-Secure call handling and exception handling */ + +/* Function Return Payload (from ARMv8-M Architecture Reference Manual) LR value on entry from Secure BLXNS */ +#define FNC_RETURN (0xFEFFFFFFUL) /* bit [0] ignored when processing a branch */ + +/* The following EXC_RETURN mask values are used to evaluate the LR on exception entry */ +#define EXC_RETURN_PREFIX (0xFF000000UL) /* bits [31:24] set to indicate an EXC_RETURN value */ +#define EXC_RETURN_S (0x00000040UL) /* bit [6] stack used to push registers: 0=Non-secure 1=Secure */ +#define EXC_RETURN_DCRS (0x00000020UL) /* bit [5] stacking rules for called registers: 0=skipped 1=saved */ +#define EXC_RETURN_FTYPE (0x00000010UL) /* bit [4] allocate stack for floating-point context: 0=done 1=skipped */ +#define EXC_RETURN_MODE (0x00000008UL) /* bit [3] processor mode for return: 0=Handler mode 1=Thread mode */ +#define EXC_RETURN_SPSEL (0x00000004UL) /* bit [2] stack pointer used to restore context: 0=MSP 1=PSP */ +#define EXC_RETURN_ES (0x00000001UL) /* bit [0] security state exception was taken to: 0=Non-secure 1=Secure */ + +/* Integrity Signature (from ARMv8-M Architecture Reference Manual) for exception context stacking */ +#if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) /* Value for processors with floating-point extension: */ +#define EXC_INTEGRITY_SIGNATURE (0xFEFA125AUL) /* bit [0] SFTC must match LR bit[4] EXC_RETURN_FTYPE */ +#else +#define EXC_INTEGRITY_SIGNATURE (0xFEFA125BUL) /* Value for processors without floating-point extension */ +#endif + + +/** + \brief Set Priority Grouping + \details Sets the priority grouping field using the required unlock sequence. + The parameter PriorityGroup is assigned to the field SCB->AIRCR [10:8] PRIGROUP field. + Only values from 0..7 are used. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Priority grouping field. + */ +__STATIC_INLINE void __NVIC_SetPriorityGrouping(uint32_t PriorityGroup) +{ + uint32_t reg_value; + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + + reg_value = SCB->AIRCR; /* read old register configuration */ + reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change */ + reg_value = (reg_value | + ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (PriorityGroupTmp << SCB_AIRCR_PRIGROUP_Pos) ); /* Insert write key and priority group */ + SCB->AIRCR = reg_value; +} + + +/** + \brief Get Priority Grouping + \details Reads the priority grouping field from the NVIC Interrupt Controller. + \return Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field). + */ +__STATIC_INLINE uint32_t __NVIC_GetPriorityGrouping(void) +{ + return ((uint32_t)((SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos)); +} + + +/** + \brief Enable Interrupt + \details Enables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + __COMPILER_BARRIER(); + NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __COMPILER_BARRIER(); + } +} + + +/** + \brief Get Interrupt Enable status + \details Returns a device specific interrupt enable status from the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt is not enabled. + \return 1 Interrupt is enabled. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Disable Interrupt + \details Disables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_DisableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __DSB(); + __ISB(); + } +} + + +/** + \brief Get Pending Interrupt + \details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not pending. + \return 1 Interrupt status is pending. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Pending Interrupt + \details Sets the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Clear Pending Interrupt + \details Clears the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Active Interrupt + \details Reads the active register in the NVIC and returns the active bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not active. + \return 1 Interrupt status is active. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetActive(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief Get Interrupt Target State + \details Reads the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 if interrupt is assigned to Secure + \return 1 if interrupt is assigned to Non Secure + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t NVIC_GetTargetState(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Interrupt Target State + \details Sets the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 if interrupt is assigned to Secure + 1 if interrupt is assigned to Non Secure + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t NVIC_SetTargetState(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] |= ((uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL))); + return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Clear Interrupt Target State + \details Clears the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 if interrupt is assigned to Secure + 1 if interrupt is assigned to Non Secure + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t NVIC_ClearTargetState(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] &= ~((uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL))); + return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + + +/** + \brief Set Interrupt Priority + \details Sets the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \param [in] priority Priority to set. + \note The priority cannot be set for every processor exception. + */ +__STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->IPR[((uint32_t)IRQn)] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } + else + { + SCB->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } +} + + +/** + \brief Get Interrupt Priority + \details Reads the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Interrupt Priority. + Value is aligned automatically to the implemented priority bits of the microcontroller. + */ +__STATIC_INLINE uint32_t __NVIC_GetPriority(IRQn_Type IRQn) +{ + + if ((int32_t)(IRQn) >= 0) + { + return(((uint32_t)NVIC->IPR[((uint32_t)IRQn)] >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return(((uint32_t)SCB->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] >> (8U - __NVIC_PRIO_BITS))); + } +} + + +/** + \brief Encode Priority + \details Encodes the priority for an interrupt with the given priority group, + preemptive priority value, and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Used priority group. + \param [in] PreemptPriority Preemptive priority value (starting from 0). + \param [in] SubPriority Subpriority value (starting from 0). + \return Encoded priority. Value can be used in the function \ref NVIC_SetPriority(). + */ +__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + return ( + ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) | + ((SubPriority & (uint32_t)((1UL << (SubPriorityBits )) - 1UL))) + ); +} + + +/** + \brief Decode Priority + \details Decodes an interrupt priority value with a given priority group to + preemptive priority value and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set. + \param [in] Priority Priority value, which can be retrieved with the function \ref NVIC_GetPriority(). + \param [in] PriorityGroup Used priority group. + \param [out] pPreemptPriority Preemptive priority value (starting from 0). + \param [out] pSubPriority Subpriority value (starting from 0). + */ +__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* const pPreemptPriority, uint32_t* const pSubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + *pPreemptPriority = (Priority >> SubPriorityBits) & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL); + *pSubPriority = (Priority ) & (uint32_t)((1UL << (SubPriorityBits )) - 1UL); +} + + +/** + \brief Set Interrupt Vector + \details Sets an interrupt vector in SRAM based interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + VTOR must been relocated to SRAM before. + \param [in] IRQn Interrupt number + \param [in] vector Address of interrupt handler function + */ +__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector) +{ + uint32_t *vectors = (uint32_t *)SCB->VTOR; + vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET] = vector; + __DSB(); +} + + +/** + \brief Get Interrupt Vector + \details Reads an interrupt vector from interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Address of interrupt handler function + */ +__STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn) +{ + uint32_t *vectors = (uint32_t *)SCB->VTOR; + return vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET]; +} + + +/** + \brief System Reset + \details Initiates a system reset request to reset the MCU. + */ +__NO_RETURN __STATIC_INLINE void __NVIC_SystemReset(void) +{ + __DSB(); /* Ensure all outstanding memory accesses included + buffered write are completed before reset */ + SCB->AIRCR = (uint32_t)((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) | + SCB_AIRCR_SYSRESETREQ_Msk ); /* Keep priority group unchanged */ + __DSB(); /* Ensure completion of memory access */ + + for(;;) /* wait until reset */ + { + __NOP(); + } +} + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief Set Priority Grouping (non-secure) + \details Sets the non-secure priority grouping field when in secure state using the required unlock sequence. + The parameter PriorityGroup is assigned to the field SCB->AIRCR [10:8] PRIGROUP field. + Only values from 0..7 are used. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Priority grouping field. + */ +__STATIC_INLINE void TZ_NVIC_SetPriorityGrouping_NS(uint32_t PriorityGroup) +{ + uint32_t reg_value; + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + + reg_value = SCB_NS->AIRCR; /* read old register configuration */ + reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change */ + reg_value = (reg_value | + ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (PriorityGroupTmp << SCB_AIRCR_PRIGROUP_Pos) ); /* Insert write key and priority group */ + SCB_NS->AIRCR = reg_value; +} + + +/** + \brief Get Priority Grouping (non-secure) + \details Reads the priority grouping field from the non-secure NVIC when in secure state. + \return Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field). + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetPriorityGrouping_NS(void) +{ + return ((uint32_t)((SCB_NS->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos)); +} + + +/** + \brief Enable Interrupt (non-secure) + \details Enables a device specific interrupt in the non-secure NVIC interrupt controller when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_EnableIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Interrupt Enable status (non-secure) + \details Returns a device specific interrupt enable status from the non-secure NVIC interrupt controller when in secure state. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt is not enabled. + \return 1 Interrupt is enabled. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetEnableIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Disable Interrupt (non-secure) + \details Disables a device specific interrupt in the non-secure NVIC interrupt controller when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_DisableIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Pending Interrupt (non-secure) + \details Reads the NVIC pending register in the non-secure NVIC when in secure state and returns the pending bit for the specified device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not pending. + \return 1 Interrupt status is pending. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetPendingIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Pending Interrupt (non-secure) + \details Sets the pending bit of a device specific interrupt in the non-secure NVIC pending register when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_SetPendingIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Clear Pending Interrupt (non-secure) + \details Clears the pending bit of a device specific interrupt in the non-secure NVIC pending register when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_ClearPendingIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Active Interrupt (non-secure) + \details Reads the active register in non-secure NVIC when in secure state and returns the active bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not active. + \return 1 Interrupt status is active. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetActive_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Interrupt Priority (non-secure) + \details Sets the priority of a non-secure device specific interrupt or a non-secure processor exception when in secure state. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \param [in] priority Priority to set. + \note The priority cannot be set for every non-secure processor exception. + */ +__STATIC_INLINE void TZ_NVIC_SetPriority_NS(IRQn_Type IRQn, uint32_t priority) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->IPR[((uint32_t)IRQn)] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } + else + { + SCB_NS->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } +} + + +/** + \brief Get Interrupt Priority (non-secure) + \details Reads the priority of a non-secure device specific interrupt or a non-secure processor exception when in secure state. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Interrupt Priority. Value is aligned automatically to the implemented priority bits of the microcontroller. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetPriority_NS(IRQn_Type IRQn) +{ + + if ((int32_t)(IRQn) >= 0) + { + return(((uint32_t)NVIC_NS->IPR[((uint32_t)IRQn)] >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return(((uint32_t)SCB_NS->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] >> (8U - __NVIC_PRIO_BITS))); + } +} +#endif /* defined (__ARM_FEATURE_CMSE) &&(__ARM_FEATURE_CMSE == 3U) */ + +/*@} end of CMSIS_Core_NVICFunctions */ + +/* ########################## MPU functions #################################### */ + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + +#include "mpu_armv8.h" + +#endif + +/* ########################## PMU functions and events #################################### */ + +#if defined (__PMU_PRESENT) && (__PMU_PRESENT == 1U) + +#include "pmu_armv8.h" + +/** + \brief Cortex-M55 PMU events + \note Architectural PMU events can be found in pmu_armv8.h +*/ + +#define ARMCM55_PMU_ECC_ERR 0xC000 /*!< Any ECC error */ +#define ARMCM55_PMU_ECC_ERR_FATAL 0xC001 /*!< Any fatal ECC error */ +#define ARMCM55_PMU_ECC_ERR_DCACHE 0xC010 /*!< Any ECC error in the data cache */ +#define ARMCM55_PMU_ECC_ERR_ICACHE 0xC011 /*!< Any ECC error in the instruction cache */ +#define ARMCM55_PMU_ECC_ERR_FATAL_DCACHE 0xC012 /*!< Any fatal ECC error in the data cache */ +#define ARMCM55_PMU_ECC_ERR_FATAL_ICACHE 0xC013 /*!< Any fatal ECC error in the instruction cache*/ +#define ARMCM55_PMU_ECC_ERR_DTCM 0xC020 /*!< Any ECC error in the DTCM */ +#define ARMCM55_PMU_ECC_ERR_ITCM 0xC021 /*!< Any ECC error in the ITCM */ +#define ARMCM55_PMU_ECC_ERR_FATAL_DTCM 0xC022 /*!< Any fatal ECC error in the DTCM */ +#define ARMCM55_PMU_ECC_ERR_FATAL_ITCM 0xC023 /*!< Any fatal ECC error in the ITCM */ +#define ARMCM55_PMU_PF_LINEFILL 0xC100 /*!< A prefetcher starts a line-fill */ +#define ARMCM55_PMU_PF_CANCEL 0xC101 /*!< A prefetcher stops prefetching */ +#define ARMCM55_PMU_PF_DROP_LINEFILL 0xC102 /*!< A linefill triggered by a prefetcher has been dropped because of lack of buffering */ +#define ARMCM55_PMU_NWAMODE_ENTER 0xC200 /*!< No write-allocate mode entry */ +#define ARMCM55_PMU_NWAMODE 0xC201 /*!< Write-allocate store is not allocated into the data cache due to no-write-allocate mode */ +#define ARMCM55_PMU_SAHB_ACCESS 0xC300 /*!< Read or write access on the S-AHB interface to the TCM */ +#define ARMCM55_PMU_PAHB_ACCESS 0xC301 /*!< Read or write access to the P-AHB write interface */ +#define ARMCM55_PMU_AXI_WRITE_ACCESS 0xC302 /*!< Any beat access to M-AXI write interface */ +#define ARMCM55_PMU_AXI_READ_ACCESS 0xC303 /*!< Any beat access to M-AXI read interface */ +#define ARMCM55_PMU_DOSTIMEOUT_DOUBLE 0xC400 /*!< Denial of Service timeout has fired twice and caused buffers to drain to allow forward progress */ +#define ARMCM55_PMU_DOSTIMEOUT_TRIPLE 0xC401 /*!< Denial of Service timeout has fired three times and blocked the LSU to force forward progress */ + +#endif + +/* ########################## FPU functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_FpuFunctions FPU Functions + \brief Function that provides FPU type. + @{ + */ + +/** + \brief get FPU type + \details returns the FPU type + \returns + - \b 0: No FPU + - \b 1: Single precision FPU + - \b 2: Double + Single precision FPU + */ +__STATIC_INLINE uint32_t SCB_GetFPUType(void) +{ + uint32_t mvfr0; + + mvfr0 = FPU->MVFR0; + if ((mvfr0 & (FPU_MVFR0_FPSP_Msk | FPU_MVFR0_FPDP_Msk)) == 0x220U) + { + return 2U; /* Double + Single precision FPU */ + } + else if ((mvfr0 & (FPU_MVFR0_FPSP_Msk | FPU_MVFR0_FPDP_Msk)) == 0x020U) + { + return 1U; /* Single precision FPU */ + } + else + { + return 0U; /* No FPU */ + } +} + + +/*@} end of CMSIS_Core_FpuFunctions */ + +/* ########################## MVE functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_MveFunctions MVE Functions + \brief Function that provides MVE type. + @{ + */ + +/** + \brief get MVE type + \details returns the MVE type + \returns + - \b 0: No Vector Extension (MVE) + - \b 1: Integer Vector Extension (MVE-I) + - \b 2: Floating-point Vector Extension (MVE-F) + */ +__STATIC_INLINE uint32_t SCB_GetMVEType(void) +{ + const uint32_t mvfr1 = FPU->MVFR1; + if ((mvfr1 & FPU_MVFR1_MVE_Msk) == (0x2U << FPU_MVFR1_MVE_Pos)) + { + return 2U; + } + else if ((mvfr1 & FPU_MVFR1_MVE_Msk) == (0x1U << FPU_MVFR1_MVE_Pos)) + { + return 1U; + } + else + { + return 0U; + } +} + + +/*@} end of CMSIS_Core_MveFunctions */ + + +/* ########################## Cache functions #################################### */ + +#if ((defined (__ICACHE_PRESENT) && (__ICACHE_PRESENT == 1U)) || \ + (defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U))) +#include "cachel1_armv7.h" +#endif + + +/* ########################## SAU functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SAUFunctions SAU Functions + \brief Functions that configure the SAU. + @{ + */ + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) + +/** + \brief Enable SAU + \details Enables the Security Attribution Unit (SAU). + */ +__STATIC_INLINE void TZ_SAU_Enable(void) +{ + SAU->CTRL |= (SAU_CTRL_ENABLE_Msk); +} + + + +/** + \brief Disable SAU + \details Disables the Security Attribution Unit (SAU). + */ +__STATIC_INLINE void TZ_SAU_Disable(void) +{ + SAU->CTRL &= ~(SAU_CTRL_ENABLE_Msk); +} + +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + +/*@} end of CMSIS_Core_SAUFunctions */ + + + + +/* ################################## Debug Control function ############################################ */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_DCBFunctions Debug Control Functions + \brief Functions that access the Debug Control Block. + @{ + */ + + +/** + \brief Set Debug Authentication Control Register + \details writes to Debug Authentication Control register. + \param [in] value value to be writen. + */ +__STATIC_INLINE void DCB_SetAuthCtrl(uint32_t value) +{ + __DSB(); + __ISB(); + DCB->DAUTHCTRL = value; + __DSB(); + __ISB(); +} + + +/** + \brief Get Debug Authentication Control Register + \details Reads Debug Authentication Control register. + \return Debug Authentication Control Register. + */ +__STATIC_INLINE uint32_t DCB_GetAuthCtrl(void) +{ + return (DCB->DAUTHCTRL); +} + + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief Set Debug Authentication Control Register (non-secure) + \details writes to non-secure Debug Authentication Control register when in secure state. + \param [in] value value to be writen + */ +__STATIC_INLINE void TZ_DCB_SetAuthCtrl_NS(uint32_t value) +{ + __DSB(); + __ISB(); + DCB_NS->DAUTHCTRL = value; + __DSB(); + __ISB(); +} + + +/** + \brief Get Debug Authentication Control Register (non-secure) + \details Reads non-secure Debug Authentication Control register when in secure state. + \return Debug Authentication Control Register. + */ +__STATIC_INLINE uint32_t TZ_DCB_GetAuthCtrl_NS(void) +{ + return (DCB_NS->DAUTHCTRL); +} +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + +/*@} end of CMSIS_Core_DCBFunctions */ + + + + +/* ################################## Debug Identification function ############################################ */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_DIBFunctions Debug Identification Functions + \brief Functions that access the Debug Identification Block. + @{ + */ + + +/** + \brief Get Debug Authentication Status Register + \details Reads Debug Authentication Status register. + \return Debug Authentication Status Register. + */ +__STATIC_INLINE uint32_t DIB_GetAuthStatus(void) +{ + return (DIB->DAUTHSTATUS); +} + + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief Get Debug Authentication Status Register (non-secure) + \details Reads non-secure Debug Authentication Status register when in secure state. + \return Debug Authentication Status Register. + */ +__STATIC_INLINE uint32_t TZ_DIB_GetAuthStatus_NS(void) +{ + return (DIB_NS->DAUTHSTATUS); +} +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + +/*@} end of CMSIS_Core_DCBFunctions */ + + + + +/* ################################## SysTick function ############################################ */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SysTickFunctions SysTick Functions + \brief Functions that configure the System. + @{ + */ + +#if defined (__Vendor_SysTickConfig) && (__Vendor_SysTickConfig == 0U) + +/** + \brief System Tick Configuration + \details Initializes the System Timer and its interrupt, and starts the System Tick Timer. + Counter is in free running mode to generate periodic interrupts. + \param [in] ticks Number of ticks between two interrupts. + \return 0 Function succeeded. + \return 1 Function failed. + \note When the variable __Vendor_SysTickConfig is set to 1, then the + function SysTick_Config is not included. In this case, the file device.h + must contain a vendor-specific implementation of this function. + */ +__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks) +{ + if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) + { + return (1UL); /* Reload value impossible */ + } + + SysTick->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ + NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ + SysTick->VAL = 0UL; /* Load the SysTick Counter Value */ + SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0UL); /* Function successful */ +} + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief System Tick Configuration (non-secure) + \details Initializes the non-secure System Timer and its interrupt when in secure state, and starts the System Tick Timer. + Counter is in free running mode to generate periodic interrupts. + \param [in] ticks Number of ticks between two interrupts. + \return 0 Function succeeded. + \return 1 Function failed. + \note When the variable __Vendor_SysTickConfig is set to 1, then the + function TZ_SysTick_Config_NS is not included. In this case, the file device.h + must contain a vendor-specific implementation of this function. + + */ +__STATIC_INLINE uint32_t TZ_SysTick_Config_NS(uint32_t ticks) +{ + if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) + { + return (1UL); /* Reload value impossible */ + } + + SysTick_NS->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ + TZ_NVIC_SetPriority_NS (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ + SysTick_NS->VAL = 0UL; /* Load the SysTick Counter Value */ + SysTick_NS->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0UL); /* Function successful */ +} +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + +#endif + +/*@} end of CMSIS_Core_SysTickFunctions */ + + + +/* ##################################### Debug In/Output function ########################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_core_DebugFunctions ITM Functions + \brief Functions that access the ITM debug interface. + @{ + */ + +extern volatile int32_t ITM_RxBuffer; /*!< External variable to receive characters. */ +#define ITM_RXBUFFER_EMPTY ((int32_t)0x5AA55AA5U) /*!< Value identifying \ref ITM_RxBuffer is ready for next character. */ + + +/** + \brief ITM Send Character + \details Transmits a character via the ITM channel 0, and + \li Just returns when no debugger is connected that has booked the output. + \li Is blocking when a debugger is connected, but the previous character sent has not been transmitted. + \param [in] ch Character to transmit. + \returns Character to transmit. + */ +__STATIC_INLINE uint32_t ITM_SendChar (uint32_t ch) +{ + if (((ITM->TCR & ITM_TCR_ITMENA_Msk) != 0UL) && /* ITM enabled */ + ((ITM->TER & 1UL ) != 0UL) ) /* ITM Port #0 enabled */ + { + while (ITM->PORT[0U].u32 == 0UL) + { + __NOP(); + } + ITM->PORT[0U].u8 = (uint8_t)ch; + } + return (ch); +} + + +/** + \brief ITM Receive Character + \details Inputs a character via the external variable \ref ITM_RxBuffer. + \return Received character. + \return -1 No character pending. + */ +__STATIC_INLINE int32_t ITM_ReceiveChar (void) +{ + int32_t ch = -1; /* no character available */ + + if (ITM_RxBuffer != ITM_RXBUFFER_EMPTY) + { + ch = ITM_RxBuffer; + ITM_RxBuffer = ITM_RXBUFFER_EMPTY; /* ready for next character */ + } + + return (ch); +} + + +/** + \brief ITM Check Character + \details Checks whether a character is pending for reading in the variable \ref ITM_RxBuffer. + \return 0 No character available. + \return 1 Character available. + */ +__STATIC_INLINE int32_t ITM_CheckChar (void) +{ + + if (ITM_RxBuffer == ITM_RXBUFFER_EMPTY) + { + return (0); /* no character available */ + } + else + { + return (1); /* character available */ + } +} + +/*@} end of CMSIS_core_DebugFunctions */ + + + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_CM55_H_DEPENDANT */ + +#endif /* __CMSIS_GENERIC */ diff --git a/bsp/renesas/ra8m1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm7.h b/bsp/renesas/ra8m1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm7.h new file mode 100644 index 000000000000..010506e9fa43 --- /dev/null +++ b/bsp/renesas/ra8m1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm7.h @@ -0,0 +1,2366 @@ +/**************************************************************************//** + * @file core_cm7.h + * @brief CMSIS Cortex-M7 Core Peripheral Access Layer Header File + * @version V5.1.6 + * @date 04. June 2021 + ******************************************************************************/ +/* + * Copyright (c) 2009-2021 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#elif defined (__clang__) + #pragma clang system_header /* treat file as system include file */ +#endif + +#ifndef __CORE_CM7_H_GENERIC +#define __CORE_CM7_H_GENERIC + +#include + +#ifdef __cplusplus + extern "C" { +#endif + +/** + \page CMSIS_MISRA_Exceptions MISRA-C:2004 Compliance Exceptions + CMSIS violates the following MISRA-C:2004 rules: + + \li Required Rule 8.5, object/function definition in header file.
+ Function definitions in header files are used to allow 'inlining'. + + \li Required Rule 18.4, declaration of union type or object of union type: '{...}'.
+ Unions are used for effective representation of core registers. + + \li Advisory Rule 19.7, Function-like macro defined.
+ Function-like macros are used to allow more efficient code. + */ + + +/******************************************************************************* + * CMSIS definitions + ******************************************************************************/ +/** + \ingroup Cortex_M7 + @{ + */ + +#include "cmsis_version.h" + +/* CMSIS CM7 definitions */ +#define __CM7_CMSIS_VERSION_MAIN (__CM_CMSIS_VERSION_MAIN) /*!< \deprecated [31:16] CMSIS HAL main version */ +#define __CM7_CMSIS_VERSION_SUB ( __CM_CMSIS_VERSION_SUB) /*!< \deprecated [15:0] CMSIS HAL sub version */ +#define __CM7_CMSIS_VERSION ((__CM7_CMSIS_VERSION_MAIN << 16U) | \ + __CM7_CMSIS_VERSION_SUB ) /*!< \deprecated CMSIS HAL version number */ + +#define __CORTEX_M (7U) /*!< Cortex-M Core */ + +/** __FPU_USED indicates whether an FPU is used or not. + For this, __FPU_PRESENT has to be checked prior to making use of FPU specific registers and functions. +*/ +#if defined ( __CC_ARM ) + #if defined __TARGET_FPU_VFP + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) + #if defined __ARM_FP + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #warning "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined ( __GNUC__ ) + #if defined (__VFP_FP__) && !defined(__SOFTFP__) + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined ( __ICCARM__ ) + #if defined __ARMVFP__ + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined ( __TI_ARM__ ) + #if defined __TI_VFP_SUPPORT__ + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined ( __TASKING__ ) + #if defined __FPU_VFP__ + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined ( __CSMC__ ) + #if ( __CSMC__ & 0x400U) + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#endif + +#include "cmsis_compiler.h" /* CMSIS compiler specific defines */ + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_CM7_H_GENERIC */ + +#ifndef __CMSIS_GENERIC + +#ifndef __CORE_CM7_H_DEPENDANT +#define __CORE_CM7_H_DEPENDANT + +#ifdef __cplusplus + extern "C" { +#endif + +/* check device defines and use defaults */ +#if defined __CHECK_DEVICE_DEFINES + #ifndef __CM7_REV + #define __CM7_REV 0x0000U + #warning "__CM7_REV not defined in device header file; using default!" + #endif + + #ifndef __FPU_PRESENT + #define __FPU_PRESENT 0U + #warning "__FPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __MPU_PRESENT + #define __MPU_PRESENT 0U + #warning "__MPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __ICACHE_PRESENT + #define __ICACHE_PRESENT 0U + #warning "__ICACHE_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __DCACHE_PRESENT + #define __DCACHE_PRESENT 0U + #warning "__DCACHE_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __DTCM_PRESENT + #define __DTCM_PRESENT 0U + #warning "__DTCM_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __VTOR_PRESENT + #define __VTOR_PRESENT 1U + #warning "__VTOR_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __NVIC_PRIO_BITS + #define __NVIC_PRIO_BITS 3U + #warning "__NVIC_PRIO_BITS not defined in device header file; using default!" + #endif + + #ifndef __Vendor_SysTickConfig + #define __Vendor_SysTickConfig 0U + #warning "__Vendor_SysTickConfig not defined in device header file; using default!" + #endif +#endif + +/* IO definitions (access restrictions to peripheral registers) */ +/** + \defgroup CMSIS_glob_defs CMSIS Global Defines + + IO Type Qualifiers are used + \li to specify the access to peripheral variables. + \li for automatic generation of peripheral register debug information. +*/ +#ifdef __cplusplus + #define __I volatile /*!< Defines 'read only' permissions */ +#else + #define __I volatile const /*!< Defines 'read only' permissions */ +#endif +#define __O volatile /*!< Defines 'write only' permissions */ +#define __IO volatile /*!< Defines 'read / write' permissions */ + +/* following defines should be used for structure members */ +#define __IM volatile const /*! Defines 'read only' structure member permissions */ +#define __OM volatile /*! Defines 'write only' structure member permissions */ +#define __IOM volatile /*! Defines 'read / write' structure member permissions */ + +/*@} end of group Cortex_M7 */ + + + +/******************************************************************************* + * Register Abstraction + Core Register contain: + - Core Register + - Core NVIC Register + - Core SCB Register + - Core SysTick Register + - Core Debug Register + - Core MPU Register + - Core FPU Register + ******************************************************************************/ +/** + \defgroup CMSIS_core_register Defines and Type Definitions + \brief Type definitions and defines for Cortex-M processor based devices. +*/ + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CORE Status and Control Registers + \brief Core Register type definitions. + @{ + */ + +/** + \brief Union type to access the Application Program Status Register (APSR). + */ +typedef union +{ + struct + { + uint32_t _reserved0:16; /*!< bit: 0..15 Reserved */ + uint32_t GE:4; /*!< bit: 16..19 Greater than or Equal flags */ + uint32_t _reserved1:7; /*!< bit: 20..26 Reserved */ + uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} APSR_Type; + +/* APSR Register Definitions */ +#define APSR_N_Pos 31U /*!< APSR: N Position */ +#define APSR_N_Msk (1UL << APSR_N_Pos) /*!< APSR: N Mask */ + +#define APSR_Z_Pos 30U /*!< APSR: Z Position */ +#define APSR_Z_Msk (1UL << APSR_Z_Pos) /*!< APSR: Z Mask */ + +#define APSR_C_Pos 29U /*!< APSR: C Position */ +#define APSR_C_Msk (1UL << APSR_C_Pos) /*!< APSR: C Mask */ + +#define APSR_V_Pos 28U /*!< APSR: V Position */ +#define APSR_V_Msk (1UL << APSR_V_Pos) /*!< APSR: V Mask */ + +#define APSR_Q_Pos 27U /*!< APSR: Q Position */ +#define APSR_Q_Msk (1UL << APSR_Q_Pos) /*!< APSR: Q Mask */ + +#define APSR_GE_Pos 16U /*!< APSR: GE Position */ +#define APSR_GE_Msk (0xFUL << APSR_GE_Pos) /*!< APSR: GE Mask */ + + +/** + \brief Union type to access the Interrupt Program Status Register (IPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:23; /*!< bit: 9..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} IPSR_Type; + +/* IPSR Register Definitions */ +#define IPSR_ISR_Pos 0U /*!< IPSR: ISR Position */ +#define IPSR_ISR_Msk (0x1FFUL /*<< IPSR_ISR_Pos*/) /*!< IPSR: ISR Mask */ + + +/** + \brief Union type to access the Special-Purpose Program Status Registers (xPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:1; /*!< bit: 9 Reserved */ + uint32_t ICI_IT_1:6; /*!< bit: 10..15 ICI/IT part 1 */ + uint32_t GE:4; /*!< bit: 16..19 Greater than or Equal flags */ + uint32_t _reserved1:4; /*!< bit: 20..23 Reserved */ + uint32_t T:1; /*!< bit: 24 Thumb bit */ + uint32_t ICI_IT_2:2; /*!< bit: 25..26 ICI/IT part 2 */ + uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} xPSR_Type; + +/* xPSR Register Definitions */ +#define xPSR_N_Pos 31U /*!< xPSR: N Position */ +#define xPSR_N_Msk (1UL << xPSR_N_Pos) /*!< xPSR: N Mask */ + +#define xPSR_Z_Pos 30U /*!< xPSR: Z Position */ +#define xPSR_Z_Msk (1UL << xPSR_Z_Pos) /*!< xPSR: Z Mask */ + +#define xPSR_C_Pos 29U /*!< xPSR: C Position */ +#define xPSR_C_Msk (1UL << xPSR_C_Pos) /*!< xPSR: C Mask */ + +#define xPSR_V_Pos 28U /*!< xPSR: V Position */ +#define xPSR_V_Msk (1UL << xPSR_V_Pos) /*!< xPSR: V Mask */ + +#define xPSR_Q_Pos 27U /*!< xPSR: Q Position */ +#define xPSR_Q_Msk (1UL << xPSR_Q_Pos) /*!< xPSR: Q Mask */ + +#define xPSR_ICI_IT_2_Pos 25U /*!< xPSR: ICI/IT part 2 Position */ +#define xPSR_ICI_IT_2_Msk (3UL << xPSR_ICI_IT_2_Pos) /*!< xPSR: ICI/IT part 2 Mask */ + +#define xPSR_T_Pos 24U /*!< xPSR: T Position */ +#define xPSR_T_Msk (1UL << xPSR_T_Pos) /*!< xPSR: T Mask */ + +#define xPSR_GE_Pos 16U /*!< xPSR: GE Position */ +#define xPSR_GE_Msk (0xFUL << xPSR_GE_Pos) /*!< xPSR: GE Mask */ + +#define xPSR_ICI_IT_1_Pos 10U /*!< xPSR: ICI/IT part 1 Position */ +#define xPSR_ICI_IT_1_Msk (0x3FUL << xPSR_ICI_IT_1_Pos) /*!< xPSR: ICI/IT part 1 Mask */ + +#define xPSR_ISR_Pos 0U /*!< xPSR: ISR Position */ +#define xPSR_ISR_Msk (0x1FFUL /*<< xPSR_ISR_Pos*/) /*!< xPSR: ISR Mask */ + + +/** + \brief Union type to access the Control Registers (CONTROL). + */ +typedef union +{ + struct + { + uint32_t nPRIV:1; /*!< bit: 0 Execution privilege in Thread mode */ + uint32_t SPSEL:1; /*!< bit: 1 Stack to be used */ + uint32_t FPCA:1; /*!< bit: 2 FP extension active flag */ + uint32_t _reserved0:29; /*!< bit: 3..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} CONTROL_Type; + +/* CONTROL Register Definitions */ +#define CONTROL_FPCA_Pos 2U /*!< CONTROL: FPCA Position */ +#define CONTROL_FPCA_Msk (1UL << CONTROL_FPCA_Pos) /*!< CONTROL: FPCA Mask */ + +#define CONTROL_SPSEL_Pos 1U /*!< CONTROL: SPSEL Position */ +#define CONTROL_SPSEL_Msk (1UL << CONTROL_SPSEL_Pos) /*!< CONTROL: SPSEL Mask */ + +#define CONTROL_nPRIV_Pos 0U /*!< CONTROL: nPRIV Position */ +#define CONTROL_nPRIV_Msk (1UL /*<< CONTROL_nPRIV_Pos*/) /*!< CONTROL: nPRIV Mask */ + +/*@} end of group CMSIS_CORE */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_NVIC Nested Vectored Interrupt Controller (NVIC) + \brief Type definitions for the NVIC Registers + @{ + */ + +/** + \brief Structure type to access the Nested Vectored Interrupt Controller (NVIC). + */ +typedef struct +{ + __IOM uint32_t ISER[8U]; /*!< Offset: 0x000 (R/W) Interrupt Set Enable Register */ + uint32_t RESERVED0[24U]; + __IOM uint32_t ICER[8U]; /*!< Offset: 0x080 (R/W) Interrupt Clear Enable Register */ + uint32_t RESERVED1[24U]; + __IOM uint32_t ISPR[8U]; /*!< Offset: 0x100 (R/W) Interrupt Set Pending Register */ + uint32_t RESERVED2[24U]; + __IOM uint32_t ICPR[8U]; /*!< Offset: 0x180 (R/W) Interrupt Clear Pending Register */ + uint32_t RESERVED3[24U]; + __IOM uint32_t IABR[8U]; /*!< Offset: 0x200 (R/W) Interrupt Active bit Register */ + uint32_t RESERVED4[56U]; + __IOM uint8_t IP[240U]; /*!< Offset: 0x300 (R/W) Interrupt Priority Register (8Bit wide) */ + uint32_t RESERVED5[644U]; + __OM uint32_t STIR; /*!< Offset: 0xE00 ( /W) Software Trigger Interrupt Register */ +} NVIC_Type; + +/* Software Triggered Interrupt Register Definitions */ +#define NVIC_STIR_INTID_Pos 0U /*!< STIR: INTLINESNUM Position */ +#define NVIC_STIR_INTID_Msk (0x1FFUL /*<< NVIC_STIR_INTID_Pos*/) /*!< STIR: INTLINESNUM Mask */ + +/*@} end of group CMSIS_NVIC */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SCB System Control Block (SCB) + \brief Type definitions for the System Control Block Registers + @{ + */ + +/** + \brief Structure type to access the System Control Block (SCB). + */ +typedef struct +{ + __IM uint32_t CPUID; /*!< Offset: 0x000 (R/ ) CPUID Base Register */ + __IOM uint32_t ICSR; /*!< Offset: 0x004 (R/W) Interrupt Control and State Register */ + __IOM uint32_t VTOR; /*!< Offset: 0x008 (R/W) Vector Table Offset Register */ + __IOM uint32_t AIRCR; /*!< Offset: 0x00C (R/W) Application Interrupt and Reset Control Register */ + __IOM uint32_t SCR; /*!< Offset: 0x010 (R/W) System Control Register */ + __IOM uint32_t CCR; /*!< Offset: 0x014 (R/W) Configuration Control Register */ + __IOM uint8_t SHPR[12U]; /*!< Offset: 0x018 (R/W) System Handlers Priority Registers (4-7, 8-11, 12-15) */ + __IOM uint32_t SHCSR; /*!< Offset: 0x024 (R/W) System Handler Control and State Register */ + __IOM uint32_t CFSR; /*!< Offset: 0x028 (R/W) Configurable Fault Status Register */ + __IOM uint32_t HFSR; /*!< Offset: 0x02C (R/W) HardFault Status Register */ + __IOM uint32_t DFSR; /*!< Offset: 0x030 (R/W) Debug Fault Status Register */ + __IOM uint32_t MMFAR; /*!< Offset: 0x034 (R/W) MemManage Fault Address Register */ + __IOM uint32_t BFAR; /*!< Offset: 0x038 (R/W) BusFault Address Register */ + __IOM uint32_t AFSR; /*!< Offset: 0x03C (R/W) Auxiliary Fault Status Register */ + __IM uint32_t ID_PFR[2U]; /*!< Offset: 0x040 (R/ ) Processor Feature Register */ + __IM uint32_t ID_DFR; /*!< Offset: 0x048 (R/ ) Debug Feature Register */ + __IM uint32_t ID_AFR; /*!< Offset: 0x04C (R/ ) Auxiliary Feature Register */ + __IM uint32_t ID_MFR[4U]; /*!< Offset: 0x050 (R/ ) Memory Model Feature Register */ + __IM uint32_t ID_ISAR[5U]; /*!< Offset: 0x060 (R/ ) Instruction Set Attributes Register */ + uint32_t RESERVED0[1U]; + __IM uint32_t CLIDR; /*!< Offset: 0x078 (R/ ) Cache Level ID register */ + __IM uint32_t CTR; /*!< Offset: 0x07C (R/ ) Cache Type register */ + __IM uint32_t CCSIDR; /*!< Offset: 0x080 (R/ ) Cache Size ID Register */ + __IOM uint32_t CSSELR; /*!< Offset: 0x084 (R/W) Cache Size Selection Register */ + __IOM uint32_t CPACR; /*!< Offset: 0x088 (R/W) Coprocessor Access Control Register */ + uint32_t RESERVED3[93U]; + __OM uint32_t STIR; /*!< Offset: 0x200 ( /W) Software Triggered Interrupt Register */ + uint32_t RESERVED4[15U]; + __IM uint32_t MVFR0; /*!< Offset: 0x240 (R/ ) Media and VFP Feature Register 0 */ + __IM uint32_t MVFR1; /*!< Offset: 0x244 (R/ ) Media and VFP Feature Register 1 */ + __IM uint32_t MVFR2; /*!< Offset: 0x248 (R/ ) Media and VFP Feature Register 2 */ + uint32_t RESERVED5[1U]; + __OM uint32_t ICIALLU; /*!< Offset: 0x250 ( /W) I-Cache Invalidate All to PoU */ + uint32_t RESERVED6[1U]; + __OM uint32_t ICIMVAU; /*!< Offset: 0x258 ( /W) I-Cache Invalidate by MVA to PoU */ + __OM uint32_t DCIMVAC; /*!< Offset: 0x25C ( /W) D-Cache Invalidate by MVA to PoC */ + __OM uint32_t DCISW; /*!< Offset: 0x260 ( /W) D-Cache Invalidate by Set-way */ + __OM uint32_t DCCMVAU; /*!< Offset: 0x264 ( /W) D-Cache Clean by MVA to PoU */ + __OM uint32_t DCCMVAC; /*!< Offset: 0x268 ( /W) D-Cache Clean by MVA to PoC */ + __OM uint32_t DCCSW; /*!< Offset: 0x26C ( /W) D-Cache Clean by Set-way */ + __OM uint32_t DCCIMVAC; /*!< Offset: 0x270 ( /W) D-Cache Clean and Invalidate by MVA to PoC */ + __OM uint32_t DCCISW; /*!< Offset: 0x274 ( /W) D-Cache Clean and Invalidate by Set-way */ + __OM uint32_t BPIALL; /*!< Offset: 0x278 ( /W) Branch Predictor Invalidate All */ + uint32_t RESERVED7[5U]; + __IOM uint32_t ITCMCR; /*!< Offset: 0x290 (R/W) Instruction Tightly-Coupled Memory Control Register */ + __IOM uint32_t DTCMCR; /*!< Offset: 0x294 (R/W) Data Tightly-Coupled Memory Control Registers */ + __IOM uint32_t AHBPCR; /*!< Offset: 0x298 (R/W) AHBP Control Register */ + __IOM uint32_t CACR; /*!< Offset: 0x29C (R/W) L1 Cache Control Register */ + __IOM uint32_t AHBSCR; /*!< Offset: 0x2A0 (R/W) AHB Slave Control Register */ + uint32_t RESERVED8[1U]; + __IOM uint32_t ABFSR; /*!< Offset: 0x2A8 (R/W) Auxiliary Bus Fault Status Register */ +} SCB_Type; + +/* SCB CPUID Register Definitions */ +#define SCB_CPUID_IMPLEMENTER_Pos 24U /*!< SCB CPUID: IMPLEMENTER Position */ +#define SCB_CPUID_IMPLEMENTER_Msk (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos) /*!< SCB CPUID: IMPLEMENTER Mask */ + +#define SCB_CPUID_VARIANT_Pos 20U /*!< SCB CPUID: VARIANT Position */ +#define SCB_CPUID_VARIANT_Msk (0xFUL << SCB_CPUID_VARIANT_Pos) /*!< SCB CPUID: VARIANT Mask */ + +#define SCB_CPUID_ARCHITECTURE_Pos 16U /*!< SCB CPUID: ARCHITECTURE Position */ +#define SCB_CPUID_ARCHITECTURE_Msk (0xFUL << SCB_CPUID_ARCHITECTURE_Pos) /*!< SCB CPUID: ARCHITECTURE Mask */ + +#define SCB_CPUID_PARTNO_Pos 4U /*!< SCB CPUID: PARTNO Position */ +#define SCB_CPUID_PARTNO_Msk (0xFFFUL << SCB_CPUID_PARTNO_Pos) /*!< SCB CPUID: PARTNO Mask */ + +#define SCB_CPUID_REVISION_Pos 0U /*!< SCB CPUID: REVISION Position */ +#define SCB_CPUID_REVISION_Msk (0xFUL /*<< SCB_CPUID_REVISION_Pos*/) /*!< SCB CPUID: REVISION Mask */ + +/* SCB Interrupt Control State Register Definitions */ +#define SCB_ICSR_NMIPENDSET_Pos 31U /*!< SCB ICSR: NMIPENDSET Position */ +#define SCB_ICSR_NMIPENDSET_Msk (1UL << SCB_ICSR_NMIPENDSET_Pos) /*!< SCB ICSR: NMIPENDSET Mask */ + +#define SCB_ICSR_PENDSVSET_Pos 28U /*!< SCB ICSR: PENDSVSET Position */ +#define SCB_ICSR_PENDSVSET_Msk (1UL << SCB_ICSR_PENDSVSET_Pos) /*!< SCB ICSR: PENDSVSET Mask */ + +#define SCB_ICSR_PENDSVCLR_Pos 27U /*!< SCB ICSR: PENDSVCLR Position */ +#define SCB_ICSR_PENDSVCLR_Msk (1UL << SCB_ICSR_PENDSVCLR_Pos) /*!< SCB ICSR: PENDSVCLR Mask */ + +#define SCB_ICSR_PENDSTSET_Pos 26U /*!< SCB ICSR: PENDSTSET Position */ +#define SCB_ICSR_PENDSTSET_Msk (1UL << SCB_ICSR_PENDSTSET_Pos) /*!< SCB ICSR: PENDSTSET Mask */ + +#define SCB_ICSR_PENDSTCLR_Pos 25U /*!< SCB ICSR: PENDSTCLR Position */ +#define SCB_ICSR_PENDSTCLR_Msk (1UL << SCB_ICSR_PENDSTCLR_Pos) /*!< SCB ICSR: PENDSTCLR Mask */ + +#define SCB_ICSR_ISRPREEMPT_Pos 23U /*!< SCB ICSR: ISRPREEMPT Position */ +#define SCB_ICSR_ISRPREEMPT_Msk (1UL << SCB_ICSR_ISRPREEMPT_Pos) /*!< SCB ICSR: ISRPREEMPT Mask */ + +#define SCB_ICSR_ISRPENDING_Pos 22U /*!< SCB ICSR: ISRPENDING Position */ +#define SCB_ICSR_ISRPENDING_Msk (1UL << SCB_ICSR_ISRPENDING_Pos) /*!< SCB ICSR: ISRPENDING Mask */ + +#define SCB_ICSR_VECTPENDING_Pos 12U /*!< SCB ICSR: VECTPENDING Position */ +#define SCB_ICSR_VECTPENDING_Msk (0x1FFUL << SCB_ICSR_VECTPENDING_Pos) /*!< SCB ICSR: VECTPENDING Mask */ + +#define SCB_ICSR_RETTOBASE_Pos 11U /*!< SCB ICSR: RETTOBASE Position */ +#define SCB_ICSR_RETTOBASE_Msk (1UL << SCB_ICSR_RETTOBASE_Pos) /*!< SCB ICSR: RETTOBASE Mask */ + +#define SCB_ICSR_VECTACTIVE_Pos 0U /*!< SCB ICSR: VECTACTIVE Position */ +#define SCB_ICSR_VECTACTIVE_Msk (0x1FFUL /*<< SCB_ICSR_VECTACTIVE_Pos*/) /*!< SCB ICSR: VECTACTIVE Mask */ + +/* SCB Vector Table Offset Register Definitions */ +#define SCB_VTOR_TBLOFF_Pos 7U /*!< SCB VTOR: TBLOFF Position */ +#define SCB_VTOR_TBLOFF_Msk (0x1FFFFFFUL << SCB_VTOR_TBLOFF_Pos) /*!< SCB VTOR: TBLOFF Mask */ + +/* SCB Application Interrupt and Reset Control Register Definitions */ +#define SCB_AIRCR_VECTKEY_Pos 16U /*!< SCB AIRCR: VECTKEY Position */ +#define SCB_AIRCR_VECTKEY_Msk (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos) /*!< SCB AIRCR: VECTKEY Mask */ + +#define SCB_AIRCR_VECTKEYSTAT_Pos 16U /*!< SCB AIRCR: VECTKEYSTAT Position */ +#define SCB_AIRCR_VECTKEYSTAT_Msk (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos) /*!< SCB AIRCR: VECTKEYSTAT Mask */ + +#define SCB_AIRCR_ENDIANESS_Pos 15U /*!< SCB AIRCR: ENDIANESS Position */ +#define SCB_AIRCR_ENDIANESS_Msk (1UL << SCB_AIRCR_ENDIANESS_Pos) /*!< SCB AIRCR: ENDIANESS Mask */ + +#define SCB_AIRCR_PRIGROUP_Pos 8U /*!< SCB AIRCR: PRIGROUP Position */ +#define SCB_AIRCR_PRIGROUP_Msk (7UL << SCB_AIRCR_PRIGROUP_Pos) /*!< SCB AIRCR: PRIGROUP Mask */ + +#define SCB_AIRCR_SYSRESETREQ_Pos 2U /*!< SCB AIRCR: SYSRESETREQ Position */ +#define SCB_AIRCR_SYSRESETREQ_Msk (1UL << SCB_AIRCR_SYSRESETREQ_Pos) /*!< SCB AIRCR: SYSRESETREQ Mask */ + +#define SCB_AIRCR_VECTCLRACTIVE_Pos 1U /*!< SCB AIRCR: VECTCLRACTIVE Position */ +#define SCB_AIRCR_VECTCLRACTIVE_Msk (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos) /*!< SCB AIRCR: VECTCLRACTIVE Mask */ + +#define SCB_AIRCR_VECTRESET_Pos 0U /*!< SCB AIRCR: VECTRESET Position */ +#define SCB_AIRCR_VECTRESET_Msk (1UL /*<< SCB_AIRCR_VECTRESET_Pos*/) /*!< SCB AIRCR: VECTRESET Mask */ + +/* SCB System Control Register Definitions */ +#define SCB_SCR_SEVONPEND_Pos 4U /*!< SCB SCR: SEVONPEND Position */ +#define SCB_SCR_SEVONPEND_Msk (1UL << SCB_SCR_SEVONPEND_Pos) /*!< SCB SCR: SEVONPEND Mask */ + +#define SCB_SCR_SLEEPDEEP_Pos 2U /*!< SCB SCR: SLEEPDEEP Position */ +#define SCB_SCR_SLEEPDEEP_Msk (1UL << SCB_SCR_SLEEPDEEP_Pos) /*!< SCB SCR: SLEEPDEEP Mask */ + +#define SCB_SCR_SLEEPONEXIT_Pos 1U /*!< SCB SCR: SLEEPONEXIT Position */ +#define SCB_SCR_SLEEPONEXIT_Msk (1UL << SCB_SCR_SLEEPONEXIT_Pos) /*!< SCB SCR: SLEEPONEXIT Mask */ + +/* SCB Configuration Control Register Definitions */ +#define SCB_CCR_BP_Pos 18U /*!< SCB CCR: Branch prediction enable bit Position */ +#define SCB_CCR_BP_Msk (1UL << SCB_CCR_BP_Pos) /*!< SCB CCR: Branch prediction enable bit Mask */ + +#define SCB_CCR_IC_Pos 17U /*!< SCB CCR: Instruction cache enable bit Position */ +#define SCB_CCR_IC_Msk (1UL << SCB_CCR_IC_Pos) /*!< SCB CCR: Instruction cache enable bit Mask */ + +#define SCB_CCR_DC_Pos 16U /*!< SCB CCR: Cache enable bit Position */ +#define SCB_CCR_DC_Msk (1UL << SCB_CCR_DC_Pos) /*!< SCB CCR: Cache enable bit Mask */ + +#define SCB_CCR_STKALIGN_Pos 9U /*!< SCB CCR: STKALIGN Position */ +#define SCB_CCR_STKALIGN_Msk (1UL << SCB_CCR_STKALIGN_Pos) /*!< SCB CCR: STKALIGN Mask */ + +#define SCB_CCR_BFHFNMIGN_Pos 8U /*!< SCB CCR: BFHFNMIGN Position */ +#define SCB_CCR_BFHFNMIGN_Msk (1UL << SCB_CCR_BFHFNMIGN_Pos) /*!< SCB CCR: BFHFNMIGN Mask */ + +#define SCB_CCR_DIV_0_TRP_Pos 4U /*!< SCB CCR: DIV_0_TRP Position */ +#define SCB_CCR_DIV_0_TRP_Msk (1UL << SCB_CCR_DIV_0_TRP_Pos) /*!< SCB CCR: DIV_0_TRP Mask */ + +#define SCB_CCR_UNALIGN_TRP_Pos 3U /*!< SCB CCR: UNALIGN_TRP Position */ +#define SCB_CCR_UNALIGN_TRP_Msk (1UL << SCB_CCR_UNALIGN_TRP_Pos) /*!< SCB CCR: UNALIGN_TRP Mask */ + +#define SCB_CCR_USERSETMPEND_Pos 1U /*!< SCB CCR: USERSETMPEND Position */ +#define SCB_CCR_USERSETMPEND_Msk (1UL << SCB_CCR_USERSETMPEND_Pos) /*!< SCB CCR: USERSETMPEND Mask */ + +#define SCB_CCR_NONBASETHRDENA_Pos 0U /*!< SCB CCR: NONBASETHRDENA Position */ +#define SCB_CCR_NONBASETHRDENA_Msk (1UL /*<< SCB_CCR_NONBASETHRDENA_Pos*/) /*!< SCB CCR: NONBASETHRDENA Mask */ + +/* SCB System Handler Control and State Register Definitions */ +#define SCB_SHCSR_USGFAULTENA_Pos 18U /*!< SCB SHCSR: USGFAULTENA Position */ +#define SCB_SHCSR_USGFAULTENA_Msk (1UL << SCB_SHCSR_USGFAULTENA_Pos) /*!< SCB SHCSR: USGFAULTENA Mask */ + +#define SCB_SHCSR_BUSFAULTENA_Pos 17U /*!< SCB SHCSR: BUSFAULTENA Position */ +#define SCB_SHCSR_BUSFAULTENA_Msk (1UL << SCB_SHCSR_BUSFAULTENA_Pos) /*!< SCB SHCSR: BUSFAULTENA Mask */ + +#define SCB_SHCSR_MEMFAULTENA_Pos 16U /*!< SCB SHCSR: MEMFAULTENA Position */ +#define SCB_SHCSR_MEMFAULTENA_Msk (1UL << SCB_SHCSR_MEMFAULTENA_Pos) /*!< SCB SHCSR: MEMFAULTENA Mask */ + +#define SCB_SHCSR_SVCALLPENDED_Pos 15U /*!< SCB SHCSR: SVCALLPENDED Position */ +#define SCB_SHCSR_SVCALLPENDED_Msk (1UL << SCB_SHCSR_SVCALLPENDED_Pos) /*!< SCB SHCSR: SVCALLPENDED Mask */ + +#define SCB_SHCSR_BUSFAULTPENDED_Pos 14U /*!< SCB SHCSR: BUSFAULTPENDED Position */ +#define SCB_SHCSR_BUSFAULTPENDED_Msk (1UL << SCB_SHCSR_BUSFAULTPENDED_Pos) /*!< SCB SHCSR: BUSFAULTPENDED Mask */ + +#define SCB_SHCSR_MEMFAULTPENDED_Pos 13U /*!< SCB SHCSR: MEMFAULTPENDED Position */ +#define SCB_SHCSR_MEMFAULTPENDED_Msk (1UL << SCB_SHCSR_MEMFAULTPENDED_Pos) /*!< SCB SHCSR: MEMFAULTPENDED Mask */ + +#define SCB_SHCSR_USGFAULTPENDED_Pos 12U /*!< SCB SHCSR: USGFAULTPENDED Position */ +#define SCB_SHCSR_USGFAULTPENDED_Msk (1UL << SCB_SHCSR_USGFAULTPENDED_Pos) /*!< SCB SHCSR: USGFAULTPENDED Mask */ + +#define SCB_SHCSR_SYSTICKACT_Pos 11U /*!< SCB SHCSR: SYSTICKACT Position */ +#define SCB_SHCSR_SYSTICKACT_Msk (1UL << SCB_SHCSR_SYSTICKACT_Pos) /*!< SCB SHCSR: SYSTICKACT Mask */ + +#define SCB_SHCSR_PENDSVACT_Pos 10U /*!< SCB SHCSR: PENDSVACT Position */ +#define SCB_SHCSR_PENDSVACT_Msk (1UL << SCB_SHCSR_PENDSVACT_Pos) /*!< SCB SHCSR: PENDSVACT Mask */ + +#define SCB_SHCSR_MONITORACT_Pos 8U /*!< SCB SHCSR: MONITORACT Position */ +#define SCB_SHCSR_MONITORACT_Msk (1UL << SCB_SHCSR_MONITORACT_Pos) /*!< SCB SHCSR: MONITORACT Mask */ + +#define SCB_SHCSR_SVCALLACT_Pos 7U /*!< SCB SHCSR: SVCALLACT Position */ +#define SCB_SHCSR_SVCALLACT_Msk (1UL << SCB_SHCSR_SVCALLACT_Pos) /*!< SCB SHCSR: SVCALLACT Mask */ + +#define SCB_SHCSR_USGFAULTACT_Pos 3U /*!< SCB SHCSR: USGFAULTACT Position */ +#define SCB_SHCSR_USGFAULTACT_Msk (1UL << SCB_SHCSR_USGFAULTACT_Pos) /*!< SCB SHCSR: USGFAULTACT Mask */ + +#define SCB_SHCSR_BUSFAULTACT_Pos 1U /*!< SCB SHCSR: BUSFAULTACT Position */ +#define SCB_SHCSR_BUSFAULTACT_Msk (1UL << SCB_SHCSR_BUSFAULTACT_Pos) /*!< SCB SHCSR: BUSFAULTACT Mask */ + +#define SCB_SHCSR_MEMFAULTACT_Pos 0U /*!< SCB SHCSR: MEMFAULTACT Position */ +#define SCB_SHCSR_MEMFAULTACT_Msk (1UL /*<< SCB_SHCSR_MEMFAULTACT_Pos*/) /*!< SCB SHCSR: MEMFAULTACT Mask */ + +/* SCB Configurable Fault Status Register Definitions */ +#define SCB_CFSR_USGFAULTSR_Pos 16U /*!< SCB CFSR: Usage Fault Status Register Position */ +#define SCB_CFSR_USGFAULTSR_Msk (0xFFFFUL << SCB_CFSR_USGFAULTSR_Pos) /*!< SCB CFSR: Usage Fault Status Register Mask */ + +#define SCB_CFSR_BUSFAULTSR_Pos 8U /*!< SCB CFSR: Bus Fault Status Register Position */ +#define SCB_CFSR_BUSFAULTSR_Msk (0xFFUL << SCB_CFSR_BUSFAULTSR_Pos) /*!< SCB CFSR: Bus Fault Status Register Mask */ + +#define SCB_CFSR_MEMFAULTSR_Pos 0U /*!< SCB CFSR: Memory Manage Fault Status Register Position */ +#define SCB_CFSR_MEMFAULTSR_Msk (0xFFUL /*<< SCB_CFSR_MEMFAULTSR_Pos*/) /*!< SCB CFSR: Memory Manage Fault Status Register Mask */ + +/* MemManage Fault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_MMARVALID_Pos (SCB_CFSR_MEMFAULTSR_Pos + 7U) /*!< SCB CFSR (MMFSR): MMARVALID Position */ +#define SCB_CFSR_MMARVALID_Msk (1UL << SCB_CFSR_MMARVALID_Pos) /*!< SCB CFSR (MMFSR): MMARVALID Mask */ + +#define SCB_CFSR_MLSPERR_Pos (SCB_CFSR_MEMFAULTSR_Pos + 5U) /*!< SCB CFSR (MMFSR): MLSPERR Position */ +#define SCB_CFSR_MLSPERR_Msk (1UL << SCB_CFSR_MLSPERR_Pos) /*!< SCB CFSR (MMFSR): MLSPERR Mask */ + +#define SCB_CFSR_MSTKERR_Pos (SCB_CFSR_MEMFAULTSR_Pos + 4U) /*!< SCB CFSR (MMFSR): MSTKERR Position */ +#define SCB_CFSR_MSTKERR_Msk (1UL << SCB_CFSR_MSTKERR_Pos) /*!< SCB CFSR (MMFSR): MSTKERR Mask */ + +#define SCB_CFSR_MUNSTKERR_Pos (SCB_CFSR_MEMFAULTSR_Pos + 3U) /*!< SCB CFSR (MMFSR): MUNSTKERR Position */ +#define SCB_CFSR_MUNSTKERR_Msk (1UL << SCB_CFSR_MUNSTKERR_Pos) /*!< SCB CFSR (MMFSR): MUNSTKERR Mask */ + +#define SCB_CFSR_DACCVIOL_Pos (SCB_CFSR_MEMFAULTSR_Pos + 1U) /*!< SCB CFSR (MMFSR): DACCVIOL Position */ +#define SCB_CFSR_DACCVIOL_Msk (1UL << SCB_CFSR_DACCVIOL_Pos) /*!< SCB CFSR (MMFSR): DACCVIOL Mask */ + +#define SCB_CFSR_IACCVIOL_Pos (SCB_CFSR_MEMFAULTSR_Pos + 0U) /*!< SCB CFSR (MMFSR): IACCVIOL Position */ +#define SCB_CFSR_IACCVIOL_Msk (1UL /*<< SCB_CFSR_IACCVIOL_Pos*/) /*!< SCB CFSR (MMFSR): IACCVIOL Mask */ + +/* BusFault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_BFARVALID_Pos (SCB_CFSR_BUSFAULTSR_Pos + 7U) /*!< SCB CFSR (BFSR): BFARVALID Position */ +#define SCB_CFSR_BFARVALID_Msk (1UL << SCB_CFSR_BFARVALID_Pos) /*!< SCB CFSR (BFSR): BFARVALID Mask */ + +#define SCB_CFSR_LSPERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 5U) /*!< SCB CFSR (BFSR): LSPERR Position */ +#define SCB_CFSR_LSPERR_Msk (1UL << SCB_CFSR_LSPERR_Pos) /*!< SCB CFSR (BFSR): LSPERR Mask */ + +#define SCB_CFSR_STKERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 4U) /*!< SCB CFSR (BFSR): STKERR Position */ +#define SCB_CFSR_STKERR_Msk (1UL << SCB_CFSR_STKERR_Pos) /*!< SCB CFSR (BFSR): STKERR Mask */ + +#define SCB_CFSR_UNSTKERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 3U) /*!< SCB CFSR (BFSR): UNSTKERR Position */ +#define SCB_CFSR_UNSTKERR_Msk (1UL << SCB_CFSR_UNSTKERR_Pos) /*!< SCB CFSR (BFSR): UNSTKERR Mask */ + +#define SCB_CFSR_IMPRECISERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 2U) /*!< SCB CFSR (BFSR): IMPRECISERR Position */ +#define SCB_CFSR_IMPRECISERR_Msk (1UL << SCB_CFSR_IMPRECISERR_Pos) /*!< SCB CFSR (BFSR): IMPRECISERR Mask */ + +#define SCB_CFSR_PRECISERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 1U) /*!< SCB CFSR (BFSR): PRECISERR Position */ +#define SCB_CFSR_PRECISERR_Msk (1UL << SCB_CFSR_PRECISERR_Pos) /*!< SCB CFSR (BFSR): PRECISERR Mask */ + +#define SCB_CFSR_IBUSERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 0U) /*!< SCB CFSR (BFSR): IBUSERR Position */ +#define SCB_CFSR_IBUSERR_Msk (1UL << SCB_CFSR_IBUSERR_Pos) /*!< SCB CFSR (BFSR): IBUSERR Mask */ + +/* UsageFault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_DIVBYZERO_Pos (SCB_CFSR_USGFAULTSR_Pos + 9U) /*!< SCB CFSR (UFSR): DIVBYZERO Position */ +#define SCB_CFSR_DIVBYZERO_Msk (1UL << SCB_CFSR_DIVBYZERO_Pos) /*!< SCB CFSR (UFSR): DIVBYZERO Mask */ + +#define SCB_CFSR_UNALIGNED_Pos (SCB_CFSR_USGFAULTSR_Pos + 8U) /*!< SCB CFSR (UFSR): UNALIGNED Position */ +#define SCB_CFSR_UNALIGNED_Msk (1UL << SCB_CFSR_UNALIGNED_Pos) /*!< SCB CFSR (UFSR): UNALIGNED Mask */ + +#define SCB_CFSR_NOCP_Pos (SCB_CFSR_USGFAULTSR_Pos + 3U) /*!< SCB CFSR (UFSR): NOCP Position */ +#define SCB_CFSR_NOCP_Msk (1UL << SCB_CFSR_NOCP_Pos) /*!< SCB CFSR (UFSR): NOCP Mask */ + +#define SCB_CFSR_INVPC_Pos (SCB_CFSR_USGFAULTSR_Pos + 2U) /*!< SCB CFSR (UFSR): INVPC Position */ +#define SCB_CFSR_INVPC_Msk (1UL << SCB_CFSR_INVPC_Pos) /*!< SCB CFSR (UFSR): INVPC Mask */ + +#define SCB_CFSR_INVSTATE_Pos (SCB_CFSR_USGFAULTSR_Pos + 1U) /*!< SCB CFSR (UFSR): INVSTATE Position */ +#define SCB_CFSR_INVSTATE_Msk (1UL << SCB_CFSR_INVSTATE_Pos) /*!< SCB CFSR (UFSR): INVSTATE Mask */ + +#define SCB_CFSR_UNDEFINSTR_Pos (SCB_CFSR_USGFAULTSR_Pos + 0U) /*!< SCB CFSR (UFSR): UNDEFINSTR Position */ +#define SCB_CFSR_UNDEFINSTR_Msk (1UL << SCB_CFSR_UNDEFINSTR_Pos) /*!< SCB CFSR (UFSR): UNDEFINSTR Mask */ + +/* SCB Hard Fault Status Register Definitions */ +#define SCB_HFSR_DEBUGEVT_Pos 31U /*!< SCB HFSR: DEBUGEVT Position */ +#define SCB_HFSR_DEBUGEVT_Msk (1UL << SCB_HFSR_DEBUGEVT_Pos) /*!< SCB HFSR: DEBUGEVT Mask */ + +#define SCB_HFSR_FORCED_Pos 30U /*!< SCB HFSR: FORCED Position */ +#define SCB_HFSR_FORCED_Msk (1UL << SCB_HFSR_FORCED_Pos) /*!< SCB HFSR: FORCED Mask */ + +#define SCB_HFSR_VECTTBL_Pos 1U /*!< SCB HFSR: VECTTBL Position */ +#define SCB_HFSR_VECTTBL_Msk (1UL << SCB_HFSR_VECTTBL_Pos) /*!< SCB HFSR: VECTTBL Mask */ + +/* SCB Debug Fault Status Register Definitions */ +#define SCB_DFSR_EXTERNAL_Pos 4U /*!< SCB DFSR: EXTERNAL Position */ +#define SCB_DFSR_EXTERNAL_Msk (1UL << SCB_DFSR_EXTERNAL_Pos) /*!< SCB DFSR: EXTERNAL Mask */ + +#define SCB_DFSR_VCATCH_Pos 3U /*!< SCB DFSR: VCATCH Position */ +#define SCB_DFSR_VCATCH_Msk (1UL << SCB_DFSR_VCATCH_Pos) /*!< SCB DFSR: VCATCH Mask */ + +#define SCB_DFSR_DWTTRAP_Pos 2U /*!< SCB DFSR: DWTTRAP Position */ +#define SCB_DFSR_DWTTRAP_Msk (1UL << SCB_DFSR_DWTTRAP_Pos) /*!< SCB DFSR: DWTTRAP Mask */ + +#define SCB_DFSR_BKPT_Pos 1U /*!< SCB DFSR: BKPT Position */ +#define SCB_DFSR_BKPT_Msk (1UL << SCB_DFSR_BKPT_Pos) /*!< SCB DFSR: BKPT Mask */ + +#define SCB_DFSR_HALTED_Pos 0U /*!< SCB DFSR: HALTED Position */ +#define SCB_DFSR_HALTED_Msk (1UL /*<< SCB_DFSR_HALTED_Pos*/) /*!< SCB DFSR: HALTED Mask */ + +/* SCB Cache Level ID Register Definitions */ +#define SCB_CLIDR_LOUU_Pos 27U /*!< SCB CLIDR: LoUU Position */ +#define SCB_CLIDR_LOUU_Msk (7UL << SCB_CLIDR_LOUU_Pos) /*!< SCB CLIDR: LoUU Mask */ + +#define SCB_CLIDR_LOC_Pos 24U /*!< SCB CLIDR: LoC Position */ +#define SCB_CLIDR_LOC_Msk (7UL << SCB_CLIDR_LOC_Pos) /*!< SCB CLIDR: LoC Mask */ + +/* SCB Cache Type Register Definitions */ +#define SCB_CTR_FORMAT_Pos 29U /*!< SCB CTR: Format Position */ +#define SCB_CTR_FORMAT_Msk (7UL << SCB_CTR_FORMAT_Pos) /*!< SCB CTR: Format Mask */ + +#define SCB_CTR_CWG_Pos 24U /*!< SCB CTR: CWG Position */ +#define SCB_CTR_CWG_Msk (0xFUL << SCB_CTR_CWG_Pos) /*!< SCB CTR: CWG Mask */ + +#define SCB_CTR_ERG_Pos 20U /*!< SCB CTR: ERG Position */ +#define SCB_CTR_ERG_Msk (0xFUL << SCB_CTR_ERG_Pos) /*!< SCB CTR: ERG Mask */ + +#define SCB_CTR_DMINLINE_Pos 16U /*!< SCB CTR: DminLine Position */ +#define SCB_CTR_DMINLINE_Msk (0xFUL << SCB_CTR_DMINLINE_Pos) /*!< SCB CTR: DminLine Mask */ + +#define SCB_CTR_IMINLINE_Pos 0U /*!< SCB CTR: ImInLine Position */ +#define SCB_CTR_IMINLINE_Msk (0xFUL /*<< SCB_CTR_IMINLINE_Pos*/) /*!< SCB CTR: ImInLine Mask */ + +/* SCB Cache Size ID Register Definitions */ +#define SCB_CCSIDR_WT_Pos 31U /*!< SCB CCSIDR: WT Position */ +#define SCB_CCSIDR_WT_Msk (1UL << SCB_CCSIDR_WT_Pos) /*!< SCB CCSIDR: WT Mask */ + +#define SCB_CCSIDR_WB_Pos 30U /*!< SCB CCSIDR: WB Position */ +#define SCB_CCSIDR_WB_Msk (1UL << SCB_CCSIDR_WB_Pos) /*!< SCB CCSIDR: WB Mask */ + +#define SCB_CCSIDR_RA_Pos 29U /*!< SCB CCSIDR: RA Position */ +#define SCB_CCSIDR_RA_Msk (1UL << SCB_CCSIDR_RA_Pos) /*!< SCB CCSIDR: RA Mask */ + +#define SCB_CCSIDR_WA_Pos 28U /*!< SCB CCSIDR: WA Position */ +#define SCB_CCSIDR_WA_Msk (1UL << SCB_CCSIDR_WA_Pos) /*!< SCB CCSIDR: WA Mask */ + +#define SCB_CCSIDR_NUMSETS_Pos 13U /*!< SCB CCSIDR: NumSets Position */ +#define SCB_CCSIDR_NUMSETS_Msk (0x7FFFUL << SCB_CCSIDR_NUMSETS_Pos) /*!< SCB CCSIDR: NumSets Mask */ + +#define SCB_CCSIDR_ASSOCIATIVITY_Pos 3U /*!< SCB CCSIDR: Associativity Position */ +#define SCB_CCSIDR_ASSOCIATIVITY_Msk (0x3FFUL << SCB_CCSIDR_ASSOCIATIVITY_Pos) /*!< SCB CCSIDR: Associativity Mask */ + +#define SCB_CCSIDR_LINESIZE_Pos 0U /*!< SCB CCSIDR: LineSize Position */ +#define SCB_CCSIDR_LINESIZE_Msk (7UL /*<< SCB_CCSIDR_LINESIZE_Pos*/) /*!< SCB CCSIDR: LineSize Mask */ + +/* SCB Cache Size Selection Register Definitions */ +#define SCB_CSSELR_LEVEL_Pos 1U /*!< SCB CSSELR: Level Position */ +#define SCB_CSSELR_LEVEL_Msk (7UL << SCB_CSSELR_LEVEL_Pos) /*!< SCB CSSELR: Level Mask */ + +#define SCB_CSSELR_IND_Pos 0U /*!< SCB CSSELR: InD Position */ +#define SCB_CSSELR_IND_Msk (1UL /*<< SCB_CSSELR_IND_Pos*/) /*!< SCB CSSELR: InD Mask */ + +/* SCB Software Triggered Interrupt Register Definitions */ +#define SCB_STIR_INTID_Pos 0U /*!< SCB STIR: INTID Position */ +#define SCB_STIR_INTID_Msk (0x1FFUL /*<< SCB_STIR_INTID_Pos*/) /*!< SCB STIR: INTID Mask */ + +/* SCB D-Cache Invalidate by Set-way Register Definitions */ +#define SCB_DCISW_WAY_Pos 30U /*!< SCB DCISW: Way Position */ +#define SCB_DCISW_WAY_Msk (3UL << SCB_DCISW_WAY_Pos) /*!< SCB DCISW: Way Mask */ + +#define SCB_DCISW_SET_Pos 5U /*!< SCB DCISW: Set Position */ +#define SCB_DCISW_SET_Msk (0x1FFUL << SCB_DCISW_SET_Pos) /*!< SCB DCISW: Set Mask */ + +/* SCB D-Cache Clean by Set-way Register Definitions */ +#define SCB_DCCSW_WAY_Pos 30U /*!< SCB DCCSW: Way Position */ +#define SCB_DCCSW_WAY_Msk (3UL << SCB_DCCSW_WAY_Pos) /*!< SCB DCCSW: Way Mask */ + +#define SCB_DCCSW_SET_Pos 5U /*!< SCB DCCSW: Set Position */ +#define SCB_DCCSW_SET_Msk (0x1FFUL << SCB_DCCSW_SET_Pos) /*!< SCB DCCSW: Set Mask */ + +/* SCB D-Cache Clean and Invalidate by Set-way Register Definitions */ +#define SCB_DCCISW_WAY_Pos 30U /*!< SCB DCCISW: Way Position */ +#define SCB_DCCISW_WAY_Msk (3UL << SCB_DCCISW_WAY_Pos) /*!< SCB DCCISW: Way Mask */ + +#define SCB_DCCISW_SET_Pos 5U /*!< SCB DCCISW: Set Position */ +#define SCB_DCCISW_SET_Msk (0x1FFUL << SCB_DCCISW_SET_Pos) /*!< SCB DCCISW: Set Mask */ + +/* Instruction Tightly-Coupled Memory Control Register Definitions */ +#define SCB_ITCMCR_SZ_Pos 3U /*!< SCB ITCMCR: SZ Position */ +#define SCB_ITCMCR_SZ_Msk (0xFUL << SCB_ITCMCR_SZ_Pos) /*!< SCB ITCMCR: SZ Mask */ + +#define SCB_ITCMCR_RETEN_Pos 2U /*!< SCB ITCMCR: RETEN Position */ +#define SCB_ITCMCR_RETEN_Msk (1UL << SCB_ITCMCR_RETEN_Pos) /*!< SCB ITCMCR: RETEN Mask */ + +#define SCB_ITCMCR_RMW_Pos 1U /*!< SCB ITCMCR: RMW Position */ +#define SCB_ITCMCR_RMW_Msk (1UL << SCB_ITCMCR_RMW_Pos) /*!< SCB ITCMCR: RMW Mask */ + +#define SCB_ITCMCR_EN_Pos 0U /*!< SCB ITCMCR: EN Position */ +#define SCB_ITCMCR_EN_Msk (1UL /*<< SCB_ITCMCR_EN_Pos*/) /*!< SCB ITCMCR: EN Mask */ + +/* Data Tightly-Coupled Memory Control Register Definitions */ +#define SCB_DTCMCR_SZ_Pos 3U /*!< SCB DTCMCR: SZ Position */ +#define SCB_DTCMCR_SZ_Msk (0xFUL << SCB_DTCMCR_SZ_Pos) /*!< SCB DTCMCR: SZ Mask */ + +#define SCB_DTCMCR_RETEN_Pos 2U /*!< SCB DTCMCR: RETEN Position */ +#define SCB_DTCMCR_RETEN_Msk (1UL << SCB_DTCMCR_RETEN_Pos) /*!< SCB DTCMCR: RETEN Mask */ + +#define SCB_DTCMCR_RMW_Pos 1U /*!< SCB DTCMCR: RMW Position */ +#define SCB_DTCMCR_RMW_Msk (1UL << SCB_DTCMCR_RMW_Pos) /*!< SCB DTCMCR: RMW Mask */ + +#define SCB_DTCMCR_EN_Pos 0U /*!< SCB DTCMCR: EN Position */ +#define SCB_DTCMCR_EN_Msk (1UL /*<< SCB_DTCMCR_EN_Pos*/) /*!< SCB DTCMCR: EN Mask */ + +/* AHBP Control Register Definitions */ +#define SCB_AHBPCR_SZ_Pos 1U /*!< SCB AHBPCR: SZ Position */ +#define SCB_AHBPCR_SZ_Msk (7UL << SCB_AHBPCR_SZ_Pos) /*!< SCB AHBPCR: SZ Mask */ + +#define SCB_AHBPCR_EN_Pos 0U /*!< SCB AHBPCR: EN Position */ +#define SCB_AHBPCR_EN_Msk (1UL /*<< SCB_AHBPCR_EN_Pos*/) /*!< SCB AHBPCR: EN Mask */ + +/* L1 Cache Control Register Definitions */ +#define SCB_CACR_FORCEWT_Pos 2U /*!< SCB CACR: FORCEWT Position */ +#define SCB_CACR_FORCEWT_Msk (1UL << SCB_CACR_FORCEWT_Pos) /*!< SCB CACR: FORCEWT Mask */ + +#define SCB_CACR_ECCEN_Pos 1U /*!< \deprecated SCB CACR: ECCEN Position */ +#define SCB_CACR_ECCEN_Msk (1UL << SCB_CACR_ECCEN_Pos) /*!< \deprecated SCB CACR: ECCEN Mask */ + +#define SCB_CACR_ECCDIS_Pos 1U /*!< SCB CACR: ECCDIS Position */ +#define SCB_CACR_ECCDIS_Msk (1UL << SCB_CACR_ECCDIS_Pos) /*!< SCB CACR: ECCDIS Mask */ + +#define SCB_CACR_SIWT_Pos 0U /*!< SCB CACR: SIWT Position */ +#define SCB_CACR_SIWT_Msk (1UL /*<< SCB_CACR_SIWT_Pos*/) /*!< SCB CACR: SIWT Mask */ + +/* AHBS Control Register Definitions */ +#define SCB_AHBSCR_INITCOUNT_Pos 11U /*!< SCB AHBSCR: INITCOUNT Position */ +#define SCB_AHBSCR_INITCOUNT_Msk (0x1FUL << SCB_AHBSCR_INITCOUNT_Pos) /*!< SCB AHBSCR: INITCOUNT Mask */ + +#define SCB_AHBSCR_TPRI_Pos 2U /*!< SCB AHBSCR: TPRI Position */ +#define SCB_AHBSCR_TPRI_Msk (0x1FFUL << SCB_AHBSCR_TPRI_Pos) /*!< SCB AHBSCR: TPRI Mask */ + +#define SCB_AHBSCR_CTL_Pos 0U /*!< SCB AHBSCR: CTL Position*/ +#define SCB_AHBSCR_CTL_Msk (3UL /*<< SCB_AHBSCR_CTL_Pos*/) /*!< SCB AHBSCR: CTL Mask */ + +/* Auxiliary Bus Fault Status Register Definitions */ +#define SCB_ABFSR_AXIMTYPE_Pos 8U /*!< SCB ABFSR: AXIMTYPE Position*/ +#define SCB_ABFSR_AXIMTYPE_Msk (3UL << SCB_ABFSR_AXIMTYPE_Pos) /*!< SCB ABFSR: AXIMTYPE Mask */ + +#define SCB_ABFSR_EPPB_Pos 4U /*!< SCB ABFSR: EPPB Position*/ +#define SCB_ABFSR_EPPB_Msk (1UL << SCB_ABFSR_EPPB_Pos) /*!< SCB ABFSR: EPPB Mask */ + +#define SCB_ABFSR_AXIM_Pos 3U /*!< SCB ABFSR: AXIM Position*/ +#define SCB_ABFSR_AXIM_Msk (1UL << SCB_ABFSR_AXIM_Pos) /*!< SCB ABFSR: AXIM Mask */ + +#define SCB_ABFSR_AHBP_Pos 2U /*!< SCB ABFSR: AHBP Position*/ +#define SCB_ABFSR_AHBP_Msk (1UL << SCB_ABFSR_AHBP_Pos) /*!< SCB ABFSR: AHBP Mask */ + +#define SCB_ABFSR_DTCM_Pos 1U /*!< SCB ABFSR: DTCM Position*/ +#define SCB_ABFSR_DTCM_Msk (1UL << SCB_ABFSR_DTCM_Pos) /*!< SCB ABFSR: DTCM Mask */ + +#define SCB_ABFSR_ITCM_Pos 0U /*!< SCB ABFSR: ITCM Position*/ +#define SCB_ABFSR_ITCM_Msk (1UL /*<< SCB_ABFSR_ITCM_Pos*/) /*!< SCB ABFSR: ITCM Mask */ + +/*@} end of group CMSIS_SCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SCnSCB System Controls not in SCB (SCnSCB) + \brief Type definitions for the System Control and ID Register not in the SCB + @{ + */ + +/** + \brief Structure type to access the System Control and ID Register not in the SCB. + */ +typedef struct +{ + uint32_t RESERVED0[1U]; + __IM uint32_t ICTR; /*!< Offset: 0x004 (R/ ) Interrupt Controller Type Register */ + __IOM uint32_t ACTLR; /*!< Offset: 0x008 (R/W) Auxiliary Control Register */ +} SCnSCB_Type; + +/* Interrupt Controller Type Register Definitions */ +#define SCnSCB_ICTR_INTLINESNUM_Pos 0U /*!< ICTR: INTLINESNUM Position */ +#define SCnSCB_ICTR_INTLINESNUM_Msk (0xFUL /*<< SCnSCB_ICTR_INTLINESNUM_Pos*/) /*!< ICTR: INTLINESNUM Mask */ + +/* Auxiliary Control Register Definitions */ +#define SCnSCB_ACTLR_DISDYNADD_Pos 26U /*!< ACTLR: DISDYNADD Position */ +#define SCnSCB_ACTLR_DISDYNADD_Msk (1UL << SCnSCB_ACTLR_DISDYNADD_Pos) /*!< ACTLR: DISDYNADD Mask */ + +#define SCnSCB_ACTLR_DISISSCH1_Pos 21U /*!< ACTLR: DISISSCH1 Position */ +#define SCnSCB_ACTLR_DISISSCH1_Msk (0x1FUL << SCnSCB_ACTLR_DISISSCH1_Pos) /*!< ACTLR: DISISSCH1 Mask */ + +#define SCnSCB_ACTLR_DISDI_Pos 16U /*!< ACTLR: DISDI Position */ +#define SCnSCB_ACTLR_DISDI_Msk (0x1FUL << SCnSCB_ACTLR_DISDI_Pos) /*!< ACTLR: DISDI Mask */ + +#define SCnSCB_ACTLR_DISCRITAXIRUR_Pos 15U /*!< ACTLR: DISCRITAXIRUR Position */ +#define SCnSCB_ACTLR_DISCRITAXIRUR_Msk (1UL << SCnSCB_ACTLR_DISCRITAXIRUR_Pos) /*!< ACTLR: DISCRITAXIRUR Mask */ + +#define SCnSCB_ACTLR_DISBTACALLOC_Pos 14U /*!< ACTLR: DISBTACALLOC Position */ +#define SCnSCB_ACTLR_DISBTACALLOC_Msk (1UL << SCnSCB_ACTLR_DISBTACALLOC_Pos) /*!< ACTLR: DISBTACALLOC Mask */ + +#define SCnSCB_ACTLR_DISBTACREAD_Pos 13U /*!< ACTLR: DISBTACREAD Position */ +#define SCnSCB_ACTLR_DISBTACREAD_Msk (1UL << SCnSCB_ACTLR_DISBTACREAD_Pos) /*!< ACTLR: DISBTACREAD Mask */ + +#define SCnSCB_ACTLR_DISITMATBFLUSH_Pos 12U /*!< ACTLR: DISITMATBFLUSH Position */ +#define SCnSCB_ACTLR_DISITMATBFLUSH_Msk (1UL << SCnSCB_ACTLR_DISITMATBFLUSH_Pos) /*!< ACTLR: DISITMATBFLUSH Mask */ + +#define SCnSCB_ACTLR_DISRAMODE_Pos 11U /*!< ACTLR: DISRAMODE Position */ +#define SCnSCB_ACTLR_DISRAMODE_Msk (1UL << SCnSCB_ACTLR_DISRAMODE_Pos) /*!< ACTLR: DISRAMODE Mask */ + +#define SCnSCB_ACTLR_FPEXCODIS_Pos 10U /*!< ACTLR: FPEXCODIS Position */ +#define SCnSCB_ACTLR_FPEXCODIS_Msk (1UL << SCnSCB_ACTLR_FPEXCODIS_Pos) /*!< ACTLR: FPEXCODIS Mask */ + +#define SCnSCB_ACTLR_DISFOLD_Pos 2U /*!< ACTLR: DISFOLD Position */ +#define SCnSCB_ACTLR_DISFOLD_Msk (1UL << SCnSCB_ACTLR_DISFOLD_Pos) /*!< ACTLR: DISFOLD Mask */ + +#define SCnSCB_ACTLR_DISMCYCINT_Pos 0U /*!< ACTLR: DISMCYCINT Position */ +#define SCnSCB_ACTLR_DISMCYCINT_Msk (1UL /*<< SCnSCB_ACTLR_DISMCYCINT_Pos*/) /*!< ACTLR: DISMCYCINT Mask */ + +/*@} end of group CMSIS_SCnotSCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SysTick System Tick Timer (SysTick) + \brief Type definitions for the System Timer Registers. + @{ + */ + +/** + \brief Structure type to access the System Timer (SysTick). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SysTick Control and Status Register */ + __IOM uint32_t LOAD; /*!< Offset: 0x004 (R/W) SysTick Reload Value Register */ + __IOM uint32_t VAL; /*!< Offset: 0x008 (R/W) SysTick Current Value Register */ + __IM uint32_t CALIB; /*!< Offset: 0x00C (R/ ) SysTick Calibration Register */ +} SysTick_Type; + +/* SysTick Control / Status Register Definitions */ +#define SysTick_CTRL_COUNTFLAG_Pos 16U /*!< SysTick CTRL: COUNTFLAG Position */ +#define SysTick_CTRL_COUNTFLAG_Msk (1UL << SysTick_CTRL_COUNTFLAG_Pos) /*!< SysTick CTRL: COUNTFLAG Mask */ + +#define SysTick_CTRL_CLKSOURCE_Pos 2U /*!< SysTick CTRL: CLKSOURCE Position */ +#define SysTick_CTRL_CLKSOURCE_Msk (1UL << SysTick_CTRL_CLKSOURCE_Pos) /*!< SysTick CTRL: CLKSOURCE Mask */ + +#define SysTick_CTRL_TICKINT_Pos 1U /*!< SysTick CTRL: TICKINT Position */ +#define SysTick_CTRL_TICKINT_Msk (1UL << SysTick_CTRL_TICKINT_Pos) /*!< SysTick CTRL: TICKINT Mask */ + +#define SysTick_CTRL_ENABLE_Pos 0U /*!< SysTick CTRL: ENABLE Position */ +#define SysTick_CTRL_ENABLE_Msk (1UL /*<< SysTick_CTRL_ENABLE_Pos*/) /*!< SysTick CTRL: ENABLE Mask */ + +/* SysTick Reload Register Definitions */ +#define SysTick_LOAD_RELOAD_Pos 0U /*!< SysTick LOAD: RELOAD Position */ +#define SysTick_LOAD_RELOAD_Msk (0xFFFFFFUL /*<< SysTick_LOAD_RELOAD_Pos*/) /*!< SysTick LOAD: RELOAD Mask */ + +/* SysTick Current Register Definitions */ +#define SysTick_VAL_CURRENT_Pos 0U /*!< SysTick VAL: CURRENT Position */ +#define SysTick_VAL_CURRENT_Msk (0xFFFFFFUL /*<< SysTick_VAL_CURRENT_Pos*/) /*!< SysTick VAL: CURRENT Mask */ + +/* SysTick Calibration Register Definitions */ +#define SysTick_CALIB_NOREF_Pos 31U /*!< SysTick CALIB: NOREF Position */ +#define SysTick_CALIB_NOREF_Msk (1UL << SysTick_CALIB_NOREF_Pos) /*!< SysTick CALIB: NOREF Mask */ + +#define SysTick_CALIB_SKEW_Pos 30U /*!< SysTick CALIB: SKEW Position */ +#define SysTick_CALIB_SKEW_Msk (1UL << SysTick_CALIB_SKEW_Pos) /*!< SysTick CALIB: SKEW Mask */ + +#define SysTick_CALIB_TENMS_Pos 0U /*!< SysTick CALIB: TENMS Position */ +#define SysTick_CALIB_TENMS_Msk (0xFFFFFFUL /*<< SysTick_CALIB_TENMS_Pos*/) /*!< SysTick CALIB: TENMS Mask */ + +/*@} end of group CMSIS_SysTick */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_ITM Instrumentation Trace Macrocell (ITM) + \brief Type definitions for the Instrumentation Trace Macrocell (ITM) + @{ + */ + +/** + \brief Structure type to access the Instrumentation Trace Macrocell Register (ITM). + */ +typedef struct +{ + __OM union + { + __OM uint8_t u8; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 8-bit */ + __OM uint16_t u16; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 16-bit */ + __OM uint32_t u32; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 32-bit */ + } PORT [32U]; /*!< Offset: 0x000 ( /W) ITM Stimulus Port Registers */ + uint32_t RESERVED0[864U]; + __IOM uint32_t TER; /*!< Offset: 0xE00 (R/W) ITM Trace Enable Register */ + uint32_t RESERVED1[15U]; + __IOM uint32_t TPR; /*!< Offset: 0xE40 (R/W) ITM Trace Privilege Register */ + uint32_t RESERVED2[15U]; + __IOM uint32_t TCR; /*!< Offset: 0xE80 (R/W) ITM Trace Control Register */ + uint32_t RESERVED3[32U]; + uint32_t RESERVED4[43U]; + __OM uint32_t LAR; /*!< Offset: 0xFB0 ( /W) ITM Lock Access Register */ + __IM uint32_t LSR; /*!< Offset: 0xFB4 (R/ ) ITM Lock Status Register */ + uint32_t RESERVED5[6U]; + __IM uint32_t PID4; /*!< Offset: 0xFD0 (R/ ) ITM Peripheral Identification Register #4 */ + __IM uint32_t PID5; /*!< Offset: 0xFD4 (R/ ) ITM Peripheral Identification Register #5 */ + __IM uint32_t PID6; /*!< Offset: 0xFD8 (R/ ) ITM Peripheral Identification Register #6 */ + __IM uint32_t PID7; /*!< Offset: 0xFDC (R/ ) ITM Peripheral Identification Register #7 */ + __IM uint32_t PID0; /*!< Offset: 0xFE0 (R/ ) ITM Peripheral Identification Register #0 */ + __IM uint32_t PID1; /*!< Offset: 0xFE4 (R/ ) ITM Peripheral Identification Register #1 */ + __IM uint32_t PID2; /*!< Offset: 0xFE8 (R/ ) ITM Peripheral Identification Register #2 */ + __IM uint32_t PID3; /*!< Offset: 0xFEC (R/ ) ITM Peripheral Identification Register #3 */ + __IM uint32_t CID0; /*!< Offset: 0xFF0 (R/ ) ITM Component Identification Register #0 */ + __IM uint32_t CID1; /*!< Offset: 0xFF4 (R/ ) ITM Component Identification Register #1 */ + __IM uint32_t CID2; /*!< Offset: 0xFF8 (R/ ) ITM Component Identification Register #2 */ + __IM uint32_t CID3; /*!< Offset: 0xFFC (R/ ) ITM Component Identification Register #3 */ +} ITM_Type; + +/* ITM Trace Privilege Register Definitions */ +#define ITM_TPR_PRIVMASK_Pos 0U /*!< ITM TPR: PRIVMASK Position */ +#define ITM_TPR_PRIVMASK_Msk (0xFFFFFFFFUL /*<< ITM_TPR_PRIVMASK_Pos*/) /*!< ITM TPR: PRIVMASK Mask */ + +/* ITM Trace Control Register Definitions */ +#define ITM_TCR_BUSY_Pos 23U /*!< ITM TCR: BUSY Position */ +#define ITM_TCR_BUSY_Msk (1UL << ITM_TCR_BUSY_Pos) /*!< ITM TCR: BUSY Mask */ + +#define ITM_TCR_TraceBusID_Pos 16U /*!< ITM TCR: ATBID Position */ +#define ITM_TCR_TraceBusID_Msk (0x7FUL << ITM_TCR_TraceBusID_Pos) /*!< ITM TCR: ATBID Mask */ + +#define ITM_TCR_GTSFREQ_Pos 10U /*!< ITM TCR: Global timestamp frequency Position */ +#define ITM_TCR_GTSFREQ_Msk (3UL << ITM_TCR_GTSFREQ_Pos) /*!< ITM TCR: Global timestamp frequency Mask */ + +#define ITM_TCR_TSPrescale_Pos 8U /*!< ITM TCR: TSPrescale Position */ +#define ITM_TCR_TSPrescale_Msk (3UL << ITM_TCR_TSPrescale_Pos) /*!< ITM TCR: TSPrescale Mask */ + +#define ITM_TCR_SWOENA_Pos 4U /*!< ITM TCR: SWOENA Position */ +#define ITM_TCR_SWOENA_Msk (1UL << ITM_TCR_SWOENA_Pos) /*!< ITM TCR: SWOENA Mask */ + +#define ITM_TCR_DWTENA_Pos 3U /*!< ITM TCR: DWTENA Position */ +#define ITM_TCR_DWTENA_Msk (1UL << ITM_TCR_DWTENA_Pos) /*!< ITM TCR: DWTENA Mask */ + +#define ITM_TCR_SYNCENA_Pos 2U /*!< ITM TCR: SYNCENA Position */ +#define ITM_TCR_SYNCENA_Msk (1UL << ITM_TCR_SYNCENA_Pos) /*!< ITM TCR: SYNCENA Mask */ + +#define ITM_TCR_TSENA_Pos 1U /*!< ITM TCR: TSENA Position */ +#define ITM_TCR_TSENA_Msk (1UL << ITM_TCR_TSENA_Pos) /*!< ITM TCR: TSENA Mask */ + +#define ITM_TCR_ITMENA_Pos 0U /*!< ITM TCR: ITM Enable bit Position */ +#define ITM_TCR_ITMENA_Msk (1UL /*<< ITM_TCR_ITMENA_Pos*/) /*!< ITM TCR: ITM Enable bit Mask */ + +/* ITM Lock Status Register Definitions */ +#define ITM_LSR_ByteAcc_Pos 2U /*!< ITM LSR: ByteAcc Position */ +#define ITM_LSR_ByteAcc_Msk (1UL << ITM_LSR_ByteAcc_Pos) /*!< ITM LSR: ByteAcc Mask */ + +#define ITM_LSR_Access_Pos 1U /*!< ITM LSR: Access Position */ +#define ITM_LSR_Access_Msk (1UL << ITM_LSR_Access_Pos) /*!< ITM LSR: Access Mask */ + +#define ITM_LSR_Present_Pos 0U /*!< ITM LSR: Present Position */ +#define ITM_LSR_Present_Msk (1UL /*<< ITM_LSR_Present_Pos*/) /*!< ITM LSR: Present Mask */ + +/*@}*/ /* end of group CMSIS_ITM */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_DWT Data Watchpoint and Trace (DWT) + \brief Type definitions for the Data Watchpoint and Trace (DWT) + @{ + */ + +/** + \brief Structure type to access the Data Watchpoint and Trace Register (DWT). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) Control Register */ + __IOM uint32_t CYCCNT; /*!< Offset: 0x004 (R/W) Cycle Count Register */ + __IOM uint32_t CPICNT; /*!< Offset: 0x008 (R/W) CPI Count Register */ + __IOM uint32_t EXCCNT; /*!< Offset: 0x00C (R/W) Exception Overhead Count Register */ + __IOM uint32_t SLEEPCNT; /*!< Offset: 0x010 (R/W) Sleep Count Register */ + __IOM uint32_t LSUCNT; /*!< Offset: 0x014 (R/W) LSU Count Register */ + __IOM uint32_t FOLDCNT; /*!< Offset: 0x018 (R/W) Folded-instruction Count Register */ + __IM uint32_t PCSR; /*!< Offset: 0x01C (R/ ) Program Counter Sample Register */ + __IOM uint32_t COMP0; /*!< Offset: 0x020 (R/W) Comparator Register 0 */ + __IOM uint32_t MASK0; /*!< Offset: 0x024 (R/W) Mask Register 0 */ + __IOM uint32_t FUNCTION0; /*!< Offset: 0x028 (R/W) Function Register 0 */ + uint32_t RESERVED0[1U]; + __IOM uint32_t COMP1; /*!< Offset: 0x030 (R/W) Comparator Register 1 */ + __IOM uint32_t MASK1; /*!< Offset: 0x034 (R/W) Mask Register 1 */ + __IOM uint32_t FUNCTION1; /*!< Offset: 0x038 (R/W) Function Register 1 */ + uint32_t RESERVED1[1U]; + __IOM uint32_t COMP2; /*!< Offset: 0x040 (R/W) Comparator Register 2 */ + __IOM uint32_t MASK2; /*!< Offset: 0x044 (R/W) Mask Register 2 */ + __IOM uint32_t FUNCTION2; /*!< Offset: 0x048 (R/W) Function Register 2 */ + uint32_t RESERVED2[1U]; + __IOM uint32_t COMP3; /*!< Offset: 0x050 (R/W) Comparator Register 3 */ + __IOM uint32_t MASK3; /*!< Offset: 0x054 (R/W) Mask Register 3 */ + __IOM uint32_t FUNCTION3; /*!< Offset: 0x058 (R/W) Function Register 3 */ + uint32_t RESERVED3[981U]; + __OM uint32_t LAR; /*!< Offset: 0xFB0 ( W) Lock Access Register */ + __IM uint32_t LSR; /*!< Offset: 0xFB4 (R ) Lock Status Register */ +} DWT_Type; + +/* DWT Control Register Definitions */ +#define DWT_CTRL_NUMCOMP_Pos 28U /*!< DWT CTRL: NUMCOMP Position */ +#define DWT_CTRL_NUMCOMP_Msk (0xFUL << DWT_CTRL_NUMCOMP_Pos) /*!< DWT CTRL: NUMCOMP Mask */ + +#define DWT_CTRL_NOTRCPKT_Pos 27U /*!< DWT CTRL: NOTRCPKT Position */ +#define DWT_CTRL_NOTRCPKT_Msk (0x1UL << DWT_CTRL_NOTRCPKT_Pos) /*!< DWT CTRL: NOTRCPKT Mask */ + +#define DWT_CTRL_NOEXTTRIG_Pos 26U /*!< DWT CTRL: NOEXTTRIG Position */ +#define DWT_CTRL_NOEXTTRIG_Msk (0x1UL << DWT_CTRL_NOEXTTRIG_Pos) /*!< DWT CTRL: NOEXTTRIG Mask */ + +#define DWT_CTRL_NOCYCCNT_Pos 25U /*!< DWT CTRL: NOCYCCNT Position */ +#define DWT_CTRL_NOCYCCNT_Msk (0x1UL << DWT_CTRL_NOCYCCNT_Pos) /*!< DWT CTRL: NOCYCCNT Mask */ + +#define DWT_CTRL_NOPRFCNT_Pos 24U /*!< DWT CTRL: NOPRFCNT Position */ +#define DWT_CTRL_NOPRFCNT_Msk (0x1UL << DWT_CTRL_NOPRFCNT_Pos) /*!< DWT CTRL: NOPRFCNT Mask */ + +#define DWT_CTRL_CYCEVTENA_Pos 22U /*!< DWT CTRL: CYCEVTENA Position */ +#define DWT_CTRL_CYCEVTENA_Msk (0x1UL << DWT_CTRL_CYCEVTENA_Pos) /*!< DWT CTRL: CYCEVTENA Mask */ + +#define DWT_CTRL_FOLDEVTENA_Pos 21U /*!< DWT CTRL: FOLDEVTENA Position */ +#define DWT_CTRL_FOLDEVTENA_Msk (0x1UL << DWT_CTRL_FOLDEVTENA_Pos) /*!< DWT CTRL: FOLDEVTENA Mask */ + +#define DWT_CTRL_LSUEVTENA_Pos 20U /*!< DWT CTRL: LSUEVTENA Position */ +#define DWT_CTRL_LSUEVTENA_Msk (0x1UL << DWT_CTRL_LSUEVTENA_Pos) /*!< DWT CTRL: LSUEVTENA Mask */ + +#define DWT_CTRL_SLEEPEVTENA_Pos 19U /*!< DWT CTRL: SLEEPEVTENA Position */ +#define DWT_CTRL_SLEEPEVTENA_Msk (0x1UL << DWT_CTRL_SLEEPEVTENA_Pos) /*!< DWT CTRL: SLEEPEVTENA Mask */ + +#define DWT_CTRL_EXCEVTENA_Pos 18U /*!< DWT CTRL: EXCEVTENA Position */ +#define DWT_CTRL_EXCEVTENA_Msk (0x1UL << DWT_CTRL_EXCEVTENA_Pos) /*!< DWT CTRL: EXCEVTENA Mask */ + +#define DWT_CTRL_CPIEVTENA_Pos 17U /*!< DWT CTRL: CPIEVTENA Position */ +#define DWT_CTRL_CPIEVTENA_Msk (0x1UL << DWT_CTRL_CPIEVTENA_Pos) /*!< DWT CTRL: CPIEVTENA Mask */ + +#define DWT_CTRL_EXCTRCENA_Pos 16U /*!< DWT CTRL: EXCTRCENA Position */ +#define DWT_CTRL_EXCTRCENA_Msk (0x1UL << DWT_CTRL_EXCTRCENA_Pos) /*!< DWT CTRL: EXCTRCENA Mask */ + +#define DWT_CTRL_PCSAMPLENA_Pos 12U /*!< DWT CTRL: PCSAMPLENA Position */ +#define DWT_CTRL_PCSAMPLENA_Msk (0x1UL << DWT_CTRL_PCSAMPLENA_Pos) /*!< DWT CTRL: PCSAMPLENA Mask */ + +#define DWT_CTRL_SYNCTAP_Pos 10U /*!< DWT CTRL: SYNCTAP Position */ +#define DWT_CTRL_SYNCTAP_Msk (0x3UL << DWT_CTRL_SYNCTAP_Pos) /*!< DWT CTRL: SYNCTAP Mask */ + +#define DWT_CTRL_CYCTAP_Pos 9U /*!< DWT CTRL: CYCTAP Position */ +#define DWT_CTRL_CYCTAP_Msk (0x1UL << DWT_CTRL_CYCTAP_Pos) /*!< DWT CTRL: CYCTAP Mask */ + +#define DWT_CTRL_POSTINIT_Pos 5U /*!< DWT CTRL: POSTINIT Position */ +#define DWT_CTRL_POSTINIT_Msk (0xFUL << DWT_CTRL_POSTINIT_Pos) /*!< DWT CTRL: POSTINIT Mask */ + +#define DWT_CTRL_POSTPRESET_Pos 1U /*!< DWT CTRL: POSTPRESET Position */ +#define DWT_CTRL_POSTPRESET_Msk (0xFUL << DWT_CTRL_POSTPRESET_Pos) /*!< DWT CTRL: POSTPRESET Mask */ + +#define DWT_CTRL_CYCCNTENA_Pos 0U /*!< DWT CTRL: CYCCNTENA Position */ +#define DWT_CTRL_CYCCNTENA_Msk (0x1UL /*<< DWT_CTRL_CYCCNTENA_Pos*/) /*!< DWT CTRL: CYCCNTENA Mask */ + +/* DWT CPI Count Register Definitions */ +#define DWT_CPICNT_CPICNT_Pos 0U /*!< DWT CPICNT: CPICNT Position */ +#define DWT_CPICNT_CPICNT_Msk (0xFFUL /*<< DWT_CPICNT_CPICNT_Pos*/) /*!< DWT CPICNT: CPICNT Mask */ + +/* DWT Exception Overhead Count Register Definitions */ +#define DWT_EXCCNT_EXCCNT_Pos 0U /*!< DWT EXCCNT: EXCCNT Position */ +#define DWT_EXCCNT_EXCCNT_Msk (0xFFUL /*<< DWT_EXCCNT_EXCCNT_Pos*/) /*!< DWT EXCCNT: EXCCNT Mask */ + +/* DWT Sleep Count Register Definitions */ +#define DWT_SLEEPCNT_SLEEPCNT_Pos 0U /*!< DWT SLEEPCNT: SLEEPCNT Position */ +#define DWT_SLEEPCNT_SLEEPCNT_Msk (0xFFUL /*<< DWT_SLEEPCNT_SLEEPCNT_Pos*/) /*!< DWT SLEEPCNT: SLEEPCNT Mask */ + +/* DWT LSU Count Register Definitions */ +#define DWT_LSUCNT_LSUCNT_Pos 0U /*!< DWT LSUCNT: LSUCNT Position */ +#define DWT_LSUCNT_LSUCNT_Msk (0xFFUL /*<< DWT_LSUCNT_LSUCNT_Pos*/) /*!< DWT LSUCNT: LSUCNT Mask */ + +/* DWT Folded-instruction Count Register Definitions */ +#define DWT_FOLDCNT_FOLDCNT_Pos 0U /*!< DWT FOLDCNT: FOLDCNT Position */ +#define DWT_FOLDCNT_FOLDCNT_Msk (0xFFUL /*<< DWT_FOLDCNT_FOLDCNT_Pos*/) /*!< DWT FOLDCNT: FOLDCNT Mask */ + +/* DWT Comparator Mask Register Definitions */ +#define DWT_MASK_MASK_Pos 0U /*!< DWT MASK: MASK Position */ +#define DWT_MASK_MASK_Msk (0x1FUL /*<< DWT_MASK_MASK_Pos*/) /*!< DWT MASK: MASK Mask */ + +/* DWT Comparator Function Register Definitions */ +#define DWT_FUNCTION_MATCHED_Pos 24U /*!< DWT FUNCTION: MATCHED Position */ +#define DWT_FUNCTION_MATCHED_Msk (0x1UL << DWT_FUNCTION_MATCHED_Pos) /*!< DWT FUNCTION: MATCHED Mask */ + +#define DWT_FUNCTION_DATAVADDR1_Pos 16U /*!< DWT FUNCTION: DATAVADDR1 Position */ +#define DWT_FUNCTION_DATAVADDR1_Msk (0xFUL << DWT_FUNCTION_DATAVADDR1_Pos) /*!< DWT FUNCTION: DATAVADDR1 Mask */ + +#define DWT_FUNCTION_DATAVADDR0_Pos 12U /*!< DWT FUNCTION: DATAVADDR0 Position */ +#define DWT_FUNCTION_DATAVADDR0_Msk (0xFUL << DWT_FUNCTION_DATAVADDR0_Pos) /*!< DWT FUNCTION: DATAVADDR0 Mask */ + +#define DWT_FUNCTION_DATAVSIZE_Pos 10U /*!< DWT FUNCTION: DATAVSIZE Position */ +#define DWT_FUNCTION_DATAVSIZE_Msk (0x3UL << DWT_FUNCTION_DATAVSIZE_Pos) /*!< DWT FUNCTION: DATAVSIZE Mask */ + +#define DWT_FUNCTION_LNK1ENA_Pos 9U /*!< DWT FUNCTION: LNK1ENA Position */ +#define DWT_FUNCTION_LNK1ENA_Msk (0x1UL << DWT_FUNCTION_LNK1ENA_Pos) /*!< DWT FUNCTION: LNK1ENA Mask */ + +#define DWT_FUNCTION_DATAVMATCH_Pos 8U /*!< DWT FUNCTION: DATAVMATCH Position */ +#define DWT_FUNCTION_DATAVMATCH_Msk (0x1UL << DWT_FUNCTION_DATAVMATCH_Pos) /*!< DWT FUNCTION: DATAVMATCH Mask */ + +#define DWT_FUNCTION_CYCMATCH_Pos 7U /*!< DWT FUNCTION: CYCMATCH Position */ +#define DWT_FUNCTION_CYCMATCH_Msk (0x1UL << DWT_FUNCTION_CYCMATCH_Pos) /*!< DWT FUNCTION: CYCMATCH Mask */ + +#define DWT_FUNCTION_EMITRANGE_Pos 5U /*!< DWT FUNCTION: EMITRANGE Position */ +#define DWT_FUNCTION_EMITRANGE_Msk (0x1UL << DWT_FUNCTION_EMITRANGE_Pos) /*!< DWT FUNCTION: EMITRANGE Mask */ + +#define DWT_FUNCTION_FUNCTION_Pos 0U /*!< DWT FUNCTION: FUNCTION Position */ +#define DWT_FUNCTION_FUNCTION_Msk (0xFUL /*<< DWT_FUNCTION_FUNCTION_Pos*/) /*!< DWT FUNCTION: FUNCTION Mask */ + +/*@}*/ /* end of group CMSIS_DWT */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_TPI Trace Port Interface (TPI) + \brief Type definitions for the Trace Port Interface (TPI) + @{ + */ + +/** + \brief Structure type to access the Trace Port Interface Register (TPI). + */ +typedef struct +{ + __IM uint32_t SSPSR; /*!< Offset: 0x000 (R/ ) Supported Parallel Port Size Register */ + __IOM uint32_t CSPSR; /*!< Offset: 0x004 (R/W) Current Parallel Port Size Register */ + uint32_t RESERVED0[2U]; + __IOM uint32_t ACPR; /*!< Offset: 0x010 (R/W) Asynchronous Clock Prescaler Register */ + uint32_t RESERVED1[55U]; + __IOM uint32_t SPPR; /*!< Offset: 0x0F0 (R/W) Selected Pin Protocol Register */ + uint32_t RESERVED2[131U]; + __IM uint32_t FFSR; /*!< Offset: 0x300 (R/ ) Formatter and Flush Status Register */ + __IOM uint32_t FFCR; /*!< Offset: 0x304 (R/W) Formatter and Flush Control Register */ + __IM uint32_t FSCR; /*!< Offset: 0x308 (R/ ) Formatter Synchronization Counter Register */ + uint32_t RESERVED3[759U]; + __IM uint32_t TRIGGER; /*!< Offset: 0xEE8 (R/ ) TRIGGER Register */ + __IM uint32_t FIFO0; /*!< Offset: 0xEEC (R/ ) Integration ETM Data */ + __IM uint32_t ITATBCTR2; /*!< Offset: 0xEF0 (R/ ) ITATBCTR2 */ + uint32_t RESERVED4[1U]; + __IM uint32_t ITATBCTR0; /*!< Offset: 0xEF8 (R/ ) ITATBCTR0 */ + __IM uint32_t FIFO1; /*!< Offset: 0xEFC (R/ ) Integration ITM Data */ + __IOM uint32_t ITCTRL; /*!< Offset: 0xF00 (R/W) Integration Mode Control */ + uint32_t RESERVED5[39U]; + __IOM uint32_t CLAIMSET; /*!< Offset: 0xFA0 (R/W) Claim tag set */ + __IOM uint32_t CLAIMCLR; /*!< Offset: 0xFA4 (R/W) Claim tag clear */ + uint32_t RESERVED7[8U]; + __IM uint32_t DEVID; /*!< Offset: 0xFC8 (R/ ) TPIU_DEVID */ + __IM uint32_t DEVTYPE; /*!< Offset: 0xFCC (R/ ) TPIU_DEVTYPE */ +} TPI_Type; + +/* TPI Asynchronous Clock Prescaler Register Definitions */ +#define TPI_ACPR_PRESCALER_Pos 0U /*!< TPI ACPR: PRESCALER Position */ +#define TPI_ACPR_PRESCALER_Msk (0x1FFFUL /*<< TPI_ACPR_PRESCALER_Pos*/) /*!< TPI ACPR: PRESCALER Mask */ + +/* TPI Selected Pin Protocol Register Definitions */ +#define TPI_SPPR_TXMODE_Pos 0U /*!< TPI SPPR: TXMODE Position */ +#define TPI_SPPR_TXMODE_Msk (0x3UL /*<< TPI_SPPR_TXMODE_Pos*/) /*!< TPI SPPR: TXMODE Mask */ + +/* TPI Formatter and Flush Status Register Definitions */ +#define TPI_FFSR_FtNonStop_Pos 3U /*!< TPI FFSR: FtNonStop Position */ +#define TPI_FFSR_FtNonStop_Msk (0x1UL << TPI_FFSR_FtNonStop_Pos) /*!< TPI FFSR: FtNonStop Mask */ + +#define TPI_FFSR_TCPresent_Pos 2U /*!< TPI FFSR: TCPresent Position */ +#define TPI_FFSR_TCPresent_Msk (0x1UL << TPI_FFSR_TCPresent_Pos) /*!< TPI FFSR: TCPresent Mask */ + +#define TPI_FFSR_FtStopped_Pos 1U /*!< TPI FFSR: FtStopped Position */ +#define TPI_FFSR_FtStopped_Msk (0x1UL << TPI_FFSR_FtStopped_Pos) /*!< TPI FFSR: FtStopped Mask */ + +#define TPI_FFSR_FlInProg_Pos 0U /*!< TPI FFSR: FlInProg Position */ +#define TPI_FFSR_FlInProg_Msk (0x1UL /*<< TPI_FFSR_FlInProg_Pos*/) /*!< TPI FFSR: FlInProg Mask */ + +/* TPI Formatter and Flush Control Register Definitions */ +#define TPI_FFCR_TrigIn_Pos 8U /*!< TPI FFCR: TrigIn Position */ +#define TPI_FFCR_TrigIn_Msk (0x1UL << TPI_FFCR_TrigIn_Pos) /*!< TPI FFCR: TrigIn Mask */ + +#define TPI_FFCR_EnFCont_Pos 1U /*!< TPI FFCR: EnFCont Position */ +#define TPI_FFCR_EnFCont_Msk (0x1UL << TPI_FFCR_EnFCont_Pos) /*!< TPI FFCR: EnFCont Mask */ + +/* TPI TRIGGER Register Definitions */ +#define TPI_TRIGGER_TRIGGER_Pos 0U /*!< TPI TRIGGER: TRIGGER Position */ +#define TPI_TRIGGER_TRIGGER_Msk (0x1UL /*<< TPI_TRIGGER_TRIGGER_Pos*/) /*!< TPI TRIGGER: TRIGGER Mask */ + +/* TPI Integration ETM Data Register Definitions (FIFO0) */ +#define TPI_FIFO0_ITM_ATVALID_Pos 29U /*!< TPI FIFO0: ITM_ATVALID Position */ +#define TPI_FIFO0_ITM_ATVALID_Msk (0x1UL << TPI_FIFO0_ITM_ATVALID_Pos) /*!< TPI FIFO0: ITM_ATVALID Mask */ + +#define TPI_FIFO0_ITM_bytecount_Pos 27U /*!< TPI FIFO0: ITM_bytecount Position */ +#define TPI_FIFO0_ITM_bytecount_Msk (0x3UL << TPI_FIFO0_ITM_bytecount_Pos) /*!< TPI FIFO0: ITM_bytecount Mask */ + +#define TPI_FIFO0_ETM_ATVALID_Pos 26U /*!< TPI FIFO0: ETM_ATVALID Position */ +#define TPI_FIFO0_ETM_ATVALID_Msk (0x1UL << TPI_FIFO0_ETM_ATVALID_Pos) /*!< TPI FIFO0: ETM_ATVALID Mask */ + +#define TPI_FIFO0_ETM_bytecount_Pos 24U /*!< TPI FIFO0: ETM_bytecount Position */ +#define TPI_FIFO0_ETM_bytecount_Msk (0x3UL << TPI_FIFO0_ETM_bytecount_Pos) /*!< TPI FIFO0: ETM_bytecount Mask */ + +#define TPI_FIFO0_ETM2_Pos 16U /*!< TPI FIFO0: ETM2 Position */ +#define TPI_FIFO0_ETM2_Msk (0xFFUL << TPI_FIFO0_ETM2_Pos) /*!< TPI FIFO0: ETM2 Mask */ + +#define TPI_FIFO0_ETM1_Pos 8U /*!< TPI FIFO0: ETM1 Position */ +#define TPI_FIFO0_ETM1_Msk (0xFFUL << TPI_FIFO0_ETM1_Pos) /*!< TPI FIFO0: ETM1 Mask */ + +#define TPI_FIFO0_ETM0_Pos 0U /*!< TPI FIFO0: ETM0 Position */ +#define TPI_FIFO0_ETM0_Msk (0xFFUL /*<< TPI_FIFO0_ETM0_Pos*/) /*!< TPI FIFO0: ETM0 Mask */ + +/* TPI ITATBCTR2 Register Definitions */ +#define TPI_ITATBCTR2_ATREADY2_Pos 0U /*!< TPI ITATBCTR2: ATREADY2 Position */ +#define TPI_ITATBCTR2_ATREADY2_Msk (0x1UL /*<< TPI_ITATBCTR2_ATREADY2_Pos*/) /*!< TPI ITATBCTR2: ATREADY2 Mask */ + +#define TPI_ITATBCTR2_ATREADY1_Pos 0U /*!< TPI ITATBCTR2: ATREADY1 Position */ +#define TPI_ITATBCTR2_ATREADY1_Msk (0x1UL /*<< TPI_ITATBCTR2_ATREADY1_Pos*/) /*!< TPI ITATBCTR2: ATREADY1 Mask */ + +/* TPI Integration ITM Data Register Definitions (FIFO1) */ +#define TPI_FIFO1_ITM_ATVALID_Pos 29U /*!< TPI FIFO1: ITM_ATVALID Position */ +#define TPI_FIFO1_ITM_ATVALID_Msk (0x1UL << TPI_FIFO1_ITM_ATVALID_Pos) /*!< TPI FIFO1: ITM_ATVALID Mask */ + +#define TPI_FIFO1_ITM_bytecount_Pos 27U /*!< TPI FIFO1: ITM_bytecount Position */ +#define TPI_FIFO1_ITM_bytecount_Msk (0x3UL << TPI_FIFO1_ITM_bytecount_Pos) /*!< TPI FIFO1: ITM_bytecount Mask */ + +#define TPI_FIFO1_ETM_ATVALID_Pos 26U /*!< TPI FIFO1: ETM_ATVALID Position */ +#define TPI_FIFO1_ETM_ATVALID_Msk (0x1UL << TPI_FIFO1_ETM_ATVALID_Pos) /*!< TPI FIFO1: ETM_ATVALID Mask */ + +#define TPI_FIFO1_ETM_bytecount_Pos 24U /*!< TPI FIFO1: ETM_bytecount Position */ +#define TPI_FIFO1_ETM_bytecount_Msk (0x3UL << TPI_FIFO1_ETM_bytecount_Pos) /*!< TPI FIFO1: ETM_bytecount Mask */ + +#define TPI_FIFO1_ITM2_Pos 16U /*!< TPI FIFO1: ITM2 Position */ +#define TPI_FIFO1_ITM2_Msk (0xFFUL << TPI_FIFO1_ITM2_Pos) /*!< TPI FIFO1: ITM2 Mask */ + +#define TPI_FIFO1_ITM1_Pos 8U /*!< TPI FIFO1: ITM1 Position */ +#define TPI_FIFO1_ITM1_Msk (0xFFUL << TPI_FIFO1_ITM1_Pos) /*!< TPI FIFO1: ITM1 Mask */ + +#define TPI_FIFO1_ITM0_Pos 0U /*!< TPI FIFO1: ITM0 Position */ +#define TPI_FIFO1_ITM0_Msk (0xFFUL /*<< TPI_FIFO1_ITM0_Pos*/) /*!< TPI FIFO1: ITM0 Mask */ + +/* TPI ITATBCTR0 Register Definitions */ +#define TPI_ITATBCTR0_ATREADY2_Pos 0U /*!< TPI ITATBCTR0: ATREADY2 Position */ +#define TPI_ITATBCTR0_ATREADY2_Msk (0x1UL /*<< TPI_ITATBCTR0_ATREADY2_Pos*/) /*!< TPI ITATBCTR0: ATREADY2 Mask */ + +#define TPI_ITATBCTR0_ATREADY1_Pos 0U /*!< TPI ITATBCTR0: ATREADY1 Position */ +#define TPI_ITATBCTR0_ATREADY1_Msk (0x1UL /*<< TPI_ITATBCTR0_ATREADY1_Pos*/) /*!< TPI ITATBCTR0: ATREADY1 Mask */ + +/* TPI Integration Mode Control Register Definitions */ +#define TPI_ITCTRL_Mode_Pos 0U /*!< TPI ITCTRL: Mode Position */ +#define TPI_ITCTRL_Mode_Msk (0x3UL /*<< TPI_ITCTRL_Mode_Pos*/) /*!< TPI ITCTRL: Mode Mask */ + +/* TPI DEVID Register Definitions */ +#define TPI_DEVID_NRZVALID_Pos 11U /*!< TPI DEVID: NRZVALID Position */ +#define TPI_DEVID_NRZVALID_Msk (0x1UL << TPI_DEVID_NRZVALID_Pos) /*!< TPI DEVID: NRZVALID Mask */ + +#define TPI_DEVID_MANCVALID_Pos 10U /*!< TPI DEVID: MANCVALID Position */ +#define TPI_DEVID_MANCVALID_Msk (0x1UL << TPI_DEVID_MANCVALID_Pos) /*!< TPI DEVID: MANCVALID Mask */ + +#define TPI_DEVID_PTINVALID_Pos 9U /*!< TPI DEVID: PTINVALID Position */ +#define TPI_DEVID_PTINVALID_Msk (0x1UL << TPI_DEVID_PTINVALID_Pos) /*!< TPI DEVID: PTINVALID Mask */ + +#define TPI_DEVID_MinBufSz_Pos 6U /*!< TPI DEVID: MinBufSz Position */ +#define TPI_DEVID_MinBufSz_Msk (0x7UL << TPI_DEVID_MinBufSz_Pos) /*!< TPI DEVID: MinBufSz Mask */ + +#define TPI_DEVID_AsynClkIn_Pos 5U /*!< TPI DEVID: AsynClkIn Position */ +#define TPI_DEVID_AsynClkIn_Msk (0x1UL << TPI_DEVID_AsynClkIn_Pos) /*!< TPI DEVID: AsynClkIn Mask */ + +#define TPI_DEVID_NrTraceInput_Pos 0U /*!< TPI DEVID: NrTraceInput Position */ +#define TPI_DEVID_NrTraceInput_Msk (0x1FUL /*<< TPI_DEVID_NrTraceInput_Pos*/) /*!< TPI DEVID: NrTraceInput Mask */ + +/* TPI DEVTYPE Register Definitions */ +#define TPI_DEVTYPE_SubType_Pos 4U /*!< TPI DEVTYPE: SubType Position */ +#define TPI_DEVTYPE_SubType_Msk (0xFUL /*<< TPI_DEVTYPE_SubType_Pos*/) /*!< TPI DEVTYPE: SubType Mask */ + +#define TPI_DEVTYPE_MajorType_Pos 0U /*!< TPI DEVTYPE: MajorType Position */ +#define TPI_DEVTYPE_MajorType_Msk (0xFUL << TPI_DEVTYPE_MajorType_Pos) /*!< TPI DEVTYPE: MajorType Mask */ + +/*@}*/ /* end of group CMSIS_TPI */ + + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_MPU Memory Protection Unit (MPU) + \brief Type definitions for the Memory Protection Unit (MPU) + @{ + */ + +/** + \brief Structure type to access the Memory Protection Unit (MPU). + */ +typedef struct +{ + __IM uint32_t TYPE; /*!< Offset: 0x000 (R/ ) MPU Type Register */ + __IOM uint32_t CTRL; /*!< Offset: 0x004 (R/W) MPU Control Register */ + __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) MPU Region RNRber Register */ + __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) MPU Region Base Address Register */ + __IOM uint32_t RASR; /*!< Offset: 0x010 (R/W) MPU Region Attribute and Size Register */ + __IOM uint32_t RBAR_A1; /*!< Offset: 0x014 (R/W) MPU Alias 1 Region Base Address Register */ + __IOM uint32_t RASR_A1; /*!< Offset: 0x018 (R/W) MPU Alias 1 Region Attribute and Size Register */ + __IOM uint32_t RBAR_A2; /*!< Offset: 0x01C (R/W) MPU Alias 2 Region Base Address Register */ + __IOM uint32_t RASR_A2; /*!< Offset: 0x020 (R/W) MPU Alias 2 Region Attribute and Size Register */ + __IOM uint32_t RBAR_A3; /*!< Offset: 0x024 (R/W) MPU Alias 3 Region Base Address Register */ + __IOM uint32_t RASR_A3; /*!< Offset: 0x028 (R/W) MPU Alias 3 Region Attribute and Size Register */ +} MPU_Type; + +#define MPU_TYPE_RALIASES 4U + +/* MPU Type Register Definitions */ +#define MPU_TYPE_IREGION_Pos 16U /*!< MPU TYPE: IREGION Position */ +#define MPU_TYPE_IREGION_Msk (0xFFUL << MPU_TYPE_IREGION_Pos) /*!< MPU TYPE: IREGION Mask */ + +#define MPU_TYPE_DREGION_Pos 8U /*!< MPU TYPE: DREGION Position */ +#define MPU_TYPE_DREGION_Msk (0xFFUL << MPU_TYPE_DREGION_Pos) /*!< MPU TYPE: DREGION Mask */ + +#define MPU_TYPE_SEPARATE_Pos 0U /*!< MPU TYPE: SEPARATE Position */ +#define MPU_TYPE_SEPARATE_Msk (1UL /*<< MPU_TYPE_SEPARATE_Pos*/) /*!< MPU TYPE: SEPARATE Mask */ + +/* MPU Control Register Definitions */ +#define MPU_CTRL_PRIVDEFENA_Pos 2U /*!< MPU CTRL: PRIVDEFENA Position */ +#define MPU_CTRL_PRIVDEFENA_Msk (1UL << MPU_CTRL_PRIVDEFENA_Pos) /*!< MPU CTRL: PRIVDEFENA Mask */ + +#define MPU_CTRL_HFNMIENA_Pos 1U /*!< MPU CTRL: HFNMIENA Position */ +#define MPU_CTRL_HFNMIENA_Msk (1UL << MPU_CTRL_HFNMIENA_Pos) /*!< MPU CTRL: HFNMIENA Mask */ + +#define MPU_CTRL_ENABLE_Pos 0U /*!< MPU CTRL: ENABLE Position */ +#define MPU_CTRL_ENABLE_Msk (1UL /*<< MPU_CTRL_ENABLE_Pos*/) /*!< MPU CTRL: ENABLE Mask */ + +/* MPU Region Number Register Definitions */ +#define MPU_RNR_REGION_Pos 0U /*!< MPU RNR: REGION Position */ +#define MPU_RNR_REGION_Msk (0xFFUL /*<< MPU_RNR_REGION_Pos*/) /*!< MPU RNR: REGION Mask */ + +/* MPU Region Base Address Register Definitions */ +#define MPU_RBAR_ADDR_Pos 5U /*!< MPU RBAR: ADDR Position */ +#define MPU_RBAR_ADDR_Msk (0x7FFFFFFUL << MPU_RBAR_ADDR_Pos) /*!< MPU RBAR: ADDR Mask */ + +#define MPU_RBAR_VALID_Pos 4U /*!< MPU RBAR: VALID Position */ +#define MPU_RBAR_VALID_Msk (1UL << MPU_RBAR_VALID_Pos) /*!< MPU RBAR: VALID Mask */ + +#define MPU_RBAR_REGION_Pos 0U /*!< MPU RBAR: REGION Position */ +#define MPU_RBAR_REGION_Msk (0xFUL /*<< MPU_RBAR_REGION_Pos*/) /*!< MPU RBAR: REGION Mask */ + +/* MPU Region Attribute and Size Register Definitions */ +#define MPU_RASR_ATTRS_Pos 16U /*!< MPU RASR: MPU Region Attribute field Position */ +#define MPU_RASR_ATTRS_Msk (0xFFFFUL << MPU_RASR_ATTRS_Pos) /*!< MPU RASR: MPU Region Attribute field Mask */ + +#define MPU_RASR_XN_Pos 28U /*!< MPU RASR: ATTRS.XN Position */ +#define MPU_RASR_XN_Msk (1UL << MPU_RASR_XN_Pos) /*!< MPU RASR: ATTRS.XN Mask */ + +#define MPU_RASR_AP_Pos 24U /*!< MPU RASR: ATTRS.AP Position */ +#define MPU_RASR_AP_Msk (0x7UL << MPU_RASR_AP_Pos) /*!< MPU RASR: ATTRS.AP Mask */ + +#define MPU_RASR_TEX_Pos 19U /*!< MPU RASR: ATTRS.TEX Position */ +#define MPU_RASR_TEX_Msk (0x7UL << MPU_RASR_TEX_Pos) /*!< MPU RASR: ATTRS.TEX Mask */ + +#define MPU_RASR_S_Pos 18U /*!< MPU RASR: ATTRS.S Position */ +#define MPU_RASR_S_Msk (1UL << MPU_RASR_S_Pos) /*!< MPU RASR: ATTRS.S Mask */ + +#define MPU_RASR_C_Pos 17U /*!< MPU RASR: ATTRS.C Position */ +#define MPU_RASR_C_Msk (1UL << MPU_RASR_C_Pos) /*!< MPU RASR: ATTRS.C Mask */ + +#define MPU_RASR_B_Pos 16U /*!< MPU RASR: ATTRS.B Position */ +#define MPU_RASR_B_Msk (1UL << MPU_RASR_B_Pos) /*!< MPU RASR: ATTRS.B Mask */ + +#define MPU_RASR_SRD_Pos 8U /*!< MPU RASR: Sub-Region Disable Position */ +#define MPU_RASR_SRD_Msk (0xFFUL << MPU_RASR_SRD_Pos) /*!< MPU RASR: Sub-Region Disable Mask */ + +#define MPU_RASR_SIZE_Pos 1U /*!< MPU RASR: Region Size Field Position */ +#define MPU_RASR_SIZE_Msk (0x1FUL << MPU_RASR_SIZE_Pos) /*!< MPU RASR: Region Size Field Mask */ + +#define MPU_RASR_ENABLE_Pos 0U /*!< MPU RASR: Region enable bit Position */ +#define MPU_RASR_ENABLE_Msk (1UL /*<< MPU_RASR_ENABLE_Pos*/) /*!< MPU RASR: Region enable bit Disable Mask */ + +/*@} end of group CMSIS_MPU */ +#endif /* defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_FPU Floating Point Unit (FPU) + \brief Type definitions for the Floating Point Unit (FPU) + @{ + */ + +/** + \brief Structure type to access the Floating Point Unit (FPU). + */ +typedef struct +{ + uint32_t RESERVED0[1U]; + __IOM uint32_t FPCCR; /*!< Offset: 0x004 (R/W) Floating-Point Context Control Register */ + __IOM uint32_t FPCAR; /*!< Offset: 0x008 (R/W) Floating-Point Context Address Register */ + __IOM uint32_t FPDSCR; /*!< Offset: 0x00C (R/W) Floating-Point Default Status Control Register */ + __IM uint32_t MVFR0; /*!< Offset: 0x010 (R/ ) Media and FP Feature Register 0 */ + __IM uint32_t MVFR1; /*!< Offset: 0x014 (R/ ) Media and FP Feature Register 1 */ + __IM uint32_t MVFR2; /*!< Offset: 0x018 (R/ ) Media and FP Feature Register 2 */ +} FPU_Type; + +/* Floating-Point Context Control Register Definitions */ +#define FPU_FPCCR_ASPEN_Pos 31U /*!< FPCCR: ASPEN bit Position */ +#define FPU_FPCCR_ASPEN_Msk (1UL << FPU_FPCCR_ASPEN_Pos) /*!< FPCCR: ASPEN bit Mask */ + +#define FPU_FPCCR_LSPEN_Pos 30U /*!< FPCCR: LSPEN Position */ +#define FPU_FPCCR_LSPEN_Msk (1UL << FPU_FPCCR_LSPEN_Pos) /*!< FPCCR: LSPEN bit Mask */ + +#define FPU_FPCCR_MONRDY_Pos 8U /*!< FPCCR: MONRDY Position */ +#define FPU_FPCCR_MONRDY_Msk (1UL << FPU_FPCCR_MONRDY_Pos) /*!< FPCCR: MONRDY bit Mask */ + +#define FPU_FPCCR_BFRDY_Pos 6U /*!< FPCCR: BFRDY Position */ +#define FPU_FPCCR_BFRDY_Msk (1UL << FPU_FPCCR_BFRDY_Pos) /*!< FPCCR: BFRDY bit Mask */ + +#define FPU_FPCCR_MMRDY_Pos 5U /*!< FPCCR: MMRDY Position */ +#define FPU_FPCCR_MMRDY_Msk (1UL << FPU_FPCCR_MMRDY_Pos) /*!< FPCCR: MMRDY bit Mask */ + +#define FPU_FPCCR_HFRDY_Pos 4U /*!< FPCCR: HFRDY Position */ +#define FPU_FPCCR_HFRDY_Msk (1UL << FPU_FPCCR_HFRDY_Pos) /*!< FPCCR: HFRDY bit Mask */ + +#define FPU_FPCCR_THREAD_Pos 3U /*!< FPCCR: processor mode bit Position */ +#define FPU_FPCCR_THREAD_Msk (1UL << FPU_FPCCR_THREAD_Pos) /*!< FPCCR: processor mode active bit Mask */ + +#define FPU_FPCCR_USER_Pos 1U /*!< FPCCR: privilege level bit Position */ +#define FPU_FPCCR_USER_Msk (1UL << FPU_FPCCR_USER_Pos) /*!< FPCCR: privilege level bit Mask */ + +#define FPU_FPCCR_LSPACT_Pos 0U /*!< FPCCR: Lazy state preservation active bit Position */ +#define FPU_FPCCR_LSPACT_Msk (1UL /*<< FPU_FPCCR_LSPACT_Pos*/) /*!< FPCCR: Lazy state preservation active bit Mask */ + +/* Floating-Point Context Address Register Definitions */ +#define FPU_FPCAR_ADDRESS_Pos 3U /*!< FPCAR: ADDRESS bit Position */ +#define FPU_FPCAR_ADDRESS_Msk (0x1FFFFFFFUL << FPU_FPCAR_ADDRESS_Pos) /*!< FPCAR: ADDRESS bit Mask */ + +/* Floating-Point Default Status Control Register Definitions */ +#define FPU_FPDSCR_AHP_Pos 26U /*!< FPDSCR: AHP bit Position */ +#define FPU_FPDSCR_AHP_Msk (1UL << FPU_FPDSCR_AHP_Pos) /*!< FPDSCR: AHP bit Mask */ + +#define FPU_FPDSCR_DN_Pos 25U /*!< FPDSCR: DN bit Position */ +#define FPU_FPDSCR_DN_Msk (1UL << FPU_FPDSCR_DN_Pos) /*!< FPDSCR: DN bit Mask */ + +#define FPU_FPDSCR_FZ_Pos 24U /*!< FPDSCR: FZ bit Position */ +#define FPU_FPDSCR_FZ_Msk (1UL << FPU_FPDSCR_FZ_Pos) /*!< FPDSCR: FZ bit Mask */ + +#define FPU_FPDSCR_RMode_Pos 22U /*!< FPDSCR: RMode bit Position */ +#define FPU_FPDSCR_RMode_Msk (3UL << FPU_FPDSCR_RMode_Pos) /*!< FPDSCR: RMode bit Mask */ + +/* Media and FP Feature Register 0 Definitions */ +#define FPU_MVFR0_FP_rounding_modes_Pos 28U /*!< MVFR0: FP rounding modes bits Position */ +#define FPU_MVFR0_FP_rounding_modes_Msk (0xFUL << FPU_MVFR0_FP_rounding_modes_Pos) /*!< MVFR0: FP rounding modes bits Mask */ + +#define FPU_MVFR0_Short_vectors_Pos 24U /*!< MVFR0: Short vectors bits Position */ +#define FPU_MVFR0_Short_vectors_Msk (0xFUL << FPU_MVFR0_Short_vectors_Pos) /*!< MVFR0: Short vectors bits Mask */ + +#define FPU_MVFR0_Square_root_Pos 20U /*!< MVFR0: Square root bits Position */ +#define FPU_MVFR0_Square_root_Msk (0xFUL << FPU_MVFR0_Square_root_Pos) /*!< MVFR0: Square root bits Mask */ + +#define FPU_MVFR0_Divide_Pos 16U /*!< MVFR0: Divide bits Position */ +#define FPU_MVFR0_Divide_Msk (0xFUL << FPU_MVFR0_Divide_Pos) /*!< MVFR0: Divide bits Mask */ + +#define FPU_MVFR0_FP_excep_trapping_Pos 12U /*!< MVFR0: FP exception trapping bits Position */ +#define FPU_MVFR0_FP_excep_trapping_Msk (0xFUL << FPU_MVFR0_FP_excep_trapping_Pos) /*!< MVFR0: FP exception trapping bits Mask */ + +#define FPU_MVFR0_Double_precision_Pos 8U /*!< MVFR0: Double-precision bits Position */ +#define FPU_MVFR0_Double_precision_Msk (0xFUL << FPU_MVFR0_Double_precision_Pos) /*!< MVFR0: Double-precision bits Mask */ + +#define FPU_MVFR0_Single_precision_Pos 4U /*!< MVFR0: Single-precision bits Position */ +#define FPU_MVFR0_Single_precision_Msk (0xFUL << FPU_MVFR0_Single_precision_Pos) /*!< MVFR0: Single-precision bits Mask */ + +#define FPU_MVFR0_A_SIMD_registers_Pos 0U /*!< MVFR0: A_SIMD registers bits Position */ +#define FPU_MVFR0_A_SIMD_registers_Msk (0xFUL /*<< FPU_MVFR0_A_SIMD_registers_Pos*/) /*!< MVFR0: A_SIMD registers bits Mask */ + +/* Media and FP Feature Register 1 Definitions */ +#define FPU_MVFR1_FP_fused_MAC_Pos 28U /*!< MVFR1: FP fused MAC bits Position */ +#define FPU_MVFR1_FP_fused_MAC_Msk (0xFUL << FPU_MVFR1_FP_fused_MAC_Pos) /*!< MVFR1: FP fused MAC bits Mask */ + +#define FPU_MVFR1_FP_HPFP_Pos 24U /*!< MVFR1: FP HPFP bits Position */ +#define FPU_MVFR1_FP_HPFP_Msk (0xFUL << FPU_MVFR1_FP_HPFP_Pos) /*!< MVFR1: FP HPFP bits Mask */ + +#define FPU_MVFR1_D_NaN_mode_Pos 4U /*!< MVFR1: D_NaN mode bits Position */ +#define FPU_MVFR1_D_NaN_mode_Msk (0xFUL << FPU_MVFR1_D_NaN_mode_Pos) /*!< MVFR1: D_NaN mode bits Mask */ + +#define FPU_MVFR1_FtZ_mode_Pos 0U /*!< MVFR1: FtZ mode bits Position */ +#define FPU_MVFR1_FtZ_mode_Msk (0xFUL /*<< FPU_MVFR1_FtZ_mode_Pos*/) /*!< MVFR1: FtZ mode bits Mask */ + +/* Media and FP Feature Register 2 Definitions */ + +#define FPU_MVFR2_VFP_Misc_Pos 4U /*!< MVFR2: VFP Misc bits Position */ +#define FPU_MVFR2_VFP_Misc_Msk (0xFUL << FPU_MVFR2_VFP_Misc_Pos) /*!< MVFR2: VFP Misc bits Mask */ + +/*@} end of group CMSIS_FPU */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CoreDebug Core Debug Registers (CoreDebug) + \brief Type definitions for the Core Debug Registers + @{ + */ + +/** + \brief Structure type to access the Core Debug Register (CoreDebug). + */ +typedef struct +{ + __IOM uint32_t DHCSR; /*!< Offset: 0x000 (R/W) Debug Halting Control and Status Register */ + __OM uint32_t DCRSR; /*!< Offset: 0x004 ( /W) Debug Core Register Selector Register */ + __IOM uint32_t DCRDR; /*!< Offset: 0x008 (R/W) Debug Core Register Data Register */ + __IOM uint32_t DEMCR; /*!< Offset: 0x00C (R/W) Debug Exception and Monitor Control Register */ +} CoreDebug_Type; + +/* Debug Halting Control and Status Register Definitions */ +#define CoreDebug_DHCSR_DBGKEY_Pos 16U /*!< CoreDebug DHCSR: DBGKEY Position */ +#define CoreDebug_DHCSR_DBGKEY_Msk (0xFFFFUL << CoreDebug_DHCSR_DBGKEY_Pos) /*!< CoreDebug DHCSR: DBGKEY Mask */ + +#define CoreDebug_DHCSR_S_RESET_ST_Pos 25U /*!< CoreDebug DHCSR: S_RESET_ST Position */ +#define CoreDebug_DHCSR_S_RESET_ST_Msk (1UL << CoreDebug_DHCSR_S_RESET_ST_Pos) /*!< CoreDebug DHCSR: S_RESET_ST Mask */ + +#define CoreDebug_DHCSR_S_RETIRE_ST_Pos 24U /*!< CoreDebug DHCSR: S_RETIRE_ST Position */ +#define CoreDebug_DHCSR_S_RETIRE_ST_Msk (1UL << CoreDebug_DHCSR_S_RETIRE_ST_Pos) /*!< CoreDebug DHCSR: S_RETIRE_ST Mask */ + +#define CoreDebug_DHCSR_S_LOCKUP_Pos 19U /*!< CoreDebug DHCSR: S_LOCKUP Position */ +#define CoreDebug_DHCSR_S_LOCKUP_Msk (1UL << CoreDebug_DHCSR_S_LOCKUP_Pos) /*!< CoreDebug DHCSR: S_LOCKUP Mask */ + +#define CoreDebug_DHCSR_S_SLEEP_Pos 18U /*!< CoreDebug DHCSR: S_SLEEP Position */ +#define CoreDebug_DHCSR_S_SLEEP_Msk (1UL << CoreDebug_DHCSR_S_SLEEP_Pos) /*!< CoreDebug DHCSR: S_SLEEP Mask */ + +#define CoreDebug_DHCSR_S_HALT_Pos 17U /*!< CoreDebug DHCSR: S_HALT Position */ +#define CoreDebug_DHCSR_S_HALT_Msk (1UL << CoreDebug_DHCSR_S_HALT_Pos) /*!< CoreDebug DHCSR: S_HALT Mask */ + +#define CoreDebug_DHCSR_S_REGRDY_Pos 16U /*!< CoreDebug DHCSR: S_REGRDY Position */ +#define CoreDebug_DHCSR_S_REGRDY_Msk (1UL << CoreDebug_DHCSR_S_REGRDY_Pos) /*!< CoreDebug DHCSR: S_REGRDY Mask */ + +#define CoreDebug_DHCSR_C_SNAPSTALL_Pos 5U /*!< CoreDebug DHCSR: C_SNAPSTALL Position */ +#define CoreDebug_DHCSR_C_SNAPSTALL_Msk (1UL << CoreDebug_DHCSR_C_SNAPSTALL_Pos) /*!< CoreDebug DHCSR: C_SNAPSTALL Mask */ + +#define CoreDebug_DHCSR_C_MASKINTS_Pos 3U /*!< CoreDebug DHCSR: C_MASKINTS Position */ +#define CoreDebug_DHCSR_C_MASKINTS_Msk (1UL << CoreDebug_DHCSR_C_MASKINTS_Pos) /*!< CoreDebug DHCSR: C_MASKINTS Mask */ + +#define CoreDebug_DHCSR_C_STEP_Pos 2U /*!< CoreDebug DHCSR: C_STEP Position */ +#define CoreDebug_DHCSR_C_STEP_Msk (1UL << CoreDebug_DHCSR_C_STEP_Pos) /*!< CoreDebug DHCSR: C_STEP Mask */ + +#define CoreDebug_DHCSR_C_HALT_Pos 1U /*!< CoreDebug DHCSR: C_HALT Position */ +#define CoreDebug_DHCSR_C_HALT_Msk (1UL << CoreDebug_DHCSR_C_HALT_Pos) /*!< CoreDebug DHCSR: C_HALT Mask */ + +#define CoreDebug_DHCSR_C_DEBUGEN_Pos 0U /*!< CoreDebug DHCSR: C_DEBUGEN Position */ +#define CoreDebug_DHCSR_C_DEBUGEN_Msk (1UL /*<< CoreDebug_DHCSR_C_DEBUGEN_Pos*/) /*!< CoreDebug DHCSR: C_DEBUGEN Mask */ + +/* Debug Core Register Selector Register Definitions */ +#define CoreDebug_DCRSR_REGWnR_Pos 16U /*!< CoreDebug DCRSR: REGWnR Position */ +#define CoreDebug_DCRSR_REGWnR_Msk (1UL << CoreDebug_DCRSR_REGWnR_Pos) /*!< CoreDebug DCRSR: REGWnR Mask */ + +#define CoreDebug_DCRSR_REGSEL_Pos 0U /*!< CoreDebug DCRSR: REGSEL Position */ +#define CoreDebug_DCRSR_REGSEL_Msk (0x1FUL /*<< CoreDebug_DCRSR_REGSEL_Pos*/) /*!< CoreDebug DCRSR: REGSEL Mask */ + +/* Debug Exception and Monitor Control Register Definitions */ +#define CoreDebug_DEMCR_TRCENA_Pos 24U /*!< CoreDebug DEMCR: TRCENA Position */ +#define CoreDebug_DEMCR_TRCENA_Msk (1UL << CoreDebug_DEMCR_TRCENA_Pos) /*!< CoreDebug DEMCR: TRCENA Mask */ + +#define CoreDebug_DEMCR_MON_REQ_Pos 19U /*!< CoreDebug DEMCR: MON_REQ Position */ +#define CoreDebug_DEMCR_MON_REQ_Msk (1UL << CoreDebug_DEMCR_MON_REQ_Pos) /*!< CoreDebug DEMCR: MON_REQ Mask */ + +#define CoreDebug_DEMCR_MON_STEP_Pos 18U /*!< CoreDebug DEMCR: MON_STEP Position */ +#define CoreDebug_DEMCR_MON_STEP_Msk (1UL << CoreDebug_DEMCR_MON_STEP_Pos) /*!< CoreDebug DEMCR: MON_STEP Mask */ + +#define CoreDebug_DEMCR_MON_PEND_Pos 17U /*!< CoreDebug DEMCR: MON_PEND Position */ +#define CoreDebug_DEMCR_MON_PEND_Msk (1UL << CoreDebug_DEMCR_MON_PEND_Pos) /*!< CoreDebug DEMCR: MON_PEND Mask */ + +#define CoreDebug_DEMCR_MON_EN_Pos 16U /*!< CoreDebug DEMCR: MON_EN Position */ +#define CoreDebug_DEMCR_MON_EN_Msk (1UL << CoreDebug_DEMCR_MON_EN_Pos) /*!< CoreDebug DEMCR: MON_EN Mask */ + +#define CoreDebug_DEMCR_VC_HARDERR_Pos 10U /*!< CoreDebug DEMCR: VC_HARDERR Position */ +#define CoreDebug_DEMCR_VC_HARDERR_Msk (1UL << CoreDebug_DEMCR_VC_HARDERR_Pos) /*!< CoreDebug DEMCR: VC_HARDERR Mask */ + +#define CoreDebug_DEMCR_VC_INTERR_Pos 9U /*!< CoreDebug DEMCR: VC_INTERR Position */ +#define CoreDebug_DEMCR_VC_INTERR_Msk (1UL << CoreDebug_DEMCR_VC_INTERR_Pos) /*!< CoreDebug DEMCR: VC_INTERR Mask */ + +#define CoreDebug_DEMCR_VC_BUSERR_Pos 8U /*!< CoreDebug DEMCR: VC_BUSERR Position */ +#define CoreDebug_DEMCR_VC_BUSERR_Msk (1UL << CoreDebug_DEMCR_VC_BUSERR_Pos) /*!< CoreDebug DEMCR: VC_BUSERR Mask */ + +#define CoreDebug_DEMCR_VC_STATERR_Pos 7U /*!< CoreDebug DEMCR: VC_STATERR Position */ +#define CoreDebug_DEMCR_VC_STATERR_Msk (1UL << CoreDebug_DEMCR_VC_STATERR_Pos) /*!< CoreDebug DEMCR: VC_STATERR Mask */ + +#define CoreDebug_DEMCR_VC_CHKERR_Pos 6U /*!< CoreDebug DEMCR: VC_CHKERR Position */ +#define CoreDebug_DEMCR_VC_CHKERR_Msk (1UL << CoreDebug_DEMCR_VC_CHKERR_Pos) /*!< CoreDebug DEMCR: VC_CHKERR Mask */ + +#define CoreDebug_DEMCR_VC_NOCPERR_Pos 5U /*!< CoreDebug DEMCR: VC_NOCPERR Position */ +#define CoreDebug_DEMCR_VC_NOCPERR_Msk (1UL << CoreDebug_DEMCR_VC_NOCPERR_Pos) /*!< CoreDebug DEMCR: VC_NOCPERR Mask */ + +#define CoreDebug_DEMCR_VC_MMERR_Pos 4U /*!< CoreDebug DEMCR: VC_MMERR Position */ +#define CoreDebug_DEMCR_VC_MMERR_Msk (1UL << CoreDebug_DEMCR_VC_MMERR_Pos) /*!< CoreDebug DEMCR: VC_MMERR Mask */ + +#define CoreDebug_DEMCR_VC_CORERESET_Pos 0U /*!< CoreDebug DEMCR: VC_CORERESET Position */ +#define CoreDebug_DEMCR_VC_CORERESET_Msk (1UL /*<< CoreDebug_DEMCR_VC_CORERESET_Pos*/) /*!< CoreDebug DEMCR: VC_CORERESET Mask */ + +/*@} end of group CMSIS_CoreDebug */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_bitfield Core register bit field macros + \brief Macros for use with bit field definitions (xxx_Pos, xxx_Msk). + @{ + */ + +/** + \brief Mask and shift a bit field value for use in a register bit range. + \param[in] field Name of the register bit field. + \param[in] value Value of the bit field. This parameter is interpreted as an uint32_t type. + \return Masked and shifted value. +*/ +#define _VAL2FLD(field, value) (((uint32_t)(value) << field ## _Pos) & field ## _Msk) + +/** + \brief Mask and shift a register value to extract a bit filed value. + \param[in] field Name of the register bit field. + \param[in] value Value of register. This parameter is interpreted as an uint32_t type. + \return Masked and shifted bit field value. +*/ +#define _FLD2VAL(field, value) (((uint32_t)(value) & field ## _Msk) >> field ## _Pos) + +/*@} end of group CMSIS_core_bitfield */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_base Core Definitions + \brief Definitions for base addresses, unions, and structures. + @{ + */ + +/* Memory mapping of Core Hardware */ +#define SCS_BASE (0xE000E000UL) /*!< System Control Space Base Address */ +#define ITM_BASE (0xE0000000UL) /*!< ITM Base Address */ +#define DWT_BASE (0xE0001000UL) /*!< DWT Base Address */ +#define TPI_BASE (0xE0040000UL) /*!< TPI Base Address */ +#define CoreDebug_BASE (0xE000EDF0UL) /*!< Core Debug Base Address */ +#define SysTick_BASE (SCS_BASE + 0x0010UL) /*!< SysTick Base Address */ +#define NVIC_BASE (SCS_BASE + 0x0100UL) /*!< NVIC Base Address */ +#define SCB_BASE (SCS_BASE + 0x0D00UL) /*!< System Control Block Base Address */ + +#define SCnSCB ((SCnSCB_Type *) SCS_BASE ) /*!< System control Register not in SCB */ +#define SCB ((SCB_Type *) SCB_BASE ) /*!< SCB configuration struct */ +#define SysTick ((SysTick_Type *) SysTick_BASE ) /*!< SysTick configuration struct */ +#define NVIC ((NVIC_Type *) NVIC_BASE ) /*!< NVIC configuration struct */ +#define ITM ((ITM_Type *) ITM_BASE ) /*!< ITM configuration struct */ +#define DWT ((DWT_Type *) DWT_BASE ) /*!< DWT configuration struct */ +#define TPI ((TPI_Type *) TPI_BASE ) /*!< TPI configuration struct */ +#define CoreDebug ((CoreDebug_Type *) CoreDebug_BASE) /*!< Core Debug configuration struct */ + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + #define MPU_BASE (SCS_BASE + 0x0D90UL) /*!< Memory Protection Unit */ + #define MPU ((MPU_Type *) MPU_BASE ) /*!< Memory Protection Unit */ +#endif + +#define FPU_BASE (SCS_BASE + 0x0F30UL) /*!< Floating Point Unit */ +#define FPU ((FPU_Type *) FPU_BASE ) /*!< Floating Point Unit */ + +/*@} */ + + + +/******************************************************************************* + * Hardware Abstraction Layer + Core Function Interface contains: + - Core NVIC Functions + - Core SysTick Functions + - Core Debug Functions + - Core Register Access Functions + ******************************************************************************/ +/** + \defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference +*/ + + + +/* ########################## NVIC functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_NVICFunctions NVIC Functions + \brief Functions that manage interrupts and exceptions via the NVIC. + @{ + */ + +#ifdef CMSIS_NVIC_VIRTUAL + #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE + #define CMSIS_NVIC_VIRTUAL_HEADER_FILE "cmsis_nvic_virtual.h" + #endif + #include CMSIS_NVIC_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetPriorityGrouping __NVIC_SetPriorityGrouping + #define NVIC_GetPriorityGrouping __NVIC_GetPriorityGrouping + #define NVIC_EnableIRQ __NVIC_EnableIRQ + #define NVIC_GetEnableIRQ __NVIC_GetEnableIRQ + #define NVIC_DisableIRQ __NVIC_DisableIRQ + #define NVIC_GetPendingIRQ __NVIC_GetPendingIRQ + #define NVIC_SetPendingIRQ __NVIC_SetPendingIRQ + #define NVIC_ClearPendingIRQ __NVIC_ClearPendingIRQ + #define NVIC_GetActive __NVIC_GetActive + #define NVIC_SetPriority __NVIC_SetPriority + #define NVIC_GetPriority __NVIC_GetPriority + #define NVIC_SystemReset __NVIC_SystemReset +#endif /* CMSIS_NVIC_VIRTUAL */ + +#ifdef CMSIS_VECTAB_VIRTUAL + #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE + #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE "cmsis_vectab_virtual.h" + #endif + #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetVector __NVIC_SetVector + #define NVIC_GetVector __NVIC_GetVector +#endif /* (CMSIS_VECTAB_VIRTUAL) */ + +#define NVIC_USER_IRQ_OFFSET 16 + + +/* The following EXC_RETURN values are saved the LR on exception entry */ +#define EXC_RETURN_HANDLER (0xFFFFFFF1UL) /* return to Handler mode, uses MSP after return */ +#define EXC_RETURN_THREAD_MSP (0xFFFFFFF9UL) /* return to Thread mode, uses MSP after return */ +#define EXC_RETURN_THREAD_PSP (0xFFFFFFFDUL) /* return to Thread mode, uses PSP after return */ +#define EXC_RETURN_HANDLER_FPU (0xFFFFFFE1UL) /* return to Handler mode, uses MSP after return, restore floating-point state */ +#define EXC_RETURN_THREAD_MSP_FPU (0xFFFFFFE9UL) /* return to Thread mode, uses MSP after return, restore floating-point state */ +#define EXC_RETURN_THREAD_PSP_FPU (0xFFFFFFEDUL) /* return to Thread mode, uses PSP after return, restore floating-point state */ + + +/** + \brief Set Priority Grouping + \details Sets the priority grouping field using the required unlock sequence. + The parameter PriorityGroup is assigned to the field SCB->AIRCR [10:8] PRIGROUP field. + Only values from 0..7 are used. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Priority grouping field. + */ +__STATIC_INLINE void __NVIC_SetPriorityGrouping(uint32_t PriorityGroup) +{ + uint32_t reg_value; + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + + reg_value = SCB->AIRCR; /* read old register configuration */ + reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change */ + reg_value = (reg_value | + ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (PriorityGroupTmp << SCB_AIRCR_PRIGROUP_Pos) ); /* Insert write key and priority group */ + SCB->AIRCR = reg_value; +} + + +/** + \brief Get Priority Grouping + \details Reads the priority grouping field from the NVIC Interrupt Controller. + \return Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field). + */ +__STATIC_INLINE uint32_t __NVIC_GetPriorityGrouping(void) +{ + return ((uint32_t)((SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos)); +} + + +/** + \brief Enable Interrupt + \details Enables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + __COMPILER_BARRIER(); + NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __COMPILER_BARRIER(); + } +} + + +/** + \brief Get Interrupt Enable status + \details Returns a device specific interrupt enable status from the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt is not enabled. + \return 1 Interrupt is enabled. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Disable Interrupt + \details Disables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_DisableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __DSB(); + __ISB(); + } +} + + +/** + \brief Get Pending Interrupt + \details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not pending. + \return 1 Interrupt status is pending. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Pending Interrupt + \details Sets the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Clear Pending Interrupt + \details Clears the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Active Interrupt + \details Reads the active register in the NVIC and returns the active bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not active. + \return 1 Interrupt status is active. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetActive(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Interrupt Priority + \details Sets the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \param [in] priority Priority to set. + \note The priority cannot be set for every processor exception. + */ +__STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->IP[((uint32_t)IRQn)] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } + else + { + SCB->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } +} + + +/** + \brief Get Interrupt Priority + \details Reads the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Interrupt Priority. + Value is aligned automatically to the implemented priority bits of the microcontroller. + */ +__STATIC_INLINE uint32_t __NVIC_GetPriority(IRQn_Type IRQn) +{ + + if ((int32_t)(IRQn) >= 0) + { + return(((uint32_t)NVIC->IP[((uint32_t)IRQn)] >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return(((uint32_t)SCB->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] >> (8U - __NVIC_PRIO_BITS))); + } +} + + +/** + \brief Encode Priority + \details Encodes the priority for an interrupt with the given priority group, + preemptive priority value, and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Used priority group. + \param [in] PreemptPriority Preemptive priority value (starting from 0). + \param [in] SubPriority Subpriority value (starting from 0). + \return Encoded priority. Value can be used in the function \ref NVIC_SetPriority(). + */ +__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + return ( + ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) | + ((SubPriority & (uint32_t)((1UL << (SubPriorityBits )) - 1UL))) + ); +} + + +/** + \brief Decode Priority + \details Decodes an interrupt priority value with a given priority group to + preemptive priority value and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set. + \param [in] Priority Priority value, which can be retrieved with the function \ref NVIC_GetPriority(). + \param [in] PriorityGroup Used priority group. + \param [out] pPreemptPriority Preemptive priority value (starting from 0). + \param [out] pSubPriority Subpriority value (starting from 0). + */ +__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* const pPreemptPriority, uint32_t* const pSubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + *pPreemptPriority = (Priority >> SubPriorityBits) & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL); + *pSubPriority = (Priority ) & (uint32_t)((1UL << (SubPriorityBits )) - 1UL); +} + + +/** + \brief Set Interrupt Vector + \details Sets an interrupt vector in SRAM based interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + VTOR must been relocated to SRAM before. + \param [in] IRQn Interrupt number + \param [in] vector Address of interrupt handler function + */ +__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector) +{ + uint32_t *vectors = (uint32_t *)SCB->VTOR; + vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET] = vector; + __DSB(); +} + + +/** + \brief Get Interrupt Vector + \details Reads an interrupt vector from interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Address of interrupt handler function + */ +__STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn) +{ + uint32_t *vectors = (uint32_t *)SCB->VTOR; + return vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET]; +} + + +/** + \brief System Reset + \details Initiates a system reset request to reset the MCU. + */ +__NO_RETURN __STATIC_INLINE void __NVIC_SystemReset(void) +{ + __DSB(); /* Ensure all outstanding memory accesses included + buffered write are completed before reset */ + SCB->AIRCR = (uint32_t)((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) | + SCB_AIRCR_SYSRESETREQ_Msk ); /* Keep priority group unchanged */ + __DSB(); /* Ensure completion of memory access */ + + for(;;) /* wait until reset */ + { + __NOP(); + } +} + +/*@} end of CMSIS_Core_NVICFunctions */ + + +/* ########################## MPU functions #################################### */ + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + +#include "mpu_armv7.h" + +#endif + + +/* ########################## FPU functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_FpuFunctions FPU Functions + \brief Function that provides FPU type. + @{ + */ + +/** + \brief get FPU type + \details returns the FPU type + \returns + - \b 0: No FPU + - \b 1: Single precision FPU + - \b 2: Double + Single precision FPU + */ +__STATIC_INLINE uint32_t SCB_GetFPUType(void) +{ + uint32_t mvfr0; + + mvfr0 = SCB->MVFR0; + if ((mvfr0 & (FPU_MVFR0_Single_precision_Msk | FPU_MVFR0_Double_precision_Msk)) == 0x220U) + { + return 2U; /* Double + Single precision FPU */ + } + else if ((mvfr0 & (FPU_MVFR0_Single_precision_Msk | FPU_MVFR0_Double_precision_Msk)) == 0x020U) + { + return 1U; /* Single precision FPU */ + } + else + { + return 0U; /* No FPU */ + } +} + +/*@} end of CMSIS_Core_FpuFunctions */ + + +/* ########################## Cache functions #################################### */ + +#if ((defined (__ICACHE_PRESENT) && (__ICACHE_PRESENT == 1U)) || \ + (defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U))) +#include "cachel1_armv7.h" +#endif + + +/* ################################## SysTick function ############################################ */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SysTickFunctions SysTick Functions + \brief Functions that configure the System. + @{ + */ + +#if defined (__Vendor_SysTickConfig) && (__Vendor_SysTickConfig == 0U) + +/** + \brief System Tick Configuration + \details Initializes the System Timer and its interrupt, and starts the System Tick Timer. + Counter is in free running mode to generate periodic interrupts. + \param [in] ticks Number of ticks between two interrupts. + \return 0 Function succeeded. + \return 1 Function failed. + \note When the variable __Vendor_SysTickConfig is set to 1, then the + function SysTick_Config is not included. In this case, the file device.h + must contain a vendor-specific implementation of this function. + */ +__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks) +{ + if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) + { + return (1UL); /* Reload value impossible */ + } + + SysTick->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ + NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ + SysTick->VAL = 0UL; /* Load the SysTick Counter Value */ + SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0UL); /* Function successful */ +} + +#endif + +/*@} end of CMSIS_Core_SysTickFunctions */ + + + +/* ##################################### Debug In/Output function ########################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_core_DebugFunctions ITM Functions + \brief Functions that access the ITM debug interface. + @{ + */ + +extern volatile int32_t ITM_RxBuffer; /*!< External variable to receive characters. */ +#define ITM_RXBUFFER_EMPTY ((int32_t)0x5AA55AA5U) /*!< Value identifying \ref ITM_RxBuffer is ready for next character. */ + + +/** + \brief ITM Send Character + \details Transmits a character via the ITM channel 0, and + \li Just returns when no debugger is connected that has booked the output. + \li Is blocking when a debugger is connected, but the previous character sent has not been transmitted. + \param [in] ch Character to transmit. + \returns Character to transmit. + */ +__STATIC_INLINE uint32_t ITM_SendChar (uint32_t ch) +{ + if (((ITM->TCR & ITM_TCR_ITMENA_Msk) != 0UL) && /* ITM enabled */ + ((ITM->TER & 1UL ) != 0UL) ) /* ITM Port #0 enabled */ + { + while (ITM->PORT[0U].u32 == 0UL) + { + __NOP(); + } + ITM->PORT[0U].u8 = (uint8_t)ch; + } + return (ch); +} + + +/** + \brief ITM Receive Character + \details Inputs a character via the external variable \ref ITM_RxBuffer. + \return Received character. + \return -1 No character pending. + */ +__STATIC_INLINE int32_t ITM_ReceiveChar (void) +{ + int32_t ch = -1; /* no character available */ + + if (ITM_RxBuffer != ITM_RXBUFFER_EMPTY) + { + ch = ITM_RxBuffer; + ITM_RxBuffer = ITM_RXBUFFER_EMPTY; /* ready for next character */ + } + + return (ch); +} + + +/** + \brief ITM Check Character + \details Checks whether a character is pending for reading in the variable \ref ITM_RxBuffer. + \return 0 No character available. + \return 1 Character available. + */ +__STATIC_INLINE int32_t ITM_CheckChar (void) +{ + + if (ITM_RxBuffer == ITM_RXBUFFER_EMPTY) + { + return (0); /* no character available */ + } + else + { + return (1); /* character available */ + } +} + +/*@} end of CMSIS_core_DebugFunctions */ + + + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_CM7_H_DEPENDANT */ + +#endif /* __CMSIS_GENERIC */ diff --git a/bsp/renesas/ra8m1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm85.h b/bsp/renesas/ra8m1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm85.h new file mode 100644 index 000000000000..60463111897f --- /dev/null +++ b/bsp/renesas/ra8m1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm85.h @@ -0,0 +1,4672 @@ +/**************************************************************************//** + * @file core_cm85.h + * @brief CMSIS Cortex-M85 Core Peripheral Access Layer Header File + * @version V1.0.4 + * @date 21. April 2022 + ******************************************************************************/ +/* + * Copyright (c) 2022 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#elif defined (__clang__) + #pragma clang system_header /* treat file as system include file */ +#elif defined ( __GNUC__ ) + #pragma GCC diagnostic ignored "-Wpedantic" /* disable pedantic warning due to unnamed structs/unions */ +#endif + +#ifndef __CORE_CM85_H_GENERIC +#define __CORE_CM85_H_GENERIC + +#include + +#ifdef __cplusplus + extern "C" { +#endif + +/** + \page CMSIS_MISRA_Exceptions MISRA-C:2004 Compliance Exceptions + CMSIS violates the following MISRA-C:2004 rules: + + \li Required Rule 8.5, object/function definition in header file.
+ Function definitions in header files are used to allow 'inlining'. + + \li Required Rule 18.4, declaration of union type or object of union type: '{...}'.
+ Unions are used for effective representation of core registers. + + \li Advisory Rule 19.7, Function-like macro defined.
+ Function-like macros are used to allow more efficient code. + */ + + +/******************************************************************************* + * CMSIS definitions + ******************************************************************************/ +/** + \ingroup Cortex_M85 + @{ + */ + +#include "cmsis_version.h" + +/* CMSIS CM85 definitions */ + +#define __CORTEX_M (85U) /*!< Cortex-M Core */ + +#if defined ( __CC_ARM ) + #error Legacy Arm Compiler does not support Armv8.1-M target architecture. +#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) + #if defined __ARM_FP + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + + #if defined(__ARM_FEATURE_DSP) + #if defined(__DSP_PRESENT) && (__DSP_PRESENT == 1U) + #define __DSP_USED 1U + #else + #error "Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)" + #define __DSP_USED 0U + #endif + #else + #define __DSP_USED 0U + #endif + +#elif defined ( __GNUC__ ) + #if defined (__VFP_FP__) && !defined(__SOFTFP__) + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + + #if defined(__ARM_FEATURE_DSP) + #if defined(__DSP_PRESENT) && (__DSP_PRESENT == 1U) + #define __DSP_USED 1U + #else + #error "Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)" + #define __DSP_USED 0U + #endif + #else + #define __DSP_USED 0U + #endif + +#elif defined ( __ICCARM__ ) + #if defined __ARMVFP__ + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + + #if defined(__ARM_FEATURE_DSP) + #if defined(__DSP_PRESENT) && (__DSP_PRESENT == 1U) + #define __DSP_USED 1U + #else + #error "Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)" + #define __DSP_USED 0U + #endif + #else + #define __DSP_USED 0U + #endif + +#elif defined ( __TI_ARM__ ) + #if defined __TI_VFP_SUPPORT__ + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined ( __TASKING__ ) + #if defined __FPU_VFP__ + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined ( __CSMC__ ) + #if ( __CSMC__ & 0x400U) + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#endif + +#include "cmsis_compiler.h" /* CMSIS compiler specific defines */ + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_CM85_H_GENERIC */ + +#ifndef __CMSIS_GENERIC + +#ifndef __CORE_CM85_H_DEPENDANT +#define __CORE_CM85_H_DEPENDANT + +#ifdef __cplusplus + extern "C" { +#endif + +/* check device defines and use defaults */ +#if defined __CHECK_DEVICE_DEFINES + #ifndef __CM85_REV + #define __CM85_REV 0x0001U + #warning "__CM85_REV not defined in device header file; using default!" + #endif + + #ifndef __FPU_PRESENT + #define __FPU_PRESENT 0U + #warning "__FPU_PRESENT not defined in device header file; using default!" + #endif + + #if __FPU_PRESENT != 0U + #ifndef __FPU_DP + #define __FPU_DP 0U + #warning "__FPU_DP not defined in device header file; using default!" + #endif + #endif + + #ifndef __MPU_PRESENT + #define __MPU_PRESENT 0U + #warning "__MPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __ICACHE_PRESENT + #define __ICACHE_PRESENT 0U + #warning "__ICACHE_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __DCACHE_PRESENT + #define __DCACHE_PRESENT 0U + #warning "__DCACHE_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __VTOR_PRESENT + #define __VTOR_PRESENT 1U + #warning "__VTOR_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __PMU_PRESENT + #define __PMU_PRESENT 0U + #warning "__PMU_PRESENT not defined in device header file; using default!" + #endif + + #if __PMU_PRESENT != 0U + #ifndef __PMU_NUM_EVENTCNT + #define __PMU_NUM_EVENTCNT 8U + #warning "__PMU_NUM_EVENTCNT not defined in device header file; using default!" + #elif (__PMU_NUM_EVENTCNT > 8 || __PMU_NUM_EVENTCNT < 2) + #error "__PMU_NUM_EVENTCNT is out of range in device header file!" */ + #endif + #endif + + #ifndef __SAUREGION_PRESENT + #define __SAUREGION_PRESENT 0U + #warning "__SAUREGION_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __DSP_PRESENT + #define __DSP_PRESENT 0U + #warning "__DSP_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __NVIC_PRIO_BITS + #define __NVIC_PRIO_BITS 3U + #warning "__NVIC_PRIO_BITS not defined in device header file; using default!" + #endif + + #ifndef __Vendor_SysTickConfig + #define __Vendor_SysTickConfig 0U + #warning "__Vendor_SysTickConfig not defined in device header file; using default!" + #endif +#endif + +/* IO definitions (access restrictions to peripheral registers) */ +/** + \defgroup CMSIS_glob_defs CMSIS Global Defines + + IO Type Qualifiers are used + \li to specify the access to peripheral variables. + \li for automatic generation of peripheral register debug information. +*/ +#ifdef __cplusplus + #define __I volatile /*!< Defines 'read only' permissions */ +#else + #define __I volatile const /*!< Defines 'read only' permissions */ +#endif +#define __O volatile /*!< Defines 'write only' permissions */ +#define __IO volatile /*!< Defines 'read / write' permissions */ + +/* following defines should be used for structure members */ +#define __IM volatile const /*! Defines 'read only' structure member permissions */ +#define __OM volatile /*! Defines 'write only' structure member permissions */ +#define __IOM volatile /*! Defines 'read / write' structure member permissions */ + +/*@} end of group Cortex_M85 */ + + + +/******************************************************************************* + * Register Abstraction + Core Register contain: + - Core Register + - Core NVIC Register + - Core EWIC Register + - Core SCB Register + - Core SysTick Register + - Core Debug Register + - Core PMU Register + - Core MPU Register + - Core SAU Register + - Core FPU Register + ******************************************************************************/ +/** + \defgroup CMSIS_core_register Defines and Type Definitions + \brief Type definitions and defines for Cortex-M processor based devices. +*/ + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CORE Status and Control Registers + \brief Core Register type definitions. + @{ + */ + +/** + \brief Union type to access the Application Program Status Register (APSR). + */ +typedef union +{ + struct + { + uint32_t _reserved0:16; /*!< bit: 0..15 Reserved */ + uint32_t GE:4; /*!< bit: 16..19 Greater than or Equal flags */ + uint32_t _reserved1:7; /*!< bit: 20..26 Reserved */ + uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} APSR_Type; + +/* APSR Register Definitions */ +#define APSR_N_Pos 31U /*!< APSR: N Position */ +#define APSR_N_Msk (1UL << APSR_N_Pos) /*!< APSR: N Mask */ + +#define APSR_Z_Pos 30U /*!< APSR: Z Position */ +#define APSR_Z_Msk (1UL << APSR_Z_Pos) /*!< APSR: Z Mask */ + +#define APSR_C_Pos 29U /*!< APSR: C Position */ +#define APSR_C_Msk (1UL << APSR_C_Pos) /*!< APSR: C Mask */ + +#define APSR_V_Pos 28U /*!< APSR: V Position */ +#define APSR_V_Msk (1UL << APSR_V_Pos) /*!< APSR: V Mask */ + +#define APSR_Q_Pos 27U /*!< APSR: Q Position */ +#define APSR_Q_Msk (1UL << APSR_Q_Pos) /*!< APSR: Q Mask */ + +#define APSR_GE_Pos 16U /*!< APSR: GE Position */ +#define APSR_GE_Msk (0xFUL << APSR_GE_Pos) /*!< APSR: GE Mask */ + + +/** + \brief Union type to access the Interrupt Program Status Register (IPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:23; /*!< bit: 9..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} IPSR_Type; + +/* IPSR Register Definitions */ +#define IPSR_ISR_Pos 0U /*!< IPSR: ISR Position */ +#define IPSR_ISR_Msk (0x1FFUL /*<< IPSR_ISR_Pos*/) /*!< IPSR: ISR Mask */ + + +/** + \brief Union type to access the Special-Purpose Program Status Registers (xPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:7; /*!< bit: 9..15 Reserved */ + uint32_t GE:4; /*!< bit: 16..19 Greater than or Equal flags */ + uint32_t _reserved1:1; /*!< bit: 20 Reserved */ + uint32_t B:1; /*!< bit: 21 BTI active (read 0) */ + uint32_t _reserved2:2; /*!< bit: 22..23 Reserved */ + uint32_t T:1; /*!< bit: 24 Thumb bit (read 0) */ + uint32_t IT:2; /*!< bit: 25..26 saved IT state (read 0) */ + uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} xPSR_Type; + +/* xPSR Register Definitions */ +#define xPSR_N_Pos 31U /*!< xPSR: N Position */ +#define xPSR_N_Msk (1UL << xPSR_N_Pos) /*!< xPSR: N Mask */ + +#define xPSR_Z_Pos 30U /*!< xPSR: Z Position */ +#define xPSR_Z_Msk (1UL << xPSR_Z_Pos) /*!< xPSR: Z Mask */ + +#define xPSR_C_Pos 29U /*!< xPSR: C Position */ +#define xPSR_C_Msk (1UL << xPSR_C_Pos) /*!< xPSR: C Mask */ + +#define xPSR_V_Pos 28U /*!< xPSR: V Position */ +#define xPSR_V_Msk (1UL << xPSR_V_Pos) /*!< xPSR: V Mask */ + +#define xPSR_Q_Pos 27U /*!< xPSR: Q Position */ +#define xPSR_Q_Msk (1UL << xPSR_Q_Pos) /*!< xPSR: Q Mask */ + +#define xPSR_IT_Pos 25U /*!< xPSR: IT Position */ +#define xPSR_IT_Msk (3UL << xPSR_IT_Pos) /*!< xPSR: IT Mask */ + +#define xPSR_T_Pos 24U /*!< xPSR: T Position */ +#define xPSR_T_Msk (1UL << xPSR_T_Pos) /*!< xPSR: T Mask */ + +#define xPSR_B_Pos 21U /*!< xPSR: B Position */ +#define xPSR_B_Msk (1UL << xPSR_B_Pos) /*!< xPSR: B Mask */ + +#define xPSR_GE_Pos 16U /*!< xPSR: GE Position */ +#define xPSR_GE_Msk (0xFUL << xPSR_GE_Pos) /*!< xPSR: GE Mask */ + +#define xPSR_ISR_Pos 0U /*!< xPSR: ISR Position */ +#define xPSR_ISR_Msk (0x1FFUL /*<< xPSR_ISR_Pos*/) /*!< xPSR: ISR Mask */ + + +/** + \brief Union type to access the Control Registers (CONTROL). + */ +typedef union +{ + struct + { + uint32_t nPRIV:1; /*!< bit: 0 Execution privilege in Thread mode */ + uint32_t SPSEL:1; /*!< bit: 1 Stack-pointer select */ + uint32_t FPCA:1; /*!< bit: 2 Floating-point context active */ + uint32_t SFPA:1; /*!< bit: 3 Secure floating-point active */ + uint32_t BTI_EN:1; /*!< bit: 4 Privileged branch target identification enable */ + uint32_t UBTI_EN:1; /*!< bit: 5 Unprivileged branch target identification enable */ + uint32_t PAC_EN:1; /*!< bit: 6 Privileged pointer authentication enable */ + uint32_t UPAC_EN:1; /*!< bit: 7 Unprivileged pointer authentication enable */ + uint32_t _reserved1:24; /*!< bit: 8..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} CONTROL_Type; + +/* CONTROL Register Definitions */ +#define CONTROL_UPAC_EN_Pos 7U /*!< CONTROL: UPAC_EN Position */ +#define CONTROL_UPAC_EN_Msk (1UL << CONTROL_UPAC_EN_Pos) /*!< CONTROL: UPAC_EN Mask */ + +#define CONTROL_PAC_EN_Pos 6U /*!< CONTROL: PAC_EN Position */ +#define CONTROL_PAC_EN_Msk (1UL << CONTROL_PAC_EN_Pos) /*!< CONTROL: PAC_EN Mask */ + +#define CONTROL_UBTI_EN_Pos 5U /*!< CONTROL: UBTI_EN Position */ +#define CONTROL_UBTI_EN_Msk (1UL << CONTROL_UBTI_EN_Pos) /*!< CONTROL: UBTI_EN Mask */ + +#define CONTROL_BTI_EN_Pos 4U /*!< CONTROL: BTI_EN Position */ +#define CONTROL_BTI_EN_Msk (1UL << CONTROL_BTI_EN_Pos) /*!< CONTROL: BTI_EN Mask */ + +#define CONTROL_SFPA_Pos 3U /*!< CONTROL: SFPA Position */ +#define CONTROL_SFPA_Msk (1UL << CONTROL_SFPA_Pos) /*!< CONTROL: SFPA Mask */ + +#define CONTROL_FPCA_Pos 2U /*!< CONTROL: FPCA Position */ +#define CONTROL_FPCA_Msk (1UL << CONTROL_FPCA_Pos) /*!< CONTROL: FPCA Mask */ + +#define CONTROL_SPSEL_Pos 1U /*!< CONTROL: SPSEL Position */ +#define CONTROL_SPSEL_Msk (1UL << CONTROL_SPSEL_Pos) /*!< CONTROL: SPSEL Mask */ + +#define CONTROL_nPRIV_Pos 0U /*!< CONTROL: nPRIV Position */ +#define CONTROL_nPRIV_Msk (1UL /*<< CONTROL_nPRIV_Pos*/) /*!< CONTROL: nPRIV Mask */ + +/*@} end of group CMSIS_CORE */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_NVIC Nested Vectored Interrupt Controller (NVIC) + \brief Type definitions for the NVIC Registers + @{ + */ + +/** + \brief Structure type to access the Nested Vectored Interrupt Controller (NVIC). + */ +typedef struct +{ + __IOM uint32_t ISER[16U]; /*!< Offset: 0x000 (R/W) Interrupt Set Enable Register */ + uint32_t RESERVED0[16U]; + __IOM uint32_t ICER[16U]; /*!< Offset: 0x080 (R/W) Interrupt Clear Enable Register */ + uint32_t RSERVED1[16U]; + __IOM uint32_t ISPR[16U]; /*!< Offset: 0x100 (R/W) Interrupt Set Pending Register */ + uint32_t RESERVED2[16U]; + __IOM uint32_t ICPR[16U]; /*!< Offset: 0x180 (R/W) Interrupt Clear Pending Register */ + uint32_t RESERVED3[16U]; + __IOM uint32_t IABR[16U]; /*!< Offset: 0x200 (R/W) Interrupt Active bit Register */ + uint32_t RESERVED4[16U]; + __IOM uint32_t ITNS[16U]; /*!< Offset: 0x280 (R/W) Interrupt Non-Secure State Register */ + uint32_t RESERVED5[16U]; + __IOM uint8_t IPR[496U]; /*!< Offset: 0x300 (R/W) Interrupt Priority Register (8Bit wide) */ + uint32_t RESERVED6[580U]; + __OM uint32_t STIR; /*!< Offset: 0xE00 ( /W) Software Trigger Interrupt Register */ +} NVIC_Type; + +/* Software Triggered Interrupt Register Definitions */ +#define NVIC_STIR_INTID_Pos 0U /*!< STIR: INTLINESNUM Position */ +#define NVIC_STIR_INTID_Msk (0x1FFUL /*<< NVIC_STIR_INTID_Pos*/) /*!< STIR: INTLINESNUM Mask */ + +/*@} end of group CMSIS_NVIC */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SCB System Control Block (SCB) + \brief Type definitions for the System Control Block Registers + @{ + */ + +/** + \brief Structure type to access the System Control Block (SCB). + */ +typedef struct +{ + __IM uint32_t CPUID; /*!< Offset: 0x000 (R/ ) CPUID Base Register */ + __IOM uint32_t ICSR; /*!< Offset: 0x004 (R/W) Interrupt Control and State Register */ + __IOM uint32_t VTOR; /*!< Offset: 0x008 (R/W) Vector Table Offset Register */ + __IOM uint32_t AIRCR; /*!< Offset: 0x00C (R/W) Application Interrupt and Reset Control Register */ + __IOM uint32_t SCR; /*!< Offset: 0x010 (R/W) System Control Register */ + __IOM uint32_t CCR; /*!< Offset: 0x014 (R/W) Configuration Control Register */ + __IOM uint8_t SHPR[12U]; /*!< Offset: 0x018 (R/W) System Handlers Priority Registers (4-7, 8-11, 12-15) */ + __IOM uint32_t SHCSR; /*!< Offset: 0x024 (R/W) System Handler Control and State Register */ + __IOM uint32_t CFSR; /*!< Offset: 0x028 (R/W) Configurable Fault Status Register */ + __IOM uint32_t HFSR; /*!< Offset: 0x02C (R/W) HardFault Status Register */ + __IOM uint32_t DFSR; /*!< Offset: 0x030 (R/W) Debug Fault Status Register */ + __IOM uint32_t MMFAR; /*!< Offset: 0x034 (R/W) MemManage Fault Address Register */ + __IOM uint32_t BFAR; /*!< Offset: 0x038 (R/W) BusFault Address Register */ + __IOM uint32_t AFSR; /*!< Offset: 0x03C (R/W) Auxiliary Fault Status Register */ + __IM uint32_t ID_PFR[2U]; /*!< Offset: 0x040 (R/ ) Processor Feature Register */ + __IM uint32_t ID_DFR; /*!< Offset: 0x048 (R/ ) Debug Feature Register */ + __IM uint32_t ID_AFR; /*!< Offset: 0x04C (R/ ) Auxiliary Feature Register */ + __IM uint32_t ID_MMFR[4U]; /*!< Offset: 0x050 (R/ ) Memory Model Feature Register */ + __IM uint32_t ID_ISAR[6U]; /*!< Offset: 0x060 (R/ ) Instruction Set Attributes Register */ + __IM uint32_t CLIDR; /*!< Offset: 0x078 (R/ ) Cache Level ID register */ + __IM uint32_t CTR; /*!< Offset: 0x07C (R/ ) Cache Type register */ + __IM uint32_t CCSIDR; /*!< Offset: 0x080 (R/ ) Cache Size ID Register */ + __IOM uint32_t CSSELR; /*!< Offset: 0x084 (R/W) Cache Size Selection Register */ + __IOM uint32_t CPACR; /*!< Offset: 0x088 (R/W) Coprocessor Access Control Register */ + __IOM uint32_t NSACR; /*!< Offset: 0x08C (R/W) Non-Secure Access Control Register */ + uint32_t RESERVED7[21U]; + __IOM uint32_t SFSR; /*!< Offset: 0x0E4 (R/W) Secure Fault Status Register */ + __IOM uint32_t SFAR; /*!< Offset: 0x0E8 (R/W) Secure Fault Address Register */ + uint32_t RESERVED3[69U]; + __OM uint32_t STIR; /*!< Offset: 0x200 ( /W) Software Triggered Interrupt Register */ + __IOM uint32_t RFSR; /*!< Offset: 0x204 (R/W) RAS Fault Status Register */ + uint32_t RESERVED4[14U]; + __IM uint32_t MVFR0; /*!< Offset: 0x240 (R/ ) Media and VFP Feature Register 0 */ + __IM uint32_t MVFR1; /*!< Offset: 0x244 (R/ ) Media and VFP Feature Register 1 */ + __IM uint32_t MVFR2; /*!< Offset: 0x248 (R/ ) Media and VFP Feature Register 2 */ + uint32_t RESERVED5[1U]; + __OM uint32_t ICIALLU; /*!< Offset: 0x250 ( /W) I-Cache Invalidate All to PoU */ + uint32_t RESERVED6[1U]; + __OM uint32_t ICIMVAU; /*!< Offset: 0x258 ( /W) I-Cache Invalidate by MVA to PoU */ + __OM uint32_t DCIMVAC; /*!< Offset: 0x25C ( /W) D-Cache Invalidate by MVA to PoC */ + __OM uint32_t DCISW; /*!< Offset: 0x260 ( /W) D-Cache Invalidate by Set-way */ + __OM uint32_t DCCMVAU; /*!< Offset: 0x264 ( /W) D-Cache Clean by MVA to PoU */ + __OM uint32_t DCCMVAC; /*!< Offset: 0x268 ( /W) D-Cache Clean by MVA to PoC */ + __OM uint32_t DCCSW; /*!< Offset: 0x26C ( /W) D-Cache Clean by Set-way */ + __OM uint32_t DCCIMVAC; /*!< Offset: 0x270 ( /W) D-Cache Clean and Invalidate by MVA to PoC */ + __OM uint32_t DCCISW; /*!< Offset: 0x274 ( /W) D-Cache Clean and Invalidate by Set-way */ + __OM uint32_t BPIALL; /*!< Offset: 0x278 ( /W) Branch Predictor Invalidate All */ +} SCB_Type; + +/* SCB CPUID Register Definitions */ +#define SCB_CPUID_IMPLEMENTER_Pos 24U /*!< SCB CPUID: IMPLEMENTER Position */ +#define SCB_CPUID_IMPLEMENTER_Msk (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos) /*!< SCB CPUID: IMPLEMENTER Mask */ + +#define SCB_CPUID_VARIANT_Pos 20U /*!< SCB CPUID: VARIANT Position */ +#define SCB_CPUID_VARIANT_Msk (0xFUL << SCB_CPUID_VARIANT_Pos) /*!< SCB CPUID: VARIANT Mask */ + +#define SCB_CPUID_ARCHITECTURE_Pos 16U /*!< SCB CPUID: ARCHITECTURE Position */ +#define SCB_CPUID_ARCHITECTURE_Msk (0xFUL << SCB_CPUID_ARCHITECTURE_Pos) /*!< SCB CPUID: ARCHITECTURE Mask */ + +#define SCB_CPUID_PARTNO_Pos 4U /*!< SCB CPUID: PARTNO Position */ +#define SCB_CPUID_PARTNO_Msk (0xFFFUL << SCB_CPUID_PARTNO_Pos) /*!< SCB CPUID: PARTNO Mask */ + +#define SCB_CPUID_REVISION_Pos 0U /*!< SCB CPUID: REVISION Position */ +#define SCB_CPUID_REVISION_Msk (0xFUL /*<< SCB_CPUID_REVISION_Pos*/) /*!< SCB CPUID: REVISION Mask */ + +/* SCB Interrupt Control State Register Definitions */ +#define SCB_ICSR_PENDNMISET_Pos 31U /*!< SCB ICSR: PENDNMISET Position */ +#define SCB_ICSR_PENDNMISET_Msk (1UL << SCB_ICSR_PENDNMISET_Pos) /*!< SCB ICSR: PENDNMISET Mask */ + +#define SCB_ICSR_NMIPENDSET_Pos SCB_ICSR_PENDNMISET_Pos /*!< SCB ICSR: NMIPENDSET Position, backward compatibility */ +#define SCB_ICSR_NMIPENDSET_Msk SCB_ICSR_PENDNMISET_Msk /*!< SCB ICSR: NMIPENDSET Mask, backward compatibility */ + +#define SCB_ICSR_PENDNMICLR_Pos 30U /*!< SCB ICSR: PENDNMICLR Position */ +#define SCB_ICSR_PENDNMICLR_Msk (1UL << SCB_ICSR_PENDNMICLR_Pos) /*!< SCB ICSR: PENDNMICLR Mask */ + +#define SCB_ICSR_PENDSVSET_Pos 28U /*!< SCB ICSR: PENDSVSET Position */ +#define SCB_ICSR_PENDSVSET_Msk (1UL << SCB_ICSR_PENDSVSET_Pos) /*!< SCB ICSR: PENDSVSET Mask */ + +#define SCB_ICSR_PENDSVCLR_Pos 27U /*!< SCB ICSR: PENDSVCLR Position */ +#define SCB_ICSR_PENDSVCLR_Msk (1UL << SCB_ICSR_PENDSVCLR_Pos) /*!< SCB ICSR: PENDSVCLR Mask */ + +#define SCB_ICSR_PENDSTSET_Pos 26U /*!< SCB ICSR: PENDSTSET Position */ +#define SCB_ICSR_PENDSTSET_Msk (1UL << SCB_ICSR_PENDSTSET_Pos) /*!< SCB ICSR: PENDSTSET Mask */ + +#define SCB_ICSR_PENDSTCLR_Pos 25U /*!< SCB ICSR: PENDSTCLR Position */ +#define SCB_ICSR_PENDSTCLR_Msk (1UL << SCB_ICSR_PENDSTCLR_Pos) /*!< SCB ICSR: PENDSTCLR Mask */ + +#define SCB_ICSR_STTNS_Pos 24U /*!< SCB ICSR: STTNS Position (Security Extension) */ +#define SCB_ICSR_STTNS_Msk (1UL << SCB_ICSR_STTNS_Pos) /*!< SCB ICSR: STTNS Mask (Security Extension) */ + +#define SCB_ICSR_ISRPREEMPT_Pos 23U /*!< SCB ICSR: ISRPREEMPT Position */ +#define SCB_ICSR_ISRPREEMPT_Msk (1UL << SCB_ICSR_ISRPREEMPT_Pos) /*!< SCB ICSR: ISRPREEMPT Mask */ + +#define SCB_ICSR_ISRPENDING_Pos 22U /*!< SCB ICSR: ISRPENDING Position */ +#define SCB_ICSR_ISRPENDING_Msk (1UL << SCB_ICSR_ISRPENDING_Pos) /*!< SCB ICSR: ISRPENDING Mask */ + +#define SCB_ICSR_VECTPENDING_Pos 12U /*!< SCB ICSR: VECTPENDING Position */ +#define SCB_ICSR_VECTPENDING_Msk (0x1FFUL << SCB_ICSR_VECTPENDING_Pos) /*!< SCB ICSR: VECTPENDING Mask */ + +#define SCB_ICSR_RETTOBASE_Pos 11U /*!< SCB ICSR: RETTOBASE Position */ +#define SCB_ICSR_RETTOBASE_Msk (1UL << SCB_ICSR_RETTOBASE_Pos) /*!< SCB ICSR: RETTOBASE Mask */ + +#define SCB_ICSR_VECTACTIVE_Pos 0U /*!< SCB ICSR: VECTACTIVE Position */ +#define SCB_ICSR_VECTACTIVE_Msk (0x1FFUL /*<< SCB_ICSR_VECTACTIVE_Pos*/) /*!< SCB ICSR: VECTACTIVE Mask */ + +/* SCB Vector Table Offset Register Definitions */ +#define SCB_VTOR_TBLOFF_Pos 7U /*!< SCB VTOR: TBLOFF Position */ +#define SCB_VTOR_TBLOFF_Msk (0x1FFFFFFUL << SCB_VTOR_TBLOFF_Pos) /*!< SCB VTOR: TBLOFF Mask */ + +/* SCB Application Interrupt and Reset Control Register Definitions */ +#define SCB_AIRCR_VECTKEY_Pos 16U /*!< SCB AIRCR: VECTKEY Position */ +#define SCB_AIRCR_VECTKEY_Msk (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos) /*!< SCB AIRCR: VECTKEY Mask */ + +#define SCB_AIRCR_VECTKEYSTAT_Pos 16U /*!< SCB AIRCR: VECTKEYSTAT Position */ +#define SCB_AIRCR_VECTKEYSTAT_Msk (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos) /*!< SCB AIRCR: VECTKEYSTAT Mask */ + +#define SCB_AIRCR_ENDIANESS_Pos 15U /*!< SCB AIRCR: ENDIANESS Position */ +#define SCB_AIRCR_ENDIANESS_Msk (1UL << SCB_AIRCR_ENDIANESS_Pos) /*!< SCB AIRCR: ENDIANESS Mask */ + +#define SCB_AIRCR_PRIS_Pos 14U /*!< SCB AIRCR: PRIS Position */ +#define SCB_AIRCR_PRIS_Msk (1UL << SCB_AIRCR_PRIS_Pos) /*!< SCB AIRCR: PRIS Mask */ + +#define SCB_AIRCR_BFHFNMINS_Pos 13U /*!< SCB AIRCR: BFHFNMINS Position */ +#define SCB_AIRCR_BFHFNMINS_Msk (1UL << SCB_AIRCR_BFHFNMINS_Pos) /*!< SCB AIRCR: BFHFNMINS Mask */ + +#define SCB_AIRCR_PRIGROUP_Pos 8U /*!< SCB AIRCR: PRIGROUP Position */ +#define SCB_AIRCR_PRIGROUP_Msk (7UL << SCB_AIRCR_PRIGROUP_Pos) /*!< SCB AIRCR: PRIGROUP Mask */ + +#define SCB_AIRCR_IESB_Pos 5U /*!< SCB AIRCR: Implicit ESB Enable Position */ +#define SCB_AIRCR_IESB_Msk (1UL << SCB_AIRCR_IESB_Pos) /*!< SCB AIRCR: Implicit ESB Enable Mask */ + +#define SCB_AIRCR_DIT_Pos 4U /*!< SCB AIRCR: Data Independent Timing Position */ +#define SCB_AIRCR_DIT_Msk (1UL << SCB_AIRCR_DIT_Pos) /*!< SCB AIRCR: Data Independent Timing Mask */ + +#define SCB_AIRCR_SYSRESETREQS_Pos 3U /*!< SCB AIRCR: SYSRESETREQS Position */ +#define SCB_AIRCR_SYSRESETREQS_Msk (1UL << SCB_AIRCR_SYSRESETREQS_Pos) /*!< SCB AIRCR: SYSRESETREQS Mask */ + +#define SCB_AIRCR_SYSRESETREQ_Pos 2U /*!< SCB AIRCR: SYSRESETREQ Position */ +#define SCB_AIRCR_SYSRESETREQ_Msk (1UL << SCB_AIRCR_SYSRESETREQ_Pos) /*!< SCB AIRCR: SYSRESETREQ Mask */ + +#define SCB_AIRCR_VECTCLRACTIVE_Pos 1U /*!< SCB AIRCR: VECTCLRACTIVE Position */ +#define SCB_AIRCR_VECTCLRACTIVE_Msk (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos) /*!< SCB AIRCR: VECTCLRACTIVE Mask */ + +/* SCB System Control Register Definitions */ +#define SCB_SCR_SEVONPEND_Pos 4U /*!< SCB SCR: SEVONPEND Position */ +#define SCB_SCR_SEVONPEND_Msk (1UL << SCB_SCR_SEVONPEND_Pos) /*!< SCB SCR: SEVONPEND Mask */ + +#define SCB_SCR_SLEEPDEEPS_Pos 3U /*!< SCB SCR: SLEEPDEEPS Position */ +#define SCB_SCR_SLEEPDEEPS_Msk (1UL << SCB_SCR_SLEEPDEEPS_Pos) /*!< SCB SCR: SLEEPDEEPS Mask */ + +#define SCB_SCR_SLEEPDEEP_Pos 2U /*!< SCB SCR: SLEEPDEEP Position */ +#define SCB_SCR_SLEEPDEEP_Msk (1UL << SCB_SCR_SLEEPDEEP_Pos) /*!< SCB SCR: SLEEPDEEP Mask */ + +#define SCB_SCR_SLEEPONEXIT_Pos 1U /*!< SCB SCR: SLEEPONEXIT Position */ +#define SCB_SCR_SLEEPONEXIT_Msk (1UL << SCB_SCR_SLEEPONEXIT_Pos) /*!< SCB SCR: SLEEPONEXIT Mask */ + +/* SCB Configuration Control Register Definitions */ +#define SCB_CCR_TRD_Pos 20U /*!< SCB CCR: TRD Position */ +#define SCB_CCR_TRD_Msk (1UL << SCB_CCR_TRD_Pos) /*!< SCB CCR: TRD Mask */ + +#define SCB_CCR_LOB_Pos 19U /*!< SCB CCR: LOB Position */ +#define SCB_CCR_LOB_Msk (1UL << SCB_CCR_LOB_Pos) /*!< SCB CCR: LOB Mask */ + +#define SCB_CCR_BP_Pos 18U /*!< SCB CCR: BP Position */ +#define SCB_CCR_BP_Msk (1UL << SCB_CCR_BP_Pos) /*!< SCB CCR: BP Mask */ + +#define SCB_CCR_IC_Pos 17U /*!< SCB CCR: IC Position */ +#define SCB_CCR_IC_Msk (1UL << SCB_CCR_IC_Pos) /*!< SCB CCR: IC Mask */ + +#define SCB_CCR_DC_Pos 16U /*!< SCB CCR: DC Position */ +#define SCB_CCR_DC_Msk (1UL << SCB_CCR_DC_Pos) /*!< SCB CCR: DC Mask */ + +#define SCB_CCR_STKOFHFNMIGN_Pos 10U /*!< SCB CCR: STKOFHFNMIGN Position */ +#define SCB_CCR_STKOFHFNMIGN_Msk (1UL << SCB_CCR_STKOFHFNMIGN_Pos) /*!< SCB CCR: STKOFHFNMIGN Mask */ + +#define SCB_CCR_BFHFNMIGN_Pos 8U /*!< SCB CCR: BFHFNMIGN Position */ +#define SCB_CCR_BFHFNMIGN_Msk (1UL << SCB_CCR_BFHFNMIGN_Pos) /*!< SCB CCR: BFHFNMIGN Mask */ + +#define SCB_CCR_DIV_0_TRP_Pos 4U /*!< SCB CCR: DIV_0_TRP Position */ +#define SCB_CCR_DIV_0_TRP_Msk (1UL << SCB_CCR_DIV_0_TRP_Pos) /*!< SCB CCR: DIV_0_TRP Mask */ + +#define SCB_CCR_UNALIGN_TRP_Pos 3U /*!< SCB CCR: UNALIGN_TRP Position */ +#define SCB_CCR_UNALIGN_TRP_Msk (1UL << SCB_CCR_UNALIGN_TRP_Pos) /*!< SCB CCR: UNALIGN_TRP Mask */ + +#define SCB_CCR_USERSETMPEND_Pos 1U /*!< SCB CCR: USERSETMPEND Position */ +#define SCB_CCR_USERSETMPEND_Msk (1UL << SCB_CCR_USERSETMPEND_Pos) /*!< SCB CCR: USERSETMPEND Mask */ + +/* SCB System Handler Control and State Register Definitions */ +#define SCB_SHCSR_HARDFAULTPENDED_Pos 21U /*!< SCB SHCSR: HARDFAULTPENDED Position */ +#define SCB_SHCSR_HARDFAULTPENDED_Msk (1UL << SCB_SHCSR_HARDFAULTPENDED_Pos) /*!< SCB SHCSR: HARDFAULTPENDED Mask */ + +#define SCB_SHCSR_SECUREFAULTPENDED_Pos 20U /*!< SCB SHCSR: SECUREFAULTPENDED Position */ +#define SCB_SHCSR_SECUREFAULTPENDED_Msk (1UL << SCB_SHCSR_SECUREFAULTPENDED_Pos) /*!< SCB SHCSR: SECUREFAULTPENDED Mask */ + +#define SCB_SHCSR_SECUREFAULTENA_Pos 19U /*!< SCB SHCSR: SECUREFAULTENA Position */ +#define SCB_SHCSR_SECUREFAULTENA_Msk (1UL << SCB_SHCSR_SECUREFAULTENA_Pos) /*!< SCB SHCSR: SECUREFAULTENA Mask */ + +#define SCB_SHCSR_USGFAULTENA_Pos 18U /*!< SCB SHCSR: USGFAULTENA Position */ +#define SCB_SHCSR_USGFAULTENA_Msk (1UL << SCB_SHCSR_USGFAULTENA_Pos) /*!< SCB SHCSR: USGFAULTENA Mask */ + +#define SCB_SHCSR_BUSFAULTENA_Pos 17U /*!< SCB SHCSR: BUSFAULTENA Position */ +#define SCB_SHCSR_BUSFAULTENA_Msk (1UL << SCB_SHCSR_BUSFAULTENA_Pos) /*!< SCB SHCSR: BUSFAULTENA Mask */ + +#define SCB_SHCSR_MEMFAULTENA_Pos 16U /*!< SCB SHCSR: MEMFAULTENA Position */ +#define SCB_SHCSR_MEMFAULTENA_Msk (1UL << SCB_SHCSR_MEMFAULTENA_Pos) /*!< SCB SHCSR: MEMFAULTENA Mask */ + +#define SCB_SHCSR_SVCALLPENDED_Pos 15U /*!< SCB SHCSR: SVCALLPENDED Position */ +#define SCB_SHCSR_SVCALLPENDED_Msk (1UL << SCB_SHCSR_SVCALLPENDED_Pos) /*!< SCB SHCSR: SVCALLPENDED Mask */ + +#define SCB_SHCSR_BUSFAULTPENDED_Pos 14U /*!< SCB SHCSR: BUSFAULTPENDED Position */ +#define SCB_SHCSR_BUSFAULTPENDED_Msk (1UL << SCB_SHCSR_BUSFAULTPENDED_Pos) /*!< SCB SHCSR: BUSFAULTPENDED Mask */ + +#define SCB_SHCSR_MEMFAULTPENDED_Pos 13U /*!< SCB SHCSR: MEMFAULTPENDED Position */ +#define SCB_SHCSR_MEMFAULTPENDED_Msk (1UL << SCB_SHCSR_MEMFAULTPENDED_Pos) /*!< SCB SHCSR: MEMFAULTPENDED Mask */ + +#define SCB_SHCSR_USGFAULTPENDED_Pos 12U /*!< SCB SHCSR: USGFAULTPENDED Position */ +#define SCB_SHCSR_USGFAULTPENDED_Msk (1UL << SCB_SHCSR_USGFAULTPENDED_Pos) /*!< SCB SHCSR: USGFAULTPENDED Mask */ + +#define SCB_SHCSR_SYSTICKACT_Pos 11U /*!< SCB SHCSR: SYSTICKACT Position */ +#define SCB_SHCSR_SYSTICKACT_Msk (1UL << SCB_SHCSR_SYSTICKACT_Pos) /*!< SCB SHCSR: SYSTICKACT Mask */ + +#define SCB_SHCSR_PENDSVACT_Pos 10U /*!< SCB SHCSR: PENDSVACT Position */ +#define SCB_SHCSR_PENDSVACT_Msk (1UL << SCB_SHCSR_PENDSVACT_Pos) /*!< SCB SHCSR: PENDSVACT Mask */ + +#define SCB_SHCSR_MONITORACT_Pos 8U /*!< SCB SHCSR: MONITORACT Position */ +#define SCB_SHCSR_MONITORACT_Msk (1UL << SCB_SHCSR_MONITORACT_Pos) /*!< SCB SHCSR: MONITORACT Mask */ + +#define SCB_SHCSR_SVCALLACT_Pos 7U /*!< SCB SHCSR: SVCALLACT Position */ +#define SCB_SHCSR_SVCALLACT_Msk (1UL << SCB_SHCSR_SVCALLACT_Pos) /*!< SCB SHCSR: SVCALLACT Mask */ + +#define SCB_SHCSR_NMIACT_Pos 5U /*!< SCB SHCSR: NMIACT Position */ +#define SCB_SHCSR_NMIACT_Msk (1UL << SCB_SHCSR_NMIACT_Pos) /*!< SCB SHCSR: NMIACT Mask */ + +#define SCB_SHCSR_SECUREFAULTACT_Pos 4U /*!< SCB SHCSR: SECUREFAULTACT Position */ +#define SCB_SHCSR_SECUREFAULTACT_Msk (1UL << SCB_SHCSR_SECUREFAULTACT_Pos) /*!< SCB SHCSR: SECUREFAULTACT Mask */ + +#define SCB_SHCSR_USGFAULTACT_Pos 3U /*!< SCB SHCSR: USGFAULTACT Position */ +#define SCB_SHCSR_USGFAULTACT_Msk (1UL << SCB_SHCSR_USGFAULTACT_Pos) /*!< SCB SHCSR: USGFAULTACT Mask */ + +#define SCB_SHCSR_HARDFAULTACT_Pos 2U /*!< SCB SHCSR: HARDFAULTACT Position */ +#define SCB_SHCSR_HARDFAULTACT_Msk (1UL << SCB_SHCSR_HARDFAULTACT_Pos) /*!< SCB SHCSR: HARDFAULTACT Mask */ + +#define SCB_SHCSR_BUSFAULTACT_Pos 1U /*!< SCB SHCSR: BUSFAULTACT Position */ +#define SCB_SHCSR_BUSFAULTACT_Msk (1UL << SCB_SHCSR_BUSFAULTACT_Pos) /*!< SCB SHCSR: BUSFAULTACT Mask */ + +#define SCB_SHCSR_MEMFAULTACT_Pos 0U /*!< SCB SHCSR: MEMFAULTACT Position */ +#define SCB_SHCSR_MEMFAULTACT_Msk (1UL /*<< SCB_SHCSR_MEMFAULTACT_Pos*/) /*!< SCB SHCSR: MEMFAULTACT Mask */ + +/* SCB Configurable Fault Status Register Definitions */ +#define SCB_CFSR_USGFAULTSR_Pos 16U /*!< SCB CFSR: Usage Fault Status Register Position */ +#define SCB_CFSR_USGFAULTSR_Msk (0xFFFFUL << SCB_CFSR_USGFAULTSR_Pos) /*!< SCB CFSR: Usage Fault Status Register Mask */ + +#define SCB_CFSR_BUSFAULTSR_Pos 8U /*!< SCB CFSR: Bus Fault Status Register Position */ +#define SCB_CFSR_BUSFAULTSR_Msk (0xFFUL << SCB_CFSR_BUSFAULTSR_Pos) /*!< SCB CFSR: Bus Fault Status Register Mask */ + +#define SCB_CFSR_MEMFAULTSR_Pos 0U /*!< SCB CFSR: Memory Manage Fault Status Register Position */ +#define SCB_CFSR_MEMFAULTSR_Msk (0xFFUL /*<< SCB_CFSR_MEMFAULTSR_Pos*/) /*!< SCB CFSR: Memory Manage Fault Status Register Mask */ + +/* MemManage Fault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_MMARVALID_Pos (SCB_CFSR_MEMFAULTSR_Pos + 7U) /*!< SCB CFSR (MMFSR): MMARVALID Position */ +#define SCB_CFSR_MMARVALID_Msk (1UL << SCB_CFSR_MMARVALID_Pos) /*!< SCB CFSR (MMFSR): MMARVALID Mask */ + +#define SCB_CFSR_MLSPERR_Pos (SCB_CFSR_MEMFAULTSR_Pos + 5U) /*!< SCB CFSR (MMFSR): MLSPERR Position */ +#define SCB_CFSR_MLSPERR_Msk (1UL << SCB_CFSR_MLSPERR_Pos) /*!< SCB CFSR (MMFSR): MLSPERR Mask */ + +#define SCB_CFSR_MSTKERR_Pos (SCB_CFSR_MEMFAULTSR_Pos + 4U) /*!< SCB CFSR (MMFSR): MSTKERR Position */ +#define SCB_CFSR_MSTKERR_Msk (1UL << SCB_CFSR_MSTKERR_Pos) /*!< SCB CFSR (MMFSR): MSTKERR Mask */ + +#define SCB_CFSR_MUNSTKERR_Pos (SCB_CFSR_MEMFAULTSR_Pos + 3U) /*!< SCB CFSR (MMFSR): MUNSTKERR Position */ +#define SCB_CFSR_MUNSTKERR_Msk (1UL << SCB_CFSR_MUNSTKERR_Pos) /*!< SCB CFSR (MMFSR): MUNSTKERR Mask */ + +#define SCB_CFSR_DACCVIOL_Pos (SCB_CFSR_MEMFAULTSR_Pos + 1U) /*!< SCB CFSR (MMFSR): DACCVIOL Position */ +#define SCB_CFSR_DACCVIOL_Msk (1UL << SCB_CFSR_DACCVIOL_Pos) /*!< SCB CFSR (MMFSR): DACCVIOL Mask */ + +#define SCB_CFSR_IACCVIOL_Pos (SCB_CFSR_MEMFAULTSR_Pos + 0U) /*!< SCB CFSR (MMFSR): IACCVIOL Position */ +#define SCB_CFSR_IACCVIOL_Msk (1UL /*<< SCB_CFSR_IACCVIOL_Pos*/) /*!< SCB CFSR (MMFSR): IACCVIOL Mask */ + +/* BusFault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_BFARVALID_Pos (SCB_CFSR_BUSFAULTSR_Pos + 7U) /*!< SCB CFSR (BFSR): BFARVALID Position */ +#define SCB_CFSR_BFARVALID_Msk (1UL << SCB_CFSR_BFARVALID_Pos) /*!< SCB CFSR (BFSR): BFARVALID Mask */ + +#define SCB_CFSR_LSPERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 5U) /*!< SCB CFSR (BFSR): LSPERR Position */ +#define SCB_CFSR_LSPERR_Msk (1UL << SCB_CFSR_LSPERR_Pos) /*!< SCB CFSR (BFSR): LSPERR Mask */ + +#define SCB_CFSR_STKERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 4U) /*!< SCB CFSR (BFSR): STKERR Position */ +#define SCB_CFSR_STKERR_Msk (1UL << SCB_CFSR_STKERR_Pos) /*!< SCB CFSR (BFSR): STKERR Mask */ + +#define SCB_CFSR_UNSTKERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 3U) /*!< SCB CFSR (BFSR): UNSTKERR Position */ +#define SCB_CFSR_UNSTKERR_Msk (1UL << SCB_CFSR_UNSTKERR_Pos) /*!< SCB CFSR (BFSR): UNSTKERR Mask */ + +#define SCB_CFSR_IMPRECISERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 2U) /*!< SCB CFSR (BFSR): IMPRECISERR Position */ +#define SCB_CFSR_IMPRECISERR_Msk (1UL << SCB_CFSR_IMPRECISERR_Pos) /*!< SCB CFSR (BFSR): IMPRECISERR Mask */ + +#define SCB_CFSR_PRECISERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 1U) /*!< SCB CFSR (BFSR): PRECISERR Position */ +#define SCB_CFSR_PRECISERR_Msk (1UL << SCB_CFSR_PRECISERR_Pos) /*!< SCB CFSR (BFSR): PRECISERR Mask */ + +#define SCB_CFSR_IBUSERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 0U) /*!< SCB CFSR (BFSR): IBUSERR Position */ +#define SCB_CFSR_IBUSERR_Msk (1UL << SCB_CFSR_IBUSERR_Pos) /*!< SCB CFSR (BFSR): IBUSERR Mask */ + +/* UsageFault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_DIVBYZERO_Pos (SCB_CFSR_USGFAULTSR_Pos + 9U) /*!< SCB CFSR (UFSR): DIVBYZERO Position */ +#define SCB_CFSR_DIVBYZERO_Msk (1UL << SCB_CFSR_DIVBYZERO_Pos) /*!< SCB CFSR (UFSR): DIVBYZERO Mask */ + +#define SCB_CFSR_UNALIGNED_Pos (SCB_CFSR_USGFAULTSR_Pos + 8U) /*!< SCB CFSR (UFSR): UNALIGNED Position */ +#define SCB_CFSR_UNALIGNED_Msk (1UL << SCB_CFSR_UNALIGNED_Pos) /*!< SCB CFSR (UFSR): UNALIGNED Mask */ + +#define SCB_CFSR_STKOF_Pos (SCB_CFSR_USGFAULTSR_Pos + 4U) /*!< SCB CFSR (UFSR): STKOF Position */ +#define SCB_CFSR_STKOF_Msk (1UL << SCB_CFSR_STKOF_Pos) /*!< SCB CFSR (UFSR): STKOF Mask */ + +#define SCB_CFSR_NOCP_Pos (SCB_CFSR_USGFAULTSR_Pos + 3U) /*!< SCB CFSR (UFSR): NOCP Position */ +#define SCB_CFSR_NOCP_Msk (1UL << SCB_CFSR_NOCP_Pos) /*!< SCB CFSR (UFSR): NOCP Mask */ + +#define SCB_CFSR_INVPC_Pos (SCB_CFSR_USGFAULTSR_Pos + 2U) /*!< SCB CFSR (UFSR): INVPC Position */ +#define SCB_CFSR_INVPC_Msk (1UL << SCB_CFSR_INVPC_Pos) /*!< SCB CFSR (UFSR): INVPC Mask */ + +#define SCB_CFSR_INVSTATE_Pos (SCB_CFSR_USGFAULTSR_Pos + 1U) /*!< SCB CFSR (UFSR): INVSTATE Position */ +#define SCB_CFSR_INVSTATE_Msk (1UL << SCB_CFSR_INVSTATE_Pos) /*!< SCB CFSR (UFSR): INVSTATE Mask */ + +#define SCB_CFSR_UNDEFINSTR_Pos (SCB_CFSR_USGFAULTSR_Pos + 0U) /*!< SCB CFSR (UFSR): UNDEFINSTR Position */ +#define SCB_CFSR_UNDEFINSTR_Msk (1UL << SCB_CFSR_UNDEFINSTR_Pos) /*!< SCB CFSR (UFSR): UNDEFINSTR Mask */ + +/* SCB Hard Fault Status Register Definitions */ +#define SCB_HFSR_DEBUGEVT_Pos 31U /*!< SCB HFSR: DEBUGEVT Position */ +#define SCB_HFSR_DEBUGEVT_Msk (1UL << SCB_HFSR_DEBUGEVT_Pos) /*!< SCB HFSR: DEBUGEVT Mask */ + +#define SCB_HFSR_FORCED_Pos 30U /*!< SCB HFSR: FORCED Position */ +#define SCB_HFSR_FORCED_Msk (1UL << SCB_HFSR_FORCED_Pos) /*!< SCB HFSR: FORCED Mask */ + +#define SCB_HFSR_VECTTBL_Pos 1U /*!< SCB HFSR: VECTTBL Position */ +#define SCB_HFSR_VECTTBL_Msk (1UL << SCB_HFSR_VECTTBL_Pos) /*!< SCB HFSR: VECTTBL Mask */ + +/* SCB Debug Fault Status Register Definitions */ +#define SCB_DFSR_PMU_Pos 5U /*!< SCB DFSR: PMU Position */ +#define SCB_DFSR_PMU_Msk (1UL << SCB_DFSR_PMU_Pos) /*!< SCB DFSR: PMU Mask */ + +#define SCB_DFSR_EXTERNAL_Pos 4U /*!< SCB DFSR: EXTERNAL Position */ +#define SCB_DFSR_EXTERNAL_Msk (1UL << SCB_DFSR_EXTERNAL_Pos) /*!< SCB DFSR: EXTERNAL Mask */ + +#define SCB_DFSR_VCATCH_Pos 3U /*!< SCB DFSR: VCATCH Position */ +#define SCB_DFSR_VCATCH_Msk (1UL << SCB_DFSR_VCATCH_Pos) /*!< SCB DFSR: VCATCH Mask */ + +#define SCB_DFSR_DWTTRAP_Pos 2U /*!< SCB DFSR: DWTTRAP Position */ +#define SCB_DFSR_DWTTRAP_Msk (1UL << SCB_DFSR_DWTTRAP_Pos) /*!< SCB DFSR: DWTTRAP Mask */ + +#define SCB_DFSR_BKPT_Pos 1U /*!< SCB DFSR: BKPT Position */ +#define SCB_DFSR_BKPT_Msk (1UL << SCB_DFSR_BKPT_Pos) /*!< SCB DFSR: BKPT Mask */ + +#define SCB_DFSR_HALTED_Pos 0U /*!< SCB DFSR: HALTED Position */ +#define SCB_DFSR_HALTED_Msk (1UL /*<< SCB_DFSR_HALTED_Pos*/) /*!< SCB DFSR: HALTED Mask */ + +/* SCB Non-Secure Access Control Register Definitions */ +#define SCB_NSACR_CP11_Pos 11U /*!< SCB NSACR: CP11 Position */ +#define SCB_NSACR_CP11_Msk (1UL << SCB_NSACR_CP11_Pos) /*!< SCB NSACR: CP11 Mask */ + +#define SCB_NSACR_CP10_Pos 10U /*!< SCB NSACR: CP10 Position */ +#define SCB_NSACR_CP10_Msk (1UL << SCB_NSACR_CP10_Pos) /*!< SCB NSACR: CP10 Mask */ + +#define SCB_NSACR_CP7_Pos 7U /*!< SCB NSACR: CP7 Position */ +#define SCB_NSACR_CP7_Msk (1UL << SCB_NSACR_CP7_Pos) /*!< SCB NSACR: CP7 Mask */ + +#define SCB_NSACR_CP6_Pos 6U /*!< SCB NSACR: CP6 Position */ +#define SCB_NSACR_CP6_Msk (1UL << SCB_NSACR_CP6_Pos) /*!< SCB NSACR: CP6 Mask */ + +#define SCB_NSACR_CP5_Pos 5U /*!< SCB NSACR: CP5 Position */ +#define SCB_NSACR_CP5_Msk (1UL << SCB_NSACR_CP5_Pos) /*!< SCB NSACR: CP5 Mask */ + +#define SCB_NSACR_CP4_Pos 4U /*!< SCB NSACR: CP4 Position */ +#define SCB_NSACR_CP4_Msk (1UL << SCB_NSACR_CP4_Pos) /*!< SCB NSACR: CP4 Mask */ + +#define SCB_NSACR_CP3_Pos 3U /*!< SCB NSACR: CP3 Position */ +#define SCB_NSACR_CP3_Msk (1UL << SCB_NSACR_CP3_Pos) /*!< SCB NSACR: CP3 Mask */ + +#define SCB_NSACR_CP2_Pos 2U /*!< SCB NSACR: CP2 Position */ +#define SCB_NSACR_CP2_Msk (1UL << SCB_NSACR_CP2_Pos) /*!< SCB NSACR: CP2 Mask */ + +#define SCB_NSACR_CP1_Pos 1U /*!< SCB NSACR: CP1 Position */ +#define SCB_NSACR_CP1_Msk (1UL << SCB_NSACR_CP1_Pos) /*!< SCB NSACR: CP1 Mask */ + +#define SCB_NSACR_CP0_Pos 0U /*!< SCB NSACR: CP0 Position */ +#define SCB_NSACR_CP0_Msk (1UL /*<< SCB_NSACR_CP0_Pos*/) /*!< SCB NSACR: CP0 Mask */ + +/* SCB Debug Feature Register 0 Definitions */ +#define SCB_ID_DFR_UDE_Pos 28U /*!< SCB ID_DFR: UDE Position */ +#define SCB_ID_DFR_UDE_Msk (0xFUL << SCB_ID_DFR_UDE_Pos) /*!< SCB ID_DFR: UDE Mask */ + +#define SCB_ID_DFR_MProfDbg_Pos 20U /*!< SCB ID_DFR: MProfDbg Position */ +#define SCB_ID_DFR_MProfDbg_Msk (0xFUL << SCB_ID_DFR_MProfDbg_Pos) /*!< SCB ID_DFR: MProfDbg Mask */ + +/* SCB Cache Level ID Register Definitions */ +#define SCB_CLIDR_LOUU_Pos 27U /*!< SCB CLIDR: LoUU Position */ +#define SCB_CLIDR_LOUU_Msk (7UL << SCB_CLIDR_LOUU_Pos) /*!< SCB CLIDR: LoUU Mask */ + +#define SCB_CLIDR_LOC_Pos 24U /*!< SCB CLIDR: LoC Position */ +#define SCB_CLIDR_LOC_Msk (7UL << SCB_CLIDR_LOC_Pos) /*!< SCB CLIDR: LoC Mask */ + +/* SCB Cache Type Register Definitions */ +#define SCB_CTR_FORMAT_Pos 29U /*!< SCB CTR: Format Position */ +#define SCB_CTR_FORMAT_Msk (7UL << SCB_CTR_FORMAT_Pos) /*!< SCB CTR: Format Mask */ + +#define SCB_CTR_CWG_Pos 24U /*!< SCB CTR: CWG Position */ +#define SCB_CTR_CWG_Msk (0xFUL << SCB_CTR_CWG_Pos) /*!< SCB CTR: CWG Mask */ + +#define SCB_CTR_ERG_Pos 20U /*!< SCB CTR: ERG Position */ +#define SCB_CTR_ERG_Msk (0xFUL << SCB_CTR_ERG_Pos) /*!< SCB CTR: ERG Mask */ + +#define SCB_CTR_DMINLINE_Pos 16U /*!< SCB CTR: DminLine Position */ +#define SCB_CTR_DMINLINE_Msk (0xFUL << SCB_CTR_DMINLINE_Pos) /*!< SCB CTR: DminLine Mask */ + +#define SCB_CTR_IMINLINE_Pos 0U /*!< SCB CTR: ImInLine Position */ +#define SCB_CTR_IMINLINE_Msk (0xFUL /*<< SCB_CTR_IMINLINE_Pos*/) /*!< SCB CTR: ImInLine Mask */ + +/* SCB Cache Size ID Register Definitions */ +#define SCB_CCSIDR_WT_Pos 31U /*!< SCB CCSIDR: WT Position */ +#define SCB_CCSIDR_WT_Msk (1UL << SCB_CCSIDR_WT_Pos) /*!< SCB CCSIDR: WT Mask */ + +#define SCB_CCSIDR_WB_Pos 30U /*!< SCB CCSIDR: WB Position */ +#define SCB_CCSIDR_WB_Msk (1UL << SCB_CCSIDR_WB_Pos) /*!< SCB CCSIDR: WB Mask */ + +#define SCB_CCSIDR_RA_Pos 29U /*!< SCB CCSIDR: RA Position */ +#define SCB_CCSIDR_RA_Msk (1UL << SCB_CCSIDR_RA_Pos) /*!< SCB CCSIDR: RA Mask */ + +#define SCB_CCSIDR_WA_Pos 28U /*!< SCB CCSIDR: WA Position */ +#define SCB_CCSIDR_WA_Msk (1UL << SCB_CCSIDR_WA_Pos) /*!< SCB CCSIDR: WA Mask */ + +#define SCB_CCSIDR_NUMSETS_Pos 13U /*!< SCB CCSIDR: NumSets Position */ +#define SCB_CCSIDR_NUMSETS_Msk (0x7FFFUL << SCB_CCSIDR_NUMSETS_Pos) /*!< SCB CCSIDR: NumSets Mask */ + +#define SCB_CCSIDR_ASSOCIATIVITY_Pos 3U /*!< SCB CCSIDR: Associativity Position */ +#define SCB_CCSIDR_ASSOCIATIVITY_Msk (0x3FFUL << SCB_CCSIDR_ASSOCIATIVITY_Pos) /*!< SCB CCSIDR: Associativity Mask */ + +#define SCB_CCSIDR_LINESIZE_Pos 0U /*!< SCB CCSIDR: LineSize Position */ +#define SCB_CCSIDR_LINESIZE_Msk (7UL /*<< SCB_CCSIDR_LINESIZE_Pos*/) /*!< SCB CCSIDR: LineSize Mask */ + +/* SCB Cache Size Selection Register Definitions */ +#define SCB_CSSELR_LEVEL_Pos 1U /*!< SCB CSSELR: Level Position */ +#define SCB_CSSELR_LEVEL_Msk (7UL << SCB_CSSELR_LEVEL_Pos) /*!< SCB CSSELR: Level Mask */ + +#define SCB_CSSELR_IND_Pos 0U /*!< SCB CSSELR: InD Position */ +#define SCB_CSSELR_IND_Msk (1UL /*<< SCB_CSSELR_IND_Pos*/) /*!< SCB CSSELR: InD Mask */ + +/* SCB Software Triggered Interrupt Register Definitions */ +#define SCB_STIR_INTID_Pos 0U /*!< SCB STIR: INTID Position */ +#define SCB_STIR_INTID_Msk (0x1FFUL /*<< SCB_STIR_INTID_Pos*/) /*!< SCB STIR: INTID Mask */ + +/* SCB RAS Fault Status Register Definitions */ +#define SCB_RFSR_V_Pos 31U /*!< SCB RFSR: V Position */ +#define SCB_RFSR_V_Msk (1UL << SCB_RFSR_V_Pos) /*!< SCB RFSR: V Mask */ + +#define SCB_RFSR_IS_Pos 16U /*!< SCB RFSR: IS Position */ +#define SCB_RFSR_IS_Msk (0x7FFFUL << SCB_RFSR_IS_Pos) /*!< SCB RFSR: IS Mask */ + +#define SCB_RFSR_UET_Pos 0U /*!< SCB RFSR: UET Position */ +#define SCB_RFSR_UET_Msk (3UL /*<< SCB_RFSR_UET_Pos*/) /*!< SCB RFSR: UET Mask */ + +/* SCB D-Cache Invalidate by Set-way Register Definitions */ +#define SCB_DCISW_WAY_Pos 30U /*!< SCB DCISW: Way Position */ +#define SCB_DCISW_WAY_Msk (3UL << SCB_DCISW_WAY_Pos) /*!< SCB DCISW: Way Mask */ + +#define SCB_DCISW_SET_Pos 5U /*!< SCB DCISW: Set Position */ +#define SCB_DCISW_SET_Msk (0x1FFUL << SCB_DCISW_SET_Pos) /*!< SCB DCISW: Set Mask */ + +/* SCB D-Cache Clean by Set-way Register Definitions */ +#define SCB_DCCSW_WAY_Pos 30U /*!< SCB DCCSW: Way Position */ +#define SCB_DCCSW_WAY_Msk (3UL << SCB_DCCSW_WAY_Pos) /*!< SCB DCCSW: Way Mask */ + +#define SCB_DCCSW_SET_Pos 5U /*!< SCB DCCSW: Set Position */ +#define SCB_DCCSW_SET_Msk (0x1FFUL << SCB_DCCSW_SET_Pos) /*!< SCB DCCSW: Set Mask */ + +/* SCB D-Cache Clean and Invalidate by Set-way Register Definitions */ +#define SCB_DCCISW_WAY_Pos 30U /*!< SCB DCCISW: Way Position */ +#define SCB_DCCISW_WAY_Msk (3UL << SCB_DCCISW_WAY_Pos) /*!< SCB DCCISW: Way Mask */ + +#define SCB_DCCISW_SET_Pos 5U /*!< SCB DCCISW: Set Position */ +#define SCB_DCCISW_SET_Msk (0x1FFUL << SCB_DCCISW_SET_Pos) /*!< SCB DCCISW: Set Mask */ + +/*@} end of group CMSIS_SCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_ICB Implementation Control Block register (ICB) + \brief Type definitions for the Implementation Control Block Register + @{ + */ + +/** + \brief Structure type to access the Implementation Control Block (ICB). + */ +typedef struct +{ + uint32_t RESERVED0[1U]; + __IM uint32_t ICTR; /*!< Offset: 0x004 (R/ ) Interrupt Controller Type Register */ + __IOM uint32_t ACTLR; /*!< Offset: 0x008 (R/W) Auxiliary Control Register */ + __IOM uint32_t CPPWR; /*!< Offset: 0x00C (R/W) Coprocessor Power Control Register */ +} ICB_Type; + +/* Auxiliary Control Register Definitions */ +#define ICB_ACTLR_DISCRITAXIRUW_Pos 27U /*!< ACTLR: DISCRITAXIRUW Position */ +#define ICB_ACTLR_DISCRITAXIRUW_Msk (1UL << ICB_ACTLR_DISCRITAXIRUW_Pos) /*!< ACTLR: DISCRITAXIRUW Mask */ + +#define ICB_ACTLR_DISCRITAXIRUR_Pos 15U /*!< ACTLR: DISCRITAXIRUR Position */ +#define ICB_ACTLR_DISCRITAXIRUR_Msk (1UL << ICB_ACTLR_DISCRITAXIRUR_Pos) /*!< ACTLR: DISCRITAXIRUR Mask */ + +#define ICB_ACTLR_EVENTBUSEN_Pos 14U /*!< ACTLR: EVENTBUSEN Position */ +#define ICB_ACTLR_EVENTBUSEN_Msk (1UL << ICB_ACTLR_EVENTBUSEN_Pos) /*!< ACTLR: EVENTBUSEN Mask */ + +#define ICB_ACTLR_EVENTBUSEN_S_Pos 13U /*!< ACTLR: EVENTBUSEN_S Position */ +#define ICB_ACTLR_EVENTBUSEN_S_Msk (1UL << ICB_ACTLR_EVENTBUSEN_S_Pos) /*!< ACTLR: EVENTBUSEN_S Mask */ + +#define ICB_ACTLR_DISITMATBFLUSH_Pos 12U /*!< ACTLR: DISITMATBFLUSH Position */ +#define ICB_ACTLR_DISITMATBFLUSH_Msk (1UL << ICB_ACTLR_DISITMATBFLUSH_Pos) /*!< ACTLR: DISITMATBFLUSH Mask */ + +#define ICB_ACTLR_DISNWAMODE_Pos 11U /*!< ACTLR: DISNWAMODE Position */ +#define ICB_ACTLR_DISNWAMODE_Msk (1UL << ICB_ACTLR_DISNWAMODE_Pos) /*!< ACTLR: DISNWAMODE Mask */ + +#define ICB_ACTLR_FPEXCODIS_Pos 10U /*!< ACTLR: FPEXCODIS Position */ +#define ICB_ACTLR_FPEXCODIS_Msk (1UL << ICB_ACTLR_FPEXCODIS_Pos) /*!< ACTLR: FPEXCODIS Mask */ + +/* Interrupt Controller Type Register Definitions */ +#define ICB_ICTR_INTLINESNUM_Pos 0U /*!< ICTR: INTLINESNUM Position */ +#define ICB_ICTR_INTLINESNUM_Msk (0xFUL /*<< ICB_ICTR_INTLINESNUM_Pos*/) /*!< ICTR: INTLINESNUM Mask */ + +/*@} end of group CMSIS_ICB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SysTick System Tick Timer (SysTick) + \brief Type definitions for the System Timer Registers. + @{ + */ + +/** + \brief Structure type to access the System Timer (SysTick). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SysTick Control and Status Register */ + __IOM uint32_t LOAD; /*!< Offset: 0x004 (R/W) SysTick Reload Value Register */ + __IOM uint32_t VAL; /*!< Offset: 0x008 (R/W) SysTick Current Value Register */ + __IM uint32_t CALIB; /*!< Offset: 0x00C (R/ ) SysTick Calibration Register */ +} SysTick_Type; + +/* SysTick Control / Status Register Definitions */ +#define SysTick_CTRL_COUNTFLAG_Pos 16U /*!< SysTick CTRL: COUNTFLAG Position */ +#define SysTick_CTRL_COUNTFLAG_Msk (1UL << SysTick_CTRL_COUNTFLAG_Pos) /*!< SysTick CTRL: COUNTFLAG Mask */ + +#define SysTick_CTRL_CLKSOURCE_Pos 2U /*!< SysTick CTRL: CLKSOURCE Position */ +#define SysTick_CTRL_CLKSOURCE_Msk (1UL << SysTick_CTRL_CLKSOURCE_Pos) /*!< SysTick CTRL: CLKSOURCE Mask */ + +#define SysTick_CTRL_TICKINT_Pos 1U /*!< SysTick CTRL: TICKINT Position */ +#define SysTick_CTRL_TICKINT_Msk (1UL << SysTick_CTRL_TICKINT_Pos) /*!< SysTick CTRL: TICKINT Mask */ + +#define SysTick_CTRL_ENABLE_Pos 0U /*!< SysTick CTRL: ENABLE Position */ +#define SysTick_CTRL_ENABLE_Msk (1UL /*<< SysTick_CTRL_ENABLE_Pos*/) /*!< SysTick CTRL: ENABLE Mask */ + +/* SysTick Reload Register Definitions */ +#define SysTick_LOAD_RELOAD_Pos 0U /*!< SysTick LOAD: RELOAD Position */ +#define SysTick_LOAD_RELOAD_Msk (0xFFFFFFUL /*<< SysTick_LOAD_RELOAD_Pos*/) /*!< SysTick LOAD: RELOAD Mask */ + +/* SysTick Current Register Definitions */ +#define SysTick_VAL_CURRENT_Pos 0U /*!< SysTick VAL: CURRENT Position */ +#define SysTick_VAL_CURRENT_Msk (0xFFFFFFUL /*<< SysTick_VAL_CURRENT_Pos*/) /*!< SysTick VAL: CURRENT Mask */ + +/* SysTick Calibration Register Definitions */ +#define SysTick_CALIB_NOREF_Pos 31U /*!< SysTick CALIB: NOREF Position */ +#define SysTick_CALIB_NOREF_Msk (1UL << SysTick_CALIB_NOREF_Pos) /*!< SysTick CALIB: NOREF Mask */ + +#define SysTick_CALIB_SKEW_Pos 30U /*!< SysTick CALIB: SKEW Position */ +#define SysTick_CALIB_SKEW_Msk (1UL << SysTick_CALIB_SKEW_Pos) /*!< SysTick CALIB: SKEW Mask */ + +#define SysTick_CALIB_TENMS_Pos 0U /*!< SysTick CALIB: TENMS Position */ +#define SysTick_CALIB_TENMS_Msk (0xFFFFFFUL /*<< SysTick_CALIB_TENMS_Pos*/) /*!< SysTick CALIB: TENMS Mask */ + +/*@} end of group CMSIS_SysTick */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_ITM Instrumentation Trace Macrocell (ITM) + \brief Type definitions for the Instrumentation Trace Macrocell (ITM) + @{ + */ + +/** + \brief Structure type to access the Instrumentation Trace Macrocell Register (ITM). + */ +typedef struct +{ + __OM union + { + __OM uint8_t u8; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 8-bit */ + __OM uint16_t u16; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 16-bit */ + __OM uint32_t u32; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 32-bit */ + } PORT [32U]; /*!< Offset: 0x000 ( /W) ITM Stimulus Port Registers */ + uint32_t RESERVED0[864U]; + __IOM uint32_t TER; /*!< Offset: 0xE00 (R/W) ITM Trace Enable Register */ + uint32_t RESERVED1[15U]; + __IOM uint32_t TPR; /*!< Offset: 0xE40 (R/W) ITM Trace Privilege Register */ + uint32_t RESERVED2[15U]; + __IOM uint32_t TCR; /*!< Offset: 0xE80 (R/W) ITM Trace Control Register */ + uint32_t RESERVED3[32U]; + uint32_t RESERVED4[43U]; + __OM uint32_t LAR; /*!< Offset: 0xFB0 ( /W) ITM Lock Access Register */ + __IM uint32_t LSR; /*!< Offset: 0xFB4 (R/ ) ITM Lock Status Register */ + uint32_t RESERVED5[1U]; + __IM uint32_t DEVARCH; /*!< Offset: 0xFBC (R/ ) ITM Device Architecture Register */ + uint32_t RESERVED6[3U]; + __IM uint32_t DEVTYPE; /*!< Offset: 0xFCC (R/ ) ITM Device Type Register */ + __IM uint32_t PID4; /*!< Offset: 0xFD0 (R/ ) ITM Peripheral Identification Register #4 */ + __IM uint32_t PID5; /*!< Offset: 0xFD4 (R/ ) ITM Peripheral Identification Register #5 */ + __IM uint32_t PID6; /*!< Offset: 0xFD8 (R/ ) ITM Peripheral Identification Register #6 */ + __IM uint32_t PID7; /*!< Offset: 0xFDC (R/ ) ITM Peripheral Identification Register #7 */ + __IM uint32_t PID0; /*!< Offset: 0xFE0 (R/ ) ITM Peripheral Identification Register #0 */ + __IM uint32_t PID1; /*!< Offset: 0xFE4 (R/ ) ITM Peripheral Identification Register #1 */ + __IM uint32_t PID2; /*!< Offset: 0xFE8 (R/ ) ITM Peripheral Identification Register #2 */ + __IM uint32_t PID3; /*!< Offset: 0xFEC (R/ ) ITM Peripheral Identification Register #3 */ + __IM uint32_t CID0; /*!< Offset: 0xFF0 (R/ ) ITM Component Identification Register #0 */ + __IM uint32_t CID1; /*!< Offset: 0xFF4 (R/ ) ITM Component Identification Register #1 */ + __IM uint32_t CID2; /*!< Offset: 0xFF8 (R/ ) ITM Component Identification Register #2 */ + __IM uint32_t CID3; /*!< Offset: 0xFFC (R/ ) ITM Component Identification Register #3 */ +} ITM_Type; + +/* ITM Stimulus Port Register Definitions */ +#define ITM_STIM_DISABLED_Pos 1U /*!< ITM STIM: DISABLED Position */ +#define ITM_STIM_DISABLED_Msk (0x1UL << ITM_STIM_DISABLED_Pos) /*!< ITM STIM: DISABLED Mask */ + +#define ITM_STIM_FIFOREADY_Pos 0U /*!< ITM STIM: FIFOREADY Position */ +#define ITM_STIM_FIFOREADY_Msk (0x1UL /*<< ITM_STIM_FIFOREADY_Pos*/) /*!< ITM STIM: FIFOREADY Mask */ + +/* ITM Trace Privilege Register Definitions */ +#define ITM_TPR_PRIVMASK_Pos 0U /*!< ITM TPR: PRIVMASK Position */ +#define ITM_TPR_PRIVMASK_Msk (0xFUL /*<< ITM_TPR_PRIVMASK_Pos*/) /*!< ITM TPR: PRIVMASK Mask */ + +/* ITM Trace Control Register Definitions */ +#define ITM_TCR_BUSY_Pos 23U /*!< ITM TCR: BUSY Position */ +#define ITM_TCR_BUSY_Msk (1UL << ITM_TCR_BUSY_Pos) /*!< ITM TCR: BUSY Mask */ + +#define ITM_TCR_TRACEBUSID_Pos 16U /*!< ITM TCR: ATBID Position */ +#define ITM_TCR_TRACEBUSID_Msk (0x7FUL << ITM_TCR_TRACEBUSID_Pos) /*!< ITM TCR: ATBID Mask */ + +#define ITM_TCR_GTSFREQ_Pos 10U /*!< ITM TCR: Global timestamp frequency Position */ +#define ITM_TCR_GTSFREQ_Msk (3UL << ITM_TCR_GTSFREQ_Pos) /*!< ITM TCR: Global timestamp frequency Mask */ + +#define ITM_TCR_TSPRESCALE_Pos 8U /*!< ITM TCR: TSPRESCALE Position */ +#define ITM_TCR_TSPRESCALE_Msk (3UL << ITM_TCR_TSPRESCALE_Pos) /*!< ITM TCR: TSPRESCALE Mask */ + +#define ITM_TCR_STALLENA_Pos 5U /*!< ITM TCR: STALLENA Position */ +#define ITM_TCR_STALLENA_Msk (1UL << ITM_TCR_STALLENA_Pos) /*!< ITM TCR: STALLENA Mask */ + +#define ITM_TCR_SWOENA_Pos 4U /*!< ITM TCR: SWOENA Position */ +#define ITM_TCR_SWOENA_Msk (1UL << ITM_TCR_SWOENA_Pos) /*!< ITM TCR: SWOENA Mask */ + +#define ITM_TCR_DWTENA_Pos 3U /*!< ITM TCR: DWTENA Position */ +#define ITM_TCR_DWTENA_Msk (1UL << ITM_TCR_DWTENA_Pos) /*!< ITM TCR: DWTENA Mask */ + +#define ITM_TCR_SYNCENA_Pos 2U /*!< ITM TCR: SYNCENA Position */ +#define ITM_TCR_SYNCENA_Msk (1UL << ITM_TCR_SYNCENA_Pos) /*!< ITM TCR: SYNCENA Mask */ + +#define ITM_TCR_TSENA_Pos 1U /*!< ITM TCR: TSENA Position */ +#define ITM_TCR_TSENA_Msk (1UL << ITM_TCR_TSENA_Pos) /*!< ITM TCR: TSENA Mask */ + +#define ITM_TCR_ITMENA_Pos 0U /*!< ITM TCR: ITM Enable bit Position */ +#define ITM_TCR_ITMENA_Msk (1UL /*<< ITM_TCR_ITMENA_Pos*/) /*!< ITM TCR: ITM Enable bit Mask */ + +/* ITM Lock Status Register Definitions */ +#define ITM_LSR_ByteAcc_Pos 2U /*!< ITM LSR: ByteAcc Position */ +#define ITM_LSR_ByteAcc_Msk (1UL << ITM_LSR_ByteAcc_Pos) /*!< ITM LSR: ByteAcc Mask */ + +#define ITM_LSR_Access_Pos 1U /*!< ITM LSR: Access Position */ +#define ITM_LSR_Access_Msk (1UL << ITM_LSR_Access_Pos) /*!< ITM LSR: Access Mask */ + +#define ITM_LSR_Present_Pos 0U /*!< ITM LSR: Present Position */ +#define ITM_LSR_Present_Msk (1UL /*<< ITM_LSR_Present_Pos*/) /*!< ITM LSR: Present Mask */ + +/*@}*/ /* end of group CMSIS_ITM */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_DWT Data Watchpoint and Trace (DWT) + \brief Type definitions for the Data Watchpoint and Trace (DWT) + @{ + */ + +/** + \brief Structure type to access the Data Watchpoint and Trace Register (DWT). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) Control Register */ + __IOM uint32_t CYCCNT; /*!< Offset: 0x004 (R/W) Cycle Count Register */ + __IOM uint32_t CPICNT; /*!< Offset: 0x008 (R/W) CPI Count Register */ + __IOM uint32_t EXCCNT; /*!< Offset: 0x00C (R/W) Exception Overhead Count Register */ + __IOM uint32_t SLEEPCNT; /*!< Offset: 0x010 (R/W) Sleep Count Register */ + __IOM uint32_t LSUCNT; /*!< Offset: 0x014 (R/W) LSU Count Register */ + __IOM uint32_t FOLDCNT; /*!< Offset: 0x018 (R/W) Folded-instruction Count Register */ + __IM uint32_t PCSR; /*!< Offset: 0x01C (R/ ) Program Counter Sample Register */ + __IOM uint32_t COMP0; /*!< Offset: 0x020 (R/W) Comparator Register 0 */ + uint32_t RESERVED1[1U]; + __IOM uint32_t FUNCTION0; /*!< Offset: 0x028 (R/W) Function Register 0 */ + uint32_t RESERVED2[1U]; + __IOM uint32_t COMP1; /*!< Offset: 0x030 (R/W) Comparator Register 1 */ + uint32_t RESERVED3[1U]; + __IOM uint32_t FUNCTION1; /*!< Offset: 0x038 (R/W) Function Register 1 */ + uint32_t RESERVED4[1U]; + __IOM uint32_t COMP2; /*!< Offset: 0x040 (R/W) Comparator Register 2 */ + uint32_t RESERVED5[1U]; + __IOM uint32_t FUNCTION2; /*!< Offset: 0x048 (R/W) Function Register 2 */ + uint32_t RESERVED6[1U]; + __IOM uint32_t COMP3; /*!< Offset: 0x050 (R/W) Comparator Register 3 */ + uint32_t RESERVED7[1U]; + __IOM uint32_t FUNCTION3; /*!< Offset: 0x058 (R/W) Function Register 3 */ + uint32_t RESERVED8[1U]; + __IOM uint32_t COMP4; /*!< Offset: 0x060 (R/W) Comparator Register 4 */ + uint32_t RESERVED9[1U]; + __IOM uint32_t FUNCTION4; /*!< Offset: 0x068 (R/W) Function Register 4 */ + uint32_t RESERVED10[1U]; + __IOM uint32_t COMP5; /*!< Offset: 0x070 (R/W) Comparator Register 5 */ + uint32_t RESERVED11[1U]; + __IOM uint32_t FUNCTION5; /*!< Offset: 0x078 (R/W) Function Register 5 */ + uint32_t RESERVED12[1U]; + __IOM uint32_t COMP6; /*!< Offset: 0x080 (R/W) Comparator Register 6 */ + uint32_t RESERVED13[1U]; + __IOM uint32_t FUNCTION6; /*!< Offset: 0x088 (R/W) Function Register 6 */ + uint32_t RESERVED14[1U]; + __IOM uint32_t COMP7; /*!< Offset: 0x090 (R/W) Comparator Register 7 */ + uint32_t RESERVED15[1U]; + __IOM uint32_t FUNCTION7; /*!< Offset: 0x098 (R/W) Function Register 7 */ + uint32_t RESERVED16[1U]; + __IOM uint32_t COMP8; /*!< Offset: 0x0A0 (R/W) Comparator Register 8 */ + uint32_t RESERVED17[1U]; + __IOM uint32_t FUNCTION8; /*!< Offset: 0x0A8 (R/W) Function Register 8 */ + uint32_t RESERVED18[1U]; + __IOM uint32_t COMP9; /*!< Offset: 0x0B0 (R/W) Comparator Register 9 */ + uint32_t RESERVED19[1U]; + __IOM uint32_t FUNCTION9; /*!< Offset: 0x0B8 (R/W) Function Register 9 */ + uint32_t RESERVED20[1U]; + __IOM uint32_t COMP10; /*!< Offset: 0x0C0 (R/W) Comparator Register 10 */ + uint32_t RESERVED21[1U]; + __IOM uint32_t FUNCTION10; /*!< Offset: 0x0C8 (R/W) Function Register 10 */ + uint32_t RESERVED22[1U]; + __IOM uint32_t COMP11; /*!< Offset: 0x0D0 (R/W) Comparator Register 11 */ + uint32_t RESERVED23[1U]; + __IOM uint32_t FUNCTION11; /*!< Offset: 0x0D8 (R/W) Function Register 11 */ + uint32_t RESERVED24[1U]; + __IOM uint32_t COMP12; /*!< Offset: 0x0E0 (R/W) Comparator Register 12 */ + uint32_t RESERVED25[1U]; + __IOM uint32_t FUNCTION12; /*!< Offset: 0x0E8 (R/W) Function Register 12 */ + uint32_t RESERVED26[1U]; + __IOM uint32_t COMP13; /*!< Offset: 0x0F0 (R/W) Comparator Register 13 */ + uint32_t RESERVED27[1U]; + __IOM uint32_t FUNCTION13; /*!< Offset: 0x0F8 (R/W) Function Register 13 */ + uint32_t RESERVED28[1U]; + __IOM uint32_t COMP14; /*!< Offset: 0x100 (R/W) Comparator Register 14 */ + uint32_t RESERVED29[1U]; + __IOM uint32_t FUNCTION14; /*!< Offset: 0x108 (R/W) Function Register 14 */ + uint32_t RESERVED30[1U]; + __IOM uint32_t COMP15; /*!< Offset: 0x110 (R/W) Comparator Register 15 */ + uint32_t RESERVED31[1U]; + __IOM uint32_t FUNCTION15; /*!< Offset: 0x118 (R/W) Function Register 15 */ + uint32_t RESERVED32[934U]; + __IM uint32_t LSR; /*!< Offset: 0xFB4 (R ) Lock Status Register */ + uint32_t RESERVED33[1U]; + __IM uint32_t DEVARCH; /*!< Offset: 0xFBC (R/ ) Device Architecture Register */ +} DWT_Type; + +/* DWT Control Register Definitions */ +#define DWT_CTRL_NUMCOMP_Pos 28U /*!< DWT CTRL: NUMCOMP Position */ +#define DWT_CTRL_NUMCOMP_Msk (0xFUL << DWT_CTRL_NUMCOMP_Pos) /*!< DWT CTRL: NUMCOMP Mask */ + +#define DWT_CTRL_NOTRCPKT_Pos 27U /*!< DWT CTRL: NOTRCPKT Position */ +#define DWT_CTRL_NOTRCPKT_Msk (0x1UL << DWT_CTRL_NOTRCPKT_Pos) /*!< DWT CTRL: NOTRCPKT Mask */ + +#define DWT_CTRL_NOEXTTRIG_Pos 26U /*!< DWT CTRL: NOEXTTRIG Position */ +#define DWT_CTRL_NOEXTTRIG_Msk (0x1UL << DWT_CTRL_NOEXTTRIG_Pos) /*!< DWT CTRL: NOEXTTRIG Mask */ + +#define DWT_CTRL_NOCYCCNT_Pos 25U /*!< DWT CTRL: NOCYCCNT Position */ +#define DWT_CTRL_NOCYCCNT_Msk (0x1UL << DWT_CTRL_NOCYCCNT_Pos) /*!< DWT CTRL: NOCYCCNT Mask */ + +#define DWT_CTRL_NOPRFCNT_Pos 24U /*!< DWT CTRL: NOPRFCNT Position */ +#define DWT_CTRL_NOPRFCNT_Msk (0x1UL << DWT_CTRL_NOPRFCNT_Pos) /*!< DWT CTRL: NOPRFCNT Mask */ + +#define DWT_CTRL_CYCDISS_Pos 23U /*!< DWT CTRL: CYCDISS Position */ +#define DWT_CTRL_CYCDISS_Msk (0x1UL << DWT_CTRL_CYCDISS_Pos) /*!< DWT CTRL: CYCDISS Mask */ + +#define DWT_CTRL_CYCEVTENA_Pos 22U /*!< DWT CTRL: CYCEVTENA Position */ +#define DWT_CTRL_CYCEVTENA_Msk (0x1UL << DWT_CTRL_CYCEVTENA_Pos) /*!< DWT CTRL: CYCEVTENA Mask */ + +#define DWT_CTRL_FOLDEVTENA_Pos 21U /*!< DWT CTRL: FOLDEVTENA Position */ +#define DWT_CTRL_FOLDEVTENA_Msk (0x1UL << DWT_CTRL_FOLDEVTENA_Pos) /*!< DWT CTRL: FOLDEVTENA Mask */ + +#define DWT_CTRL_LSUEVTENA_Pos 20U /*!< DWT CTRL: LSUEVTENA Position */ +#define DWT_CTRL_LSUEVTENA_Msk (0x1UL << DWT_CTRL_LSUEVTENA_Pos) /*!< DWT CTRL: LSUEVTENA Mask */ + +#define DWT_CTRL_SLEEPEVTENA_Pos 19U /*!< DWT CTRL: SLEEPEVTENA Position */ +#define DWT_CTRL_SLEEPEVTENA_Msk (0x1UL << DWT_CTRL_SLEEPEVTENA_Pos) /*!< DWT CTRL: SLEEPEVTENA Mask */ + +#define DWT_CTRL_EXCEVTENA_Pos 18U /*!< DWT CTRL: EXCEVTENA Position */ +#define DWT_CTRL_EXCEVTENA_Msk (0x1UL << DWT_CTRL_EXCEVTENA_Pos) /*!< DWT CTRL: EXCEVTENA Mask */ + +#define DWT_CTRL_CPIEVTENA_Pos 17U /*!< DWT CTRL: CPIEVTENA Position */ +#define DWT_CTRL_CPIEVTENA_Msk (0x1UL << DWT_CTRL_CPIEVTENA_Pos) /*!< DWT CTRL: CPIEVTENA Mask */ + +#define DWT_CTRL_EXCTRCENA_Pos 16U /*!< DWT CTRL: EXCTRCENA Position */ +#define DWT_CTRL_EXCTRCENA_Msk (0x1UL << DWT_CTRL_EXCTRCENA_Pos) /*!< DWT CTRL: EXCTRCENA Mask */ + +#define DWT_CTRL_PCSAMPLENA_Pos 12U /*!< DWT CTRL: PCSAMPLENA Position */ +#define DWT_CTRL_PCSAMPLENA_Msk (0x1UL << DWT_CTRL_PCSAMPLENA_Pos) /*!< DWT CTRL: PCSAMPLENA Mask */ + +#define DWT_CTRL_SYNCTAP_Pos 10U /*!< DWT CTRL: SYNCTAP Position */ +#define DWT_CTRL_SYNCTAP_Msk (0x3UL << DWT_CTRL_SYNCTAP_Pos) /*!< DWT CTRL: SYNCTAP Mask */ + +#define DWT_CTRL_CYCTAP_Pos 9U /*!< DWT CTRL: CYCTAP Position */ +#define DWT_CTRL_CYCTAP_Msk (0x1UL << DWT_CTRL_CYCTAP_Pos) /*!< DWT CTRL: CYCTAP Mask */ + +#define DWT_CTRL_POSTINIT_Pos 5U /*!< DWT CTRL: POSTINIT Position */ +#define DWT_CTRL_POSTINIT_Msk (0xFUL << DWT_CTRL_POSTINIT_Pos) /*!< DWT CTRL: POSTINIT Mask */ + +#define DWT_CTRL_POSTPRESET_Pos 1U /*!< DWT CTRL: POSTPRESET Position */ +#define DWT_CTRL_POSTPRESET_Msk (0xFUL << DWT_CTRL_POSTPRESET_Pos) /*!< DWT CTRL: POSTPRESET Mask */ + +#define DWT_CTRL_CYCCNTENA_Pos 0U /*!< DWT CTRL: CYCCNTENA Position */ +#define DWT_CTRL_CYCCNTENA_Msk (0x1UL /*<< DWT_CTRL_CYCCNTENA_Pos*/) /*!< DWT CTRL: CYCCNTENA Mask */ + +/* DWT CPI Count Register Definitions */ +#define DWT_CPICNT_CPICNT_Pos 0U /*!< DWT CPICNT: CPICNT Position */ +#define DWT_CPICNT_CPICNT_Msk (0xFFUL /*<< DWT_CPICNT_CPICNT_Pos*/) /*!< DWT CPICNT: CPICNT Mask */ + +/* DWT Exception Overhead Count Register Definitions */ +#define DWT_EXCCNT_EXCCNT_Pos 0U /*!< DWT EXCCNT: EXCCNT Position */ +#define DWT_EXCCNT_EXCCNT_Msk (0xFFUL /*<< DWT_EXCCNT_EXCCNT_Pos*/) /*!< DWT EXCCNT: EXCCNT Mask */ + +/* DWT Sleep Count Register Definitions */ +#define DWT_SLEEPCNT_SLEEPCNT_Pos 0U /*!< DWT SLEEPCNT: SLEEPCNT Position */ +#define DWT_SLEEPCNT_SLEEPCNT_Msk (0xFFUL /*<< DWT_SLEEPCNT_SLEEPCNT_Pos*/) /*!< DWT SLEEPCNT: SLEEPCNT Mask */ + +/* DWT LSU Count Register Definitions */ +#define DWT_LSUCNT_LSUCNT_Pos 0U /*!< DWT LSUCNT: LSUCNT Position */ +#define DWT_LSUCNT_LSUCNT_Msk (0xFFUL /*<< DWT_LSUCNT_LSUCNT_Pos*/) /*!< DWT LSUCNT: LSUCNT Mask */ + +/* DWT Folded-instruction Count Register Definitions */ +#define DWT_FOLDCNT_FOLDCNT_Pos 0U /*!< DWT FOLDCNT: FOLDCNT Position */ +#define DWT_FOLDCNT_FOLDCNT_Msk (0xFFUL /*<< DWT_FOLDCNT_FOLDCNT_Pos*/) /*!< DWT FOLDCNT: FOLDCNT Mask */ + +/* DWT Comparator Function Register Definitions */ +#define DWT_FUNCTION_ID_Pos 27U /*!< DWT FUNCTION: ID Position */ +#define DWT_FUNCTION_ID_Msk (0x1FUL << DWT_FUNCTION_ID_Pos) /*!< DWT FUNCTION: ID Mask */ + +#define DWT_FUNCTION_MATCHED_Pos 24U /*!< DWT FUNCTION: MATCHED Position */ +#define DWT_FUNCTION_MATCHED_Msk (0x1UL << DWT_FUNCTION_MATCHED_Pos) /*!< DWT FUNCTION: MATCHED Mask */ + +#define DWT_FUNCTION_DATAVSIZE_Pos 10U /*!< DWT FUNCTION: DATAVSIZE Position */ +#define DWT_FUNCTION_DATAVSIZE_Msk (0x3UL << DWT_FUNCTION_DATAVSIZE_Pos) /*!< DWT FUNCTION: DATAVSIZE Mask */ + +#define DWT_FUNCTION_ACTION_Pos 4U /*!< DWT FUNCTION: ACTION Position */ +#define DWT_FUNCTION_ACTION_Msk (0x1UL << DWT_FUNCTION_ACTION_Pos) /*!< DWT FUNCTION: ACTION Mask */ + +#define DWT_FUNCTION_MATCH_Pos 0U /*!< DWT FUNCTION: MATCH Position */ +#define DWT_FUNCTION_MATCH_Msk (0xFUL /*<< DWT_FUNCTION_MATCH_Pos*/) /*!< DWT FUNCTION: MATCH Mask */ + +/*@}*/ /* end of group CMSIS_DWT */ + + +/** + \ingroup CMSIS_core_register + \defgroup MemSysCtl_Type Memory System Control Registers (IMPLEMENTATION DEFINED) + \brief Type definitions for the Memory System Control Registers (MEMSYSCTL) + @{ + */ + +/** + \brief Structure type to access the Memory System Control Registers (MEMSYSCTL). + */ +typedef struct +{ + __IOM uint32_t MSCR; /*!< Offset: 0x000 (R/W) Memory System Control Register */ + __IOM uint32_t PFCR; /*!< Offset: 0x004 (R/W) Prefetcher Control Register */ + uint32_t RESERVED1[2U]; + __IOM uint32_t ITCMCR; /*!< Offset: 0x010 (R/W) ITCM Control Register */ + __IOM uint32_t DTCMCR; /*!< Offset: 0x014 (R/W) DTCM Control Register */ + __IOM uint32_t PAHBCR; /*!< Offset: 0x018 (R/W) P-AHB Control Register */ + uint32_t RESERVED2[313U]; + __IOM uint32_t ITGU_CTRL; /*!< Offset: 0x500 (R/W) ITGU Control Register */ + __IOM uint32_t ITGU_CFG; /*!< Offset: 0x504 (R/W) ITGU Configuration Register */ + uint32_t RESERVED3[2U]; + __IOM uint32_t ITGU_LUT[16U]; /*!< Offset: 0x510 (R/W) ITGU Look Up Table Register */ + uint32_t RESERVED4[44U]; + __IOM uint32_t DTGU_CTRL; /*!< Offset: 0x600 (R/W) DTGU Control Registers */ + __IOM uint32_t DTGU_CFG; /*!< Offset: 0x604 (R/W) DTGU Configuration Register */ + uint32_t RESERVED5[2U]; + __IOM uint32_t DTGU_LUT[16U]; /*!< Offset: 0x610 (R/W) DTGU Look Up Table Register */ +} MemSysCtl_Type; + +/* MEMSYSCTL Memory System Control Register (MSCR) Register Definitions */ +#define MEMSYSCTL_MSCR_CPWRDN_Pos 17U /*!< MEMSYSCTL MSCR: CPWRDN Position */ +#define MEMSYSCTL_MSCR_CPWRDN_Msk (0x1UL << MEMSYSCTL_MSCR_CPWRDN_Pos) /*!< MEMSYSCTL MSCR: CPWRDN Mask */ + +#define MEMSYSCTL_MSCR_DCCLEAN_Pos 16U /*!< MEMSYSCTL MSCR: DCCLEAN Position */ +#define MEMSYSCTL_MSCR_DCCLEAN_Msk (0x1UL << MEMSYSCTL_MSCR_DCCLEAN_Pos) /*!< MEMSYSCTL MSCR: DCCLEAN Mask */ + +#define MEMSYSCTL_MSCR_ICACTIVE_Pos 13U /*!< MEMSYSCTL MSCR: ICACTIVE Position */ +#define MEMSYSCTL_MSCR_ICACTIVE_Msk (0x1UL << MEMSYSCTL_MSCR_ICACTIVE_Pos) /*!< MEMSYSCTL MSCR: ICACTIVE Mask */ + +#define MEMSYSCTL_MSCR_DCACTIVE_Pos 12U /*!< MEMSYSCTL MSCR: DCACTIVE Position */ +#define MEMSYSCTL_MSCR_DCACTIVE_Msk (0x1UL << MEMSYSCTL_MSCR_DCACTIVE_Pos) /*!< MEMSYSCTL MSCR: DCACTIVE Mask */ + +#define MEMSYSCTL_MSCR_EVECCFAULT_Pos 3U /*!< MEMSYSCTL MSCR: EVECCFAULT Position */ +#define MEMSYSCTL_MSCR_EVECCFAULT_Msk (0x1UL << MEMSYSCTL_MSCR_EVECCFAULT_Pos) /*!< MEMSYSCTL MSCR: EVECCFAULT Mask */ + +#define MEMSYSCTL_MSCR_FORCEWT_Pos 2U /*!< MEMSYSCTL MSCR: FORCEWT Position */ +#define MEMSYSCTL_MSCR_FORCEWT_Msk (0x1UL << MEMSYSCTL_MSCR_FORCEWT_Pos) /*!< MEMSYSCTL MSCR: FORCEWT Mask */ + +#define MEMSYSCTL_MSCR_ECCEN_Pos 1U /*!< MEMSYSCTL MSCR: ECCEN Position */ +#define MEMSYSCTL_MSCR_ECCEN_Msk (0x1UL << MEMSYSCTL_MSCR_ECCEN_Pos) /*!< MEMSYSCTL MSCR: ECCEN Mask */ + +/* MEMSYSCTL Prefetcher Control Register (PFCR) Register Definitions */ +#define MEMSYSCTL_PFCR_DIS_NLP_Pos 7U /*!< MEMSYSCTL PFCR: DIS_NLP Position */ +#define MEMSYSCTL_PFCR_DIS_NLP_Msk (0x1UL << MEMSYSCTL_PFCR_DIS_NLP_Pos) /*!< MEMSYSCTL PFCR: DIS_NLP Mask */ + +#define MEMSYSCTL_PFCR_ENABLE_Pos 0U /*!< MEMSYSCTL PFCR: ENABLE Position */ +#define MEMSYSCTL_PFCR_ENABLE_Msk (0x1UL /*<< MEMSYSCTL_PFCR_ENABLE_Pos*/) /*!< MEMSYSCTL PFCR: ENABLE Mask */ + +/* MEMSYSCTL ITCM Control Register (ITCMCR) Register Definitions */ +#define MEMSYSCTL_ITCMCR_SZ_Pos 3U /*!< MEMSYSCTL ITCMCR: SZ Position */ +#define MEMSYSCTL_ITCMCR_SZ_Msk (0xFUL << MEMSYSCTL_ITCMCR_SZ_Pos) /*!< MEMSYSCTL ITCMCR: SZ Mask */ + +#define MEMSYSCTL_ITCMCR_EN_Pos 0U /*!< MEMSYSCTL ITCMCR: EN Position */ +#define MEMSYSCTL_ITCMCR_EN_Msk (0x1UL /*<< MEMSYSCTL_ITCMCR_EN_Pos*/) /*!< MEMSYSCTL ITCMCR: EN Mask */ + +/* MEMSYSCTL DTCM Control Register (DTCMCR) Register Definitions */ +#define MEMSYSCTL_DTCMCR_SZ_Pos 3U /*!< MEMSYSCTL DTCMCR: SZ Position */ +#define MEMSYSCTL_DTCMCR_SZ_Msk (0xFUL << MEMSYSCTL_DTCMCR_SZ_Pos) /*!< MEMSYSCTL DTCMCR: SZ Mask */ + +#define MEMSYSCTL_DTCMCR_EN_Pos 0U /*!< MEMSYSCTL DTCMCR: EN Position */ +#define MEMSYSCTL_DTCMCR_EN_Msk (0x1UL /*<< MEMSYSCTL_DTCMCR_EN_Pos*/) /*!< MEMSYSCTL DTCMCR: EN Mask */ + +/* MEMSYSCTL P-AHB Control Register (PAHBCR) Register Definitions */ +#define MEMSYSCTL_PAHBCR_SZ_Pos 1U /*!< MEMSYSCTL PAHBCR: SZ Position */ +#define MEMSYSCTL_PAHBCR_SZ_Msk (0x7UL << MEMSYSCTL_PAHBCR_SZ_Pos) /*!< MEMSYSCTL PAHBCR: SZ Mask */ + +#define MEMSYSCTL_PAHBCR_EN_Pos 0U /*!< MEMSYSCTL PAHBCR: EN Position */ +#define MEMSYSCTL_PAHBCR_EN_Msk (0x1UL /*<< MEMSYSCTL_PAHBCR_EN_Pos*/) /*!< MEMSYSCTL PAHBCR: EN Mask */ + +/* MEMSYSCTL ITGU Control Register (ITGU_CTRL) Register Definitions */ +#define MEMSYSCTL_ITGU_CTRL_DEREN_Pos 1U /*!< MEMSYSCTL ITGU_CTRL: DEREN Position */ +#define MEMSYSCTL_ITGU_CTRL_DEREN_Msk (0x1UL << MEMSYSCTL_ITGU_CTRL_DEREN_Pos) /*!< MEMSYSCTL ITGU_CTRL: DEREN Mask */ + +#define MEMSYSCTL_ITGU_CTRL_DBFEN_Pos 0U /*!< MEMSYSCTL ITGU_CTRL: DBFEN Position */ +#define MEMSYSCTL_ITGU_CTRL_DBFEN_Msk (0x1UL /*<< MEMSYSCTL_ITGU_CTRL_DBFEN_Pos*/) /*!< MEMSYSCTL ITGU_CTRL: DBFEN Mask */ + +/* MEMSYSCTL ITGU Configuration Register (ITGU_CFG) Register Definitions */ +#define MEMSYSCTL_ITGU_CFG_PRESENT_Pos 31U /*!< MEMSYSCTL ITGU_CFG: PRESENT Position */ +#define MEMSYSCTL_ITGU_CFG_PRESENT_Msk (0x1UL << MEMSYSCTL_ITGU_CFG_PRESENT_Pos) /*!< MEMSYSCTL ITGU_CFG: PRESENT Mask */ + +#define MEMSYSCTL_ITGU_CFG_NUMBLKS_Pos 8U /*!< MEMSYSCTL ITGU_CFG: NUMBLKS Position */ +#define MEMSYSCTL_ITGU_CFG_NUMBLKS_Msk (0xFUL << MEMSYSCTL_ITGU_CFG_NUMBLKS_Pos) /*!< MEMSYSCTL ITGU_CFG: NUMBLKS Mask */ + +#define MEMSYSCTL_ITGU_CFG_BLKSZ_Pos 0U /*!< MEMSYSCTL ITGU_CFG: BLKSZ Position */ +#define MEMSYSCTL_ITGU_CFG_BLKSZ_Msk (0xFUL /*<< MEMSYSCTL_ITGU_CFG_BLKSZ_Pos*/) /*!< MEMSYSCTL ITGU_CFG: BLKSZ Mask */ + +/* MEMSYSCTL DTGU Control Registers (DTGU_CTRL) Register Definitions */ +#define MEMSYSCTL_DTGU_CTRL_DEREN_Pos 1U /*!< MEMSYSCTL DTGU_CTRL: DEREN Position */ +#define MEMSYSCTL_DTGU_CTRL_DEREN_Msk (0x1UL << MEMSYSCTL_DTGU_CTRL_DEREN_Pos) /*!< MEMSYSCTL DTGU_CTRL: DEREN Mask */ + +#define MEMSYSCTL_DTGU_CTRL_DBFEN_Pos 0U /*!< MEMSYSCTL DTGU_CTRL: DBFEN Position */ +#define MEMSYSCTL_DTGU_CTRL_DBFEN_Msk (0x1UL /*<< MEMSYSCTL_DTGU_CTRL_DBFEN_Pos*/) /*!< MEMSYSCTL DTGU_CTRL: DBFEN Mask */ + +/* MEMSYSCTL DTGU Configuration Register (DTGU_CFG) Register Definitions */ +#define MEMSYSCTL_DTGU_CFG_PRESENT_Pos 31U /*!< MEMSYSCTL DTGU_CFG: PRESENT Position */ +#define MEMSYSCTL_DTGU_CFG_PRESENT_Msk (0x1UL << MEMSYSCTL_DTGU_CFG_PRESENT_Pos) /*!< MEMSYSCTL DTGU_CFG: PRESENT Mask */ + +#define MEMSYSCTL_DTGU_CFG_NUMBLKS_Pos 8U /*!< MEMSYSCTL DTGU_CFG: NUMBLKS Position */ +#define MEMSYSCTL_DTGU_CFG_NUMBLKS_Msk (0xFUL << MEMSYSCTL_DTGU_CFG_NUMBLKS_Pos) /*!< MEMSYSCTL DTGU_CFG: NUMBLKS Mask */ + +#define MEMSYSCTL_DTGU_CFG_BLKSZ_Pos 0U /*!< MEMSYSCTL DTGU_CFG: BLKSZ Position */ +#define MEMSYSCTL_DTGU_CFG_BLKSZ_Msk (0xFUL /*<< MEMSYSCTL_DTGU_CFG_BLKSZ_Pos*/) /*!< MEMSYSCTL DTGU_CFG: BLKSZ Mask */ + + +/*@}*/ /* end of group MemSysCtl_Type */ + + +/** + \ingroup CMSIS_core_register + \defgroup PwrModCtl_Type Power Mode Control Registers + \brief Type definitions for the Power Mode Control Registers (PWRMODCTL) + @{ + */ + +/** + \brief Structure type to access the Power Mode Control Registers (PWRMODCTL). + */ +typedef struct +{ + __IOM uint32_t CPDLPSTATE; /*!< Offset: 0x000 (R/W) Core Power Domain Low Power State Register */ + __IOM uint32_t DPDLPSTATE; /*!< Offset: 0x004 (R/W) Debug Power Domain Low Power State Register */ +} PwrModCtl_Type; + +/* PWRMODCTL Core Power Domain Low Power State (CPDLPSTATE) Register Definitions */ +#define PWRMODCTL_CPDLPSTATE_RLPSTATE_Pos 8U /*!< PWRMODCTL CPDLPSTATE: RLPSTATE Position */ +#define PWRMODCTL_CPDLPSTATE_RLPSTATE_Msk (0x3UL << PWRMODCTL_CPDLPSTATE_RLPSTATE_Pos) /*!< PWRMODCTL CPDLPSTATE: RLPSTATE Mask */ + +#define PWRMODCTL_CPDLPSTATE_ELPSTATE_Pos 4U /*!< PWRMODCTL CPDLPSTATE: ELPSTATE Position */ +#define PWRMODCTL_CPDLPSTATE_ELPSTATE_Msk (0x3UL << PWRMODCTL_CPDLPSTATE_ELPSTATE_Pos) /*!< PWRMODCTL CPDLPSTATE: ELPSTATE Mask */ + +#define PWRMODCTL_CPDLPSTATE_CLPSTATE_Pos 0U /*!< PWRMODCTL CPDLPSTATE: CLPSTATE Position */ +#define PWRMODCTL_CPDLPSTATE_CLPSTATE_Msk (0x3UL /*<< PWRMODCTL_CPDLPSTATE_CLPSTATE_Pos*/) /*!< PWRMODCTL CPDLPSTATE: CLPSTATE Mask */ + +/* PWRMODCTL Debug Power Domain Low Power State (DPDLPSTATE) Register Definitions */ +#define PWRMODCTL_DPDLPSTATE_DLPSTATE_Pos 0U /*!< PWRMODCTL DPDLPSTATE: DLPSTATE Position */ +#define PWRMODCTL_DPDLPSTATE_DLPSTATE_Msk (0x3UL /*<< PWRMODCTL_DPDLPSTATE_DLPSTATE_Pos*/) /*!< PWRMODCTL DPDLPSTATE: DLPSTATE Mask */ + +/*@}*/ /* end of group PwrModCtl_Type */ + + +/** + \ingroup CMSIS_core_register + \defgroup EWIC_Type External Wakeup Interrupt Controller Registers + \brief Type definitions for the External Wakeup Interrupt Controller Registers (EWIC) + @{ + */ + +/** + \brief Structure type to access the External Wakeup Interrupt Controller Registers (EWIC). + */ +typedef struct +{ + __OM uint32_t EVENTSPR; /*!< Offset: 0x000 ( /W) Event Set Pending Register */ + uint32_t RESERVED0[31U]; + __IM uint32_t EVENTMASKA; /*!< Offset: 0x080 (R/W) Event Mask A Register */ + __IM uint32_t EVENTMASK[15]; /*!< Offset: 0x084 (R/W) Event Mask Register */ +} EWIC_Type; + +/* EWIC External Wakeup Interrupt Controller (EVENTSPR) Register Definitions */ +#define EWIC_EVENTSPR_EDBGREQ_Pos 2U /*!< EWIC EVENTSPR: EDBGREQ Position */ +#define EWIC_EVENTSPR_EDBGREQ_Msk (0x1UL << EWIC_EVENTSPR_EDBGREQ_Pos) /*!< EWIC EVENTSPR: EDBGREQ Mask */ + +#define EWIC_EVENTSPR_NMI_Pos 1U /*!< EWIC EVENTSPR: NMI Position */ +#define EWIC_EVENTSPR_NMI_Msk (0x1UL << EWIC_EVENTSPR_NMI_Pos) /*!< EWIC EVENTSPR: NMI Mask */ + +#define EWIC_EVENTSPR_EVENT_Pos 0U /*!< EWIC EVENTSPR: EVENT Position */ +#define EWIC_EVENTSPR_EVENT_Msk (0x1UL /*<< EWIC_EVENTSPR_EVENT_Pos*/) /*!< EWIC EVENTSPR: EVENT Mask */ + +/* EWIC External Wakeup Interrupt Controller (EVENTMASKA) Register Definitions */ +#define EWIC_EVENTMASKA_EDBGREQ_Pos 2U /*!< EWIC EVENTMASKA: EDBGREQ Position */ +#define EWIC_EVENTMASKA_EDBGREQ_Msk (0x1UL << EWIC_EVENTMASKA_EDBGREQ_Pos) /*!< EWIC EVENTMASKA: EDBGREQ Mask */ + +#define EWIC_EVENTMASKA_NMI_Pos 1U /*!< EWIC EVENTMASKA: NMI Position */ +#define EWIC_EVENTMASKA_NMI_Msk (0x1UL << EWIC_EVENTMASKA_NMI_Pos) /*!< EWIC EVENTMASKA: NMI Mask */ + +#define EWIC_EVENTMASKA_EVENT_Pos 0U /*!< EWIC EVENTMASKA: EVENT Position */ +#define EWIC_EVENTMASKA_EVENT_Msk (0x1UL /*<< EWIC_EVENTMASKA_EVENT_Pos*/) /*!< EWIC EVENTMASKA: EVENT Mask */ + +/* EWIC External Wakeup Interrupt Controller (EVENTMASK) Register Definitions */ +#define EWIC_EVENTMASK_IRQ_Pos 0U /*!< EWIC EVENTMASKA: IRQ Position */ +#define EWIC_EVENTMASK_IRQ_Msk (0xFFFFFFFFUL /*<< EWIC_EVENTMASKA_IRQ_Pos*/) /*!< EWIC EVENTMASKA: IRQ Mask */ + +/*@}*/ /* end of group EWIC_Type */ + + +/** + \ingroup CMSIS_core_register + \defgroup ErrBnk_Type Error Banking Registers (IMPLEMENTATION DEFINED) + \brief Type definitions for the Error Banking Registers (ERRBNK) + @{ + */ + +/** + \brief Structure type to access the Error Banking Registers (ERRBNK). + */ +typedef struct +{ + __IOM uint32_t IEBR0; /*!< Offset: 0x000 (R/W) Instruction Cache Error Bank Register 0 */ + __IOM uint32_t IEBR1; /*!< Offset: 0x004 (R/W) Instruction Cache Error Bank Register 1 */ + uint32_t RESERVED0[2U]; + __IOM uint32_t DEBR0; /*!< Offset: 0x010 (R/W) Data Cache Error Bank Register 0 */ + __IOM uint32_t DEBR1; /*!< Offset: 0x014 (R/W) Data Cache Error Bank Register 1 */ + uint32_t RESERVED1[2U]; + __IOM uint32_t TEBR0; /*!< Offset: 0x020 (R/W) TCM Error Bank Register 0 */ + uint32_t RESERVED2[1U]; + __IOM uint32_t TEBR1; /*!< Offset: 0x028 (R/W) TCM Error Bank Register 1 */ +} ErrBnk_Type; + +/* ERRBNK Instruction Cache Error Bank Register 0 (IEBR0) Register Definitions */ +#define ERRBNK_IEBR0_SWDEF_Pos 30U /*!< ERRBNK IEBR0: SWDEF Position */ +#define ERRBNK_IEBR0_SWDEF_Msk (0x3UL << ERRBNK_IEBR0_SWDEF_Pos) /*!< ERRBNK IEBR0: SWDEF Mask */ + +#define ERRBNK_IEBR0_BANK_Pos 16U /*!< ERRBNK IEBR0: BANK Position */ +#define ERRBNK_IEBR0_BANK_Msk (0x1UL << ERRBNK_IEBR0_BANK_Pos) /*!< ERRBNK IEBR0: BANK Mask */ + +#define ERRBNK_IEBR0_LOCATION_Pos 2U /*!< ERRBNK IEBR0: LOCATION Position */ +#define ERRBNK_IEBR0_LOCATION_Msk (0x3FFFUL << ERRBNK_IEBR0_LOCATION_Pos) /*!< ERRBNK IEBR0: LOCATION Mask */ + +#define ERRBNK_IEBR0_LOCKED_Pos 1U /*!< ERRBNK IEBR0: LOCKED Position */ +#define ERRBNK_IEBR0_LOCKED_Msk (0x1UL << ERRBNK_IEBR0_LOCKED_Pos) /*!< ERRBNK IEBR0: LOCKED Mask */ + +#define ERRBNK_IEBR0_VALID_Pos 0U /*!< ERRBNK IEBR0: VALID Position */ +#define ERRBNK_IEBR0_VALID_Msk (0x1UL << /*ERRBNK_IEBR0_VALID_Pos*/) /*!< ERRBNK IEBR0: VALID Mask */ + +/* ERRBNK Instruction Cache Error Bank Register 1 (IEBR1) Register Definitions */ +#define ERRBNK_IEBR1_SWDEF_Pos 30U /*!< ERRBNK IEBR1: SWDEF Position */ +#define ERRBNK_IEBR1_SWDEF_Msk (0x3UL << ERRBNK_IEBR1_SWDEF_Pos) /*!< ERRBNK IEBR1: SWDEF Mask */ + +#define ERRBNK_IEBR1_BANK_Pos 16U /*!< ERRBNK IEBR1: BANK Position */ +#define ERRBNK_IEBR1_BANK_Msk (0x1UL << ERRBNK_IEBR1_BANK_Pos) /*!< ERRBNK IEBR1: BANK Mask */ + +#define ERRBNK_IEBR1_LOCATION_Pos 2U /*!< ERRBNK IEBR1: LOCATION Position */ +#define ERRBNK_IEBR1_LOCATION_Msk (0x3FFFUL << ERRBNK_IEBR1_LOCATION_Pos) /*!< ERRBNK IEBR1: LOCATION Mask */ + +#define ERRBNK_IEBR1_LOCKED_Pos 1U /*!< ERRBNK IEBR1: LOCKED Position */ +#define ERRBNK_IEBR1_LOCKED_Msk (0x1UL << ERRBNK_IEBR1_LOCKED_Pos) /*!< ERRBNK IEBR1: LOCKED Mask */ + +#define ERRBNK_IEBR1_VALID_Pos 0U /*!< ERRBNK IEBR1: VALID Position */ +#define ERRBNK_IEBR1_VALID_Msk (0x1UL << /*ERRBNK_IEBR1_VALID_Pos*/) /*!< ERRBNK IEBR1: VALID Mask */ + +/* ERRBNK Data Cache Error Bank Register 0 (DEBR0) Register Definitions */ +#define ERRBNK_DEBR0_SWDEF_Pos 30U /*!< ERRBNK DEBR0: SWDEF Position */ +#define ERRBNK_DEBR0_SWDEF_Msk (0x3UL << ERRBNK_DEBR0_SWDEF_Pos) /*!< ERRBNK DEBR0: SWDEF Mask */ + +#define ERRBNK_DEBR0_TYPE_Pos 17U /*!< ERRBNK DEBR0: TYPE Position */ +#define ERRBNK_DEBR0_TYPE_Msk (0x1UL << ERRBNK_DEBR0_TYPE_Pos) /*!< ERRBNK DEBR0: TYPE Mask */ + +#define ERRBNK_DEBR0_BANK_Pos 16U /*!< ERRBNK DEBR0: BANK Position */ +#define ERRBNK_DEBR0_BANK_Msk (0x1UL << ERRBNK_DEBR0_BANK_Pos) /*!< ERRBNK DEBR0: BANK Mask */ + +#define ERRBNK_DEBR0_LOCATION_Pos 2U /*!< ERRBNK DEBR0: LOCATION Position */ +#define ERRBNK_DEBR0_LOCATION_Msk (0x3FFFUL << ERRBNK_DEBR0_LOCATION_Pos) /*!< ERRBNK DEBR0: LOCATION Mask */ + +#define ERRBNK_DEBR0_LOCKED_Pos 1U /*!< ERRBNK DEBR0: LOCKED Position */ +#define ERRBNK_DEBR0_LOCKED_Msk (0x1UL << ERRBNK_DEBR0_LOCKED_Pos) /*!< ERRBNK DEBR0: LOCKED Mask */ + +#define ERRBNK_DEBR0_VALID_Pos 0U /*!< ERRBNK DEBR0: VALID Position */ +#define ERRBNK_DEBR0_VALID_Msk (0x1UL << /*ERRBNK_DEBR0_VALID_Pos*/) /*!< ERRBNK DEBR0: VALID Mask */ + +/* ERRBNK Data Cache Error Bank Register 1 (DEBR1) Register Definitions */ +#define ERRBNK_DEBR1_SWDEF_Pos 30U /*!< ERRBNK DEBR1: SWDEF Position */ +#define ERRBNK_DEBR1_SWDEF_Msk (0x3UL << ERRBNK_DEBR1_SWDEF_Pos) /*!< ERRBNK DEBR1: SWDEF Mask */ + +#define ERRBNK_DEBR1_TYPE_Pos 17U /*!< ERRBNK DEBR1: TYPE Position */ +#define ERRBNK_DEBR1_TYPE_Msk (0x1UL << ERRBNK_DEBR1_TYPE_Pos) /*!< ERRBNK DEBR1: TYPE Mask */ + +#define ERRBNK_DEBR1_BANK_Pos 16U /*!< ERRBNK DEBR1: BANK Position */ +#define ERRBNK_DEBR1_BANK_Msk (0x1UL << ERRBNK_DEBR1_BANK_Pos) /*!< ERRBNK DEBR1: BANK Mask */ + +#define ERRBNK_DEBR1_LOCATION_Pos 2U /*!< ERRBNK DEBR1: LOCATION Position */ +#define ERRBNK_DEBR1_LOCATION_Msk (0x3FFFUL << ERRBNK_DEBR1_LOCATION_Pos) /*!< ERRBNK DEBR1: LOCATION Mask */ + +#define ERRBNK_DEBR1_LOCKED_Pos 1U /*!< ERRBNK DEBR1: LOCKED Position */ +#define ERRBNK_DEBR1_LOCKED_Msk (0x1UL << ERRBNK_DEBR1_LOCKED_Pos) /*!< ERRBNK DEBR1: LOCKED Mask */ + +#define ERRBNK_DEBR1_VALID_Pos 0U /*!< ERRBNK DEBR1: VALID Position */ +#define ERRBNK_DEBR1_VALID_Msk (0x1UL << /*ERRBNK_DEBR1_VALID_Pos*/) /*!< ERRBNK DEBR1: VALID Mask */ + +/* ERRBNK TCM Error Bank Register 0 (TEBR0) Register Definitions */ +#define ERRBNK_TEBR0_SWDEF_Pos 30U /*!< ERRBNK TEBR0: SWDEF Position */ +#define ERRBNK_TEBR0_SWDEF_Msk (0x3UL << ERRBNK_TEBR0_SWDEF_Pos) /*!< ERRBNK TEBR0: SWDEF Mask */ + +#define ERRBNK_TEBR0_POISON_Pos 28U /*!< ERRBNK TEBR0: POISON Position */ +#define ERRBNK_TEBR0_POISON_Msk (0x1UL << ERRBNK_TEBR0_POISON_Pos) /*!< ERRBNK TEBR0: POISON Mask */ + +#define ERRBNK_TEBR0_TYPE_Pos 27U /*!< ERRBNK TEBR0: TYPE Position */ +#define ERRBNK_TEBR0_TYPE_Msk (0x1UL << ERRBNK_TEBR0_TYPE_Pos) /*!< ERRBNK TEBR0: TYPE Mask */ + +#define ERRBNK_TEBR0_BANK_Pos 24U /*!< ERRBNK TEBR0: BANK Position */ +#define ERRBNK_TEBR0_BANK_Msk (0x3UL << ERRBNK_TEBR0_BANK_Pos) /*!< ERRBNK TEBR0: BANK Mask */ + +#define ERRBNK_TEBR0_LOCATION_Pos 2U /*!< ERRBNK TEBR0: LOCATION Position */ +#define ERRBNK_TEBR0_LOCATION_Msk (0x3FFFFFUL << ERRBNK_TEBR0_LOCATION_Pos) /*!< ERRBNK TEBR0: LOCATION Mask */ + +#define ERRBNK_TEBR0_LOCKED_Pos 1U /*!< ERRBNK TEBR0: LOCKED Position */ +#define ERRBNK_TEBR0_LOCKED_Msk (0x1UL << ERRBNK_TEBR0_LOCKED_Pos) /*!< ERRBNK TEBR0: LOCKED Mask */ + +#define ERRBNK_TEBR0_VALID_Pos 0U /*!< ERRBNK TEBR0: VALID Position */ +#define ERRBNK_TEBR0_VALID_Msk (0x1UL << /*ERRBNK_TEBR0_VALID_Pos*/) /*!< ERRBNK TEBR0: VALID Mask */ + +/* ERRBNK TCM Error Bank Register 1 (TEBR1) Register Definitions */ +#define ERRBNK_TEBR1_SWDEF_Pos 30U /*!< ERRBNK TEBR1: SWDEF Position */ +#define ERRBNK_TEBR1_SWDEF_Msk (0x3UL << ERRBNK_TEBR1_SWDEF_Pos) /*!< ERRBNK TEBR1: SWDEF Mask */ + +#define ERRBNK_TEBR1_POISON_Pos 28U /*!< ERRBNK TEBR1: POISON Position */ +#define ERRBNK_TEBR1_POISON_Msk (0x1UL << ERRBNK_TEBR1_POISON_Pos) /*!< ERRBNK TEBR1: POISON Mask */ + +#define ERRBNK_TEBR1_TYPE_Pos 27U /*!< ERRBNK TEBR1: TYPE Position */ +#define ERRBNK_TEBR1_TYPE_Msk (0x1UL << ERRBNK_TEBR1_TYPE_Pos) /*!< ERRBNK TEBR1: TYPE Mask */ + +#define ERRBNK_TEBR1_BANK_Pos 24U /*!< ERRBNK TEBR1: BANK Position */ +#define ERRBNK_TEBR1_BANK_Msk (0x3UL << ERRBNK_TEBR1_BANK_Pos) /*!< ERRBNK TEBR1: BANK Mask */ + +#define ERRBNK_TEBR1_LOCATION_Pos 2U /*!< ERRBNK TEBR1: LOCATION Position */ +#define ERRBNK_TEBR1_LOCATION_Msk (0x3FFFFFUL << ERRBNK_TEBR1_LOCATION_Pos) /*!< ERRBNK TEBR1: LOCATION Mask */ + +#define ERRBNK_TEBR1_LOCKED_Pos 1U /*!< ERRBNK TEBR1: LOCKED Position */ +#define ERRBNK_TEBR1_LOCKED_Msk (0x1UL << ERRBNK_TEBR1_LOCKED_Pos) /*!< ERRBNK TEBR1: LOCKED Mask */ + +#define ERRBNK_TEBR1_VALID_Pos 0U /*!< ERRBNK TEBR1: VALID Position */ +#define ERRBNK_TEBR1_VALID_Msk (0x1UL << /*ERRBNK_TEBR1_VALID_Pos*/) /*!< ERRBNK TEBR1: VALID Mask */ + +/*@}*/ /* end of group ErrBnk_Type */ + + +/** + \ingroup CMSIS_core_register + \defgroup PrcCfgInf_Type Processor Configuration Information Registers (IMPLEMENTATION DEFINED) + \brief Type definitions for the Processor Configuration Information Registerss (PRCCFGINF) + @{ + */ + +/** + \brief Structure type to access the Processor Configuration Information Registerss (PRCCFGINF). + */ +typedef struct +{ + __OM uint32_t CFGINFOSEL; /*!< Offset: 0x000 ( /W) Processor Configuration Information Selection Register */ + __IM uint32_t CFGINFORD; /*!< Offset: 0x004 (R/ ) Processor Configuration Information Read Data Register */ +} PrcCfgInf_Type; + +/* PRCCFGINF Processor Configuration Information Selection Register (CFGINFOSEL) Definitions */ + +/* PRCCFGINF Processor Configuration Information Read Data Register (CFGINFORD) Definitions */ + +/*@}*/ /* end of group PrcCfgInf_Type */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_TPI Trace Port Interface (TPI) + \brief Type definitions for the Trace Port Interface (TPI) + @{ + */ + +/** + \brief Structure type to access the Trace Port Interface Register (TPI). + */ +typedef struct +{ + __IM uint32_t SSPSR; /*!< Offset: 0x000 (R/ ) Supported Parallel Port Sizes Register */ + __IOM uint32_t CSPSR; /*!< Offset: 0x004 (R/W) Current Parallel Port Sizes Register */ + uint32_t RESERVED0[2U]; + __IOM uint32_t ACPR; /*!< Offset: 0x010 (R/W) Asynchronous Clock Prescaler Register */ + uint32_t RESERVED1[55U]; + __IOM uint32_t SPPR; /*!< Offset: 0x0F0 (R/W) Selected Pin Protocol Register */ + uint32_t RESERVED2[131U]; + __IM uint32_t FFSR; /*!< Offset: 0x300 (R/ ) Formatter and Flush Status Register */ + __IOM uint32_t FFCR; /*!< Offset: 0x304 (R/W) Formatter and Flush Control Register */ + __IOM uint32_t PSCR; /*!< Offset: 0x308 (R/W) Periodic Synchronization Control Register */ + uint32_t RESERVED3[809U]; + __OM uint32_t LAR; /*!< Offset: 0xFB0 ( /W) Software Lock Access Register */ + __IM uint32_t LSR; /*!< Offset: 0xFB4 (R/ ) Software Lock Status Register */ + uint32_t RESERVED4[4U]; + __IM uint32_t TYPE; /*!< Offset: 0xFC8 (R/ ) Device Identifier Register */ + __IM uint32_t DEVTYPE; /*!< Offset: 0xFCC (R/ ) Device Type Register */ +} TPI_Type; + +/* TPI Asynchronous Clock Prescaler Register Definitions */ +#define TPI_ACPR_SWOSCALER_Pos 0U /*!< TPI ACPR: SWOSCALER Position */ +#define TPI_ACPR_SWOSCALER_Msk (0xFFFFUL /*<< TPI_ACPR_SWOSCALER_Pos*/) /*!< TPI ACPR: SWOSCALER Mask */ + +/* TPI Selected Pin Protocol Register Definitions */ +#define TPI_SPPR_TXMODE_Pos 0U /*!< TPI SPPR: TXMODE Position */ +#define TPI_SPPR_TXMODE_Msk (0x3UL /*<< TPI_SPPR_TXMODE_Pos*/) /*!< TPI SPPR: TXMODE Mask */ + +/* TPI Formatter and Flush Status Register Definitions */ +#define TPI_FFSR_FtNonStop_Pos 3U /*!< TPI FFSR: FtNonStop Position */ +#define TPI_FFSR_FtNonStop_Msk (0x1UL << TPI_FFSR_FtNonStop_Pos) /*!< TPI FFSR: FtNonStop Mask */ + +#define TPI_FFSR_TCPresent_Pos 2U /*!< TPI FFSR: TCPresent Position */ +#define TPI_FFSR_TCPresent_Msk (0x1UL << TPI_FFSR_TCPresent_Pos) /*!< TPI FFSR: TCPresent Mask */ + +#define TPI_FFSR_FtStopped_Pos 1U /*!< TPI FFSR: FtStopped Position */ +#define TPI_FFSR_FtStopped_Msk (0x1UL << TPI_FFSR_FtStopped_Pos) /*!< TPI FFSR: FtStopped Mask */ + +#define TPI_FFSR_FlInProg_Pos 0U /*!< TPI FFSR: FlInProg Position */ +#define TPI_FFSR_FlInProg_Msk (0x1UL /*<< TPI_FFSR_FlInProg_Pos*/) /*!< TPI FFSR: FlInProg Mask */ + +/* TPI Formatter and Flush Control Register Definitions */ +#define TPI_FFCR_TrigIn_Pos 8U /*!< TPI FFCR: TrigIn Position */ +#define TPI_FFCR_TrigIn_Msk (0x1UL << TPI_FFCR_TrigIn_Pos) /*!< TPI FFCR: TrigIn Mask */ + +#define TPI_FFCR_FOnMan_Pos 6U /*!< TPI FFCR: FOnMan Position */ +#define TPI_FFCR_FOnMan_Msk (0x1UL << TPI_FFCR_FOnMan_Pos) /*!< TPI FFCR: FOnMan Mask */ + +#define TPI_FFCR_EnFmt_Pos 0U /*!< TPI FFCR: EnFmt Position */ +#define TPI_FFCR_EnFmt_Msk (0x3UL << /*TPI_FFCR_EnFmt_Pos*/) /*!< TPI FFCR: EnFmt Mask */ + +/* TPI Periodic Synchronization Control Register Definitions */ +#define TPI_PSCR_PSCount_Pos 0U /*!< TPI PSCR: PSCount Position */ +#define TPI_PSCR_PSCount_Msk (0x1FUL /*<< TPI_PSCR_PSCount_Pos*/) /*!< TPI PSCR: TPSCount Mask */ + +/* TPI Software Lock Status Register Definitions */ +#define TPI_LSR_nTT_Pos 1U /*!< TPI LSR: Not thirty-two bit. Position */ +#define TPI_LSR_nTT_Msk (0x1UL << TPI_LSR_nTT_Pos) /*!< TPI LSR: Not thirty-two bit. Mask */ + +#define TPI_LSR_SLK_Pos 1U /*!< TPI LSR: Software Lock status Position */ +#define TPI_LSR_SLK_Msk (0x1UL << TPI_LSR_SLK_Pos) /*!< TPI LSR: Software Lock status Mask */ + +#define TPI_LSR_SLI_Pos 0U /*!< TPI LSR: Software Lock implemented Position */ +#define TPI_LSR_SLI_Msk (0x1UL /*<< TPI_LSR_SLI_Pos*/) /*!< TPI LSR: Software Lock implemented Mask */ + +/* TPI DEVID Register Definitions */ +#define TPI_DEVID_NRZVALID_Pos 11U /*!< TPI DEVID: NRZVALID Position */ +#define TPI_DEVID_NRZVALID_Msk (0x1UL << TPI_DEVID_NRZVALID_Pos) /*!< TPI DEVID: NRZVALID Mask */ + +#define TPI_DEVID_MANCVALID_Pos 10U /*!< TPI DEVID: MANCVALID Position */ +#define TPI_DEVID_MANCVALID_Msk (0x1UL << TPI_DEVID_MANCVALID_Pos) /*!< TPI DEVID: MANCVALID Mask */ + +#define TPI_DEVID_PTINVALID_Pos 9U /*!< TPI DEVID: PTINVALID Position */ +#define TPI_DEVID_PTINVALID_Msk (0x1UL << TPI_DEVID_PTINVALID_Pos) /*!< TPI DEVID: PTINVALID Mask */ + +#define TPI_DEVID_FIFOSZ_Pos 6U /*!< TPI DEVID: FIFO depth Position */ +#define TPI_DEVID_FIFOSZ_Msk (0x7UL << TPI_DEVID_FIFOSZ_Pos) /*!< TPI DEVID: FIFO depth Mask */ + +/* TPI DEVTYPE Register Definitions */ +#define TPI_DEVTYPE_SubType_Pos 4U /*!< TPI DEVTYPE: SubType Position */ +#define TPI_DEVTYPE_SubType_Msk (0xFUL /*<< TPI_DEVTYPE_SubType_Pos*/) /*!< TPI DEVTYPE: SubType Mask */ + +#define TPI_DEVTYPE_MajorType_Pos 0U /*!< TPI DEVTYPE: MajorType Position */ +#define TPI_DEVTYPE_MajorType_Msk (0xFUL << TPI_DEVTYPE_MajorType_Pos) /*!< TPI DEVTYPE: MajorType Mask */ + +/*@}*/ /* end of group CMSIS_TPI */ + +#if defined (__PMU_PRESENT) && (__PMU_PRESENT == 1U) +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_PMU Performance Monitoring Unit (PMU) + \brief Type definitions for the Performance Monitoring Unit (PMU) + @{ + */ + +/** + \brief Structure type to access the Performance Monitoring Unit (PMU). + */ +typedef struct +{ + __IOM uint32_t EVCNTR[__PMU_NUM_EVENTCNT]; /*!< Offset: 0x0 (R/W) PMU Event Counter Registers */ +#if __PMU_NUM_EVENTCNT<31 + uint32_t RESERVED0[31U-__PMU_NUM_EVENTCNT]; +#endif + __IOM uint32_t CCNTR; /*!< Offset: 0x7C (R/W) PMU Cycle Counter Register */ + uint32_t RESERVED1[224]; + __IOM uint32_t EVTYPER[__PMU_NUM_EVENTCNT]; /*!< Offset: 0x400 (R/W) PMU Event Type and Filter Registers */ +#if __PMU_NUM_EVENTCNT<31 + uint32_t RESERVED2[31U-__PMU_NUM_EVENTCNT]; +#endif + __IOM uint32_t CCFILTR; /*!< Offset: 0x47C (R/W) PMU Cycle Counter Filter Register */ + uint32_t RESERVED3[480]; + __IOM uint32_t CNTENSET; /*!< Offset: 0xC00 (R/W) PMU Count Enable Set Register */ + uint32_t RESERVED4[7]; + __IOM uint32_t CNTENCLR; /*!< Offset: 0xC20 (R/W) PMU Count Enable Clear Register */ + uint32_t RESERVED5[7]; + __IOM uint32_t INTENSET; /*!< Offset: 0xC40 (R/W) PMU Interrupt Enable Set Register */ + uint32_t RESERVED6[7]; + __IOM uint32_t INTENCLR; /*!< Offset: 0xC60 (R/W) PMU Interrupt Enable Clear Register */ + uint32_t RESERVED7[7]; + __IOM uint32_t OVSCLR; /*!< Offset: 0xC80 (R/W) PMU Overflow Flag Status Clear Register */ + uint32_t RESERVED8[7]; + __IOM uint32_t SWINC; /*!< Offset: 0xCA0 (R/W) PMU Software Increment Register */ + uint32_t RESERVED9[7]; + __IOM uint32_t OVSSET; /*!< Offset: 0xCC0 (R/W) PMU Overflow Flag Status Set Register */ + uint32_t RESERVED10[79]; + __IOM uint32_t TYPE; /*!< Offset: 0xE00 (R/W) PMU Type Register */ + __IOM uint32_t CTRL; /*!< Offset: 0xE04 (R/W) PMU Control Register */ + uint32_t RESERVED11[108]; + __IOM uint32_t AUTHSTATUS; /*!< Offset: 0xFB8 (R/W) PMU Authentication Status Register */ + __IOM uint32_t DEVARCH; /*!< Offset: 0xFBC (R/W) PMU Device Architecture Register */ + uint32_t RESERVED12[3]; + __IOM uint32_t DEVTYPE; /*!< Offset: 0xFCC (R/W) PMU Device Type Register */ + __IOM uint32_t PIDR4; /*!< Offset: 0xFD0 (R/W) PMU Peripheral Identification Register 4 */ + uint32_t RESERVED13[3]; + __IOM uint32_t PIDR0; /*!< Offset: 0xFE0 (R/W) PMU Peripheral Identification Register 0 */ + __IOM uint32_t PIDR1; /*!< Offset: 0xFE4 (R/W) PMU Peripheral Identification Register 1 */ + __IOM uint32_t PIDR2; /*!< Offset: 0xFE8 (R/W) PMU Peripheral Identification Register 2 */ + __IOM uint32_t PIDR3; /*!< Offset: 0xFEC (R/W) PMU Peripheral Identification Register 3 */ + __IOM uint32_t CIDR0; /*!< Offset: 0xFF0 (R/W) PMU Component Identification Register 0 */ + __IOM uint32_t CIDR1; /*!< Offset: 0xFF4 (R/W) PMU Component Identification Register 1 */ + __IOM uint32_t CIDR2; /*!< Offset: 0xFF8 (R/W) PMU Component Identification Register 2 */ + __IOM uint32_t CIDR3; /*!< Offset: 0xFFC (R/W) PMU Component Identification Register 3 */ +} PMU_Type; + +/** \brief PMU Event Counter Registers (0-30) Definitions */ + +#define PMU_EVCNTR_CNT_Pos 0U /*!< PMU EVCNTR: Counter Position */ +#define PMU_EVCNTR_CNT_Msk (0xFFFFUL /*<< PMU_EVCNTRx_CNT_Pos*/) /*!< PMU EVCNTR: Counter Mask */ + +/** \brief PMU Event Type and Filter Registers (0-30) Definitions */ + +#define PMU_EVTYPER_EVENTTOCNT_Pos 0U /*!< PMU EVTYPER: Event to Count Position */ +#define PMU_EVTYPER_EVENTTOCNT_Msk (0xFFFFUL /*<< EVTYPERx_EVENTTOCNT_Pos*/) /*!< PMU EVTYPER: Event to Count Mask */ + +/** \brief PMU Count Enable Set Register Definitions */ + +#define PMU_CNTENSET_CNT0_ENABLE_Pos 0U /*!< PMU CNTENSET: Event Counter 0 Enable Set Position */ +#define PMU_CNTENSET_CNT0_ENABLE_Msk (1UL /*<< PMU_CNTENSET_CNT0_ENABLE_Pos*/) /*!< PMU CNTENSET: Event Counter 0 Enable Set Mask */ + +#define PMU_CNTENSET_CNT1_ENABLE_Pos 1U /*!< PMU CNTENSET: Event Counter 1 Enable Set Position */ +#define PMU_CNTENSET_CNT1_ENABLE_Msk (1UL << PMU_CNTENSET_CNT1_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 1 Enable Set Mask */ + +#define PMU_CNTENSET_CNT2_ENABLE_Pos 2U /*!< PMU CNTENSET: Event Counter 2 Enable Set Position */ +#define PMU_CNTENSET_CNT2_ENABLE_Msk (1UL << PMU_CNTENSET_CNT2_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 2 Enable Set Mask */ + +#define PMU_CNTENSET_CNT3_ENABLE_Pos 3U /*!< PMU CNTENSET: Event Counter 3 Enable Set Position */ +#define PMU_CNTENSET_CNT3_ENABLE_Msk (1UL << PMU_CNTENSET_CNT3_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 3 Enable Set Mask */ + +#define PMU_CNTENSET_CNT4_ENABLE_Pos 4U /*!< PMU CNTENSET: Event Counter 4 Enable Set Position */ +#define PMU_CNTENSET_CNT4_ENABLE_Msk (1UL << PMU_CNTENSET_CNT4_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 4 Enable Set Mask */ + +#define PMU_CNTENSET_CNT5_ENABLE_Pos 5U /*!< PMU CNTENSET: Event Counter 5 Enable Set Position */ +#define PMU_CNTENSET_CNT5_ENABLE_Msk (1UL << PMU_CNTENSET_CNT5_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 5 Enable Set Mask */ + +#define PMU_CNTENSET_CNT6_ENABLE_Pos 6U /*!< PMU CNTENSET: Event Counter 6 Enable Set Position */ +#define PMU_CNTENSET_CNT6_ENABLE_Msk (1UL << PMU_CNTENSET_CNT6_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 6 Enable Set Mask */ + +#define PMU_CNTENSET_CNT7_ENABLE_Pos 7U /*!< PMU CNTENSET: Event Counter 7 Enable Set Position */ +#define PMU_CNTENSET_CNT7_ENABLE_Msk (1UL << PMU_CNTENSET_CNT7_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 7 Enable Set Mask */ + +#define PMU_CNTENSET_CNT8_ENABLE_Pos 8U /*!< PMU CNTENSET: Event Counter 8 Enable Set Position */ +#define PMU_CNTENSET_CNT8_ENABLE_Msk (1UL << PMU_CNTENSET_CNT8_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 8 Enable Set Mask */ + +#define PMU_CNTENSET_CNT9_ENABLE_Pos 9U /*!< PMU CNTENSET: Event Counter 9 Enable Set Position */ +#define PMU_CNTENSET_CNT9_ENABLE_Msk (1UL << PMU_CNTENSET_CNT9_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 9 Enable Set Mask */ + +#define PMU_CNTENSET_CNT10_ENABLE_Pos 10U /*!< PMU CNTENSET: Event Counter 10 Enable Set Position */ +#define PMU_CNTENSET_CNT10_ENABLE_Msk (1UL << PMU_CNTENSET_CNT10_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 10 Enable Set Mask */ + +#define PMU_CNTENSET_CNT11_ENABLE_Pos 11U /*!< PMU CNTENSET: Event Counter 11 Enable Set Position */ +#define PMU_CNTENSET_CNT11_ENABLE_Msk (1UL << PMU_CNTENSET_CNT11_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 11 Enable Set Mask */ + +#define PMU_CNTENSET_CNT12_ENABLE_Pos 12U /*!< PMU CNTENSET: Event Counter 12 Enable Set Position */ +#define PMU_CNTENSET_CNT12_ENABLE_Msk (1UL << PMU_CNTENSET_CNT12_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 12 Enable Set Mask */ + +#define PMU_CNTENSET_CNT13_ENABLE_Pos 13U /*!< PMU CNTENSET: Event Counter 13 Enable Set Position */ +#define PMU_CNTENSET_CNT13_ENABLE_Msk (1UL << PMU_CNTENSET_CNT13_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 13 Enable Set Mask */ + +#define PMU_CNTENSET_CNT14_ENABLE_Pos 14U /*!< PMU CNTENSET: Event Counter 14 Enable Set Position */ +#define PMU_CNTENSET_CNT14_ENABLE_Msk (1UL << PMU_CNTENSET_CNT14_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 14 Enable Set Mask */ + +#define PMU_CNTENSET_CNT15_ENABLE_Pos 15U /*!< PMU CNTENSET: Event Counter 15 Enable Set Position */ +#define PMU_CNTENSET_CNT15_ENABLE_Msk (1UL << PMU_CNTENSET_CNT15_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 15 Enable Set Mask */ + +#define PMU_CNTENSET_CNT16_ENABLE_Pos 16U /*!< PMU CNTENSET: Event Counter 16 Enable Set Position */ +#define PMU_CNTENSET_CNT16_ENABLE_Msk (1UL << PMU_CNTENSET_CNT16_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 16 Enable Set Mask */ + +#define PMU_CNTENSET_CNT17_ENABLE_Pos 17U /*!< PMU CNTENSET: Event Counter 17 Enable Set Position */ +#define PMU_CNTENSET_CNT17_ENABLE_Msk (1UL << PMU_CNTENSET_CNT17_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 17 Enable Set Mask */ + +#define PMU_CNTENSET_CNT18_ENABLE_Pos 18U /*!< PMU CNTENSET: Event Counter 18 Enable Set Position */ +#define PMU_CNTENSET_CNT18_ENABLE_Msk (1UL << PMU_CNTENSET_CNT18_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 18 Enable Set Mask */ + +#define PMU_CNTENSET_CNT19_ENABLE_Pos 19U /*!< PMU CNTENSET: Event Counter 19 Enable Set Position */ +#define PMU_CNTENSET_CNT19_ENABLE_Msk (1UL << PMU_CNTENSET_CNT19_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 19 Enable Set Mask */ + +#define PMU_CNTENSET_CNT20_ENABLE_Pos 20U /*!< PMU CNTENSET: Event Counter 20 Enable Set Position */ +#define PMU_CNTENSET_CNT20_ENABLE_Msk (1UL << PMU_CNTENSET_CNT20_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 20 Enable Set Mask */ + +#define PMU_CNTENSET_CNT21_ENABLE_Pos 21U /*!< PMU CNTENSET: Event Counter 21 Enable Set Position */ +#define PMU_CNTENSET_CNT21_ENABLE_Msk (1UL << PMU_CNTENSET_CNT21_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 21 Enable Set Mask */ + +#define PMU_CNTENSET_CNT22_ENABLE_Pos 22U /*!< PMU CNTENSET: Event Counter 22 Enable Set Position */ +#define PMU_CNTENSET_CNT22_ENABLE_Msk (1UL << PMU_CNTENSET_CNT22_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 22 Enable Set Mask */ + +#define PMU_CNTENSET_CNT23_ENABLE_Pos 23U /*!< PMU CNTENSET: Event Counter 23 Enable Set Position */ +#define PMU_CNTENSET_CNT23_ENABLE_Msk (1UL << PMU_CNTENSET_CNT23_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 23 Enable Set Mask */ + +#define PMU_CNTENSET_CNT24_ENABLE_Pos 24U /*!< PMU CNTENSET: Event Counter 24 Enable Set Position */ +#define PMU_CNTENSET_CNT24_ENABLE_Msk (1UL << PMU_CNTENSET_CNT24_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 24 Enable Set Mask */ + +#define PMU_CNTENSET_CNT25_ENABLE_Pos 25U /*!< PMU CNTENSET: Event Counter 25 Enable Set Position */ +#define PMU_CNTENSET_CNT25_ENABLE_Msk (1UL << PMU_CNTENSET_CNT25_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 25 Enable Set Mask */ + +#define PMU_CNTENSET_CNT26_ENABLE_Pos 26U /*!< PMU CNTENSET: Event Counter 26 Enable Set Position */ +#define PMU_CNTENSET_CNT26_ENABLE_Msk (1UL << PMU_CNTENSET_CNT26_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 26 Enable Set Mask */ + +#define PMU_CNTENSET_CNT27_ENABLE_Pos 27U /*!< PMU CNTENSET: Event Counter 27 Enable Set Position */ +#define PMU_CNTENSET_CNT27_ENABLE_Msk (1UL << PMU_CNTENSET_CNT27_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 27 Enable Set Mask */ + +#define PMU_CNTENSET_CNT28_ENABLE_Pos 28U /*!< PMU CNTENSET: Event Counter 28 Enable Set Position */ +#define PMU_CNTENSET_CNT28_ENABLE_Msk (1UL << PMU_CNTENSET_CNT28_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 28 Enable Set Mask */ + +#define PMU_CNTENSET_CNT29_ENABLE_Pos 29U /*!< PMU CNTENSET: Event Counter 29 Enable Set Position */ +#define PMU_CNTENSET_CNT29_ENABLE_Msk (1UL << PMU_CNTENSET_CNT29_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 29 Enable Set Mask */ + +#define PMU_CNTENSET_CNT30_ENABLE_Pos 30U /*!< PMU CNTENSET: Event Counter 30 Enable Set Position */ +#define PMU_CNTENSET_CNT30_ENABLE_Msk (1UL << PMU_CNTENSET_CNT30_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 30 Enable Set Mask */ + +#define PMU_CNTENSET_CCNTR_ENABLE_Pos 31U /*!< PMU CNTENSET: Cycle Counter Enable Set Position */ +#define PMU_CNTENSET_CCNTR_ENABLE_Msk (1UL << PMU_CNTENSET_CCNTR_ENABLE_Pos) /*!< PMU CNTENSET: Cycle Counter Enable Set Mask */ + +/** \brief PMU Count Enable Clear Register Definitions */ + +#define PMU_CNTENSET_CNT0_ENABLE_Pos 0U /*!< PMU CNTENCLR: Event Counter 0 Enable Clear Position */ +#define PMU_CNTENCLR_CNT0_ENABLE_Msk (1UL /*<< PMU_CNTENCLR_CNT0_ENABLE_Pos*/) /*!< PMU CNTENCLR: Event Counter 0 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT1_ENABLE_Pos 1U /*!< PMU CNTENCLR: Event Counter 1 Enable Clear Position */ +#define PMU_CNTENCLR_CNT1_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT1_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 1 Enable Clear */ + +#define PMU_CNTENCLR_CNT2_ENABLE_Pos 2U /*!< PMU CNTENCLR: Event Counter 2 Enable Clear Position */ +#define PMU_CNTENCLR_CNT2_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT2_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 2 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT3_ENABLE_Pos 3U /*!< PMU CNTENCLR: Event Counter 3 Enable Clear Position */ +#define PMU_CNTENCLR_CNT3_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT3_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 3 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT4_ENABLE_Pos 4U /*!< PMU CNTENCLR: Event Counter 4 Enable Clear Position */ +#define PMU_CNTENCLR_CNT4_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT4_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 4 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT5_ENABLE_Pos 5U /*!< PMU CNTENCLR: Event Counter 5 Enable Clear Position */ +#define PMU_CNTENCLR_CNT5_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT5_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 5 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT6_ENABLE_Pos 6U /*!< PMU CNTENCLR: Event Counter 6 Enable Clear Position */ +#define PMU_CNTENCLR_CNT6_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT6_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 6 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT7_ENABLE_Pos 7U /*!< PMU CNTENCLR: Event Counter 7 Enable Clear Position */ +#define PMU_CNTENCLR_CNT7_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT7_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 7 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT8_ENABLE_Pos 8U /*!< PMU CNTENCLR: Event Counter 8 Enable Clear Position */ +#define PMU_CNTENCLR_CNT8_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT8_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 8 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT9_ENABLE_Pos 9U /*!< PMU CNTENCLR: Event Counter 9 Enable Clear Position */ +#define PMU_CNTENCLR_CNT9_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT9_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 9 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT10_ENABLE_Pos 10U /*!< PMU CNTENCLR: Event Counter 10 Enable Clear Position */ +#define PMU_CNTENCLR_CNT10_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT10_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 10 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT11_ENABLE_Pos 11U /*!< PMU CNTENCLR: Event Counter 11 Enable Clear Position */ +#define PMU_CNTENCLR_CNT11_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT11_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 11 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT12_ENABLE_Pos 12U /*!< PMU CNTENCLR: Event Counter 12 Enable Clear Position */ +#define PMU_CNTENCLR_CNT12_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT12_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 12 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT13_ENABLE_Pos 13U /*!< PMU CNTENCLR: Event Counter 13 Enable Clear Position */ +#define PMU_CNTENCLR_CNT13_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT13_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 13 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT14_ENABLE_Pos 14U /*!< PMU CNTENCLR: Event Counter 14 Enable Clear Position */ +#define PMU_CNTENCLR_CNT14_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT14_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 14 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT15_ENABLE_Pos 15U /*!< PMU CNTENCLR: Event Counter 15 Enable Clear Position */ +#define PMU_CNTENCLR_CNT15_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT15_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 15 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT16_ENABLE_Pos 16U /*!< PMU CNTENCLR: Event Counter 16 Enable Clear Position */ +#define PMU_CNTENCLR_CNT16_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT16_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 16 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT17_ENABLE_Pos 17U /*!< PMU CNTENCLR: Event Counter 17 Enable Clear Position */ +#define PMU_CNTENCLR_CNT17_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT17_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 17 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT18_ENABLE_Pos 18U /*!< PMU CNTENCLR: Event Counter 18 Enable Clear Position */ +#define PMU_CNTENCLR_CNT18_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT18_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 18 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT19_ENABLE_Pos 19U /*!< PMU CNTENCLR: Event Counter 19 Enable Clear Position */ +#define PMU_CNTENCLR_CNT19_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT19_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 19 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT20_ENABLE_Pos 20U /*!< PMU CNTENCLR: Event Counter 20 Enable Clear Position */ +#define PMU_CNTENCLR_CNT20_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT20_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 20 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT21_ENABLE_Pos 21U /*!< PMU CNTENCLR: Event Counter 21 Enable Clear Position */ +#define PMU_CNTENCLR_CNT21_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT21_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 21 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT22_ENABLE_Pos 22U /*!< PMU CNTENCLR: Event Counter 22 Enable Clear Position */ +#define PMU_CNTENCLR_CNT22_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT22_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 22 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT23_ENABLE_Pos 23U /*!< PMU CNTENCLR: Event Counter 23 Enable Clear Position */ +#define PMU_CNTENCLR_CNT23_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT23_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 23 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT24_ENABLE_Pos 24U /*!< PMU CNTENCLR: Event Counter 24 Enable Clear Position */ +#define PMU_CNTENCLR_CNT24_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT24_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 24 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT25_ENABLE_Pos 25U /*!< PMU CNTENCLR: Event Counter 25 Enable Clear Position */ +#define PMU_CNTENCLR_CNT25_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT25_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 25 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT26_ENABLE_Pos 26U /*!< PMU CNTENCLR: Event Counter 26 Enable Clear Position */ +#define PMU_CNTENCLR_CNT26_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT26_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 26 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT27_ENABLE_Pos 27U /*!< PMU CNTENCLR: Event Counter 27 Enable Clear Position */ +#define PMU_CNTENCLR_CNT27_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT27_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 27 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT28_ENABLE_Pos 28U /*!< PMU CNTENCLR: Event Counter 28 Enable Clear Position */ +#define PMU_CNTENCLR_CNT28_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT28_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 28 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT29_ENABLE_Pos 29U /*!< PMU CNTENCLR: Event Counter 29 Enable Clear Position */ +#define PMU_CNTENCLR_CNT29_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT29_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 29 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT30_ENABLE_Pos 30U /*!< PMU CNTENCLR: Event Counter 30 Enable Clear Position */ +#define PMU_CNTENCLR_CNT30_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT30_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 30 Enable Clear Mask */ + +#define PMU_CNTENCLR_CCNTR_ENABLE_Pos 31U /*!< PMU CNTENCLR: Cycle Counter Enable Clear Position */ +#define PMU_CNTENCLR_CCNTR_ENABLE_Msk (1UL << PMU_CNTENCLR_CCNTR_ENABLE_Pos) /*!< PMU CNTENCLR: Cycle Counter Enable Clear Mask */ + +/** \brief PMU Interrupt Enable Set Register Definitions */ + +#define PMU_INTENSET_CNT0_ENABLE_Pos 0U /*!< PMU INTENSET: Event Counter 0 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT0_ENABLE_Msk (1UL /*<< PMU_INTENSET_CNT0_ENABLE_Pos*/) /*!< PMU INTENSET: Event Counter 0 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT1_ENABLE_Pos 1U /*!< PMU INTENSET: Event Counter 1 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT1_ENABLE_Msk (1UL << PMU_INTENSET_CNT1_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 1 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT2_ENABLE_Pos 2U /*!< PMU INTENSET: Event Counter 2 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT2_ENABLE_Msk (1UL << PMU_INTENSET_CNT2_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 2 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT3_ENABLE_Pos 3U /*!< PMU INTENSET: Event Counter 3 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT3_ENABLE_Msk (1UL << PMU_INTENSET_CNT3_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 3 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT4_ENABLE_Pos 4U /*!< PMU INTENSET: Event Counter 4 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT4_ENABLE_Msk (1UL << PMU_INTENSET_CNT4_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 4 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT5_ENABLE_Pos 5U /*!< PMU INTENSET: Event Counter 5 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT5_ENABLE_Msk (1UL << PMU_INTENSET_CNT5_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 5 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT6_ENABLE_Pos 6U /*!< PMU INTENSET: Event Counter 6 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT6_ENABLE_Msk (1UL << PMU_INTENSET_CNT6_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 6 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT7_ENABLE_Pos 7U /*!< PMU INTENSET: Event Counter 7 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT7_ENABLE_Msk (1UL << PMU_INTENSET_CNT7_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 7 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT8_ENABLE_Pos 8U /*!< PMU INTENSET: Event Counter 8 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT8_ENABLE_Msk (1UL << PMU_INTENSET_CNT8_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 8 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT9_ENABLE_Pos 9U /*!< PMU INTENSET: Event Counter 9 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT9_ENABLE_Msk (1UL << PMU_INTENSET_CNT9_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 9 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT10_ENABLE_Pos 10U /*!< PMU INTENSET: Event Counter 10 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT10_ENABLE_Msk (1UL << PMU_INTENSET_CNT10_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 10 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT11_ENABLE_Pos 11U /*!< PMU INTENSET: Event Counter 11 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT11_ENABLE_Msk (1UL << PMU_INTENSET_CNT11_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 11 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT12_ENABLE_Pos 12U /*!< PMU INTENSET: Event Counter 12 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT12_ENABLE_Msk (1UL << PMU_INTENSET_CNT12_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 12 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT13_ENABLE_Pos 13U /*!< PMU INTENSET: Event Counter 13 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT13_ENABLE_Msk (1UL << PMU_INTENSET_CNT13_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 13 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT14_ENABLE_Pos 14U /*!< PMU INTENSET: Event Counter 14 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT14_ENABLE_Msk (1UL << PMU_INTENSET_CNT14_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 14 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT15_ENABLE_Pos 15U /*!< PMU INTENSET: Event Counter 15 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT15_ENABLE_Msk (1UL << PMU_INTENSET_CNT15_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 15 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT16_ENABLE_Pos 16U /*!< PMU INTENSET: Event Counter 16 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT16_ENABLE_Msk (1UL << PMU_INTENSET_CNT16_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 16 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT17_ENABLE_Pos 17U /*!< PMU INTENSET: Event Counter 17 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT17_ENABLE_Msk (1UL << PMU_INTENSET_CNT17_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 17 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT18_ENABLE_Pos 18U /*!< PMU INTENSET: Event Counter 18 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT18_ENABLE_Msk (1UL << PMU_INTENSET_CNT18_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 18 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT19_ENABLE_Pos 19U /*!< PMU INTENSET: Event Counter 19 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT19_ENABLE_Msk (1UL << PMU_INTENSET_CNT19_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 19 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT20_ENABLE_Pos 20U /*!< PMU INTENSET: Event Counter 20 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT20_ENABLE_Msk (1UL << PMU_INTENSET_CNT20_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 20 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT21_ENABLE_Pos 21U /*!< PMU INTENSET: Event Counter 21 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT21_ENABLE_Msk (1UL << PMU_INTENSET_CNT21_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 21 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT22_ENABLE_Pos 22U /*!< PMU INTENSET: Event Counter 22 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT22_ENABLE_Msk (1UL << PMU_INTENSET_CNT22_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 22 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT23_ENABLE_Pos 23U /*!< PMU INTENSET: Event Counter 23 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT23_ENABLE_Msk (1UL << PMU_INTENSET_CNT23_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 23 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT24_ENABLE_Pos 24U /*!< PMU INTENSET: Event Counter 24 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT24_ENABLE_Msk (1UL << PMU_INTENSET_CNT24_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 24 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT25_ENABLE_Pos 25U /*!< PMU INTENSET: Event Counter 25 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT25_ENABLE_Msk (1UL << PMU_INTENSET_CNT25_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 25 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT26_ENABLE_Pos 26U /*!< PMU INTENSET: Event Counter 26 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT26_ENABLE_Msk (1UL << PMU_INTENSET_CNT26_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 26 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT27_ENABLE_Pos 27U /*!< PMU INTENSET: Event Counter 27 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT27_ENABLE_Msk (1UL << PMU_INTENSET_CNT27_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 27 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT28_ENABLE_Pos 28U /*!< PMU INTENSET: Event Counter 28 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT28_ENABLE_Msk (1UL << PMU_INTENSET_CNT28_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 28 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT29_ENABLE_Pos 29U /*!< PMU INTENSET: Event Counter 29 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT29_ENABLE_Msk (1UL << PMU_INTENSET_CNT29_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 29 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT30_ENABLE_Pos 30U /*!< PMU INTENSET: Event Counter 30 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT30_ENABLE_Msk (1UL << PMU_INTENSET_CNT30_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 30 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CYCCNT_ENABLE_Pos 31U /*!< PMU INTENSET: Cycle Counter Interrupt Enable Set Position */ +#define PMU_INTENSET_CCYCNT_ENABLE_Msk (1UL << PMU_INTENSET_CYCCNT_ENABLE_Pos) /*!< PMU INTENSET: Cycle Counter Interrupt Enable Set Mask */ + +/** \brief PMU Interrupt Enable Clear Register Definitions */ + +#define PMU_INTENSET_CNT0_ENABLE_Pos 0U /*!< PMU INTENCLR: Event Counter 0 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT0_ENABLE_Msk (1UL /*<< PMU_INTENCLR_CNT0_ENABLE_Pos*/) /*!< PMU INTENCLR: Event Counter 0 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT1_ENABLE_Pos 1U /*!< PMU INTENCLR: Event Counter 1 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT1_ENABLE_Msk (1UL << PMU_INTENCLR_CNT1_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 1 Interrupt Enable Clear */ + +#define PMU_INTENCLR_CNT2_ENABLE_Pos 2U /*!< PMU INTENCLR: Event Counter 2 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT2_ENABLE_Msk (1UL << PMU_INTENCLR_CNT2_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 2 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT3_ENABLE_Pos 3U /*!< PMU INTENCLR: Event Counter 3 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT3_ENABLE_Msk (1UL << PMU_INTENCLR_CNT3_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 3 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT4_ENABLE_Pos 4U /*!< PMU INTENCLR: Event Counter 4 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT4_ENABLE_Msk (1UL << PMU_INTENCLR_CNT4_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 4 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT5_ENABLE_Pos 5U /*!< PMU INTENCLR: Event Counter 5 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT5_ENABLE_Msk (1UL << PMU_INTENCLR_CNT5_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 5 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT6_ENABLE_Pos 6U /*!< PMU INTENCLR: Event Counter 6 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT6_ENABLE_Msk (1UL << PMU_INTENCLR_CNT6_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 6 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT7_ENABLE_Pos 7U /*!< PMU INTENCLR: Event Counter 7 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT7_ENABLE_Msk (1UL << PMU_INTENCLR_CNT7_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 7 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT8_ENABLE_Pos 8U /*!< PMU INTENCLR: Event Counter 8 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT8_ENABLE_Msk (1UL << PMU_INTENCLR_CNT8_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 8 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT9_ENABLE_Pos 9U /*!< PMU INTENCLR: Event Counter 9 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT9_ENABLE_Msk (1UL << PMU_INTENCLR_CNT9_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 9 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT10_ENABLE_Pos 10U /*!< PMU INTENCLR: Event Counter 10 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT10_ENABLE_Msk (1UL << PMU_INTENCLR_CNT10_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 10 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT11_ENABLE_Pos 11U /*!< PMU INTENCLR: Event Counter 11 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT11_ENABLE_Msk (1UL << PMU_INTENCLR_CNT11_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 11 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT12_ENABLE_Pos 12U /*!< PMU INTENCLR: Event Counter 12 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT12_ENABLE_Msk (1UL << PMU_INTENCLR_CNT12_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 12 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT13_ENABLE_Pos 13U /*!< PMU INTENCLR: Event Counter 13 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT13_ENABLE_Msk (1UL << PMU_INTENCLR_CNT13_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 13 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT14_ENABLE_Pos 14U /*!< PMU INTENCLR: Event Counter 14 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT14_ENABLE_Msk (1UL << PMU_INTENCLR_CNT14_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 14 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT15_ENABLE_Pos 15U /*!< PMU INTENCLR: Event Counter 15 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT15_ENABLE_Msk (1UL << PMU_INTENCLR_CNT15_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 15 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT16_ENABLE_Pos 16U /*!< PMU INTENCLR: Event Counter 16 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT16_ENABLE_Msk (1UL << PMU_INTENCLR_CNT16_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 16 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT17_ENABLE_Pos 17U /*!< PMU INTENCLR: Event Counter 17 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT17_ENABLE_Msk (1UL << PMU_INTENCLR_CNT17_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 17 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT18_ENABLE_Pos 18U /*!< PMU INTENCLR: Event Counter 18 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT18_ENABLE_Msk (1UL << PMU_INTENCLR_CNT18_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 18 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT19_ENABLE_Pos 19U /*!< PMU INTENCLR: Event Counter 19 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT19_ENABLE_Msk (1UL << PMU_INTENCLR_CNT19_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 19 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT20_ENABLE_Pos 20U /*!< PMU INTENCLR: Event Counter 20 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT20_ENABLE_Msk (1UL << PMU_INTENCLR_CNT20_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 20 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT21_ENABLE_Pos 21U /*!< PMU INTENCLR: Event Counter 21 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT21_ENABLE_Msk (1UL << PMU_INTENCLR_CNT21_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 21 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT22_ENABLE_Pos 22U /*!< PMU INTENCLR: Event Counter 22 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT22_ENABLE_Msk (1UL << PMU_INTENCLR_CNT22_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 22 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT23_ENABLE_Pos 23U /*!< PMU INTENCLR: Event Counter 23 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT23_ENABLE_Msk (1UL << PMU_INTENCLR_CNT23_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 23 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT24_ENABLE_Pos 24U /*!< PMU INTENCLR: Event Counter 24 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT24_ENABLE_Msk (1UL << PMU_INTENCLR_CNT24_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 24 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT25_ENABLE_Pos 25U /*!< PMU INTENCLR: Event Counter 25 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT25_ENABLE_Msk (1UL << PMU_INTENCLR_CNT25_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 25 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT26_ENABLE_Pos 26U /*!< PMU INTENCLR: Event Counter 26 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT26_ENABLE_Msk (1UL << PMU_INTENCLR_CNT26_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 26 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT27_ENABLE_Pos 27U /*!< PMU INTENCLR: Event Counter 27 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT27_ENABLE_Msk (1UL << PMU_INTENCLR_CNT27_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 27 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT28_ENABLE_Pos 28U /*!< PMU INTENCLR: Event Counter 28 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT28_ENABLE_Msk (1UL << PMU_INTENCLR_CNT28_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 28 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT29_ENABLE_Pos 29U /*!< PMU INTENCLR: Event Counter 29 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT29_ENABLE_Msk (1UL << PMU_INTENCLR_CNT29_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 29 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT30_ENABLE_Pos 30U /*!< PMU INTENCLR: Event Counter 30 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT30_ENABLE_Msk (1UL << PMU_INTENCLR_CNT30_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 30 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CYCCNT_ENABLE_Pos 31U /*!< PMU INTENCLR: Cycle Counter Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CYCCNT_ENABLE_Msk (1UL << PMU_INTENCLR_CYCCNT_ENABLE_Pos) /*!< PMU INTENCLR: Cycle Counter Interrupt Enable Clear Mask */ + +/** \brief PMU Overflow Flag Status Set Register Definitions */ + +#define PMU_OVSSET_CNT0_STATUS_Pos 0U /*!< PMU OVSSET: Event Counter 0 Overflow Set Position */ +#define PMU_OVSSET_CNT0_STATUS_Msk (1UL /*<< PMU_OVSSET_CNT0_STATUS_Pos*/) /*!< PMU OVSSET: Event Counter 0 Overflow Set Mask */ + +#define PMU_OVSSET_CNT1_STATUS_Pos 1U /*!< PMU OVSSET: Event Counter 1 Overflow Set Position */ +#define PMU_OVSSET_CNT1_STATUS_Msk (1UL << PMU_OVSSET_CNT1_STATUS_Pos) /*!< PMU OVSSET: Event Counter 1 Overflow Set Mask */ + +#define PMU_OVSSET_CNT2_STATUS_Pos 2U /*!< PMU OVSSET: Event Counter 2 Overflow Set Position */ +#define PMU_OVSSET_CNT2_STATUS_Msk (1UL << PMU_OVSSET_CNT2_STATUS_Pos) /*!< PMU OVSSET: Event Counter 2 Overflow Set Mask */ + +#define PMU_OVSSET_CNT3_STATUS_Pos 3U /*!< PMU OVSSET: Event Counter 3 Overflow Set Position */ +#define PMU_OVSSET_CNT3_STATUS_Msk (1UL << PMU_OVSSET_CNT3_STATUS_Pos) /*!< PMU OVSSET: Event Counter 3 Overflow Set Mask */ + +#define PMU_OVSSET_CNT4_STATUS_Pos 4U /*!< PMU OVSSET: Event Counter 4 Overflow Set Position */ +#define PMU_OVSSET_CNT4_STATUS_Msk (1UL << PMU_OVSSET_CNT4_STATUS_Pos) /*!< PMU OVSSET: Event Counter 4 Overflow Set Mask */ + +#define PMU_OVSSET_CNT5_STATUS_Pos 5U /*!< PMU OVSSET: Event Counter 5 Overflow Set Position */ +#define PMU_OVSSET_CNT5_STATUS_Msk (1UL << PMU_OVSSET_CNT5_STATUS_Pos) /*!< PMU OVSSET: Event Counter 5 Overflow Set Mask */ + +#define PMU_OVSSET_CNT6_STATUS_Pos 6U /*!< PMU OVSSET: Event Counter 6 Overflow Set Position */ +#define PMU_OVSSET_CNT6_STATUS_Msk (1UL << PMU_OVSSET_CNT6_STATUS_Pos) /*!< PMU OVSSET: Event Counter 6 Overflow Set Mask */ + +#define PMU_OVSSET_CNT7_STATUS_Pos 7U /*!< PMU OVSSET: Event Counter 7 Overflow Set Position */ +#define PMU_OVSSET_CNT7_STATUS_Msk (1UL << PMU_OVSSET_CNT7_STATUS_Pos) /*!< PMU OVSSET: Event Counter 7 Overflow Set Mask */ + +#define PMU_OVSSET_CNT8_STATUS_Pos 8U /*!< PMU OVSSET: Event Counter 8 Overflow Set Position */ +#define PMU_OVSSET_CNT8_STATUS_Msk (1UL << PMU_OVSSET_CNT8_STATUS_Pos) /*!< PMU OVSSET: Event Counter 8 Overflow Set Mask */ + +#define PMU_OVSSET_CNT9_STATUS_Pos 9U /*!< PMU OVSSET: Event Counter 9 Overflow Set Position */ +#define PMU_OVSSET_CNT9_STATUS_Msk (1UL << PMU_OVSSET_CNT9_STATUS_Pos) /*!< PMU OVSSET: Event Counter 9 Overflow Set Mask */ + +#define PMU_OVSSET_CNT10_STATUS_Pos 10U /*!< PMU OVSSET: Event Counter 10 Overflow Set Position */ +#define PMU_OVSSET_CNT10_STATUS_Msk (1UL << PMU_OVSSET_CNT10_STATUS_Pos) /*!< PMU OVSSET: Event Counter 10 Overflow Set Mask */ + +#define PMU_OVSSET_CNT11_STATUS_Pos 11U /*!< PMU OVSSET: Event Counter 11 Overflow Set Position */ +#define PMU_OVSSET_CNT11_STATUS_Msk (1UL << PMU_OVSSET_CNT11_STATUS_Pos) /*!< PMU OVSSET: Event Counter 11 Overflow Set Mask */ + +#define PMU_OVSSET_CNT12_STATUS_Pos 12U /*!< PMU OVSSET: Event Counter 12 Overflow Set Position */ +#define PMU_OVSSET_CNT12_STATUS_Msk (1UL << PMU_OVSSET_CNT12_STATUS_Pos) /*!< PMU OVSSET: Event Counter 12 Overflow Set Mask */ + +#define PMU_OVSSET_CNT13_STATUS_Pos 13U /*!< PMU OVSSET: Event Counter 13 Overflow Set Position */ +#define PMU_OVSSET_CNT13_STATUS_Msk (1UL << PMU_OVSSET_CNT13_STATUS_Pos) /*!< PMU OVSSET: Event Counter 13 Overflow Set Mask */ + +#define PMU_OVSSET_CNT14_STATUS_Pos 14U /*!< PMU OVSSET: Event Counter 14 Overflow Set Position */ +#define PMU_OVSSET_CNT14_STATUS_Msk (1UL << PMU_OVSSET_CNT14_STATUS_Pos) /*!< PMU OVSSET: Event Counter 14 Overflow Set Mask */ + +#define PMU_OVSSET_CNT15_STATUS_Pos 15U /*!< PMU OVSSET: Event Counter 15 Overflow Set Position */ +#define PMU_OVSSET_CNT15_STATUS_Msk (1UL << PMU_OVSSET_CNT15_STATUS_Pos) /*!< PMU OVSSET: Event Counter 15 Overflow Set Mask */ + +#define PMU_OVSSET_CNT16_STATUS_Pos 16U /*!< PMU OVSSET: Event Counter 16 Overflow Set Position */ +#define PMU_OVSSET_CNT16_STATUS_Msk (1UL << PMU_OVSSET_CNT16_STATUS_Pos) /*!< PMU OVSSET: Event Counter 16 Overflow Set Mask */ + +#define PMU_OVSSET_CNT17_STATUS_Pos 17U /*!< PMU OVSSET: Event Counter 17 Overflow Set Position */ +#define PMU_OVSSET_CNT17_STATUS_Msk (1UL << PMU_OVSSET_CNT17_STATUS_Pos) /*!< PMU OVSSET: Event Counter 17 Overflow Set Mask */ + +#define PMU_OVSSET_CNT18_STATUS_Pos 18U /*!< PMU OVSSET: Event Counter 18 Overflow Set Position */ +#define PMU_OVSSET_CNT18_STATUS_Msk (1UL << PMU_OVSSET_CNT18_STATUS_Pos) /*!< PMU OVSSET: Event Counter 18 Overflow Set Mask */ + +#define PMU_OVSSET_CNT19_STATUS_Pos 19U /*!< PMU OVSSET: Event Counter 19 Overflow Set Position */ +#define PMU_OVSSET_CNT19_STATUS_Msk (1UL << PMU_OVSSET_CNT19_STATUS_Pos) /*!< PMU OVSSET: Event Counter 19 Overflow Set Mask */ + +#define PMU_OVSSET_CNT20_STATUS_Pos 20U /*!< PMU OVSSET: Event Counter 20 Overflow Set Position */ +#define PMU_OVSSET_CNT20_STATUS_Msk (1UL << PMU_OVSSET_CNT20_STATUS_Pos) /*!< PMU OVSSET: Event Counter 20 Overflow Set Mask */ + +#define PMU_OVSSET_CNT21_STATUS_Pos 21U /*!< PMU OVSSET: Event Counter 21 Overflow Set Position */ +#define PMU_OVSSET_CNT21_STATUS_Msk (1UL << PMU_OVSSET_CNT21_STATUS_Pos) /*!< PMU OVSSET: Event Counter 21 Overflow Set Mask */ + +#define PMU_OVSSET_CNT22_STATUS_Pos 22U /*!< PMU OVSSET: Event Counter 22 Overflow Set Position */ +#define PMU_OVSSET_CNT22_STATUS_Msk (1UL << PMU_OVSSET_CNT22_STATUS_Pos) /*!< PMU OVSSET: Event Counter 22 Overflow Set Mask */ + +#define PMU_OVSSET_CNT23_STATUS_Pos 23U /*!< PMU OVSSET: Event Counter 23 Overflow Set Position */ +#define PMU_OVSSET_CNT23_STATUS_Msk (1UL << PMU_OVSSET_CNT23_STATUS_Pos) /*!< PMU OVSSET: Event Counter 23 Overflow Set Mask */ + +#define PMU_OVSSET_CNT24_STATUS_Pos 24U /*!< PMU OVSSET: Event Counter 24 Overflow Set Position */ +#define PMU_OVSSET_CNT24_STATUS_Msk (1UL << PMU_OVSSET_CNT24_STATUS_Pos) /*!< PMU OVSSET: Event Counter 24 Overflow Set Mask */ + +#define PMU_OVSSET_CNT25_STATUS_Pos 25U /*!< PMU OVSSET: Event Counter 25 Overflow Set Position */ +#define PMU_OVSSET_CNT25_STATUS_Msk (1UL << PMU_OVSSET_CNT25_STATUS_Pos) /*!< PMU OVSSET: Event Counter 25 Overflow Set Mask */ + +#define PMU_OVSSET_CNT26_STATUS_Pos 26U /*!< PMU OVSSET: Event Counter 26 Overflow Set Position */ +#define PMU_OVSSET_CNT26_STATUS_Msk (1UL << PMU_OVSSET_CNT26_STATUS_Pos) /*!< PMU OVSSET: Event Counter 26 Overflow Set Mask */ + +#define PMU_OVSSET_CNT27_STATUS_Pos 27U /*!< PMU OVSSET: Event Counter 27 Overflow Set Position */ +#define PMU_OVSSET_CNT27_STATUS_Msk (1UL << PMU_OVSSET_CNT27_STATUS_Pos) /*!< PMU OVSSET: Event Counter 27 Overflow Set Mask */ + +#define PMU_OVSSET_CNT28_STATUS_Pos 28U /*!< PMU OVSSET: Event Counter 28 Overflow Set Position */ +#define PMU_OVSSET_CNT28_STATUS_Msk (1UL << PMU_OVSSET_CNT28_STATUS_Pos) /*!< PMU OVSSET: Event Counter 28 Overflow Set Mask */ + +#define PMU_OVSSET_CNT29_STATUS_Pos 29U /*!< PMU OVSSET: Event Counter 29 Overflow Set Position */ +#define PMU_OVSSET_CNT29_STATUS_Msk (1UL << PMU_OVSSET_CNT29_STATUS_Pos) /*!< PMU OVSSET: Event Counter 29 Overflow Set Mask */ + +#define PMU_OVSSET_CNT30_STATUS_Pos 30U /*!< PMU OVSSET: Event Counter 30 Overflow Set Position */ +#define PMU_OVSSET_CNT30_STATUS_Msk (1UL << PMU_OVSSET_CNT30_STATUS_Pos) /*!< PMU OVSSET: Event Counter 30 Overflow Set Mask */ + +#define PMU_OVSSET_CYCCNT_STATUS_Pos 31U /*!< PMU OVSSET: Cycle Counter Overflow Set Position */ +#define PMU_OVSSET_CYCCNT_STATUS_Msk (1UL << PMU_OVSSET_CYCCNT_STATUS_Pos) /*!< PMU OVSSET: Cycle Counter Overflow Set Mask */ + +/** \brief PMU Overflow Flag Status Clear Register Definitions */ + +#define PMU_OVSCLR_CNT0_STATUS_Pos 0U /*!< PMU OVSCLR: Event Counter 0 Overflow Clear Position */ +#define PMU_OVSCLR_CNT0_STATUS_Msk (1UL /*<< PMU_OVSCLR_CNT0_STATUS_Pos*/) /*!< PMU OVSCLR: Event Counter 0 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT1_STATUS_Pos 1U /*!< PMU OVSCLR: Event Counter 1 Overflow Clear Position */ +#define PMU_OVSCLR_CNT1_STATUS_Msk (1UL << PMU_OVSCLR_CNT1_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 1 Overflow Clear */ + +#define PMU_OVSCLR_CNT2_STATUS_Pos 2U /*!< PMU OVSCLR: Event Counter 2 Overflow Clear Position */ +#define PMU_OVSCLR_CNT2_STATUS_Msk (1UL << PMU_OVSCLR_CNT2_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 2 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT3_STATUS_Pos 3U /*!< PMU OVSCLR: Event Counter 3 Overflow Clear Position */ +#define PMU_OVSCLR_CNT3_STATUS_Msk (1UL << PMU_OVSCLR_CNT3_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 3 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT4_STATUS_Pos 4U /*!< PMU OVSCLR: Event Counter 4 Overflow Clear Position */ +#define PMU_OVSCLR_CNT4_STATUS_Msk (1UL << PMU_OVSCLR_CNT4_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 4 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT5_STATUS_Pos 5U /*!< PMU OVSCLR: Event Counter 5 Overflow Clear Position */ +#define PMU_OVSCLR_CNT5_STATUS_Msk (1UL << PMU_OVSCLR_CNT5_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 5 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT6_STATUS_Pos 6U /*!< PMU OVSCLR: Event Counter 6 Overflow Clear Position */ +#define PMU_OVSCLR_CNT6_STATUS_Msk (1UL << PMU_OVSCLR_CNT6_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 6 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT7_STATUS_Pos 7U /*!< PMU OVSCLR: Event Counter 7 Overflow Clear Position */ +#define PMU_OVSCLR_CNT7_STATUS_Msk (1UL << PMU_OVSCLR_CNT7_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 7 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT8_STATUS_Pos 8U /*!< PMU OVSCLR: Event Counter 8 Overflow Clear Position */ +#define PMU_OVSCLR_CNT8_STATUS_Msk (1UL << PMU_OVSCLR_CNT8_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 8 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT9_STATUS_Pos 9U /*!< PMU OVSCLR: Event Counter 9 Overflow Clear Position */ +#define PMU_OVSCLR_CNT9_STATUS_Msk (1UL << PMU_OVSCLR_CNT9_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 9 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT10_STATUS_Pos 10U /*!< PMU OVSCLR: Event Counter 10 Overflow Clear Position */ +#define PMU_OVSCLR_CNT10_STATUS_Msk (1UL << PMU_OVSCLR_CNT10_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 10 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT11_STATUS_Pos 11U /*!< PMU OVSCLR: Event Counter 11 Overflow Clear Position */ +#define PMU_OVSCLR_CNT11_STATUS_Msk (1UL << PMU_OVSCLR_CNT11_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 11 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT12_STATUS_Pos 12U /*!< PMU OVSCLR: Event Counter 12 Overflow Clear Position */ +#define PMU_OVSCLR_CNT12_STATUS_Msk (1UL << PMU_OVSCLR_CNT12_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 12 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT13_STATUS_Pos 13U /*!< PMU OVSCLR: Event Counter 13 Overflow Clear Position */ +#define PMU_OVSCLR_CNT13_STATUS_Msk (1UL << PMU_OVSCLR_CNT13_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 13 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT14_STATUS_Pos 14U /*!< PMU OVSCLR: Event Counter 14 Overflow Clear Position */ +#define PMU_OVSCLR_CNT14_STATUS_Msk (1UL << PMU_OVSCLR_CNT14_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 14 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT15_STATUS_Pos 15U /*!< PMU OVSCLR: Event Counter 15 Overflow Clear Position */ +#define PMU_OVSCLR_CNT15_STATUS_Msk (1UL << PMU_OVSCLR_CNT15_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 15 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT16_STATUS_Pos 16U /*!< PMU OVSCLR: Event Counter 16 Overflow Clear Position */ +#define PMU_OVSCLR_CNT16_STATUS_Msk (1UL << PMU_OVSCLR_CNT16_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 16 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT17_STATUS_Pos 17U /*!< PMU OVSCLR: Event Counter 17 Overflow Clear Position */ +#define PMU_OVSCLR_CNT17_STATUS_Msk (1UL << PMU_OVSCLR_CNT17_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 17 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT18_STATUS_Pos 18U /*!< PMU OVSCLR: Event Counter 18 Overflow Clear Position */ +#define PMU_OVSCLR_CNT18_STATUS_Msk (1UL << PMU_OVSCLR_CNT18_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 18 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT19_STATUS_Pos 19U /*!< PMU OVSCLR: Event Counter 19 Overflow Clear Position */ +#define PMU_OVSCLR_CNT19_STATUS_Msk (1UL << PMU_OVSCLR_CNT19_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 19 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT20_STATUS_Pos 20U /*!< PMU OVSCLR: Event Counter 20 Overflow Clear Position */ +#define PMU_OVSCLR_CNT20_STATUS_Msk (1UL << PMU_OVSCLR_CNT20_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 20 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT21_STATUS_Pos 21U /*!< PMU OVSCLR: Event Counter 21 Overflow Clear Position */ +#define PMU_OVSCLR_CNT21_STATUS_Msk (1UL << PMU_OVSCLR_CNT21_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 21 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT22_STATUS_Pos 22U /*!< PMU OVSCLR: Event Counter 22 Overflow Clear Position */ +#define PMU_OVSCLR_CNT22_STATUS_Msk (1UL << PMU_OVSCLR_CNT22_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 22 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT23_STATUS_Pos 23U /*!< PMU OVSCLR: Event Counter 23 Overflow Clear Position */ +#define PMU_OVSCLR_CNT23_STATUS_Msk (1UL << PMU_OVSCLR_CNT23_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 23 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT24_STATUS_Pos 24U /*!< PMU OVSCLR: Event Counter 24 Overflow Clear Position */ +#define PMU_OVSCLR_CNT24_STATUS_Msk (1UL << PMU_OVSCLR_CNT24_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 24 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT25_STATUS_Pos 25U /*!< PMU OVSCLR: Event Counter 25 Overflow Clear Position */ +#define PMU_OVSCLR_CNT25_STATUS_Msk (1UL << PMU_OVSCLR_CNT25_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 25 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT26_STATUS_Pos 26U /*!< PMU OVSCLR: Event Counter 26 Overflow Clear Position */ +#define PMU_OVSCLR_CNT26_STATUS_Msk (1UL << PMU_OVSCLR_CNT26_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 26 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT27_STATUS_Pos 27U /*!< PMU OVSCLR: Event Counter 27 Overflow Clear Position */ +#define PMU_OVSCLR_CNT27_STATUS_Msk (1UL << PMU_OVSCLR_CNT27_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 27 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT28_STATUS_Pos 28U /*!< PMU OVSCLR: Event Counter 28 Overflow Clear Position */ +#define PMU_OVSCLR_CNT28_STATUS_Msk (1UL << PMU_OVSCLR_CNT28_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 28 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT29_STATUS_Pos 29U /*!< PMU OVSCLR: Event Counter 29 Overflow Clear Position */ +#define PMU_OVSCLR_CNT29_STATUS_Msk (1UL << PMU_OVSCLR_CNT29_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 29 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT30_STATUS_Pos 30U /*!< PMU OVSCLR: Event Counter 30 Overflow Clear Position */ +#define PMU_OVSCLR_CNT30_STATUS_Msk (1UL << PMU_OVSCLR_CNT30_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 30 Overflow Clear Mask */ + +#define PMU_OVSCLR_CYCCNT_STATUS_Pos 31U /*!< PMU OVSCLR: Cycle Counter Overflow Clear Position */ +#define PMU_OVSCLR_CYCCNT_STATUS_Msk (1UL << PMU_OVSCLR_CYCCNT_STATUS_Pos) /*!< PMU OVSCLR: Cycle Counter Overflow Clear Mask */ + +/** \brief PMU Software Increment Counter */ + +#define PMU_SWINC_CNT0_Pos 0U /*!< PMU SWINC: Event Counter 0 Software Increment Position */ +#define PMU_SWINC_CNT0_Msk (1UL /*<< PMU_SWINC_CNT0_Pos */) /*!< PMU SWINC: Event Counter 0 Software Increment Mask */ + +#define PMU_SWINC_CNT1_Pos 1U /*!< PMU SWINC: Event Counter 1 Software Increment Position */ +#define PMU_SWINC_CNT1_Msk (1UL << PMU_SWINC_CNT1_Pos) /*!< PMU SWINC: Event Counter 1 Software Increment Mask */ + +#define PMU_SWINC_CNT2_Pos 2U /*!< PMU SWINC: Event Counter 2 Software Increment Position */ +#define PMU_SWINC_CNT2_Msk (1UL << PMU_SWINC_CNT2_Pos) /*!< PMU SWINC: Event Counter 2 Software Increment Mask */ + +#define PMU_SWINC_CNT3_Pos 3U /*!< PMU SWINC: Event Counter 3 Software Increment Position */ +#define PMU_SWINC_CNT3_Msk (1UL << PMU_SWINC_CNT3_Pos) /*!< PMU SWINC: Event Counter 3 Software Increment Mask */ + +#define PMU_SWINC_CNT4_Pos 4U /*!< PMU SWINC: Event Counter 4 Software Increment Position */ +#define PMU_SWINC_CNT4_Msk (1UL << PMU_SWINC_CNT4_Pos) /*!< PMU SWINC: Event Counter 4 Software Increment Mask */ + +#define PMU_SWINC_CNT5_Pos 5U /*!< PMU SWINC: Event Counter 5 Software Increment Position */ +#define PMU_SWINC_CNT5_Msk (1UL << PMU_SWINC_CNT5_Pos) /*!< PMU SWINC: Event Counter 5 Software Increment Mask */ + +#define PMU_SWINC_CNT6_Pos 6U /*!< PMU SWINC: Event Counter 6 Software Increment Position */ +#define PMU_SWINC_CNT6_Msk (1UL << PMU_SWINC_CNT6_Pos) /*!< PMU SWINC: Event Counter 6 Software Increment Mask */ + +#define PMU_SWINC_CNT7_Pos 7U /*!< PMU SWINC: Event Counter 7 Software Increment Position */ +#define PMU_SWINC_CNT7_Msk (1UL << PMU_SWINC_CNT7_Pos) /*!< PMU SWINC: Event Counter 7 Software Increment Mask */ + +#define PMU_SWINC_CNT8_Pos 8U /*!< PMU SWINC: Event Counter 8 Software Increment Position */ +#define PMU_SWINC_CNT8_Msk (1UL << PMU_SWINC_CNT8_Pos) /*!< PMU SWINC: Event Counter 8 Software Increment Mask */ + +#define PMU_SWINC_CNT9_Pos 9U /*!< PMU SWINC: Event Counter 9 Software Increment Position */ +#define PMU_SWINC_CNT9_Msk (1UL << PMU_SWINC_CNT9_Pos) /*!< PMU SWINC: Event Counter 9 Software Increment Mask */ + +#define PMU_SWINC_CNT10_Pos 10U /*!< PMU SWINC: Event Counter 10 Software Increment Position */ +#define PMU_SWINC_CNT10_Msk (1UL << PMU_SWINC_CNT10_Pos) /*!< PMU SWINC: Event Counter 10 Software Increment Mask */ + +#define PMU_SWINC_CNT11_Pos 11U /*!< PMU SWINC: Event Counter 11 Software Increment Position */ +#define PMU_SWINC_CNT11_Msk (1UL << PMU_SWINC_CNT11_Pos) /*!< PMU SWINC: Event Counter 11 Software Increment Mask */ + +#define PMU_SWINC_CNT12_Pos 12U /*!< PMU SWINC: Event Counter 12 Software Increment Position */ +#define PMU_SWINC_CNT12_Msk (1UL << PMU_SWINC_CNT12_Pos) /*!< PMU SWINC: Event Counter 12 Software Increment Mask */ + +#define PMU_SWINC_CNT13_Pos 13U /*!< PMU SWINC: Event Counter 13 Software Increment Position */ +#define PMU_SWINC_CNT13_Msk (1UL << PMU_SWINC_CNT13_Pos) /*!< PMU SWINC: Event Counter 13 Software Increment Mask */ + +#define PMU_SWINC_CNT14_Pos 14U /*!< PMU SWINC: Event Counter 14 Software Increment Position */ +#define PMU_SWINC_CNT14_Msk (1UL << PMU_SWINC_CNT14_Pos) /*!< PMU SWINC: Event Counter 14 Software Increment Mask */ + +#define PMU_SWINC_CNT15_Pos 15U /*!< PMU SWINC: Event Counter 15 Software Increment Position */ +#define PMU_SWINC_CNT15_Msk (1UL << PMU_SWINC_CNT15_Pos) /*!< PMU SWINC: Event Counter 15 Software Increment Mask */ + +#define PMU_SWINC_CNT16_Pos 16U /*!< PMU SWINC: Event Counter 16 Software Increment Position */ +#define PMU_SWINC_CNT16_Msk (1UL << PMU_SWINC_CNT16_Pos) /*!< PMU SWINC: Event Counter 16 Software Increment Mask */ + +#define PMU_SWINC_CNT17_Pos 17U /*!< PMU SWINC: Event Counter 17 Software Increment Position */ +#define PMU_SWINC_CNT17_Msk (1UL << PMU_SWINC_CNT17_Pos) /*!< PMU SWINC: Event Counter 17 Software Increment Mask */ + +#define PMU_SWINC_CNT18_Pos 18U /*!< PMU SWINC: Event Counter 18 Software Increment Position */ +#define PMU_SWINC_CNT18_Msk (1UL << PMU_SWINC_CNT18_Pos) /*!< PMU SWINC: Event Counter 18 Software Increment Mask */ + +#define PMU_SWINC_CNT19_Pos 19U /*!< PMU SWINC: Event Counter 19 Software Increment Position */ +#define PMU_SWINC_CNT19_Msk (1UL << PMU_SWINC_CNT19_Pos) /*!< PMU SWINC: Event Counter 19 Software Increment Mask */ + +#define PMU_SWINC_CNT20_Pos 20U /*!< PMU SWINC: Event Counter 20 Software Increment Position */ +#define PMU_SWINC_CNT20_Msk (1UL << PMU_SWINC_CNT20_Pos) /*!< PMU SWINC: Event Counter 20 Software Increment Mask */ + +#define PMU_SWINC_CNT21_Pos 21U /*!< PMU SWINC: Event Counter 21 Software Increment Position */ +#define PMU_SWINC_CNT21_Msk (1UL << PMU_SWINC_CNT21_Pos) /*!< PMU SWINC: Event Counter 21 Software Increment Mask */ + +#define PMU_SWINC_CNT22_Pos 22U /*!< PMU SWINC: Event Counter 22 Software Increment Position */ +#define PMU_SWINC_CNT22_Msk (1UL << PMU_SWINC_CNT22_Pos) /*!< PMU SWINC: Event Counter 22 Software Increment Mask */ + +#define PMU_SWINC_CNT23_Pos 23U /*!< PMU SWINC: Event Counter 23 Software Increment Position */ +#define PMU_SWINC_CNT23_Msk (1UL << PMU_SWINC_CNT23_Pos) /*!< PMU SWINC: Event Counter 23 Software Increment Mask */ + +#define PMU_SWINC_CNT24_Pos 24U /*!< PMU SWINC: Event Counter 24 Software Increment Position */ +#define PMU_SWINC_CNT24_Msk (1UL << PMU_SWINC_CNT24_Pos) /*!< PMU SWINC: Event Counter 24 Software Increment Mask */ + +#define PMU_SWINC_CNT25_Pos 25U /*!< PMU SWINC: Event Counter 25 Software Increment Position */ +#define PMU_SWINC_CNT25_Msk (1UL << PMU_SWINC_CNT25_Pos) /*!< PMU SWINC: Event Counter 25 Software Increment Mask */ + +#define PMU_SWINC_CNT26_Pos 26U /*!< PMU SWINC: Event Counter 26 Software Increment Position */ +#define PMU_SWINC_CNT26_Msk (1UL << PMU_SWINC_CNT26_Pos) /*!< PMU SWINC: Event Counter 26 Software Increment Mask */ + +#define PMU_SWINC_CNT27_Pos 27U /*!< PMU SWINC: Event Counter 27 Software Increment Position */ +#define PMU_SWINC_CNT27_Msk (1UL << PMU_SWINC_CNT27_Pos) /*!< PMU SWINC: Event Counter 27 Software Increment Mask */ + +#define PMU_SWINC_CNT28_Pos 28U /*!< PMU SWINC: Event Counter 28 Software Increment Position */ +#define PMU_SWINC_CNT28_Msk (1UL << PMU_SWINC_CNT28_Pos) /*!< PMU SWINC: Event Counter 28 Software Increment Mask */ + +#define PMU_SWINC_CNT29_Pos 29U /*!< PMU SWINC: Event Counter 29 Software Increment Position */ +#define PMU_SWINC_CNT29_Msk (1UL << PMU_SWINC_CNT29_Pos) /*!< PMU SWINC: Event Counter 29 Software Increment Mask */ + +#define PMU_SWINC_CNT30_Pos 30U /*!< PMU SWINC: Event Counter 30 Software Increment Position */ +#define PMU_SWINC_CNT30_Msk (1UL << PMU_SWINC_CNT30_Pos) /*!< PMU SWINC: Event Counter 30 Software Increment Mask */ + +/** \brief PMU Control Register Definitions */ + +#define PMU_CTRL_ENABLE_Pos 0U /*!< PMU CTRL: ENABLE Position */ +#define PMU_CTRL_ENABLE_Msk (1UL /*<< PMU_CTRL_ENABLE_Pos*/) /*!< PMU CTRL: ENABLE Mask */ + +#define PMU_CTRL_EVENTCNT_RESET_Pos 1U /*!< PMU CTRL: Event Counter Reset Position */ +#define PMU_CTRL_EVENTCNT_RESET_Msk (1UL << PMU_CTRL_EVENTCNT_RESET_Pos) /*!< PMU CTRL: Event Counter Reset Mask */ + +#define PMU_CTRL_CYCCNT_RESET_Pos 2U /*!< PMU CTRL: Cycle Counter Reset Position */ +#define PMU_CTRL_CYCCNT_RESET_Msk (1UL << PMU_CTRL_CYCCNT_RESET_Pos) /*!< PMU CTRL: Cycle Counter Reset Mask */ + +#define PMU_CTRL_CYCCNT_DISABLE_Pos 5U /*!< PMU CTRL: Disable Cycle Counter Position */ +#define PMU_CTRL_CYCCNT_DISABLE_Msk (1UL << PMU_CTRL_CYCCNT_DISABLE_Pos) /*!< PMU CTRL: Disable Cycle Counter Mask */ + +#define PMU_CTRL_FRZ_ON_OV_Pos 9U /*!< PMU CTRL: Freeze-on-overflow Position */ +#define PMU_CTRL_FRZ_ON_OV_Msk (1UL << PMU_CTRL_FRZ_ON_OVERFLOW_Pos) /*!< PMU CTRL: Freeze-on-overflow Mask */ + +#define PMU_CTRL_TRACE_ON_OV_Pos 11U /*!< PMU CTRL: Trace-on-overflow Position */ +#define PMU_CTRL_TRACE_ON_OV_Msk (1UL << PMU_CTRL_TRACE_ON_OVERFLOW_Pos) /*!< PMU CTRL: Trace-on-overflow Mask */ + +/** \brief PMU Type Register Definitions */ + +#define PMU_TYPE_NUM_CNTS_Pos 0U /*!< PMU TYPE: Number of Counters Position */ +#define PMU_TYPE_NUM_CNTS_Msk (0xFFUL /*<< PMU_TYPE_NUM_CNTS_Pos*/) /*!< PMU TYPE: Number of Counters Mask */ + +#define PMU_TYPE_SIZE_CNTS_Pos 8U /*!< PMU TYPE: Size of Counters Position */ +#define PMU_TYPE_SIZE_CNTS_Msk (0x3FUL << PMU_TYPE_SIZE_CNTS_Pos) /*!< PMU TYPE: Size of Counters Mask */ + +#define PMU_TYPE_CYCCNT_PRESENT_Pos 14U /*!< PMU TYPE: Cycle Counter Present Position */ +#define PMU_TYPE_CYCCNT_PRESENT_Msk (1UL << PMU_TYPE_CYCCNT_PRESENT_Pos) /*!< PMU TYPE: Cycle Counter Present Mask */ + +#define PMU_TYPE_FRZ_OV_SUPPORT_Pos 21U /*!< PMU TYPE: Freeze-on-overflow Support Position */ +#define PMU_TYPE_FRZ_OV_SUPPORT_Msk (1UL << PMU_TYPE_FRZ_OV_SUPPORT_Pos) /*!< PMU TYPE: Freeze-on-overflow Support Mask */ + +#define PMU_TYPE_TRACE_ON_OV_SUPPORT_Pos 23U /*!< PMU TYPE: Trace-on-overflow Support Position */ +#define PMU_TYPE_TRACE_ON_OV_SUPPORT_Msk (1UL << PMU_TYPE_FRZ_OV_SUPPORT_Pos) /*!< PMU TYPE: Trace-on-overflow Support Mask */ + +/** \brief PMU Authentication Status Register Definitions */ + +#define PMU_AUTHSTATUS_NSID_Pos 0U /*!< PMU AUTHSTATUS: Non-secure Invasive Debug Position */ +#define PMU_AUTHSTATUS_NSID_Msk (0x3UL /*<< PMU_AUTHSTATUS_NSID_Pos*/) /*!< PMU AUTHSTATUS: Non-secure Invasive Debug Mask */ + +#define PMU_AUTHSTATUS_NSNID_Pos 2U /*!< PMU AUTHSTATUS: Non-secure Non-invasive Debug Position */ +#define PMU_AUTHSTATUS_NSNID_Msk (0x3UL << PMU_AUTHSTATUS_NSNID_Pos) /*!< PMU AUTHSTATUS: Non-secure Non-invasive Debug Mask */ + +#define PMU_AUTHSTATUS_SID_Pos 4U /*!< PMU AUTHSTATUS: Secure Invasive Debug Position */ +#define PMU_AUTHSTATUS_SID_Msk (0x3UL << PMU_AUTHSTATUS_SID_Pos) /*!< PMU AUTHSTATUS: Secure Invasive Debug Mask */ + +#define PMU_AUTHSTATUS_SNID_Pos 6U /*!< PMU AUTHSTATUS: Secure Non-invasive Debug Position */ +#define PMU_AUTHSTATUS_SNID_Msk (0x3UL << PMU_AUTHSTATUS_SNID_Pos) /*!< PMU AUTHSTATUS: Secure Non-invasive Debug Mask */ + +#define PMU_AUTHSTATUS_NSUID_Pos 16U /*!< PMU AUTHSTATUS: Non-secure Unprivileged Invasive Debug Position */ +#define PMU_AUTHSTATUS_NSUID_Msk (0x3UL << PMU_AUTHSTATUS_NSUID_Pos) /*!< PMU AUTHSTATUS: Non-secure Unprivileged Invasive Debug Mask */ + +#define PMU_AUTHSTATUS_NSUNID_Pos 18U /*!< PMU AUTHSTATUS: Non-secure Unprivileged Non-invasive Debug Position */ +#define PMU_AUTHSTATUS_NSUNID_Msk (0x3UL << PMU_AUTHSTATUS_NSUNID_Pos) /*!< PMU AUTHSTATUS: Non-secure Unprivileged Non-invasive Debug Mask */ + +#define PMU_AUTHSTATUS_SUID_Pos 20U /*!< PMU AUTHSTATUS: Secure Unprivileged Invasive Debug Position */ +#define PMU_AUTHSTATUS_SUID_Msk (0x3UL << PMU_AUTHSTATUS_SUID_Pos) /*!< PMU AUTHSTATUS: Secure Unprivileged Invasive Debug Mask */ + +#define PMU_AUTHSTATUS_SUNID_Pos 22U /*!< PMU AUTHSTATUS: Secure Unprivileged Non-invasive Debug Position */ +#define PMU_AUTHSTATUS_SUNID_Msk (0x3UL << PMU_AUTHSTATUS_SUNID_Pos) /*!< PMU AUTHSTATUS: Secure Unprivileged Non-invasive Debug Mask */ + + +/*@} end of group CMSIS_PMU */ +#endif + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_MPU Memory Protection Unit (MPU) + \brief Type definitions for the Memory Protection Unit (MPU) + @{ + */ + +/** + \brief Structure type to access the Memory Protection Unit (MPU). + */ +typedef struct +{ + __IM uint32_t TYPE; /*!< Offset: 0x000 (R/ ) MPU Type Register */ + __IOM uint32_t CTRL; /*!< Offset: 0x004 (R/W) MPU Control Register */ + __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) MPU Region Number Register */ + __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) MPU Region Base Address Register */ + __IOM uint32_t RLAR; /*!< Offset: 0x010 (R/W) MPU Region Limit Address Register */ + __IOM uint32_t RBAR_A1; /*!< Offset: 0x014 (R/W) MPU Region Base Address Register Alias 1 */ + __IOM uint32_t RLAR_A1; /*!< Offset: 0x018 (R/W) MPU Region Limit Address Register Alias 1 */ + __IOM uint32_t RBAR_A2; /*!< Offset: 0x01C (R/W) MPU Region Base Address Register Alias 2 */ + __IOM uint32_t RLAR_A2; /*!< Offset: 0x020 (R/W) MPU Region Limit Address Register Alias 2 */ + __IOM uint32_t RBAR_A3; /*!< Offset: 0x024 (R/W) MPU Region Base Address Register Alias 3 */ + __IOM uint32_t RLAR_A3; /*!< Offset: 0x028 (R/W) MPU Region Limit Address Register Alias 3 */ + uint32_t RESERVED0[1]; + union { + __IOM uint32_t MAIR[2]; + struct { + __IOM uint32_t MAIR0; /*!< Offset: 0x030 (R/W) MPU Memory Attribute Indirection Register 0 */ + __IOM uint32_t MAIR1; /*!< Offset: 0x034 (R/W) MPU Memory Attribute Indirection Register 1 */ + }; + }; +} MPU_Type; + +#define MPU_TYPE_RALIASES 4U + +/* MPU Type Register Definitions */ +#define MPU_TYPE_IREGION_Pos 16U /*!< MPU TYPE: IREGION Position */ +#define MPU_TYPE_IREGION_Msk (0xFFUL << MPU_TYPE_IREGION_Pos) /*!< MPU TYPE: IREGION Mask */ + +#define MPU_TYPE_DREGION_Pos 8U /*!< MPU TYPE: DREGION Position */ +#define MPU_TYPE_DREGION_Msk (0xFFUL << MPU_TYPE_DREGION_Pos) /*!< MPU TYPE: DREGION Mask */ + +#define MPU_TYPE_SEPARATE_Pos 0U /*!< MPU TYPE: SEPARATE Position */ +#define MPU_TYPE_SEPARATE_Msk (1UL /*<< MPU_TYPE_SEPARATE_Pos*/) /*!< MPU TYPE: SEPARATE Mask */ + +/* MPU Control Register Definitions */ +#define MPU_CTRL_PRIVDEFENA_Pos 2U /*!< MPU CTRL: PRIVDEFENA Position */ +#define MPU_CTRL_PRIVDEFENA_Msk (1UL << MPU_CTRL_PRIVDEFENA_Pos) /*!< MPU CTRL: PRIVDEFENA Mask */ + +#define MPU_CTRL_HFNMIENA_Pos 1U /*!< MPU CTRL: HFNMIENA Position */ +#define MPU_CTRL_HFNMIENA_Msk (1UL << MPU_CTRL_HFNMIENA_Pos) /*!< MPU CTRL: HFNMIENA Mask */ + +#define MPU_CTRL_ENABLE_Pos 0U /*!< MPU CTRL: ENABLE Position */ +#define MPU_CTRL_ENABLE_Msk (1UL /*<< MPU_CTRL_ENABLE_Pos*/) /*!< MPU CTRL: ENABLE Mask */ + +/* MPU Region Number Register Definitions */ +#define MPU_RNR_REGION_Pos 0U /*!< MPU RNR: REGION Position */ +#define MPU_RNR_REGION_Msk (0xFFUL /*<< MPU_RNR_REGION_Pos*/) /*!< MPU RNR: REGION Mask */ + +/* MPU Region Base Address Register Definitions */ +#define MPU_RBAR_BASE_Pos 5U /*!< MPU RBAR: BASE Position */ +#define MPU_RBAR_BASE_Msk (0x7FFFFFFUL << MPU_RBAR_BASE_Pos) /*!< MPU RBAR: BASE Mask */ + +#define MPU_RBAR_SH_Pos 3U /*!< MPU RBAR: SH Position */ +#define MPU_RBAR_SH_Msk (0x3UL << MPU_RBAR_SH_Pos) /*!< MPU RBAR: SH Mask */ + +#define MPU_RBAR_AP_Pos 1U /*!< MPU RBAR: AP Position */ +#define MPU_RBAR_AP_Msk (0x3UL << MPU_RBAR_AP_Pos) /*!< MPU RBAR: AP Mask */ + +#define MPU_RBAR_XN_Pos 0U /*!< MPU RBAR: XN Position */ +#define MPU_RBAR_XN_Msk (01UL /*<< MPU_RBAR_XN_Pos*/) /*!< MPU RBAR: XN Mask */ + +/* MPU Region Limit Address Register Definitions */ +#define MPU_RLAR_LIMIT_Pos 5U /*!< MPU RLAR: LIMIT Position */ +#define MPU_RLAR_LIMIT_Msk (0x7FFFFFFUL << MPU_RLAR_LIMIT_Pos) /*!< MPU RLAR: LIMIT Mask */ + +#define MPU_RLAR_PXN_Pos 4U /*!< MPU RLAR: PXN Position */ +#define MPU_RLAR_PXN_Msk (1UL << MPU_RLAR_PXN_Pos) /*!< MPU RLAR: PXN Mask */ + +#define MPU_RLAR_AttrIndx_Pos 1U /*!< MPU RLAR: AttrIndx Position */ +#define MPU_RLAR_AttrIndx_Msk (7UL << MPU_RLAR_AttrIndx_Pos) /*!< MPU RLAR: AttrIndx Mask */ + +#define MPU_RLAR_EN_Pos 0U /*!< MPU RLAR: Region enable bit Position */ +#define MPU_RLAR_EN_Msk (1UL /*<< MPU_RLAR_EN_Pos*/) /*!< MPU RLAR: Region enable bit Disable Mask */ + +/* MPU Memory Attribute Indirection Register 0 Definitions */ +#define MPU_MAIR0_Attr3_Pos 24U /*!< MPU MAIR0: Attr3 Position */ +#define MPU_MAIR0_Attr3_Msk (0xFFUL << MPU_MAIR0_Attr3_Pos) /*!< MPU MAIR0: Attr3 Mask */ + +#define MPU_MAIR0_Attr2_Pos 16U /*!< MPU MAIR0: Attr2 Position */ +#define MPU_MAIR0_Attr2_Msk (0xFFUL << MPU_MAIR0_Attr2_Pos) /*!< MPU MAIR0: Attr2 Mask */ + +#define MPU_MAIR0_Attr1_Pos 8U /*!< MPU MAIR0: Attr1 Position */ +#define MPU_MAIR0_Attr1_Msk (0xFFUL << MPU_MAIR0_Attr1_Pos) /*!< MPU MAIR0: Attr1 Mask */ + +#define MPU_MAIR0_Attr0_Pos 0U /*!< MPU MAIR0: Attr0 Position */ +#define MPU_MAIR0_Attr0_Msk (0xFFUL /*<< MPU_MAIR0_Attr0_Pos*/) /*!< MPU MAIR0: Attr0 Mask */ + +/* MPU Memory Attribute Indirection Register 1 Definitions */ +#define MPU_MAIR1_Attr7_Pos 24U /*!< MPU MAIR1: Attr7 Position */ +#define MPU_MAIR1_Attr7_Msk (0xFFUL << MPU_MAIR1_Attr7_Pos) /*!< MPU MAIR1: Attr7 Mask */ + +#define MPU_MAIR1_Attr6_Pos 16U /*!< MPU MAIR1: Attr6 Position */ +#define MPU_MAIR1_Attr6_Msk (0xFFUL << MPU_MAIR1_Attr6_Pos) /*!< MPU MAIR1: Attr6 Mask */ + +#define MPU_MAIR1_Attr5_Pos 8U /*!< MPU MAIR1: Attr5 Position */ +#define MPU_MAIR1_Attr5_Msk (0xFFUL << MPU_MAIR1_Attr5_Pos) /*!< MPU MAIR1: Attr5 Mask */ + +#define MPU_MAIR1_Attr4_Pos 0U /*!< MPU MAIR1: Attr4 Position */ +#define MPU_MAIR1_Attr4_Msk (0xFFUL /*<< MPU_MAIR1_Attr4_Pos*/) /*!< MPU MAIR1: Attr4 Mask */ + +/*@} end of group CMSIS_MPU */ +#endif + + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SAU Security Attribution Unit (SAU) + \brief Type definitions for the Security Attribution Unit (SAU) + @{ + */ + +/** + \brief Structure type to access the Security Attribution Unit (SAU). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SAU Control Register */ + __IM uint32_t TYPE; /*!< Offset: 0x004 (R/ ) SAU Type Register */ +#if defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) + __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) SAU Region Number Register */ + __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) SAU Region Base Address Register */ + __IOM uint32_t RLAR; /*!< Offset: 0x010 (R/W) SAU Region Limit Address Register */ +#else + uint32_t RESERVED0[3]; +#endif + __IOM uint32_t SFSR; /*!< Offset: 0x014 (R/W) Secure Fault Status Register */ + __IOM uint32_t SFAR; /*!< Offset: 0x018 (R/W) Secure Fault Address Register */ +} SAU_Type; + +/* SAU Control Register Definitions */ +#define SAU_CTRL_ALLNS_Pos 1U /*!< SAU CTRL: ALLNS Position */ +#define SAU_CTRL_ALLNS_Msk (1UL << SAU_CTRL_ALLNS_Pos) /*!< SAU CTRL: ALLNS Mask */ + +#define SAU_CTRL_ENABLE_Pos 0U /*!< SAU CTRL: ENABLE Position */ +#define SAU_CTRL_ENABLE_Msk (1UL /*<< SAU_CTRL_ENABLE_Pos*/) /*!< SAU CTRL: ENABLE Mask */ + +/* SAU Type Register Definitions */ +#define SAU_TYPE_SREGION_Pos 0U /*!< SAU TYPE: SREGION Position */ +#define SAU_TYPE_SREGION_Msk (0xFFUL /*<< SAU_TYPE_SREGION_Pos*/) /*!< SAU TYPE: SREGION Mask */ + +#if defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) +/* SAU Region Number Register Definitions */ +#define SAU_RNR_REGION_Pos 0U /*!< SAU RNR: REGION Position */ +#define SAU_RNR_REGION_Msk (0xFFUL /*<< SAU_RNR_REGION_Pos*/) /*!< SAU RNR: REGION Mask */ + +/* SAU Region Base Address Register Definitions */ +#define SAU_RBAR_BADDR_Pos 5U /*!< SAU RBAR: BADDR Position */ +#define SAU_RBAR_BADDR_Msk (0x7FFFFFFUL << SAU_RBAR_BADDR_Pos) /*!< SAU RBAR: BADDR Mask */ + +/* SAU Region Limit Address Register Definitions */ +#define SAU_RLAR_LADDR_Pos 5U /*!< SAU RLAR: LADDR Position */ +#define SAU_RLAR_LADDR_Msk (0x7FFFFFFUL << SAU_RLAR_LADDR_Pos) /*!< SAU RLAR: LADDR Mask */ + +#define SAU_RLAR_NSC_Pos 1U /*!< SAU RLAR: NSC Position */ +#define SAU_RLAR_NSC_Msk (1UL << SAU_RLAR_NSC_Pos) /*!< SAU RLAR: NSC Mask */ + +#define SAU_RLAR_ENABLE_Pos 0U /*!< SAU RLAR: ENABLE Position */ +#define SAU_RLAR_ENABLE_Msk (1UL /*<< SAU_RLAR_ENABLE_Pos*/) /*!< SAU RLAR: ENABLE Mask */ + +#endif /* defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) */ + +/* Secure Fault Status Register Definitions */ +#define SAU_SFSR_LSERR_Pos 7U /*!< SAU SFSR: LSERR Position */ +#define SAU_SFSR_LSERR_Msk (1UL << SAU_SFSR_LSERR_Pos) /*!< SAU SFSR: LSERR Mask */ + +#define SAU_SFSR_SFARVALID_Pos 6U /*!< SAU SFSR: SFARVALID Position */ +#define SAU_SFSR_SFARVALID_Msk (1UL << SAU_SFSR_SFARVALID_Pos) /*!< SAU SFSR: SFARVALID Mask */ + +#define SAU_SFSR_LSPERR_Pos 5U /*!< SAU SFSR: LSPERR Position */ +#define SAU_SFSR_LSPERR_Msk (1UL << SAU_SFSR_LSPERR_Pos) /*!< SAU SFSR: LSPERR Mask */ + +#define SAU_SFSR_INVTRAN_Pos 4U /*!< SAU SFSR: INVTRAN Position */ +#define SAU_SFSR_INVTRAN_Msk (1UL << SAU_SFSR_INVTRAN_Pos) /*!< SAU SFSR: INVTRAN Mask */ + +#define SAU_SFSR_AUVIOL_Pos 3U /*!< SAU SFSR: AUVIOL Position */ +#define SAU_SFSR_AUVIOL_Msk (1UL << SAU_SFSR_AUVIOL_Pos) /*!< SAU SFSR: AUVIOL Mask */ + +#define SAU_SFSR_INVER_Pos 2U /*!< SAU SFSR: INVER Position */ +#define SAU_SFSR_INVER_Msk (1UL << SAU_SFSR_INVER_Pos) /*!< SAU SFSR: INVER Mask */ + +#define SAU_SFSR_INVIS_Pos 1U /*!< SAU SFSR: INVIS Position */ +#define SAU_SFSR_INVIS_Msk (1UL << SAU_SFSR_INVIS_Pos) /*!< SAU SFSR: INVIS Mask */ + +#define SAU_SFSR_INVEP_Pos 0U /*!< SAU SFSR: INVEP Position */ +#define SAU_SFSR_INVEP_Msk (1UL /*<< SAU_SFSR_INVEP_Pos*/) /*!< SAU SFSR: INVEP Mask */ + +/*@} end of group CMSIS_SAU */ +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_FPU Floating Point Unit (FPU) + \brief Type definitions for the Floating Point Unit (FPU) + @{ + */ + +/** + \brief Structure type to access the Floating Point Unit (FPU). + */ +typedef struct +{ + uint32_t RESERVED0[1U]; + __IOM uint32_t FPCCR; /*!< Offset: 0x004 (R/W) Floating-Point Context Control Register */ + __IOM uint32_t FPCAR; /*!< Offset: 0x008 (R/W) Floating-Point Context Address Register */ + __IOM uint32_t FPDSCR; /*!< Offset: 0x00C (R/W) Floating-Point Default Status Control Register */ + __IM uint32_t MVFR0; /*!< Offset: 0x010 (R/ ) Media and VFP Feature Register 0 */ + __IM uint32_t MVFR1; /*!< Offset: 0x014 (R/ ) Media and VFP Feature Register 1 */ + __IM uint32_t MVFR2; /*!< Offset: 0x018 (R/ ) Media and VFP Feature Register 2 */ +} FPU_Type; + +/* Floating-Point Context Control Register Definitions */ +#define FPU_FPCCR_ASPEN_Pos 31U /*!< FPCCR: ASPEN bit Position */ +#define FPU_FPCCR_ASPEN_Msk (1UL << FPU_FPCCR_ASPEN_Pos) /*!< FPCCR: ASPEN bit Mask */ + +#define FPU_FPCCR_LSPEN_Pos 30U /*!< FPCCR: LSPEN Position */ +#define FPU_FPCCR_LSPEN_Msk (1UL << FPU_FPCCR_LSPEN_Pos) /*!< FPCCR: LSPEN bit Mask */ + +#define FPU_FPCCR_LSPENS_Pos 29U /*!< FPCCR: LSPENS Position */ +#define FPU_FPCCR_LSPENS_Msk (1UL << FPU_FPCCR_LSPENS_Pos) /*!< FPCCR: LSPENS bit Mask */ + +#define FPU_FPCCR_CLRONRET_Pos 28U /*!< FPCCR: CLRONRET Position */ +#define FPU_FPCCR_CLRONRET_Msk (1UL << FPU_FPCCR_CLRONRET_Pos) /*!< FPCCR: CLRONRET bit Mask */ + +#define FPU_FPCCR_CLRONRETS_Pos 27U /*!< FPCCR: CLRONRETS Position */ +#define FPU_FPCCR_CLRONRETS_Msk (1UL << FPU_FPCCR_CLRONRETS_Pos) /*!< FPCCR: CLRONRETS bit Mask */ + +#define FPU_FPCCR_TS_Pos 26U /*!< FPCCR: TS Position */ +#define FPU_FPCCR_TS_Msk (1UL << FPU_FPCCR_TS_Pos) /*!< FPCCR: TS bit Mask */ + +#define FPU_FPCCR_UFRDY_Pos 10U /*!< FPCCR: UFRDY Position */ +#define FPU_FPCCR_UFRDY_Msk (1UL << FPU_FPCCR_UFRDY_Pos) /*!< FPCCR: UFRDY bit Mask */ + +#define FPU_FPCCR_SPLIMVIOL_Pos 9U /*!< FPCCR: SPLIMVIOL Position */ +#define FPU_FPCCR_SPLIMVIOL_Msk (1UL << FPU_FPCCR_SPLIMVIOL_Pos) /*!< FPCCR: SPLIMVIOL bit Mask */ + +#define FPU_FPCCR_MONRDY_Pos 8U /*!< FPCCR: MONRDY Position */ +#define FPU_FPCCR_MONRDY_Msk (1UL << FPU_FPCCR_MONRDY_Pos) /*!< FPCCR: MONRDY bit Mask */ + +#define FPU_FPCCR_SFRDY_Pos 7U /*!< FPCCR: SFRDY Position */ +#define FPU_FPCCR_SFRDY_Msk (1UL << FPU_FPCCR_SFRDY_Pos) /*!< FPCCR: SFRDY bit Mask */ + +#define FPU_FPCCR_BFRDY_Pos 6U /*!< FPCCR: BFRDY Position */ +#define FPU_FPCCR_BFRDY_Msk (1UL << FPU_FPCCR_BFRDY_Pos) /*!< FPCCR: BFRDY bit Mask */ + +#define FPU_FPCCR_MMRDY_Pos 5U /*!< FPCCR: MMRDY Position */ +#define FPU_FPCCR_MMRDY_Msk (1UL << FPU_FPCCR_MMRDY_Pos) /*!< FPCCR: MMRDY bit Mask */ + +#define FPU_FPCCR_HFRDY_Pos 4U /*!< FPCCR: HFRDY Position */ +#define FPU_FPCCR_HFRDY_Msk (1UL << FPU_FPCCR_HFRDY_Pos) /*!< FPCCR: HFRDY bit Mask */ + +#define FPU_FPCCR_THREAD_Pos 3U /*!< FPCCR: processor mode bit Position */ +#define FPU_FPCCR_THREAD_Msk (1UL << FPU_FPCCR_THREAD_Pos) /*!< FPCCR: processor mode active bit Mask */ + +#define FPU_FPCCR_S_Pos 2U /*!< FPCCR: Security status of the FP context bit Position */ +#define FPU_FPCCR_S_Msk (1UL << FPU_FPCCR_S_Pos) /*!< FPCCR: Security status of the FP context bit Mask */ + +#define FPU_FPCCR_USER_Pos 1U /*!< FPCCR: privilege level bit Position */ +#define FPU_FPCCR_USER_Msk (1UL << FPU_FPCCR_USER_Pos) /*!< FPCCR: privilege level bit Mask */ + +#define FPU_FPCCR_LSPACT_Pos 0U /*!< FPCCR: Lazy state preservation active bit Position */ +#define FPU_FPCCR_LSPACT_Msk (1UL /*<< FPU_FPCCR_LSPACT_Pos*/) /*!< FPCCR: Lazy state preservation active bit Mask */ + +/* Floating-Point Context Address Register Definitions */ +#define FPU_FPCAR_ADDRESS_Pos 3U /*!< FPCAR: ADDRESS bit Position */ +#define FPU_FPCAR_ADDRESS_Msk (0x1FFFFFFFUL << FPU_FPCAR_ADDRESS_Pos) /*!< FPCAR: ADDRESS bit Mask */ + +/* Floating-Point Default Status Control Register Definitions */ +#define FPU_FPDSCR_AHP_Pos 26U /*!< FPDSCR: AHP bit Position */ +#define FPU_FPDSCR_AHP_Msk (1UL << FPU_FPDSCR_AHP_Pos) /*!< FPDSCR: AHP bit Mask */ + +#define FPU_FPDSCR_DN_Pos 25U /*!< FPDSCR: DN bit Position */ +#define FPU_FPDSCR_DN_Msk (1UL << FPU_FPDSCR_DN_Pos) /*!< FPDSCR: DN bit Mask */ + +#define FPU_FPDSCR_FZ_Pos 24U /*!< FPDSCR: FZ bit Position */ +#define FPU_FPDSCR_FZ_Msk (1UL << FPU_FPDSCR_FZ_Pos) /*!< FPDSCR: FZ bit Mask */ + +#define FPU_FPDSCR_RMode_Pos 22U /*!< FPDSCR: RMode bit Position */ +#define FPU_FPDSCR_RMode_Msk (3UL << FPU_FPDSCR_RMode_Pos) /*!< FPDSCR: RMode bit Mask */ + +#define FPU_FPDSCR_FZ16_Pos 19U /*!< FPDSCR: FZ16 bit Position */ +#define FPU_FPDSCR_FZ16_Msk (1UL << FPU_FPDSCR_FZ16_Pos) /*!< FPDSCR: FZ16 bit Mask */ + +#define FPU_FPDSCR_LTPSIZE_Pos 16U /*!< FPDSCR: LTPSIZE bit Position */ +#define FPU_FPDSCR_LTPSIZE_Msk (7UL << FPU_FPDSCR_LTPSIZE_Pos) /*!< FPDSCR: LTPSIZE bit Mask */ + +/* Media and VFP Feature Register 0 Definitions */ +#define FPU_MVFR0_FPRound_Pos 28U /*!< MVFR0: FPRound bits Position */ +#define FPU_MVFR0_FPRound_Msk (0xFUL << FPU_MVFR0_FPRound_Pos) /*!< MVFR0: FPRound bits Mask */ + +#define FPU_MVFR0_FPSqrt_Pos 20U /*!< MVFR0: FPSqrt bits Position */ +#define FPU_MVFR0_FPSqrt_Msk (0xFUL << FPU_MVFR0_FPSqrt_Pos) /*!< MVFR0: FPSqrt bits Mask */ + +#define FPU_MVFR0_FPDivide_Pos 16U /*!< MVFR0: FPDivide bits Position */ +#define FPU_MVFR0_FPDivide_Msk (0xFUL << FPU_MVFR0_FPDivide_Pos) /*!< MVFR0: Divide bits Mask */ + +#define FPU_MVFR0_FPDP_Pos 8U /*!< MVFR0: FPDP bits Position */ +#define FPU_MVFR0_FPDP_Msk (0xFUL << FPU_MVFR0_FPDP_Pos) /*!< MVFR0: FPDP bits Mask */ + +#define FPU_MVFR0_FPSP_Pos 4U /*!< MVFR0: FPSP bits Position */ +#define FPU_MVFR0_FPSP_Msk (0xFUL << FPU_MVFR0_FPSP_Pos) /*!< MVFR0: FPSP bits Mask */ + +#define FPU_MVFR0_SIMDReg_Pos 0U /*!< MVFR0: SIMDReg bits Position */ +#define FPU_MVFR0_SIMDReg_Msk (0xFUL /*<< FPU_MVFR0_SIMDReg_Pos*/) /*!< MVFR0: SIMDReg bits Mask */ + +/* Media and VFP Feature Register 1 Definitions */ +#define FPU_MVFR1_FMAC_Pos 28U /*!< MVFR1: FMAC bits Position */ +#define FPU_MVFR1_FMAC_Msk (0xFUL << FPU_MVFR1_FMAC_Pos) /*!< MVFR1: FMAC bits Mask */ + +#define FPU_MVFR1_FPHP_Pos 24U /*!< MVFR1: FPHP bits Position */ +#define FPU_MVFR1_FPHP_Msk (0xFUL << FPU_MVFR1_FPHP_Pos) /*!< MVFR1: FPHP bits Mask */ + +#define FPU_MVFR1_FP16_Pos 20U /*!< MVFR1: FP16 bits Position */ +#define FPU_MVFR1_FP16_Msk (0xFUL << FPU_MVFR1_FP16_Pos) /*!< MVFR1: FP16 bits Mask */ + +#define FPU_MVFR1_MVE_Pos 8U /*!< MVFR1: MVE bits Position */ +#define FPU_MVFR1_MVE_Msk (0xFUL << FPU_MVFR1_MVE_Pos) /*!< MVFR1: MVE bits Mask */ + +#define FPU_MVFR1_FPDNaN_Pos 4U /*!< MVFR1: FPDNaN bits Position */ +#define FPU_MVFR1_FPDNaN_Msk (0xFUL << FPU_MVFR1_FPDNaN_Pos) /*!< MVFR1: FPDNaN bits Mask */ + +#define FPU_MVFR1_FPFtZ_Pos 0U /*!< MVFR1: FPFtZ bits Position */ +#define FPU_MVFR1_FPFtZ_Msk (0xFUL /*<< FPU_MVFR1_FPFtZ_Pos*/) /*!< MVFR1: FPFtZ bits Mask */ + +/* Media and VFP Feature Register 2 Definitions */ +#define FPU_MVFR2_FPMisc_Pos 4U /*!< MVFR2: FPMisc bits Position */ +#define FPU_MVFR2_FPMisc_Msk (0xFUL << FPU_MVFR2_FPMisc_Pos) /*!< MVFR2: FPMisc bits Mask */ + +/*@} end of group CMSIS_FPU */ + +/* CoreDebug is deprecated. replaced by DCB (Debug Control Block) */ +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CoreDebug Core Debug Registers (CoreDebug) + \brief Type definitions for the Core Debug Registers + @{ + */ + +/** + \brief \deprecated Structure type to access the Core Debug Register (CoreDebug). + */ +typedef struct +{ + __IOM uint32_t DHCSR; /*!< Offset: 0x000 (R/W) Debug Halting Control and Status Register */ + __OM uint32_t DCRSR; /*!< Offset: 0x004 ( /W) Debug Core Register Selector Register */ + __IOM uint32_t DCRDR; /*!< Offset: 0x008 (R/W) Debug Core Register Data Register */ + __IOM uint32_t DEMCR; /*!< Offset: 0x00C (R/W) Debug Exception and Monitor Control Register */ + __OM uint32_t DSCEMCR; /*!< Offset: 0x010 ( /W) Debug Set Clear Exception and Monitor Control Register */ + __IOM uint32_t DAUTHCTRL; /*!< Offset: 0x014 (R/W) Debug Authentication Control Register */ + __IOM uint32_t DSCSR; /*!< Offset: 0x018 (R/W) Debug Security Control and Status Register */ +} CoreDebug_Type; + +/* Debug Halting Control and Status Register Definitions */ +#define CoreDebug_DHCSR_DBGKEY_Pos 16U /*!< \deprecated CoreDebug DHCSR: DBGKEY Position */ +#define CoreDebug_DHCSR_DBGKEY_Msk (0xFFFFUL << CoreDebug_DHCSR_DBGKEY_Pos) /*!< \deprecated CoreDebug DHCSR: DBGKEY Mask */ + +#define CoreDebug_DHCSR_S_RESTART_ST_Pos 26U /*!< \deprecated CoreDebug DHCSR: S_RESTART_ST Position */ +#define CoreDebug_DHCSR_S_RESTART_ST_Msk (1UL << CoreDebug_DHCSR_S_RESTART_ST_Pos) /*!< \deprecated CoreDebug DHCSR: S_RESTART_ST Mask */ + +#define CoreDebug_DHCSR_S_RESET_ST_Pos 25U /*!< \deprecated CoreDebug DHCSR: S_RESET_ST Position */ +#define CoreDebug_DHCSR_S_RESET_ST_Msk (1UL << CoreDebug_DHCSR_S_RESET_ST_Pos) /*!< \deprecated CoreDebug DHCSR: S_RESET_ST Mask */ + +#define CoreDebug_DHCSR_S_RETIRE_ST_Pos 24U /*!< \deprecated CoreDebug DHCSR: S_RETIRE_ST Position */ +#define CoreDebug_DHCSR_S_RETIRE_ST_Msk (1UL << CoreDebug_DHCSR_S_RETIRE_ST_Pos) /*!< \deprecated CoreDebug DHCSR: S_RETIRE_ST Mask */ + +#define CoreDebug_DHCSR_S_FPD_Pos 23U /*!< \deprecated CoreDebug DHCSR: S_FPD Position */ +#define CoreDebug_DHCSR_S_FPD_Msk (1UL << CoreDebug_DHCSR_S_FPD_Pos) /*!< \deprecated CoreDebug DHCSR: S_FPD Mask */ + +#define CoreDebug_DHCSR_S_SUIDE_Pos 22U /*!< \deprecated CoreDebug DHCSR: S_SUIDE Position */ +#define CoreDebug_DHCSR_S_SUIDE_Msk (1UL << CoreDebug_DHCSR_S_SUIDE_Pos) /*!< \deprecated CoreDebug DHCSR: S_SUIDE Mask */ + +#define CoreDebug_DHCSR_S_NSUIDE_Pos 21U /*!< \deprecated CoreDebug DHCSR: S_NSUIDE Position */ +#define CoreDebug_DHCSR_S_NSUIDE_Msk (1UL << CoreDebug_DHCSR_S_NSUIDE_Pos) /*!< \deprecated CoreDebug DHCSR: S_NSUIDE Mask */ + +#define CoreDebug_DHCSR_S_SDE_Pos 20U /*!< \deprecated CoreDebug DHCSR: S_SDE Position */ +#define CoreDebug_DHCSR_S_SDE_Msk (1UL << CoreDebug_DHCSR_S_SDE_Pos) /*!< \deprecated CoreDebug DHCSR: S_SDE Mask */ + +#define CoreDebug_DHCSR_S_LOCKUP_Pos 19U /*!< \deprecated CoreDebug DHCSR: S_LOCKUP Position */ +#define CoreDebug_DHCSR_S_LOCKUP_Msk (1UL << CoreDebug_DHCSR_S_LOCKUP_Pos) /*!< \deprecated CoreDebug DHCSR: S_LOCKUP Mask */ + +#define CoreDebug_DHCSR_S_SLEEP_Pos 18U /*!< \deprecated CoreDebug DHCSR: S_SLEEP Position */ +#define CoreDebug_DHCSR_S_SLEEP_Msk (1UL << CoreDebug_DHCSR_S_SLEEP_Pos) /*!< \deprecated CoreDebug DHCSR: S_SLEEP Mask */ + +#define CoreDebug_DHCSR_S_HALT_Pos 17U /*!< \deprecated CoreDebug DHCSR: S_HALT Position */ +#define CoreDebug_DHCSR_S_HALT_Msk (1UL << CoreDebug_DHCSR_S_HALT_Pos) /*!< \deprecated CoreDebug DHCSR: S_HALT Mask */ + +#define CoreDebug_DHCSR_S_REGRDY_Pos 16U /*!< \deprecated CoreDebug DHCSR: S_REGRDY Position */ +#define CoreDebug_DHCSR_S_REGRDY_Msk (1UL << CoreDebug_DHCSR_S_REGRDY_Pos) /*!< \deprecated CoreDebug DHCSR: S_REGRDY Mask */ + +#define CoreDebug_DHCSR_C_PMOV_Pos 6U /*!< \deprecated CoreDebug DHCSR: C_PMOV Position */ +#define CoreDebug_DHCSR_C_PMOV_Msk (1UL << CoreDebug_DHCSR_C_PMOV_Pos) /*!< \deprecated CoreDebug DHCSR: C_PMOV Mask */ + +#define CoreDebug_DHCSR_C_SNAPSTALL_Pos 5U /*!< \deprecated CoreDebug DHCSR: C_SNAPSTALL Position */ +#define CoreDebug_DHCSR_C_SNAPSTALL_Msk (1UL << CoreDebug_DHCSR_C_SNAPSTALL_Pos) /*!< \deprecated CoreDebug DHCSR: C_SNAPSTALL Mask */ + +#define CoreDebug_DHCSR_C_MASKINTS_Pos 3U /*!< \deprecated CoreDebug DHCSR: C_MASKINTS Position */ +#define CoreDebug_DHCSR_C_MASKINTS_Msk (1UL << CoreDebug_DHCSR_C_MASKINTS_Pos) /*!< \deprecated CoreDebug DHCSR: C_MASKINTS Mask */ + +#define CoreDebug_DHCSR_C_STEP_Pos 2U /*!< \deprecated CoreDebug DHCSR: C_STEP Position */ +#define CoreDebug_DHCSR_C_STEP_Msk (1UL << CoreDebug_DHCSR_C_STEP_Pos) /*!< \deprecated CoreDebug DHCSR: C_STEP Mask */ + +#define CoreDebug_DHCSR_C_HALT_Pos 1U /*!< \deprecated CoreDebug DHCSR: C_HALT Position */ +#define CoreDebug_DHCSR_C_HALT_Msk (1UL << CoreDebug_DHCSR_C_HALT_Pos) /*!< \deprecated CoreDebug DHCSR: C_HALT Mask */ + +#define CoreDebug_DHCSR_C_DEBUGEN_Pos 0U /*!< \deprecated CoreDebug DHCSR: C_DEBUGEN Position */ +#define CoreDebug_DHCSR_C_DEBUGEN_Msk (1UL /*<< CoreDebug_DHCSR_C_DEBUGEN_Pos*/) /*!< \deprecated CoreDebug DHCSR: C_DEBUGEN Mask */ + +/* Debug Core Register Selector Register Definitions */ +#define CoreDebug_DCRSR_REGWnR_Pos 16U /*!< \deprecated CoreDebug DCRSR: REGWnR Position */ +#define CoreDebug_DCRSR_REGWnR_Msk (1UL << CoreDebug_DCRSR_REGWnR_Pos) /*!< \deprecated CoreDebug DCRSR: REGWnR Mask */ + +#define CoreDebug_DCRSR_REGSEL_Pos 0U /*!< \deprecated CoreDebug DCRSR: REGSEL Position */ +#define CoreDebug_DCRSR_REGSEL_Msk (0x1FUL /*<< CoreDebug_DCRSR_REGSEL_Pos*/) /*!< \deprecated CoreDebug DCRSR: REGSEL Mask */ + +/* Debug Exception and Monitor Control Register Definitions */ +#define CoreDebug_DEMCR_TRCENA_Pos 24U /*!< \deprecated CoreDebug DEMCR: TRCENA Position */ +#define CoreDebug_DEMCR_TRCENA_Msk (1UL << CoreDebug_DEMCR_TRCENA_Pos) /*!< \deprecated CoreDebug DEMCR: TRCENA Mask */ + +#define CoreDebug_DEMCR_MON_REQ_Pos 19U /*!< \deprecated CoreDebug DEMCR: MON_REQ Position */ +#define CoreDebug_DEMCR_MON_REQ_Msk (1UL << CoreDebug_DEMCR_MON_REQ_Pos) /*!< \deprecated CoreDebug DEMCR: MON_REQ Mask */ + +#define CoreDebug_DEMCR_MON_STEP_Pos 18U /*!< \deprecated CoreDebug DEMCR: MON_STEP Position */ +#define CoreDebug_DEMCR_MON_STEP_Msk (1UL << CoreDebug_DEMCR_MON_STEP_Pos) /*!< \deprecated CoreDebug DEMCR: MON_STEP Mask */ + +#define CoreDebug_DEMCR_MON_PEND_Pos 17U /*!< \deprecated CoreDebug DEMCR: MON_PEND Position */ +#define CoreDebug_DEMCR_MON_PEND_Msk (1UL << CoreDebug_DEMCR_MON_PEND_Pos) /*!< \deprecated CoreDebug DEMCR: MON_PEND Mask */ + +#define CoreDebug_DEMCR_MON_EN_Pos 16U /*!< \deprecated CoreDebug DEMCR: MON_EN Position */ +#define CoreDebug_DEMCR_MON_EN_Msk (1UL << CoreDebug_DEMCR_MON_EN_Pos) /*!< \deprecated CoreDebug DEMCR: MON_EN Mask */ + +#define CoreDebug_DEMCR_VC_HARDERR_Pos 10U /*!< \deprecated CoreDebug DEMCR: VC_HARDERR Position */ +#define CoreDebug_DEMCR_VC_HARDERR_Msk (1UL << CoreDebug_DEMCR_VC_HARDERR_Pos) /*!< \deprecated CoreDebug DEMCR: VC_HARDERR Mask */ + +#define CoreDebug_DEMCR_VC_INTERR_Pos 9U /*!< \deprecated CoreDebug DEMCR: VC_INTERR Position */ +#define CoreDebug_DEMCR_VC_INTERR_Msk (1UL << CoreDebug_DEMCR_VC_INTERR_Pos) /*!< \deprecated CoreDebug DEMCR: VC_INTERR Mask */ + +#define CoreDebug_DEMCR_VC_BUSERR_Pos 8U /*!< \deprecated CoreDebug DEMCR: VC_BUSERR Position */ +#define CoreDebug_DEMCR_VC_BUSERR_Msk (1UL << CoreDebug_DEMCR_VC_BUSERR_Pos) /*!< \deprecated CoreDebug DEMCR: VC_BUSERR Mask */ + +#define CoreDebug_DEMCR_VC_STATERR_Pos 7U /*!< \deprecated CoreDebug DEMCR: VC_STATERR Position */ +#define CoreDebug_DEMCR_VC_STATERR_Msk (1UL << CoreDebug_DEMCR_VC_STATERR_Pos) /*!< \deprecated CoreDebug DEMCR: VC_STATERR Mask */ + +#define CoreDebug_DEMCR_VC_CHKERR_Pos 6U /*!< \deprecated CoreDebug DEMCR: VC_CHKERR Position */ +#define CoreDebug_DEMCR_VC_CHKERR_Msk (1UL << CoreDebug_DEMCR_VC_CHKERR_Pos) /*!< \deprecated CoreDebug DEMCR: VC_CHKERR Mask */ + +#define CoreDebug_DEMCR_VC_NOCPERR_Pos 5U /*!< \deprecated CoreDebug DEMCR: VC_NOCPERR Position */ +#define CoreDebug_DEMCR_VC_NOCPERR_Msk (1UL << CoreDebug_DEMCR_VC_NOCPERR_Pos) /*!< \deprecated CoreDebug DEMCR: VC_NOCPERR Mask */ + +#define CoreDebug_DEMCR_VC_MMERR_Pos 4U /*!< \deprecated CoreDebug DEMCR: VC_MMERR Position */ +#define CoreDebug_DEMCR_VC_MMERR_Msk (1UL << CoreDebug_DEMCR_VC_MMERR_Pos) /*!< \deprecated CoreDebug DEMCR: VC_MMERR Mask */ + +#define CoreDebug_DEMCR_VC_CORERESET_Pos 0U /*!< \deprecated CoreDebug DEMCR: VC_CORERESET Position */ +#define CoreDebug_DEMCR_VC_CORERESET_Msk (1UL /*<< CoreDebug_DEMCR_VC_CORERESET_Pos*/) /*!< \deprecated CoreDebug DEMCR: VC_CORERESET Mask */ + +/* Debug Set Clear Exception and Monitor Control Register Definitions */ +#define CoreDebug_DSCEMCR_CLR_MON_REQ_Pos 19U /*!< \deprecated CoreDebug DSCEMCR: CLR_MON_REQ, Position */ +#define CoreDebug_DSCEMCR_CLR_MON_REQ_Msk (1UL << CoreDebug_DSCEMCR_CLR_MON_REQ_Pos) /*!< \deprecated CoreDebug DSCEMCR: CLR_MON_REQ, Mask */ + +#define CoreDebug_DSCEMCR_CLR_MON_PEND_Pos 17U /*!< \deprecated CoreDebug DSCEMCR: CLR_MON_PEND, Position */ +#define CoreDebug_DSCEMCR_CLR_MON_PEND_Msk (1UL << CoreDebug_DSCEMCR_CLR_MON_PEND_Pos) /*!< \deprecated CoreDebug DSCEMCR: CLR_MON_PEND, Mask */ + +#define CoreDebug_DSCEMCR_SET_MON_REQ_Pos 3U /*!< \deprecated CoreDebug DSCEMCR: SET_MON_REQ, Position */ +#define CoreDebug_DSCEMCR_SET_MON_REQ_Msk (1UL << CoreDebug_DSCEMCR_SET_MON_REQ_Pos) /*!< \deprecated CoreDebug DSCEMCR: SET_MON_REQ, Mask */ + +#define CoreDebug_DSCEMCR_SET_MON_PEND_Pos 1U /*!< \deprecated CoreDebug DSCEMCR: SET_MON_PEND, Position */ +#define CoreDebug_DSCEMCR_SET_MON_PEND_Msk (1UL << CoreDebug_DSCEMCR_SET_MON_PEND_Pos) /*!< \deprecated CoreDebug DSCEMCR: SET_MON_PEND, Mask */ + +/* Debug Authentication Control Register Definitions */ +#define CoreDebug_DAUTHCTRL_UIDEN_Pos 10U /*!< \deprecated CoreDebug DAUTHCTRL: UIDEN, Position */ +#define CoreDebug_DAUTHCTRL_UIDEN_Msk (1UL << CoreDebug_DAUTHCTRL_UIDEN_Pos) /*!< \deprecated CoreDebug DAUTHCTRL: UIDEN, Mask */ + +#define CoreDebug_DAUTHCTRL_UIDAPEN_Pos 9U /*!< \deprecated CoreDebug DAUTHCTRL: UIDAPEN, Position */ +#define CoreDebug_DAUTHCTRL_UIDAPEN_Msk (1UL << CoreDebug_DAUTHCTRL_UIDAPEN_Pos) /*!< \deprecated CoreDebug DAUTHCTRL: UIDAPEN, Mask */ + +#define CoreDebug_DAUTHCTRL_FSDMA_Pos 8U /*!< \deprecated CoreDebug DAUTHCTRL: FSDMA, Position */ +#define CoreDebug_DAUTHCTRL_FSDMA_Msk (1UL << CoreDebug_DAUTHCTRL_FSDMA_Pos) /*!< \deprecated CoreDebug DAUTHCTRL: FSDMA, Mask */ + +#define CoreDebug_DAUTHCTRL_INTSPNIDEN_Pos 3U /*!< \deprecated CoreDebug DAUTHCTRL: INTSPNIDEN, Position */ +#define CoreDebug_DAUTHCTRL_INTSPNIDEN_Msk (1UL << CoreDebug_DAUTHCTRL_INTSPNIDEN_Pos) /*!< \deprecated CoreDebug DAUTHCTRL: INTSPNIDEN, Mask */ + +#define CoreDebug_DAUTHCTRL_SPNIDENSEL_Pos 2U /*!< \deprecated CoreDebug DAUTHCTRL: SPNIDENSEL Position */ +#define CoreDebug_DAUTHCTRL_SPNIDENSEL_Msk (1UL << CoreDebug_DAUTHCTRL_SPNIDENSEL_Pos) /*!< \deprecated CoreDebug DAUTHCTRL: SPNIDENSEL Mask */ + +#define CoreDebug_DAUTHCTRL_INTSPIDEN_Pos 1U /*!< \deprecated CoreDebug DAUTHCTRL: INTSPIDEN Position */ +#define CoreDebug_DAUTHCTRL_INTSPIDEN_Msk (1UL << CoreDebug_DAUTHCTRL_INTSPIDEN_Pos) /*!< \deprecated CoreDebug DAUTHCTRL: INTSPIDEN Mask */ + +#define CoreDebug_DAUTHCTRL_SPIDENSEL_Pos 0U /*!< \deprecated CoreDebug DAUTHCTRL: SPIDENSEL Position */ +#define CoreDebug_DAUTHCTRL_SPIDENSEL_Msk (1UL /*<< CoreDebug_DAUTHCTRL_SPIDENSEL_Pos*/) /*!< \deprecated CoreDebug DAUTHCTRL: SPIDENSEL Mask */ + +/* Debug Security Control and Status Register Definitions */ +#define CoreDebug_DSCSR_CDS_Pos 16U /*!< \deprecated CoreDebug DSCSR: CDS Position */ +#define CoreDebug_DSCSR_CDS_Msk (1UL << CoreDebug_DSCSR_CDS_Pos) /*!< \deprecated CoreDebug DSCSR: CDS Mask */ + +#define CoreDebug_DSCSR_SBRSEL_Pos 1U /*!< \deprecated CoreDebug DSCSR: SBRSEL Position */ +#define CoreDebug_DSCSR_SBRSEL_Msk (1UL << CoreDebug_DSCSR_SBRSEL_Pos) /*!< \deprecated CoreDebug DSCSR: SBRSEL Mask */ + +#define CoreDebug_DSCSR_SBRSELEN_Pos 0U /*!< \deprecated CoreDebug DSCSR: SBRSELEN Position */ +#define CoreDebug_DSCSR_SBRSELEN_Msk (1UL /*<< CoreDebug_DSCSR_SBRSELEN_Pos*/) /*!< \deprecated CoreDebug DSCSR: SBRSELEN Mask */ + +/*@} end of group CMSIS_CoreDebug */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_DCB Debug Control Block + \brief Type definitions for the Debug Control Block Registers + @{ + */ + +/** + \brief Structure type to access the Debug Control Block Registers (DCB). + */ +typedef struct +{ + __IOM uint32_t DHCSR; /*!< Offset: 0x000 (R/W) Debug Halting Control and Status Register */ + __OM uint32_t DCRSR; /*!< Offset: 0x004 ( /W) Debug Core Register Selector Register */ + __IOM uint32_t DCRDR; /*!< Offset: 0x008 (R/W) Debug Core Register Data Register */ + __IOM uint32_t DEMCR; /*!< Offset: 0x00C (R/W) Debug Exception and Monitor Control Register */ + __OM uint32_t DSCEMCR; /*!< Offset: 0x010 ( /W) Debug Set Clear Exception and Monitor Control Register */ + __IOM uint32_t DAUTHCTRL; /*!< Offset: 0x014 (R/W) Debug Authentication Control Register */ + __IOM uint32_t DSCSR; /*!< Offset: 0x018 (R/W) Debug Security Control and Status Register */ +} DCB_Type; + +/* DHCSR, Debug Halting Control and Status Register Definitions */ +#define DCB_DHCSR_DBGKEY_Pos 16U /*!< DCB DHCSR: Debug key Position */ +#define DCB_DHCSR_DBGKEY_Msk (0xFFFFUL << DCB_DHCSR_DBGKEY_Pos) /*!< DCB DHCSR: Debug key Mask */ + +#define DCB_DHCSR_S_RESTART_ST_Pos 26U /*!< DCB DHCSR: Restart sticky status Position */ +#define DCB_DHCSR_S_RESTART_ST_Msk (0x1UL << DCB_DHCSR_S_RESTART_ST_Pos) /*!< DCB DHCSR: Restart sticky status Mask */ + +#define DCB_DHCSR_S_RESET_ST_Pos 25U /*!< DCB DHCSR: Reset sticky status Position */ +#define DCB_DHCSR_S_RESET_ST_Msk (0x1UL << DCB_DHCSR_S_RESET_ST_Pos) /*!< DCB DHCSR: Reset sticky status Mask */ + +#define DCB_DHCSR_S_RETIRE_ST_Pos 24U /*!< DCB DHCSR: Retire sticky status Position */ +#define DCB_DHCSR_S_RETIRE_ST_Msk (0x1UL << DCB_DHCSR_S_RETIRE_ST_Pos) /*!< DCB DHCSR: Retire sticky status Mask */ + +#define DCB_DHCSR_S_FPD_Pos 23U /*!< DCB DHCSR: Floating-point registers Debuggable Position */ +#define DCB_DHCSR_S_FPD_Msk (0x1UL << DCB_DHCSR_S_FPD_Pos) /*!< DCB DHCSR: Floating-point registers Debuggable Mask */ + +#define DCB_DHCSR_S_SUIDE_Pos 22U /*!< DCB DHCSR: Secure unprivileged halting debug enabled Position */ +#define DCB_DHCSR_S_SUIDE_Msk (0x1UL << DCB_DHCSR_S_SUIDE_Pos) /*!< DCB DHCSR: Secure unprivileged halting debug enabled Mask */ + +#define DCB_DHCSR_S_NSUIDE_Pos 21U /*!< DCB DHCSR: Non-secure unprivileged halting debug enabled Position */ +#define DCB_DHCSR_S_NSUIDE_Msk (0x1UL << DCB_DHCSR_S_NSUIDE_Pos) /*!< DCB DHCSR: Non-secure unprivileged halting debug enabled Mask */ + +#define DCB_DHCSR_S_SDE_Pos 20U /*!< DCB DHCSR: Secure debug enabled Position */ +#define DCB_DHCSR_S_SDE_Msk (0x1UL << DCB_DHCSR_S_SDE_Pos) /*!< DCB DHCSR: Secure debug enabled Mask */ + +#define DCB_DHCSR_S_LOCKUP_Pos 19U /*!< DCB DHCSR: Lockup status Position */ +#define DCB_DHCSR_S_LOCKUP_Msk (0x1UL << DCB_DHCSR_S_LOCKUP_Pos) /*!< DCB DHCSR: Lockup status Mask */ + +#define DCB_DHCSR_S_SLEEP_Pos 18U /*!< DCB DHCSR: Sleeping status Position */ +#define DCB_DHCSR_S_SLEEP_Msk (0x1UL << DCB_DHCSR_S_SLEEP_Pos) /*!< DCB DHCSR: Sleeping status Mask */ + +#define DCB_DHCSR_S_HALT_Pos 17U /*!< DCB DHCSR: Halted status Position */ +#define DCB_DHCSR_S_HALT_Msk (0x1UL << DCB_DHCSR_S_HALT_Pos) /*!< DCB DHCSR: Halted status Mask */ + +#define DCB_DHCSR_S_REGRDY_Pos 16U /*!< DCB DHCSR: Register ready status Position */ +#define DCB_DHCSR_S_REGRDY_Msk (0x1UL << DCB_DHCSR_S_REGRDY_Pos) /*!< DCB DHCSR: Register ready status Mask */ + +#define DCB_DHCSR_C_PMOV_Pos 6U /*!< DCB DHCSR: Halt on PMU overflow control Position */ +#define DCB_DHCSR_C_PMOV_Msk (0x1UL << DCB_DHCSR_C_PMOV_Pos) /*!< DCB DHCSR: Halt on PMU overflow control Mask */ + +#define DCB_DHCSR_C_SNAPSTALL_Pos 5U /*!< DCB DHCSR: Snap stall control Position */ +#define DCB_DHCSR_C_SNAPSTALL_Msk (0x1UL << DCB_DHCSR_C_SNAPSTALL_Pos) /*!< DCB DHCSR: Snap stall control Mask */ + +#define DCB_DHCSR_C_MASKINTS_Pos 3U /*!< DCB DHCSR: Mask interrupts control Position */ +#define DCB_DHCSR_C_MASKINTS_Msk (0x1UL << DCB_DHCSR_C_MASKINTS_Pos) /*!< DCB DHCSR: Mask interrupts control Mask */ + +#define DCB_DHCSR_C_STEP_Pos 2U /*!< DCB DHCSR: Step control Position */ +#define DCB_DHCSR_C_STEP_Msk (0x1UL << DCB_DHCSR_C_STEP_Pos) /*!< DCB DHCSR: Step control Mask */ + +#define DCB_DHCSR_C_HALT_Pos 1U /*!< DCB DHCSR: Halt control Position */ +#define DCB_DHCSR_C_HALT_Msk (0x1UL << DCB_DHCSR_C_HALT_Pos) /*!< DCB DHCSR: Halt control Mask */ + +#define DCB_DHCSR_C_DEBUGEN_Pos 0U /*!< DCB DHCSR: Debug enable control Position */ +#define DCB_DHCSR_C_DEBUGEN_Msk (0x1UL /*<< DCB_DHCSR_C_DEBUGEN_Pos*/) /*!< DCB DHCSR: Debug enable control Mask */ + +/* DCRSR, Debug Core Register Select Register Definitions */ +#define DCB_DCRSR_REGWnR_Pos 16U /*!< DCB DCRSR: Register write/not-read Position */ +#define DCB_DCRSR_REGWnR_Msk (0x1UL << DCB_DCRSR_REGWnR_Pos) /*!< DCB DCRSR: Register write/not-read Mask */ + +#define DCB_DCRSR_REGSEL_Pos 0U /*!< DCB DCRSR: Register selector Position */ +#define DCB_DCRSR_REGSEL_Msk (0x7FUL /*<< DCB_DCRSR_REGSEL_Pos*/) /*!< DCB DCRSR: Register selector Mask */ + +/* DCRDR, Debug Core Register Data Register Definitions */ +#define DCB_DCRDR_DBGTMP_Pos 0U /*!< DCB DCRDR: Data temporary buffer Position */ +#define DCB_DCRDR_DBGTMP_Msk (0xFFFFFFFFUL /*<< DCB_DCRDR_DBGTMP_Pos*/) /*!< DCB DCRDR: Data temporary buffer Mask */ + +/* DEMCR, Debug Exception and Monitor Control Register Definitions */ +#define DCB_DEMCR_TRCENA_Pos 24U /*!< DCB DEMCR: Trace enable Position */ +#define DCB_DEMCR_TRCENA_Msk (0x1UL << DCB_DEMCR_TRCENA_Pos) /*!< DCB DEMCR: Trace enable Mask */ + +#define DCB_DEMCR_MONPRKEY_Pos 23U /*!< DCB DEMCR: Monitor pend req key Position */ +#define DCB_DEMCR_MONPRKEY_Msk (0x1UL << DCB_DEMCR_MONPRKEY_Pos) /*!< DCB DEMCR: Monitor pend req key Mask */ + +#define DCB_DEMCR_UMON_EN_Pos 21U /*!< DCB DEMCR: Unprivileged monitor enable Position */ +#define DCB_DEMCR_UMON_EN_Msk (0x1UL << DCB_DEMCR_UMON_EN_Pos) /*!< DCB DEMCR: Unprivileged monitor enable Mask */ + +#define DCB_DEMCR_SDME_Pos 20U /*!< DCB DEMCR: Secure DebugMonitor enable Position */ +#define DCB_DEMCR_SDME_Msk (0x1UL << DCB_DEMCR_SDME_Pos) /*!< DCB DEMCR: Secure DebugMonitor enable Mask */ + +#define DCB_DEMCR_MON_REQ_Pos 19U /*!< DCB DEMCR: Monitor request Position */ +#define DCB_DEMCR_MON_REQ_Msk (0x1UL << DCB_DEMCR_MON_REQ_Pos) /*!< DCB DEMCR: Monitor request Mask */ + +#define DCB_DEMCR_MON_STEP_Pos 18U /*!< DCB DEMCR: Monitor step Position */ +#define DCB_DEMCR_MON_STEP_Msk (0x1UL << DCB_DEMCR_MON_STEP_Pos) /*!< DCB DEMCR: Monitor step Mask */ + +#define DCB_DEMCR_MON_PEND_Pos 17U /*!< DCB DEMCR: Monitor pend Position */ +#define DCB_DEMCR_MON_PEND_Msk (0x1UL << DCB_DEMCR_MON_PEND_Pos) /*!< DCB DEMCR: Monitor pend Mask */ + +#define DCB_DEMCR_MON_EN_Pos 16U /*!< DCB DEMCR: Monitor enable Position */ +#define DCB_DEMCR_MON_EN_Msk (0x1UL << DCB_DEMCR_MON_EN_Pos) /*!< DCB DEMCR: Monitor enable Mask */ + +#define DCB_DEMCR_VC_SFERR_Pos 11U /*!< DCB DEMCR: Vector Catch SecureFault Position */ +#define DCB_DEMCR_VC_SFERR_Msk (0x1UL << DCB_DEMCR_VC_SFERR_Pos) /*!< DCB DEMCR: Vector Catch SecureFault Mask */ + +#define DCB_DEMCR_VC_HARDERR_Pos 10U /*!< DCB DEMCR: Vector Catch HardFault errors Position */ +#define DCB_DEMCR_VC_HARDERR_Msk (0x1UL << DCB_DEMCR_VC_HARDERR_Pos) /*!< DCB DEMCR: Vector Catch HardFault errors Mask */ + +#define DCB_DEMCR_VC_INTERR_Pos 9U /*!< DCB DEMCR: Vector Catch interrupt errors Position */ +#define DCB_DEMCR_VC_INTERR_Msk (0x1UL << DCB_DEMCR_VC_INTERR_Pos) /*!< DCB DEMCR: Vector Catch interrupt errors Mask */ + +#define DCB_DEMCR_VC_BUSERR_Pos 8U /*!< DCB DEMCR: Vector Catch BusFault errors Position */ +#define DCB_DEMCR_VC_BUSERR_Msk (0x1UL << DCB_DEMCR_VC_BUSERR_Pos) /*!< DCB DEMCR: Vector Catch BusFault errors Mask */ + +#define DCB_DEMCR_VC_STATERR_Pos 7U /*!< DCB DEMCR: Vector Catch state errors Position */ +#define DCB_DEMCR_VC_STATERR_Msk (0x1UL << DCB_DEMCR_VC_STATERR_Pos) /*!< DCB DEMCR: Vector Catch state errors Mask */ + +#define DCB_DEMCR_VC_CHKERR_Pos 6U /*!< DCB DEMCR: Vector Catch check errors Position */ +#define DCB_DEMCR_VC_CHKERR_Msk (0x1UL << DCB_DEMCR_VC_CHKERR_Pos) /*!< DCB DEMCR: Vector Catch check errors Mask */ + +#define DCB_DEMCR_VC_NOCPERR_Pos 5U /*!< DCB DEMCR: Vector Catch NOCP errors Position */ +#define DCB_DEMCR_VC_NOCPERR_Msk (0x1UL << DCB_DEMCR_VC_NOCPERR_Pos) /*!< DCB DEMCR: Vector Catch NOCP errors Mask */ + +#define DCB_DEMCR_VC_MMERR_Pos 4U /*!< DCB DEMCR: Vector Catch MemManage errors Position */ +#define DCB_DEMCR_VC_MMERR_Msk (0x1UL << DCB_DEMCR_VC_MMERR_Pos) /*!< DCB DEMCR: Vector Catch MemManage errors Mask */ + +#define DCB_DEMCR_VC_CORERESET_Pos 0U /*!< DCB DEMCR: Vector Catch Core reset Position */ +#define DCB_DEMCR_VC_CORERESET_Msk (0x1UL /*<< DCB_DEMCR_VC_CORERESET_Pos*/) /*!< DCB DEMCR: Vector Catch Core reset Mask */ + +/* DSCEMCR, Debug Set Clear Exception and Monitor Control Register Definitions */ +#define DCB_DSCEMCR_CLR_MON_REQ_Pos 19U /*!< DCB DSCEMCR: Clear monitor request Position */ +#define DCB_DSCEMCR_CLR_MON_REQ_Msk (0x1UL << DCB_DSCEMCR_CLR_MON_REQ_Pos) /*!< DCB DSCEMCR: Clear monitor request Mask */ + +#define DCB_DSCEMCR_CLR_MON_PEND_Pos 17U /*!< DCB DSCEMCR: Clear monitor pend Position */ +#define DCB_DSCEMCR_CLR_MON_PEND_Msk (0x1UL << DCB_DSCEMCR_CLR_MON_PEND_Pos) /*!< DCB DSCEMCR: Clear monitor pend Mask */ + +#define DCB_DSCEMCR_SET_MON_REQ_Pos 3U /*!< DCB DSCEMCR: Set monitor request Position */ +#define DCB_DSCEMCR_SET_MON_REQ_Msk (0x1UL << DCB_DSCEMCR_SET_MON_REQ_Pos) /*!< DCB DSCEMCR: Set monitor request Mask */ + +#define DCB_DSCEMCR_SET_MON_PEND_Pos 1U /*!< DCB DSCEMCR: Set monitor pend Position */ +#define DCB_DSCEMCR_SET_MON_PEND_Msk (0x1UL << DCB_DSCEMCR_SET_MON_PEND_Pos) /*!< DCB DSCEMCR: Set monitor pend Mask */ + +/* DAUTHCTRL, Debug Authentication Control Register Definitions */ +#define DCB_DAUTHCTRL_UIDEN_Pos 10U /*!< DCB DAUTHCTRL: Unprivileged Invasive Debug Enable Position */ +#define DCB_DAUTHCTRL_UIDEN_Msk (0x1UL << DCB_DAUTHCTRL_UIDEN_Pos) /*!< DCB DAUTHCTRL: Unprivileged Invasive Debug Enable Mask */ + +#define DCB_DAUTHCTRL_UIDAPEN_Pos 9U /*!< DCB DAUTHCTRL: Unprivileged Invasive DAP Access Enable Position */ +#define DCB_DAUTHCTRL_UIDAPEN_Msk (0x1UL << DCB_DAUTHCTRL_UIDAPEN_Pos) /*!< DCB DAUTHCTRL: Unprivileged Invasive DAP Access Enable Mask */ + +#define DCB_DAUTHCTRL_FSDMA_Pos 8U /*!< DCB DAUTHCTRL: Force Secure DebugMonitor Allowed Position */ +#define DCB_DAUTHCTRL_FSDMA_Msk (0x1UL << DCB_DAUTHCTRL_FSDMA_Pos) /*!< DCB DAUTHCTRL: Force Secure DebugMonitor Allowed Mask */ + +#define DCB_DAUTHCTRL_INTSPNIDEN_Pos 3U /*!< DCB DAUTHCTRL: Internal Secure non-invasive debug enable Position */ +#define DCB_DAUTHCTRL_INTSPNIDEN_Msk (0x1UL << DCB_DAUTHCTRL_INTSPNIDEN_Pos) /*!< DCB DAUTHCTRL: Internal Secure non-invasive debug enable Mask */ + +#define DCB_DAUTHCTRL_SPNIDENSEL_Pos 2U /*!< DCB DAUTHCTRL: Secure non-invasive debug enable select Position */ +#define DCB_DAUTHCTRL_SPNIDENSEL_Msk (0x1UL << DCB_DAUTHCTRL_SPNIDENSEL_Pos) /*!< DCB DAUTHCTRL: Secure non-invasive debug enable select Mask */ + +#define DCB_DAUTHCTRL_INTSPIDEN_Pos 1U /*!< DCB DAUTHCTRL: Internal Secure invasive debug enable Position */ +#define DCB_DAUTHCTRL_INTSPIDEN_Msk (0x1UL << DCB_DAUTHCTRL_INTSPIDEN_Pos) /*!< DCB DAUTHCTRL: Internal Secure invasive debug enable Mask */ + +#define DCB_DAUTHCTRL_SPIDENSEL_Pos 0U /*!< DCB DAUTHCTRL: Secure invasive debug enable select Position */ +#define DCB_DAUTHCTRL_SPIDENSEL_Msk (0x1UL /*<< DCB_DAUTHCTRL_SPIDENSEL_Pos*/) /*!< DCB DAUTHCTRL: Secure invasive debug enable select Mask */ + +/* DSCSR, Debug Security Control and Status Register Definitions */ +#define DCB_DSCSR_CDSKEY_Pos 17U /*!< DCB DSCSR: CDS write-enable key Position */ +#define DCB_DSCSR_CDSKEY_Msk (0x1UL << DCB_DSCSR_CDSKEY_Pos) /*!< DCB DSCSR: CDS write-enable key Mask */ + +#define DCB_DSCSR_CDS_Pos 16U /*!< DCB DSCSR: Current domain Secure Position */ +#define DCB_DSCSR_CDS_Msk (0x1UL << DCB_DSCSR_CDS_Pos) /*!< DCB DSCSR: Current domain Secure Mask */ + +#define DCB_DSCSR_SBRSEL_Pos 1U /*!< DCB DSCSR: Secure banked register select Position */ +#define DCB_DSCSR_SBRSEL_Msk (0x1UL << DCB_DSCSR_SBRSEL_Pos) /*!< DCB DSCSR: Secure banked register select Mask */ + +#define DCB_DSCSR_SBRSELEN_Pos 0U /*!< DCB DSCSR: Secure banked register select enable Position */ +#define DCB_DSCSR_SBRSELEN_Msk (0x1UL /*<< DCB_DSCSR_SBRSELEN_Pos*/) /*!< DCB DSCSR: Secure banked register select enable Mask */ + +/*@} end of group CMSIS_DCB */ + + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_DIB Debug Identification Block + \brief Type definitions for the Debug Identification Block Registers + @{ + */ + +/** + \brief Structure type to access the Debug Identification Block Registers (DIB). + */ +typedef struct +{ + __OM uint32_t DLAR; /*!< Offset: 0x000 ( /W) SCS Software Lock Access Register */ + __IM uint32_t DLSR; /*!< Offset: 0x004 (R/ ) SCS Software Lock Status Register */ + __IM uint32_t DAUTHSTATUS; /*!< Offset: 0x008 (R/ ) Debug Authentication Status Register */ + __IM uint32_t DDEVARCH; /*!< Offset: 0x00C (R/ ) SCS Device Architecture Register */ + __IM uint32_t DDEVTYPE; /*!< Offset: 0x010 (R/ ) SCS Device Type Register */ +} DIB_Type; + +/* DLAR, SCS Software Lock Access Register Definitions */ +#define DIB_DLAR_KEY_Pos 0U /*!< DIB DLAR: KEY Position */ +#define DIB_DLAR_KEY_Msk (0xFFFFFFFFUL /*<< DIB_DLAR_KEY_Pos */) /*!< DIB DLAR: KEY Mask */ + +/* DLSR, SCS Software Lock Status Register Definitions */ +#define DIB_DLSR_nTT_Pos 2U /*!< DIB DLSR: Not thirty-two bit Position */ +#define DIB_DLSR_nTT_Msk (0x1UL << DIB_DLSR_nTT_Pos ) /*!< DIB DLSR: Not thirty-two bit Mask */ + +#define DIB_DLSR_SLK_Pos 1U /*!< DIB DLSR: Software Lock status Position */ +#define DIB_DLSR_SLK_Msk (0x1UL << DIB_DLSR_SLK_Pos ) /*!< DIB DLSR: Software Lock status Mask */ + +#define DIB_DLSR_SLI_Pos 0U /*!< DIB DLSR: Software Lock implemented Position */ +#define DIB_DLSR_SLI_Msk (0x1UL /*<< DIB_DLSR_SLI_Pos*/) /*!< DIB DLSR: Software Lock implemented Mask */ + +/* DAUTHSTATUS, Debug Authentication Status Register Definitions */ +#define DIB_DAUTHSTATUS_SUNID_Pos 22U /*!< DIB DAUTHSTATUS: Secure Unprivileged Non-invasive Debug Allowed Position */ +#define DIB_DAUTHSTATUS_SUNID_Msk (0x3UL << DIB_DAUTHSTATUS_SUNID_Pos ) /*!< DIB DAUTHSTATUS: Secure Unprivileged Non-invasive Debug Allowed Mask */ + +#define DIB_DAUTHSTATUS_SUID_Pos 20U /*!< DIB DAUTHSTATUS: Secure Unprivileged Invasive Debug Allowed Position */ +#define DIB_DAUTHSTATUS_SUID_Msk (0x3UL << DIB_DAUTHSTATUS_SUID_Pos ) /*!< DIB DAUTHSTATUS: Secure Unprivileged Invasive Debug Allowed Mask */ + +#define DIB_DAUTHSTATUS_NSUNID_Pos 18U /*!< DIB DAUTHSTATUS: Non-secure Unprivileged Non-invasive Debug Allo Position */ +#define DIB_DAUTHSTATUS_NSUNID_Msk (0x3UL << DIB_DAUTHSTATUS_NSUNID_Pos ) /*!< DIB DAUTHSTATUS: Non-secure Unprivileged Non-invasive Debug Allo Mask */ + +#define DIB_DAUTHSTATUS_NSUID_Pos 16U /*!< DIB DAUTHSTATUS: Non-secure Unprivileged Invasive Debug Allowed Position */ +#define DIB_DAUTHSTATUS_NSUID_Msk (0x3UL << DIB_DAUTHSTATUS_NSUID_Pos ) /*!< DIB DAUTHSTATUS: Non-secure Unprivileged Invasive Debug Allowed Mask */ + +#define DIB_DAUTHSTATUS_SNID_Pos 6U /*!< DIB DAUTHSTATUS: Secure Non-invasive Debug Position */ +#define DIB_DAUTHSTATUS_SNID_Msk (0x3UL << DIB_DAUTHSTATUS_SNID_Pos ) /*!< DIB DAUTHSTATUS: Secure Non-invasive Debug Mask */ + +#define DIB_DAUTHSTATUS_SID_Pos 4U /*!< DIB DAUTHSTATUS: Secure Invasive Debug Position */ +#define DIB_DAUTHSTATUS_SID_Msk (0x3UL << DIB_DAUTHSTATUS_SID_Pos ) /*!< DIB DAUTHSTATUS: Secure Invasive Debug Mask */ + +#define DIB_DAUTHSTATUS_NSNID_Pos 2U /*!< DIB DAUTHSTATUS: Non-secure Non-invasive Debug Position */ +#define DIB_DAUTHSTATUS_NSNID_Msk (0x3UL << DIB_DAUTHSTATUS_NSNID_Pos ) /*!< DIB DAUTHSTATUS: Non-secure Non-invasive Debug Mask */ + +#define DIB_DAUTHSTATUS_NSID_Pos 0U /*!< DIB DAUTHSTATUS: Non-secure Invasive Debug Position */ +#define DIB_DAUTHSTATUS_NSID_Msk (0x3UL /*<< DIB_DAUTHSTATUS_NSID_Pos*/) /*!< DIB DAUTHSTATUS: Non-secure Invasive Debug Mask */ + +/* DDEVARCH, SCS Device Architecture Register Definitions */ +#define DIB_DDEVARCH_ARCHITECT_Pos 21U /*!< DIB DDEVARCH: Architect Position */ +#define DIB_DDEVARCH_ARCHITECT_Msk (0x7FFUL << DIB_DDEVARCH_ARCHITECT_Pos ) /*!< DIB DDEVARCH: Architect Mask */ + +#define DIB_DDEVARCH_PRESENT_Pos 20U /*!< DIB DDEVARCH: DEVARCH Present Position */ +#define DIB_DDEVARCH_PRESENT_Msk (0x1FUL << DIB_DDEVARCH_PRESENT_Pos ) /*!< DIB DDEVARCH: DEVARCH Present Mask */ + +#define DIB_DDEVARCH_REVISION_Pos 16U /*!< DIB DDEVARCH: Revision Position */ +#define DIB_DDEVARCH_REVISION_Msk (0xFUL << DIB_DDEVARCH_REVISION_Pos ) /*!< DIB DDEVARCH: Revision Mask */ + +#define DIB_DDEVARCH_ARCHVER_Pos 12U /*!< DIB DDEVARCH: Architecture Version Position */ +#define DIB_DDEVARCH_ARCHVER_Msk (0xFUL << DIB_DDEVARCH_ARCHVER_Pos ) /*!< DIB DDEVARCH: Architecture Version Mask */ + +#define DIB_DDEVARCH_ARCHPART_Pos 0U /*!< DIB DDEVARCH: Architecture Part Position */ +#define DIB_DDEVARCH_ARCHPART_Msk (0xFFFUL /*<< DIB_DDEVARCH_ARCHPART_Pos*/) /*!< DIB DDEVARCH: Architecture Part Mask */ + +/* DDEVTYPE, SCS Device Type Register Definitions */ +#define DIB_DDEVTYPE_SUB_Pos 4U /*!< DIB DDEVTYPE: Sub-type Position */ +#define DIB_DDEVTYPE_SUB_Msk (0xFUL << DIB_DDEVTYPE_SUB_Pos ) /*!< DIB DDEVTYPE: Sub-type Mask */ + +#define DIB_DDEVTYPE_MAJOR_Pos 0U /*!< DIB DDEVTYPE: Major type Position */ +#define DIB_DDEVTYPE_MAJOR_Msk (0xFUL /*<< DIB_DDEVTYPE_MAJOR_Pos*/) /*!< DIB DDEVTYPE: Major type Mask */ + + +/*@} end of group CMSIS_DIB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_bitfield Core register bit field macros + \brief Macros for use with bit field definitions (xxx_Pos, xxx_Msk). + @{ + */ + +/** + \brief Mask and shift a bit field value for use in a register bit range. + \param[in] field Name of the register bit field. + \param[in] value Value of the bit field. This parameter is interpreted as an uint32_t type. + \return Masked and shifted value. +*/ +#define _VAL2FLD(field, value) (((uint32_t)(value) << field ## _Pos) & field ## _Msk) + +/** + \brief Mask and shift a register value to extract a bit filed value. + \param[in] field Name of the register bit field. + \param[in] value Value of register. This parameter is interpreted as an uint32_t type. + \return Masked and shifted bit field value. +*/ +#define _FLD2VAL(field, value) (((uint32_t)(value) & field ## _Msk) >> field ## _Pos) + +/*@} end of group CMSIS_core_bitfield */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_base Core Definitions + \brief Definitions for base addresses, unions, and structures. + @{ + */ + +/* Memory mapping of Core Hardware */ + #define SCS_BASE (0xE000E000UL) /*!< System Control Space Base Address */ + #define ITM_BASE (0xE0000000UL) /*!< ITM Base Address */ + #define DWT_BASE (0xE0001000UL) /*!< DWT Base Address */ + #define MEMSYSCTL_BASE (0xE001E000UL) /*!< Memory System Control Base Address */ + #define ERRBNK_BASE (0xE001E100UL) /*!< Error Banking Base Address */ + #define PWRMODCTL_BASE (0xE001E300UL) /*!< Power Mode Control Base Address */ + #define EWIC_BASE (0xE001E400UL) /*!< External Wakeup Interrupt Controller Base Address */ + #define PRCCFGINF_BASE (0xE001E700UL) /*!< Processor Configuration Information Base Address */ + #define TPI_BASE (0xE0040000UL) /*!< TPI Base Address */ + #define CoreDebug_BASE (0xE000EDF0UL) /*!< \deprecated Core Debug Base Address */ + #define DCB_BASE (0xE000EDF0UL) /*!< DCB Base Address */ + #define DIB_BASE (0xE000EFB0UL) /*!< DIB Base Address */ + #define SysTick_BASE (SCS_BASE + 0x0010UL) /*!< SysTick Base Address */ + #define NVIC_BASE (SCS_BASE + 0x0100UL) /*!< NVIC Base Address */ + #define SCB_BASE (SCS_BASE + 0x0D00UL) /*!< System Control Block Base Address */ + + #define ICB ((ICB_Type *) SCS_BASE ) /*!< System control Register not in SCB */ + #define SCB ((SCB_Type *) SCB_BASE ) /*!< SCB configuration struct */ + #define SysTick ((SysTick_Type *) SysTick_BASE ) /*!< SysTick configuration struct */ + #define NVIC ((NVIC_Type *) NVIC_BASE ) /*!< NVIC configuration struct */ + #define ITM ((ITM_Type *) ITM_BASE ) /*!< ITM configuration struct */ + #define DWT ((DWT_Type *) DWT_BASE ) /*!< DWT configuration struct */ + #define TPI ((TPI_Type *) TPI_BASE ) /*!< TPI configuration struct */ + #define MEMSYSCTL ((MemSysCtl_Type *) MEMSYSCTL_BASE ) /*!< Memory System Control configuration struct */ + #define ERRBNK ((ErrBnk_Type *) ERRBNK_BASE ) /*!< Error Banking configuration struct */ + #define PWRMODCTL ((PwrModCtl_Type *) PWRMODCTL_BASE ) /*!< Power Mode Control configuration struct */ + #define EWIC ((EWIC_Type *) EWIC_BASE ) /*!< EWIC configuration struct */ + #define PRCCFGINF ((PrcCfgInf_Type *) PRCCFGINF_BASE ) /*!< Processor Configuration Information configuration struct */ + #define CoreDebug ((CoreDebug_Type *) CoreDebug_BASE ) /*!< \deprecated Core Debug configuration struct */ + #define DCB ((DCB_Type *) DCB_BASE ) /*!< DCB configuration struct */ + #define DIB ((DIB_Type *) DIB_BASE ) /*!< DIB configuration struct */ + + #if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + #define MPU_BASE (SCS_BASE + 0x0D90UL) /*!< Memory Protection Unit */ + #define MPU ((MPU_Type *) MPU_BASE ) /*!< Memory Protection Unit */ + #endif + + #if defined (__PMU_PRESENT) && (__PMU_PRESENT == 1U) + #define PMU_BASE (0xE0003000UL) /*!< PMU Base Address */ + #define PMU ((PMU_Type *) PMU_BASE ) /*!< PMU configuration struct */ + #endif + + #if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) + #define SAU_BASE (SCS_BASE + 0x0DD0UL) /*!< Security Attribution Unit */ + #define SAU ((SAU_Type *) SAU_BASE ) /*!< Security Attribution Unit */ + #endif + + #define FPU_BASE (SCS_BASE + 0x0F30UL) /*!< Floating Point Unit */ + #define FPU ((FPU_Type *) FPU_BASE ) /*!< Floating Point Unit */ + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) + #define SCS_BASE_NS (0xE002E000UL) /*!< System Control Space Base Address (non-secure address space) */ + #define CoreDebug_BASE_NS (0xE002EDF0UL) /*!< \deprecated Core Debug Base Address (non-secure address space) */ + #define DCB_BASE_NS (0xE002EDF0UL) /*!< DCB Base Address (non-secure address space) */ + #define DIB_BASE_NS (0xE002EFB0UL) /*!< DIB Base Address (non-secure address space) */ + #define SysTick_BASE_NS (SCS_BASE_NS + 0x0010UL) /*!< SysTick Base Address (non-secure address space) */ + #define NVIC_BASE_NS (SCS_BASE_NS + 0x0100UL) /*!< NVIC Base Address (non-secure address space) */ + #define SCB_BASE_NS (SCS_BASE_NS + 0x0D00UL) /*!< System Control Block Base Address (non-secure address space) */ + + #define ICB_NS ((ICB_Type *) SCS_BASE_NS ) /*!< System control Register not in SCB(non-secure address space) */ + #define SCB_NS ((SCB_Type *) SCB_BASE_NS ) /*!< SCB configuration struct (non-secure address space) */ + #define SysTick_NS ((SysTick_Type *) SysTick_BASE_NS ) /*!< SysTick configuration struct (non-secure address space) */ + #define NVIC_NS ((NVIC_Type *) NVIC_BASE_NS ) /*!< NVIC configuration struct (non-secure address space) */ + #define CoreDebug_NS ((CoreDebug_Type *) CoreDebug_BASE_NS) /*!< \deprecated Core Debug configuration struct (non-secure address space) */ + #define DCB_NS ((DCB_Type *) DCB_BASE_NS ) /*!< DCB configuration struct (non-secure address space) */ + #define DIB_NS ((DIB_Type *) DIB_BASE_NS ) /*!< DIB configuration struct (non-secure address space) */ + + #if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + #define MPU_BASE_NS (SCS_BASE_NS + 0x0D90UL) /*!< Memory Protection Unit (non-secure address space) */ + #define MPU_NS ((MPU_Type *) MPU_BASE_NS ) /*!< Memory Protection Unit (non-secure address space) */ + #endif + + #define FPU_BASE_NS (SCS_BASE_NS + 0x0F30UL) /*!< Floating Point Unit (non-secure address space) */ + #define FPU_NS ((FPU_Type *) FPU_BASE_NS ) /*!< Floating Point Unit (non-secure address space) */ + +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ +/*@} */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_register_aliases Backwards Compatibility Aliases + \brief Register alias definitions for backwards compatibility. + @{ + */ + +/*@} */ + + +/******************************************************************************* + * Hardware Abstraction Layer + Core Function Interface contains: + - Core NVIC Functions + - Core SysTick Functions + - Core Debug Functions + - Core Register Access Functions + ******************************************************************************/ +/** + \defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference +*/ + + + +/* ########################## NVIC functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_NVICFunctions NVIC Functions + \brief Functions that manage interrupts and exceptions via the NVIC. + @{ + */ + +#ifdef CMSIS_NVIC_VIRTUAL + #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE + #define CMSIS_NVIC_VIRTUAL_HEADER_FILE "cmsis_nvic_virtual.h" + #endif + #include CMSIS_NVIC_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetPriorityGrouping __NVIC_SetPriorityGrouping + #define NVIC_GetPriorityGrouping __NVIC_GetPriorityGrouping + #define NVIC_EnableIRQ __NVIC_EnableIRQ + #define NVIC_GetEnableIRQ __NVIC_GetEnableIRQ + #define NVIC_DisableIRQ __NVIC_DisableIRQ + #define NVIC_GetPendingIRQ __NVIC_GetPendingIRQ + #define NVIC_SetPendingIRQ __NVIC_SetPendingIRQ + #define NVIC_ClearPendingIRQ __NVIC_ClearPendingIRQ + #define NVIC_GetActive __NVIC_GetActive + #define NVIC_SetPriority __NVIC_SetPriority + #define NVIC_GetPriority __NVIC_GetPriority + #define NVIC_SystemReset __NVIC_SystemReset +#endif /* CMSIS_NVIC_VIRTUAL */ + +#ifdef CMSIS_VECTAB_VIRTUAL + #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE + #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE "cmsis_vectab_virtual.h" + #endif + #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetVector __NVIC_SetVector + #define NVIC_GetVector __NVIC_GetVector +#endif /* (CMSIS_VECTAB_VIRTUAL) */ + +#define NVIC_USER_IRQ_OFFSET 16 + + +/* Special LR values for Secure/Non-Secure call handling and exception handling */ + +/* Function Return Payload (from ARMv8-M Architecture Reference Manual) LR value on entry from Secure BLXNS */ +#define FNC_RETURN (0xFEFFFFFFUL) /* bit [0] ignored when processing a branch */ + +/* The following EXC_RETURN mask values are used to evaluate the LR on exception entry */ +#define EXC_RETURN_PREFIX (0xFF000000UL) /* bits [31:24] set to indicate an EXC_RETURN value */ +#define EXC_RETURN_S (0x00000040UL) /* bit [6] stack used to push registers: 0=Non-secure 1=Secure */ +#define EXC_RETURN_DCRS (0x00000020UL) /* bit [5] stacking rules for called registers: 0=skipped 1=saved */ +#define EXC_RETURN_FTYPE (0x00000010UL) /* bit [4] allocate stack for floating-point context: 0=done 1=skipped */ +#define EXC_RETURN_MODE (0x00000008UL) /* bit [3] processor mode for return: 0=Handler mode 1=Thread mode */ +#define EXC_RETURN_SPSEL (0x00000004UL) /* bit [2] stack pointer used to restore context: 0=MSP 1=PSP */ +#define EXC_RETURN_ES (0x00000001UL) /* bit [0] security state exception was taken to: 0=Non-secure 1=Secure */ + +/* Integrity Signature (from ARMv8-M Architecture Reference Manual) for exception context stacking */ +#if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) /* Value for processors with floating-point extension: */ +#define EXC_INTEGRITY_SIGNATURE (0xFEFA125AUL) /* bit [0] SFTC must match LR bit[4] EXC_RETURN_FTYPE */ +#else +#define EXC_INTEGRITY_SIGNATURE (0xFEFA125BUL) /* Value for processors without floating-point extension */ +#endif + + +/** + \brief Set Priority Grouping + \details Sets the priority grouping field using the required unlock sequence. + The parameter PriorityGroup is assigned to the field SCB->AIRCR [10:8] PRIGROUP field. + Only values from 0..7 are used. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Priority grouping field. + */ +__STATIC_INLINE void __NVIC_SetPriorityGrouping(uint32_t PriorityGroup) +{ + uint32_t reg_value; + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + + reg_value = SCB->AIRCR; /* read old register configuration */ + reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change */ + reg_value = (reg_value | + ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (PriorityGroupTmp << SCB_AIRCR_PRIGROUP_Pos) ); /* Insert write key and priority group */ + SCB->AIRCR = reg_value; +} + + +/** + \brief Get Priority Grouping + \details Reads the priority grouping field from the NVIC Interrupt Controller. + \return Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field). + */ +__STATIC_INLINE uint32_t __NVIC_GetPriorityGrouping(void) +{ + return ((uint32_t)((SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos)); +} + + +/** + \brief Enable Interrupt + \details Enables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + __COMPILER_BARRIER(); + NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __COMPILER_BARRIER(); + } +} + + +/** + \brief Get Interrupt Enable status + \details Returns a device specific interrupt enable status from the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt is not enabled. + \return 1 Interrupt is enabled. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Disable Interrupt + \details Disables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_DisableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __DSB(); + __ISB(); + } +} + + +/** + \brief Get Pending Interrupt + \details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not pending. + \return 1 Interrupt status is pending. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Pending Interrupt + \details Sets the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Clear Pending Interrupt + \details Clears the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Active Interrupt + \details Reads the active register in the NVIC and returns the active bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not active. + \return 1 Interrupt status is active. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetActive(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief Get Interrupt Target State + \details Reads the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 if interrupt is assigned to Secure + \return 1 if interrupt is assigned to Non Secure + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t NVIC_GetTargetState(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Interrupt Target State + \details Sets the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 if interrupt is assigned to Secure + 1 if interrupt is assigned to Non Secure + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t NVIC_SetTargetState(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] |= ((uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL))); + return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Clear Interrupt Target State + \details Clears the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 if interrupt is assigned to Secure + 1 if interrupt is assigned to Non Secure + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t NVIC_ClearTargetState(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] &= ~((uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL))); + return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + + +/** + \brief Set Interrupt Priority + \details Sets the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \param [in] priority Priority to set. + \note The priority cannot be set for every processor exception. + */ +__STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->IPR[((uint32_t)IRQn)] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } + else + { + SCB->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } +} + + +/** + \brief Get Interrupt Priority + \details Reads the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Interrupt Priority. + Value is aligned automatically to the implemented priority bits of the microcontroller. + */ +__STATIC_INLINE uint32_t __NVIC_GetPriority(IRQn_Type IRQn) +{ + + if ((int32_t)(IRQn) >= 0) + { + return(((uint32_t)NVIC->IPR[((uint32_t)IRQn)] >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return(((uint32_t)SCB->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] >> (8U - __NVIC_PRIO_BITS))); + } +} + + +/** + \brief Encode Priority + \details Encodes the priority for an interrupt with the given priority group, + preemptive priority value, and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Used priority group. + \param [in] PreemptPriority Preemptive priority value (starting from 0). + \param [in] SubPriority Subpriority value (starting from 0). + \return Encoded priority. Value can be used in the function \ref NVIC_SetPriority(). + */ +__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + return ( + ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) | + ((SubPriority & (uint32_t)((1UL << (SubPriorityBits )) - 1UL))) + ); +} + + +/** + \brief Decode Priority + \details Decodes an interrupt priority value with a given priority group to + preemptive priority value and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set. + \param [in] Priority Priority value, which can be retrieved with the function \ref NVIC_GetPriority(). + \param [in] PriorityGroup Used priority group. + \param [out] pPreemptPriority Preemptive priority value (starting from 0). + \param [out] pSubPriority Subpriority value (starting from 0). + */ +__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* const pPreemptPriority, uint32_t* const pSubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + *pPreemptPriority = (Priority >> SubPriorityBits) & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL); + *pSubPriority = (Priority ) & (uint32_t)((1UL << (SubPriorityBits )) - 1UL); +} + + +/** + \brief Set Interrupt Vector + \details Sets an interrupt vector in SRAM based interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + VTOR must been relocated to SRAM before. + \param [in] IRQn Interrupt number + \param [in] vector Address of interrupt handler function + */ +__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector) +{ + uint32_t *vectors = (uint32_t *)SCB->VTOR; + vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET] = vector; + __DSB(); +} + + +/** + \brief Get Interrupt Vector + \details Reads an interrupt vector from interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Address of interrupt handler function + */ +__STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn) +{ + uint32_t *vectors = (uint32_t *)SCB->VTOR; + return vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET]; +} + + +/** + \brief System Reset + \details Initiates a system reset request to reset the MCU. + */ +__NO_RETURN __STATIC_INLINE void __NVIC_SystemReset(void) +{ + __DSB(); /* Ensure all outstanding memory accesses included + buffered write are completed before reset */ + SCB->AIRCR = (uint32_t)((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) | + SCB_AIRCR_SYSRESETREQ_Msk ); /* Keep priority group unchanged */ + __DSB(); /* Ensure completion of memory access */ + + for(;;) /* wait until reset */ + { + __NOP(); + } +} + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief Set Priority Grouping (non-secure) + \details Sets the non-secure priority grouping field when in secure state using the required unlock sequence. + The parameter PriorityGroup is assigned to the field SCB->AIRCR [10:8] PRIGROUP field. + Only values from 0..7 are used. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Priority grouping field. + */ +__STATIC_INLINE void TZ_NVIC_SetPriorityGrouping_NS(uint32_t PriorityGroup) +{ + uint32_t reg_value; + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + + reg_value = SCB_NS->AIRCR; /* read old register configuration */ + reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change */ + reg_value = (reg_value | + ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (PriorityGroupTmp << SCB_AIRCR_PRIGROUP_Pos) ); /* Insert write key and priority group */ + SCB_NS->AIRCR = reg_value; +} + + +/** + \brief Get Priority Grouping (non-secure) + \details Reads the priority grouping field from the non-secure NVIC when in secure state. + \return Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field). + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetPriorityGrouping_NS(void) +{ + return ((uint32_t)((SCB_NS->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos)); +} + + +/** + \brief Enable Interrupt (non-secure) + \details Enables a device specific interrupt in the non-secure NVIC interrupt controller when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_EnableIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Interrupt Enable status (non-secure) + \details Returns a device specific interrupt enable status from the non-secure NVIC interrupt controller when in secure state. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt is not enabled. + \return 1 Interrupt is enabled. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetEnableIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Disable Interrupt (non-secure) + \details Disables a device specific interrupt in the non-secure NVIC interrupt controller when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_DisableIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Pending Interrupt (non-secure) + \details Reads the NVIC pending register in the non-secure NVIC when in secure state and returns the pending bit for the specified device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not pending. + \return 1 Interrupt status is pending. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetPendingIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Pending Interrupt (non-secure) + \details Sets the pending bit of a device specific interrupt in the non-secure NVIC pending register when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_SetPendingIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Clear Pending Interrupt (non-secure) + \details Clears the pending bit of a device specific interrupt in the non-secure NVIC pending register when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_ClearPendingIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Active Interrupt (non-secure) + \details Reads the active register in non-secure NVIC when in secure state and returns the active bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not active. + \return 1 Interrupt status is active. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetActive_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Interrupt Priority (non-secure) + \details Sets the priority of a non-secure device specific interrupt or a non-secure processor exception when in secure state. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \param [in] priority Priority to set. + \note The priority cannot be set for every non-secure processor exception. + */ +__STATIC_INLINE void TZ_NVIC_SetPriority_NS(IRQn_Type IRQn, uint32_t priority) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->IPR[((uint32_t)IRQn)] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } + else + { + SCB_NS->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } +} + + +/** + \brief Get Interrupt Priority (non-secure) + \details Reads the priority of a non-secure device specific interrupt or a non-secure processor exception when in secure state. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Interrupt Priority. Value is aligned automatically to the implemented priority bits of the microcontroller. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetPriority_NS(IRQn_Type IRQn) +{ + + if ((int32_t)(IRQn) >= 0) + { + return(((uint32_t)NVIC_NS->IPR[((uint32_t)IRQn)] >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return(((uint32_t)SCB_NS->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] >> (8U - __NVIC_PRIO_BITS))); + } +} +#endif /* defined (__ARM_FEATURE_CMSE) &&(__ARM_FEATURE_CMSE == 3U) */ + +/*@} end of CMSIS_Core_NVICFunctions */ + +/* ########################## MPU functions #################################### */ + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + +#include "mpu_armv8.h" + +#endif + +/* ########################## PMU functions and events #################################### */ + +#if defined (__PMU_PRESENT) && (__PMU_PRESENT == 1U) + +#include "pmu_armv8.h" + +/** + \brief Cortex-M85 PMU events + \note Architectural PMU events can be found in pmu_armv8.h +*/ + +#define ARMCM85_PMU_ECC_ERR 0xC000 /*!< One or more Error Correcting Code (ECC) errors detected */ +#define ARMCM85_PMU_ECC_ERR_MBIT 0xC001 /*!< One or more multi-bit ECC errors detected */ +#define ARMCM85_PMU_ECC_ERR_DCACHE 0xC010 /*!< One or more ECC errors in the data cache */ +#define ARMCM85_PMU_ECC_ERR_ICACHE 0xC011 /*!< One or more ECC errors in the instruction cache */ +#define ARMCM85_PMU_ECC_ERR_MBIT_DCACHE 0xC012 /*!< One or more multi-bit ECC errors in the data cache */ +#define ARMCM85_PMU_ECC_ERR_MBIT_ICACHE 0xC013 /*!< One or more multi-bit ECC errors in the instruction cache */ +#define ARMCM85_PMU_ECC_ERR_DTCM 0xC020 /*!< One or more ECC errors in the Data Tightly Coupled Memory (DTCM) */ +#define ARMCM85_PMU_ECC_ERR_ITCM 0xC021 /*!< One or more ECC errors in the Instruction Tightly Coupled Memory (ITCM) */ +#define ARMCM85_PMU_ECC_ERR_MBIT_DTCM 0xC022 /*!< One or more multi-bit ECC errors in the DTCM */ +#define ARMCM85_PMU_ECC_ERR_MBIT_ITCM 0xC023 /*!< One or more multi-bit ECC errors in the ITCM */ +#define ARMCM85_PMU_PF_LINEFILL 0xC100 /*!< The prefetcher starts a line-fill */ +#define ARMCM85_PMU_PF_CANCEL 0xC101 /*!< The prefetcher stops prefetching */ +#define ARMCM85_PMU_PF_DROP_LINEFILL 0xC102 /*!< A linefill triggered by a prefetcher has been dropped because of lack of buffering */ +#define ARMCM85_PMU_NWAMODE_ENTER 0xC200 /*!< No write-allocate mode entry */ +#define ARMCM85_PMU_NWAMODE 0xC201 /*!< Write-allocate store is not allocated into the data cache due to no-write-allocate mode */ +#define ARMCM85_PMU_SAHB_ACCESS 0xC300 /*!< Read or write access on the S-AHB interface to the TCM */ +#define ARMCM85_PMU_PAHB_ACCESS 0xC301 /*!< Read or write access on the P-AHB write interface */ +#define ARMCM85_PMU_AXI_WRITE_ACCESS 0xC302 /*!< Any beat access to M-AXI write interface */ +#define ARMCM85_PMU_AXI_READ_ACCESS 0xC303 /*!< Any beat access to M-AXI read interface */ +#define ARMCM85_PMU_DOSTIMEOUT_DOUBLE 0xC400 /*!< Denial of Service timeout has fired twice and caused buffers to drain to allow forward progress */ +#define ARMCM85_PMU_DOSTIMEOUT_TRIPLE 0xC401 /*!< Denial of Service timeout has fired three times and blocked the LSU to force forward progress */ + +#endif + +/* ########################## FPU functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_FpuFunctions FPU Functions + \brief Function that provides FPU type. + @{ + */ + +/** + \brief get FPU type + \details returns the FPU type + \returns + - \b 0: No FPU + - \b 1: Single precision FPU + - \b 2: Double + Single precision FPU + */ +__STATIC_INLINE uint32_t SCB_GetFPUType(void) +{ + uint32_t mvfr0; + + mvfr0 = FPU->MVFR0; + if ((mvfr0 & (FPU_MVFR0_FPSP_Msk | FPU_MVFR0_FPDP_Msk)) == 0x220U) + { + return 2U; /* Double + Single precision FPU */ + } + else if ((mvfr0 & (FPU_MVFR0_FPSP_Msk | FPU_MVFR0_FPDP_Msk)) == 0x020U) + { + return 1U; /* Single precision FPU */ + } + else + { + return 0U; /* No FPU */ + } +} + + +/*@} end of CMSIS_Core_FpuFunctions */ + +/* ########################## MVE functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_MveFunctions MVE Functions + \brief Function that provides MVE type. + @{ + */ + +/** + \brief get MVE type + \details returns the MVE type + \returns + - \b 0: No Vector Extension (MVE) + - \b 1: Integer Vector Extension (MVE-I) + - \b 2: Floating-point Vector Extension (MVE-F) + */ +__STATIC_INLINE uint32_t SCB_GetMVEType(void) +{ + const uint32_t mvfr1 = FPU->MVFR1; + if ((mvfr1 & FPU_MVFR1_MVE_Msk) == (0x2U << FPU_MVFR1_MVE_Pos)) + { + return 2U; + } + else if ((mvfr1 & FPU_MVFR1_MVE_Msk) == (0x1U << FPU_MVFR1_MVE_Pos)) + { + return 1U; + } + else + { + return 0U; + } +} + + +/*@} end of CMSIS_Core_MveFunctions */ + + +/* ########################## Cache functions #################################### */ + +#if ((defined (__ICACHE_PRESENT) && (__ICACHE_PRESENT == 1U)) || \ + (defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U))) +#include "cachel1_armv7.h" +#endif + + +/* ########################## SAU functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SAUFunctions SAU Functions + \brief Functions that configure the SAU. + @{ + */ + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) + +/** + \brief Enable SAU + \details Enables the Security Attribution Unit (SAU). + */ +__STATIC_INLINE void TZ_SAU_Enable(void) +{ + SAU->CTRL |= (SAU_CTRL_ENABLE_Msk); +} + + + +/** + \brief Disable SAU + \details Disables the Security Attribution Unit (SAU). + */ +__STATIC_INLINE void TZ_SAU_Disable(void) +{ + SAU->CTRL &= ~(SAU_CTRL_ENABLE_Msk); +} + +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + +/*@} end of CMSIS_Core_SAUFunctions */ + + + +/* ################### PAC Key functions ########################### */ + +#if (defined (__ARM_FEATURE_PAUTH) && (__ARM_FEATURE_PAUTH == 1)) +#include "pac_armv81.h" +#endif + + +/* ################################## Debug Control function ############################################ */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_DCBFunctions Debug Control Functions + \brief Functions that access the Debug Control Block. + @{ + */ + + +/** + \brief Set Debug Authentication Control Register + \details writes to Debug Authentication Control register. + \param [in] value value to be writen. + */ +__STATIC_INLINE void DCB_SetAuthCtrl(uint32_t value) +{ + __DSB(); + __ISB(); + DCB->DAUTHCTRL = value; + __DSB(); + __ISB(); +} + + +/** + \brief Get Debug Authentication Control Register + \details Reads Debug Authentication Control register. + \return Debug Authentication Control Register. + */ +__STATIC_INLINE uint32_t DCB_GetAuthCtrl(void) +{ + return (DCB->DAUTHCTRL); +} + + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief Set Debug Authentication Control Register (non-secure) + \details writes to non-secure Debug Authentication Control register when in secure state. + \param [in] value value to be writen + */ +__STATIC_INLINE void TZ_DCB_SetAuthCtrl_NS(uint32_t value) +{ + __DSB(); + __ISB(); + DCB_NS->DAUTHCTRL = value; + __DSB(); + __ISB(); +} + + +/** + \brief Get Debug Authentication Control Register (non-secure) + \details Reads non-secure Debug Authentication Control register when in secure state. + \return Debug Authentication Control Register. + */ +__STATIC_INLINE uint32_t TZ_DCB_GetAuthCtrl_NS(void) +{ + return (DCB_NS->DAUTHCTRL); +} +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + +/*@} end of CMSIS_Core_DCBFunctions */ + + + + +/* ################################## Debug Identification function ############################################ */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_DIBFunctions Debug Identification Functions + \brief Functions that access the Debug Identification Block. + @{ + */ + + +/** + \brief Get Debug Authentication Status Register + \details Reads Debug Authentication Status register. + \return Debug Authentication Status Register. + */ +__STATIC_INLINE uint32_t DIB_GetAuthStatus(void) +{ + return (DIB->DAUTHSTATUS); +} + + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief Get Debug Authentication Status Register (non-secure) + \details Reads non-secure Debug Authentication Status register when in secure state. + \return Debug Authentication Status Register. + */ +__STATIC_INLINE uint32_t TZ_DIB_GetAuthStatus_NS(void) +{ + return (DIB_NS->DAUTHSTATUS); +} +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + +/*@} end of CMSIS_Core_DCBFunctions */ + + + + +/* ################################## SysTick function ############################################ */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SysTickFunctions SysTick Functions + \brief Functions that configure the System. + @{ + */ + +#if defined (__Vendor_SysTickConfig) && (__Vendor_SysTickConfig == 0U) + +/** + \brief System Tick Configuration + \details Initializes the System Timer and its interrupt, and starts the System Tick Timer. + Counter is in free running mode to generate periodic interrupts. + \param [in] ticks Number of ticks between two interrupts. + \return 0 Function succeeded. + \return 1 Function failed. + \note When the variable __Vendor_SysTickConfig is set to 1, then the + function SysTick_Config is not included. In this case, the file device.h + must contain a vendor-specific implementation of this function. + */ +__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks) +{ + if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) + { + return (1UL); /* Reload value impossible */ + } + + SysTick->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ + NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ + SysTick->VAL = 0UL; /* Load the SysTick Counter Value */ + SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0UL); /* Function successful */ +} + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief System Tick Configuration (non-secure) + \details Initializes the non-secure System Timer and its interrupt when in secure state, and starts the System Tick Timer. + Counter is in free running mode to generate periodic interrupts. + \param [in] ticks Number of ticks between two interrupts. + \return 0 Function succeeded. + \return 1 Function failed. + \note When the variable __Vendor_SysTickConfig is set to 1, then the + function TZ_SysTick_Config_NS is not included. In this case, the file device.h + must contain a vendor-specific implementation of this function. + + */ +__STATIC_INLINE uint32_t TZ_SysTick_Config_NS(uint32_t ticks) +{ + if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) + { + return (1UL); /* Reload value impossible */ + } + + SysTick_NS->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ + TZ_NVIC_SetPriority_NS (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ + SysTick_NS->VAL = 0UL; /* Load the SysTick Counter Value */ + SysTick_NS->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0UL); /* Function successful */ +} +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + +#endif + +/*@} end of CMSIS_Core_SysTickFunctions */ + + + +/* ##################################### Debug In/Output function ########################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_core_DebugFunctions ITM Functions + \brief Functions that access the ITM debug interface. + @{ + */ + +extern volatile int32_t ITM_RxBuffer; /*!< External variable to receive characters. */ +#define ITM_RXBUFFER_EMPTY ((int32_t)0x5AA55AA5U) /*!< Value identifying \ref ITM_RxBuffer is ready for next character. */ + + +/** + \brief ITM Send Character + \details Transmits a character via the ITM channel 0, and + \li Just returns when no debugger is connected that has booked the output. + \li Is blocking when a debugger is connected, but the previous character sent has not been transmitted. + \param [in] ch Character to transmit. + \returns Character to transmit. + */ +__STATIC_INLINE uint32_t ITM_SendChar (uint32_t ch) +{ + if (((ITM->TCR & ITM_TCR_ITMENA_Msk) != 0UL) && /* ITM enabled */ + ((ITM->TER & 1UL ) != 0UL) ) /* ITM Port #0 enabled */ + { + while (ITM->PORT[0U].u32 == 0UL) + { + __NOP(); + } + ITM->PORT[0U].u8 = (uint8_t)ch; + } + return (ch); +} + + +/** + \brief ITM Receive Character + \details Inputs a character via the external variable \ref ITM_RxBuffer. + \return Received character. + \return -1 No character pending. + */ +__STATIC_INLINE int32_t ITM_ReceiveChar (void) +{ + int32_t ch = -1; /* no character available */ + + if (ITM_RxBuffer != ITM_RXBUFFER_EMPTY) + { + ch = ITM_RxBuffer; + ITM_RxBuffer = ITM_RXBUFFER_EMPTY; /* ready for next character */ + } + + return (ch); +} + + +/** + \brief ITM Check Character + \details Checks whether a character is pending for reading in the variable \ref ITM_RxBuffer. + \return 0 No character available. + \return 1 Character available. + */ +__STATIC_INLINE int32_t ITM_CheckChar (void) +{ + + if (ITM_RxBuffer == ITM_RXBUFFER_EMPTY) + { + return (0); /* no character available */ + } + else + { + return (1); /* character available */ + } +} + +/*@} end of CMSIS_core_DebugFunctions */ + + + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_CM85_H_DEPENDANT */ + +#endif /* __CMSIS_GENERIC */ diff --git a/bsp/renesas/ra8m1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/core_sc000.h b/bsp/renesas/ra8m1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/core_sc000.h new file mode 100644 index 000000000000..dbc755fff39b --- /dev/null +++ b/bsp/renesas/ra8m1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/core_sc000.h @@ -0,0 +1,1030 @@ +/**************************************************************************//** + * @file core_sc000.h + * @brief CMSIS SC000 Core Peripheral Access Layer Header File + * @version V5.0.7 + * @date 27. March 2020 + ******************************************************************************/ +/* + * Copyright (c) 2009-2020 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#elif defined (__clang__) + #pragma clang system_header /* treat file as system include file */ +#endif + +#ifndef __CORE_SC000_H_GENERIC +#define __CORE_SC000_H_GENERIC + +#include + +#ifdef __cplusplus + extern "C" { +#endif + +/** + \page CMSIS_MISRA_Exceptions MISRA-C:2004 Compliance Exceptions + CMSIS violates the following MISRA-C:2004 rules: + + \li Required Rule 8.5, object/function definition in header file.
+ Function definitions in header files are used to allow 'inlining'. + + \li Required Rule 18.4, declaration of union type or object of union type: '{...}'.
+ Unions are used for effective representation of core registers. + + \li Advisory Rule 19.7, Function-like macro defined.
+ Function-like macros are used to allow more efficient code. + */ + + +/******************************************************************************* + * CMSIS definitions + ******************************************************************************/ +/** + \ingroup SC000 + @{ + */ + +#include "cmsis_version.h" + +/* CMSIS SC000 definitions */ +#define __SC000_CMSIS_VERSION_MAIN (__CM_CMSIS_VERSION_MAIN) /*!< \deprecated [31:16] CMSIS HAL main version */ +#define __SC000_CMSIS_VERSION_SUB (__CM_CMSIS_VERSION_SUB) /*!< \deprecated [15:0] CMSIS HAL sub version */ +#define __SC000_CMSIS_VERSION ((__SC000_CMSIS_VERSION_MAIN << 16U) | \ + __SC000_CMSIS_VERSION_SUB ) /*!< \deprecated CMSIS HAL version number */ + +#define __CORTEX_SC (000U) /*!< Cortex secure core */ + +/** __FPU_USED indicates whether an FPU is used or not. + This core does not support an FPU at all +*/ +#define __FPU_USED 0U + +#if defined ( __CC_ARM ) + #if defined __TARGET_FPU_VFP + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) + #if defined __ARM_FP + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __GNUC__ ) + #if defined (__VFP_FP__) && !defined(__SOFTFP__) + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __ICCARM__ ) + #if defined __ARMVFP__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __TI_ARM__ ) + #if defined __TI_VFP_SUPPORT__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __TASKING__ ) + #if defined __FPU_VFP__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __CSMC__ ) + #if ( __CSMC__ & 0x400U) + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#endif + +#include "cmsis_compiler.h" /* CMSIS compiler specific defines */ + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_SC000_H_GENERIC */ + +#ifndef __CMSIS_GENERIC + +#ifndef __CORE_SC000_H_DEPENDANT +#define __CORE_SC000_H_DEPENDANT + +#ifdef __cplusplus + extern "C" { +#endif + +/* check device defines and use defaults */ +#if defined __CHECK_DEVICE_DEFINES + #ifndef __SC000_REV + #define __SC000_REV 0x0000U + #warning "__SC000_REV not defined in device header file; using default!" + #endif + + #ifndef __MPU_PRESENT + #define __MPU_PRESENT 0U + #warning "__MPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __VTOR_PRESENT + #define __VTOR_PRESENT 0U + #warning "__VTOR_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __NVIC_PRIO_BITS + #define __NVIC_PRIO_BITS 2U + #warning "__NVIC_PRIO_BITS not defined in device header file; using default!" + #endif + + #ifndef __Vendor_SysTickConfig + #define __Vendor_SysTickConfig 0U + #warning "__Vendor_SysTickConfig not defined in device header file; using default!" + #endif +#endif + +/* IO definitions (access restrictions to peripheral registers) */ +/** + \defgroup CMSIS_glob_defs CMSIS Global Defines + + IO Type Qualifiers are used + \li to specify the access to peripheral variables. + \li for automatic generation of peripheral register debug information. +*/ +#ifdef __cplusplus + #define __I volatile /*!< Defines 'read only' permissions */ +#else + #define __I volatile const /*!< Defines 'read only' permissions */ +#endif +#define __O volatile /*!< Defines 'write only' permissions */ +#define __IO volatile /*!< Defines 'read / write' permissions */ + +/* following defines should be used for structure members */ +#define __IM volatile const /*! Defines 'read only' structure member permissions */ +#define __OM volatile /*! Defines 'write only' structure member permissions */ +#define __IOM volatile /*! Defines 'read / write' structure member permissions */ + +/*@} end of group SC000 */ + + + +/******************************************************************************* + * Register Abstraction + Core Register contain: + - Core Register + - Core NVIC Register + - Core SCB Register + - Core SysTick Register + - Core MPU Register + ******************************************************************************/ +/** + \defgroup CMSIS_core_register Defines and Type Definitions + \brief Type definitions and defines for Cortex-M processor based devices. +*/ + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CORE Status and Control Registers + \brief Core Register type definitions. + @{ + */ + +/** + \brief Union type to access the Application Program Status Register (APSR). + */ +typedef union +{ + struct + { + uint32_t _reserved0:28; /*!< bit: 0..27 Reserved */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} APSR_Type; + +/* APSR Register Definitions */ +#define APSR_N_Pos 31U /*!< APSR: N Position */ +#define APSR_N_Msk (1UL << APSR_N_Pos) /*!< APSR: N Mask */ + +#define APSR_Z_Pos 30U /*!< APSR: Z Position */ +#define APSR_Z_Msk (1UL << APSR_Z_Pos) /*!< APSR: Z Mask */ + +#define APSR_C_Pos 29U /*!< APSR: C Position */ +#define APSR_C_Msk (1UL << APSR_C_Pos) /*!< APSR: C Mask */ + +#define APSR_V_Pos 28U /*!< APSR: V Position */ +#define APSR_V_Msk (1UL << APSR_V_Pos) /*!< APSR: V Mask */ + + +/** + \brief Union type to access the Interrupt Program Status Register (IPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:23; /*!< bit: 9..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} IPSR_Type; + +/* IPSR Register Definitions */ +#define IPSR_ISR_Pos 0U /*!< IPSR: ISR Position */ +#define IPSR_ISR_Msk (0x1FFUL /*<< IPSR_ISR_Pos*/) /*!< IPSR: ISR Mask */ + + +/** + \brief Union type to access the Special-Purpose Program Status Registers (xPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:15; /*!< bit: 9..23 Reserved */ + uint32_t T:1; /*!< bit: 24 Thumb bit (read 0) */ + uint32_t _reserved1:3; /*!< bit: 25..27 Reserved */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} xPSR_Type; + +/* xPSR Register Definitions */ +#define xPSR_N_Pos 31U /*!< xPSR: N Position */ +#define xPSR_N_Msk (1UL << xPSR_N_Pos) /*!< xPSR: N Mask */ + +#define xPSR_Z_Pos 30U /*!< xPSR: Z Position */ +#define xPSR_Z_Msk (1UL << xPSR_Z_Pos) /*!< xPSR: Z Mask */ + +#define xPSR_C_Pos 29U /*!< xPSR: C Position */ +#define xPSR_C_Msk (1UL << xPSR_C_Pos) /*!< xPSR: C Mask */ + +#define xPSR_V_Pos 28U /*!< xPSR: V Position */ +#define xPSR_V_Msk (1UL << xPSR_V_Pos) /*!< xPSR: V Mask */ + +#define xPSR_T_Pos 24U /*!< xPSR: T Position */ +#define xPSR_T_Msk (1UL << xPSR_T_Pos) /*!< xPSR: T Mask */ + +#define xPSR_ISR_Pos 0U /*!< xPSR: ISR Position */ +#define xPSR_ISR_Msk (0x1FFUL /*<< xPSR_ISR_Pos*/) /*!< xPSR: ISR Mask */ + + +/** + \brief Union type to access the Control Registers (CONTROL). + */ +typedef union +{ + struct + { + uint32_t _reserved0:1; /*!< bit: 0 Reserved */ + uint32_t SPSEL:1; /*!< bit: 1 Stack to be used */ + uint32_t _reserved1:30; /*!< bit: 2..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} CONTROL_Type; + +/* CONTROL Register Definitions */ +#define CONTROL_SPSEL_Pos 1U /*!< CONTROL: SPSEL Position */ +#define CONTROL_SPSEL_Msk (1UL << CONTROL_SPSEL_Pos) /*!< CONTROL: SPSEL Mask */ + +/*@} end of group CMSIS_CORE */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_NVIC Nested Vectored Interrupt Controller (NVIC) + \brief Type definitions for the NVIC Registers + @{ + */ + +/** + \brief Structure type to access the Nested Vectored Interrupt Controller (NVIC). + */ +typedef struct +{ + __IOM uint32_t ISER[1U]; /*!< Offset: 0x000 (R/W) Interrupt Set Enable Register */ + uint32_t RESERVED0[31U]; + __IOM uint32_t ICER[1U]; /*!< Offset: 0x080 (R/W) Interrupt Clear Enable Register */ + uint32_t RSERVED1[31U]; + __IOM uint32_t ISPR[1U]; /*!< Offset: 0x100 (R/W) Interrupt Set Pending Register */ + uint32_t RESERVED2[31U]; + __IOM uint32_t ICPR[1U]; /*!< Offset: 0x180 (R/W) Interrupt Clear Pending Register */ + uint32_t RESERVED3[31U]; + uint32_t RESERVED4[64U]; + __IOM uint32_t IP[8U]; /*!< Offset: 0x300 (R/W) Interrupt Priority Register */ +} NVIC_Type; + +/*@} end of group CMSIS_NVIC */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SCB System Control Block (SCB) + \brief Type definitions for the System Control Block Registers + @{ + */ + +/** + \brief Structure type to access the System Control Block (SCB). + */ +typedef struct +{ + __IM uint32_t CPUID; /*!< Offset: 0x000 (R/ ) CPUID Base Register */ + __IOM uint32_t ICSR; /*!< Offset: 0x004 (R/W) Interrupt Control and State Register */ + __IOM uint32_t VTOR; /*!< Offset: 0x008 (R/W) Vector Table Offset Register */ + __IOM uint32_t AIRCR; /*!< Offset: 0x00C (R/W) Application Interrupt and Reset Control Register */ + __IOM uint32_t SCR; /*!< Offset: 0x010 (R/W) System Control Register */ + __IOM uint32_t CCR; /*!< Offset: 0x014 (R/W) Configuration Control Register */ + uint32_t RESERVED0[1U]; + __IOM uint32_t SHP[2U]; /*!< Offset: 0x01C (R/W) System Handlers Priority Registers. [0] is RESERVED */ + __IOM uint32_t SHCSR; /*!< Offset: 0x024 (R/W) System Handler Control and State Register */ + uint32_t RESERVED1[154U]; + __IOM uint32_t SFCR; /*!< Offset: 0x290 (R/W) Security Features Control Register */ +} SCB_Type; + +/* SCB CPUID Register Definitions */ +#define SCB_CPUID_IMPLEMENTER_Pos 24U /*!< SCB CPUID: IMPLEMENTER Position */ +#define SCB_CPUID_IMPLEMENTER_Msk (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos) /*!< SCB CPUID: IMPLEMENTER Mask */ + +#define SCB_CPUID_VARIANT_Pos 20U /*!< SCB CPUID: VARIANT Position */ +#define SCB_CPUID_VARIANT_Msk (0xFUL << SCB_CPUID_VARIANT_Pos) /*!< SCB CPUID: VARIANT Mask */ + +#define SCB_CPUID_ARCHITECTURE_Pos 16U /*!< SCB CPUID: ARCHITECTURE Position */ +#define SCB_CPUID_ARCHITECTURE_Msk (0xFUL << SCB_CPUID_ARCHITECTURE_Pos) /*!< SCB CPUID: ARCHITECTURE Mask */ + +#define SCB_CPUID_PARTNO_Pos 4U /*!< SCB CPUID: PARTNO Position */ +#define SCB_CPUID_PARTNO_Msk (0xFFFUL << SCB_CPUID_PARTNO_Pos) /*!< SCB CPUID: PARTNO Mask */ + +#define SCB_CPUID_REVISION_Pos 0U /*!< SCB CPUID: REVISION Position */ +#define SCB_CPUID_REVISION_Msk (0xFUL /*<< SCB_CPUID_REVISION_Pos*/) /*!< SCB CPUID: REVISION Mask */ + +/* SCB Interrupt Control State Register Definitions */ +#define SCB_ICSR_NMIPENDSET_Pos 31U /*!< SCB ICSR: NMIPENDSET Position */ +#define SCB_ICSR_NMIPENDSET_Msk (1UL << SCB_ICSR_NMIPENDSET_Pos) /*!< SCB ICSR: NMIPENDSET Mask */ + +#define SCB_ICSR_PENDSVSET_Pos 28U /*!< SCB ICSR: PENDSVSET Position */ +#define SCB_ICSR_PENDSVSET_Msk (1UL << SCB_ICSR_PENDSVSET_Pos) /*!< SCB ICSR: PENDSVSET Mask */ + +#define SCB_ICSR_PENDSVCLR_Pos 27U /*!< SCB ICSR: PENDSVCLR Position */ +#define SCB_ICSR_PENDSVCLR_Msk (1UL << SCB_ICSR_PENDSVCLR_Pos) /*!< SCB ICSR: PENDSVCLR Mask */ + +#define SCB_ICSR_PENDSTSET_Pos 26U /*!< SCB ICSR: PENDSTSET Position */ +#define SCB_ICSR_PENDSTSET_Msk (1UL << SCB_ICSR_PENDSTSET_Pos) /*!< SCB ICSR: PENDSTSET Mask */ + +#define SCB_ICSR_PENDSTCLR_Pos 25U /*!< SCB ICSR: PENDSTCLR Position */ +#define SCB_ICSR_PENDSTCLR_Msk (1UL << SCB_ICSR_PENDSTCLR_Pos) /*!< SCB ICSR: PENDSTCLR Mask */ + +#define SCB_ICSR_ISRPREEMPT_Pos 23U /*!< SCB ICSR: ISRPREEMPT Position */ +#define SCB_ICSR_ISRPREEMPT_Msk (1UL << SCB_ICSR_ISRPREEMPT_Pos) /*!< SCB ICSR: ISRPREEMPT Mask */ + +#define SCB_ICSR_ISRPENDING_Pos 22U /*!< SCB ICSR: ISRPENDING Position */ +#define SCB_ICSR_ISRPENDING_Msk (1UL << SCB_ICSR_ISRPENDING_Pos) /*!< SCB ICSR: ISRPENDING Mask */ + +#define SCB_ICSR_VECTPENDING_Pos 12U /*!< SCB ICSR: VECTPENDING Position */ +#define SCB_ICSR_VECTPENDING_Msk (0x1FFUL << SCB_ICSR_VECTPENDING_Pos) /*!< SCB ICSR: VECTPENDING Mask */ + +#define SCB_ICSR_VECTACTIVE_Pos 0U /*!< SCB ICSR: VECTACTIVE Position */ +#define SCB_ICSR_VECTACTIVE_Msk (0x1FFUL /*<< SCB_ICSR_VECTACTIVE_Pos*/) /*!< SCB ICSR: VECTACTIVE Mask */ + +/* SCB Interrupt Control State Register Definitions */ +#define SCB_VTOR_TBLOFF_Pos 7U /*!< SCB VTOR: TBLOFF Position */ +#define SCB_VTOR_TBLOFF_Msk (0x1FFFFFFUL << SCB_VTOR_TBLOFF_Pos) /*!< SCB VTOR: TBLOFF Mask */ + +/* SCB Application Interrupt and Reset Control Register Definitions */ +#define SCB_AIRCR_VECTKEY_Pos 16U /*!< SCB AIRCR: VECTKEY Position */ +#define SCB_AIRCR_VECTKEY_Msk (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos) /*!< SCB AIRCR: VECTKEY Mask */ + +#define SCB_AIRCR_VECTKEYSTAT_Pos 16U /*!< SCB AIRCR: VECTKEYSTAT Position */ +#define SCB_AIRCR_VECTKEYSTAT_Msk (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos) /*!< SCB AIRCR: VECTKEYSTAT Mask */ + +#define SCB_AIRCR_ENDIANESS_Pos 15U /*!< SCB AIRCR: ENDIANESS Position */ +#define SCB_AIRCR_ENDIANESS_Msk (1UL << SCB_AIRCR_ENDIANESS_Pos) /*!< SCB AIRCR: ENDIANESS Mask */ + +#define SCB_AIRCR_SYSRESETREQ_Pos 2U /*!< SCB AIRCR: SYSRESETREQ Position */ +#define SCB_AIRCR_SYSRESETREQ_Msk (1UL << SCB_AIRCR_SYSRESETREQ_Pos) /*!< SCB AIRCR: SYSRESETREQ Mask */ + +#define SCB_AIRCR_VECTCLRACTIVE_Pos 1U /*!< SCB AIRCR: VECTCLRACTIVE Position */ +#define SCB_AIRCR_VECTCLRACTIVE_Msk (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos) /*!< SCB AIRCR: VECTCLRACTIVE Mask */ + +/* SCB System Control Register Definitions */ +#define SCB_SCR_SEVONPEND_Pos 4U /*!< SCB SCR: SEVONPEND Position */ +#define SCB_SCR_SEVONPEND_Msk (1UL << SCB_SCR_SEVONPEND_Pos) /*!< SCB SCR: SEVONPEND Mask */ + +#define SCB_SCR_SLEEPDEEP_Pos 2U /*!< SCB SCR: SLEEPDEEP Position */ +#define SCB_SCR_SLEEPDEEP_Msk (1UL << SCB_SCR_SLEEPDEEP_Pos) /*!< SCB SCR: SLEEPDEEP Mask */ + +#define SCB_SCR_SLEEPONEXIT_Pos 1U /*!< SCB SCR: SLEEPONEXIT Position */ +#define SCB_SCR_SLEEPONEXIT_Msk (1UL << SCB_SCR_SLEEPONEXIT_Pos) /*!< SCB SCR: SLEEPONEXIT Mask */ + +/* SCB Configuration Control Register Definitions */ +#define SCB_CCR_STKALIGN_Pos 9U /*!< SCB CCR: STKALIGN Position */ +#define SCB_CCR_STKALIGN_Msk (1UL << SCB_CCR_STKALIGN_Pos) /*!< SCB CCR: STKALIGN Mask */ + +#define SCB_CCR_UNALIGN_TRP_Pos 3U /*!< SCB CCR: UNALIGN_TRP Position */ +#define SCB_CCR_UNALIGN_TRP_Msk (1UL << SCB_CCR_UNALIGN_TRP_Pos) /*!< SCB CCR: UNALIGN_TRP Mask */ + +/* SCB System Handler Control and State Register Definitions */ +#define SCB_SHCSR_SVCALLPENDED_Pos 15U /*!< SCB SHCSR: SVCALLPENDED Position */ +#define SCB_SHCSR_SVCALLPENDED_Msk (1UL << SCB_SHCSR_SVCALLPENDED_Pos) /*!< SCB SHCSR: SVCALLPENDED Mask */ + +/*@} end of group CMSIS_SCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SCnSCB System Controls not in SCB (SCnSCB) + \brief Type definitions for the System Control and ID Register not in the SCB + @{ + */ + +/** + \brief Structure type to access the System Control and ID Register not in the SCB. + */ +typedef struct +{ + uint32_t RESERVED0[2U]; + __IOM uint32_t ACTLR; /*!< Offset: 0x008 (R/W) Auxiliary Control Register */ +} SCnSCB_Type; + +/* Auxiliary Control Register Definitions */ +#define SCnSCB_ACTLR_DISMCYCINT_Pos 0U /*!< ACTLR: DISMCYCINT Position */ +#define SCnSCB_ACTLR_DISMCYCINT_Msk (1UL /*<< SCnSCB_ACTLR_DISMCYCINT_Pos*/) /*!< ACTLR: DISMCYCINT Mask */ + +/*@} end of group CMSIS_SCnotSCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SysTick System Tick Timer (SysTick) + \brief Type definitions for the System Timer Registers. + @{ + */ + +/** + \brief Structure type to access the System Timer (SysTick). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SysTick Control and Status Register */ + __IOM uint32_t LOAD; /*!< Offset: 0x004 (R/W) SysTick Reload Value Register */ + __IOM uint32_t VAL; /*!< Offset: 0x008 (R/W) SysTick Current Value Register */ + __IM uint32_t CALIB; /*!< Offset: 0x00C (R/ ) SysTick Calibration Register */ +} SysTick_Type; + +/* SysTick Control / Status Register Definitions */ +#define SysTick_CTRL_COUNTFLAG_Pos 16U /*!< SysTick CTRL: COUNTFLAG Position */ +#define SysTick_CTRL_COUNTFLAG_Msk (1UL << SysTick_CTRL_COUNTFLAG_Pos) /*!< SysTick CTRL: COUNTFLAG Mask */ + +#define SysTick_CTRL_CLKSOURCE_Pos 2U /*!< SysTick CTRL: CLKSOURCE Position */ +#define SysTick_CTRL_CLKSOURCE_Msk (1UL << SysTick_CTRL_CLKSOURCE_Pos) /*!< SysTick CTRL: CLKSOURCE Mask */ + +#define SysTick_CTRL_TICKINT_Pos 1U /*!< SysTick CTRL: TICKINT Position */ +#define SysTick_CTRL_TICKINT_Msk (1UL << SysTick_CTRL_TICKINT_Pos) /*!< SysTick CTRL: TICKINT Mask */ + +#define SysTick_CTRL_ENABLE_Pos 0U /*!< SysTick CTRL: ENABLE Position */ +#define SysTick_CTRL_ENABLE_Msk (1UL /*<< SysTick_CTRL_ENABLE_Pos*/) /*!< SysTick CTRL: ENABLE Mask */ + +/* SysTick Reload Register Definitions */ +#define SysTick_LOAD_RELOAD_Pos 0U /*!< SysTick LOAD: RELOAD Position */ +#define SysTick_LOAD_RELOAD_Msk (0xFFFFFFUL /*<< SysTick_LOAD_RELOAD_Pos*/) /*!< SysTick LOAD: RELOAD Mask */ + +/* SysTick Current Register Definitions */ +#define SysTick_VAL_CURRENT_Pos 0U /*!< SysTick VAL: CURRENT Position */ +#define SysTick_VAL_CURRENT_Msk (0xFFFFFFUL /*<< SysTick_VAL_CURRENT_Pos*/) /*!< SysTick VAL: CURRENT Mask */ + +/* SysTick Calibration Register Definitions */ +#define SysTick_CALIB_NOREF_Pos 31U /*!< SysTick CALIB: NOREF Position */ +#define SysTick_CALIB_NOREF_Msk (1UL << SysTick_CALIB_NOREF_Pos) /*!< SysTick CALIB: NOREF Mask */ + +#define SysTick_CALIB_SKEW_Pos 30U /*!< SysTick CALIB: SKEW Position */ +#define SysTick_CALIB_SKEW_Msk (1UL << SysTick_CALIB_SKEW_Pos) /*!< SysTick CALIB: SKEW Mask */ + +#define SysTick_CALIB_TENMS_Pos 0U /*!< SysTick CALIB: TENMS Position */ +#define SysTick_CALIB_TENMS_Msk (0xFFFFFFUL /*<< SysTick_CALIB_TENMS_Pos*/) /*!< SysTick CALIB: TENMS Mask */ + +/*@} end of group CMSIS_SysTick */ + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_MPU Memory Protection Unit (MPU) + \brief Type definitions for the Memory Protection Unit (MPU) + @{ + */ + +/** + \brief Structure type to access the Memory Protection Unit (MPU). + */ +typedef struct +{ + __IM uint32_t TYPE; /*!< Offset: 0x000 (R/ ) MPU Type Register */ + __IOM uint32_t CTRL; /*!< Offset: 0x004 (R/W) MPU Control Register */ + __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) MPU Region RNRber Register */ + __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) MPU Region Base Address Register */ + __IOM uint32_t RASR; /*!< Offset: 0x010 (R/W) MPU Region Attribute and Size Register */ +} MPU_Type; + +/* MPU Type Register Definitions */ +#define MPU_TYPE_IREGION_Pos 16U /*!< MPU TYPE: IREGION Position */ +#define MPU_TYPE_IREGION_Msk (0xFFUL << MPU_TYPE_IREGION_Pos) /*!< MPU TYPE: IREGION Mask */ + +#define MPU_TYPE_DREGION_Pos 8U /*!< MPU TYPE: DREGION Position */ +#define MPU_TYPE_DREGION_Msk (0xFFUL << MPU_TYPE_DREGION_Pos) /*!< MPU TYPE: DREGION Mask */ + +#define MPU_TYPE_SEPARATE_Pos 0U /*!< MPU TYPE: SEPARATE Position */ +#define MPU_TYPE_SEPARATE_Msk (1UL /*<< MPU_TYPE_SEPARATE_Pos*/) /*!< MPU TYPE: SEPARATE Mask */ + +/* MPU Control Register Definitions */ +#define MPU_CTRL_PRIVDEFENA_Pos 2U /*!< MPU CTRL: PRIVDEFENA Position */ +#define MPU_CTRL_PRIVDEFENA_Msk (1UL << MPU_CTRL_PRIVDEFENA_Pos) /*!< MPU CTRL: PRIVDEFENA Mask */ + +#define MPU_CTRL_HFNMIENA_Pos 1U /*!< MPU CTRL: HFNMIENA Position */ +#define MPU_CTRL_HFNMIENA_Msk (1UL << MPU_CTRL_HFNMIENA_Pos) /*!< MPU CTRL: HFNMIENA Mask */ + +#define MPU_CTRL_ENABLE_Pos 0U /*!< MPU CTRL: ENABLE Position */ +#define MPU_CTRL_ENABLE_Msk (1UL /*<< MPU_CTRL_ENABLE_Pos*/) /*!< MPU CTRL: ENABLE Mask */ + +/* MPU Region Number Register Definitions */ +#define MPU_RNR_REGION_Pos 0U /*!< MPU RNR: REGION Position */ +#define MPU_RNR_REGION_Msk (0xFFUL /*<< MPU_RNR_REGION_Pos*/) /*!< MPU RNR: REGION Mask */ + +/* MPU Region Base Address Register Definitions */ +#define MPU_RBAR_ADDR_Pos 8U /*!< MPU RBAR: ADDR Position */ +#define MPU_RBAR_ADDR_Msk (0xFFFFFFUL << MPU_RBAR_ADDR_Pos) /*!< MPU RBAR: ADDR Mask */ + +#define MPU_RBAR_VALID_Pos 4U /*!< MPU RBAR: VALID Position */ +#define MPU_RBAR_VALID_Msk (1UL << MPU_RBAR_VALID_Pos) /*!< MPU RBAR: VALID Mask */ + +#define MPU_RBAR_REGION_Pos 0U /*!< MPU RBAR: REGION Position */ +#define MPU_RBAR_REGION_Msk (0xFUL /*<< MPU_RBAR_REGION_Pos*/) /*!< MPU RBAR: REGION Mask */ + +/* MPU Region Attribute and Size Register Definitions */ +#define MPU_RASR_ATTRS_Pos 16U /*!< MPU RASR: MPU Region Attribute field Position */ +#define MPU_RASR_ATTRS_Msk (0xFFFFUL << MPU_RASR_ATTRS_Pos) /*!< MPU RASR: MPU Region Attribute field Mask */ + +#define MPU_RASR_XN_Pos 28U /*!< MPU RASR: ATTRS.XN Position */ +#define MPU_RASR_XN_Msk (1UL << MPU_RASR_XN_Pos) /*!< MPU RASR: ATTRS.XN Mask */ + +#define MPU_RASR_AP_Pos 24U /*!< MPU RASR: ATTRS.AP Position */ +#define MPU_RASR_AP_Msk (0x7UL << MPU_RASR_AP_Pos) /*!< MPU RASR: ATTRS.AP Mask */ + +#define MPU_RASR_TEX_Pos 19U /*!< MPU RASR: ATTRS.TEX Position */ +#define MPU_RASR_TEX_Msk (0x7UL << MPU_RASR_TEX_Pos) /*!< MPU RASR: ATTRS.TEX Mask */ + +#define MPU_RASR_S_Pos 18U /*!< MPU RASR: ATTRS.S Position */ +#define MPU_RASR_S_Msk (1UL << MPU_RASR_S_Pos) /*!< MPU RASR: ATTRS.S Mask */ + +#define MPU_RASR_C_Pos 17U /*!< MPU RASR: ATTRS.C Position */ +#define MPU_RASR_C_Msk (1UL << MPU_RASR_C_Pos) /*!< MPU RASR: ATTRS.C Mask */ + +#define MPU_RASR_B_Pos 16U /*!< MPU RASR: ATTRS.B Position */ +#define MPU_RASR_B_Msk (1UL << MPU_RASR_B_Pos) /*!< MPU RASR: ATTRS.B Mask */ + +#define MPU_RASR_SRD_Pos 8U /*!< MPU RASR: Sub-Region Disable Position */ +#define MPU_RASR_SRD_Msk (0xFFUL << MPU_RASR_SRD_Pos) /*!< MPU RASR: Sub-Region Disable Mask */ + +#define MPU_RASR_SIZE_Pos 1U /*!< MPU RASR: Region Size Field Position */ +#define MPU_RASR_SIZE_Msk (0x1FUL << MPU_RASR_SIZE_Pos) /*!< MPU RASR: Region Size Field Mask */ + +#define MPU_RASR_ENABLE_Pos 0U /*!< MPU RASR: Region enable bit Position */ +#define MPU_RASR_ENABLE_Msk (1UL /*<< MPU_RASR_ENABLE_Pos*/) /*!< MPU RASR: Region enable bit Disable Mask */ + +/*@} end of group CMSIS_MPU */ +#endif + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CoreDebug Core Debug Registers (CoreDebug) + \brief SC000 Core Debug Registers (DCB registers, SHCSR, and DFSR) are only accessible over DAP and not via processor. + Therefore they are not covered by the SC000 header file. + @{ + */ +/*@} end of group CMSIS_CoreDebug */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_bitfield Core register bit field macros + \brief Macros for use with bit field definitions (xxx_Pos, xxx_Msk). + @{ + */ + +/** + \brief Mask and shift a bit field value for use in a register bit range. + \param[in] field Name of the register bit field. + \param[in] value Value of the bit field. This parameter is interpreted as an uint32_t type. + \return Masked and shifted value. +*/ +#define _VAL2FLD(field, value) (((uint32_t)(value) << field ## _Pos) & field ## _Msk) + +/** + \brief Mask and shift a register value to extract a bit filed value. + \param[in] field Name of the register bit field. + \param[in] value Value of register. This parameter is interpreted as an uint32_t type. + \return Masked and shifted bit field value. +*/ +#define _FLD2VAL(field, value) (((uint32_t)(value) & field ## _Msk) >> field ## _Pos) + +/*@} end of group CMSIS_core_bitfield */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_base Core Definitions + \brief Definitions for base addresses, unions, and structures. + @{ + */ + +/* Memory mapping of Core Hardware */ +#define SCS_BASE (0xE000E000UL) /*!< System Control Space Base Address */ +#define SysTick_BASE (SCS_BASE + 0x0010UL) /*!< SysTick Base Address */ +#define NVIC_BASE (SCS_BASE + 0x0100UL) /*!< NVIC Base Address */ +#define SCB_BASE (SCS_BASE + 0x0D00UL) /*!< System Control Block Base Address */ + +#define SCnSCB ((SCnSCB_Type *) SCS_BASE ) /*!< System control Register not in SCB */ +#define SCB ((SCB_Type *) SCB_BASE ) /*!< SCB configuration struct */ +#define SysTick ((SysTick_Type *) SysTick_BASE ) /*!< SysTick configuration struct */ +#define NVIC ((NVIC_Type *) NVIC_BASE ) /*!< NVIC configuration struct */ + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + #define MPU_BASE (SCS_BASE + 0x0D90UL) /*!< Memory Protection Unit */ + #define MPU ((MPU_Type *) MPU_BASE ) /*!< Memory Protection Unit */ +#endif + +/*@} */ + + + +/******************************************************************************* + * Hardware Abstraction Layer + Core Function Interface contains: + - Core NVIC Functions + - Core SysTick Functions + - Core Register Access Functions + ******************************************************************************/ +/** + \defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference +*/ + + + +/* ########################## NVIC functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_NVICFunctions NVIC Functions + \brief Functions that manage interrupts and exceptions via the NVIC. + @{ + */ + +#ifdef CMSIS_NVIC_VIRTUAL + #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE + #define CMSIS_NVIC_VIRTUAL_HEADER_FILE "cmsis_nvic_virtual.h" + #endif + #include CMSIS_NVIC_VIRTUAL_HEADER_FILE +#else +/*#define NVIC_SetPriorityGrouping __NVIC_SetPriorityGrouping not available for SC000 */ +/*#define NVIC_GetPriorityGrouping __NVIC_GetPriorityGrouping not available for SC000 */ + #define NVIC_EnableIRQ __NVIC_EnableIRQ + #define NVIC_GetEnableIRQ __NVIC_GetEnableIRQ + #define NVIC_DisableIRQ __NVIC_DisableIRQ + #define NVIC_GetPendingIRQ __NVIC_GetPendingIRQ + #define NVIC_SetPendingIRQ __NVIC_SetPendingIRQ + #define NVIC_ClearPendingIRQ __NVIC_ClearPendingIRQ +/*#define NVIC_GetActive __NVIC_GetActive not available for SC000 */ + #define NVIC_SetPriority __NVIC_SetPriority + #define NVIC_GetPriority __NVIC_GetPriority + #define NVIC_SystemReset __NVIC_SystemReset +#endif /* CMSIS_NVIC_VIRTUAL */ + +#ifdef CMSIS_VECTAB_VIRTUAL + #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE + #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE "cmsis_vectab_virtual.h" + #endif + #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetVector __NVIC_SetVector + #define NVIC_GetVector __NVIC_GetVector +#endif /* (CMSIS_VECTAB_VIRTUAL) */ + +#define NVIC_USER_IRQ_OFFSET 16 + + +/* The following EXC_RETURN values are saved the LR on exception entry */ +#define EXC_RETURN_HANDLER (0xFFFFFFF1UL) /* return to Handler mode, uses MSP after return */ +#define EXC_RETURN_THREAD_MSP (0xFFFFFFF9UL) /* return to Thread mode, uses MSP after return */ +#define EXC_RETURN_THREAD_PSP (0xFFFFFFFDUL) /* return to Thread mode, uses PSP after return */ + + +/* Interrupt Priorities are WORD accessible only under Armv6-M */ +/* The following MACROS handle generation of the register offset and byte masks */ +#define _BIT_SHIFT(IRQn) ( ((((uint32_t)(int32_t)(IRQn)) ) & 0x03UL) * 8UL) +#define _SHP_IDX(IRQn) ( (((((uint32_t)(int32_t)(IRQn)) & 0x0FUL)-8UL) >> 2UL) ) +#define _IP_IDX(IRQn) ( (((uint32_t)(int32_t)(IRQn)) >> 2UL) ) + + +/** + \brief Enable Interrupt + \details Enables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + __COMPILER_BARRIER(); + NVIC->ISER[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __COMPILER_BARRIER(); + } +} + + +/** + \brief Get Interrupt Enable status + \details Returns a device specific interrupt enable status from the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt is not enabled. + \return 1 Interrupt is enabled. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISER[0U] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Disable Interrupt + \details Disables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_DisableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICER[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __DSB(); + __ISB(); + } +} + + +/** + \brief Get Pending Interrupt + \details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not pending. + \return 1 Interrupt status is pending. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISPR[0U] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Pending Interrupt + \details Sets the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ISPR[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Clear Pending Interrupt + \details Clears the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICPR[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Set Interrupt Priority + \details Sets the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \param [in] priority Priority to set. + \note The priority cannot be set for every processor exception. + */ +__STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->IP[_IP_IDX(IRQn)] = ((uint32_t)(NVIC->IP[_IP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | + (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn))); + } + else + { + SCB->SHP[_SHP_IDX(IRQn)] = ((uint32_t)(SCB->SHP[_SHP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | + (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn))); + } +} + + +/** + \brief Get Interrupt Priority + \details Reads the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Interrupt Priority. + Value is aligned automatically to the implemented priority bits of the microcontroller. + */ +__STATIC_INLINE uint32_t __NVIC_GetPriority(IRQn_Type IRQn) +{ + + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->IP[ _IP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return((uint32_t)(((SCB->SHP[_SHP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS))); + } +} + + +/** + \brief Set Interrupt Vector + \details Sets an interrupt vector in SRAM based interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + VTOR must been relocated to SRAM before. + \param [in] IRQn Interrupt number + \param [in] vector Address of interrupt handler function + */ +__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector) +{ + uint32_t *vectors = (uint32_t *)SCB->VTOR; + vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET] = vector; + /* ARM Application Note 321 states that the M0 and M0+ do not require the architectural barrier - assume SC000 is the same */ +} + + +/** + \brief Get Interrupt Vector + \details Reads an interrupt vector from interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Address of interrupt handler function + */ +__STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn) +{ + uint32_t *vectors = (uint32_t *)SCB->VTOR; + return vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET]; +} + + +/** + \brief System Reset + \details Initiates a system reset request to reset the MCU. + */ +__NO_RETURN __STATIC_INLINE void __NVIC_SystemReset(void) +{ + __DSB(); /* Ensure all outstanding memory accesses included + buffered write are completed before reset */ + SCB->AIRCR = ((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + SCB_AIRCR_SYSRESETREQ_Msk); + __DSB(); /* Ensure completion of memory access */ + + for(;;) /* wait until reset */ + { + __NOP(); + } +} + +/*@} end of CMSIS_Core_NVICFunctions */ + + +/* ########################## FPU functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_FpuFunctions FPU Functions + \brief Function that provides FPU type. + @{ + */ + +/** + \brief get FPU type + \details returns the FPU type + \returns + - \b 0: No FPU + - \b 1: Single precision FPU + - \b 2: Double + Single precision FPU + */ +__STATIC_INLINE uint32_t SCB_GetFPUType(void) +{ + return 0U; /* No FPU */ +} + + +/*@} end of CMSIS_Core_FpuFunctions */ + + + +/* ################################## SysTick function ############################################ */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SysTickFunctions SysTick Functions + \brief Functions that configure the System. + @{ + */ + +#if defined (__Vendor_SysTickConfig) && (__Vendor_SysTickConfig == 0U) + +/** + \brief System Tick Configuration + \details Initializes the System Timer and its interrupt, and starts the System Tick Timer. + Counter is in free running mode to generate periodic interrupts. + \param [in] ticks Number of ticks between two interrupts. + \return 0 Function succeeded. + \return 1 Function failed. + \note When the variable __Vendor_SysTickConfig is set to 1, then the + function SysTick_Config is not included. In this case, the file device.h + must contain a vendor-specific implementation of this function. + */ +__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks) +{ + if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) + { + return (1UL); /* Reload value impossible */ + } + + SysTick->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ + NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ + SysTick->VAL = 0UL; /* Load the SysTick Counter Value */ + SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0UL); /* Function successful */ +} + +#endif + +/*@} end of CMSIS_Core_SysTickFunctions */ + + + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_SC000_H_DEPENDANT */ + +#endif /* __CMSIS_GENERIC */ diff --git a/bsp/renesas/ra8m1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/core_sc300.h b/bsp/renesas/ra8m1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/core_sc300.h new file mode 100644 index 000000000000..d66621031e09 --- /dev/null +++ b/bsp/renesas/ra8m1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/core_sc300.h @@ -0,0 +1,1917 @@ +/**************************************************************************//** + * @file core_sc300.h + * @brief CMSIS SC300 Core Peripheral Access Layer Header File + * @version V5.0.10 + * @date 04. June 2021 + ******************************************************************************/ +/* + * Copyright (c) 2009-2021 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#elif defined (__clang__) + #pragma clang system_header /* treat file as system include file */ +#endif + +#ifndef __CORE_SC300_H_GENERIC +#define __CORE_SC300_H_GENERIC + +#include + +#ifdef __cplusplus + extern "C" { +#endif + +/** + \page CMSIS_MISRA_Exceptions MISRA-C:2004 Compliance Exceptions + CMSIS violates the following MISRA-C:2004 rules: + + \li Required Rule 8.5, object/function definition in header file.
+ Function definitions in header files are used to allow 'inlining'. + + \li Required Rule 18.4, declaration of union type or object of union type: '{...}'.
+ Unions are used for effective representation of core registers. + + \li Advisory Rule 19.7, Function-like macro defined.
+ Function-like macros are used to allow more efficient code. + */ + + +/******************************************************************************* + * CMSIS definitions + ******************************************************************************/ +/** + \ingroup SC3000 + @{ + */ + +#include "cmsis_version.h" + +/* CMSIS SC300 definitions */ +#define __SC300_CMSIS_VERSION_MAIN (__CM_CMSIS_VERSION_MAIN) /*!< \deprecated [31:16] CMSIS HAL main version */ +#define __SC300_CMSIS_VERSION_SUB (__CM_CMSIS_VERSION_SUB) /*!< \deprecated [15:0] CMSIS HAL sub version */ +#define __SC300_CMSIS_VERSION ((__SC300_CMSIS_VERSION_MAIN << 16U) | \ + __SC300_CMSIS_VERSION_SUB ) /*!< \deprecated CMSIS HAL version number */ + +#define __CORTEX_SC (300U) /*!< Cortex secure core */ + +/** __FPU_USED indicates whether an FPU is used or not. + This core does not support an FPU at all +*/ +#define __FPU_USED 0U + +#if defined ( __CC_ARM ) + #if defined __TARGET_FPU_VFP + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) + #if defined __ARM_FP + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __GNUC__ ) + #if defined (__VFP_FP__) && !defined(__SOFTFP__) + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __ICCARM__ ) + #if defined __ARMVFP__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __TI_ARM__ ) + #if defined __TI_VFP_SUPPORT__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __TASKING__ ) + #if defined __FPU_VFP__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __CSMC__ ) + #if ( __CSMC__ & 0x400U) + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#endif + +#include "cmsis_compiler.h" /* CMSIS compiler specific defines */ + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_SC300_H_GENERIC */ + +#ifndef __CMSIS_GENERIC + +#ifndef __CORE_SC300_H_DEPENDANT +#define __CORE_SC300_H_DEPENDANT + +#ifdef __cplusplus + extern "C" { +#endif + +/* check device defines and use defaults */ +#if defined __CHECK_DEVICE_DEFINES + #ifndef __SC300_REV + #define __SC300_REV 0x0000U + #warning "__SC300_REV not defined in device header file; using default!" + #endif + + #ifndef __MPU_PRESENT + #define __MPU_PRESENT 0U + #warning "__MPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __VTOR_PRESENT + #define __VTOR_PRESENT 1U + #warning "__VTOR_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __NVIC_PRIO_BITS + #define __NVIC_PRIO_BITS 3U + #warning "__NVIC_PRIO_BITS not defined in device header file; using default!" + #endif + + #ifndef __Vendor_SysTickConfig + #define __Vendor_SysTickConfig 0U + #warning "__Vendor_SysTickConfig not defined in device header file; using default!" + #endif +#endif + +/* IO definitions (access restrictions to peripheral registers) */ +/** + \defgroup CMSIS_glob_defs CMSIS Global Defines + + IO Type Qualifiers are used + \li to specify the access to peripheral variables. + \li for automatic generation of peripheral register debug information. +*/ +#ifdef __cplusplus + #define __I volatile /*!< Defines 'read only' permissions */ +#else + #define __I volatile const /*!< Defines 'read only' permissions */ +#endif +#define __O volatile /*!< Defines 'write only' permissions */ +#define __IO volatile /*!< Defines 'read / write' permissions */ + +/* following defines should be used for structure members */ +#define __IM volatile const /*! Defines 'read only' structure member permissions */ +#define __OM volatile /*! Defines 'write only' structure member permissions */ +#define __IOM volatile /*! Defines 'read / write' structure member permissions */ + +/*@} end of group SC300 */ + + + +/******************************************************************************* + * Register Abstraction + Core Register contain: + - Core Register + - Core NVIC Register + - Core SCB Register + - Core SysTick Register + - Core Debug Register + - Core MPU Register + ******************************************************************************/ +/** + \defgroup CMSIS_core_register Defines and Type Definitions + \brief Type definitions and defines for Cortex-M processor based devices. +*/ + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CORE Status and Control Registers + \brief Core Register type definitions. + @{ + */ + +/** + \brief Union type to access the Application Program Status Register (APSR). + */ +typedef union +{ + struct + { + uint32_t _reserved0:27; /*!< bit: 0..26 Reserved */ + uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} APSR_Type; + +/* APSR Register Definitions */ +#define APSR_N_Pos 31U /*!< APSR: N Position */ +#define APSR_N_Msk (1UL << APSR_N_Pos) /*!< APSR: N Mask */ + +#define APSR_Z_Pos 30U /*!< APSR: Z Position */ +#define APSR_Z_Msk (1UL << APSR_Z_Pos) /*!< APSR: Z Mask */ + +#define APSR_C_Pos 29U /*!< APSR: C Position */ +#define APSR_C_Msk (1UL << APSR_C_Pos) /*!< APSR: C Mask */ + +#define APSR_V_Pos 28U /*!< APSR: V Position */ +#define APSR_V_Msk (1UL << APSR_V_Pos) /*!< APSR: V Mask */ + +#define APSR_Q_Pos 27U /*!< APSR: Q Position */ +#define APSR_Q_Msk (1UL << APSR_Q_Pos) /*!< APSR: Q Mask */ + + +/** + \brief Union type to access the Interrupt Program Status Register (IPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:23; /*!< bit: 9..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} IPSR_Type; + +/* IPSR Register Definitions */ +#define IPSR_ISR_Pos 0U /*!< IPSR: ISR Position */ +#define IPSR_ISR_Msk (0x1FFUL /*<< IPSR_ISR_Pos*/) /*!< IPSR: ISR Mask */ + + +/** + \brief Union type to access the Special-Purpose Program Status Registers (xPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:1; /*!< bit: 9 Reserved */ + uint32_t ICI_IT_1:6; /*!< bit: 10..15 ICI/IT part 1 */ + uint32_t _reserved1:8; /*!< bit: 16..23 Reserved */ + uint32_t T:1; /*!< bit: 24 Thumb bit */ + uint32_t ICI_IT_2:2; /*!< bit: 25..26 ICI/IT part 2 */ + uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} xPSR_Type; + +/* xPSR Register Definitions */ +#define xPSR_N_Pos 31U /*!< xPSR: N Position */ +#define xPSR_N_Msk (1UL << xPSR_N_Pos) /*!< xPSR: N Mask */ + +#define xPSR_Z_Pos 30U /*!< xPSR: Z Position */ +#define xPSR_Z_Msk (1UL << xPSR_Z_Pos) /*!< xPSR: Z Mask */ + +#define xPSR_C_Pos 29U /*!< xPSR: C Position */ +#define xPSR_C_Msk (1UL << xPSR_C_Pos) /*!< xPSR: C Mask */ + +#define xPSR_V_Pos 28U /*!< xPSR: V Position */ +#define xPSR_V_Msk (1UL << xPSR_V_Pos) /*!< xPSR: V Mask */ + +#define xPSR_Q_Pos 27U /*!< xPSR: Q Position */ +#define xPSR_Q_Msk (1UL << xPSR_Q_Pos) /*!< xPSR: Q Mask */ + +#define xPSR_ICI_IT_2_Pos 25U /*!< xPSR: ICI/IT part 2 Position */ +#define xPSR_ICI_IT_2_Msk (3UL << xPSR_ICI_IT_2_Pos) /*!< xPSR: ICI/IT part 2 Mask */ + +#define xPSR_T_Pos 24U /*!< xPSR: T Position */ +#define xPSR_T_Msk (1UL << xPSR_T_Pos) /*!< xPSR: T Mask */ + +#define xPSR_ICI_IT_1_Pos 10U /*!< xPSR: ICI/IT part 1 Position */ +#define xPSR_ICI_IT_1_Msk (0x3FUL << xPSR_ICI_IT_1_Pos) /*!< xPSR: ICI/IT part 1 Mask */ + +#define xPSR_ISR_Pos 0U /*!< xPSR: ISR Position */ +#define xPSR_ISR_Msk (0x1FFUL /*<< xPSR_ISR_Pos*/) /*!< xPSR: ISR Mask */ + + +/** + \brief Union type to access the Control Registers (CONTROL). + */ +typedef union +{ + struct + { + uint32_t nPRIV:1; /*!< bit: 0 Execution privilege in Thread mode */ + uint32_t SPSEL:1; /*!< bit: 1 Stack to be used */ + uint32_t _reserved1:30; /*!< bit: 2..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} CONTROL_Type; + +/* CONTROL Register Definitions */ +#define CONTROL_SPSEL_Pos 1U /*!< CONTROL: SPSEL Position */ +#define CONTROL_SPSEL_Msk (1UL << CONTROL_SPSEL_Pos) /*!< CONTROL: SPSEL Mask */ + +#define CONTROL_nPRIV_Pos 0U /*!< CONTROL: nPRIV Position */ +#define CONTROL_nPRIV_Msk (1UL /*<< CONTROL_nPRIV_Pos*/) /*!< CONTROL: nPRIV Mask */ + +/*@} end of group CMSIS_CORE */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_NVIC Nested Vectored Interrupt Controller (NVIC) + \brief Type definitions for the NVIC Registers + @{ + */ + +/** + \brief Structure type to access the Nested Vectored Interrupt Controller (NVIC). + */ +typedef struct +{ + __IOM uint32_t ISER[8U]; /*!< Offset: 0x000 (R/W) Interrupt Set Enable Register */ + uint32_t RESERVED0[24U]; + __IOM uint32_t ICER[8U]; /*!< Offset: 0x080 (R/W) Interrupt Clear Enable Register */ + uint32_t RESERVED1[24U]; + __IOM uint32_t ISPR[8U]; /*!< Offset: 0x100 (R/W) Interrupt Set Pending Register */ + uint32_t RESERVED2[24U]; + __IOM uint32_t ICPR[8U]; /*!< Offset: 0x180 (R/W) Interrupt Clear Pending Register */ + uint32_t RESERVED3[24U]; + __IOM uint32_t IABR[8U]; /*!< Offset: 0x200 (R/W) Interrupt Active bit Register */ + uint32_t RESERVED4[56U]; + __IOM uint8_t IP[240U]; /*!< Offset: 0x300 (R/W) Interrupt Priority Register (8Bit wide) */ + uint32_t RESERVED5[644U]; + __OM uint32_t STIR; /*!< Offset: 0xE00 ( /W) Software Trigger Interrupt Register */ +} NVIC_Type; + +/* Software Triggered Interrupt Register Definitions */ +#define NVIC_STIR_INTID_Pos 0U /*!< STIR: INTLINESNUM Position */ +#define NVIC_STIR_INTID_Msk (0x1FFUL /*<< NVIC_STIR_INTID_Pos*/) /*!< STIR: INTLINESNUM Mask */ + +/*@} end of group CMSIS_NVIC */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SCB System Control Block (SCB) + \brief Type definitions for the System Control Block Registers + @{ + */ + +/** + \brief Structure type to access the System Control Block (SCB). + */ +typedef struct +{ + __IM uint32_t CPUID; /*!< Offset: 0x000 (R/ ) CPUID Base Register */ + __IOM uint32_t ICSR; /*!< Offset: 0x004 (R/W) Interrupt Control and State Register */ + __IOM uint32_t VTOR; /*!< Offset: 0x008 (R/W) Vector Table Offset Register */ + __IOM uint32_t AIRCR; /*!< Offset: 0x00C (R/W) Application Interrupt and Reset Control Register */ + __IOM uint32_t SCR; /*!< Offset: 0x010 (R/W) System Control Register */ + __IOM uint32_t CCR; /*!< Offset: 0x014 (R/W) Configuration Control Register */ + __IOM uint8_t SHP[12U]; /*!< Offset: 0x018 (R/W) System Handlers Priority Registers (4-7, 8-11, 12-15) */ + __IOM uint32_t SHCSR; /*!< Offset: 0x024 (R/W) System Handler Control and State Register */ + __IOM uint32_t CFSR; /*!< Offset: 0x028 (R/W) Configurable Fault Status Register */ + __IOM uint32_t HFSR; /*!< Offset: 0x02C (R/W) HardFault Status Register */ + __IOM uint32_t DFSR; /*!< Offset: 0x030 (R/W) Debug Fault Status Register */ + __IOM uint32_t MMFAR; /*!< Offset: 0x034 (R/W) MemManage Fault Address Register */ + __IOM uint32_t BFAR; /*!< Offset: 0x038 (R/W) BusFault Address Register */ + __IOM uint32_t AFSR; /*!< Offset: 0x03C (R/W) Auxiliary Fault Status Register */ + __IM uint32_t PFR[2U]; /*!< Offset: 0x040 (R/ ) Processor Feature Register */ + __IM uint32_t DFR; /*!< Offset: 0x048 (R/ ) Debug Feature Register */ + __IM uint32_t ADR; /*!< Offset: 0x04C (R/ ) Auxiliary Feature Register */ + __IM uint32_t MMFR[4U]; /*!< Offset: 0x050 (R/ ) Memory Model Feature Register */ + __IM uint32_t ISAR[5U]; /*!< Offset: 0x060 (R/ ) Instruction Set Attributes Register */ + uint32_t RESERVED0[5U]; + __IOM uint32_t CPACR; /*!< Offset: 0x088 (R/W) Coprocessor Access Control Register */ + uint32_t RESERVED1[129U]; + __IOM uint32_t SFCR; /*!< Offset: 0x290 (R/W) Security Features Control Register */ +} SCB_Type; + +/* SCB CPUID Register Definitions */ +#define SCB_CPUID_IMPLEMENTER_Pos 24U /*!< SCB CPUID: IMPLEMENTER Position */ +#define SCB_CPUID_IMPLEMENTER_Msk (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos) /*!< SCB CPUID: IMPLEMENTER Mask */ + +#define SCB_CPUID_VARIANT_Pos 20U /*!< SCB CPUID: VARIANT Position */ +#define SCB_CPUID_VARIANT_Msk (0xFUL << SCB_CPUID_VARIANT_Pos) /*!< SCB CPUID: VARIANT Mask */ + +#define SCB_CPUID_ARCHITECTURE_Pos 16U /*!< SCB CPUID: ARCHITECTURE Position */ +#define SCB_CPUID_ARCHITECTURE_Msk (0xFUL << SCB_CPUID_ARCHITECTURE_Pos) /*!< SCB CPUID: ARCHITECTURE Mask */ + +#define SCB_CPUID_PARTNO_Pos 4U /*!< SCB CPUID: PARTNO Position */ +#define SCB_CPUID_PARTNO_Msk (0xFFFUL << SCB_CPUID_PARTNO_Pos) /*!< SCB CPUID: PARTNO Mask */ + +#define SCB_CPUID_REVISION_Pos 0U /*!< SCB CPUID: REVISION Position */ +#define SCB_CPUID_REVISION_Msk (0xFUL /*<< SCB_CPUID_REVISION_Pos*/) /*!< SCB CPUID: REVISION Mask */ + +/* SCB Interrupt Control State Register Definitions */ +#define SCB_ICSR_NMIPENDSET_Pos 31U /*!< SCB ICSR: NMIPENDSET Position */ +#define SCB_ICSR_NMIPENDSET_Msk (1UL << SCB_ICSR_NMIPENDSET_Pos) /*!< SCB ICSR: NMIPENDSET Mask */ + +#define SCB_ICSR_PENDSVSET_Pos 28U /*!< SCB ICSR: PENDSVSET Position */ +#define SCB_ICSR_PENDSVSET_Msk (1UL << SCB_ICSR_PENDSVSET_Pos) /*!< SCB ICSR: PENDSVSET Mask */ + +#define SCB_ICSR_PENDSVCLR_Pos 27U /*!< SCB ICSR: PENDSVCLR Position */ +#define SCB_ICSR_PENDSVCLR_Msk (1UL << SCB_ICSR_PENDSVCLR_Pos) /*!< SCB ICSR: PENDSVCLR Mask */ + +#define SCB_ICSR_PENDSTSET_Pos 26U /*!< SCB ICSR: PENDSTSET Position */ +#define SCB_ICSR_PENDSTSET_Msk (1UL << SCB_ICSR_PENDSTSET_Pos) /*!< SCB ICSR: PENDSTSET Mask */ + +#define SCB_ICSR_PENDSTCLR_Pos 25U /*!< SCB ICSR: PENDSTCLR Position */ +#define SCB_ICSR_PENDSTCLR_Msk (1UL << SCB_ICSR_PENDSTCLR_Pos) /*!< SCB ICSR: PENDSTCLR Mask */ + +#define SCB_ICSR_ISRPREEMPT_Pos 23U /*!< SCB ICSR: ISRPREEMPT Position */ +#define SCB_ICSR_ISRPREEMPT_Msk (1UL << SCB_ICSR_ISRPREEMPT_Pos) /*!< SCB ICSR: ISRPREEMPT Mask */ + +#define SCB_ICSR_ISRPENDING_Pos 22U /*!< SCB ICSR: ISRPENDING Position */ +#define SCB_ICSR_ISRPENDING_Msk (1UL << SCB_ICSR_ISRPENDING_Pos) /*!< SCB ICSR: ISRPENDING Mask */ + +#define SCB_ICSR_VECTPENDING_Pos 12U /*!< SCB ICSR: VECTPENDING Position */ +#define SCB_ICSR_VECTPENDING_Msk (0x1FFUL << SCB_ICSR_VECTPENDING_Pos) /*!< SCB ICSR: VECTPENDING Mask */ + +#define SCB_ICSR_RETTOBASE_Pos 11U /*!< SCB ICSR: RETTOBASE Position */ +#define SCB_ICSR_RETTOBASE_Msk (1UL << SCB_ICSR_RETTOBASE_Pos) /*!< SCB ICSR: RETTOBASE Mask */ + +#define SCB_ICSR_VECTACTIVE_Pos 0U /*!< SCB ICSR: VECTACTIVE Position */ +#define SCB_ICSR_VECTACTIVE_Msk (0x1FFUL /*<< SCB_ICSR_VECTACTIVE_Pos*/) /*!< SCB ICSR: VECTACTIVE Mask */ + +/* SCB Vector Table Offset Register Definitions */ +#define SCB_VTOR_TBLBASE_Pos 29U /*!< SCB VTOR: TBLBASE Position */ +#define SCB_VTOR_TBLBASE_Msk (1UL << SCB_VTOR_TBLBASE_Pos) /*!< SCB VTOR: TBLBASE Mask */ + +#define SCB_VTOR_TBLOFF_Pos 7U /*!< SCB VTOR: TBLOFF Position */ +#define SCB_VTOR_TBLOFF_Msk (0x3FFFFFUL << SCB_VTOR_TBLOFF_Pos) /*!< SCB VTOR: TBLOFF Mask */ + +/* SCB Application Interrupt and Reset Control Register Definitions */ +#define SCB_AIRCR_VECTKEY_Pos 16U /*!< SCB AIRCR: VECTKEY Position */ +#define SCB_AIRCR_VECTKEY_Msk (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos) /*!< SCB AIRCR: VECTKEY Mask */ + +#define SCB_AIRCR_VECTKEYSTAT_Pos 16U /*!< SCB AIRCR: VECTKEYSTAT Position */ +#define SCB_AIRCR_VECTKEYSTAT_Msk (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos) /*!< SCB AIRCR: VECTKEYSTAT Mask */ + +#define SCB_AIRCR_ENDIANESS_Pos 15U /*!< SCB AIRCR: ENDIANESS Position */ +#define SCB_AIRCR_ENDIANESS_Msk (1UL << SCB_AIRCR_ENDIANESS_Pos) /*!< SCB AIRCR: ENDIANESS Mask */ + +#define SCB_AIRCR_PRIGROUP_Pos 8U /*!< SCB AIRCR: PRIGROUP Position */ +#define SCB_AIRCR_PRIGROUP_Msk (7UL << SCB_AIRCR_PRIGROUP_Pos) /*!< SCB AIRCR: PRIGROUP Mask */ + +#define SCB_AIRCR_SYSRESETREQ_Pos 2U /*!< SCB AIRCR: SYSRESETREQ Position */ +#define SCB_AIRCR_SYSRESETREQ_Msk (1UL << SCB_AIRCR_SYSRESETREQ_Pos) /*!< SCB AIRCR: SYSRESETREQ Mask */ + +#define SCB_AIRCR_VECTCLRACTIVE_Pos 1U /*!< SCB AIRCR: VECTCLRACTIVE Position */ +#define SCB_AIRCR_VECTCLRACTIVE_Msk (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos) /*!< SCB AIRCR: VECTCLRACTIVE Mask */ + +#define SCB_AIRCR_VECTRESET_Pos 0U /*!< SCB AIRCR: VECTRESET Position */ +#define SCB_AIRCR_VECTRESET_Msk (1UL /*<< SCB_AIRCR_VECTRESET_Pos*/) /*!< SCB AIRCR: VECTRESET Mask */ + +/* SCB System Control Register Definitions */ +#define SCB_SCR_SEVONPEND_Pos 4U /*!< SCB SCR: SEVONPEND Position */ +#define SCB_SCR_SEVONPEND_Msk (1UL << SCB_SCR_SEVONPEND_Pos) /*!< SCB SCR: SEVONPEND Mask */ + +#define SCB_SCR_SLEEPDEEP_Pos 2U /*!< SCB SCR: SLEEPDEEP Position */ +#define SCB_SCR_SLEEPDEEP_Msk (1UL << SCB_SCR_SLEEPDEEP_Pos) /*!< SCB SCR: SLEEPDEEP Mask */ + +#define SCB_SCR_SLEEPONEXIT_Pos 1U /*!< SCB SCR: SLEEPONEXIT Position */ +#define SCB_SCR_SLEEPONEXIT_Msk (1UL << SCB_SCR_SLEEPONEXIT_Pos) /*!< SCB SCR: SLEEPONEXIT Mask */ + +/* SCB Configuration Control Register Definitions */ +#define SCB_CCR_STKALIGN_Pos 9U /*!< SCB CCR: STKALIGN Position */ +#define SCB_CCR_STKALIGN_Msk (1UL << SCB_CCR_STKALIGN_Pos) /*!< SCB CCR: STKALIGN Mask */ + +#define SCB_CCR_BFHFNMIGN_Pos 8U /*!< SCB CCR: BFHFNMIGN Position */ +#define SCB_CCR_BFHFNMIGN_Msk (1UL << SCB_CCR_BFHFNMIGN_Pos) /*!< SCB CCR: BFHFNMIGN Mask */ + +#define SCB_CCR_DIV_0_TRP_Pos 4U /*!< SCB CCR: DIV_0_TRP Position */ +#define SCB_CCR_DIV_0_TRP_Msk (1UL << SCB_CCR_DIV_0_TRP_Pos) /*!< SCB CCR: DIV_0_TRP Mask */ + +#define SCB_CCR_UNALIGN_TRP_Pos 3U /*!< SCB CCR: UNALIGN_TRP Position */ +#define SCB_CCR_UNALIGN_TRP_Msk (1UL << SCB_CCR_UNALIGN_TRP_Pos) /*!< SCB CCR: UNALIGN_TRP Mask */ + +#define SCB_CCR_USERSETMPEND_Pos 1U /*!< SCB CCR: USERSETMPEND Position */ +#define SCB_CCR_USERSETMPEND_Msk (1UL << SCB_CCR_USERSETMPEND_Pos) /*!< SCB CCR: USERSETMPEND Mask */ + +#define SCB_CCR_NONBASETHRDENA_Pos 0U /*!< SCB CCR: NONBASETHRDENA Position */ +#define SCB_CCR_NONBASETHRDENA_Msk (1UL /*<< SCB_CCR_NONBASETHRDENA_Pos*/) /*!< SCB CCR: NONBASETHRDENA Mask */ + +/* SCB System Handler Control and State Register Definitions */ +#define SCB_SHCSR_USGFAULTENA_Pos 18U /*!< SCB SHCSR: USGFAULTENA Position */ +#define SCB_SHCSR_USGFAULTENA_Msk (1UL << SCB_SHCSR_USGFAULTENA_Pos) /*!< SCB SHCSR: USGFAULTENA Mask */ + +#define SCB_SHCSR_BUSFAULTENA_Pos 17U /*!< SCB SHCSR: BUSFAULTENA Position */ +#define SCB_SHCSR_BUSFAULTENA_Msk (1UL << SCB_SHCSR_BUSFAULTENA_Pos) /*!< SCB SHCSR: BUSFAULTENA Mask */ + +#define SCB_SHCSR_MEMFAULTENA_Pos 16U /*!< SCB SHCSR: MEMFAULTENA Position */ +#define SCB_SHCSR_MEMFAULTENA_Msk (1UL << SCB_SHCSR_MEMFAULTENA_Pos) /*!< SCB SHCSR: MEMFAULTENA Mask */ + +#define SCB_SHCSR_SVCALLPENDED_Pos 15U /*!< SCB SHCSR: SVCALLPENDED Position */ +#define SCB_SHCSR_SVCALLPENDED_Msk (1UL << SCB_SHCSR_SVCALLPENDED_Pos) /*!< SCB SHCSR: SVCALLPENDED Mask */ + +#define SCB_SHCSR_BUSFAULTPENDED_Pos 14U /*!< SCB SHCSR: BUSFAULTPENDED Position */ +#define SCB_SHCSR_BUSFAULTPENDED_Msk (1UL << SCB_SHCSR_BUSFAULTPENDED_Pos) /*!< SCB SHCSR: BUSFAULTPENDED Mask */ + +#define SCB_SHCSR_MEMFAULTPENDED_Pos 13U /*!< SCB SHCSR: MEMFAULTPENDED Position */ +#define SCB_SHCSR_MEMFAULTPENDED_Msk (1UL << SCB_SHCSR_MEMFAULTPENDED_Pos) /*!< SCB SHCSR: MEMFAULTPENDED Mask */ + +#define SCB_SHCSR_USGFAULTPENDED_Pos 12U /*!< SCB SHCSR: USGFAULTPENDED Position */ +#define SCB_SHCSR_USGFAULTPENDED_Msk (1UL << SCB_SHCSR_USGFAULTPENDED_Pos) /*!< SCB SHCSR: USGFAULTPENDED Mask */ + +#define SCB_SHCSR_SYSTICKACT_Pos 11U /*!< SCB SHCSR: SYSTICKACT Position */ +#define SCB_SHCSR_SYSTICKACT_Msk (1UL << SCB_SHCSR_SYSTICKACT_Pos) /*!< SCB SHCSR: SYSTICKACT Mask */ + +#define SCB_SHCSR_PENDSVACT_Pos 10U /*!< SCB SHCSR: PENDSVACT Position */ +#define SCB_SHCSR_PENDSVACT_Msk (1UL << SCB_SHCSR_PENDSVACT_Pos) /*!< SCB SHCSR: PENDSVACT Mask */ + +#define SCB_SHCSR_MONITORACT_Pos 8U /*!< SCB SHCSR: MONITORACT Position */ +#define SCB_SHCSR_MONITORACT_Msk (1UL << SCB_SHCSR_MONITORACT_Pos) /*!< SCB SHCSR: MONITORACT Mask */ + +#define SCB_SHCSR_SVCALLACT_Pos 7U /*!< SCB SHCSR: SVCALLACT Position */ +#define SCB_SHCSR_SVCALLACT_Msk (1UL << SCB_SHCSR_SVCALLACT_Pos) /*!< SCB SHCSR: SVCALLACT Mask */ + +#define SCB_SHCSR_USGFAULTACT_Pos 3U /*!< SCB SHCSR: USGFAULTACT Position */ +#define SCB_SHCSR_USGFAULTACT_Msk (1UL << SCB_SHCSR_USGFAULTACT_Pos) /*!< SCB SHCSR: USGFAULTACT Mask */ + +#define SCB_SHCSR_BUSFAULTACT_Pos 1U /*!< SCB SHCSR: BUSFAULTACT Position */ +#define SCB_SHCSR_BUSFAULTACT_Msk (1UL << SCB_SHCSR_BUSFAULTACT_Pos) /*!< SCB SHCSR: BUSFAULTACT Mask */ + +#define SCB_SHCSR_MEMFAULTACT_Pos 0U /*!< SCB SHCSR: MEMFAULTACT Position */ +#define SCB_SHCSR_MEMFAULTACT_Msk (1UL /*<< SCB_SHCSR_MEMFAULTACT_Pos*/) /*!< SCB SHCSR: MEMFAULTACT Mask */ + +/* SCB Configurable Fault Status Register Definitions */ +#define SCB_CFSR_USGFAULTSR_Pos 16U /*!< SCB CFSR: Usage Fault Status Register Position */ +#define SCB_CFSR_USGFAULTSR_Msk (0xFFFFUL << SCB_CFSR_USGFAULTSR_Pos) /*!< SCB CFSR: Usage Fault Status Register Mask */ + +#define SCB_CFSR_BUSFAULTSR_Pos 8U /*!< SCB CFSR: Bus Fault Status Register Position */ +#define SCB_CFSR_BUSFAULTSR_Msk (0xFFUL << SCB_CFSR_BUSFAULTSR_Pos) /*!< SCB CFSR: Bus Fault Status Register Mask */ + +#define SCB_CFSR_MEMFAULTSR_Pos 0U /*!< SCB CFSR: Memory Manage Fault Status Register Position */ +#define SCB_CFSR_MEMFAULTSR_Msk (0xFFUL /*<< SCB_CFSR_MEMFAULTSR_Pos*/) /*!< SCB CFSR: Memory Manage Fault Status Register Mask */ + +/* MemManage Fault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_MMARVALID_Pos (SCB_CFSR_MEMFAULTSR_Pos + 7U) /*!< SCB CFSR (MMFSR): MMARVALID Position */ +#define SCB_CFSR_MMARVALID_Msk (1UL << SCB_CFSR_MMARVALID_Pos) /*!< SCB CFSR (MMFSR): MMARVALID Mask */ + +#define SCB_CFSR_MSTKERR_Pos (SCB_CFSR_MEMFAULTSR_Pos + 4U) /*!< SCB CFSR (MMFSR): MSTKERR Position */ +#define SCB_CFSR_MSTKERR_Msk (1UL << SCB_CFSR_MSTKERR_Pos) /*!< SCB CFSR (MMFSR): MSTKERR Mask */ + +#define SCB_CFSR_MUNSTKERR_Pos (SCB_CFSR_MEMFAULTSR_Pos + 3U) /*!< SCB CFSR (MMFSR): MUNSTKERR Position */ +#define SCB_CFSR_MUNSTKERR_Msk (1UL << SCB_CFSR_MUNSTKERR_Pos) /*!< SCB CFSR (MMFSR): MUNSTKERR Mask */ + +#define SCB_CFSR_DACCVIOL_Pos (SCB_CFSR_MEMFAULTSR_Pos + 1U) /*!< SCB CFSR (MMFSR): DACCVIOL Position */ +#define SCB_CFSR_DACCVIOL_Msk (1UL << SCB_CFSR_DACCVIOL_Pos) /*!< SCB CFSR (MMFSR): DACCVIOL Mask */ + +#define SCB_CFSR_IACCVIOL_Pos (SCB_CFSR_MEMFAULTSR_Pos + 0U) /*!< SCB CFSR (MMFSR): IACCVIOL Position */ +#define SCB_CFSR_IACCVIOL_Msk (1UL /*<< SCB_CFSR_IACCVIOL_Pos*/) /*!< SCB CFSR (MMFSR): IACCVIOL Mask */ + +/* BusFault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_BFARVALID_Pos (SCB_CFSR_BUSFAULTSR_Pos + 7U) /*!< SCB CFSR (BFSR): BFARVALID Position */ +#define SCB_CFSR_BFARVALID_Msk (1UL << SCB_CFSR_BFARVALID_Pos) /*!< SCB CFSR (BFSR): BFARVALID Mask */ + +#define SCB_CFSR_STKERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 4U) /*!< SCB CFSR (BFSR): STKERR Position */ +#define SCB_CFSR_STKERR_Msk (1UL << SCB_CFSR_STKERR_Pos) /*!< SCB CFSR (BFSR): STKERR Mask */ + +#define SCB_CFSR_UNSTKERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 3U) /*!< SCB CFSR (BFSR): UNSTKERR Position */ +#define SCB_CFSR_UNSTKERR_Msk (1UL << SCB_CFSR_UNSTKERR_Pos) /*!< SCB CFSR (BFSR): UNSTKERR Mask */ + +#define SCB_CFSR_IMPRECISERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 2U) /*!< SCB CFSR (BFSR): IMPRECISERR Position */ +#define SCB_CFSR_IMPRECISERR_Msk (1UL << SCB_CFSR_IMPRECISERR_Pos) /*!< SCB CFSR (BFSR): IMPRECISERR Mask */ + +#define SCB_CFSR_PRECISERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 1U) /*!< SCB CFSR (BFSR): PRECISERR Position */ +#define SCB_CFSR_PRECISERR_Msk (1UL << SCB_CFSR_PRECISERR_Pos) /*!< SCB CFSR (BFSR): PRECISERR Mask */ + +#define SCB_CFSR_IBUSERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 0U) /*!< SCB CFSR (BFSR): IBUSERR Position */ +#define SCB_CFSR_IBUSERR_Msk (1UL << SCB_CFSR_IBUSERR_Pos) /*!< SCB CFSR (BFSR): IBUSERR Mask */ + +/* UsageFault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_DIVBYZERO_Pos (SCB_CFSR_USGFAULTSR_Pos + 9U) /*!< SCB CFSR (UFSR): DIVBYZERO Position */ +#define SCB_CFSR_DIVBYZERO_Msk (1UL << SCB_CFSR_DIVBYZERO_Pos) /*!< SCB CFSR (UFSR): DIVBYZERO Mask */ + +#define SCB_CFSR_UNALIGNED_Pos (SCB_CFSR_USGFAULTSR_Pos + 8U) /*!< SCB CFSR (UFSR): UNALIGNED Position */ +#define SCB_CFSR_UNALIGNED_Msk (1UL << SCB_CFSR_UNALIGNED_Pos) /*!< SCB CFSR (UFSR): UNALIGNED Mask */ + +#define SCB_CFSR_NOCP_Pos (SCB_CFSR_USGFAULTSR_Pos + 3U) /*!< SCB CFSR (UFSR): NOCP Position */ +#define SCB_CFSR_NOCP_Msk (1UL << SCB_CFSR_NOCP_Pos) /*!< SCB CFSR (UFSR): NOCP Mask */ + +#define SCB_CFSR_INVPC_Pos (SCB_CFSR_USGFAULTSR_Pos + 2U) /*!< SCB CFSR (UFSR): INVPC Position */ +#define SCB_CFSR_INVPC_Msk (1UL << SCB_CFSR_INVPC_Pos) /*!< SCB CFSR (UFSR): INVPC Mask */ + +#define SCB_CFSR_INVSTATE_Pos (SCB_CFSR_USGFAULTSR_Pos + 1U) /*!< SCB CFSR (UFSR): INVSTATE Position */ +#define SCB_CFSR_INVSTATE_Msk (1UL << SCB_CFSR_INVSTATE_Pos) /*!< SCB CFSR (UFSR): INVSTATE Mask */ + +#define SCB_CFSR_UNDEFINSTR_Pos (SCB_CFSR_USGFAULTSR_Pos + 0U) /*!< SCB CFSR (UFSR): UNDEFINSTR Position */ +#define SCB_CFSR_UNDEFINSTR_Msk (1UL << SCB_CFSR_UNDEFINSTR_Pos) /*!< SCB CFSR (UFSR): UNDEFINSTR Mask */ + +/* SCB Hard Fault Status Register Definitions */ +#define SCB_HFSR_DEBUGEVT_Pos 31U /*!< SCB HFSR: DEBUGEVT Position */ +#define SCB_HFSR_DEBUGEVT_Msk (1UL << SCB_HFSR_DEBUGEVT_Pos) /*!< SCB HFSR: DEBUGEVT Mask */ + +#define SCB_HFSR_FORCED_Pos 30U /*!< SCB HFSR: FORCED Position */ +#define SCB_HFSR_FORCED_Msk (1UL << SCB_HFSR_FORCED_Pos) /*!< SCB HFSR: FORCED Mask */ + +#define SCB_HFSR_VECTTBL_Pos 1U /*!< SCB HFSR: VECTTBL Position */ +#define SCB_HFSR_VECTTBL_Msk (1UL << SCB_HFSR_VECTTBL_Pos) /*!< SCB HFSR: VECTTBL Mask */ + +/* SCB Debug Fault Status Register Definitions */ +#define SCB_DFSR_EXTERNAL_Pos 4U /*!< SCB DFSR: EXTERNAL Position */ +#define SCB_DFSR_EXTERNAL_Msk (1UL << SCB_DFSR_EXTERNAL_Pos) /*!< SCB DFSR: EXTERNAL Mask */ + +#define SCB_DFSR_VCATCH_Pos 3U /*!< SCB DFSR: VCATCH Position */ +#define SCB_DFSR_VCATCH_Msk (1UL << SCB_DFSR_VCATCH_Pos) /*!< SCB DFSR: VCATCH Mask */ + +#define SCB_DFSR_DWTTRAP_Pos 2U /*!< SCB DFSR: DWTTRAP Position */ +#define SCB_DFSR_DWTTRAP_Msk (1UL << SCB_DFSR_DWTTRAP_Pos) /*!< SCB DFSR: DWTTRAP Mask */ + +#define SCB_DFSR_BKPT_Pos 1U /*!< SCB DFSR: BKPT Position */ +#define SCB_DFSR_BKPT_Msk (1UL << SCB_DFSR_BKPT_Pos) /*!< SCB DFSR: BKPT Mask */ + +#define SCB_DFSR_HALTED_Pos 0U /*!< SCB DFSR: HALTED Position */ +#define SCB_DFSR_HALTED_Msk (1UL /*<< SCB_DFSR_HALTED_Pos*/) /*!< SCB DFSR: HALTED Mask */ + +/*@} end of group CMSIS_SCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SCnSCB System Controls not in SCB (SCnSCB) + \brief Type definitions for the System Control and ID Register not in the SCB + @{ + */ + +/** + \brief Structure type to access the System Control and ID Register not in the SCB. + */ +typedef struct +{ + uint32_t RESERVED0[1U]; + __IM uint32_t ICTR; /*!< Offset: 0x004 (R/ ) Interrupt Controller Type Register */ + __IOM uint32_t ACTLR; /*!< Offset: 0x008 (R/W) Auxiliary Control Register */ +} SCnSCB_Type; + +/* Interrupt Controller Type Register Definitions */ +#define SCnSCB_ICTR_INTLINESNUM_Pos 0U /*!< ICTR: INTLINESNUM Position */ +#define SCnSCB_ICTR_INTLINESNUM_Msk (0xFUL /*<< SCnSCB_ICTR_INTLINESNUM_Pos*/) /*!< ICTR: INTLINESNUM Mask */ + +/* Auxiliary Control Register Definitions */ +#define SCnSCB_ACTLR_DISFOLD_Pos 2U /*!< ACTLR: DISFOLD Position */ +#define SCnSCB_ACTLR_DISFOLD_Msk (1UL << SCnSCB_ACTLR_DISFOLD_Pos) /*!< ACTLR: DISFOLD Mask */ + +#define SCnSCB_ACTLR_DISDEFWBUF_Pos 1U /*!< ACTLR: DISDEFWBUF Position */ +#define SCnSCB_ACTLR_DISDEFWBUF_Msk (1UL << SCnSCB_ACTLR_DISDEFWBUF_Pos) /*!< ACTLR: DISDEFWBUF Mask */ + +#define SCnSCB_ACTLR_DISMCYCINT_Pos 0U /*!< ACTLR: DISMCYCINT Position */ +#define SCnSCB_ACTLR_DISMCYCINT_Msk (1UL /*<< SCnSCB_ACTLR_DISMCYCINT_Pos*/) /*!< ACTLR: DISMCYCINT Mask */ + +/*@} end of group CMSIS_SCnotSCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SysTick System Tick Timer (SysTick) + \brief Type definitions for the System Timer Registers. + @{ + */ + +/** + \brief Structure type to access the System Timer (SysTick). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SysTick Control and Status Register */ + __IOM uint32_t LOAD; /*!< Offset: 0x004 (R/W) SysTick Reload Value Register */ + __IOM uint32_t VAL; /*!< Offset: 0x008 (R/W) SysTick Current Value Register */ + __IM uint32_t CALIB; /*!< Offset: 0x00C (R/ ) SysTick Calibration Register */ +} SysTick_Type; + +/* SysTick Control / Status Register Definitions */ +#define SysTick_CTRL_COUNTFLAG_Pos 16U /*!< SysTick CTRL: COUNTFLAG Position */ +#define SysTick_CTRL_COUNTFLAG_Msk (1UL << SysTick_CTRL_COUNTFLAG_Pos) /*!< SysTick CTRL: COUNTFLAG Mask */ + +#define SysTick_CTRL_CLKSOURCE_Pos 2U /*!< SysTick CTRL: CLKSOURCE Position */ +#define SysTick_CTRL_CLKSOURCE_Msk (1UL << SysTick_CTRL_CLKSOURCE_Pos) /*!< SysTick CTRL: CLKSOURCE Mask */ + +#define SysTick_CTRL_TICKINT_Pos 1U /*!< SysTick CTRL: TICKINT Position */ +#define SysTick_CTRL_TICKINT_Msk (1UL << SysTick_CTRL_TICKINT_Pos) /*!< SysTick CTRL: TICKINT Mask */ + +#define SysTick_CTRL_ENABLE_Pos 0U /*!< SysTick CTRL: ENABLE Position */ +#define SysTick_CTRL_ENABLE_Msk (1UL /*<< SysTick_CTRL_ENABLE_Pos*/) /*!< SysTick CTRL: ENABLE Mask */ + +/* SysTick Reload Register Definitions */ +#define SysTick_LOAD_RELOAD_Pos 0U /*!< SysTick LOAD: RELOAD Position */ +#define SysTick_LOAD_RELOAD_Msk (0xFFFFFFUL /*<< SysTick_LOAD_RELOAD_Pos*/) /*!< SysTick LOAD: RELOAD Mask */ + +/* SysTick Current Register Definitions */ +#define SysTick_VAL_CURRENT_Pos 0U /*!< SysTick VAL: CURRENT Position */ +#define SysTick_VAL_CURRENT_Msk (0xFFFFFFUL /*<< SysTick_VAL_CURRENT_Pos*/) /*!< SysTick VAL: CURRENT Mask */ + +/* SysTick Calibration Register Definitions */ +#define SysTick_CALIB_NOREF_Pos 31U /*!< SysTick CALIB: NOREF Position */ +#define SysTick_CALIB_NOREF_Msk (1UL << SysTick_CALIB_NOREF_Pos) /*!< SysTick CALIB: NOREF Mask */ + +#define SysTick_CALIB_SKEW_Pos 30U /*!< SysTick CALIB: SKEW Position */ +#define SysTick_CALIB_SKEW_Msk (1UL << SysTick_CALIB_SKEW_Pos) /*!< SysTick CALIB: SKEW Mask */ + +#define SysTick_CALIB_TENMS_Pos 0U /*!< SysTick CALIB: TENMS Position */ +#define SysTick_CALIB_TENMS_Msk (0xFFFFFFUL /*<< SysTick_CALIB_TENMS_Pos*/) /*!< SysTick CALIB: TENMS Mask */ + +/*@} end of group CMSIS_SysTick */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_ITM Instrumentation Trace Macrocell (ITM) + \brief Type definitions for the Instrumentation Trace Macrocell (ITM) + @{ + */ + +/** + \brief Structure type to access the Instrumentation Trace Macrocell Register (ITM). + */ +typedef struct +{ + __OM union + { + __OM uint8_t u8; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 8-bit */ + __OM uint16_t u16; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 16-bit */ + __OM uint32_t u32; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 32-bit */ + } PORT [32U]; /*!< Offset: 0x000 ( /W) ITM Stimulus Port Registers */ + uint32_t RESERVED0[864U]; + __IOM uint32_t TER; /*!< Offset: 0xE00 (R/W) ITM Trace Enable Register */ + uint32_t RESERVED1[15U]; + __IOM uint32_t TPR; /*!< Offset: 0xE40 (R/W) ITM Trace Privilege Register */ + uint32_t RESERVED2[15U]; + __IOM uint32_t TCR; /*!< Offset: 0xE80 (R/W) ITM Trace Control Register */ + uint32_t RESERVED3[32U]; + uint32_t RESERVED4[43U]; + __OM uint32_t LAR; /*!< Offset: 0xFB0 ( /W) ITM Lock Access Register */ + __IM uint32_t LSR; /*!< Offset: 0xFB4 (R/ ) ITM Lock Status Register */ + uint32_t RESERVED5[6U]; + __IM uint32_t PID4; /*!< Offset: 0xFD0 (R/ ) ITM Peripheral Identification Register #4 */ + __IM uint32_t PID5; /*!< Offset: 0xFD4 (R/ ) ITM Peripheral Identification Register #5 */ + __IM uint32_t PID6; /*!< Offset: 0xFD8 (R/ ) ITM Peripheral Identification Register #6 */ + __IM uint32_t PID7; /*!< Offset: 0xFDC (R/ ) ITM Peripheral Identification Register #7 */ + __IM uint32_t PID0; /*!< Offset: 0xFE0 (R/ ) ITM Peripheral Identification Register #0 */ + __IM uint32_t PID1; /*!< Offset: 0xFE4 (R/ ) ITM Peripheral Identification Register #1 */ + __IM uint32_t PID2; /*!< Offset: 0xFE8 (R/ ) ITM Peripheral Identification Register #2 */ + __IM uint32_t PID3; /*!< Offset: 0xFEC (R/ ) ITM Peripheral Identification Register #3 */ + __IM uint32_t CID0; /*!< Offset: 0xFF0 (R/ ) ITM Component Identification Register #0 */ + __IM uint32_t CID1; /*!< Offset: 0xFF4 (R/ ) ITM Component Identification Register #1 */ + __IM uint32_t CID2; /*!< Offset: 0xFF8 (R/ ) ITM Component Identification Register #2 */ + __IM uint32_t CID3; /*!< Offset: 0xFFC (R/ ) ITM Component Identification Register #3 */ +} ITM_Type; + +/* ITM Trace Privilege Register Definitions */ +#define ITM_TPR_PRIVMASK_Pos 0U /*!< ITM TPR: PRIVMASK Position */ +#define ITM_TPR_PRIVMASK_Msk (0xFUL /*<< ITM_TPR_PRIVMASK_Pos*/) /*!< ITM TPR: PRIVMASK Mask */ + +/* ITM Trace Control Register Definitions */ +#define ITM_TCR_BUSY_Pos 23U /*!< ITM TCR: BUSY Position */ +#define ITM_TCR_BUSY_Msk (1UL << ITM_TCR_BUSY_Pos) /*!< ITM TCR: BUSY Mask */ + +#define ITM_TCR_TraceBusID_Pos 16U /*!< ITM TCR: ATBID Position */ +#define ITM_TCR_TraceBusID_Msk (0x7FUL << ITM_TCR_TraceBusID_Pos) /*!< ITM TCR: ATBID Mask */ + +#define ITM_TCR_GTSFREQ_Pos 10U /*!< ITM TCR: Global timestamp frequency Position */ +#define ITM_TCR_GTSFREQ_Msk (3UL << ITM_TCR_GTSFREQ_Pos) /*!< ITM TCR: Global timestamp frequency Mask */ + +#define ITM_TCR_TSPrescale_Pos 8U /*!< ITM TCR: TSPrescale Position */ +#define ITM_TCR_TSPrescale_Msk (3UL << ITM_TCR_TSPrescale_Pos) /*!< ITM TCR: TSPrescale Mask */ + +#define ITM_TCR_SWOENA_Pos 4U /*!< ITM TCR: SWOENA Position */ +#define ITM_TCR_SWOENA_Msk (1UL << ITM_TCR_SWOENA_Pos) /*!< ITM TCR: SWOENA Mask */ + +#define ITM_TCR_DWTENA_Pos 3U /*!< ITM TCR: DWTENA Position */ +#define ITM_TCR_DWTENA_Msk (1UL << ITM_TCR_DWTENA_Pos) /*!< ITM TCR: DWTENA Mask */ + +#define ITM_TCR_SYNCENA_Pos 2U /*!< ITM TCR: SYNCENA Position */ +#define ITM_TCR_SYNCENA_Msk (1UL << ITM_TCR_SYNCENA_Pos) /*!< ITM TCR: SYNCENA Mask */ + +#define ITM_TCR_TSENA_Pos 1U /*!< ITM TCR: TSENA Position */ +#define ITM_TCR_TSENA_Msk (1UL << ITM_TCR_TSENA_Pos) /*!< ITM TCR: TSENA Mask */ + +#define ITM_TCR_ITMENA_Pos 0U /*!< ITM TCR: ITM Enable bit Position */ +#define ITM_TCR_ITMENA_Msk (1UL /*<< ITM_TCR_ITMENA_Pos*/) /*!< ITM TCR: ITM Enable bit Mask */ + +/* ITM Lock Status Register Definitions */ +#define ITM_LSR_ByteAcc_Pos 2U /*!< ITM LSR: ByteAcc Position */ +#define ITM_LSR_ByteAcc_Msk (1UL << ITM_LSR_ByteAcc_Pos) /*!< ITM LSR: ByteAcc Mask */ + +#define ITM_LSR_Access_Pos 1U /*!< ITM LSR: Access Position */ +#define ITM_LSR_Access_Msk (1UL << ITM_LSR_Access_Pos) /*!< ITM LSR: Access Mask */ + +#define ITM_LSR_Present_Pos 0U /*!< ITM LSR: Present Position */ +#define ITM_LSR_Present_Msk (1UL /*<< ITM_LSR_Present_Pos*/) /*!< ITM LSR: Present Mask */ + +/*@}*/ /* end of group CMSIS_ITM */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_DWT Data Watchpoint and Trace (DWT) + \brief Type definitions for the Data Watchpoint and Trace (DWT) + @{ + */ + +/** + \brief Structure type to access the Data Watchpoint and Trace Register (DWT). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) Control Register */ + __IOM uint32_t CYCCNT; /*!< Offset: 0x004 (R/W) Cycle Count Register */ + __IOM uint32_t CPICNT; /*!< Offset: 0x008 (R/W) CPI Count Register */ + __IOM uint32_t EXCCNT; /*!< Offset: 0x00C (R/W) Exception Overhead Count Register */ + __IOM uint32_t SLEEPCNT; /*!< Offset: 0x010 (R/W) Sleep Count Register */ + __IOM uint32_t LSUCNT; /*!< Offset: 0x014 (R/W) LSU Count Register */ + __IOM uint32_t FOLDCNT; /*!< Offset: 0x018 (R/W) Folded-instruction Count Register */ + __IM uint32_t PCSR; /*!< Offset: 0x01C (R/ ) Program Counter Sample Register */ + __IOM uint32_t COMP0; /*!< Offset: 0x020 (R/W) Comparator Register 0 */ + __IOM uint32_t MASK0; /*!< Offset: 0x024 (R/W) Mask Register 0 */ + __IOM uint32_t FUNCTION0; /*!< Offset: 0x028 (R/W) Function Register 0 */ + uint32_t RESERVED0[1U]; + __IOM uint32_t COMP1; /*!< Offset: 0x030 (R/W) Comparator Register 1 */ + __IOM uint32_t MASK1; /*!< Offset: 0x034 (R/W) Mask Register 1 */ + __IOM uint32_t FUNCTION1; /*!< Offset: 0x038 (R/W) Function Register 1 */ + uint32_t RESERVED1[1U]; + __IOM uint32_t COMP2; /*!< Offset: 0x040 (R/W) Comparator Register 2 */ + __IOM uint32_t MASK2; /*!< Offset: 0x044 (R/W) Mask Register 2 */ + __IOM uint32_t FUNCTION2; /*!< Offset: 0x048 (R/W) Function Register 2 */ + uint32_t RESERVED2[1U]; + __IOM uint32_t COMP3; /*!< Offset: 0x050 (R/W) Comparator Register 3 */ + __IOM uint32_t MASK3; /*!< Offset: 0x054 (R/W) Mask Register 3 */ + __IOM uint32_t FUNCTION3; /*!< Offset: 0x058 (R/W) Function Register 3 */ +} DWT_Type; + +/* DWT Control Register Definitions */ +#define DWT_CTRL_NUMCOMP_Pos 28U /*!< DWT CTRL: NUMCOMP Position */ +#define DWT_CTRL_NUMCOMP_Msk (0xFUL << DWT_CTRL_NUMCOMP_Pos) /*!< DWT CTRL: NUMCOMP Mask */ + +#define DWT_CTRL_NOTRCPKT_Pos 27U /*!< DWT CTRL: NOTRCPKT Position */ +#define DWT_CTRL_NOTRCPKT_Msk (0x1UL << DWT_CTRL_NOTRCPKT_Pos) /*!< DWT CTRL: NOTRCPKT Mask */ + +#define DWT_CTRL_NOEXTTRIG_Pos 26U /*!< DWT CTRL: NOEXTTRIG Position */ +#define DWT_CTRL_NOEXTTRIG_Msk (0x1UL << DWT_CTRL_NOEXTTRIG_Pos) /*!< DWT CTRL: NOEXTTRIG Mask */ + +#define DWT_CTRL_NOCYCCNT_Pos 25U /*!< DWT CTRL: NOCYCCNT Position */ +#define DWT_CTRL_NOCYCCNT_Msk (0x1UL << DWT_CTRL_NOCYCCNT_Pos) /*!< DWT CTRL: NOCYCCNT Mask */ + +#define DWT_CTRL_NOPRFCNT_Pos 24U /*!< DWT CTRL: NOPRFCNT Position */ +#define DWT_CTRL_NOPRFCNT_Msk (0x1UL << DWT_CTRL_NOPRFCNT_Pos) /*!< DWT CTRL: NOPRFCNT Mask */ + +#define DWT_CTRL_CYCEVTENA_Pos 22U /*!< DWT CTRL: CYCEVTENA Position */ +#define DWT_CTRL_CYCEVTENA_Msk (0x1UL << DWT_CTRL_CYCEVTENA_Pos) /*!< DWT CTRL: CYCEVTENA Mask */ + +#define DWT_CTRL_FOLDEVTENA_Pos 21U /*!< DWT CTRL: FOLDEVTENA Position */ +#define DWT_CTRL_FOLDEVTENA_Msk (0x1UL << DWT_CTRL_FOLDEVTENA_Pos) /*!< DWT CTRL: FOLDEVTENA Mask */ + +#define DWT_CTRL_LSUEVTENA_Pos 20U /*!< DWT CTRL: LSUEVTENA Position */ +#define DWT_CTRL_LSUEVTENA_Msk (0x1UL << DWT_CTRL_LSUEVTENA_Pos) /*!< DWT CTRL: LSUEVTENA Mask */ + +#define DWT_CTRL_SLEEPEVTENA_Pos 19U /*!< DWT CTRL: SLEEPEVTENA Position */ +#define DWT_CTRL_SLEEPEVTENA_Msk (0x1UL << DWT_CTRL_SLEEPEVTENA_Pos) /*!< DWT CTRL: SLEEPEVTENA Mask */ + +#define DWT_CTRL_EXCEVTENA_Pos 18U /*!< DWT CTRL: EXCEVTENA Position */ +#define DWT_CTRL_EXCEVTENA_Msk (0x1UL << DWT_CTRL_EXCEVTENA_Pos) /*!< DWT CTRL: EXCEVTENA Mask */ + +#define DWT_CTRL_CPIEVTENA_Pos 17U /*!< DWT CTRL: CPIEVTENA Position */ +#define DWT_CTRL_CPIEVTENA_Msk (0x1UL << DWT_CTRL_CPIEVTENA_Pos) /*!< DWT CTRL: CPIEVTENA Mask */ + +#define DWT_CTRL_EXCTRCENA_Pos 16U /*!< DWT CTRL: EXCTRCENA Position */ +#define DWT_CTRL_EXCTRCENA_Msk (0x1UL << DWT_CTRL_EXCTRCENA_Pos) /*!< DWT CTRL: EXCTRCENA Mask */ + +#define DWT_CTRL_PCSAMPLENA_Pos 12U /*!< DWT CTRL: PCSAMPLENA Position */ +#define DWT_CTRL_PCSAMPLENA_Msk (0x1UL << DWT_CTRL_PCSAMPLENA_Pos) /*!< DWT CTRL: PCSAMPLENA Mask */ + +#define DWT_CTRL_SYNCTAP_Pos 10U /*!< DWT CTRL: SYNCTAP Position */ +#define DWT_CTRL_SYNCTAP_Msk (0x3UL << DWT_CTRL_SYNCTAP_Pos) /*!< DWT CTRL: SYNCTAP Mask */ + +#define DWT_CTRL_CYCTAP_Pos 9U /*!< DWT CTRL: CYCTAP Position */ +#define DWT_CTRL_CYCTAP_Msk (0x1UL << DWT_CTRL_CYCTAP_Pos) /*!< DWT CTRL: CYCTAP Mask */ + +#define DWT_CTRL_POSTINIT_Pos 5U /*!< DWT CTRL: POSTINIT Position */ +#define DWT_CTRL_POSTINIT_Msk (0xFUL << DWT_CTRL_POSTINIT_Pos) /*!< DWT CTRL: POSTINIT Mask */ + +#define DWT_CTRL_POSTPRESET_Pos 1U /*!< DWT CTRL: POSTPRESET Position */ +#define DWT_CTRL_POSTPRESET_Msk (0xFUL << DWT_CTRL_POSTPRESET_Pos) /*!< DWT CTRL: POSTPRESET Mask */ + +#define DWT_CTRL_CYCCNTENA_Pos 0U /*!< DWT CTRL: CYCCNTENA Position */ +#define DWT_CTRL_CYCCNTENA_Msk (0x1UL /*<< DWT_CTRL_CYCCNTENA_Pos*/) /*!< DWT CTRL: CYCCNTENA Mask */ + +/* DWT CPI Count Register Definitions */ +#define DWT_CPICNT_CPICNT_Pos 0U /*!< DWT CPICNT: CPICNT Position */ +#define DWT_CPICNT_CPICNT_Msk (0xFFUL /*<< DWT_CPICNT_CPICNT_Pos*/) /*!< DWT CPICNT: CPICNT Mask */ + +/* DWT Exception Overhead Count Register Definitions */ +#define DWT_EXCCNT_EXCCNT_Pos 0U /*!< DWT EXCCNT: EXCCNT Position */ +#define DWT_EXCCNT_EXCCNT_Msk (0xFFUL /*<< DWT_EXCCNT_EXCCNT_Pos*/) /*!< DWT EXCCNT: EXCCNT Mask */ + +/* DWT Sleep Count Register Definitions */ +#define DWT_SLEEPCNT_SLEEPCNT_Pos 0U /*!< DWT SLEEPCNT: SLEEPCNT Position */ +#define DWT_SLEEPCNT_SLEEPCNT_Msk (0xFFUL /*<< DWT_SLEEPCNT_SLEEPCNT_Pos*/) /*!< DWT SLEEPCNT: SLEEPCNT Mask */ + +/* DWT LSU Count Register Definitions */ +#define DWT_LSUCNT_LSUCNT_Pos 0U /*!< DWT LSUCNT: LSUCNT Position */ +#define DWT_LSUCNT_LSUCNT_Msk (0xFFUL /*<< DWT_LSUCNT_LSUCNT_Pos*/) /*!< DWT LSUCNT: LSUCNT Mask */ + +/* DWT Folded-instruction Count Register Definitions */ +#define DWT_FOLDCNT_FOLDCNT_Pos 0U /*!< DWT FOLDCNT: FOLDCNT Position */ +#define DWT_FOLDCNT_FOLDCNT_Msk (0xFFUL /*<< DWT_FOLDCNT_FOLDCNT_Pos*/) /*!< DWT FOLDCNT: FOLDCNT Mask */ + +/* DWT Comparator Mask Register Definitions */ +#define DWT_MASK_MASK_Pos 0U /*!< DWT MASK: MASK Position */ +#define DWT_MASK_MASK_Msk (0x1FUL /*<< DWT_MASK_MASK_Pos*/) /*!< DWT MASK: MASK Mask */ + +/* DWT Comparator Function Register Definitions */ +#define DWT_FUNCTION_MATCHED_Pos 24U /*!< DWT FUNCTION: MATCHED Position */ +#define DWT_FUNCTION_MATCHED_Msk (0x1UL << DWT_FUNCTION_MATCHED_Pos) /*!< DWT FUNCTION: MATCHED Mask */ + +#define DWT_FUNCTION_DATAVADDR1_Pos 16U /*!< DWT FUNCTION: DATAVADDR1 Position */ +#define DWT_FUNCTION_DATAVADDR1_Msk (0xFUL << DWT_FUNCTION_DATAVADDR1_Pos) /*!< DWT FUNCTION: DATAVADDR1 Mask */ + +#define DWT_FUNCTION_DATAVADDR0_Pos 12U /*!< DWT FUNCTION: DATAVADDR0 Position */ +#define DWT_FUNCTION_DATAVADDR0_Msk (0xFUL << DWT_FUNCTION_DATAVADDR0_Pos) /*!< DWT FUNCTION: DATAVADDR0 Mask */ + +#define DWT_FUNCTION_DATAVSIZE_Pos 10U /*!< DWT FUNCTION: DATAVSIZE Position */ +#define DWT_FUNCTION_DATAVSIZE_Msk (0x3UL << DWT_FUNCTION_DATAVSIZE_Pos) /*!< DWT FUNCTION: DATAVSIZE Mask */ + +#define DWT_FUNCTION_LNK1ENA_Pos 9U /*!< DWT FUNCTION: LNK1ENA Position */ +#define DWT_FUNCTION_LNK1ENA_Msk (0x1UL << DWT_FUNCTION_LNK1ENA_Pos) /*!< DWT FUNCTION: LNK1ENA Mask */ + +#define DWT_FUNCTION_DATAVMATCH_Pos 8U /*!< DWT FUNCTION: DATAVMATCH Position */ +#define DWT_FUNCTION_DATAVMATCH_Msk (0x1UL << DWT_FUNCTION_DATAVMATCH_Pos) /*!< DWT FUNCTION: DATAVMATCH Mask */ + +#define DWT_FUNCTION_CYCMATCH_Pos 7U /*!< DWT FUNCTION: CYCMATCH Position */ +#define DWT_FUNCTION_CYCMATCH_Msk (0x1UL << DWT_FUNCTION_CYCMATCH_Pos) /*!< DWT FUNCTION: CYCMATCH Mask */ + +#define DWT_FUNCTION_EMITRANGE_Pos 5U /*!< DWT FUNCTION: EMITRANGE Position */ +#define DWT_FUNCTION_EMITRANGE_Msk (0x1UL << DWT_FUNCTION_EMITRANGE_Pos) /*!< DWT FUNCTION: EMITRANGE Mask */ + +#define DWT_FUNCTION_FUNCTION_Pos 0U /*!< DWT FUNCTION: FUNCTION Position */ +#define DWT_FUNCTION_FUNCTION_Msk (0xFUL /*<< DWT_FUNCTION_FUNCTION_Pos*/) /*!< DWT FUNCTION: FUNCTION Mask */ + +/*@}*/ /* end of group CMSIS_DWT */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_TPI Trace Port Interface (TPI) + \brief Type definitions for the Trace Port Interface (TPI) + @{ + */ + +/** + \brief Structure type to access the Trace Port Interface Register (TPI). + */ +typedef struct +{ + __IM uint32_t SSPSR; /*!< Offset: 0x000 (R/ ) Supported Parallel Port Size Register */ + __IOM uint32_t CSPSR; /*!< Offset: 0x004 (R/W) Current Parallel Port Size Register */ + uint32_t RESERVED0[2U]; + __IOM uint32_t ACPR; /*!< Offset: 0x010 (R/W) Asynchronous Clock Prescaler Register */ + uint32_t RESERVED1[55U]; + __IOM uint32_t SPPR; /*!< Offset: 0x0F0 (R/W) Selected Pin Protocol Register */ + uint32_t RESERVED2[131U]; + __IM uint32_t FFSR; /*!< Offset: 0x300 (R/ ) Formatter and Flush Status Register */ + __IOM uint32_t FFCR; /*!< Offset: 0x304 (R/W) Formatter and Flush Control Register */ + __IM uint32_t FSCR; /*!< Offset: 0x308 (R/ ) Formatter Synchronization Counter Register */ + uint32_t RESERVED3[759U]; + __IM uint32_t TRIGGER; /*!< Offset: 0xEE8 (R/ ) TRIGGER Register */ + __IM uint32_t FIFO0; /*!< Offset: 0xEEC (R/ ) Integration ETM Data */ + __IM uint32_t ITATBCTR2; /*!< Offset: 0xEF0 (R/ ) ITATBCTR2 */ + uint32_t RESERVED4[1U]; + __IM uint32_t ITATBCTR0; /*!< Offset: 0xEF8 (R/ ) ITATBCTR0 */ + __IM uint32_t FIFO1; /*!< Offset: 0xEFC (R/ ) Integration ITM Data */ + __IOM uint32_t ITCTRL; /*!< Offset: 0xF00 (R/W) Integration Mode Control */ + uint32_t RESERVED5[39U]; + __IOM uint32_t CLAIMSET; /*!< Offset: 0xFA0 (R/W) Claim tag set */ + __IOM uint32_t CLAIMCLR; /*!< Offset: 0xFA4 (R/W) Claim tag clear */ + uint32_t RESERVED7[8U]; + __IM uint32_t DEVID; /*!< Offset: 0xFC8 (R/ ) TPIU_DEVID */ + __IM uint32_t DEVTYPE; /*!< Offset: 0xFCC (R/ ) TPIU_DEVTYPE */ +} TPI_Type; + +/* TPI Asynchronous Clock Prescaler Register Definitions */ +#define TPI_ACPR_PRESCALER_Pos 0U /*!< TPI ACPR: PRESCALER Position */ +#define TPI_ACPR_PRESCALER_Msk (0x1FFFUL /*<< TPI_ACPR_PRESCALER_Pos*/) /*!< TPI ACPR: PRESCALER Mask */ + +/* TPI Selected Pin Protocol Register Definitions */ +#define TPI_SPPR_TXMODE_Pos 0U /*!< TPI SPPR: TXMODE Position */ +#define TPI_SPPR_TXMODE_Msk (0x3UL /*<< TPI_SPPR_TXMODE_Pos*/) /*!< TPI SPPR: TXMODE Mask */ + +/* TPI Formatter and Flush Status Register Definitions */ +#define TPI_FFSR_FtNonStop_Pos 3U /*!< TPI FFSR: FtNonStop Position */ +#define TPI_FFSR_FtNonStop_Msk (0x1UL << TPI_FFSR_FtNonStop_Pos) /*!< TPI FFSR: FtNonStop Mask */ + +#define TPI_FFSR_TCPresent_Pos 2U /*!< TPI FFSR: TCPresent Position */ +#define TPI_FFSR_TCPresent_Msk (0x1UL << TPI_FFSR_TCPresent_Pos) /*!< TPI FFSR: TCPresent Mask */ + +#define TPI_FFSR_FtStopped_Pos 1U /*!< TPI FFSR: FtStopped Position */ +#define TPI_FFSR_FtStopped_Msk (0x1UL << TPI_FFSR_FtStopped_Pos) /*!< TPI FFSR: FtStopped Mask */ + +#define TPI_FFSR_FlInProg_Pos 0U /*!< TPI FFSR: FlInProg Position */ +#define TPI_FFSR_FlInProg_Msk (0x1UL /*<< TPI_FFSR_FlInProg_Pos*/) /*!< TPI FFSR: FlInProg Mask */ + +/* TPI Formatter and Flush Control Register Definitions */ +#define TPI_FFCR_TrigIn_Pos 8U /*!< TPI FFCR: TrigIn Position */ +#define TPI_FFCR_TrigIn_Msk (0x1UL << TPI_FFCR_TrigIn_Pos) /*!< TPI FFCR: TrigIn Mask */ + +#define TPI_FFCR_EnFCont_Pos 1U /*!< TPI FFCR: EnFCont Position */ +#define TPI_FFCR_EnFCont_Msk (0x1UL << TPI_FFCR_EnFCont_Pos) /*!< TPI FFCR: EnFCont Mask */ + +/* TPI TRIGGER Register Definitions */ +#define TPI_TRIGGER_TRIGGER_Pos 0U /*!< TPI TRIGGER: TRIGGER Position */ +#define TPI_TRIGGER_TRIGGER_Msk (0x1UL /*<< TPI_TRIGGER_TRIGGER_Pos*/) /*!< TPI TRIGGER: TRIGGER Mask */ + +/* TPI Integration ETM Data Register Definitions (FIFO0) */ +#define TPI_FIFO0_ITM_ATVALID_Pos 29U /*!< TPI FIFO0: ITM_ATVALID Position */ +#define TPI_FIFO0_ITM_ATVALID_Msk (0x1UL << TPI_FIFO0_ITM_ATVALID_Pos) /*!< TPI FIFO0: ITM_ATVALID Mask */ + +#define TPI_FIFO0_ITM_bytecount_Pos 27U /*!< TPI FIFO0: ITM_bytecount Position */ +#define TPI_FIFO0_ITM_bytecount_Msk (0x3UL << TPI_FIFO0_ITM_bytecount_Pos) /*!< TPI FIFO0: ITM_bytecount Mask */ + +#define TPI_FIFO0_ETM_ATVALID_Pos 26U /*!< TPI FIFO0: ETM_ATVALID Position */ +#define TPI_FIFO0_ETM_ATVALID_Msk (0x1UL << TPI_FIFO0_ETM_ATVALID_Pos) /*!< TPI FIFO0: ETM_ATVALID Mask */ + +#define TPI_FIFO0_ETM_bytecount_Pos 24U /*!< TPI FIFO0: ETM_bytecount Position */ +#define TPI_FIFO0_ETM_bytecount_Msk (0x3UL << TPI_FIFO0_ETM_bytecount_Pos) /*!< TPI FIFO0: ETM_bytecount Mask */ + +#define TPI_FIFO0_ETM2_Pos 16U /*!< TPI FIFO0: ETM2 Position */ +#define TPI_FIFO0_ETM2_Msk (0xFFUL << TPI_FIFO0_ETM2_Pos) /*!< TPI FIFO0: ETM2 Mask */ + +#define TPI_FIFO0_ETM1_Pos 8U /*!< TPI FIFO0: ETM1 Position */ +#define TPI_FIFO0_ETM1_Msk (0xFFUL << TPI_FIFO0_ETM1_Pos) /*!< TPI FIFO0: ETM1 Mask */ + +#define TPI_FIFO0_ETM0_Pos 0U /*!< TPI FIFO0: ETM0 Position */ +#define TPI_FIFO0_ETM0_Msk (0xFFUL /*<< TPI_FIFO0_ETM0_Pos*/) /*!< TPI FIFO0: ETM0 Mask */ + +/* TPI ITATBCTR2 Register Definitions */ +#define TPI_ITATBCTR2_ATREADY2_Pos 0U /*!< TPI ITATBCTR2: ATREADY2 Position */ +#define TPI_ITATBCTR2_ATREADY2_Msk (0x1UL /*<< TPI_ITATBCTR2_ATREADY2_Pos*/) /*!< TPI ITATBCTR2: ATREADY2 Mask */ + +#define TPI_ITATBCTR2_ATREADY1_Pos 0U /*!< TPI ITATBCTR2: ATREADY1 Position */ +#define TPI_ITATBCTR2_ATREADY1_Msk (0x1UL /*<< TPI_ITATBCTR2_ATREADY1_Pos*/) /*!< TPI ITATBCTR2: ATREADY1 Mask */ + +/* TPI Integration ITM Data Register Definitions (FIFO1) */ +#define TPI_FIFO1_ITM_ATVALID_Pos 29U /*!< TPI FIFO1: ITM_ATVALID Position */ +#define TPI_FIFO1_ITM_ATVALID_Msk (0x1UL << TPI_FIFO1_ITM_ATVALID_Pos) /*!< TPI FIFO1: ITM_ATVALID Mask */ + +#define TPI_FIFO1_ITM_bytecount_Pos 27U /*!< TPI FIFO1: ITM_bytecount Position */ +#define TPI_FIFO1_ITM_bytecount_Msk (0x3UL << TPI_FIFO1_ITM_bytecount_Pos) /*!< TPI FIFO1: ITM_bytecount Mask */ + +#define TPI_FIFO1_ETM_ATVALID_Pos 26U /*!< TPI FIFO1: ETM_ATVALID Position */ +#define TPI_FIFO1_ETM_ATVALID_Msk (0x1UL << TPI_FIFO1_ETM_ATVALID_Pos) /*!< TPI FIFO1: ETM_ATVALID Mask */ + +#define TPI_FIFO1_ETM_bytecount_Pos 24U /*!< TPI FIFO1: ETM_bytecount Position */ +#define TPI_FIFO1_ETM_bytecount_Msk (0x3UL << TPI_FIFO1_ETM_bytecount_Pos) /*!< TPI FIFO1: ETM_bytecount Mask */ + +#define TPI_FIFO1_ITM2_Pos 16U /*!< TPI FIFO1: ITM2 Position */ +#define TPI_FIFO1_ITM2_Msk (0xFFUL << TPI_FIFO1_ITM2_Pos) /*!< TPI FIFO1: ITM2 Mask */ + +#define TPI_FIFO1_ITM1_Pos 8U /*!< TPI FIFO1: ITM1 Position */ +#define TPI_FIFO1_ITM1_Msk (0xFFUL << TPI_FIFO1_ITM1_Pos) /*!< TPI FIFO1: ITM1 Mask */ + +#define TPI_FIFO1_ITM0_Pos 0U /*!< TPI FIFO1: ITM0 Position */ +#define TPI_FIFO1_ITM0_Msk (0xFFUL /*<< TPI_FIFO1_ITM0_Pos*/) /*!< TPI FIFO1: ITM0 Mask */ + +/* TPI ITATBCTR0 Register Definitions */ +#define TPI_ITATBCTR0_ATREADY2_Pos 0U /*!< TPI ITATBCTR0: ATREADY2 Position */ +#define TPI_ITATBCTR0_ATREADY2_Msk (0x1UL /*<< TPI_ITATBCTR0_ATREADY2_Pos*/) /*!< TPI ITATBCTR0: ATREADY2 Mask */ + +#define TPI_ITATBCTR0_ATREADY1_Pos 0U /*!< TPI ITATBCTR0: ATREADY1 Position */ +#define TPI_ITATBCTR0_ATREADY1_Msk (0x1UL /*<< TPI_ITATBCTR0_ATREADY1_Pos*/) /*!< TPI ITATBCTR0: ATREADY1 Mask */ + +/* TPI Integration Mode Control Register Definitions */ +#define TPI_ITCTRL_Mode_Pos 0U /*!< TPI ITCTRL: Mode Position */ +#define TPI_ITCTRL_Mode_Msk (0x3UL /*<< TPI_ITCTRL_Mode_Pos*/) /*!< TPI ITCTRL: Mode Mask */ + +/* TPI DEVID Register Definitions */ +#define TPI_DEVID_NRZVALID_Pos 11U /*!< TPI DEVID: NRZVALID Position */ +#define TPI_DEVID_NRZVALID_Msk (0x1UL << TPI_DEVID_NRZVALID_Pos) /*!< TPI DEVID: NRZVALID Mask */ + +#define TPI_DEVID_MANCVALID_Pos 10U /*!< TPI DEVID: MANCVALID Position */ +#define TPI_DEVID_MANCVALID_Msk (0x1UL << TPI_DEVID_MANCVALID_Pos) /*!< TPI DEVID: MANCVALID Mask */ + +#define TPI_DEVID_PTINVALID_Pos 9U /*!< TPI DEVID: PTINVALID Position */ +#define TPI_DEVID_PTINVALID_Msk (0x1UL << TPI_DEVID_PTINVALID_Pos) /*!< TPI DEVID: PTINVALID Mask */ + +#define TPI_DEVID_MinBufSz_Pos 6U /*!< TPI DEVID: MinBufSz Position */ +#define TPI_DEVID_MinBufSz_Msk (0x7UL << TPI_DEVID_MinBufSz_Pos) /*!< TPI DEVID: MinBufSz Mask */ + +#define TPI_DEVID_AsynClkIn_Pos 5U /*!< TPI DEVID: AsynClkIn Position */ +#define TPI_DEVID_AsynClkIn_Msk (0x1UL << TPI_DEVID_AsynClkIn_Pos) /*!< TPI DEVID: AsynClkIn Mask */ + +#define TPI_DEVID_NrTraceInput_Pos 0U /*!< TPI DEVID: NrTraceInput Position */ +#define TPI_DEVID_NrTraceInput_Msk (0x1FUL /*<< TPI_DEVID_NrTraceInput_Pos*/) /*!< TPI DEVID: NrTraceInput Mask */ + +/* TPI DEVTYPE Register Definitions */ +#define TPI_DEVTYPE_SubType_Pos 4U /*!< TPI DEVTYPE: SubType Position */ +#define TPI_DEVTYPE_SubType_Msk (0xFUL /*<< TPI_DEVTYPE_SubType_Pos*/) /*!< TPI DEVTYPE: SubType Mask */ + +#define TPI_DEVTYPE_MajorType_Pos 0U /*!< TPI DEVTYPE: MajorType Position */ +#define TPI_DEVTYPE_MajorType_Msk (0xFUL << TPI_DEVTYPE_MajorType_Pos) /*!< TPI DEVTYPE: MajorType Mask */ + +/*@}*/ /* end of group CMSIS_TPI */ + + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_MPU Memory Protection Unit (MPU) + \brief Type definitions for the Memory Protection Unit (MPU) + @{ + */ + +/** + \brief Structure type to access the Memory Protection Unit (MPU). + */ +typedef struct +{ + __IM uint32_t TYPE; /*!< Offset: 0x000 (R/ ) MPU Type Register */ + __IOM uint32_t CTRL; /*!< Offset: 0x004 (R/W) MPU Control Register */ + __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) MPU Region RNRber Register */ + __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) MPU Region Base Address Register */ + __IOM uint32_t RASR; /*!< Offset: 0x010 (R/W) MPU Region Attribute and Size Register */ + __IOM uint32_t RBAR_A1; /*!< Offset: 0x014 (R/W) MPU Alias 1 Region Base Address Register */ + __IOM uint32_t RASR_A1; /*!< Offset: 0x018 (R/W) MPU Alias 1 Region Attribute and Size Register */ + __IOM uint32_t RBAR_A2; /*!< Offset: 0x01C (R/W) MPU Alias 2 Region Base Address Register */ + __IOM uint32_t RASR_A2; /*!< Offset: 0x020 (R/W) MPU Alias 2 Region Attribute and Size Register */ + __IOM uint32_t RBAR_A3; /*!< Offset: 0x024 (R/W) MPU Alias 3 Region Base Address Register */ + __IOM uint32_t RASR_A3; /*!< Offset: 0x028 (R/W) MPU Alias 3 Region Attribute and Size Register */ +} MPU_Type; + +/* MPU Type Register Definitions */ +#define MPU_TYPE_IREGION_Pos 16U /*!< MPU TYPE: IREGION Position */ +#define MPU_TYPE_IREGION_Msk (0xFFUL << MPU_TYPE_IREGION_Pos) /*!< MPU TYPE: IREGION Mask */ + +#define MPU_TYPE_DREGION_Pos 8U /*!< MPU TYPE: DREGION Position */ +#define MPU_TYPE_DREGION_Msk (0xFFUL << MPU_TYPE_DREGION_Pos) /*!< MPU TYPE: DREGION Mask */ + +#define MPU_TYPE_SEPARATE_Pos 0U /*!< MPU TYPE: SEPARATE Position */ +#define MPU_TYPE_SEPARATE_Msk (1UL /*<< MPU_TYPE_SEPARATE_Pos*/) /*!< MPU TYPE: SEPARATE Mask */ + +/* MPU Control Register Definitions */ +#define MPU_CTRL_PRIVDEFENA_Pos 2U /*!< MPU CTRL: PRIVDEFENA Position */ +#define MPU_CTRL_PRIVDEFENA_Msk (1UL << MPU_CTRL_PRIVDEFENA_Pos) /*!< MPU CTRL: PRIVDEFENA Mask */ + +#define MPU_CTRL_HFNMIENA_Pos 1U /*!< MPU CTRL: HFNMIENA Position */ +#define MPU_CTRL_HFNMIENA_Msk (1UL << MPU_CTRL_HFNMIENA_Pos) /*!< MPU CTRL: HFNMIENA Mask */ + +#define MPU_CTRL_ENABLE_Pos 0U /*!< MPU CTRL: ENABLE Position */ +#define MPU_CTRL_ENABLE_Msk (1UL /*<< MPU_CTRL_ENABLE_Pos*/) /*!< MPU CTRL: ENABLE Mask */ + +/* MPU Region Number Register Definitions */ +#define MPU_RNR_REGION_Pos 0U /*!< MPU RNR: REGION Position */ +#define MPU_RNR_REGION_Msk (0xFFUL /*<< MPU_RNR_REGION_Pos*/) /*!< MPU RNR: REGION Mask */ + +/* MPU Region Base Address Register Definitions */ +#define MPU_RBAR_ADDR_Pos 5U /*!< MPU RBAR: ADDR Position */ +#define MPU_RBAR_ADDR_Msk (0x7FFFFFFUL << MPU_RBAR_ADDR_Pos) /*!< MPU RBAR: ADDR Mask */ + +#define MPU_RBAR_VALID_Pos 4U /*!< MPU RBAR: VALID Position */ +#define MPU_RBAR_VALID_Msk (1UL << MPU_RBAR_VALID_Pos) /*!< MPU RBAR: VALID Mask */ + +#define MPU_RBAR_REGION_Pos 0U /*!< MPU RBAR: REGION Position */ +#define MPU_RBAR_REGION_Msk (0xFUL /*<< MPU_RBAR_REGION_Pos*/) /*!< MPU RBAR: REGION Mask */ + +/* MPU Region Attribute and Size Register Definitions */ +#define MPU_RASR_ATTRS_Pos 16U /*!< MPU RASR: MPU Region Attribute field Position */ +#define MPU_RASR_ATTRS_Msk (0xFFFFUL << MPU_RASR_ATTRS_Pos) /*!< MPU RASR: MPU Region Attribute field Mask */ + +#define MPU_RASR_XN_Pos 28U /*!< MPU RASR: ATTRS.XN Position */ +#define MPU_RASR_XN_Msk (1UL << MPU_RASR_XN_Pos) /*!< MPU RASR: ATTRS.XN Mask */ + +#define MPU_RASR_AP_Pos 24U /*!< MPU RASR: ATTRS.AP Position */ +#define MPU_RASR_AP_Msk (0x7UL << MPU_RASR_AP_Pos) /*!< MPU RASR: ATTRS.AP Mask */ + +#define MPU_RASR_TEX_Pos 19U /*!< MPU RASR: ATTRS.TEX Position */ +#define MPU_RASR_TEX_Msk (0x7UL << MPU_RASR_TEX_Pos) /*!< MPU RASR: ATTRS.TEX Mask */ + +#define MPU_RASR_S_Pos 18U /*!< MPU RASR: ATTRS.S Position */ +#define MPU_RASR_S_Msk (1UL << MPU_RASR_S_Pos) /*!< MPU RASR: ATTRS.S Mask */ + +#define MPU_RASR_C_Pos 17U /*!< MPU RASR: ATTRS.C Position */ +#define MPU_RASR_C_Msk (1UL << MPU_RASR_C_Pos) /*!< MPU RASR: ATTRS.C Mask */ + +#define MPU_RASR_B_Pos 16U /*!< MPU RASR: ATTRS.B Position */ +#define MPU_RASR_B_Msk (1UL << MPU_RASR_B_Pos) /*!< MPU RASR: ATTRS.B Mask */ + +#define MPU_RASR_SRD_Pos 8U /*!< MPU RASR: Sub-Region Disable Position */ +#define MPU_RASR_SRD_Msk (0xFFUL << MPU_RASR_SRD_Pos) /*!< MPU RASR: Sub-Region Disable Mask */ + +#define MPU_RASR_SIZE_Pos 1U /*!< MPU RASR: Region Size Field Position */ +#define MPU_RASR_SIZE_Msk (0x1FUL << MPU_RASR_SIZE_Pos) /*!< MPU RASR: Region Size Field Mask */ + +#define MPU_RASR_ENABLE_Pos 0U /*!< MPU RASR: Region enable bit Position */ +#define MPU_RASR_ENABLE_Msk (1UL /*<< MPU_RASR_ENABLE_Pos*/) /*!< MPU RASR: Region enable bit Disable Mask */ + +/*@} end of group CMSIS_MPU */ +#endif + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CoreDebug Core Debug Registers (CoreDebug) + \brief Type definitions for the Core Debug Registers + @{ + */ + +/** + \brief Structure type to access the Core Debug Register (CoreDebug). + */ +typedef struct +{ + __IOM uint32_t DHCSR; /*!< Offset: 0x000 (R/W) Debug Halting Control and Status Register */ + __OM uint32_t DCRSR; /*!< Offset: 0x004 ( /W) Debug Core Register Selector Register */ + __IOM uint32_t DCRDR; /*!< Offset: 0x008 (R/W) Debug Core Register Data Register */ + __IOM uint32_t DEMCR; /*!< Offset: 0x00C (R/W) Debug Exception and Monitor Control Register */ +} CoreDebug_Type; + +/* Debug Halting Control and Status Register Definitions */ +#define CoreDebug_DHCSR_DBGKEY_Pos 16U /*!< CoreDebug DHCSR: DBGKEY Position */ +#define CoreDebug_DHCSR_DBGKEY_Msk (0xFFFFUL << CoreDebug_DHCSR_DBGKEY_Pos) /*!< CoreDebug DHCSR: DBGKEY Mask */ + +#define CoreDebug_DHCSR_S_RESET_ST_Pos 25U /*!< CoreDebug DHCSR: S_RESET_ST Position */ +#define CoreDebug_DHCSR_S_RESET_ST_Msk (1UL << CoreDebug_DHCSR_S_RESET_ST_Pos) /*!< CoreDebug DHCSR: S_RESET_ST Mask */ + +#define CoreDebug_DHCSR_S_RETIRE_ST_Pos 24U /*!< CoreDebug DHCSR: S_RETIRE_ST Position */ +#define CoreDebug_DHCSR_S_RETIRE_ST_Msk (1UL << CoreDebug_DHCSR_S_RETIRE_ST_Pos) /*!< CoreDebug DHCSR: S_RETIRE_ST Mask */ + +#define CoreDebug_DHCSR_S_LOCKUP_Pos 19U /*!< CoreDebug DHCSR: S_LOCKUP Position */ +#define CoreDebug_DHCSR_S_LOCKUP_Msk (1UL << CoreDebug_DHCSR_S_LOCKUP_Pos) /*!< CoreDebug DHCSR: S_LOCKUP Mask */ + +#define CoreDebug_DHCSR_S_SLEEP_Pos 18U /*!< CoreDebug DHCSR: S_SLEEP Position */ +#define CoreDebug_DHCSR_S_SLEEP_Msk (1UL << CoreDebug_DHCSR_S_SLEEP_Pos) /*!< CoreDebug DHCSR: S_SLEEP Mask */ + +#define CoreDebug_DHCSR_S_HALT_Pos 17U /*!< CoreDebug DHCSR: S_HALT Position */ +#define CoreDebug_DHCSR_S_HALT_Msk (1UL << CoreDebug_DHCSR_S_HALT_Pos) /*!< CoreDebug DHCSR: S_HALT Mask */ + +#define CoreDebug_DHCSR_S_REGRDY_Pos 16U /*!< CoreDebug DHCSR: S_REGRDY Position */ +#define CoreDebug_DHCSR_S_REGRDY_Msk (1UL << CoreDebug_DHCSR_S_REGRDY_Pos) /*!< CoreDebug DHCSR: S_REGRDY Mask */ + +#define CoreDebug_DHCSR_C_SNAPSTALL_Pos 5U /*!< CoreDebug DHCSR: C_SNAPSTALL Position */ +#define CoreDebug_DHCSR_C_SNAPSTALL_Msk (1UL << CoreDebug_DHCSR_C_SNAPSTALL_Pos) /*!< CoreDebug DHCSR: C_SNAPSTALL Mask */ + +#define CoreDebug_DHCSR_C_MASKINTS_Pos 3U /*!< CoreDebug DHCSR: C_MASKINTS Position */ +#define CoreDebug_DHCSR_C_MASKINTS_Msk (1UL << CoreDebug_DHCSR_C_MASKINTS_Pos) /*!< CoreDebug DHCSR: C_MASKINTS Mask */ + +#define CoreDebug_DHCSR_C_STEP_Pos 2U /*!< CoreDebug DHCSR: C_STEP Position */ +#define CoreDebug_DHCSR_C_STEP_Msk (1UL << CoreDebug_DHCSR_C_STEP_Pos) /*!< CoreDebug DHCSR: C_STEP Mask */ + +#define CoreDebug_DHCSR_C_HALT_Pos 1U /*!< CoreDebug DHCSR: C_HALT Position */ +#define CoreDebug_DHCSR_C_HALT_Msk (1UL << CoreDebug_DHCSR_C_HALT_Pos) /*!< CoreDebug DHCSR: C_HALT Mask */ + +#define CoreDebug_DHCSR_C_DEBUGEN_Pos 0U /*!< CoreDebug DHCSR: C_DEBUGEN Position */ +#define CoreDebug_DHCSR_C_DEBUGEN_Msk (1UL /*<< CoreDebug_DHCSR_C_DEBUGEN_Pos*/) /*!< CoreDebug DHCSR: C_DEBUGEN Mask */ + +/* Debug Core Register Selector Register Definitions */ +#define CoreDebug_DCRSR_REGWnR_Pos 16U /*!< CoreDebug DCRSR: REGWnR Position */ +#define CoreDebug_DCRSR_REGWnR_Msk (1UL << CoreDebug_DCRSR_REGWnR_Pos) /*!< CoreDebug DCRSR: REGWnR Mask */ + +#define CoreDebug_DCRSR_REGSEL_Pos 0U /*!< CoreDebug DCRSR: REGSEL Position */ +#define CoreDebug_DCRSR_REGSEL_Msk (0x1FUL /*<< CoreDebug_DCRSR_REGSEL_Pos*/) /*!< CoreDebug DCRSR: REGSEL Mask */ + +/* Debug Exception and Monitor Control Register Definitions */ +#define CoreDebug_DEMCR_TRCENA_Pos 24U /*!< CoreDebug DEMCR: TRCENA Position */ +#define CoreDebug_DEMCR_TRCENA_Msk (1UL << CoreDebug_DEMCR_TRCENA_Pos) /*!< CoreDebug DEMCR: TRCENA Mask */ + +#define CoreDebug_DEMCR_MON_REQ_Pos 19U /*!< CoreDebug DEMCR: MON_REQ Position */ +#define CoreDebug_DEMCR_MON_REQ_Msk (1UL << CoreDebug_DEMCR_MON_REQ_Pos) /*!< CoreDebug DEMCR: MON_REQ Mask */ + +#define CoreDebug_DEMCR_MON_STEP_Pos 18U /*!< CoreDebug DEMCR: MON_STEP Position */ +#define CoreDebug_DEMCR_MON_STEP_Msk (1UL << CoreDebug_DEMCR_MON_STEP_Pos) /*!< CoreDebug DEMCR: MON_STEP Mask */ + +#define CoreDebug_DEMCR_MON_PEND_Pos 17U /*!< CoreDebug DEMCR: MON_PEND Position */ +#define CoreDebug_DEMCR_MON_PEND_Msk (1UL << CoreDebug_DEMCR_MON_PEND_Pos) /*!< CoreDebug DEMCR: MON_PEND Mask */ + +#define CoreDebug_DEMCR_MON_EN_Pos 16U /*!< CoreDebug DEMCR: MON_EN Position */ +#define CoreDebug_DEMCR_MON_EN_Msk (1UL << CoreDebug_DEMCR_MON_EN_Pos) /*!< CoreDebug DEMCR: MON_EN Mask */ + +#define CoreDebug_DEMCR_VC_HARDERR_Pos 10U /*!< CoreDebug DEMCR: VC_HARDERR Position */ +#define CoreDebug_DEMCR_VC_HARDERR_Msk (1UL << CoreDebug_DEMCR_VC_HARDERR_Pos) /*!< CoreDebug DEMCR: VC_HARDERR Mask */ + +#define CoreDebug_DEMCR_VC_INTERR_Pos 9U /*!< CoreDebug DEMCR: VC_INTERR Position */ +#define CoreDebug_DEMCR_VC_INTERR_Msk (1UL << CoreDebug_DEMCR_VC_INTERR_Pos) /*!< CoreDebug DEMCR: VC_INTERR Mask */ + +#define CoreDebug_DEMCR_VC_BUSERR_Pos 8U /*!< CoreDebug DEMCR: VC_BUSERR Position */ +#define CoreDebug_DEMCR_VC_BUSERR_Msk (1UL << CoreDebug_DEMCR_VC_BUSERR_Pos) /*!< CoreDebug DEMCR: VC_BUSERR Mask */ + +#define CoreDebug_DEMCR_VC_STATERR_Pos 7U /*!< CoreDebug DEMCR: VC_STATERR Position */ +#define CoreDebug_DEMCR_VC_STATERR_Msk (1UL << CoreDebug_DEMCR_VC_STATERR_Pos) /*!< CoreDebug DEMCR: VC_STATERR Mask */ + +#define CoreDebug_DEMCR_VC_CHKERR_Pos 6U /*!< CoreDebug DEMCR: VC_CHKERR Position */ +#define CoreDebug_DEMCR_VC_CHKERR_Msk (1UL << CoreDebug_DEMCR_VC_CHKERR_Pos) /*!< CoreDebug DEMCR: VC_CHKERR Mask */ + +#define CoreDebug_DEMCR_VC_NOCPERR_Pos 5U /*!< CoreDebug DEMCR: VC_NOCPERR Position */ +#define CoreDebug_DEMCR_VC_NOCPERR_Msk (1UL << CoreDebug_DEMCR_VC_NOCPERR_Pos) /*!< CoreDebug DEMCR: VC_NOCPERR Mask */ + +#define CoreDebug_DEMCR_VC_MMERR_Pos 4U /*!< CoreDebug DEMCR: VC_MMERR Position */ +#define CoreDebug_DEMCR_VC_MMERR_Msk (1UL << CoreDebug_DEMCR_VC_MMERR_Pos) /*!< CoreDebug DEMCR: VC_MMERR Mask */ + +#define CoreDebug_DEMCR_VC_CORERESET_Pos 0U /*!< CoreDebug DEMCR: VC_CORERESET Position */ +#define CoreDebug_DEMCR_VC_CORERESET_Msk (1UL /*<< CoreDebug_DEMCR_VC_CORERESET_Pos*/) /*!< CoreDebug DEMCR: VC_CORERESET Mask */ + +/*@} end of group CMSIS_CoreDebug */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_bitfield Core register bit field macros + \brief Macros for use with bit field definitions (xxx_Pos, xxx_Msk). + @{ + */ + +/** + \brief Mask and shift a bit field value for use in a register bit range. + \param[in] field Name of the register bit field. + \param[in] value Value of the bit field. This parameter is interpreted as an uint32_t type. + \return Masked and shifted value. +*/ +#define _VAL2FLD(field, value) (((uint32_t)(value) << field ## _Pos) & field ## _Msk) + +/** + \brief Mask and shift a register value to extract a bit filed value. + \param[in] field Name of the register bit field. + \param[in] value Value of register. This parameter is interpreted as an uint32_t type. + \return Masked and shifted bit field value. +*/ +#define _FLD2VAL(field, value) (((uint32_t)(value) & field ## _Msk) >> field ## _Pos) + +/*@} end of group CMSIS_core_bitfield */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_base Core Definitions + \brief Definitions for base addresses, unions, and structures. + @{ + */ + +/* Memory mapping of Core Hardware */ +#define SCS_BASE (0xE000E000UL) /*!< System Control Space Base Address */ +#define ITM_BASE (0xE0000000UL) /*!< ITM Base Address */ +#define DWT_BASE (0xE0001000UL) /*!< DWT Base Address */ +#define TPI_BASE (0xE0040000UL) /*!< TPI Base Address */ +#define CoreDebug_BASE (0xE000EDF0UL) /*!< Core Debug Base Address */ +#define SysTick_BASE (SCS_BASE + 0x0010UL) /*!< SysTick Base Address */ +#define NVIC_BASE (SCS_BASE + 0x0100UL) /*!< NVIC Base Address */ +#define SCB_BASE (SCS_BASE + 0x0D00UL) /*!< System Control Block Base Address */ + +#define SCnSCB ((SCnSCB_Type *) SCS_BASE ) /*!< System control Register not in SCB */ +#define SCB ((SCB_Type *) SCB_BASE ) /*!< SCB configuration struct */ +#define SysTick ((SysTick_Type *) SysTick_BASE ) /*!< SysTick configuration struct */ +#define NVIC ((NVIC_Type *) NVIC_BASE ) /*!< NVIC configuration struct */ +#define ITM ((ITM_Type *) ITM_BASE ) /*!< ITM configuration struct */ +#define DWT ((DWT_Type *) DWT_BASE ) /*!< DWT configuration struct */ +#define TPI ((TPI_Type *) TPI_BASE ) /*!< TPI configuration struct */ +#define CoreDebug ((CoreDebug_Type *) CoreDebug_BASE) /*!< Core Debug configuration struct */ + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + #define MPU_BASE (SCS_BASE + 0x0D90UL) /*!< Memory Protection Unit */ + #define MPU ((MPU_Type *) MPU_BASE ) /*!< Memory Protection Unit */ +#endif + +/*@} */ + + + +/******************************************************************************* + * Hardware Abstraction Layer + Core Function Interface contains: + - Core NVIC Functions + - Core SysTick Functions + - Core Debug Functions + - Core Register Access Functions + ******************************************************************************/ +/** + \defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference +*/ + + + +/* ########################## NVIC functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_NVICFunctions NVIC Functions + \brief Functions that manage interrupts and exceptions via the NVIC. + @{ + */ + +#ifdef CMSIS_NVIC_VIRTUAL + #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE + #define CMSIS_NVIC_VIRTUAL_HEADER_FILE "cmsis_nvic_virtual.h" + #endif + #include CMSIS_NVIC_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetPriorityGrouping __NVIC_SetPriorityGrouping + #define NVIC_GetPriorityGrouping __NVIC_GetPriorityGrouping + #define NVIC_EnableIRQ __NVIC_EnableIRQ + #define NVIC_GetEnableIRQ __NVIC_GetEnableIRQ + #define NVIC_DisableIRQ __NVIC_DisableIRQ + #define NVIC_GetPendingIRQ __NVIC_GetPendingIRQ + #define NVIC_SetPendingIRQ __NVIC_SetPendingIRQ + #define NVIC_ClearPendingIRQ __NVIC_ClearPendingIRQ + #define NVIC_GetActive __NVIC_GetActive + #define NVIC_SetPriority __NVIC_SetPriority + #define NVIC_GetPriority __NVIC_GetPriority + #define NVIC_SystemReset __NVIC_SystemReset +#endif /* CMSIS_NVIC_VIRTUAL */ + +#ifdef CMSIS_VECTAB_VIRTUAL + #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE + #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE "cmsis_vectab_virtual.h" + #endif + #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetVector __NVIC_SetVector + #define NVIC_GetVector __NVIC_GetVector +#endif /* (CMSIS_VECTAB_VIRTUAL) */ + +#define NVIC_USER_IRQ_OFFSET 16 + + +/* The following EXC_RETURN values are saved the LR on exception entry */ +#define EXC_RETURN_HANDLER (0xFFFFFFF1UL) /* return to Handler mode, uses MSP after return */ +#define EXC_RETURN_THREAD_MSP (0xFFFFFFF9UL) /* return to Thread mode, uses MSP after return */ +#define EXC_RETURN_THREAD_PSP (0xFFFFFFFDUL) /* return to Thread mode, uses PSP after return */ + + +/** + \brief Set Priority Grouping + \details Sets the priority grouping field using the required unlock sequence. + The parameter PriorityGroup is assigned to the field SCB->AIRCR [10:8] PRIGROUP field. + Only values from 0..7 are used. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Priority grouping field. + */ +__STATIC_INLINE void __NVIC_SetPriorityGrouping(uint32_t PriorityGroup) +{ + uint32_t reg_value; + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + + reg_value = SCB->AIRCR; /* read old register configuration */ + reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change */ + reg_value = (reg_value | + ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (PriorityGroupTmp << SCB_AIRCR_PRIGROUP_Pos) ); /* Insert write key and priority group */ + SCB->AIRCR = reg_value; +} + + +/** + \brief Get Priority Grouping + \details Reads the priority grouping field from the NVIC Interrupt Controller. + \return Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field). + */ +__STATIC_INLINE uint32_t __NVIC_GetPriorityGrouping(void) +{ + return ((uint32_t)((SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos)); +} + + +/** + \brief Enable Interrupt + \details Enables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + __COMPILER_BARRIER(); + NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __COMPILER_BARRIER(); + } +} + + +/** + \brief Get Interrupt Enable status + \details Returns a device specific interrupt enable status from the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt is not enabled. + \return 1 Interrupt is enabled. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Disable Interrupt + \details Disables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_DisableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __DSB(); + __ISB(); + } +} + + +/** + \brief Get Pending Interrupt + \details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not pending. + \return 1 Interrupt status is pending. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Pending Interrupt + \details Sets the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Clear Pending Interrupt + \details Clears the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Active Interrupt + \details Reads the active register in the NVIC and returns the active bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not active. + \return 1 Interrupt status is active. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetActive(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Interrupt Priority + \details Sets the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \param [in] priority Priority to set. + \note The priority cannot be set for every processor exception. + */ +__STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->IP[((uint32_t)IRQn)] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } + else + { + SCB->SHP[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } +} + + +/** + \brief Get Interrupt Priority + \details Reads the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Interrupt Priority. + Value is aligned automatically to the implemented priority bits of the microcontroller. + */ +__STATIC_INLINE uint32_t __NVIC_GetPriority(IRQn_Type IRQn) +{ + + if ((int32_t)(IRQn) >= 0) + { + return(((uint32_t)NVIC->IP[((uint32_t)IRQn)] >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return(((uint32_t)SCB->SHP[(((uint32_t)IRQn) & 0xFUL)-4UL] >> (8U - __NVIC_PRIO_BITS))); + } +} + + +/** + \brief Encode Priority + \details Encodes the priority for an interrupt with the given priority group, + preemptive priority value, and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Used priority group. + \param [in] PreemptPriority Preemptive priority value (starting from 0). + \param [in] SubPriority Subpriority value (starting from 0). + \return Encoded priority. Value can be used in the function \ref NVIC_SetPriority(). + */ +__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + return ( + ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) | + ((SubPriority & (uint32_t)((1UL << (SubPriorityBits )) - 1UL))) + ); +} + + +/** + \brief Decode Priority + \details Decodes an interrupt priority value with a given priority group to + preemptive priority value and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set. + \param [in] Priority Priority value, which can be retrieved with the function \ref NVIC_GetPriority(). + \param [in] PriorityGroup Used priority group. + \param [out] pPreemptPriority Preemptive priority value (starting from 0). + \param [out] pSubPriority Subpriority value (starting from 0). + */ +__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* const pPreemptPriority, uint32_t* const pSubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + *pPreemptPriority = (Priority >> SubPriorityBits) & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL); + *pSubPriority = (Priority ) & (uint32_t)((1UL << (SubPriorityBits )) - 1UL); +} + + +/** + \brief Set Interrupt Vector + \details Sets an interrupt vector in SRAM based interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + VTOR must been relocated to SRAM before. + \param [in] IRQn Interrupt number + \param [in] vector Address of interrupt handler function + */ +__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector) +{ + uint32_t *vectors = (uint32_t *)SCB->VTOR; + vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET] = vector; + /* ARM Application Note 321 states that the M3 does not require the architectural barrier */ +} + + +/** + \brief Get Interrupt Vector + \details Reads an interrupt vector from interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Address of interrupt handler function + */ +__STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn) +{ + uint32_t *vectors = (uint32_t *)SCB->VTOR; + return vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET]; +} + + +/** + \brief System Reset + \details Initiates a system reset request to reset the MCU. + */ +__NO_RETURN __STATIC_INLINE void __NVIC_SystemReset(void) +{ + __DSB(); /* Ensure all outstanding memory accesses included + buffered write are completed before reset */ + SCB->AIRCR = (uint32_t)((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) | + SCB_AIRCR_SYSRESETREQ_Msk ); /* Keep priority group unchanged */ + __DSB(); /* Ensure completion of memory access */ + + for(;;) /* wait until reset */ + { + __NOP(); + } +} + +/*@} end of CMSIS_Core_NVICFunctions */ + + +/* ########################## FPU functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_FpuFunctions FPU Functions + \brief Function that provides FPU type. + @{ + */ + +/** + \brief get FPU type + \details returns the FPU type + \returns + - \b 0: No FPU + - \b 1: Single precision FPU + - \b 2: Double + Single precision FPU + */ +__STATIC_INLINE uint32_t SCB_GetFPUType(void) +{ + return 0U; /* No FPU */ +} + + +/*@} end of CMSIS_Core_FpuFunctions */ + + + +/* ################################## SysTick function ############################################ */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SysTickFunctions SysTick Functions + \brief Functions that configure the System. + @{ + */ + +#if defined (__Vendor_SysTickConfig) && (__Vendor_SysTickConfig == 0U) + +/** + \brief System Tick Configuration + \details Initializes the System Timer and its interrupt, and starts the System Tick Timer. + Counter is in free running mode to generate periodic interrupts. + \param [in] ticks Number of ticks between two interrupts. + \return 0 Function succeeded. + \return 1 Function failed. + \note When the variable __Vendor_SysTickConfig is set to 1, then the + function SysTick_Config is not included. In this case, the file device.h + must contain a vendor-specific implementation of this function. + */ +__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks) +{ + if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) + { + return (1UL); /* Reload value impossible */ + } + + SysTick->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ + NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ + SysTick->VAL = 0UL; /* Load the SysTick Counter Value */ + SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0UL); /* Function successful */ +} + +#endif + +/*@} end of CMSIS_Core_SysTickFunctions */ + + + +/* ##################################### Debug In/Output function ########################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_core_DebugFunctions ITM Functions + \brief Functions that access the ITM debug interface. + @{ + */ + +extern volatile int32_t ITM_RxBuffer; /*!< External variable to receive characters. */ +#define ITM_RXBUFFER_EMPTY ((int32_t)0x5AA55AA5U) /*!< Value identifying \ref ITM_RxBuffer is ready for next character. */ + + +/** + \brief ITM Send Character + \details Transmits a character via the ITM channel 0, and + \li Just returns when no debugger is connected that has booked the output. + \li Is blocking when a debugger is connected, but the previous character sent has not been transmitted. + \param [in] ch Character to transmit. + \returns Character to transmit. + */ +__STATIC_INLINE uint32_t ITM_SendChar (uint32_t ch) +{ + if (((ITM->TCR & ITM_TCR_ITMENA_Msk) != 0UL) && /* ITM enabled */ + ((ITM->TER & 1UL ) != 0UL) ) /* ITM Port #0 enabled */ + { + while (ITM->PORT[0U].u32 == 0UL) + { + __NOP(); + } + ITM->PORT[0U].u8 = (uint8_t)ch; + } + return (ch); +} + + +/** + \brief ITM Receive Character + \details Inputs a character via the external variable \ref ITM_RxBuffer. + \return Received character. + \return -1 No character pending. + */ +__STATIC_INLINE int32_t ITM_ReceiveChar (void) +{ + int32_t ch = -1; /* no character available */ + + if (ITM_RxBuffer != ITM_RXBUFFER_EMPTY) + { + ch = ITM_RxBuffer; + ITM_RxBuffer = ITM_RXBUFFER_EMPTY; /* ready for next character */ + } + + return (ch); +} + + +/** + \brief ITM Check Character + \details Checks whether a character is pending for reading in the variable \ref ITM_RxBuffer. + \return 0 No character available. + \return 1 Character available. + */ +__STATIC_INLINE int32_t ITM_CheckChar (void) +{ + + if (ITM_RxBuffer == ITM_RXBUFFER_EMPTY) + { + return (0); /* no character available */ + } + else + { + return (1); /* character available */ + } +} + +/*@} end of CMSIS_core_DebugFunctions */ + + + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_SC300_H_DEPENDANT */ + +#endif /* __CMSIS_GENERIC */ diff --git a/bsp/renesas/ra8m1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/core_starmc1.h b/bsp/renesas/ra8m1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/core_starmc1.h new file mode 100644 index 000000000000..d86c8d3857ff --- /dev/null +++ b/bsp/renesas/ra8m1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/core_starmc1.h @@ -0,0 +1,3592 @@ +/**************************************************************************//** + * @file core_starmc1.h + * @brief CMSIS ArmChina STAR-MC1 Core Peripheral Access Layer Header File + * @version V1.0.2 + * @date 07. April 2022 + ******************************************************************************/ +/* + * Copyright (c) 2009-2018 Arm Limited. + * Copyright (c) 2018-2022 Arm China. + * All rights reserved. + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#elif defined (__clang__) + #pragma clang system_header /* treat file as system include file */ +#elif defined ( __GNUC__ ) + #pragma GCC diagnostic ignored "-Wpedantic" /* disable pedantic warning due to unnamed structs/unions */ +#endif + +#ifndef __CORE_STAR_H_GENERIC +#define __CORE_STAR_H_GENERIC + +#include + +#ifdef __cplusplus + extern "C" { +#endif + +/** + \page CMSIS_MISRA_Exceptions MISRA-C:2004 Compliance Exceptions + CMSIS violates the following MISRA-C:2004 rules: + + \li Required Rule 8.5, object/function definition in header file.
+ Function definitions in header files are used to allow 'inlining'. + + \li Required Rule 18.4, declaration of union type or object of union type: '{...}'.
+ Unions are used for effective representation of core registers. + + \li Advisory Rule 19.7, Function-like macro defined.
+ Function-like macros are used to allow more efficient code. + */ + + +/******************************************************************************* + * CMSIS definitions + ******************************************************************************/ +/** + \ingroup STAR-MC1 + @{ + */ + +#include "cmsis_version.h" + +/* Macro Define for STAR-MC1 */ +#define __STAR_MC (1U) /*!< STAR-MC Core */ + +/** __FPU_USED indicates whether an FPU is used or not. + For this, __FPU_PRESENT has to be checked prior to making use of FPU specific registers and functions. +*/ +#if defined ( __CC_ARM ) + #if defined (__TARGET_FPU_VFP) + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + + #if defined (__ARM_FEATURE_DSP) && (__ARM_FEATURE_DSP == 1U) + #if defined (__DSP_PRESENT) && (__DSP_PRESENT == 1U) + #define __DSP_USED 1U + #else + #error "Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)" + #define __DSP_USED 0U + #endif + #else + #define __DSP_USED 0U + #endif + +#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) + #if defined (__ARM_FP) + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #warning "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + + #if defined (__ARM_FEATURE_DSP) && (__ARM_FEATURE_DSP == 1U) + #if defined (__DSP_PRESENT) && (__DSP_PRESENT == 1U) + #define __DSP_USED 1U + #else + #error "Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)" + #define __DSP_USED 0U + #endif + #else + #define __DSP_USED 0U + #endif + +#elif defined ( __GNUC__ ) + #if defined (__VFP_FP__) && !defined(__SOFTFP__) + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + + #if defined (__ARM_FEATURE_DSP) && (__ARM_FEATURE_DSP == 1U) + #if defined (__DSP_PRESENT) && (__DSP_PRESENT == 1U) + #define __DSP_USED 1U + #else + #error "Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)" + #define __DSP_USED 0U + #endif + #else + #define __DSP_USED 0U + #endif + +#elif defined ( __ICCARM__ ) + #if defined (__ARMVFP__) + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + + #if defined (__ARM_FEATURE_DSP) && (__ARM_FEATURE_DSP == 1U) + #if defined (__DSP_PRESENT) && (__DSP_PRESENT == 1U) + #define __DSP_USED 1U + #else + #error "Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)" + #define __DSP_USED 0U + #endif + #else + #define __DSP_USED 0U + #endif + +#elif defined ( __TI_ARM__ ) + #if defined (__TI_VFP_SUPPORT__) + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined ( __TASKING__ ) + #if defined (__FPU_VFP__) + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined ( __CSMC__ ) + #if ( __CSMC__ & 0x400U) + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#endif + +#include "cmsis_compiler.h" /* CMSIS compiler specific defines */ + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_STAR_H_GENERIC */ + +#ifndef __CMSIS_GENERIC + +#ifndef __CORE_STAR_H_DEPENDANT +#define __CORE_STAR_H_DEPENDANT + +#ifdef __cplusplus + extern "C" { +#endif + +/* check device defines and use defaults */ +#if defined __CHECK_DEVICE_DEFINES + #ifndef __STAR_REV + #define __STAR_REV 0x0000U + #warning "__STAR_REV not defined in device header file; using default!" + #endif + + #ifndef __FPU_PRESENT + #define __FPU_PRESENT 0U + #warning "__FPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __MPU_PRESENT + #define __MPU_PRESENT 0U + #warning "__MPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __SAUREGION_PRESENT + #define __SAUREGION_PRESENT 0U + #warning "__SAUREGION_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __DSP_PRESENT + #define __DSP_PRESENT 0U + #warning "__DSP_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __ICACHE_PRESENT + #define __ICACHE_PRESENT 0U + #warning "__ICACHE_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __DCACHE_PRESENT + #define __DCACHE_PRESENT 0U + #warning "__DCACHE_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __DTCM_PRESENT + #define __DTCM_PRESENT 0U + #warning "__DTCM_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __NVIC_PRIO_BITS + #define __NVIC_PRIO_BITS 3U + #warning "__NVIC_PRIO_BITS not defined in device header file; using default!" + #endif + + #ifndef __Vendor_SysTickConfig + #define __Vendor_SysTickConfig 0U + #warning "__Vendor_SysTickConfig not defined in device header file; using default!" + #endif +#endif + +/* IO definitions (access restrictions to peripheral registers) */ +/** + \defgroup CMSIS_glob_defs CMSIS Global Defines + + IO Type Qualifiers are used + \li to specify the access to peripheral variables. + \li for automatic generation of peripheral register debug information. +*/ +#ifdef __cplusplus + #define __I volatile /*!< Defines 'read only' permissions */ +#else + #define __I volatile const /*!< Defines 'read only' permissions */ +#endif +#define __O volatile /*!< Defines 'write only' permissions */ +#define __IO volatile /*!< Defines 'read / write' permissions */ + +/* following defines should be used for structure members */ +#define __IM volatile const /*! Defines 'read only' structure member permissions */ +#define __OM volatile /*! Defines 'write only' structure member permissions */ +#define __IOM volatile /*! Defines 'read / write' structure member permissions */ + +/*@} end of group STAR-MC1 */ + + + +/******************************************************************************* + * Register Abstraction + Core Register contain: + - Core Register + - Core NVIC Register + - Core SCB Register + - Core SysTick Register + - Core Debug Register + - Core MPU Register + - Core SAU Register + - Core FPU Register + ******************************************************************************/ +/** + \defgroup CMSIS_core_register Defines and Type Definitions + \brief Type definitions and defines for STAR-MC1 processor based devices. +*/ + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CORE Status and Control Registers + \brief Core Register type definitions. + @{ + */ + +/** + \brief Union type to access the Application Program Status Register (APSR). + */ +typedef union +{ + struct + { + uint32_t _reserved0:16; /*!< bit: 0..15 Reserved */ + uint32_t GE:4; /*!< bit: 16..19 Greater than or Equal flags */ + uint32_t _reserved1:7; /*!< bit: 20..26 Reserved */ + uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} APSR_Type; + +/* APSR Register Definitions */ +#define APSR_N_Pos 31U /*!< APSR: N Position */ +#define APSR_N_Msk (1UL << APSR_N_Pos) /*!< APSR: N Mask */ + +#define APSR_Z_Pos 30U /*!< APSR: Z Position */ +#define APSR_Z_Msk (1UL << APSR_Z_Pos) /*!< APSR: Z Mask */ + +#define APSR_C_Pos 29U /*!< APSR: C Position */ +#define APSR_C_Msk (1UL << APSR_C_Pos) /*!< APSR: C Mask */ + +#define APSR_V_Pos 28U /*!< APSR: V Position */ +#define APSR_V_Msk (1UL << APSR_V_Pos) /*!< APSR: V Mask */ + +#define APSR_Q_Pos 27U /*!< APSR: Q Position */ +#define APSR_Q_Msk (1UL << APSR_Q_Pos) /*!< APSR: Q Mask */ + +#define APSR_GE_Pos 16U /*!< APSR: GE Position */ +#define APSR_GE_Msk (0xFUL << APSR_GE_Pos) /*!< APSR: GE Mask */ + + +/** + \brief Union type to access the Interrupt Program Status Register (IPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:23; /*!< bit: 9..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} IPSR_Type; + +/* IPSR Register Definitions */ +#define IPSR_ISR_Pos 0U /*!< IPSR: ISR Position */ +#define IPSR_ISR_Msk (0x1FFUL /*<< IPSR_ISR_Pos*/) /*!< IPSR: ISR Mask */ + + +/** + \brief Union type to access the Special-Purpose Program Status Registers (xPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:7; /*!< bit: 9..15 Reserved */ + uint32_t GE:4; /*!< bit: 16..19 Greater than or Equal flags */ + uint32_t _reserved1:4; /*!< bit: 20..23 Reserved */ + uint32_t T:1; /*!< bit: 24 Thumb bit (read 0) */ + uint32_t IT:2; /*!< bit: 25..26 saved IT state (read 0) */ + uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} xPSR_Type; + +/* xPSR Register Definitions */ +#define xPSR_N_Pos 31U /*!< xPSR: N Position */ +#define xPSR_N_Msk (1UL << xPSR_N_Pos) /*!< xPSR: N Mask */ + +#define xPSR_Z_Pos 30U /*!< xPSR: Z Position */ +#define xPSR_Z_Msk (1UL << xPSR_Z_Pos) /*!< xPSR: Z Mask */ + +#define xPSR_C_Pos 29U /*!< xPSR: C Position */ +#define xPSR_C_Msk (1UL << xPSR_C_Pos) /*!< xPSR: C Mask */ + +#define xPSR_V_Pos 28U /*!< xPSR: V Position */ +#define xPSR_V_Msk (1UL << xPSR_V_Pos) /*!< xPSR: V Mask */ + +#define xPSR_Q_Pos 27U /*!< xPSR: Q Position */ +#define xPSR_Q_Msk (1UL << xPSR_Q_Pos) /*!< xPSR: Q Mask */ + +#define xPSR_IT_Pos 25U /*!< xPSR: IT Position */ +#define xPSR_IT_Msk (3UL << xPSR_IT_Pos) /*!< xPSR: IT Mask */ + +#define xPSR_T_Pos 24U /*!< xPSR: T Position */ +#define xPSR_T_Msk (1UL << xPSR_T_Pos) /*!< xPSR: T Mask */ + +#define xPSR_GE_Pos 16U /*!< xPSR: GE Position */ +#define xPSR_GE_Msk (0xFUL << xPSR_GE_Pos) /*!< xPSR: GE Mask */ + +#define xPSR_ISR_Pos 0U /*!< xPSR: ISR Position */ +#define xPSR_ISR_Msk (0x1FFUL /*<< xPSR_ISR_Pos*/) /*!< xPSR: ISR Mask */ + + +/** + \brief Union type to access the Control Registers (CONTROL). + */ +typedef union +{ + struct + { + uint32_t nPRIV:1; /*!< bit: 0 Execution privilege in Thread mode */ + uint32_t SPSEL:1; /*!< bit: 1 Stack-pointer select */ + uint32_t FPCA:1; /*!< bit: 2 Floating-point context active */ + uint32_t SFPA:1; /*!< bit: 3 Secure floating-point active */ + uint32_t _reserved1:28; /*!< bit: 4..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} CONTROL_Type; + +/* CONTROL Register Definitions */ +#define CONTROL_SFPA_Pos 3U /*!< CONTROL: SFPA Position */ +#define CONTROL_SFPA_Msk (1UL << CONTROL_SFPA_Pos) /*!< CONTROL: SFPA Mask */ + +#define CONTROL_FPCA_Pos 2U /*!< CONTROL: FPCA Position */ +#define CONTROL_FPCA_Msk (1UL << CONTROL_FPCA_Pos) /*!< CONTROL: FPCA Mask */ + +#define CONTROL_SPSEL_Pos 1U /*!< CONTROL: SPSEL Position */ +#define CONTROL_SPSEL_Msk (1UL << CONTROL_SPSEL_Pos) /*!< CONTROL: SPSEL Mask */ + +#define CONTROL_nPRIV_Pos 0U /*!< CONTROL: nPRIV Position */ +#define CONTROL_nPRIV_Msk (1UL /*<< CONTROL_nPRIV_Pos*/) /*!< CONTROL: nPRIV Mask */ + +/*@} end of group CMSIS_CORE */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_NVIC Nested Vectored Interrupt Controller (NVIC) + \brief Type definitions for the NVIC Registers + @{ + */ + +/** + \brief Structure type to access the Nested Vectored Interrupt Controller (NVIC). + */ +typedef struct +{ + __IOM uint32_t ISER[16U]; /*!< Offset: 0x000 (R/W) Interrupt Set Enable Register */ + uint32_t RESERVED0[16U]; + __IOM uint32_t ICER[16U]; /*!< Offset: 0x080 (R/W) Interrupt Clear Enable Register */ + uint32_t RSERVED1[16U]; + __IOM uint32_t ISPR[16U]; /*!< Offset: 0x100 (R/W) Interrupt Set Pending Register */ + uint32_t RESERVED2[16U]; + __IOM uint32_t ICPR[16U]; /*!< Offset: 0x180 (R/W) Interrupt Clear Pending Register */ + uint32_t RESERVED3[16U]; + __IOM uint32_t IABR[16U]; /*!< Offset: 0x200 (R/W) Interrupt Active bit Register */ + uint32_t RESERVED4[16U]; + __IOM uint32_t ITNS[16U]; /*!< Offset: 0x280 (R/W) Interrupt Non-Secure State Register */ + uint32_t RESERVED5[16U]; + __IOM uint8_t IPR[496U]; /*!< Offset: 0x300 (R/W) Interrupt Priority Register (8Bit wide) */ + uint32_t RESERVED6[580U]; + __OM uint32_t STIR; /*!< Offset: 0xE00 ( /W) Software Trigger Interrupt Register */ +} NVIC_Type; + +/* Software Triggered Interrupt Register Definitions */ +#define NVIC_STIR_INTID_Pos 0U /*!< STIR: INTLINESNUM Position */ +#define NVIC_STIR_INTID_Msk (0x1FFUL /*<< NVIC_STIR_INTID_Pos*/) /*!< STIR: INTLINESNUM Mask */ + +/*@} end of group CMSIS_NVIC */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SCB System Control Block (SCB) + \brief Type definitions for the System Control Block Registers + @{ + */ + +/** + \brief Structure type to access the System Control Block (SCB). + */ +typedef struct +{ + __IM uint32_t CPUID; /*!< Offset: 0x000 (R/ ) CPUID Base Register */ + __IOM uint32_t ICSR; /*!< Offset: 0x004 (R/W) Interrupt Control and State Register */ + __IOM uint32_t VTOR; /*!< Offset: 0x008 (R/W) Vector Table Offset Register */ + __IOM uint32_t AIRCR; /*!< Offset: 0x00C (R/W) Application Interrupt and Reset Control Register */ + __IOM uint32_t SCR; /*!< Offset: 0x010 (R/W) System Control Register */ + __IOM uint32_t CCR; /*!< Offset: 0x014 (R/W) Configuration Control Register */ + __IOM uint8_t SHPR[12U]; /*!< Offset: 0x018 (R/W) System Handlers Priority Registers (4-7, 8-11, 12-15) */ + __IOM uint32_t SHCSR; /*!< Offset: 0x024 (R/W) System Handler Control and State Register */ + __IOM uint32_t CFSR; /*!< Offset: 0x028 (R/W) Configurable Fault Status Register */ + __IOM uint32_t HFSR; /*!< Offset: 0x02C (R/W) HardFault Status Register */ + __IOM uint32_t DFSR; /*!< Offset: 0x030 (R/W) Debug Fault Status Register */ + __IOM uint32_t MMFAR; /*!< Offset: 0x034 (R/W) MemManage Fault Address Register */ + __IOM uint32_t BFAR; /*!< Offset: 0x038 (R/W) BusFault Address Register */ + __IOM uint32_t AFSR; /*!< Offset: 0x03C (R/W) Auxiliary Fault Status Register */ + __IM uint32_t ID_PFR[2U]; /*!< Offset: 0x040 (R/ ) Processor Feature Register */ + __IM uint32_t ID_DFR; /*!< Offset: 0x048 (R/ ) Debug Feature Register */ + __IM uint32_t ID_AFR; /*!< Offset: 0x04C (R/ ) Auxiliary Feature Register */ + __IM uint32_t ID_MMFR[4U]; /*!< Offset: 0x050 (R/ ) Memory Model Feature Register */ + __IM uint32_t ID_ISAR[5U]; /*!< Offset: 0x060 (R/ ) Instruction Set Attributes Register */ + uint32_t RESERVED0[1U]; + __IM uint32_t CLIDR; /*!< Offset: 0x078 (R/ ) Cache Level ID register */ + __IM uint32_t CTR; /*!< Offset: 0x07C (R/ ) Cache Type register */ + __IM uint32_t CCSIDR; /*!< Offset: 0x080 (R/ ) Cache Size ID Register */ + __IOM uint32_t CSSELR; /*!< Offset: 0x084 (R/W) Cache Size Selection Register */ + __IOM uint32_t CPACR; /*!< Offset: 0x088 (R/W) Coprocessor Access Control Register */ + __IOM uint32_t NSACR; /*!< Offset: 0x08C (R/W) Non-Secure Access Control Register */ + uint32_t RESERVED_ADD1[21U]; + __IOM uint32_t SFSR; /*!< Offset: 0x0E4 (R/W) Secure Fault Status Register */ + __IOM uint32_t SFAR; /*!< Offset: 0x0E8 (R/W) Secure Fault Address Register */ + uint32_t RESERVED3[69U]; + __OM uint32_t STIR; /*!< Offset: F00-D00=0x200 ( /W) Software Triggered Interrupt Register */ + uint32_t RESERVED4[15U]; + __IM uint32_t MVFR0; /*!< Offset: 0x240 (R/ ) Media and VFP Feature Register 0 */ + __IM uint32_t MVFR1; /*!< Offset: 0x244 (R/ ) Media and VFP Feature Register 1 */ + __IM uint32_t MVFR2; /*!< Offset: 0x248 (R/ ) Media and VFP Feature Register 2 */ + uint32_t RESERVED5[1U]; + __OM uint32_t ICIALLU; /*!< Offset: 0x250 ( /W) I-Cache Invalidate All to PoU */ + uint32_t RESERVED6[1U]; + __OM uint32_t ICIMVAU; /*!< Offset: 0x258 ( /W) I-Cache Invalidate by MVA to PoU */ + __OM uint32_t DCIMVAC; /*!< Offset: 0x25C ( /W) D-Cache Invalidate by MVA to PoC */ + __OM uint32_t DCISW; /*!< Offset: 0x260 ( /W) D-Cache Invalidate by Set-way */ + __OM uint32_t DCCMVAU; /*!< Offset: 0x264 ( /W) D-Cache Clean by MVA to PoU */ + __OM uint32_t DCCMVAC; /*!< Offset: 0x268 ( /W) D-Cache Clean by MVA to PoC */ + __OM uint32_t DCCSW; /*!< Offset: 0x26C ( /W) D-Cache Clean by Set-way */ + __OM uint32_t DCCIMVAC; /*!< Offset: 0x270 ( /W) D-Cache Clean and Invalidate by MVA to PoC */ + __OM uint32_t DCCISW; /*!< Offset: 0x274 ( /W) D-Cache Clean and Invalidate by Set-way */ +} SCB_Type; + +typedef struct +{ + __IOM uint32_t CACR; /*!< Offset: 0x0 (R/W) L1 Cache Control Register */ + __IOM uint32_t ITCMCR; /*!< Offset: 0x10 (R/W) Instruction Tightly-Coupled Memory Control Register */ + __IOM uint32_t DTCMCR; /*!< Offset: 0x14 (R/W) Data Tightly-Coupled Memory Control Registers */ +}EMSS_Type; + +/* SCB CPUID Register Definitions */ +#define SCB_CPUID_IMPLEMENTER_Pos 24U /*!< SCB CPUID: IMPLEMENTER Position */ +#define SCB_CPUID_IMPLEMENTER_Msk (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos) /*!< SCB CPUID: IMPLEMENTER Mask */ + +#define SCB_CPUID_VARIANT_Pos 20U /*!< SCB CPUID: VARIANT Position */ +#define SCB_CPUID_VARIANT_Msk (0xFUL << SCB_CPUID_VARIANT_Pos) /*!< SCB CPUID: VARIANT Mask */ + +#define SCB_CPUID_ARCHITECTURE_Pos 16U /*!< SCB CPUID: ARCHITECTURE Position */ +#define SCB_CPUID_ARCHITECTURE_Msk (0xFUL << SCB_CPUID_ARCHITECTURE_Pos) /*!< SCB CPUID: ARCHITECTURE Mask */ + +#define SCB_CPUID_PARTNO_Pos 4U /*!< SCB CPUID: PARTNO Position */ +#define SCB_CPUID_PARTNO_Msk (0xFFFUL << SCB_CPUID_PARTNO_Pos) /*!< SCB CPUID: PARTNO Mask */ + +#define SCB_CPUID_REVISION_Pos 0U /*!< SCB CPUID: REVISION Position */ +#define SCB_CPUID_REVISION_Msk (0xFUL /*<< SCB_CPUID_REVISION_Pos*/) /*!< SCB CPUID: REVISION Mask */ + +/* SCB Interrupt Control State Register Definitions */ +#define SCB_ICSR_PENDNMISET_Pos 31U /*!< SCB ICSR: PENDNMISET Position */ +#define SCB_ICSR_PENDNMISET_Msk (1UL << SCB_ICSR_PENDNMISET_Pos) /*!< SCB ICSR: PENDNMISET Mask */ + +#define SCB_ICSR_NMIPENDSET_Pos SCB_ICSR_PENDNMISET_Pos /*!< SCB ICSR: NMIPENDSET Position, backward compatibility */ +#define SCB_ICSR_NMIPENDSET_Msk SCB_ICSR_PENDNMISET_Msk /*!< SCB ICSR: NMIPENDSET Mask, backward compatibility */ + +#define SCB_ICSR_PENDNMICLR_Pos 30U /*!< SCB ICSR: PENDNMICLR Position */ +#define SCB_ICSR_PENDNMICLR_Msk (1UL << SCB_ICSR_PENDNMICLR_Pos) /*!< SCB ICSR: PENDNMICLR Mask */ + +#define SCB_ICSR_PENDSVSET_Pos 28U /*!< SCB ICSR: PENDSVSET Position */ +#define SCB_ICSR_PENDSVSET_Msk (1UL << SCB_ICSR_PENDSVSET_Pos) /*!< SCB ICSR: PENDSVSET Mask */ + +#define SCB_ICSR_PENDSVCLR_Pos 27U /*!< SCB ICSR: PENDSVCLR Position */ +#define SCB_ICSR_PENDSVCLR_Msk (1UL << SCB_ICSR_PENDSVCLR_Pos) /*!< SCB ICSR: PENDSVCLR Mask */ + +#define SCB_ICSR_PENDSTSET_Pos 26U /*!< SCB ICSR: PENDSTSET Position */ +#define SCB_ICSR_PENDSTSET_Msk (1UL << SCB_ICSR_PENDSTSET_Pos) /*!< SCB ICSR: PENDSTSET Mask */ + +#define SCB_ICSR_PENDSTCLR_Pos 25U /*!< SCB ICSR: PENDSTCLR Position */ +#define SCB_ICSR_PENDSTCLR_Msk (1UL << SCB_ICSR_PENDSTCLR_Pos) /*!< SCB ICSR: PENDSTCLR Mask */ + +#define SCB_ICSR_STTNS_Pos 24U /*!< SCB ICSR: STTNS Position (Security Extension) */ +#define SCB_ICSR_STTNS_Msk (1UL << SCB_ICSR_STTNS_Pos) /*!< SCB ICSR: STTNS Mask (Security Extension) */ + +#define SCB_ICSR_ISRPREEMPT_Pos 23U /*!< SCB ICSR: ISRPREEMPT Position */ +#define SCB_ICSR_ISRPREEMPT_Msk (1UL << SCB_ICSR_ISRPREEMPT_Pos) /*!< SCB ICSR: ISRPREEMPT Mask */ + +#define SCB_ICSR_ISRPENDING_Pos 22U /*!< SCB ICSR: ISRPENDING Position */ +#define SCB_ICSR_ISRPENDING_Msk (1UL << SCB_ICSR_ISRPENDING_Pos) /*!< SCB ICSR: ISRPENDING Mask */ + +#define SCB_ICSR_VECTPENDING_Pos 12U /*!< SCB ICSR: VECTPENDING Position */ +#define SCB_ICSR_VECTPENDING_Msk (0x1FFUL << SCB_ICSR_VECTPENDING_Pos) /*!< SCB ICSR: VECTPENDING Mask */ + +#define SCB_ICSR_RETTOBASE_Pos 11U /*!< SCB ICSR: RETTOBASE Position */ +#define SCB_ICSR_RETTOBASE_Msk (1UL << SCB_ICSR_RETTOBASE_Pos) /*!< SCB ICSR: RETTOBASE Mask */ + +#define SCB_ICSR_VECTACTIVE_Pos 0U /*!< SCB ICSR: VECTACTIVE Position */ +#define SCB_ICSR_VECTACTIVE_Msk (0x1FFUL /*<< SCB_ICSR_VECTACTIVE_Pos*/) /*!< SCB ICSR: VECTACTIVE Mask */ + +/* SCB Vector Table Offset Register Definitions */ +#define SCB_VTOR_TBLOFF_Pos 7U /*!< SCB VTOR: TBLOFF Position */ +#define SCB_VTOR_TBLOFF_Msk (0x1FFFFFFUL << SCB_VTOR_TBLOFF_Pos) /*!< SCB VTOR: TBLOFF Mask */ + +/* SCB Application Interrupt and Reset Control Register Definitions */ +#define SCB_AIRCR_VECTKEY_Pos 16U /*!< SCB AIRCR: VECTKEY Position */ +#define SCB_AIRCR_VECTKEY_Msk (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos) /*!< SCB AIRCR: VECTKEY Mask */ + +#define SCB_AIRCR_VECTKEYSTAT_Pos 16U /*!< SCB AIRCR: VECTKEYSTAT Position */ +#define SCB_AIRCR_VECTKEYSTAT_Msk (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos) /*!< SCB AIRCR: VECTKEYSTAT Mask */ + +#define SCB_AIRCR_ENDIANESS_Pos 15U /*!< SCB AIRCR: ENDIANESS Position */ +#define SCB_AIRCR_ENDIANESS_Msk (1UL << SCB_AIRCR_ENDIANESS_Pos) /*!< SCB AIRCR: ENDIANESS Mask */ + +#define SCB_AIRCR_PRIS_Pos 14U /*!< SCB AIRCR: PRIS Position */ +#define SCB_AIRCR_PRIS_Msk (1UL << SCB_AIRCR_PRIS_Pos) /*!< SCB AIRCR: PRIS Mask */ + +#define SCB_AIRCR_BFHFNMINS_Pos 13U /*!< SCB AIRCR: BFHFNMINS Position */ +#define SCB_AIRCR_BFHFNMINS_Msk (1UL << SCB_AIRCR_BFHFNMINS_Pos) /*!< SCB AIRCR: BFHFNMINS Mask */ + +#define SCB_AIRCR_PRIGROUP_Pos 8U /*!< SCB AIRCR: PRIGROUP Position */ +#define SCB_AIRCR_PRIGROUP_Msk (7UL << SCB_AIRCR_PRIGROUP_Pos) /*!< SCB AIRCR: PRIGROUP Mask */ + +#define SCB_AIRCR_SYSRESETREQS_Pos 3U /*!< SCB AIRCR: SYSRESETREQS Position */ +#define SCB_AIRCR_SYSRESETREQS_Msk (1UL << SCB_AIRCR_SYSRESETREQS_Pos) /*!< SCB AIRCR: SYSRESETREQS Mask */ + +#define SCB_AIRCR_SYSRESETREQ_Pos 2U /*!< SCB AIRCR: SYSRESETREQ Position */ +#define SCB_AIRCR_SYSRESETREQ_Msk (1UL << SCB_AIRCR_SYSRESETREQ_Pos) /*!< SCB AIRCR: SYSRESETREQ Mask */ + +#define SCB_AIRCR_VECTCLRACTIVE_Pos 1U /*!< SCB AIRCR: VECTCLRACTIVE Position */ +#define SCB_AIRCR_VECTCLRACTIVE_Msk (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos) /*!< SCB AIRCR: VECTCLRACTIVE Mask */ + +/* SCB System Control Register Definitions */ +#define SCB_SCR_SEVONPEND_Pos 4U /*!< SCB SCR: SEVONPEND Position */ +#define SCB_SCR_SEVONPEND_Msk (1UL << SCB_SCR_SEVONPEND_Pos) /*!< SCB SCR: SEVONPEND Mask */ + +#define SCB_SCR_SLEEPDEEPS_Pos 3U /*!< SCB SCR: SLEEPDEEPS Position */ +#define SCB_SCR_SLEEPDEEPS_Msk (1UL << SCB_SCR_SLEEPDEEPS_Pos) /*!< SCB SCR: SLEEPDEEPS Mask */ + +#define SCB_SCR_SLEEPDEEP_Pos 2U /*!< SCB SCR: SLEEPDEEP Position */ +#define SCB_SCR_SLEEPDEEP_Msk (1UL << SCB_SCR_SLEEPDEEP_Pos) /*!< SCB SCR: SLEEPDEEP Mask */ + +#define SCB_SCR_SLEEPONEXIT_Pos 1U /*!< SCB SCR: SLEEPONEXIT Position */ +#define SCB_SCR_SLEEPONEXIT_Msk (1UL << SCB_SCR_SLEEPONEXIT_Pos) /*!< SCB SCR: SLEEPONEXIT Mask */ + +/* SCB Configuration Control Register Definitions */ +#define SCB_CCR_BP_Pos 18U /*!< SCB CCR: BP Position */ +#define SCB_CCR_BP_Msk (1UL << SCB_CCR_BP_Pos) /*!< SCB CCR: BP Mask */ + +#define SCB_CCR_IC_Pos 17U /*!< SCB CCR: IC Position */ +#define SCB_CCR_IC_Msk (1UL << SCB_CCR_IC_Pos) /*!< SCB CCR: IC Mask */ + +#define SCB_CCR_DC_Pos 16U /*!< SCB CCR: DC Position */ +#define SCB_CCR_DC_Msk (1UL << SCB_CCR_DC_Pos) /*!< SCB CCR: DC Mask */ + +#define SCB_CCR_STKOFHFNMIGN_Pos 10U /*!< SCB CCR: STKOFHFNMIGN Position */ +#define SCB_CCR_STKOFHFNMIGN_Msk (1UL << SCB_CCR_STKOFHFNMIGN_Pos) /*!< SCB CCR: STKOFHFNMIGN Mask */ + +#define SCB_CCR_BFHFNMIGN_Pos 8U /*!< SCB CCR: BFHFNMIGN Position */ +#define SCB_CCR_BFHFNMIGN_Msk (1UL << SCB_CCR_BFHFNMIGN_Pos) /*!< SCB CCR: BFHFNMIGN Mask */ + +#define SCB_CCR_DIV_0_TRP_Pos 4U /*!< SCB CCR: DIV_0_TRP Position */ +#define SCB_CCR_DIV_0_TRP_Msk (1UL << SCB_CCR_DIV_0_TRP_Pos) /*!< SCB CCR: DIV_0_TRP Mask */ + +#define SCB_CCR_UNALIGN_TRP_Pos 3U /*!< SCB CCR: UNALIGN_TRP Position */ +#define SCB_CCR_UNALIGN_TRP_Msk (1UL << SCB_CCR_UNALIGN_TRP_Pos) /*!< SCB CCR: UNALIGN_TRP Mask */ + +#define SCB_CCR_USERSETMPEND_Pos 1U /*!< SCB CCR: USERSETMPEND Position */ +#define SCB_CCR_USERSETMPEND_Msk (1UL << SCB_CCR_USERSETMPEND_Pos) /*!< SCB CCR: USERSETMPEND Mask */ + +/* SCB System Handler Control and State Register Definitions */ +#define SCB_SHCSR_HARDFAULTPENDED_Pos 21U /*!< SCB SHCSR: HARDFAULTPENDED Position */ +#define SCB_SHCSR_HARDFAULTPENDED_Msk (1UL << SCB_SHCSR_HARDFAULTPENDED_Pos) /*!< SCB SHCSR: HARDFAULTPENDED Mask */ + +#define SCB_SHCSR_SECUREFAULTPENDED_Pos 20U /*!< SCB SHCSR: SECUREFAULTPENDED Position */ +#define SCB_SHCSR_SECUREFAULTPENDED_Msk (1UL << SCB_SHCSR_SECUREFAULTPENDED_Pos) /*!< SCB SHCSR: SECUREFAULTPENDED Mask */ + +#define SCB_SHCSR_SECUREFAULTENA_Pos 19U /*!< SCB SHCSR: SECUREFAULTENA Position */ +#define SCB_SHCSR_SECUREFAULTENA_Msk (1UL << SCB_SHCSR_SECUREFAULTENA_Pos) /*!< SCB SHCSR: SECUREFAULTENA Mask */ + +#define SCB_SHCSR_USGFAULTENA_Pos 18U /*!< SCB SHCSR: USGFAULTENA Position */ +#define SCB_SHCSR_USGFAULTENA_Msk (1UL << SCB_SHCSR_USGFAULTENA_Pos) /*!< SCB SHCSR: USGFAULTENA Mask */ + +#define SCB_SHCSR_BUSFAULTENA_Pos 17U /*!< SCB SHCSR: BUSFAULTENA Position */ +#define SCB_SHCSR_BUSFAULTENA_Msk (1UL << SCB_SHCSR_BUSFAULTENA_Pos) /*!< SCB SHCSR: BUSFAULTENA Mask */ + +#define SCB_SHCSR_MEMFAULTENA_Pos 16U /*!< SCB SHCSR: MEMFAULTENA Position */ +#define SCB_SHCSR_MEMFAULTENA_Msk (1UL << SCB_SHCSR_MEMFAULTENA_Pos) /*!< SCB SHCSR: MEMFAULTENA Mask */ + +#define SCB_SHCSR_SVCALLPENDED_Pos 15U /*!< SCB SHCSR: SVCALLPENDED Position */ +#define SCB_SHCSR_SVCALLPENDED_Msk (1UL << SCB_SHCSR_SVCALLPENDED_Pos) /*!< SCB SHCSR: SVCALLPENDED Mask */ + +#define SCB_SHCSR_BUSFAULTPENDED_Pos 14U /*!< SCB SHCSR: BUSFAULTPENDED Position */ +#define SCB_SHCSR_BUSFAULTPENDED_Msk (1UL << SCB_SHCSR_BUSFAULTPENDED_Pos) /*!< SCB SHCSR: BUSFAULTPENDED Mask */ + +#define SCB_SHCSR_MEMFAULTPENDED_Pos 13U /*!< SCB SHCSR: MEMFAULTPENDED Position */ +#define SCB_SHCSR_MEMFAULTPENDED_Msk (1UL << SCB_SHCSR_MEMFAULTPENDED_Pos) /*!< SCB SHCSR: MEMFAULTPENDED Mask */ + +#define SCB_SHCSR_USGFAULTPENDED_Pos 12U /*!< SCB SHCSR: USGFAULTPENDED Position */ +#define SCB_SHCSR_USGFAULTPENDED_Msk (1UL << SCB_SHCSR_USGFAULTPENDED_Pos) /*!< SCB SHCSR: USGFAULTPENDED Mask */ + +#define SCB_SHCSR_SYSTICKACT_Pos 11U /*!< SCB SHCSR: SYSTICKACT Position */ +#define SCB_SHCSR_SYSTICKACT_Msk (1UL << SCB_SHCSR_SYSTICKACT_Pos) /*!< SCB SHCSR: SYSTICKACT Mask */ + +#define SCB_SHCSR_PENDSVACT_Pos 10U /*!< SCB SHCSR: PENDSVACT Position */ +#define SCB_SHCSR_PENDSVACT_Msk (1UL << SCB_SHCSR_PENDSVACT_Pos) /*!< SCB SHCSR: PENDSVACT Mask */ + +#define SCB_SHCSR_MONITORACT_Pos 8U /*!< SCB SHCSR: MONITORACT Position */ +#define SCB_SHCSR_MONITORACT_Msk (1UL << SCB_SHCSR_MONITORACT_Pos) /*!< SCB SHCSR: MONITORACT Mask */ + +#define SCB_SHCSR_SVCALLACT_Pos 7U /*!< SCB SHCSR: SVCALLACT Position */ +#define SCB_SHCSR_SVCALLACT_Msk (1UL << SCB_SHCSR_SVCALLACT_Pos) /*!< SCB SHCSR: SVCALLACT Mask */ + +#define SCB_SHCSR_NMIACT_Pos 5U /*!< SCB SHCSR: NMIACT Position */ +#define SCB_SHCSR_NMIACT_Msk (1UL << SCB_SHCSR_NMIACT_Pos) /*!< SCB SHCSR: NMIACT Mask */ + +#define SCB_SHCSR_SECUREFAULTACT_Pos 4U /*!< SCB SHCSR: SECUREFAULTACT Position */ +#define SCB_SHCSR_SECUREFAULTACT_Msk (1UL << SCB_SHCSR_SECUREFAULTACT_Pos) /*!< SCB SHCSR: SECUREFAULTACT Mask */ + +#define SCB_SHCSR_USGFAULTACT_Pos 3U /*!< SCB SHCSR: USGFAULTACT Position */ +#define SCB_SHCSR_USGFAULTACT_Msk (1UL << SCB_SHCSR_USGFAULTACT_Pos) /*!< SCB SHCSR: USGFAULTACT Mask */ + +#define SCB_SHCSR_HARDFAULTACT_Pos 2U /*!< SCB SHCSR: HARDFAULTACT Position */ +#define SCB_SHCSR_HARDFAULTACT_Msk (1UL << SCB_SHCSR_HARDFAULTACT_Pos) /*!< SCB SHCSR: HARDFAULTACT Mask */ + +#define SCB_SHCSR_BUSFAULTACT_Pos 1U /*!< SCB SHCSR: BUSFAULTACT Position */ +#define SCB_SHCSR_BUSFAULTACT_Msk (1UL << SCB_SHCSR_BUSFAULTACT_Pos) /*!< SCB SHCSR: BUSFAULTACT Mask */ + +#define SCB_SHCSR_MEMFAULTACT_Pos 0U /*!< SCB SHCSR: MEMFAULTACT Position */ +#define SCB_SHCSR_MEMFAULTACT_Msk (1UL /*<< SCB_SHCSR_MEMFAULTACT_Pos*/) /*!< SCB SHCSR: MEMFAULTACT Mask */ + +/* SCB Configurable Fault Status Register Definitions */ +#define SCB_CFSR_USGFAULTSR_Pos 16U /*!< SCB CFSR: Usage Fault Status Register Position */ +#define SCB_CFSR_USGFAULTSR_Msk (0xFFFFUL << SCB_CFSR_USGFAULTSR_Pos) /*!< SCB CFSR: Usage Fault Status Register Mask */ + +#define SCB_CFSR_BUSFAULTSR_Pos 8U /*!< SCB CFSR: Bus Fault Status Register Position */ +#define SCB_CFSR_BUSFAULTSR_Msk (0xFFUL << SCB_CFSR_BUSFAULTSR_Pos) /*!< SCB CFSR: Bus Fault Status Register Mask */ + +#define SCB_CFSR_MEMFAULTSR_Pos 0U /*!< SCB CFSR: Memory Manage Fault Status Register Position */ +#define SCB_CFSR_MEMFAULTSR_Msk (0xFFUL /*<< SCB_CFSR_MEMFAULTSR_Pos*/) /*!< SCB CFSR: Memory Manage Fault Status Register Mask */ + +/* MemManage Fault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_MMARVALID_Pos (SCB_CFSR_MEMFAULTSR_Pos + 7U) /*!< SCB CFSR (MMFSR): MMARVALID Position */ +#define SCB_CFSR_MMARVALID_Msk (1UL << SCB_CFSR_MMARVALID_Pos) /*!< SCB CFSR (MMFSR): MMARVALID Mask */ + +#define SCB_CFSR_MLSPERR_Pos (SCB_CFSR_MEMFAULTSR_Pos + 5U) /*!< SCB CFSR (MMFSR): MLSPERR Position */ +#define SCB_CFSR_MLSPERR_Msk (1UL << SCB_CFSR_MLSPERR_Pos) /*!< SCB CFSR (MMFSR): MLSPERR Mask */ + +#define SCB_CFSR_MSTKERR_Pos (SCB_CFSR_MEMFAULTSR_Pos + 4U) /*!< SCB CFSR (MMFSR): MSTKERR Position */ +#define SCB_CFSR_MSTKERR_Msk (1UL << SCB_CFSR_MSTKERR_Pos) /*!< SCB CFSR (MMFSR): MSTKERR Mask */ + +#define SCB_CFSR_MUNSTKERR_Pos (SCB_CFSR_MEMFAULTSR_Pos + 3U) /*!< SCB CFSR (MMFSR): MUNSTKERR Position */ +#define SCB_CFSR_MUNSTKERR_Msk (1UL << SCB_CFSR_MUNSTKERR_Pos) /*!< SCB CFSR (MMFSR): MUNSTKERR Mask */ + +#define SCB_CFSR_DACCVIOL_Pos (SCB_CFSR_MEMFAULTSR_Pos + 1U) /*!< SCB CFSR (MMFSR): DACCVIOL Position */ +#define SCB_CFSR_DACCVIOL_Msk (1UL << SCB_CFSR_DACCVIOL_Pos) /*!< SCB CFSR (MMFSR): DACCVIOL Mask */ + +#define SCB_CFSR_IACCVIOL_Pos (SCB_CFSR_MEMFAULTSR_Pos + 0U) /*!< SCB CFSR (MMFSR): IACCVIOL Position */ +#define SCB_CFSR_IACCVIOL_Msk (1UL /*<< SCB_CFSR_IACCVIOL_Pos*/) /*!< SCB CFSR (MMFSR): IACCVIOL Mask */ + +/* BusFault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_BFARVALID_Pos (SCB_CFSR_BUSFAULTSR_Pos + 7U) /*!< SCB CFSR (BFSR): BFARVALID Position */ +#define SCB_CFSR_BFARVALID_Msk (1UL << SCB_CFSR_BFARVALID_Pos) /*!< SCB CFSR (BFSR): BFARVALID Mask */ + +#define SCB_CFSR_LSPERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 5U) /*!< SCB CFSR (BFSR): LSPERR Position */ +#define SCB_CFSR_LSPERR_Msk (1UL << SCB_CFSR_LSPERR_Pos) /*!< SCB CFSR (BFSR): LSPERR Mask */ + +#define SCB_CFSR_STKERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 4U) /*!< SCB CFSR (BFSR): STKERR Position */ +#define SCB_CFSR_STKERR_Msk (1UL << SCB_CFSR_STKERR_Pos) /*!< SCB CFSR (BFSR): STKERR Mask */ + +#define SCB_CFSR_UNSTKERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 3U) /*!< SCB CFSR (BFSR): UNSTKERR Position */ +#define SCB_CFSR_UNSTKERR_Msk (1UL << SCB_CFSR_UNSTKERR_Pos) /*!< SCB CFSR (BFSR): UNSTKERR Mask */ + +#define SCB_CFSR_IMPRECISERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 2U) /*!< SCB CFSR (BFSR): IMPRECISERR Position */ +#define SCB_CFSR_IMPRECISERR_Msk (1UL << SCB_CFSR_IMPRECISERR_Pos) /*!< SCB CFSR (BFSR): IMPRECISERR Mask */ + +#define SCB_CFSR_PRECISERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 1U) /*!< SCB CFSR (BFSR): PRECISERR Position */ +#define SCB_CFSR_PRECISERR_Msk (1UL << SCB_CFSR_PRECISERR_Pos) /*!< SCB CFSR (BFSR): PRECISERR Mask */ + +#define SCB_CFSR_IBUSERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 0U) /*!< SCB CFSR (BFSR): IBUSERR Position */ +#define SCB_CFSR_IBUSERR_Msk (1UL << SCB_CFSR_IBUSERR_Pos) /*!< SCB CFSR (BFSR): IBUSERR Mask */ + +/* UsageFault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_DIVBYZERO_Pos (SCB_CFSR_USGFAULTSR_Pos + 9U) /*!< SCB CFSR (UFSR): DIVBYZERO Position */ +#define SCB_CFSR_DIVBYZERO_Msk (1UL << SCB_CFSR_DIVBYZERO_Pos) /*!< SCB CFSR (UFSR): DIVBYZERO Mask */ + +#define SCB_CFSR_UNALIGNED_Pos (SCB_CFSR_USGFAULTSR_Pos + 8U) /*!< SCB CFSR (UFSR): UNALIGNED Position */ +#define SCB_CFSR_UNALIGNED_Msk (1UL << SCB_CFSR_UNALIGNED_Pos) /*!< SCB CFSR (UFSR): UNALIGNED Mask */ + +#define SCB_CFSR_STKOF_Pos (SCB_CFSR_USGFAULTSR_Pos + 4U) /*!< SCB CFSR (UFSR): STKOF Position */ +#define SCB_CFSR_STKOF_Msk (1UL << SCB_CFSR_STKOF_Pos) /*!< SCB CFSR (UFSR): STKOF Mask */ + +#define SCB_CFSR_NOCP_Pos (SCB_CFSR_USGFAULTSR_Pos + 3U) /*!< SCB CFSR (UFSR): NOCP Position */ +#define SCB_CFSR_NOCP_Msk (1UL << SCB_CFSR_NOCP_Pos) /*!< SCB CFSR (UFSR): NOCP Mask */ + +#define SCB_CFSR_INVPC_Pos (SCB_CFSR_USGFAULTSR_Pos + 2U) /*!< SCB CFSR (UFSR): INVPC Position */ +#define SCB_CFSR_INVPC_Msk (1UL << SCB_CFSR_INVPC_Pos) /*!< SCB CFSR (UFSR): INVPC Mask */ + +#define SCB_CFSR_INVSTATE_Pos (SCB_CFSR_USGFAULTSR_Pos + 1U) /*!< SCB CFSR (UFSR): INVSTATE Position */ +#define SCB_CFSR_INVSTATE_Msk (1UL << SCB_CFSR_INVSTATE_Pos) /*!< SCB CFSR (UFSR): INVSTATE Mask */ + +#define SCB_CFSR_UNDEFINSTR_Pos (SCB_CFSR_USGFAULTSR_Pos + 0U) /*!< SCB CFSR (UFSR): UNDEFINSTR Position */ +#define SCB_CFSR_UNDEFINSTR_Msk (1UL << SCB_CFSR_UNDEFINSTR_Pos) /*!< SCB CFSR (UFSR): UNDEFINSTR Mask */ + +/* SCB Hard Fault Status Register Definitions */ +#define SCB_HFSR_DEBUGEVT_Pos 31U /*!< SCB HFSR: DEBUGEVT Position */ +#define SCB_HFSR_DEBUGEVT_Msk (1UL << SCB_HFSR_DEBUGEVT_Pos) /*!< SCB HFSR: DEBUGEVT Mask */ + +#define SCB_HFSR_FORCED_Pos 30U /*!< SCB HFSR: FORCED Position */ +#define SCB_HFSR_FORCED_Msk (1UL << SCB_HFSR_FORCED_Pos) /*!< SCB HFSR: FORCED Mask */ + +#define SCB_HFSR_VECTTBL_Pos 1U /*!< SCB HFSR: VECTTBL Position */ +#define SCB_HFSR_VECTTBL_Msk (1UL << SCB_HFSR_VECTTBL_Pos) /*!< SCB HFSR: VECTTBL Mask */ + +/* SCB Debug Fault Status Register Definitions */ +#define SCB_DFSR_EXTERNAL_Pos 4U /*!< SCB DFSR: EXTERNAL Position */ +#define SCB_DFSR_EXTERNAL_Msk (1UL << SCB_DFSR_EXTERNAL_Pos) /*!< SCB DFSR: EXTERNAL Mask */ + +#define SCB_DFSR_VCATCH_Pos 3U /*!< SCB DFSR: VCATCH Position */ +#define SCB_DFSR_VCATCH_Msk (1UL << SCB_DFSR_VCATCH_Pos) /*!< SCB DFSR: VCATCH Mask */ + +#define SCB_DFSR_DWTTRAP_Pos 2U /*!< SCB DFSR: DWTTRAP Position */ +#define SCB_DFSR_DWTTRAP_Msk (1UL << SCB_DFSR_DWTTRAP_Pos) /*!< SCB DFSR: DWTTRAP Mask */ + +#define SCB_DFSR_BKPT_Pos 1U /*!< SCB DFSR: BKPT Position */ +#define SCB_DFSR_BKPT_Msk (1UL << SCB_DFSR_BKPT_Pos) /*!< SCB DFSR: BKPT Mask */ + +#define SCB_DFSR_HALTED_Pos 0U /*!< SCB DFSR: HALTED Position */ +#define SCB_DFSR_HALTED_Msk (1UL /*<< SCB_DFSR_HALTED_Pos*/) /*!< SCB DFSR: HALTED Mask */ + +/* SCB Non-Secure Access Control Register Definitions */ +#define SCB_NSACR_CP11_Pos 11U /*!< SCB NSACR: CP11 Position */ +#define SCB_NSACR_CP11_Msk (1UL << SCB_NSACR_CP11_Pos) /*!< SCB NSACR: CP11 Mask */ + +#define SCB_NSACR_CP10_Pos 10U /*!< SCB NSACR: CP10 Position */ +#define SCB_NSACR_CP10_Msk (1UL << SCB_NSACR_CP10_Pos) /*!< SCB NSACR: CP10 Mask */ + +#define SCB_NSACR_CPn_Pos 0U /*!< SCB NSACR: CPn Position */ +#define SCB_NSACR_CPn_Msk (1UL /*<< SCB_NSACR_CPn_Pos*/) /*!< SCB NSACR: CPn Mask */ + +/* SCB Cache Level ID Register Definitions */ +#define SCB_CLIDR_LOUU_Pos 27U /*!< SCB CLIDR: LoUU Position */ +#define SCB_CLIDR_LOUU_Msk (7UL << SCB_CLIDR_LOUU_Pos) /*!< SCB CLIDR: LoUU Mask */ + +#define SCB_CLIDR_LOC_Pos 24U /*!< SCB CLIDR: LoC Position */ +#define SCB_CLIDR_LOC_Msk (7UL << SCB_CLIDR_LOC_Pos) /*!< SCB CLIDR: LoC Mask */ + +#define SCB_CLIDR_IC_Pos 0U /*!< SCB CLIDR: IC Position */ +#define SCB_CLIDR_IC_Msk (1UL << SCB_CLIDR_IC_Pos) /*!< SCB CLIDR: IC Mask */ + +#define SCB_CLIDR_DC_Pos 1U /*!< SCB CLIDR: DC Position */ +#define SCB_CLIDR_DC_Msk (1UL << SCB_CLIDR_DC_Pos) /*!< SCB CLIDR: DC Mask */ + + + +/* SCB Cache Type Register Definitions */ +#define SCB_CTR_FORMAT_Pos 29U /*!< SCB CTR: Format Position */ +#define SCB_CTR_FORMAT_Msk (7UL << SCB_CTR_FORMAT_Pos) /*!< SCB CTR: Format Mask */ + +#define SCB_CTR_CWG_Pos 24U /*!< SCB CTR: CWG Position */ +#define SCB_CTR_CWG_Msk (0xFUL << SCB_CTR_CWG_Pos) /*!< SCB CTR: CWG Mask */ + +#define SCB_CTR_ERG_Pos 20U /*!< SCB CTR: ERG Position */ +#define SCB_CTR_ERG_Msk (0xFUL << SCB_CTR_ERG_Pos) /*!< SCB CTR: ERG Mask */ + +#define SCB_CTR_DMINLINE_Pos 16U /*!< SCB CTR: DminLine Position */ +#define SCB_CTR_DMINLINE_Msk (0xFUL << SCB_CTR_DMINLINE_Pos) /*!< SCB CTR: DminLine Mask */ + +#define SCB_CTR_IMINLINE_Pos 0U /*!< SCB CTR: ImInLine Position */ +#define SCB_CTR_IMINLINE_Msk (0xFUL /*<< SCB_CTR_IMINLINE_Pos*/) /*!< SCB CTR: ImInLine Mask */ + +/* SCB Cache Size ID Register Definitions */ +#define SCB_CCSIDR_WT_Pos 31U /*!< SCB CCSIDR: WT Position */ +#define SCB_CCSIDR_WT_Msk (1UL << SCB_CCSIDR_WT_Pos) /*!< SCB CCSIDR: WT Mask */ + +#define SCB_CCSIDR_WB_Pos 30U /*!< SCB CCSIDR: WB Position */ +#define SCB_CCSIDR_WB_Msk (1UL << SCB_CCSIDR_WB_Pos) /*!< SCB CCSIDR: WB Mask */ + +#define SCB_CCSIDR_RA_Pos 29U /*!< SCB CCSIDR: RA Position */ +#define SCB_CCSIDR_RA_Msk (1UL << SCB_CCSIDR_RA_Pos) /*!< SCB CCSIDR: RA Mask */ + +#define SCB_CCSIDR_WA_Pos 28U /*!< SCB CCSIDR: WA Position */ +#define SCB_CCSIDR_WA_Msk (1UL << SCB_CCSIDR_WA_Pos) /*!< SCB CCSIDR: WA Mask */ + +#define SCB_CCSIDR_NUMSETS_Pos 13U /*!< SCB CCSIDR: NumSets Position */ +#define SCB_CCSIDR_NUMSETS_Msk (0x7FFFUL << SCB_CCSIDR_NUMSETS_Pos) /*!< SCB CCSIDR: NumSets Mask */ + +#define SCB_CCSIDR_ASSOCIATIVITY_Pos 3U /*!< SCB CCSIDR: Associativity Position */ +#define SCB_CCSIDR_ASSOCIATIVITY_Msk (0x3FFUL << SCB_CCSIDR_ASSOCIATIVITY_Pos) /*!< SCB CCSIDR: Associativity Mask */ + +#define SCB_CCSIDR_LINESIZE_Pos 0U /*!< SCB CCSIDR: LineSize Position */ +#define SCB_CCSIDR_LINESIZE_Msk (7UL /*<< SCB_CCSIDR_LINESIZE_Pos*/) /*!< SCB CCSIDR: LineSize Mask */ + +/* SCB Cache Size Selection Register Definitions */ +#define SCB_CSSELR_LEVEL_Pos 1U /*!< SCB CSSELR: Level Position */ +#define SCB_CSSELR_LEVEL_Msk (7UL << SCB_CSSELR_LEVEL_Pos) /*!< SCB CSSELR: Level Mask */ + +#define SCB_CSSELR_IND_Pos 0U /*!< SCB CSSELR: InD Position */ +#define SCB_CSSELR_IND_Msk (1UL /*<< SCB_CSSELR_IND_Pos*/) /*!< SCB CSSELR: InD Mask */ + +/* SCB Software Triggered Interrupt Register Definitions */ +#define SCB_STIR_INTID_Pos 0U /*!< SCB STIR: INTID Position */ +#define SCB_STIR_INTID_Msk (0x1FFUL /*<< SCB_STIR_INTID_Pos*/) /*!< SCB STIR: INTID Mask */ + +/* SCB D-Cache line Invalidate by Set-way Register Definitions */ +#define SCB_DCISW_LEVEL_Pos 1U /*!< SCB DCISW: Level Position */ +#define SCB_DCISW_LEVEL_Msk (7UL << SCB_DCISW_LEVEL_Pos) /*!< SCB DCISW: Level Mask */ + +#define SCB_DCISW_WAY_Pos 30U /*!< SCB DCISW: Way Position */ +#define SCB_DCISW_WAY_Msk (3UL << SCB_DCISW_WAY_Pos) /*!< SCB DCISW: Way Mask */ + +#define SCB_DCISW_SET_Pos 5U /*!< SCB DCISW: Set Position */ +#define SCB_DCISW_SET_Msk (0xFFUL << SCB_DCISW_SET_Pos) /*!< SCB DCISW: Set Mask */ + +/* SCB D-Cache Clean line by Set-way Register Definitions */ +#define SCB_DCCSW_LEVEL_Pos 1U /*!< SCB DCCSW: Level Position */ +#define SCB_DCCSW_LEVEL_Msk (7UL << SCB_DCCSW_LEVEL_Pos) /*!< SCB DCCSW: Level Mask */ + +#define SCB_DCCSW_WAY_Pos 30U /*!< SCB DCCSW: Way Position */ +#define SCB_DCCSW_WAY_Msk (3UL << SCB_DCCSW_WAY_Pos) /*!< SCB DCCSW: Way Mask */ + +#define SCB_DCCSW_SET_Pos 5U /*!< SCB DCCSW: Set Position */ +#define SCB_DCCSW_SET_Msk (0xFFUL << SCB_DCCSW_SET_Pos) /*!< SCB DCCSW: Set Mask */ + +/* SCB D-Cache Clean and Invalidate by Set-way Register Definitions */ +#define SCB_DCCISW_LEVEL_Pos 1U /*!< SCB DCCISW: Level Position */ +#define SCB_DCCISW_LEVEL_Msk (7UL << SCB_DCCISW_LEVEL_Pos) /*!< SCB DCCISW: Level Mask */ + +#define SCB_DCCISW_WAY_Pos 30U /*!< SCB DCCISW: Way Position */ +#define SCB_DCCISW_WAY_Msk (3UL << SCB_DCCISW_WAY_Pos) /*!< SCB DCCISW: Way Mask */ + +#define SCB_DCCISW_SET_Pos 5U /*!< SCB DCCISW: Set Position */ +#define SCB_DCCISW_SET_Msk (0xFFUL << SCB_DCCISW_SET_Pos) /*!< SCB DCCISW: Set Mask */ + +/* ArmChina: Implementation Defined */ +/* Instruction Tightly-Coupled Memory Control Register Definitions */ +#define SCB_ITCMCR_SZ_Pos 3U /*!< SCB ITCMCR: SZ Position */ +#define SCB_ITCMCR_SZ_Msk (0xFUL << SCB_ITCMCR_SZ_Pos) /*!< SCB ITCMCR: SZ Mask */ + +#define SCB_ITCMCR_EN_Pos 0U /*!< SCB ITCMCR: EN Position */ +#define SCB_ITCMCR_EN_Msk (1UL /*<< SCB_ITCMCR_EN_Pos*/) /*!< SCB ITCMCR: EN Mask */ + +/* Data Tightly-Coupled Memory Control Register Definitions */ +#define SCB_DTCMCR_SZ_Pos 3U /*!< SCB DTCMCR: SZ Position */ +#define SCB_DTCMCR_SZ_Msk (0xFUL << SCB_DTCMCR_SZ_Pos) /*!< SCB DTCMCR: SZ Mask */ + +#define SCB_DTCMCR_EN_Pos 0U /*!< SCB DTCMCR: EN Position */ +#define SCB_DTCMCR_EN_Msk (1UL /*<< SCB_DTCMCR_EN_Pos*/) /*!< SCB DTCMCR: EN Mask */ + +/* L1 Cache Control Register Definitions */ +#define SCB_CACR_DCCLEAN_Pos 16U /*!< SCB CACR: DCCLEAN Position */ +#define SCB_CACR_DCCLEAN_Msk (1UL << SCB_CACR_FORCEWT_Pos) /*!< SCB CACR: DCCLEAN Mask */ + +#define SCB_CACR_ICACTIVE_Pos 13U /*!< SCB CACR: ICACTIVE Position */ +#define SCB_CACR_ICACTIVE_Msk (1UL << SCB_CACR_FORCEWT_Pos) /*!< SCB CACR: ICACTIVE Mask */ + +#define SCB_CACR_DCACTIVE_Pos 12U /*!< SCB CACR: DCACTIVE Position */ +#define SCB_CACR_DCACTIVE_Msk (1UL << SCB_CACR_FORCEWT_Pos) /*!< SCB CACR: DCACTIVE Mask */ + +#define SCB_CACR_FORCEWT_Pos 2U /*!< SCB CACR: FORCEWT Position */ +#define SCB_CACR_FORCEWT_Msk (1UL << SCB_CACR_FORCEWT_Pos) /*!< SCB CACR: FORCEWT Mask */ + +/*@} end of group CMSIS_SCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SCnSCB System Controls not in SCB (SCnSCB) + \brief Type definitions for the System Control and ID Register not in the SCB + @{ + */ + +/** + \brief Structure type to access the System Control and ID Register not in the SCB. + */ +typedef struct +{ + uint32_t RESERVED0[1U]; + __IM uint32_t ICTR; /*!< Offset: 0x004 (R/ ) Interrupt Controller Type Register */ + __IOM uint32_t ACTLR; /*!< Offset: 0x008 (R/W) Auxiliary Control Register */ + __IOM uint32_t CPPWR; /*!< Offset: 0x00C (R/W) Coprocessor Power Control Register */ +} SCnSCB_Type; + +/* Interrupt Controller Type Register Definitions */ +#define SCnSCB_ICTR_INTLINESNUM_Pos 0U /*!< ICTR: INTLINESNUM Position */ +#define SCnSCB_ICTR_INTLINESNUM_Msk (0xFUL /*<< SCnSCB_ICTR_INTLINESNUM_Pos*/) /*!< ICTR: INTLINESNUM Mask */ + +/*@} end of group CMSIS_SCnotSCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SysTick System Tick Timer (SysTick) + \brief Type definitions for the System Timer Registers. + @{ + */ + +/** + \brief Structure type to access the System Timer (SysTick). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SysTick Control and Status Register */ + __IOM uint32_t LOAD; /*!< Offset: 0x004 (R/W) SysTick Reload Value Register */ + __IOM uint32_t VAL; /*!< Offset: 0x008 (R/W) SysTick Current Value Register */ + __IM uint32_t CALIB; /*!< Offset: 0x00C (R/ ) SysTick Calibration Register */ +} SysTick_Type; + +/* SysTick Control / Status Register Definitions */ +#define SysTick_CTRL_COUNTFLAG_Pos 16U /*!< SysTick CTRL: COUNTFLAG Position */ +#define SysTick_CTRL_COUNTFLAG_Msk (1UL << SysTick_CTRL_COUNTFLAG_Pos) /*!< SysTick CTRL: COUNTFLAG Mask */ + +#define SysTick_CTRL_CLKSOURCE_Pos 2U /*!< SysTick CTRL: CLKSOURCE Position */ +#define SysTick_CTRL_CLKSOURCE_Msk (1UL << SysTick_CTRL_CLKSOURCE_Pos) /*!< SysTick CTRL: CLKSOURCE Mask */ + +#define SysTick_CTRL_TICKINT_Pos 1U /*!< SysTick CTRL: TICKINT Position */ +#define SysTick_CTRL_TICKINT_Msk (1UL << SysTick_CTRL_TICKINT_Pos) /*!< SysTick CTRL: TICKINT Mask */ + +#define SysTick_CTRL_ENABLE_Pos 0U /*!< SysTick CTRL: ENABLE Position */ +#define SysTick_CTRL_ENABLE_Msk (1UL /*<< SysTick_CTRL_ENABLE_Pos*/) /*!< SysTick CTRL: ENABLE Mask */ + +/* SysTick Reload Register Definitions */ +#define SysTick_LOAD_RELOAD_Pos 0U /*!< SysTick LOAD: RELOAD Position */ +#define SysTick_LOAD_RELOAD_Msk (0xFFFFFFUL /*<< SysTick_LOAD_RELOAD_Pos*/) /*!< SysTick LOAD: RELOAD Mask */ + +/* SysTick Current Register Definitions */ +#define SysTick_VAL_CURRENT_Pos 0U /*!< SysTick VAL: CURRENT Position */ +#define SysTick_VAL_CURRENT_Msk (0xFFFFFFUL /*<< SysTick_VAL_CURRENT_Pos*/) /*!< SysTick VAL: CURRENT Mask */ + +/* SysTick Calibration Register Definitions */ +#define SysTick_CALIB_NOREF_Pos 31U /*!< SysTick CALIB: NOREF Position */ +#define SysTick_CALIB_NOREF_Msk (1UL << SysTick_CALIB_NOREF_Pos) /*!< SysTick CALIB: NOREF Mask */ + +#define SysTick_CALIB_SKEW_Pos 30U /*!< SysTick CALIB: SKEW Position */ +#define SysTick_CALIB_SKEW_Msk (1UL << SysTick_CALIB_SKEW_Pos) /*!< SysTick CALIB: SKEW Mask */ + +#define SysTick_CALIB_TENMS_Pos 0U /*!< SysTick CALIB: TENMS Position */ +#define SysTick_CALIB_TENMS_Msk (0xFFFFFFUL /*<< SysTick_CALIB_TENMS_Pos*/) /*!< SysTick CALIB: TENMS Mask */ + +/*@} end of group CMSIS_SysTick */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_ITM Instrumentation Trace Macrocell (ITM) + \brief Type definitions for the Instrumentation Trace Macrocell (ITM) + @{ + */ + +/** + \brief Structure type to access the Instrumentation Trace Macrocell Register (ITM). + */ +typedef struct +{ + __OM union + { + __OM uint8_t u8; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 8-bit */ + __OM uint16_t u16; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 16-bit */ + __OM uint32_t u32; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 32-bit */ + } PORT [32U]; /*!< Offset: 0x000 ( /W) ITM Stimulus Port Registers */ + uint32_t RESERVED0[864U]; + __IOM uint32_t TER; /*!< Offset: 0xE00 (R/W) ITM Trace Enable Register */ + uint32_t RESERVED1[15U]; + __IOM uint32_t TPR; /*!< Offset: 0xE40 (R/W) ITM Trace Privilege Register */ + uint32_t RESERVED2[15U]; + __IOM uint32_t TCR; /*!< Offset: 0xE80 (R/W) ITM Trace Control Register */ + uint32_t RESERVED3[32U]; + uint32_t RESERVED4[43U]; + __OM uint32_t LAR; /*!< Offset: 0xFB0 ( /W) ITM Lock Access Register */ + __IM uint32_t LSR; /*!< Offset: 0xFB4 (R/ ) ITM Lock Status Register */ + uint32_t RESERVED5[1U]; + __IM uint32_t DEVARCH; /*!< Offset: 0xFBC (R/ ) ITM Device Architecture Register */ + uint32_t RESERVED6[4U]; + __IM uint32_t PID4; /*!< Offset: 0xFD0 (R/ ) ITM Peripheral Identification Register #4 */ + __IM uint32_t PID5; /*!< Offset: 0xFD4 (R/ ) ITM Peripheral Identification Register #5 */ + __IM uint32_t PID6; /*!< Offset: 0xFD8 (R/ ) ITM Peripheral Identification Register #6 */ + __IM uint32_t PID7; /*!< Offset: 0xFDC (R/ ) ITM Peripheral Identification Register #7 */ + __IM uint32_t PID0; /*!< Offset: 0xFE0 (R/ ) ITM Peripheral Identification Register #0 */ + __IM uint32_t PID1; /*!< Offset: 0xFE4 (R/ ) ITM Peripheral Identification Register #1 */ + __IM uint32_t PID2; /*!< Offset: 0xFE8 (R/ ) ITM Peripheral Identification Register #2 */ + __IM uint32_t PID3; /*!< Offset: 0xFEC (R/ ) ITM Peripheral Identification Register #3 */ + __IM uint32_t CID0; /*!< Offset: 0xFF0 (R/ ) ITM Component Identification Register #0 */ + __IM uint32_t CID1; /*!< Offset: 0xFF4 (R/ ) ITM Component Identification Register #1 */ + __IM uint32_t CID2; /*!< Offset: 0xFF8 (R/ ) ITM Component Identification Register #2 */ + __IM uint32_t CID3; /*!< Offset: 0xFFC (R/ ) ITM Component Identification Register #3 */ +} ITM_Type; + +/* ITM Stimulus Port Register Definitions */ +#define ITM_STIM_DISABLED_Pos 1U /*!< ITM STIM: DISABLED Position */ +#define ITM_STIM_DISABLED_Msk (0x1UL << ITM_STIM_DISABLED_Pos) /*!< ITM STIM: DISABLED Mask */ + +#define ITM_STIM_FIFOREADY_Pos 0U /*!< ITM STIM: FIFOREADY Position */ +#define ITM_STIM_FIFOREADY_Msk (0x1UL /*<< ITM_STIM_FIFOREADY_Pos*/) /*!< ITM STIM: FIFOREADY Mask */ + +/* ITM Trace Privilege Register Definitions */ +#define ITM_TPR_PRIVMASK_Pos 0U /*!< ITM TPR: PRIVMASK Position */ +#define ITM_TPR_PRIVMASK_Msk (0xFFFFFFFFUL /*<< ITM_TPR_PRIVMASK_Pos*/) /*!< ITM TPR: PRIVMASK Mask */ + +/* ITM Trace Control Register Definitions */ +#define ITM_TCR_BUSY_Pos 23U /*!< ITM TCR: BUSY Position */ +#define ITM_TCR_BUSY_Msk (1UL << ITM_TCR_BUSY_Pos) /*!< ITM TCR: BUSY Mask */ + +#define ITM_TCR_TRACEBUSID_Pos 16U /*!< ITM TCR: ATBID Position */ +#define ITM_TCR_TRACEBUSID_Msk (0x7FUL << ITM_TCR_TRACEBUSID_Pos) /*!< ITM TCR: ATBID Mask */ + +#define ITM_TCR_GTSFREQ_Pos 10U /*!< ITM TCR: Global timestamp frequency Position */ +#define ITM_TCR_GTSFREQ_Msk (3UL << ITM_TCR_GTSFREQ_Pos) /*!< ITM TCR: Global timestamp frequency Mask */ + +#define ITM_TCR_TSPRESCALE_Pos 8U /*!< ITM TCR: TSPRESCALE Position */ +#define ITM_TCR_TSPRESCALE_Msk (3UL << ITM_TCR_TSPRESCALE_Pos) /*!< ITM TCR: TSPRESCALE Mask */ + +#define ITM_TCR_STALLENA_Pos 5U /*!< ITM TCR: STALLENA Position */ +#define ITM_TCR_STALLENA_Msk (1UL << ITM_TCR_STALLENA_Pos) /*!< ITM TCR: STALLENA Mask */ + +#define ITM_TCR_SWOENA_Pos 4U /*!< ITM TCR: SWOENA Position */ +#define ITM_TCR_SWOENA_Msk (1UL << ITM_TCR_SWOENA_Pos) /*!< ITM TCR: SWOENA Mask */ + +#define ITM_TCR_DWTENA_Pos 3U /*!< ITM TCR: DWTENA Position */ +#define ITM_TCR_DWTENA_Msk (1UL << ITM_TCR_DWTENA_Pos) /*!< ITM TCR: DWTENA Mask */ + +#define ITM_TCR_SYNCENA_Pos 2U /*!< ITM TCR: SYNCENA Position */ +#define ITM_TCR_SYNCENA_Msk (1UL << ITM_TCR_SYNCENA_Pos) /*!< ITM TCR: SYNCENA Mask */ + +#define ITM_TCR_TSENA_Pos 1U /*!< ITM TCR: TSENA Position */ +#define ITM_TCR_TSENA_Msk (1UL << ITM_TCR_TSENA_Pos) /*!< ITM TCR: TSENA Mask */ + +#define ITM_TCR_ITMENA_Pos 0U /*!< ITM TCR: ITM Enable bit Position */ +#define ITM_TCR_ITMENA_Msk (1UL /*<< ITM_TCR_ITMENA_Pos*/) /*!< ITM TCR: ITM Enable bit Mask */ + +/* ITM Lock Status Register Definitions */ +#define ITM_LSR_ByteAcc_Pos 2U /*!< ITM LSR: ByteAcc Position */ +#define ITM_LSR_ByteAcc_Msk (1UL << ITM_LSR_ByteAcc_Pos) /*!< ITM LSR: ByteAcc Mask */ + +#define ITM_LSR_Access_Pos 1U /*!< ITM LSR: Access Position */ +#define ITM_LSR_Access_Msk (1UL << ITM_LSR_Access_Pos) /*!< ITM LSR: Access Mask */ + +#define ITM_LSR_Present_Pos 0U /*!< ITM LSR: Present Position */ +#define ITM_LSR_Present_Msk (1UL /*<< ITM_LSR_Present_Pos*/) /*!< ITM LSR: Present Mask */ + +/*@}*/ /* end of group CMSIS_ITM */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_DWT Data Watchpoint and Trace (DWT) + \brief Type definitions for the Data Watchpoint and Trace (DWT) + @{ + */ + +/** + \brief Structure type to access the Data Watchpoint and Trace Register (DWT). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) Control Register */ + __IOM uint32_t CYCCNT; /*!< Offset: 0x004 (R/W) Cycle Count Register */ + __IOM uint32_t CPICNT; /*!< Offset: 0x008 (R/W) CPI Count Register */ + __IOM uint32_t EXCCNT; /*!< Offset: 0x00C (R/W) Exception Overhead Count Register */ + __IOM uint32_t SLEEPCNT; /*!< Offset: 0x010 (R/W) Sleep Count Register */ + __IOM uint32_t LSUCNT; /*!< Offset: 0x014 (R/W) LSU Count Register */ + __IOM uint32_t FOLDCNT; /*!< Offset: 0x018 (R/W) Folded-instruction Count Register */ + __IM uint32_t PCSR; /*!< Offset: 0x01C (R/ ) Program Counter Sample Register */ + __IOM uint32_t COMP0; /*!< Offset: 0x020 (R/W) Comparator Register 0 */ + uint32_t RESERVED1[1U]; + __IOM uint32_t FUNCTION0; /*!< Offset: 0x028 (R/W) Function Register 0 */ + uint32_t RESERVED2[1U]; + __IOM uint32_t COMP1; /*!< Offset: 0x030 (R/W) Comparator Register 1 */ + uint32_t RESERVED3[1U]; + __IOM uint32_t FUNCTION1; /*!< Offset: 0x038 (R/W) Function Register 1 */ + uint32_t RESERVED4[1U]; + __IOM uint32_t COMP2; /*!< Offset: 0x040 (R/W) Comparator Register 2 */ + uint32_t RESERVED5[1U]; + __IOM uint32_t FUNCTION2; /*!< Offset: 0x048 (R/W) Function Register 2 */ + uint32_t RESERVED6[1U]; + __IOM uint32_t COMP3; /*!< Offset: 0x050 (R/W) Comparator Register 3 */ + uint32_t RESERVED7[1U]; + __IOM uint32_t FUNCTION3; /*!< Offset: 0x058 (R/W) Function Register 3 */ + uint32_t RESERVED8[1U]; + __IOM uint32_t COMP4; /*!< Offset: 0x060 (R/W) Comparator Register 4 */ + uint32_t RESERVED9[1U]; + __IOM uint32_t FUNCTION4; /*!< Offset: 0x068 (R/W) Function Register 4 */ + uint32_t RESERVED10[1U]; + __IOM uint32_t COMP5; /*!< Offset: 0x070 (R/W) Comparator Register 5 */ + uint32_t RESERVED11[1U]; + __IOM uint32_t FUNCTION5; /*!< Offset: 0x078 (R/W) Function Register 5 */ + uint32_t RESERVED12[1U]; + __IOM uint32_t COMP6; /*!< Offset: 0x080 (R/W) Comparator Register 6 */ + uint32_t RESERVED13[1U]; + __IOM uint32_t FUNCTION6; /*!< Offset: 0x088 (R/W) Function Register 6 */ + uint32_t RESERVED14[1U]; + __IOM uint32_t COMP7; /*!< Offset: 0x090 (R/W) Comparator Register 7 */ + uint32_t RESERVED15[1U]; + __IOM uint32_t FUNCTION7; /*!< Offset: 0x098 (R/W) Function Register 7 */ + uint32_t RESERVED16[1U]; + __IOM uint32_t COMP8; /*!< Offset: 0x0A0 (R/W) Comparator Register 8 */ + uint32_t RESERVED17[1U]; + __IOM uint32_t FUNCTION8; /*!< Offset: 0x0A8 (R/W) Function Register 8 */ + uint32_t RESERVED18[1U]; + __IOM uint32_t COMP9; /*!< Offset: 0x0B0 (R/W) Comparator Register 9 */ + uint32_t RESERVED19[1U]; + __IOM uint32_t FUNCTION9; /*!< Offset: 0x0B8 (R/W) Function Register 9 */ + uint32_t RESERVED20[1U]; + __IOM uint32_t COMP10; /*!< Offset: 0x0C0 (R/W) Comparator Register 10 */ + uint32_t RESERVED21[1U]; + __IOM uint32_t FUNCTION10; /*!< Offset: 0x0C8 (R/W) Function Register 10 */ + uint32_t RESERVED22[1U]; + __IOM uint32_t COMP11; /*!< Offset: 0x0D0 (R/W) Comparator Register 11 */ + uint32_t RESERVED23[1U]; + __IOM uint32_t FUNCTION11; /*!< Offset: 0x0D8 (R/W) Function Register 11 */ + uint32_t RESERVED24[1U]; + __IOM uint32_t COMP12; /*!< Offset: 0x0E0 (R/W) Comparator Register 12 */ + uint32_t RESERVED25[1U]; + __IOM uint32_t FUNCTION12; /*!< Offset: 0x0E8 (R/W) Function Register 12 */ + uint32_t RESERVED26[1U]; + __IOM uint32_t COMP13; /*!< Offset: 0x0F0 (R/W) Comparator Register 13 */ + uint32_t RESERVED27[1U]; + __IOM uint32_t FUNCTION13; /*!< Offset: 0x0F8 (R/W) Function Register 13 */ + uint32_t RESERVED28[1U]; + __IOM uint32_t COMP14; /*!< Offset: 0x100 (R/W) Comparator Register 14 */ + uint32_t RESERVED29[1U]; + __IOM uint32_t FUNCTION14; /*!< Offset: 0x108 (R/W) Function Register 14 */ + uint32_t RESERVED30[1U]; + __IOM uint32_t COMP15; /*!< Offset: 0x110 (R/W) Comparator Register 15 */ + uint32_t RESERVED31[1U]; + __IOM uint32_t FUNCTION15; /*!< Offset: 0x118 (R/W) Function Register 15 */ + uint32_t RESERVED32[934U]; + __IM uint32_t LSR; /*!< Offset: 0xFB4 (R ) Lock Status Register */ + uint32_t RESERVED33[1U]; + __IM uint32_t DEVARCH; /*!< Offset: 0xFBC (R/ ) Device Architecture Register */ +} DWT_Type; + +/* DWT Control Register Definitions */ +#define DWT_CTRL_NUMCOMP_Pos 28U /*!< DWT CTRL: NUMCOMP Position */ +#define DWT_CTRL_NUMCOMP_Msk (0xFUL << DWT_CTRL_NUMCOMP_Pos) /*!< DWT CTRL: NUMCOMP Mask */ + +#define DWT_CTRL_NOTRCPKT_Pos 27U /*!< DWT CTRL: NOTRCPKT Position */ +#define DWT_CTRL_NOTRCPKT_Msk (0x1UL << DWT_CTRL_NOTRCPKT_Pos) /*!< DWT CTRL: NOTRCPKT Mask */ + +#define DWT_CTRL_NOEXTTRIG_Pos 26U /*!< DWT CTRL: NOEXTTRIG Position */ +#define DWT_CTRL_NOEXTTRIG_Msk (0x1UL << DWT_CTRL_NOEXTTRIG_Pos) /*!< DWT CTRL: NOEXTTRIG Mask */ + +#define DWT_CTRL_NOCYCCNT_Pos 25U /*!< DWT CTRL: NOCYCCNT Position */ +#define DWT_CTRL_NOCYCCNT_Msk (0x1UL << DWT_CTRL_NOCYCCNT_Pos) /*!< DWT CTRL: NOCYCCNT Mask */ + +#define DWT_CTRL_NOPRFCNT_Pos 24U /*!< DWT CTRL: NOPRFCNT Position */ +#define DWT_CTRL_NOPRFCNT_Msk (0x1UL << DWT_CTRL_NOPRFCNT_Pos) /*!< DWT CTRL: NOPRFCNT Mask */ + +#define DWT_CTRL_CYCDISS_Pos 23U /*!< DWT CTRL: CYCDISS Position */ +#define DWT_CTRL_CYCDISS_Msk (0x1UL << DWT_CTRL_CYCDISS_Pos) /*!< DWT CTRL: CYCDISS Mask */ + +#define DWT_CTRL_CYCEVTENA_Pos 22U /*!< DWT CTRL: CYCEVTENA Position */ +#define DWT_CTRL_CYCEVTENA_Msk (0x1UL << DWT_CTRL_CYCEVTENA_Pos) /*!< DWT CTRL: CYCEVTENA Mask */ + +#define DWT_CTRL_FOLDEVTENA_Pos 21U /*!< DWT CTRL: FOLDEVTENA Position */ +#define DWT_CTRL_FOLDEVTENA_Msk (0x1UL << DWT_CTRL_FOLDEVTENA_Pos) /*!< DWT CTRL: FOLDEVTENA Mask */ + +#define DWT_CTRL_LSUEVTENA_Pos 20U /*!< DWT CTRL: LSUEVTENA Position */ +#define DWT_CTRL_LSUEVTENA_Msk (0x1UL << DWT_CTRL_LSUEVTENA_Pos) /*!< DWT CTRL: LSUEVTENA Mask */ + +#define DWT_CTRL_SLEEPEVTENA_Pos 19U /*!< DWT CTRL: SLEEPEVTENA Position */ +#define DWT_CTRL_SLEEPEVTENA_Msk (0x1UL << DWT_CTRL_SLEEPEVTENA_Pos) /*!< DWT CTRL: SLEEPEVTENA Mask */ + +#define DWT_CTRL_EXCEVTENA_Pos 18U /*!< DWT CTRL: EXCEVTENA Position */ +#define DWT_CTRL_EXCEVTENA_Msk (0x1UL << DWT_CTRL_EXCEVTENA_Pos) /*!< DWT CTRL: EXCEVTENA Mask */ + +#define DWT_CTRL_CPIEVTENA_Pos 17U /*!< DWT CTRL: CPIEVTENA Position */ +#define DWT_CTRL_CPIEVTENA_Msk (0x1UL << DWT_CTRL_CPIEVTENA_Pos) /*!< DWT CTRL: CPIEVTENA Mask */ + +#define DWT_CTRL_EXCTRCENA_Pos 16U /*!< DWT CTRL: EXCTRCENA Position */ +#define DWT_CTRL_EXCTRCENA_Msk (0x1UL << DWT_CTRL_EXCTRCENA_Pos) /*!< DWT CTRL: EXCTRCENA Mask */ + +#define DWT_CTRL_PCSAMPLENA_Pos 12U /*!< DWT CTRL: PCSAMPLENA Position */ +#define DWT_CTRL_PCSAMPLENA_Msk (0x1UL << DWT_CTRL_PCSAMPLENA_Pos) /*!< DWT CTRL: PCSAMPLENA Mask */ + +#define DWT_CTRL_SYNCTAP_Pos 10U /*!< DWT CTRL: SYNCTAP Position */ +#define DWT_CTRL_SYNCTAP_Msk (0x3UL << DWT_CTRL_SYNCTAP_Pos) /*!< DWT CTRL: SYNCTAP Mask */ + +#define DWT_CTRL_CYCTAP_Pos 9U /*!< DWT CTRL: CYCTAP Position */ +#define DWT_CTRL_CYCTAP_Msk (0x1UL << DWT_CTRL_CYCTAP_Pos) /*!< DWT CTRL: CYCTAP Mask */ + +#define DWT_CTRL_POSTINIT_Pos 5U /*!< DWT CTRL: POSTINIT Position */ +#define DWT_CTRL_POSTINIT_Msk (0xFUL << DWT_CTRL_POSTINIT_Pos) /*!< DWT CTRL: POSTINIT Mask */ + +#define DWT_CTRL_POSTPRESET_Pos 1U /*!< DWT CTRL: POSTPRESET Position */ +#define DWT_CTRL_POSTPRESET_Msk (0xFUL << DWT_CTRL_POSTPRESET_Pos) /*!< DWT CTRL: POSTPRESET Mask */ + +#define DWT_CTRL_CYCCNTENA_Pos 0U /*!< DWT CTRL: CYCCNTENA Position */ +#define DWT_CTRL_CYCCNTENA_Msk (0x1UL /*<< DWT_CTRL_CYCCNTENA_Pos*/) /*!< DWT CTRL: CYCCNTENA Mask */ + +/* DWT CPI Count Register Definitions */ +#define DWT_CPICNT_CPICNT_Pos 0U /*!< DWT CPICNT: CPICNT Position */ +#define DWT_CPICNT_CPICNT_Msk (0xFFUL /*<< DWT_CPICNT_CPICNT_Pos*/) /*!< DWT CPICNT: CPICNT Mask */ + +/* DWT Exception Overhead Count Register Definitions */ +#define DWT_EXCCNT_EXCCNT_Pos 0U /*!< DWT EXCCNT: EXCCNT Position */ +#define DWT_EXCCNT_EXCCNT_Msk (0xFFUL /*<< DWT_EXCCNT_EXCCNT_Pos*/) /*!< DWT EXCCNT: EXCCNT Mask */ + +/* DWT Sleep Count Register Definitions */ +#define DWT_SLEEPCNT_SLEEPCNT_Pos 0U /*!< DWT SLEEPCNT: SLEEPCNT Position */ +#define DWT_SLEEPCNT_SLEEPCNT_Msk (0xFFUL /*<< DWT_SLEEPCNT_SLEEPCNT_Pos*/) /*!< DWT SLEEPCNT: SLEEPCNT Mask */ + +/* DWT LSU Count Register Definitions */ +#define DWT_LSUCNT_LSUCNT_Pos 0U /*!< DWT LSUCNT: LSUCNT Position */ +#define DWT_LSUCNT_LSUCNT_Msk (0xFFUL /*<< DWT_LSUCNT_LSUCNT_Pos*/) /*!< DWT LSUCNT: LSUCNT Mask */ + +/* DWT Folded-instruction Count Register Definitions */ +#define DWT_FOLDCNT_FOLDCNT_Pos 0U /*!< DWT FOLDCNT: FOLDCNT Position */ +#define DWT_FOLDCNT_FOLDCNT_Msk (0xFFUL /*<< DWT_FOLDCNT_FOLDCNT_Pos*/) /*!< DWT FOLDCNT: FOLDCNT Mask */ + +/* DWT Comparator Function Register Definitions */ +#define DWT_FUNCTION_ID_Pos 27U /*!< DWT FUNCTION: ID Position */ +#define DWT_FUNCTION_ID_Msk (0x1FUL << DWT_FUNCTION_ID_Pos) /*!< DWT FUNCTION: ID Mask */ + +#define DWT_FUNCTION_MATCHED_Pos 24U /*!< DWT FUNCTION: MATCHED Position */ +#define DWT_FUNCTION_MATCHED_Msk (0x1UL << DWT_FUNCTION_MATCHED_Pos) /*!< DWT FUNCTION: MATCHED Mask */ + +#define DWT_FUNCTION_DATAVSIZE_Pos 10U /*!< DWT FUNCTION: DATAVSIZE Position */ +#define DWT_FUNCTION_DATAVSIZE_Msk (0x3UL << DWT_FUNCTION_DATAVSIZE_Pos) /*!< DWT FUNCTION: DATAVSIZE Mask */ + +#define DWT_FUNCTION_ACTION_Pos 4U /*!< DWT FUNCTION: ACTION Position */ +#define DWT_FUNCTION_ACTION_Msk (0x1UL << DWT_FUNCTION_ACTION_Pos) /*!< DWT FUNCTION: ACTION Mask */ + +#define DWT_FUNCTION_MATCH_Pos 0U /*!< DWT FUNCTION: MATCH Position */ +#define DWT_FUNCTION_MATCH_Msk (0xFUL /*<< DWT_FUNCTION_MATCH_Pos*/) /*!< DWT FUNCTION: MATCH Mask */ + +/*@}*/ /* end of group CMSIS_DWT */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_TPI Trace Port Interface (TPI) + \brief Type definitions for the Trace Port Interface (TPI) + @{ + */ + +/** + \brief Structure type to access the Trace Port Interface Register (TPI). + */ +typedef struct +{ + __IM uint32_t SSPSR; /*!< Offset: 0x000 (R/ ) Supported Parallel Port Size Register */ + __IOM uint32_t CSPSR; /*!< Offset: 0x004 (R/W) Current Parallel Port Size Register */ + uint32_t RESERVED0[2U]; + __IOM uint32_t ACPR; /*!< Offset: 0x010 (R/W) Asynchronous Clock Prescaler Register */ + uint32_t RESERVED1[55U]; + __IOM uint32_t SPPR; /*!< Offset: 0x0F0 (R/W) Selected Pin Protocol Register */ + uint32_t RESERVED2[131U]; + __IM uint32_t FFSR; /*!< Offset: 0x300 (R/ ) Formatter and Flush Status Register */ + __IOM uint32_t FFCR; /*!< Offset: 0x304 (R/W) Formatter and Flush Control Register */ + __IOM uint32_t PSCR; /*!< Offset: 0x308 (R/W) Periodic Synchronization Control Register */ + uint32_t RESERVED3[759U]; + __IM uint32_t TRIGGER; /*!< Offset: 0xEE8 (R/ ) TRIGGER Register */ + __IM uint32_t ITFTTD0; /*!< Offset: 0xEEC (R/ ) Integration Test FIFO Test Data 0 Register */ + __IOM uint32_t ITATBCTR2; /*!< Offset: 0xEF0 (R/W) Integration Test ATB Control Register 2 */ + uint32_t RESERVED4[1U]; + __IM uint32_t ITATBCTR0; /*!< Offset: 0xEF8 (R/ ) Integration Test ATB Control Register 0 */ + __IM uint32_t ITFTTD1; /*!< Offset: 0xEFC (R/ ) Integration Test FIFO Test Data 1 Register */ + __IOM uint32_t ITCTRL; /*!< Offset: 0xF00 (R/W) Integration Mode Control */ + uint32_t RESERVED5[39U]; + __IOM uint32_t CLAIMSET; /*!< Offset: 0xFA0 (R/W) Claim tag set */ + __IOM uint32_t CLAIMCLR; /*!< Offset: 0xFA4 (R/W) Claim tag clear */ + uint32_t RESERVED7[8U]; + __IM uint32_t DEVID; /*!< Offset: 0xFC8 (R/ ) Device Configuration Register */ + __IM uint32_t DEVTYPE; /*!< Offset: 0xFCC (R/ ) Device Type Identifier Register */ +} TPI_Type; + +/* TPI Asynchronous Clock Prescaler Register Definitions */ +#define TPI_ACPR_PRESCALER_Pos 0U /*!< TPI ACPR: PRESCALER Position */ +#define TPI_ACPR_PRESCALER_Msk (0x1FFFUL /*<< TPI_ACPR_PRESCALER_Pos*/) /*!< TPI ACPR: PRESCALER Mask */ + +/* TPI Selected Pin Protocol Register Definitions */ +#define TPI_SPPR_TXMODE_Pos 0U /*!< TPI SPPR: TXMODE Position */ +#define TPI_SPPR_TXMODE_Msk (0x3UL /*<< TPI_SPPR_TXMODE_Pos*/) /*!< TPI SPPR: TXMODE Mask */ + +/* TPI Formatter and Flush Status Register Definitions */ +#define TPI_FFSR_FtNonStop_Pos 3U /*!< TPI FFSR: FtNonStop Position */ +#define TPI_FFSR_FtNonStop_Msk (0x1UL << TPI_FFSR_FtNonStop_Pos) /*!< TPI FFSR: FtNonStop Mask */ + +#define TPI_FFSR_TCPresent_Pos 2U /*!< TPI FFSR: TCPresent Position */ +#define TPI_FFSR_TCPresent_Msk (0x1UL << TPI_FFSR_TCPresent_Pos) /*!< TPI FFSR: TCPresent Mask */ + +#define TPI_FFSR_FtStopped_Pos 1U /*!< TPI FFSR: FtStopped Position */ +#define TPI_FFSR_FtStopped_Msk (0x1UL << TPI_FFSR_FtStopped_Pos) /*!< TPI FFSR: FtStopped Mask */ + +#define TPI_FFSR_FlInProg_Pos 0U /*!< TPI FFSR: FlInProg Position */ +#define TPI_FFSR_FlInProg_Msk (0x1UL /*<< TPI_FFSR_FlInProg_Pos*/) /*!< TPI FFSR: FlInProg Mask */ + +/* TPI Formatter and Flush Control Register Definitions */ +#define TPI_FFCR_TrigIn_Pos 8U /*!< TPI FFCR: TrigIn Position */ +#define TPI_FFCR_TrigIn_Msk (0x1UL << TPI_FFCR_TrigIn_Pos) /*!< TPI FFCR: TrigIn Mask */ + +#define TPI_FFCR_FOnMan_Pos 6U /*!< TPI FFCR: FOnMan Position */ +#define TPI_FFCR_FOnMan_Msk (0x1UL << TPI_FFCR_FOnMan_Pos) /*!< TPI FFCR: FOnMan Mask */ + +#define TPI_FFCR_EnFCont_Pos 1U /*!< TPI FFCR: EnFCont Position */ +#define TPI_FFCR_EnFCont_Msk (0x1UL << TPI_FFCR_EnFCont_Pos) /*!< TPI FFCR: EnFCont Mask */ + +/* TPI TRIGGER Register Definitions */ +#define TPI_TRIGGER_TRIGGER_Pos 0U /*!< TPI TRIGGER: TRIGGER Position */ +#define TPI_TRIGGER_TRIGGER_Msk (0x1UL /*<< TPI_TRIGGER_TRIGGER_Pos*/) /*!< TPI TRIGGER: TRIGGER Mask */ + +/* TPI Integration Test FIFO Test Data 0 Register Definitions */ +#define TPI_ITFTTD0_ATB_IF2_ATVALID_Pos 29U /*!< TPI ITFTTD0: ATB Interface 2 ATVALIDPosition */ +#define TPI_ITFTTD0_ATB_IF2_ATVALID_Msk (0x3UL << TPI_ITFTTD0_ATB_IF2_ATVALID_Pos) /*!< TPI ITFTTD0: ATB Interface 2 ATVALID Mask */ + +#define TPI_ITFTTD0_ATB_IF2_bytecount_Pos 27U /*!< TPI ITFTTD0: ATB Interface 2 byte count Position */ +#define TPI_ITFTTD0_ATB_IF2_bytecount_Msk (0x3UL << TPI_ITFTTD0_ATB_IF2_bytecount_Pos) /*!< TPI ITFTTD0: ATB Interface 2 byte count Mask */ + +#define TPI_ITFTTD0_ATB_IF1_ATVALID_Pos 26U /*!< TPI ITFTTD0: ATB Interface 1 ATVALID Position */ +#define TPI_ITFTTD0_ATB_IF1_ATVALID_Msk (0x3UL << TPI_ITFTTD0_ATB_IF1_ATVALID_Pos) /*!< TPI ITFTTD0: ATB Interface 1 ATVALID Mask */ + +#define TPI_ITFTTD0_ATB_IF1_bytecount_Pos 24U /*!< TPI ITFTTD0: ATB Interface 1 byte count Position */ +#define TPI_ITFTTD0_ATB_IF1_bytecount_Msk (0x3UL << TPI_ITFTTD0_ATB_IF1_bytecount_Pos) /*!< TPI ITFTTD0: ATB Interface 1 byte countt Mask */ + +#define TPI_ITFTTD0_ATB_IF1_data2_Pos 16U /*!< TPI ITFTTD0: ATB Interface 1 data2 Position */ +#define TPI_ITFTTD0_ATB_IF1_data2_Msk (0xFFUL << TPI_ITFTTD0_ATB_IF1_data1_Pos) /*!< TPI ITFTTD0: ATB Interface 1 data2 Mask */ + +#define TPI_ITFTTD0_ATB_IF1_data1_Pos 8U /*!< TPI ITFTTD0: ATB Interface 1 data1 Position */ +#define TPI_ITFTTD0_ATB_IF1_data1_Msk (0xFFUL << TPI_ITFTTD0_ATB_IF1_data1_Pos) /*!< TPI ITFTTD0: ATB Interface 1 data1 Mask */ + +#define TPI_ITFTTD0_ATB_IF1_data0_Pos 0U /*!< TPI ITFTTD0: ATB Interface 1 data0 Position */ +#define TPI_ITFTTD0_ATB_IF1_data0_Msk (0xFFUL /*<< TPI_ITFTTD0_ATB_IF1_data0_Pos*/) /*!< TPI ITFTTD0: ATB Interface 1 data0 Mask */ + +/* TPI Integration Test ATB Control Register 2 Register Definitions */ +#define TPI_ITATBCTR2_AFVALID2S_Pos 1U /*!< TPI ITATBCTR2: AFVALID2S Position */ +#define TPI_ITATBCTR2_AFVALID2S_Msk (0x1UL << TPI_ITATBCTR2_AFVALID2S_Pos) /*!< TPI ITATBCTR2: AFVALID2SS Mask */ + +#define TPI_ITATBCTR2_AFVALID1S_Pos 1U /*!< TPI ITATBCTR2: AFVALID1S Position */ +#define TPI_ITATBCTR2_AFVALID1S_Msk (0x1UL << TPI_ITATBCTR2_AFVALID1S_Pos) /*!< TPI ITATBCTR2: AFVALID1SS Mask */ + +#define TPI_ITATBCTR2_ATREADY2S_Pos 0U /*!< TPI ITATBCTR2: ATREADY2S Position */ +#define TPI_ITATBCTR2_ATREADY2S_Msk (0x1UL /*<< TPI_ITATBCTR2_ATREADY2S_Pos*/) /*!< TPI ITATBCTR2: ATREADY2S Mask */ + +#define TPI_ITATBCTR2_ATREADY1S_Pos 0U /*!< TPI ITATBCTR2: ATREADY1S Position */ +#define TPI_ITATBCTR2_ATREADY1S_Msk (0x1UL /*<< TPI_ITATBCTR2_ATREADY1S_Pos*/) /*!< TPI ITATBCTR2: ATREADY1S Mask */ + +/* TPI Integration Test FIFO Test Data 1 Register Definitions */ +#define TPI_ITFTTD1_ATB_IF2_ATVALID_Pos 29U /*!< TPI ITFTTD1: ATB Interface 2 ATVALID Position */ +#define TPI_ITFTTD1_ATB_IF2_ATVALID_Msk (0x3UL << TPI_ITFTTD1_ATB_IF2_ATVALID_Pos) /*!< TPI ITFTTD1: ATB Interface 2 ATVALID Mask */ + +#define TPI_ITFTTD1_ATB_IF2_bytecount_Pos 27U /*!< TPI ITFTTD1: ATB Interface 2 byte count Position */ +#define TPI_ITFTTD1_ATB_IF2_bytecount_Msk (0x3UL << TPI_ITFTTD1_ATB_IF2_bytecount_Pos) /*!< TPI ITFTTD1: ATB Interface 2 byte count Mask */ + +#define TPI_ITFTTD1_ATB_IF1_ATVALID_Pos 26U /*!< TPI ITFTTD1: ATB Interface 1 ATVALID Position */ +#define TPI_ITFTTD1_ATB_IF1_ATVALID_Msk (0x3UL << TPI_ITFTTD1_ATB_IF1_ATVALID_Pos) /*!< TPI ITFTTD1: ATB Interface 1 ATVALID Mask */ + +#define TPI_ITFTTD1_ATB_IF1_bytecount_Pos 24U /*!< TPI ITFTTD1: ATB Interface 1 byte count Position */ +#define TPI_ITFTTD1_ATB_IF1_bytecount_Msk (0x3UL << TPI_ITFTTD1_ATB_IF1_bytecount_Pos) /*!< TPI ITFTTD1: ATB Interface 1 byte countt Mask */ + +#define TPI_ITFTTD1_ATB_IF2_data2_Pos 16U /*!< TPI ITFTTD1: ATB Interface 2 data2 Position */ +#define TPI_ITFTTD1_ATB_IF2_data2_Msk (0xFFUL << TPI_ITFTTD1_ATB_IF2_data1_Pos) /*!< TPI ITFTTD1: ATB Interface 2 data2 Mask */ + +#define TPI_ITFTTD1_ATB_IF2_data1_Pos 8U /*!< TPI ITFTTD1: ATB Interface 2 data1 Position */ +#define TPI_ITFTTD1_ATB_IF2_data1_Msk (0xFFUL << TPI_ITFTTD1_ATB_IF2_data1_Pos) /*!< TPI ITFTTD1: ATB Interface 2 data1 Mask */ + +#define TPI_ITFTTD1_ATB_IF2_data0_Pos 0U /*!< TPI ITFTTD1: ATB Interface 2 data0 Position */ +#define TPI_ITFTTD1_ATB_IF2_data0_Msk (0xFFUL /*<< TPI_ITFTTD1_ATB_IF2_data0_Pos*/) /*!< TPI ITFTTD1: ATB Interface 2 data0 Mask */ + +/* TPI Integration Test ATB Control Register 0 Definitions */ +#define TPI_ITATBCTR0_AFVALID2S_Pos 1U /*!< TPI ITATBCTR0: AFVALID2S Position */ +#define TPI_ITATBCTR0_AFVALID2S_Msk (0x1UL << TPI_ITATBCTR0_AFVALID2S_Pos) /*!< TPI ITATBCTR0: AFVALID2SS Mask */ + +#define TPI_ITATBCTR0_AFVALID1S_Pos 1U /*!< TPI ITATBCTR0: AFVALID1S Position */ +#define TPI_ITATBCTR0_AFVALID1S_Msk (0x1UL << TPI_ITATBCTR0_AFVALID1S_Pos) /*!< TPI ITATBCTR0: AFVALID1SS Mask */ + +#define TPI_ITATBCTR0_ATREADY2S_Pos 0U /*!< TPI ITATBCTR0: ATREADY2S Position */ +#define TPI_ITATBCTR0_ATREADY2S_Msk (0x1UL /*<< TPI_ITATBCTR0_ATREADY2S_Pos*/) /*!< TPI ITATBCTR0: ATREADY2S Mask */ + +#define TPI_ITATBCTR0_ATREADY1S_Pos 0U /*!< TPI ITATBCTR0: ATREADY1S Position */ +#define TPI_ITATBCTR0_ATREADY1S_Msk (0x1UL /*<< TPI_ITATBCTR0_ATREADY1S_Pos*/) /*!< TPI ITATBCTR0: ATREADY1S Mask */ + +/* TPI Integration Mode Control Register Definitions */ +#define TPI_ITCTRL_Mode_Pos 0U /*!< TPI ITCTRL: Mode Position */ +#define TPI_ITCTRL_Mode_Msk (0x3UL /*<< TPI_ITCTRL_Mode_Pos*/) /*!< TPI ITCTRL: Mode Mask */ + +/* TPI DEVID Register Definitions */ +#define TPI_DEVID_NRZVALID_Pos 11U /*!< TPI DEVID: NRZVALID Position */ +#define TPI_DEVID_NRZVALID_Msk (0x1UL << TPI_DEVID_NRZVALID_Pos) /*!< TPI DEVID: NRZVALID Mask */ + +#define TPI_DEVID_MANCVALID_Pos 10U /*!< TPI DEVID: MANCVALID Position */ +#define TPI_DEVID_MANCVALID_Msk (0x1UL << TPI_DEVID_MANCVALID_Pos) /*!< TPI DEVID: MANCVALID Mask */ + +#define TPI_DEVID_PTINVALID_Pos 9U /*!< TPI DEVID: PTINVALID Position */ +#define TPI_DEVID_PTINVALID_Msk (0x1UL << TPI_DEVID_PTINVALID_Pos) /*!< TPI DEVID: PTINVALID Mask */ + +#define TPI_DEVID_FIFOSZ_Pos 6U /*!< TPI DEVID: FIFOSZ Position */ +#define TPI_DEVID_FIFOSZ_Msk (0x7UL << TPI_DEVID_FIFOSZ_Pos) /*!< TPI DEVID: FIFOSZ Mask */ + +#define TPI_DEVID_NrTraceInput_Pos 0U /*!< TPI DEVID: NrTraceInput Position */ +#define TPI_DEVID_NrTraceInput_Msk (0x3FUL /*<< TPI_DEVID_NrTraceInput_Pos*/) /*!< TPI DEVID: NrTraceInput Mask */ + +/* TPI DEVTYPE Register Definitions */ +#define TPI_DEVTYPE_SubType_Pos 4U /*!< TPI DEVTYPE: SubType Position */ +#define TPI_DEVTYPE_SubType_Msk (0xFUL /*<< TPI_DEVTYPE_SubType_Pos*/) /*!< TPI DEVTYPE: SubType Mask */ + +#define TPI_DEVTYPE_MajorType_Pos 0U /*!< TPI DEVTYPE: MajorType Position */ +#define TPI_DEVTYPE_MajorType_Msk (0xFUL << TPI_DEVTYPE_MajorType_Pos) /*!< TPI DEVTYPE: MajorType Mask */ + +/*@}*/ /* end of group CMSIS_TPI */ + + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_MPU Memory Protection Unit (MPU) + \brief Type definitions for the Memory Protection Unit (MPU) + @{ + */ + +/** + \brief Structure type to access the Memory Protection Unit (MPU). + */ +typedef struct +{ + __IM uint32_t TYPE; /*!< Offset: 0x000 (R/ ) MPU Type Register */ + __IOM uint32_t CTRL; /*!< Offset: 0x004 (R/W) MPU Control Register */ + __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) MPU Region Number Register */ + __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) MPU Region Base Address Register */ + __IOM uint32_t RLAR; /*!< Offset: 0x010 (R/W) MPU Region Limit Address Register */ + __IOM uint32_t RBAR_A1; /*!< Offset: 0x014 (R/W) MPU Region Base Address Register Alias 1 */ + __IOM uint32_t RLAR_A1; /*!< Offset: 0x018 (R/W) MPU Region Limit Address Register Alias 1 */ + __IOM uint32_t RBAR_A2; /*!< Offset: 0x01C (R/W) MPU Region Base Address Register Alias 2 */ + __IOM uint32_t RLAR_A2; /*!< Offset: 0x020 (R/W) MPU Region Limit Address Register Alias 2 */ + __IOM uint32_t RBAR_A3; /*!< Offset: 0x024 (R/W) MPU Region Base Address Register Alias 3 */ + __IOM uint32_t RLAR_A3; /*!< Offset: 0x028 (R/W) MPU Region Limit Address Register Alias 3 */ + uint32_t RESERVED0[1]; + union { + __IOM uint32_t MAIR[2]; + struct { + __IOM uint32_t MAIR0; /*!< Offset: 0x030 (R/W) MPU Memory Attribute Indirection Register 0 */ + __IOM uint32_t MAIR1; /*!< Offset: 0x034 (R/W) MPU Memory Attribute Indirection Register 1 */ + }; + }; +} MPU_Type; + +#define MPU_TYPE_RALIASES 4U + +/* MPU Type Register Definitions */ +#define MPU_TYPE_IREGION_Pos 16U /*!< MPU TYPE: IREGION Position */ +#define MPU_TYPE_IREGION_Msk (0xFFUL << MPU_TYPE_IREGION_Pos) /*!< MPU TYPE: IREGION Mask */ + +#define MPU_TYPE_DREGION_Pos 8U /*!< MPU TYPE: DREGION Position */ +#define MPU_TYPE_DREGION_Msk (0xFFUL << MPU_TYPE_DREGION_Pos) /*!< MPU TYPE: DREGION Mask */ + +#define MPU_TYPE_SEPARATE_Pos 0U /*!< MPU TYPE: SEPARATE Position */ +#define MPU_TYPE_SEPARATE_Msk (1UL /*<< MPU_TYPE_SEPARATE_Pos*/) /*!< MPU TYPE: SEPARATE Mask */ + +/* MPU Control Register Definitions */ +#define MPU_CTRL_PRIVDEFENA_Pos 2U /*!< MPU CTRL: PRIVDEFENA Position */ +#define MPU_CTRL_PRIVDEFENA_Msk (1UL << MPU_CTRL_PRIVDEFENA_Pos) /*!< MPU CTRL: PRIVDEFENA Mask */ + +#define MPU_CTRL_HFNMIENA_Pos 1U /*!< MPU CTRL: HFNMIENA Position */ +#define MPU_CTRL_HFNMIENA_Msk (1UL << MPU_CTRL_HFNMIENA_Pos) /*!< MPU CTRL: HFNMIENA Mask */ + +#define MPU_CTRL_ENABLE_Pos 0U /*!< MPU CTRL: ENABLE Position */ +#define MPU_CTRL_ENABLE_Msk (1UL /*<< MPU_CTRL_ENABLE_Pos*/) /*!< MPU CTRL: ENABLE Mask */ + +/* MPU Region Number Register Definitions */ +#define MPU_RNR_REGION_Pos 0U /*!< MPU RNR: REGION Position */ +#define MPU_RNR_REGION_Msk (0xFFUL /*<< MPU_RNR_REGION_Pos*/) /*!< MPU RNR: REGION Mask */ + +/* MPU Region Base Address Register Definitions */ +#define MPU_RBAR_BASE_Pos 5U /*!< MPU RBAR: BASE Position */ +#define MPU_RBAR_BASE_Msk (0x7FFFFFFUL << MPU_RBAR_BASE_Pos) /*!< MPU RBAR: BASE Mask */ + +#define MPU_RBAR_SH_Pos 3U /*!< MPU RBAR: SH Position */ +#define MPU_RBAR_SH_Msk (0x3UL << MPU_RBAR_SH_Pos) /*!< MPU RBAR: SH Mask */ + +#define MPU_RBAR_AP_Pos 1U /*!< MPU RBAR: AP Position */ +#define MPU_RBAR_AP_Msk (0x3UL << MPU_RBAR_AP_Pos) /*!< MPU RBAR: AP Mask */ + +#define MPU_RBAR_XN_Pos 0U /*!< MPU RBAR: XN Position */ +#define MPU_RBAR_XN_Msk (01UL /*<< MPU_RBAR_XN_Pos*/) /*!< MPU RBAR: XN Mask */ + +/* MPU Region Limit Address Register Definitions */ +#define MPU_RLAR_LIMIT_Pos 5U /*!< MPU RLAR: LIMIT Position */ +#define MPU_RLAR_LIMIT_Msk (0x7FFFFFFUL << MPU_RLAR_LIMIT_Pos) /*!< MPU RLAR: LIMIT Mask */ + +#define MPU_RLAR_AttrIndx_Pos 1U /*!< MPU RLAR: AttrIndx Position */ +#define MPU_RLAR_AttrIndx_Msk (0x7UL << MPU_RLAR_AttrIndx_Pos) /*!< MPU RLAR: AttrIndx Mask */ + +#define MPU_RLAR_EN_Pos 0U /*!< MPU RLAR: Region enable bit Position */ +#define MPU_RLAR_EN_Msk (1UL /*<< MPU_RLAR_EN_Pos*/) /*!< MPU RLAR: Region enable bit Disable Mask */ + +/* MPU Memory Attribute Indirection Register 0 Definitions */ +#define MPU_MAIR0_Attr3_Pos 24U /*!< MPU MAIR0: Attr3 Position */ +#define MPU_MAIR0_Attr3_Msk (0xFFUL << MPU_MAIR0_Attr3_Pos) /*!< MPU MAIR0: Attr3 Mask */ + +#define MPU_MAIR0_Attr2_Pos 16U /*!< MPU MAIR0: Attr2 Position */ +#define MPU_MAIR0_Attr2_Msk (0xFFUL << MPU_MAIR0_Attr2_Pos) /*!< MPU MAIR0: Attr2 Mask */ + +#define MPU_MAIR0_Attr1_Pos 8U /*!< MPU MAIR0: Attr1 Position */ +#define MPU_MAIR0_Attr1_Msk (0xFFUL << MPU_MAIR0_Attr1_Pos) /*!< MPU MAIR0: Attr1 Mask */ + +#define MPU_MAIR0_Attr0_Pos 0U /*!< MPU MAIR0: Attr0 Position */ +#define MPU_MAIR0_Attr0_Msk (0xFFUL /*<< MPU_MAIR0_Attr0_Pos*/) /*!< MPU MAIR0: Attr0 Mask */ + +/* MPU Memory Attribute Indirection Register 1 Definitions */ +#define MPU_MAIR1_Attr7_Pos 24U /*!< MPU MAIR1: Attr7 Position */ +#define MPU_MAIR1_Attr7_Msk (0xFFUL << MPU_MAIR1_Attr7_Pos) /*!< MPU MAIR1: Attr7 Mask */ + +#define MPU_MAIR1_Attr6_Pos 16U /*!< MPU MAIR1: Attr6 Position */ +#define MPU_MAIR1_Attr6_Msk (0xFFUL << MPU_MAIR1_Attr6_Pos) /*!< MPU MAIR1: Attr6 Mask */ + +#define MPU_MAIR1_Attr5_Pos 8U /*!< MPU MAIR1: Attr5 Position */ +#define MPU_MAIR1_Attr5_Msk (0xFFUL << MPU_MAIR1_Attr5_Pos) /*!< MPU MAIR1: Attr5 Mask */ + +#define MPU_MAIR1_Attr4_Pos 0U /*!< MPU MAIR1: Attr4 Position */ +#define MPU_MAIR1_Attr4_Msk (0xFFUL /*<< MPU_MAIR1_Attr4_Pos*/) /*!< MPU MAIR1: Attr4 Mask */ + +/*@} end of group CMSIS_MPU */ +#endif + + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SAU Security Attribution Unit (SAU) + \brief Type definitions for the Security Attribution Unit (SAU) + @{ + */ + +/** + \brief Structure type to access the Security Attribution Unit (SAU). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SAU Control Register */ + __IM uint32_t TYPE; /*!< Offset: 0x004 (R/ ) SAU Type Register */ +#if defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) + __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) SAU Region Number Register */ + __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) SAU Region Base Address Register */ + __IOM uint32_t RLAR; /*!< Offset: 0x010 (R/W) SAU Region Limit Address Register */ +#else + uint32_t RESERVED0[3]; +#endif + __IOM uint32_t SFSR; /*!< Offset: 0x014 (R/W) Secure Fault Status Register */ + __IOM uint32_t SFAR; /*!< Offset: 0x018 (R/W) Secure Fault Address Register */ +} SAU_Type; + +/* SAU Control Register Definitions */ +#define SAU_CTRL_ALLNS_Pos 1U /*!< SAU CTRL: ALLNS Position */ +#define SAU_CTRL_ALLNS_Msk (1UL << SAU_CTRL_ALLNS_Pos) /*!< SAU CTRL: ALLNS Mask */ + +#define SAU_CTRL_ENABLE_Pos 0U /*!< SAU CTRL: ENABLE Position */ +#define SAU_CTRL_ENABLE_Msk (1UL /*<< SAU_CTRL_ENABLE_Pos*/) /*!< SAU CTRL: ENABLE Mask */ + +/* SAU Type Register Definitions */ +#define SAU_TYPE_SREGION_Pos 0U /*!< SAU TYPE: SREGION Position */ +#define SAU_TYPE_SREGION_Msk (0xFFUL /*<< SAU_TYPE_SREGION_Pos*/) /*!< SAU TYPE: SREGION Mask */ + +#if defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) +/* SAU Region Number Register Definitions */ +#define SAU_RNR_REGION_Pos 0U /*!< SAU RNR: REGION Position */ +#define SAU_RNR_REGION_Msk (0xFFUL /*<< SAU_RNR_REGION_Pos*/) /*!< SAU RNR: REGION Mask */ + +/* SAU Region Base Address Register Definitions */ +#define SAU_RBAR_BADDR_Pos 5U /*!< SAU RBAR: BADDR Position */ +#define SAU_RBAR_BADDR_Msk (0x7FFFFFFUL << SAU_RBAR_BADDR_Pos) /*!< SAU RBAR: BADDR Mask */ + +/* SAU Region Limit Address Register Definitions */ +#define SAU_RLAR_LADDR_Pos 5U /*!< SAU RLAR: LADDR Position */ +#define SAU_RLAR_LADDR_Msk (0x7FFFFFFUL << SAU_RLAR_LADDR_Pos) /*!< SAU RLAR: LADDR Mask */ + +#define SAU_RLAR_NSC_Pos 1U /*!< SAU RLAR: NSC Position */ +#define SAU_RLAR_NSC_Msk (1UL << SAU_RLAR_NSC_Pos) /*!< SAU RLAR: NSC Mask */ + +#define SAU_RLAR_ENABLE_Pos 0U /*!< SAU RLAR: ENABLE Position */ +#define SAU_RLAR_ENABLE_Msk (1UL /*<< SAU_RLAR_ENABLE_Pos*/) /*!< SAU RLAR: ENABLE Mask */ + +#endif /* defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) */ + +/* Secure Fault Status Register Definitions */ +#define SAU_SFSR_LSERR_Pos 7U /*!< SAU SFSR: LSERR Position */ +#define SAU_SFSR_LSERR_Msk (1UL << SAU_SFSR_LSERR_Pos) /*!< SAU SFSR: LSERR Mask */ + +#define SAU_SFSR_SFARVALID_Pos 6U /*!< SAU SFSR: SFARVALID Position */ +#define SAU_SFSR_SFARVALID_Msk (1UL << SAU_SFSR_SFARVALID_Pos) /*!< SAU SFSR: SFARVALID Mask */ + +#define SAU_SFSR_LSPERR_Pos 5U /*!< SAU SFSR: LSPERR Position */ +#define SAU_SFSR_LSPERR_Msk (1UL << SAU_SFSR_LSPERR_Pos) /*!< SAU SFSR: LSPERR Mask */ + +#define SAU_SFSR_INVTRAN_Pos 4U /*!< SAU SFSR: INVTRAN Position */ +#define SAU_SFSR_INVTRAN_Msk (1UL << SAU_SFSR_INVTRAN_Pos) /*!< SAU SFSR: INVTRAN Mask */ + +#define SAU_SFSR_AUVIOL_Pos 3U /*!< SAU SFSR: AUVIOL Position */ +#define SAU_SFSR_AUVIOL_Msk (1UL << SAU_SFSR_AUVIOL_Pos) /*!< SAU SFSR: AUVIOL Mask */ + +#define SAU_SFSR_INVER_Pos 2U /*!< SAU SFSR: INVER Position */ +#define SAU_SFSR_INVER_Msk (1UL << SAU_SFSR_INVER_Pos) /*!< SAU SFSR: INVER Mask */ + +#define SAU_SFSR_INVIS_Pos 1U /*!< SAU SFSR: INVIS Position */ +#define SAU_SFSR_INVIS_Msk (1UL << SAU_SFSR_INVIS_Pos) /*!< SAU SFSR: INVIS Mask */ + +#define SAU_SFSR_INVEP_Pos 0U /*!< SAU SFSR: INVEP Position */ +#define SAU_SFSR_INVEP_Msk (1UL /*<< SAU_SFSR_INVEP_Pos*/) /*!< SAU SFSR: INVEP Mask */ + +/*@} end of group CMSIS_SAU */ +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_FPU Floating Point Unit (FPU) + \brief Type definitions for the Floating Point Unit (FPU) + @{ + */ + +/** + \brief Structure type to access the Floating Point Unit (FPU). + */ +typedef struct +{ + uint32_t RESERVED0[1U]; + __IOM uint32_t FPCCR; /*!< Offset: 0x004 (R/W) Floating-Point Context Control Register */ + __IOM uint32_t FPCAR; /*!< Offset: 0x008 (R/W) Floating-Point Context Address Register */ + __IOM uint32_t FPDSCR; /*!< Offset: 0x00C (R/W) Floating-Point Default Status Control Register */ + __IM uint32_t MVFR0; /*!< Offset: 0x010 (R/ ) Media and VFP Feature Register 0 */ + __IM uint32_t MVFR1; /*!< Offset: 0x014 (R/ ) Media and VFP Feature Register 1 */ + __IM uint32_t MVFR2; /*!< Offset: 0x018 (R/ ) Media and VFP Feature Register 2 */ +} FPU_Type; + +/* Floating-Point Context Control Register Definitions */ +#define FPU_FPCCR_ASPEN_Pos 31U /*!< FPCCR: ASPEN bit Position */ +#define FPU_FPCCR_ASPEN_Msk (1UL << FPU_FPCCR_ASPEN_Pos) /*!< FPCCR: ASPEN bit Mask */ + +#define FPU_FPCCR_LSPEN_Pos 30U /*!< FPCCR: LSPEN Position */ +#define FPU_FPCCR_LSPEN_Msk (1UL << FPU_FPCCR_LSPEN_Pos) /*!< FPCCR: LSPEN bit Mask */ + +#define FPU_FPCCR_LSPENS_Pos 29U /*!< FPCCR: LSPENS Position */ +#define FPU_FPCCR_LSPENS_Msk (1UL << FPU_FPCCR_LSPENS_Pos) /*!< FPCCR: LSPENS bit Mask */ + +#define FPU_FPCCR_CLRONRET_Pos 28U /*!< FPCCR: CLRONRET Position */ +#define FPU_FPCCR_CLRONRET_Msk (1UL << FPU_FPCCR_CLRONRET_Pos) /*!< FPCCR: CLRONRET bit Mask */ + +#define FPU_FPCCR_CLRONRETS_Pos 27U /*!< FPCCR: CLRONRETS Position */ +#define FPU_FPCCR_CLRONRETS_Msk (1UL << FPU_FPCCR_CLRONRETS_Pos) /*!< FPCCR: CLRONRETS bit Mask */ + +#define FPU_FPCCR_TS_Pos 26U /*!< FPCCR: TS Position */ +#define FPU_FPCCR_TS_Msk (1UL << FPU_FPCCR_TS_Pos) /*!< FPCCR: TS bit Mask */ + +#define FPU_FPCCR_UFRDY_Pos 10U /*!< FPCCR: UFRDY Position */ +#define FPU_FPCCR_UFRDY_Msk (1UL << FPU_FPCCR_UFRDY_Pos) /*!< FPCCR: UFRDY bit Mask */ + +#define FPU_FPCCR_SPLIMVIOL_Pos 9U /*!< FPCCR: SPLIMVIOL Position */ +#define FPU_FPCCR_SPLIMVIOL_Msk (1UL << FPU_FPCCR_SPLIMVIOL_Pos) /*!< FPCCR: SPLIMVIOL bit Mask */ + +#define FPU_FPCCR_MONRDY_Pos 8U /*!< FPCCR: MONRDY Position */ +#define FPU_FPCCR_MONRDY_Msk (1UL << FPU_FPCCR_MONRDY_Pos) /*!< FPCCR: MONRDY bit Mask */ + +#define FPU_FPCCR_SFRDY_Pos 7U /*!< FPCCR: SFRDY Position */ +#define FPU_FPCCR_SFRDY_Msk (1UL << FPU_FPCCR_SFRDY_Pos) /*!< FPCCR: SFRDY bit Mask */ + +#define FPU_FPCCR_BFRDY_Pos 6U /*!< FPCCR: BFRDY Position */ +#define FPU_FPCCR_BFRDY_Msk (1UL << FPU_FPCCR_BFRDY_Pos) /*!< FPCCR: BFRDY bit Mask */ + +#define FPU_FPCCR_MMRDY_Pos 5U /*!< FPCCR: MMRDY Position */ +#define FPU_FPCCR_MMRDY_Msk (1UL << FPU_FPCCR_MMRDY_Pos) /*!< FPCCR: MMRDY bit Mask */ + +#define FPU_FPCCR_HFRDY_Pos 4U /*!< FPCCR: HFRDY Position */ +#define FPU_FPCCR_HFRDY_Msk (1UL << FPU_FPCCR_HFRDY_Pos) /*!< FPCCR: HFRDY bit Mask */ + +#define FPU_FPCCR_THREAD_Pos 3U /*!< FPCCR: processor mode bit Position */ +#define FPU_FPCCR_THREAD_Msk (1UL << FPU_FPCCR_THREAD_Pos) /*!< FPCCR: processor mode active bit Mask */ + +#define FPU_FPCCR_S_Pos 2U /*!< FPCCR: Security status of the FP context bit Position */ +#define FPU_FPCCR_S_Msk (1UL << FPU_FPCCR_S_Pos) /*!< FPCCR: Security status of the FP context bit Mask */ + +#define FPU_FPCCR_USER_Pos 1U /*!< FPCCR: privilege level bit Position */ +#define FPU_FPCCR_USER_Msk (1UL << FPU_FPCCR_USER_Pos) /*!< FPCCR: privilege level bit Mask */ + +#define FPU_FPCCR_LSPACT_Pos 0U /*!< FPCCR: Lazy state preservation active bit Position */ +#define FPU_FPCCR_LSPACT_Msk (1UL /*<< FPU_FPCCR_LSPACT_Pos*/) /*!< FPCCR: Lazy state preservation active bit Mask */ + +/* Floating-Point Context Address Register Definitions */ +#define FPU_FPCAR_ADDRESS_Pos 3U /*!< FPCAR: ADDRESS bit Position */ +#define FPU_FPCAR_ADDRESS_Msk (0x1FFFFFFFUL << FPU_FPCAR_ADDRESS_Pos) /*!< FPCAR: ADDRESS bit Mask */ + +/* Floating-Point Default Status Control Register Definitions */ +#define FPU_FPDSCR_AHP_Pos 26U /*!< FPDSCR: AHP bit Position */ +#define FPU_FPDSCR_AHP_Msk (1UL << FPU_FPDSCR_AHP_Pos) /*!< FPDSCR: AHP bit Mask */ + +#define FPU_FPDSCR_DN_Pos 25U /*!< FPDSCR: DN bit Position */ +#define FPU_FPDSCR_DN_Msk (1UL << FPU_FPDSCR_DN_Pos) /*!< FPDSCR: DN bit Mask */ + +#define FPU_FPDSCR_FZ_Pos 24U /*!< FPDSCR: FZ bit Position */ +#define FPU_FPDSCR_FZ_Msk (1UL << FPU_FPDSCR_FZ_Pos) /*!< FPDSCR: FZ bit Mask */ + +#define FPU_FPDSCR_RMode_Pos 22U /*!< FPDSCR: RMode bit Position */ +#define FPU_FPDSCR_RMode_Msk (3UL << FPU_FPDSCR_RMode_Pos) /*!< FPDSCR: RMode bit Mask */ + +/* Media and VFP Feature Register 0 Definitions */ +#define FPU_MVFR0_FP_rounding_modes_Pos 28U /*!< MVFR0: FP rounding modes bits Position */ +#define FPU_MVFR0_FP_rounding_modes_Msk (0xFUL << FPU_MVFR0_FP_rounding_modes_Pos) /*!< MVFR0: FP rounding modes bits Mask */ + +#define FPU_MVFR0_Short_vectors_Pos 24U /*!< MVFR0: Short vectors bits Position */ +#define FPU_MVFR0_Short_vectors_Msk (0xFUL << FPU_MVFR0_Short_vectors_Pos) /*!< MVFR0: Short vectors bits Mask */ + +#define FPU_MVFR0_Square_root_Pos 20U /*!< MVFR0: Square root bits Position */ +#define FPU_MVFR0_Square_root_Msk (0xFUL << FPU_MVFR0_Square_root_Pos) /*!< MVFR0: Square root bits Mask */ + +#define FPU_MVFR0_Divide_Pos 16U /*!< MVFR0: Divide bits Position */ +#define FPU_MVFR0_Divide_Msk (0xFUL << FPU_MVFR0_Divide_Pos) /*!< MVFR0: Divide bits Mask */ + +#define FPU_MVFR0_FP_excep_trapping_Pos 12U /*!< MVFR0: FP exception trapping bits Position */ +#define FPU_MVFR0_FP_excep_trapping_Msk (0xFUL << FPU_MVFR0_FP_excep_trapping_Pos) /*!< MVFR0: FP exception trapping bits Mask */ + +#define FPU_MVFR0_Double_precision_Pos 8U /*!< MVFR0: Double-precision bits Position */ +#define FPU_MVFR0_Double_precision_Msk (0xFUL << FPU_MVFR0_Double_precision_Pos) /*!< MVFR0: Double-precision bits Mask */ + +#define FPU_MVFR0_Single_precision_Pos 4U /*!< MVFR0: Single-precision bits Position */ +#define FPU_MVFR0_Single_precision_Msk (0xFUL << FPU_MVFR0_Single_precision_Pos) /*!< MVFR0: Single-precision bits Mask */ + +#define FPU_MVFR0_A_SIMD_registers_Pos 0U /*!< MVFR0: A_SIMD registers bits Position */ +#define FPU_MVFR0_A_SIMD_registers_Msk (0xFUL /*<< FPU_MVFR0_A_SIMD_registers_Pos*/) /*!< MVFR0: A_SIMD registers bits Mask */ + +/* Media and VFP Feature Register 1 Definitions */ +#define FPU_MVFR1_FP_fused_MAC_Pos 28U /*!< MVFR1: FP fused MAC bits Position */ +#define FPU_MVFR1_FP_fused_MAC_Msk (0xFUL << FPU_MVFR1_FP_fused_MAC_Pos) /*!< MVFR1: FP fused MAC bits Mask */ + +#define FPU_MVFR1_FP_HPFP_Pos 24U /*!< MVFR1: FP HPFP bits Position */ +#define FPU_MVFR1_FP_HPFP_Msk (0xFUL << FPU_MVFR1_FP_HPFP_Pos) /*!< MVFR1: FP HPFP bits Mask */ + +#define FPU_MVFR1_D_NaN_mode_Pos 4U /*!< MVFR1: D_NaN mode bits Position */ +#define FPU_MVFR1_D_NaN_mode_Msk (0xFUL << FPU_MVFR1_D_NaN_mode_Pos) /*!< MVFR1: D_NaN mode bits Mask */ + +#define FPU_MVFR1_FtZ_mode_Pos 0U /*!< MVFR1: FtZ mode bits Position */ +#define FPU_MVFR1_FtZ_mode_Msk (0xFUL /*<< FPU_MVFR1_FtZ_mode_Pos*/) /*!< MVFR1: FtZ mode bits Mask */ + +/* Media and VFP Feature Register 2 Definitions */ +#define FPU_MVFR2_FPMisc_Pos 4U /*!< MVFR2: FPMisc bits Position */ +#define FPU_MVFR2_FPMisc_Msk (0xFUL << FPU_MVFR2_FPMisc_Pos) /*!< MVFR2: FPMisc bits Mask */ + +/*@} end of group CMSIS_FPU */ + + + + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_DCB Debug Control Block + \brief Type definitions for the Debug Control Block Registers + @{ + */ + +/** + \brief Structure type to access the Debug Control Block Registers (DCB). + */ +typedef struct +{ + __IOM uint32_t DHCSR; /*!< Offset: 0x000 (R/W) Debug Halting Control and Status Register */ + __OM uint32_t DCRSR; /*!< Offset: 0x004 ( /W) Debug Core Register Selector Register */ + __IOM uint32_t DCRDR; /*!< Offset: 0x008 (R/W) Debug Core Register Data Register */ + __IOM uint32_t DEMCR; /*!< Offset: 0x00C (R/W) Debug Exception and Monitor Control Register */ + uint32_t RESERVED0[1U]; + __IOM uint32_t DAUTHCTRL; /*!< Offset: 0x014 (R/W) Debug Authentication Control Register */ + __IOM uint32_t DSCSR; /*!< Offset: 0x018 (R/W) Debug Security Control and Status Register */ +} DCB_Type; + +/* DHCSR, Debug Halting Control and Status Register Definitions */ +#define DCB_DHCSR_DBGKEY_Pos 16U /*!< DCB DHCSR: Debug key Position */ +#define DCB_DHCSR_DBGKEY_Msk (0xFFFFUL << DCB_DHCSR_DBGKEY_Pos) /*!< DCB DHCSR: Debug key Mask */ + +#define DCB_DHCSR_S_RESTART_ST_Pos 26U /*!< DCB DHCSR: Restart sticky status Position */ +#define DCB_DHCSR_S_RESTART_ST_Msk (0x1UL << DCB_DHCSR_S_RESTART_ST_Pos) /*!< DCB DHCSR: Restart sticky status Mask */ + +#define DCB_DHCSR_S_RESET_ST_Pos 25U /*!< DCB DHCSR: Reset sticky status Position */ +#define DCB_DHCSR_S_RESET_ST_Msk (0x1UL << DCB_DHCSR_S_RESET_ST_Pos) /*!< DCB DHCSR: Reset sticky status Mask */ + +#define DCB_DHCSR_S_RETIRE_ST_Pos 24U /*!< DCB DHCSR: Retire sticky status Position */ +#define DCB_DHCSR_S_RETIRE_ST_Msk (0x1UL << DCB_DHCSR_S_RETIRE_ST_Pos) /*!< DCB DHCSR: Retire sticky status Mask */ + +#define DCB_DHCSR_S_SDE_Pos 20U /*!< DCB DHCSR: Secure debug enabled Position */ +#define DCB_DHCSR_S_SDE_Msk (0x1UL << DCB_DHCSR_S_SDE_Pos) /*!< DCB DHCSR: Secure debug enabled Mask */ + +#define DCB_DHCSR_S_LOCKUP_Pos 19U /*!< DCB DHCSR: Lockup status Position */ +#define DCB_DHCSR_S_LOCKUP_Msk (0x1UL << DCB_DHCSR_S_LOCKUP_Pos) /*!< DCB DHCSR: Lockup status Mask */ + +#define DCB_DHCSR_S_SLEEP_Pos 18U /*!< DCB DHCSR: Sleeping status Position */ +#define DCB_DHCSR_S_SLEEP_Msk (0x1UL << DCB_DHCSR_S_SLEEP_Pos) /*!< DCB DHCSR: Sleeping status Mask */ + +#define DCB_DHCSR_S_HALT_Pos 17U /*!< DCB DHCSR: Halted status Position */ +#define DCB_DHCSR_S_HALT_Msk (0x1UL << DCB_DHCSR_S_HALT_Pos) /*!< DCB DHCSR: Halted status Mask */ + +#define DCB_DHCSR_S_REGRDY_Pos 16U /*!< DCB DHCSR: Register ready status Position */ +#define DCB_DHCSR_S_REGRDY_Msk (0x1UL << DCB_DHCSR_S_REGRDY_Pos) /*!< DCB DHCSR: Register ready status Mask */ + +#define DCB_DHCSR_C_SNAPSTALL_Pos 5U /*!< DCB DHCSR: Snap stall control Position */ +#define DCB_DHCSR_C_SNAPSTALL_Msk (0x1UL << DCB_DHCSR_C_SNAPSTALL_Pos) /*!< DCB DHCSR: Snap stall control Mask */ + +#define DCB_DHCSR_C_MASKINTS_Pos 3U /*!< DCB DHCSR: Mask interrupts control Position */ +#define DCB_DHCSR_C_MASKINTS_Msk (0x1UL << DCB_DHCSR_C_MASKINTS_Pos) /*!< DCB DHCSR: Mask interrupts control Mask */ + +#define DCB_DHCSR_C_STEP_Pos 2U /*!< DCB DHCSR: Step control Position */ +#define DCB_DHCSR_C_STEP_Msk (0x1UL << DCB_DHCSR_C_STEP_Pos) /*!< DCB DHCSR: Step control Mask */ + +#define DCB_DHCSR_C_HALT_Pos 1U /*!< DCB DHCSR: Halt control Position */ +#define DCB_DHCSR_C_HALT_Msk (0x1UL << DCB_DHCSR_C_HALT_Pos) /*!< DCB DHCSR: Halt control Mask */ + +#define DCB_DHCSR_C_DEBUGEN_Pos 0U /*!< DCB DHCSR: Debug enable control Position */ +#define DCB_DHCSR_C_DEBUGEN_Msk (0x1UL /*<< DCB_DHCSR_C_DEBUGEN_Pos*/) /*!< DCB DHCSR: Debug enable control Mask */ + +/* DCRSR, Debug Core Register Select Register Definitions */ +#define DCB_DCRSR_REGWnR_Pos 16U /*!< DCB DCRSR: Register write/not-read Position */ +#define DCB_DCRSR_REGWnR_Msk (0x1UL << DCB_DCRSR_REGWnR_Pos) /*!< DCB DCRSR: Register write/not-read Mask */ + +#define DCB_DCRSR_REGSEL_Pos 0U /*!< DCB DCRSR: Register selector Position */ +#define DCB_DCRSR_REGSEL_Msk (0x7FUL /*<< DCB_DCRSR_REGSEL_Pos*/) /*!< DCB DCRSR: Register selector Mask */ + +/* DCRDR, Debug Core Register Data Register Definitions */ +#define DCB_DCRDR_DBGTMP_Pos 0U /*!< DCB DCRDR: Data temporary buffer Position */ +#define DCB_DCRDR_DBGTMP_Msk (0xFFFFFFFFUL /*<< DCB_DCRDR_DBGTMP_Pos*/) /*!< DCB DCRDR: Data temporary buffer Mask */ + +/* DEMCR, Debug Exception and Monitor Control Register Definitions */ +#define DCB_DEMCR_TRCENA_Pos 24U /*!< DCB DEMCR: Trace enable Position */ +#define DCB_DEMCR_TRCENA_Msk (0x1UL << DCB_DEMCR_TRCENA_Pos) /*!< DCB DEMCR: Trace enable Mask */ + +#define DCB_DEMCR_MONPRKEY_Pos 23U /*!< DCB DEMCR: Monitor pend req key Position */ +#define DCB_DEMCR_MONPRKEY_Msk (0x1UL << DCB_DEMCR_MONPRKEY_Pos) /*!< DCB DEMCR: Monitor pend req key Mask */ + +#define DCB_DEMCR_UMON_EN_Pos 21U /*!< DCB DEMCR: Unprivileged monitor enable Position */ +#define DCB_DEMCR_UMON_EN_Msk (0x1UL << DCB_DEMCR_UMON_EN_Pos) /*!< DCB DEMCR: Unprivileged monitor enable Mask */ + +#define DCB_DEMCR_SDME_Pos 20U /*!< DCB DEMCR: Secure DebugMonitor enable Position */ +#define DCB_DEMCR_SDME_Msk (0x1UL << DCB_DEMCR_SDME_Pos) /*!< DCB DEMCR: Secure DebugMonitor enable Mask */ + +#define DCB_DEMCR_MON_REQ_Pos 19U /*!< DCB DEMCR: Monitor request Position */ +#define DCB_DEMCR_MON_REQ_Msk (0x1UL << DCB_DEMCR_MON_REQ_Pos) /*!< DCB DEMCR: Monitor request Mask */ + +#define DCB_DEMCR_MON_STEP_Pos 18U /*!< DCB DEMCR: Monitor step Position */ +#define DCB_DEMCR_MON_STEP_Msk (0x1UL << DCB_DEMCR_MON_STEP_Pos) /*!< DCB DEMCR: Monitor step Mask */ + +#define DCB_DEMCR_MON_PEND_Pos 17U /*!< DCB DEMCR: Monitor pend Position */ +#define DCB_DEMCR_MON_PEND_Msk (0x1UL << DCB_DEMCR_MON_PEND_Pos) /*!< DCB DEMCR: Monitor pend Mask */ + +#define DCB_DEMCR_MON_EN_Pos 16U /*!< DCB DEMCR: Monitor enable Position */ +#define DCB_DEMCR_MON_EN_Msk (0x1UL << DCB_DEMCR_MON_EN_Pos) /*!< DCB DEMCR: Monitor enable Mask */ + +#define DCB_DEMCR_VC_SFERR_Pos 11U /*!< DCB DEMCR: Vector Catch SecureFault Position */ +#define DCB_DEMCR_VC_SFERR_Msk (0x1UL << DCB_DEMCR_VC_SFERR_Pos) /*!< DCB DEMCR: Vector Catch SecureFault Mask */ + +#define DCB_DEMCR_VC_HARDERR_Pos 10U /*!< DCB DEMCR: Vector Catch HardFault errors Position */ +#define DCB_DEMCR_VC_HARDERR_Msk (0x1UL << DCB_DEMCR_VC_HARDERR_Pos) /*!< DCB DEMCR: Vector Catch HardFault errors Mask */ + +#define DCB_DEMCR_VC_INTERR_Pos 9U /*!< DCB DEMCR: Vector Catch interrupt errors Position */ +#define DCB_DEMCR_VC_INTERR_Msk (0x1UL << DCB_DEMCR_VC_INTERR_Pos) /*!< DCB DEMCR: Vector Catch interrupt errors Mask */ + +#define DCB_DEMCR_VC_BUSERR_Pos 8U /*!< DCB DEMCR: Vector Catch BusFault errors Position */ +#define DCB_DEMCR_VC_BUSERR_Msk (0x1UL << DCB_DEMCR_VC_BUSERR_Pos) /*!< DCB DEMCR: Vector Catch BusFault errors Mask */ + +#define DCB_DEMCR_VC_STATERR_Pos 7U /*!< DCB DEMCR: Vector Catch state errors Position */ +#define DCB_DEMCR_VC_STATERR_Msk (0x1UL << DCB_DEMCR_VC_STATERR_Pos) /*!< DCB DEMCR: Vector Catch state errors Mask */ + +#define DCB_DEMCR_VC_CHKERR_Pos 6U /*!< DCB DEMCR: Vector Catch check errors Position */ +#define DCB_DEMCR_VC_CHKERR_Msk (0x1UL << DCB_DEMCR_VC_CHKERR_Pos) /*!< DCB DEMCR: Vector Catch check errors Mask */ + +#define DCB_DEMCR_VC_NOCPERR_Pos 5U /*!< DCB DEMCR: Vector Catch NOCP errors Position */ +#define DCB_DEMCR_VC_NOCPERR_Msk (0x1UL << DCB_DEMCR_VC_NOCPERR_Pos) /*!< DCB DEMCR: Vector Catch NOCP errors Mask */ + +#define DCB_DEMCR_VC_MMERR_Pos 4U /*!< DCB DEMCR: Vector Catch MemManage errors Position */ +#define DCB_DEMCR_VC_MMERR_Msk (0x1UL << DCB_DEMCR_VC_MMERR_Pos) /*!< DCB DEMCR: Vector Catch MemManage errors Mask */ + +#define DCB_DEMCR_VC_CORERESET_Pos 0U /*!< DCB DEMCR: Vector Catch Core reset Position */ +#define DCB_DEMCR_VC_CORERESET_Msk (0x1UL /*<< DCB_DEMCR_VC_CORERESET_Pos*/) /*!< DCB DEMCR: Vector Catch Core reset Mask */ + +/* DAUTHCTRL, Debug Authentication Control Register Definitions */ +#define DCB_DAUTHCTRL_INTSPNIDEN_Pos 3U /*!< DCB DAUTHCTRL: Internal Secure non-invasive debug enable Position */ +#define DCB_DAUTHCTRL_INTSPNIDEN_Msk (0x1UL << DCB_DAUTHCTRL_INTSPNIDEN_Pos) /*!< DCB DAUTHCTRL: Internal Secure non-invasive debug enable Mask */ + +#define DCB_DAUTHCTRL_SPNIDENSEL_Pos 2U /*!< DCB DAUTHCTRL: Secure non-invasive debug enable select Position */ +#define DCB_DAUTHCTRL_SPNIDENSEL_Msk (0x1UL << DCB_DAUTHCTRL_SPNIDENSEL_Pos) /*!< DCB DAUTHCTRL: Secure non-invasive debug enable select Mask */ + +#define DCB_DAUTHCTRL_INTSPIDEN_Pos 1U /*!< DCB DAUTHCTRL: Internal Secure invasive debug enable Position */ +#define DCB_DAUTHCTRL_INTSPIDEN_Msk (0x1UL << DCB_DAUTHCTRL_INTSPIDEN_Pos) /*!< DCB DAUTHCTRL: Internal Secure invasive debug enable Mask */ + +#define DCB_DAUTHCTRL_SPIDENSEL_Pos 0U /*!< DCB DAUTHCTRL: Secure invasive debug enable select Position */ +#define DCB_DAUTHCTRL_SPIDENSEL_Msk (0x1UL /*<< DCB_DAUTHCTRL_SPIDENSEL_Pos*/) /*!< DCB DAUTHCTRL: Secure invasive debug enable select Mask */ + +/* DSCSR, Debug Security Control and Status Register Definitions */ +#define DCB_DSCSR_CDSKEY_Pos 17U /*!< DCB DSCSR: CDS write-enable key Position */ +#define DCB_DSCSR_CDSKEY_Msk (0x1UL << DCB_DSCSR_CDSKEY_Pos) /*!< DCB DSCSR: CDS write-enable key Mask */ + +#define DCB_DSCSR_CDS_Pos 16U /*!< DCB DSCSR: Current domain Secure Position */ +#define DCB_DSCSR_CDS_Msk (0x1UL << DCB_DSCSR_CDS_Pos) /*!< DCB DSCSR: Current domain Secure Mask */ + +#define DCB_DSCSR_SBRSEL_Pos 1U /*!< DCB DSCSR: Secure banked register select Position */ +#define DCB_DSCSR_SBRSEL_Msk (0x1UL << DCB_DSCSR_SBRSEL_Pos) /*!< DCB DSCSR: Secure banked register select Mask */ + +#define DCB_DSCSR_SBRSELEN_Pos 0U /*!< DCB DSCSR: Secure banked register select enable Position */ +#define DCB_DSCSR_SBRSELEN_Msk (0x1UL /*<< DCB_DSCSR_SBRSELEN_Pos*/) /*!< DCB DSCSR: Secure banked register select enable Mask */ + +/*@} end of group CMSIS_DCB */ + + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_DIB Debug Identification Block + \brief Type definitions for the Debug Identification Block Registers + @{ + */ + +/** + \brief Structure type to access the Debug Identification Block Registers (DIB). + */ +typedef struct +{ + __OM uint32_t DLAR; /*!< Offset: 0x000 ( /W) SCS Software Lock Access Register */ + __IM uint32_t DLSR; /*!< Offset: 0x004 (R/ ) SCS Software Lock Status Register */ + __IM uint32_t DAUTHSTATUS; /*!< Offset: 0x008 (R/ ) Debug Authentication Status Register */ + __IM uint32_t DDEVARCH; /*!< Offset: 0x00C (R/ ) SCS Device Architecture Register */ + __IM uint32_t DDEVTYPE; /*!< Offset: 0x010 (R/ ) SCS Device Type Register */ +} DIB_Type; + +/* DLAR, SCS Software Lock Access Register Definitions */ +#define DIB_DLAR_KEY_Pos 0U /*!< DIB DLAR: KEY Position */ +#define DIB_DLAR_KEY_Msk (0xFFFFFFFFUL /*<< DIB_DLAR_KEY_Pos */) /*!< DIB DLAR: KEY Mask */ + +/* DLSR, SCS Software Lock Status Register Definitions */ +#define DIB_DLSR_nTT_Pos 2U /*!< DIB DLSR: Not thirty-two bit Position */ +#define DIB_DLSR_nTT_Msk (0x1UL << DIB_DLSR_nTT_Pos ) /*!< DIB DLSR: Not thirty-two bit Mask */ + +#define DIB_DLSR_SLK_Pos 1U /*!< DIB DLSR: Software Lock status Position */ +#define DIB_DLSR_SLK_Msk (0x1UL << DIB_DLSR_SLK_Pos ) /*!< DIB DLSR: Software Lock status Mask */ + +#define DIB_DLSR_SLI_Pos 0U /*!< DIB DLSR: Software Lock implemented Position */ +#define DIB_DLSR_SLI_Msk (0x1UL /*<< DIB_DLSR_SLI_Pos*/) /*!< DIB DLSR: Software Lock implemented Mask */ + +/* DAUTHSTATUS, Debug Authentication Status Register Definitions */ +#define DIB_DAUTHSTATUS_SNID_Pos 6U /*!< DIB DAUTHSTATUS: Secure Non-invasive Debug Position */ +#define DIB_DAUTHSTATUS_SNID_Msk (0x3UL << DIB_DAUTHSTATUS_SNID_Pos ) /*!< DIB DAUTHSTATUS: Secure Non-invasive Debug Mask */ + +#define DIB_DAUTHSTATUS_SID_Pos 4U /*!< DIB DAUTHSTATUS: Secure Invasive Debug Position */ +#define DIB_DAUTHSTATUS_SID_Msk (0x3UL << DIB_DAUTHSTATUS_SID_Pos ) /*!< DIB DAUTHSTATUS: Secure Invasive Debug Mask */ + +#define DIB_DAUTHSTATUS_NSNID_Pos 2U /*!< DIB DAUTHSTATUS: Non-secure Non-invasive Debug Position */ +#define DIB_DAUTHSTATUS_NSNID_Msk (0x3UL << DIB_DAUTHSTATUS_NSNID_Pos ) /*!< DIB DAUTHSTATUS: Non-secure Non-invasive Debug Mask */ + +#define DIB_DAUTHSTATUS_NSID_Pos 0U /*!< DIB DAUTHSTATUS: Non-secure Invasive Debug Position */ +#define DIB_DAUTHSTATUS_NSID_Msk (0x3UL /*<< DIB_DAUTHSTATUS_NSID_Pos*/) /*!< DIB DAUTHSTATUS: Non-secure Invasive Debug Mask */ + +/* DDEVARCH, SCS Device Architecture Register Definitions */ +#define DIB_DDEVARCH_ARCHITECT_Pos 21U /*!< DIB DDEVARCH: Architect Position */ +#define DIB_DDEVARCH_ARCHITECT_Msk (0x7FFUL << DIB_DDEVARCH_ARCHITECT_Pos ) /*!< DIB DDEVARCH: Architect Mask */ + +#define DIB_DDEVARCH_PRESENT_Pos 20U /*!< DIB DDEVARCH: DEVARCH Present Position */ +#define DIB_DDEVARCH_PRESENT_Msk (0x1FUL << DIB_DDEVARCH_PRESENT_Pos ) /*!< DIB DDEVARCH: DEVARCH Present Mask */ + +#define DIB_DDEVARCH_REVISION_Pos 16U /*!< DIB DDEVARCH: Revision Position */ +#define DIB_DDEVARCH_REVISION_Msk (0xFUL << DIB_DDEVARCH_REVISION_Pos ) /*!< DIB DDEVARCH: Revision Mask */ + +#define DIB_DDEVARCH_ARCHVER_Pos 12U /*!< DIB DDEVARCH: Architecture Version Position */ +#define DIB_DDEVARCH_ARCHVER_Msk (0xFUL << DIB_DDEVARCH_ARCHVER_Pos ) /*!< DIB DDEVARCH: Architecture Version Mask */ + +#define DIB_DDEVARCH_ARCHPART_Pos 0U /*!< DIB DDEVARCH: Architecture Part Position */ +#define DIB_DDEVARCH_ARCHPART_Msk (0xFFFUL /*<< DIB_DDEVARCH_ARCHPART_Pos*/) /*!< DIB DDEVARCH: Architecture Part Mask */ + +/* DDEVTYPE, SCS Device Type Register Definitions */ +#define DIB_DDEVTYPE_SUB_Pos 4U /*!< DIB DDEVTYPE: Sub-type Position */ +#define DIB_DDEVTYPE_SUB_Msk (0xFUL << DIB_DDEVTYPE_SUB_Pos ) /*!< DIB DDEVTYPE: Sub-type Mask */ + +#define DIB_DDEVTYPE_MAJOR_Pos 0U /*!< DIB DDEVTYPE: Major type Position */ +#define DIB_DDEVTYPE_MAJOR_Msk (0xFUL /*<< DIB_DDEVTYPE_MAJOR_Pos*/) /*!< DIB DDEVTYPE: Major type Mask */ + + +/*@} end of group CMSIS_DIB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_bitfield Core register bit field macros + \brief Macros for use with bit field definitions (xxx_Pos, xxx_Msk). + @{ + */ + +/** + \brief Mask and shift a bit field value for use in a register bit range. + \param[in] field Name of the register bit field. + \param[in] value Value of the bit field. This parameter is interpreted as an uint32_t type. + \return Masked and shifted value. +*/ +#define _VAL2FLD(field, value) (((uint32_t)(value) << field ## _Pos) & field ## _Msk) + +/** + \brief Mask and shift a register value to extract a bit filed value. + \param[in] field Name of the register bit field. + \param[in] value Value of register. This parameter is interpreted as an uint32_t type. + \return Masked and shifted bit field value. +*/ +#define _FLD2VAL(field, value) (((uint32_t)(value) & field ## _Msk) >> field ## _Pos) + +/*@} end of group CMSIS_core_bitfield */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_base Core Definitions + \brief Definitions for base addresses, unions, and structures. + @{ + */ + +/* Memory mapping of Core Hardware */ + #define SCS_BASE (0xE000E000UL) /*!< System Control Space Base Address */ + #define ITM_BASE (0xE0000000UL) /*!< ITM Base Address */ + #define DWT_BASE (0xE0001000UL) /*!< DWT Base Address */ + #define TPI_BASE (0xE0040000UL) /*!< TPI Base Address */ + #define DCB_BASE (0xE000EDF0UL) /*!< DCB Base Address */ + #define DIB_BASE (0xE000EFB0UL) /*!< DIB Base Address */ + #define EMSS_BASE (0xE001E000UL) /*!AIRCR [10:8] PRIGROUP field. + Only values from 0..7 are used. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Priority grouping field. + */ +__STATIC_INLINE void __NVIC_SetPriorityGrouping(uint32_t PriorityGroup) +{ + uint32_t reg_value; + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + + reg_value = SCB->AIRCR; /* read old register configuration */ + reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change */ + reg_value = (reg_value | + ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (PriorityGroupTmp << SCB_AIRCR_PRIGROUP_Pos) ); /* Insert write key and priority group */ + SCB->AIRCR = reg_value; +} + + +/** + \brief Get Priority Grouping + \details Reads the priority grouping field from the NVIC Interrupt Controller. + \return Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field). + */ +__STATIC_INLINE uint32_t __NVIC_GetPriorityGrouping(void) +{ + return ((uint32_t)((SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos)); +} + + +/** + \brief Enable Interrupt + \details Enables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + __COMPILER_BARRIER(); + NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __COMPILER_BARRIER(); + } +} + + +/** + \brief Get Interrupt Enable status + \details Returns a device specific interrupt enable status from the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt is not enabled. + \return 1 Interrupt is enabled. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Disable Interrupt + \details Disables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_DisableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __DSB(); + __ISB(); + } +} + + +/** + \brief Get Pending Interrupt + \details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not pending. + \return 1 Interrupt status is pending. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Pending Interrupt + \details Sets the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Clear Pending Interrupt + \details Clears the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Active Interrupt + \details Reads the active register in the NVIC and returns the active bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not active. + \return 1 Interrupt status is active. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetActive(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief Get Interrupt Target State + \details Reads the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 if interrupt is assigned to Secure + \return 1 if interrupt is assigned to Non Secure + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t NVIC_GetTargetState(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Interrupt Target State + \details Sets the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 if interrupt is assigned to Secure + 1 if interrupt is assigned to Non Secure + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t NVIC_SetTargetState(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] |= ((uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL))); + return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Clear Interrupt Target State + \details Clears the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 if interrupt is assigned to Secure + 1 if interrupt is assigned to Non Secure + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t NVIC_ClearTargetState(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] &= ~((uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL))); + return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + + +/** + \brief Set Interrupt Priority + \details Sets the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \param [in] priority Priority to set. + \note The priority cannot be set for every processor exception. + */ +__STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->IPR[((uint32_t)IRQn)] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } + else + { + SCB->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } +} + + +/** + \brief Get Interrupt Priority + \details Reads the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Interrupt Priority. + Value is aligned automatically to the implemented priority bits of the microcontroller. + */ +__STATIC_INLINE uint32_t __NVIC_GetPriority(IRQn_Type IRQn) +{ + + if ((int32_t)(IRQn) >= 0) + { + return(((uint32_t)NVIC->IPR[((uint32_t)IRQn)] >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return(((uint32_t)SCB->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] >> (8U - __NVIC_PRIO_BITS))); + } +} + + +/** + \brief Encode Priority + \details Encodes the priority for an interrupt with the given priority group, + preemptive priority value, and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Used priority group. + \param [in] PreemptPriority Preemptive priority value (starting from 0). + \param [in] SubPriority Subpriority value (starting from 0). + \return Encoded priority. Value can be used in the function \ref NVIC_SetPriority(). + */ +__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + return ( + ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) | + ((SubPriority & (uint32_t)((1UL << (SubPriorityBits )) - 1UL))) + ); +} + + +/** + \brief Decode Priority + \details Decodes an interrupt priority value with a given priority group to + preemptive priority value and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set. + \param [in] Priority Priority value, which can be retrieved with the function \ref NVIC_GetPriority(). + \param [in] PriorityGroup Used priority group. + \param [out] pPreemptPriority Preemptive priority value (starting from 0). + \param [out] pSubPriority Subpriority value (starting from 0). + */ +__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* const pPreemptPriority, uint32_t* const pSubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + *pPreemptPriority = (Priority >> SubPriorityBits) & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL); + *pSubPriority = (Priority ) & (uint32_t)((1UL << (SubPriorityBits )) - 1UL); +} + + +/** + \brief Set Interrupt Vector + \details Sets an interrupt vector in SRAM based interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + VTOR must been relocated to SRAM before. + \param [in] IRQn Interrupt number + \param [in] vector Address of interrupt handler function + */ +__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector) +{ + uint32_t *vectors = (uint32_t *)SCB->VTOR; + vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET] = vector; + __DSB(); +} + + +/** + \brief Get Interrupt Vector + \details Reads an interrupt vector from interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Address of interrupt handler function + */ +__STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn) +{ + uint32_t *vectors = (uint32_t *)SCB->VTOR; + return vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET]; +} + + +/** + \brief System Reset + \details Initiates a system reset request to reset the MCU. + */ +__NO_RETURN __STATIC_INLINE void __NVIC_SystemReset(void) +{ + __DSB(); /* Ensure all outstanding memory accesses including + buffered write are completed before reset */ + SCB->AIRCR = (uint32_t)((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) | + SCB_AIRCR_SYSRESETREQ_Msk ); /* Keep priority group unchanged */ + __DSB(); /* Ensure completion of memory access */ + + for(;;) /* wait until reset */ + { + __NOP(); + } +} + +/** + \brief Software Reset + \details Initiates a system reset request to reset the CPU. + */ +__NO_RETURN __STATIC_INLINE void __SW_SystemReset(void) +{ + __DSB(); /* Ensure all outstanding memory accesses including + buffered write are completed before reset */ + SCB->AIRCR = (uint32_t)((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (SCB->AIRCR & SCB_AIRCR_BFHFNMINS_Msk) | /* Keep BFHFNMINS unchanged. Use this Reset function in case your case need to keep it */ + (SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) | /* Keep priority group unchanged */ + SCB_AIRCR_SYSRESETREQ_Msk ); + __DSB(); /* Ensure completion of memory access */ + + for(;;) /* wait until reset */ + { + __NOP(); + } +} + + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief Set Priority Grouping (non-secure) + \details Sets the non-secure priority grouping field when in secure state using the required unlock sequence. + The parameter PriorityGroup is assigned to the field SCB->AIRCR [10:8] PRIGROUP field. + Only values from 0..7 are used. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Priority grouping field. + */ +__STATIC_INLINE void TZ_NVIC_SetPriorityGrouping_NS(uint32_t PriorityGroup) +{ + uint32_t reg_value; + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + + reg_value = SCB_NS->AIRCR; /* read old register configuration */ + reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change */ + reg_value = (reg_value | + ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (PriorityGroupTmp << SCB_AIRCR_PRIGROUP_Pos) ); /* Insert write key and priority group */ + SCB_NS->AIRCR = reg_value; +} + + +/** + \brief Get Priority Grouping (non-secure) + \details Reads the priority grouping field from the non-secure NVIC when in secure state. + \return Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field). + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetPriorityGrouping_NS(void) +{ + return ((uint32_t)((SCB_NS->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos)); +} + + +/** + \brief Enable Interrupt (non-secure) + \details Enables a device specific interrupt in the non-secure NVIC interrupt controller when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_EnableIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Interrupt Enable status (non-secure) + \details Returns a device specific interrupt enable status from the non-secure NVIC interrupt controller when in secure state. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt is not enabled. + \return 1 Interrupt is enabled. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetEnableIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Disable Interrupt (non-secure) + \details Disables a device specific interrupt in the non-secure NVIC interrupt controller when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_DisableIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Pending Interrupt (non-secure) + \details Reads the NVIC pending register in the non-secure NVIC when in secure state and returns the pending bit for the specified device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not pending. + \return 1 Interrupt status is pending. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetPendingIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Pending Interrupt (non-secure) + \details Sets the pending bit of a device specific interrupt in the non-secure NVIC pending register when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_SetPendingIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Clear Pending Interrupt (non-secure) + \details Clears the pending bit of a device specific interrupt in the non-secure NVIC pending register when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_ClearPendingIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Active Interrupt (non-secure) + \details Reads the active register in non-secure NVIC when in secure state and returns the active bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not active. + \return 1 Interrupt status is active. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetActive_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Interrupt Priority (non-secure) + \details Sets the priority of a non-secure device specific interrupt or a non-secure processor exception when in secure state. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \param [in] priority Priority to set. + \note The priority cannot be set for every non-secure processor exception. + */ +__STATIC_INLINE void TZ_NVIC_SetPriority_NS(IRQn_Type IRQn, uint32_t priority) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->IPR[((uint32_t)IRQn)] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } + else + { + SCB_NS->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } +} + + +/** + \brief Get Interrupt Priority (non-secure) + \details Reads the priority of a non-secure device specific interrupt or a non-secure processor exception when in secure state. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Interrupt Priority. Value is aligned automatically to the implemented priority bits of the microcontroller. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetPriority_NS(IRQn_Type IRQn) +{ + + if ((int32_t)(IRQn) >= 0) + { + return(((uint32_t)NVIC_NS->IPR[((uint32_t)IRQn)] >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return(((uint32_t)SCB_NS->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] >> (8U - __NVIC_PRIO_BITS))); + } +} +#endif /* defined (__ARM_FEATURE_CMSE) &&(__ARM_FEATURE_CMSE == 3U) */ + +/*@} end of CMSIS_Core_NVICFunctions */ + +/* ########################## MPU functions #################################### */ + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + +#include "mpu_armv8.h" + +#endif + +/* ########################## FPU functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_FpuFunctions FPU Functions + \brief Function that provides FPU type. + @{ + */ + +/** + \brief get FPU type + \details returns the FPU type + \returns + - \b 0: No FPU + - \b 1: Single precision FPU + - \b 2: Double + Single precision FPU + */ +__STATIC_INLINE uint32_t SCB_GetFPUType(void) +{ + uint32_t mvfr0; + + mvfr0 = FPU->MVFR0; + if ((mvfr0 & (FPU_MVFR0_Single_precision_Msk | FPU_MVFR0_Double_precision_Msk)) == 0x220U) + { + return 2U; /* Double + Single precision FPU */ + } + else if ((mvfr0 & (FPU_MVFR0_Single_precision_Msk | FPU_MVFR0_Double_precision_Msk)) == 0x020U) + { + return 1U; /* Single precision FPU */ + } + else + { + return 0U; /* No FPU */ + } +} + + +/*@} end of CMSIS_Core_FpuFunctions */ + + + +/* ########################## SAU functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SAUFunctions SAU Functions + \brief Functions that configure the SAU. + @{ + */ + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) + +/** + \brief Enable SAU + \details Enables the Security Attribution Unit (SAU). + */ +__STATIC_INLINE void TZ_SAU_Enable(void) +{ + SAU->CTRL |= (SAU_CTRL_ENABLE_Msk); +} + + + +/** + \brief Disable SAU + \details Disables the Security Attribution Unit (SAU). + */ +__STATIC_INLINE void TZ_SAU_Disable(void) +{ + SAU->CTRL &= ~(SAU_CTRL_ENABLE_Msk); +} + +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + +/*@} end of CMSIS_Core_SAUFunctions */ + + + +/* ################################## Debug Control function ############################################ */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_DCBFunctions Debug Control Functions + \brief Functions that access the Debug Control Block. + @{ + */ + + +/** + \brief Set Debug Authentication Control Register + \details writes to Debug Authentication Control register. + \param [in] value value to be writen. + */ +__STATIC_INLINE void DCB_SetAuthCtrl(uint32_t value) +{ + __DSB(); + __ISB(); + DCB->DAUTHCTRL = value; + __DSB(); + __ISB(); +} + + +/** + \brief Get Debug Authentication Control Register + \details Reads Debug Authentication Control register. + \return Debug Authentication Control Register. + */ +__STATIC_INLINE uint32_t DCB_GetAuthCtrl(void) +{ + return (DCB->DAUTHCTRL); +} + + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief Set Debug Authentication Control Register (non-secure) + \details writes to non-secure Debug Authentication Control register when in secure state. + \param [in] value value to be writen + */ +__STATIC_INLINE void TZ_DCB_SetAuthCtrl_NS(uint32_t value) +{ + __DSB(); + __ISB(); + DCB_NS->DAUTHCTRL = value; + __DSB(); + __ISB(); +} + + +/** + \brief Get Debug Authentication Control Register (non-secure) + \details Reads non-secure Debug Authentication Control register when in secure state. + \return Debug Authentication Control Register. + */ +__STATIC_INLINE uint32_t TZ_DCB_GetAuthCtrl_NS(void) +{ + return (DCB_NS->DAUTHCTRL); +} +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + +/*@} end of CMSIS_Core_DCBFunctions */ + + + + +/* ################################## Debug Identification function ############################################ */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_DIBFunctions Debug Identification Functions + \brief Functions that access the Debug Identification Block. + @{ + */ + + +/** + \brief Get Debug Authentication Status Register + \details Reads Debug Authentication Status register. + \return Debug Authentication Status Register. + */ +__STATIC_INLINE uint32_t DIB_GetAuthStatus(void) +{ + return (DIB->DAUTHSTATUS); +} + + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief Get Debug Authentication Status Register (non-secure) + \details Reads non-secure Debug Authentication Status register when in secure state. + \return Debug Authentication Status Register. + */ +__STATIC_INLINE uint32_t TZ_DIB_GetAuthStatus_NS(void) +{ + return (DIB_NS->DAUTHSTATUS); +} +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + +/*@} end of CMSIS_Core_DCBFunctions */ + + +#if ((defined (__ICACHE_PRESENT) && (__ICACHE_PRESENT == 1U)) || \ + (defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U))) + +/* ########################## Cache functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_CacheFunctions Cache Functions + \brief Functions that configure Instruction and Data cache. + @{ + */ + +/* Cache Size ID Register Macros */ +#define CCSIDR_WAYS(x) (((x) & SCB_CCSIDR_ASSOCIATIVITY_Msk) >> SCB_CCSIDR_ASSOCIATIVITY_Pos) +#define CCSIDR_SETS(x) (((x) & SCB_CCSIDR_NUMSETS_Msk ) >> SCB_CCSIDR_NUMSETS_Pos ) + +#define __SCB_DCACHE_LINE_SIZE 32U /*!< STAR-MC1 cache line size is fixed to 32 bytes (8 words). See also register SCB_CCSIDR */ +#define __SCB_ICACHE_LINE_SIZE 32U /*!< STAR-MC1 cache line size is fixed to 32 bytes (8 words). See also register SCB_CCSIDR */ + +/** + \brief Enable I-Cache + \details Turns on I-Cache + */ +__STATIC_FORCEINLINE void SCB_EnableICache (void) +{ + #if defined (__ICACHE_PRESENT) && (__ICACHE_PRESENT == 1U) + if (SCB->CCR & SCB_CCR_IC_Msk) return; /* return if ICache is already enabled */ + + __DSB(); + __ISB(); + SCB->ICIALLU = 0UL; /* invalidate I-Cache */ + __DSB(); + __ISB(); + SCB->CCR |= (uint32_t)SCB_CCR_IC_Msk; /* enable I-Cache */ + __DSB(); + __ISB(); + #endif +} + + +/** + \brief Disable I-Cache + \details Turns off I-Cache + */ +__STATIC_FORCEINLINE void SCB_DisableICache (void) +{ + #if defined (__ICACHE_PRESENT) && (__ICACHE_PRESENT == 1U) + __DSB(); + __ISB(); + SCB->CCR &= ~(uint32_t)SCB_CCR_IC_Msk; /* disable I-Cache */ + SCB->ICIALLU = 0UL; /* invalidate I-Cache */ + __DSB(); + __ISB(); + #endif +} + + +/** + \brief Invalidate I-Cache + \details Invalidates I-Cache + */ +__STATIC_FORCEINLINE void SCB_InvalidateICache (void) +{ + #if defined (__ICACHE_PRESENT) && (__ICACHE_PRESENT == 1U) + __DSB(); + __ISB(); + SCB->ICIALLU = 0UL; + __DSB(); + __ISB(); + #endif +} + + +/** + \brief I-Cache Invalidate by address + \details Invalidates I-Cache for the given address. + I-Cache is invalidated starting from a 32 byte aligned address in 32 byte granularity. + I-Cache memory blocks which are part of given address + given size are invalidated. + \param[in] addr address + \param[in] isize size of memory block (in number of bytes) +*/ +__STATIC_FORCEINLINE void SCB_InvalidateICache_by_Addr (void *addr, int32_t isize) +{ + #if defined (__ICACHE_PRESENT) && (__ICACHE_PRESENT == 1U) + if ( isize > 0 ) { + int32_t op_size = isize + (((uint32_t)addr) & (__SCB_ICACHE_LINE_SIZE - 1U)); + uint32_t op_addr = (uint32_t)addr /* & ~(__SCB_ICACHE_LINE_SIZE - 1U) */; + + __DSB(); + + do { + SCB->ICIMVAU = op_addr; /* register accepts only 32byte aligned values, only bits 31..5 are valid */ + op_addr += __SCB_ICACHE_LINE_SIZE; + op_size -= __SCB_ICACHE_LINE_SIZE; + } while ( op_size > 0 ); + + __DSB(); + __ISB(); + } + #endif +} + + +/** + \brief Enable D-Cache + \details Turns on D-Cache + */ +__STATIC_FORCEINLINE void SCB_EnableDCache (void) +{ + #if defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U) + uint32_t ccsidr; + uint32_t sets; + uint32_t ways; + + if (SCB->CCR & SCB_CCR_DC_Msk) return; /* return if DCache is already enabled */ + + SCB->CSSELR = 0U; /* select Level 1 data cache */ + __DSB(); + + ccsidr = SCB->CCSIDR; + + /* invalidate D-Cache */ + sets = (uint32_t)(CCSIDR_SETS(ccsidr)); + do { + ways = (uint32_t)(CCSIDR_WAYS(ccsidr)); + do { + SCB->DCISW = (((sets << SCB_DCISW_SET_Pos) & SCB_DCISW_SET_Msk) | + ((ways << SCB_DCISW_WAY_Pos) & SCB_DCISW_WAY_Msk) ); + #if defined ( __CC_ARM ) + __schedule_barrier(); + #endif + } while (ways-- != 0U); + } while(sets-- != 0U); + __DSB(); + + SCB->CCR |= (uint32_t)SCB_CCR_DC_Msk; /* enable D-Cache */ + + __DSB(); + __ISB(); + #endif +} + + +/** + \brief Disable D-Cache + \details Turns off D-Cache + */ +__STATIC_FORCEINLINE void SCB_DisableDCache (void) +{ + #if defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U) + uint32_t ccsidr; + uint32_t sets; + uint32_t ways; + + SCB->CSSELR = 0U; /* select Level 1 data cache */ + __DSB(); + + SCB->CCR &= ~(uint32_t)SCB_CCR_DC_Msk; /* disable D-Cache */ + __DSB(); + + ccsidr = SCB->CCSIDR; + + /* clean & invalidate D-Cache */ + sets = (uint32_t)(CCSIDR_SETS(ccsidr)); + do { + ways = (uint32_t)(CCSIDR_WAYS(ccsidr)); + do { + SCB->DCCISW = (((sets << SCB_DCCISW_SET_Pos) & SCB_DCCISW_SET_Msk) | + ((ways << SCB_DCCISW_WAY_Pos) & SCB_DCCISW_WAY_Msk) ); + #if defined ( __CC_ARM ) + __schedule_barrier(); + #endif + } while (ways-- != 0U); + } while(sets-- != 0U); + + __DSB(); + __ISB(); + #endif +} + + +/** + \brief Invalidate D-Cache + \details Invalidates D-Cache + */ +__STATIC_FORCEINLINE void SCB_InvalidateDCache (void) +{ + #if defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U) + uint32_t ccsidr; + uint32_t sets; + uint32_t ways; + + SCB->CSSELR = 0U; /* select Level 1 data cache */ + __DSB(); + + ccsidr = SCB->CCSIDR; + + /* invalidate D-Cache */ + sets = (uint32_t)(CCSIDR_SETS(ccsidr)); + do { + ways = (uint32_t)(CCSIDR_WAYS(ccsidr)); + do { + SCB->DCISW = (((sets << SCB_DCISW_SET_Pos) & SCB_DCISW_SET_Msk) | + ((ways << SCB_DCISW_WAY_Pos) & SCB_DCISW_WAY_Msk) ); + #if defined ( __CC_ARM ) + __schedule_barrier(); + #endif + } while (ways-- != 0U); + } while(sets-- != 0U); + + __DSB(); + __ISB(); + #endif +} + + +/** + \brief Clean D-Cache + \details Cleans D-Cache + */ +__STATIC_FORCEINLINE void SCB_CleanDCache (void) +{ + #if defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U) + uint32_t ccsidr; + uint32_t sets; + uint32_t ways; + + SCB->CSSELR = 0U; /* select Level 1 data cache */ + __DSB(); + + ccsidr = SCB->CCSIDR; + + /* clean D-Cache */ + sets = (uint32_t)(CCSIDR_SETS(ccsidr)); + do { + ways = (uint32_t)(CCSIDR_WAYS(ccsidr)); + do { + SCB->DCCSW = (((sets << SCB_DCCSW_SET_Pos) & SCB_DCCSW_SET_Msk) | + ((ways << SCB_DCCSW_WAY_Pos) & SCB_DCCSW_WAY_Msk) ); + #if defined ( __CC_ARM ) + __schedule_barrier(); + #endif + } while (ways-- != 0U); + } while(sets-- != 0U); + + __DSB(); + __ISB(); + #endif +} + + +/** + \brief Clean & Invalidate D-Cache + \details Cleans and Invalidates D-Cache + */ +__STATIC_FORCEINLINE void SCB_CleanInvalidateDCache (void) +{ + #if defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U) + uint32_t ccsidr; + uint32_t sets; + uint32_t ways; + + SCB->CSSELR = 0U; /* select Level 1 data cache */ + __DSB(); + + ccsidr = SCB->CCSIDR; + + /* clean & invalidate D-Cache */ + sets = (uint32_t)(CCSIDR_SETS(ccsidr)); + do { + ways = (uint32_t)(CCSIDR_WAYS(ccsidr)); + do { + SCB->DCCISW = (((sets << SCB_DCCISW_SET_Pos) & SCB_DCCISW_SET_Msk) | + ((ways << SCB_DCCISW_WAY_Pos) & SCB_DCCISW_WAY_Msk) ); + #if defined ( __CC_ARM ) + __schedule_barrier(); + #endif + } while (ways-- != 0U); + } while(sets-- != 0U); + + __DSB(); + __ISB(); + #endif +} + + +/** + \brief D-Cache Invalidate by address + \details Invalidates D-Cache for the given address. + D-Cache is invalidated starting from a 32 byte aligned address in 32 byte granularity. + D-Cache memory blocks which are part of given address + given size are invalidated. + \param[in] addr address + \param[in] dsize size of memory block (in number of bytes) +*/ +__STATIC_FORCEINLINE void SCB_InvalidateDCache_by_Addr (void *addr, int32_t dsize) +{ + #if defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U) + if ( dsize > 0 ) { + int32_t op_size = dsize + (((uint32_t)addr) & (__SCB_DCACHE_LINE_SIZE - 1U)); + uint32_t op_addr = (uint32_t)addr /* & ~(__SCB_DCACHE_LINE_SIZE - 1U) */; + + __DSB(); + + do { + SCB->DCIMVAC = op_addr; /* register accepts only 32byte aligned values, only bits 31..5 are valid */ + op_addr += __SCB_DCACHE_LINE_SIZE; + op_size -= __SCB_DCACHE_LINE_SIZE; + } while ( op_size > 0 ); + + __DSB(); + __ISB(); + } + #endif +} + + +/** + \brief D-Cache Clean by address + \details Cleans D-Cache for the given address + D-Cache is cleaned starting from a 32 byte aligned address in 32 byte granularity. + D-Cache memory blocks which are part of given address + given size are cleaned. + \param[in] addr address + \param[in] dsize size of memory block (in number of bytes) +*/ +__STATIC_FORCEINLINE void SCB_CleanDCache_by_Addr (uint32_t *addr, int32_t dsize) +{ + #if defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U) + if ( dsize > 0 ) { + int32_t op_size = dsize + (((uint32_t)addr) & (__SCB_DCACHE_LINE_SIZE - 1U)); + uint32_t op_addr = (uint32_t)addr /* & ~(__SCB_DCACHE_LINE_SIZE - 1U) */; + + __DSB(); + + do { + SCB->DCCMVAC = op_addr; /* register accepts only 32byte aligned values, only bits 31..5 are valid */ + op_addr += __SCB_DCACHE_LINE_SIZE; + op_size -= __SCB_DCACHE_LINE_SIZE; + } while ( op_size > 0 ); + + __DSB(); + __ISB(); + } + #endif +} + + +/** + \brief D-Cache Clean and Invalidate by address + \details Cleans and invalidates D_Cache for the given address + D-Cache is cleaned and invalidated starting from a 32 byte aligned address in 32 byte granularity. + D-Cache memory blocks which are part of given address + given size are cleaned and invalidated. + \param[in] addr address (aligned to 32-byte boundary) + \param[in] dsize size of memory block (in number of bytes) +*/ +__STATIC_FORCEINLINE void SCB_CleanInvalidateDCache_by_Addr (uint32_t *addr, int32_t dsize) +{ + #if defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U) + if ( dsize > 0 ) { + int32_t op_size = dsize + (((uint32_t)addr) & (__SCB_DCACHE_LINE_SIZE - 1U)); + uint32_t op_addr = (uint32_t)addr /* & ~(__SCB_DCACHE_LINE_SIZE - 1U) */; + + __DSB(); + + do { + SCB->DCCIMVAC = op_addr; /* register accepts only 32byte aligned values, only bits 31..5 are valid */ + op_addr += __SCB_DCACHE_LINE_SIZE; + op_size -= __SCB_DCACHE_LINE_SIZE; + } while ( op_size > 0 ); + + __DSB(); + __ISB(); + } + #endif +} + +/*@} end of CMSIS_Core_CacheFunctions */ +#endif + + +/* ################################## SysTick function ############################################ */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SysTickFunctions SysTick Functions + \brief Functions that configure the System. + @{ + */ + +#if defined (__Vendor_SysTickConfig) && (__Vendor_SysTickConfig == 0U) + +/** + \brief System Tick Configuration + \details Initializes the System Timer and its interrupt, and starts the System Tick Timer. + Counter is in free running mode to generate periodic interrupts. + \param [in] ticks Number of ticks between two interrupts. + \return 0 Function succeeded. + \return 1 Function failed. + \note When the variable __Vendor_SysTickConfig is set to 1, then the + function SysTick_Config is not included. In this case, the file device.h + must contain a vendor-specific implementation of this function. + */ +__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks) +{ + if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) + { + return (1UL); /* Reload value impossible */ + } + + SysTick->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ + NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ + SysTick->VAL = 0UL; /* Load the SysTick Counter Value */ + SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0UL); /* Function successful */ +} + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief System Tick Configuration (non-secure) + \details Initializes the non-secure System Timer and its interrupt when in secure state, and starts the System Tick Timer. + Counter is in free running mode to generate periodic interrupts. + \param [in] ticks Number of ticks between two interrupts. + \return 0 Function succeeded. + \return 1 Function failed. + \note When the variable __Vendor_SysTickConfig is set to 1, then the + function TZ_SysTick_Config_NS is not included. In this case, the file device.h + must contain a vendor-specific implementation of this function. + + */ +__STATIC_INLINE uint32_t TZ_SysTick_Config_NS(uint32_t ticks) +{ + if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) + { + return (1UL); /* Reload value impossible */ + } + + SysTick_NS->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ + TZ_NVIC_SetPriority_NS (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ + SysTick_NS->VAL = 0UL; /* Load the SysTick Counter Value */ + SysTick_NS->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0UL); /* Function successful */ +} +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + +#endif + +/*@} end of CMSIS_Core_SysTickFunctions */ + + + +/* ##################################### Debug In/Output function ########################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_core_DebugFunctions ITM Functions + \brief Functions that access the ITM debug interface. + @{ + */ + +extern volatile int32_t ITM_RxBuffer; /*!< External variable to receive characters. */ +#define ITM_RXBUFFER_EMPTY ((int32_t)0x5AA55AA5U) /*!< Value identifying \ref ITM_RxBuffer is ready for next character. */ + + +/** + \brief ITM Send Character + \details Transmits a character via the ITM channel 0, and + \li Just returns when no debugger is connected that has booked the output. + \li Is blocking when a debugger is connected, but the previous character sent has not been transmitted. + \param [in] ch Character to transmit. + \returns Character to transmit. + */ +__STATIC_INLINE uint32_t ITM_SendChar (uint32_t ch) +{ + if (((ITM->TCR & ITM_TCR_ITMENA_Msk) != 0UL) && /* ITM enabled */ + ((ITM->TER & 1UL ) != 0UL) ) /* ITM Port #0 enabled */ + { + while (ITM->PORT[0U].u32 == 0UL) + { + __NOP(); + } + ITM->PORT[0U].u8 = (uint8_t)ch; + } + return (ch); +} + + +/** + \brief ITM Receive Character + \details Inputs a character via the external variable \ref ITM_RxBuffer. + \return Received character. + \return -1 No character pending. + */ +__STATIC_INLINE int32_t ITM_ReceiveChar (void) +{ + int32_t ch = -1; /* no character available */ + + if (ITM_RxBuffer != ITM_RXBUFFER_EMPTY) + { + ch = ITM_RxBuffer; + ITM_RxBuffer = ITM_RXBUFFER_EMPTY; /* ready for next character */ + } + + return (ch); +} + + +/** + \brief ITM Check Character + \details Checks whether a character is pending for reading in the variable \ref ITM_RxBuffer. + \return 0 No character available. + \return 1 Character available. + */ +__STATIC_INLINE int32_t ITM_CheckChar (void) +{ + + if (ITM_RxBuffer == ITM_RXBUFFER_EMPTY) + { + return (0); /* no character available */ + } + else + { + return (1); /* character available */ + } +} + +/*@} end of CMSIS_core_DebugFunctions */ + + + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_STAR_H_DEPENDANT */ + +#endif /* __CMSIS_GENERIC */ diff --git a/bsp/renesas/ra8m1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/mpu_armv7.h b/bsp/renesas/ra8m1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/mpu_armv7.h new file mode 100644 index 000000000000..d9eedf81a64c --- /dev/null +++ b/bsp/renesas/ra8m1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/mpu_armv7.h @@ -0,0 +1,275 @@ +/****************************************************************************** + * @file mpu_armv7.h + * @brief CMSIS MPU API for Armv7-M MPU + * @version V5.1.2 + * @date 25. May 2020 + ******************************************************************************/ +/* + * Copyright (c) 2017-2020 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#elif defined (__clang__) + #pragma clang system_header /* treat file as system include file */ +#endif + +#ifndef ARM_MPU_ARMV7_H +#define ARM_MPU_ARMV7_H + +#define ARM_MPU_REGION_SIZE_32B ((uint8_t)0x04U) ///!< MPU Region Size 32 Bytes +#define ARM_MPU_REGION_SIZE_64B ((uint8_t)0x05U) ///!< MPU Region Size 64 Bytes +#define ARM_MPU_REGION_SIZE_128B ((uint8_t)0x06U) ///!< MPU Region Size 128 Bytes +#define ARM_MPU_REGION_SIZE_256B ((uint8_t)0x07U) ///!< MPU Region Size 256 Bytes +#define ARM_MPU_REGION_SIZE_512B ((uint8_t)0x08U) ///!< MPU Region Size 512 Bytes +#define ARM_MPU_REGION_SIZE_1KB ((uint8_t)0x09U) ///!< MPU Region Size 1 KByte +#define ARM_MPU_REGION_SIZE_2KB ((uint8_t)0x0AU) ///!< MPU Region Size 2 KBytes +#define ARM_MPU_REGION_SIZE_4KB ((uint8_t)0x0BU) ///!< MPU Region Size 4 KBytes +#define ARM_MPU_REGION_SIZE_8KB ((uint8_t)0x0CU) ///!< MPU Region Size 8 KBytes +#define ARM_MPU_REGION_SIZE_16KB ((uint8_t)0x0DU) ///!< MPU Region Size 16 KBytes +#define ARM_MPU_REGION_SIZE_32KB ((uint8_t)0x0EU) ///!< MPU Region Size 32 KBytes +#define ARM_MPU_REGION_SIZE_64KB ((uint8_t)0x0FU) ///!< MPU Region Size 64 KBytes +#define ARM_MPU_REGION_SIZE_128KB ((uint8_t)0x10U) ///!< MPU Region Size 128 KBytes +#define ARM_MPU_REGION_SIZE_256KB ((uint8_t)0x11U) ///!< MPU Region Size 256 KBytes +#define ARM_MPU_REGION_SIZE_512KB ((uint8_t)0x12U) ///!< MPU Region Size 512 KBytes +#define ARM_MPU_REGION_SIZE_1MB ((uint8_t)0x13U) ///!< MPU Region Size 1 MByte +#define ARM_MPU_REGION_SIZE_2MB ((uint8_t)0x14U) ///!< MPU Region Size 2 MBytes +#define ARM_MPU_REGION_SIZE_4MB ((uint8_t)0x15U) ///!< MPU Region Size 4 MBytes +#define ARM_MPU_REGION_SIZE_8MB ((uint8_t)0x16U) ///!< MPU Region Size 8 MBytes +#define ARM_MPU_REGION_SIZE_16MB ((uint8_t)0x17U) ///!< MPU Region Size 16 MBytes +#define ARM_MPU_REGION_SIZE_32MB ((uint8_t)0x18U) ///!< MPU Region Size 32 MBytes +#define ARM_MPU_REGION_SIZE_64MB ((uint8_t)0x19U) ///!< MPU Region Size 64 MBytes +#define ARM_MPU_REGION_SIZE_128MB ((uint8_t)0x1AU) ///!< MPU Region Size 128 MBytes +#define ARM_MPU_REGION_SIZE_256MB ((uint8_t)0x1BU) ///!< MPU Region Size 256 MBytes +#define ARM_MPU_REGION_SIZE_512MB ((uint8_t)0x1CU) ///!< MPU Region Size 512 MBytes +#define ARM_MPU_REGION_SIZE_1GB ((uint8_t)0x1DU) ///!< MPU Region Size 1 GByte +#define ARM_MPU_REGION_SIZE_2GB ((uint8_t)0x1EU) ///!< MPU Region Size 2 GBytes +#define ARM_MPU_REGION_SIZE_4GB ((uint8_t)0x1FU) ///!< MPU Region Size 4 GBytes + +#define ARM_MPU_AP_NONE 0U ///!< MPU Access Permission no access +#define ARM_MPU_AP_PRIV 1U ///!< MPU Access Permission privileged access only +#define ARM_MPU_AP_URO 2U ///!< MPU Access Permission unprivileged access read-only +#define ARM_MPU_AP_FULL 3U ///!< MPU Access Permission full access +#define ARM_MPU_AP_PRO 5U ///!< MPU Access Permission privileged access read-only +#define ARM_MPU_AP_RO 6U ///!< MPU Access Permission read-only access + +/** MPU Region Base Address Register Value +* +* \param Region The region to be configured, number 0 to 15. +* \param BaseAddress The base address for the region. +*/ +#define ARM_MPU_RBAR(Region, BaseAddress) \ + (((BaseAddress) & MPU_RBAR_ADDR_Msk) | \ + ((Region) & MPU_RBAR_REGION_Msk) | \ + (MPU_RBAR_VALID_Msk)) + +/** +* MPU Memory Access Attributes +* +* \param TypeExtField Type extension field, allows you to configure memory access type, for example strongly ordered, peripheral. +* \param IsShareable Region is shareable between multiple bus masters. +* \param IsCacheable Region is cacheable, i.e. its value may be kept in cache. +* \param IsBufferable Region is bufferable, i.e. using write-back caching. Cacheable but non-bufferable regions use write-through policy. +*/ +#define ARM_MPU_ACCESS_(TypeExtField, IsShareable, IsCacheable, IsBufferable) \ + ((((TypeExtField) << MPU_RASR_TEX_Pos) & MPU_RASR_TEX_Msk) | \ + (((IsShareable) << MPU_RASR_S_Pos) & MPU_RASR_S_Msk) | \ + (((IsCacheable) << MPU_RASR_C_Pos) & MPU_RASR_C_Msk) | \ + (((IsBufferable) << MPU_RASR_B_Pos) & MPU_RASR_B_Msk)) + +/** +* MPU Region Attribute and Size Register Value +* +* \param DisableExec Instruction access disable bit, 1= disable instruction fetches. +* \param AccessPermission Data access permissions, allows you to configure read/write access for User and Privileged mode. +* \param AccessAttributes Memory access attribution, see \ref ARM_MPU_ACCESS_. +* \param SubRegionDisable Sub-region disable field. +* \param Size Region size of the region to be configured, for example 4K, 8K. +*/ +#define ARM_MPU_RASR_EX(DisableExec, AccessPermission, AccessAttributes, SubRegionDisable, Size) \ + ((((DisableExec) << MPU_RASR_XN_Pos) & MPU_RASR_XN_Msk) | \ + (((AccessPermission) << MPU_RASR_AP_Pos) & MPU_RASR_AP_Msk) | \ + (((AccessAttributes) & (MPU_RASR_TEX_Msk | MPU_RASR_S_Msk | MPU_RASR_C_Msk | MPU_RASR_B_Msk))) | \ + (((SubRegionDisable) << MPU_RASR_SRD_Pos) & MPU_RASR_SRD_Msk) | \ + (((Size) << MPU_RASR_SIZE_Pos) & MPU_RASR_SIZE_Msk) | \ + (((MPU_RASR_ENABLE_Msk)))) + +/** +* MPU Region Attribute and Size Register Value +* +* \param DisableExec Instruction access disable bit, 1= disable instruction fetches. +* \param AccessPermission Data access permissions, allows you to configure read/write access for User and Privileged mode. +* \param TypeExtField Type extension field, allows you to configure memory access type, for example strongly ordered, peripheral. +* \param IsShareable Region is shareable between multiple bus masters. +* \param IsCacheable Region is cacheable, i.e. its value may be kept in cache. +* \param IsBufferable Region is bufferable, i.e. using write-back caching. Cacheable but non-bufferable regions use write-through policy. +* \param SubRegionDisable Sub-region disable field. +* \param Size Region size of the region to be configured, for example 4K, 8K. +*/ +#define ARM_MPU_RASR(DisableExec, AccessPermission, TypeExtField, IsShareable, IsCacheable, IsBufferable, SubRegionDisable, Size) \ + ARM_MPU_RASR_EX(DisableExec, AccessPermission, ARM_MPU_ACCESS_(TypeExtField, IsShareable, IsCacheable, IsBufferable), SubRegionDisable, Size) + +/** +* MPU Memory Access Attribute for strongly ordered memory. +* - TEX: 000b +* - Shareable +* - Non-cacheable +* - Non-bufferable +*/ +#define ARM_MPU_ACCESS_ORDERED ARM_MPU_ACCESS_(0U, 1U, 0U, 0U) + +/** +* MPU Memory Access Attribute for device memory. +* - TEX: 000b (if shareable) or 010b (if non-shareable) +* - Shareable or non-shareable +* - Non-cacheable +* - Bufferable (if shareable) or non-bufferable (if non-shareable) +* +* \param IsShareable Configures the device memory as shareable or non-shareable. +*/ +#define ARM_MPU_ACCESS_DEVICE(IsShareable) ((IsShareable) ? ARM_MPU_ACCESS_(0U, 1U, 0U, 1U) : ARM_MPU_ACCESS_(2U, 0U, 0U, 0U)) + +/** +* MPU Memory Access Attribute for normal memory. +* - TEX: 1BBb (reflecting outer cacheability rules) +* - Shareable or non-shareable +* - Cacheable or non-cacheable (reflecting inner cacheability rules) +* - Bufferable or non-bufferable (reflecting inner cacheability rules) +* +* \param OuterCp Configures the outer cache policy. +* \param InnerCp Configures the inner cache policy. +* \param IsShareable Configures the memory as shareable or non-shareable. +*/ +#define ARM_MPU_ACCESS_NORMAL(OuterCp, InnerCp, IsShareable) ARM_MPU_ACCESS_((4U | (OuterCp)), IsShareable, ((InnerCp) >> 1U), ((InnerCp) & 1U)) + +/** +* MPU Memory Access Attribute non-cacheable policy. +*/ +#define ARM_MPU_CACHEP_NOCACHE 0U + +/** +* MPU Memory Access Attribute write-back, write and read allocate policy. +*/ +#define ARM_MPU_CACHEP_WB_WRA 1U + +/** +* MPU Memory Access Attribute write-through, no write allocate policy. +*/ +#define ARM_MPU_CACHEP_WT_NWA 2U + +/** +* MPU Memory Access Attribute write-back, no write allocate policy. +*/ +#define ARM_MPU_CACHEP_WB_NWA 3U + + +/** +* Struct for a single MPU Region +*/ +typedef struct { + uint32_t RBAR; //!< The region base address register value (RBAR) + uint32_t RASR; //!< The region attribute and size register value (RASR) \ref MPU_RASR +} ARM_MPU_Region_t; + +/** Enable the MPU. +* \param MPU_Control Default access permissions for unconfigured regions. +*/ +__STATIC_INLINE void ARM_MPU_Enable(uint32_t MPU_Control) +{ + __DMB(); + MPU->CTRL = MPU_Control | MPU_CTRL_ENABLE_Msk; +#ifdef SCB_SHCSR_MEMFAULTENA_Msk + SCB->SHCSR |= SCB_SHCSR_MEMFAULTENA_Msk; +#endif + __DSB(); + __ISB(); +} + +/** Disable the MPU. +*/ +__STATIC_INLINE void ARM_MPU_Disable(void) +{ + __DMB(); +#ifdef SCB_SHCSR_MEMFAULTENA_Msk + SCB->SHCSR &= ~SCB_SHCSR_MEMFAULTENA_Msk; +#endif + MPU->CTRL &= ~MPU_CTRL_ENABLE_Msk; + __DSB(); + __ISB(); +} + +/** Clear and disable the given MPU region. +* \param rnr Region number to be cleared. +*/ +__STATIC_INLINE void ARM_MPU_ClrRegion(uint32_t rnr) +{ + MPU->RNR = rnr; + MPU->RASR = 0U; +} + +/** Configure an MPU region. +* \param rbar Value for RBAR register. +* \param rasr Value for RASR register. +*/ +__STATIC_INLINE void ARM_MPU_SetRegion(uint32_t rbar, uint32_t rasr) +{ + MPU->RBAR = rbar; + MPU->RASR = rasr; +} + +/** Configure the given MPU region. +* \param rnr Region number to be configured. +* \param rbar Value for RBAR register. +* \param rasr Value for RASR register. +*/ +__STATIC_INLINE void ARM_MPU_SetRegionEx(uint32_t rnr, uint32_t rbar, uint32_t rasr) +{ + MPU->RNR = rnr; + MPU->RBAR = rbar; + MPU->RASR = rasr; +} + +/** Memcpy with strictly ordered memory access, e.g. used by code in ARM_MPU_Load(). +* \param dst Destination data is copied to. +* \param src Source data is copied from. +* \param len Amount of data words to be copied. +*/ +__STATIC_INLINE void ARM_MPU_OrderedMemcpy(volatile uint32_t* dst, const uint32_t* __RESTRICT src, uint32_t len) +{ + uint32_t i; + for (i = 0U; i < len; ++i) + { + dst[i] = src[i]; + } +} + +/** Load the given number of MPU regions from a table. +* \param table Pointer to the MPU configuration table. +* \param cnt Amount of regions to be configured. +*/ +__STATIC_INLINE void ARM_MPU_Load(ARM_MPU_Region_t const* table, uint32_t cnt) +{ + const uint32_t rowWordSize = sizeof(ARM_MPU_Region_t)/4U; + while (cnt > MPU_TYPE_RALIASES) { + ARM_MPU_OrderedMemcpy(&(MPU->RBAR), &(table->RBAR), MPU_TYPE_RALIASES*rowWordSize); + table += MPU_TYPE_RALIASES; + cnt -= MPU_TYPE_RALIASES; + } + ARM_MPU_OrderedMemcpy(&(MPU->RBAR), &(table->RBAR), cnt*rowWordSize); +} + +#endif diff --git a/bsp/renesas/ra8m1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/mpu_armv8.h b/bsp/renesas/ra8m1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/mpu_armv8.h new file mode 100644 index 000000000000..3de16efc86a6 --- /dev/null +++ b/bsp/renesas/ra8m1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/mpu_armv8.h @@ -0,0 +1,352 @@ +/****************************************************************************** + * @file mpu_armv8.h + * @brief CMSIS MPU API for Armv8-M and Armv8.1-M MPU + * @version V5.1.3 + * @date 03. February 2021 + ******************************************************************************/ +/* + * Copyright (c) 2017-2021 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#elif defined (__clang__) + #pragma clang system_header /* treat file as system include file */ +#endif + +#ifndef ARM_MPU_ARMV8_H +#define ARM_MPU_ARMV8_H + +/** \brief Attribute for device memory (outer only) */ +#define ARM_MPU_ATTR_DEVICE ( 0U ) + +/** \brief Attribute for non-cacheable, normal memory */ +#define ARM_MPU_ATTR_NON_CACHEABLE ( 4U ) + +/** \brief Attribute for normal memory (outer and inner) +* \param NT Non-Transient: Set to 1 for non-transient data. +* \param WB Write-Back: Set to 1 to use write-back update policy. +* \param RA Read Allocation: Set to 1 to use cache allocation on read miss. +* \param WA Write Allocation: Set to 1 to use cache allocation on write miss. +*/ +#define ARM_MPU_ATTR_MEMORY_(NT, WB, RA, WA) \ + ((((NT) & 1U) << 3U) | (((WB) & 1U) << 2U) | (((RA) & 1U) << 1U) | ((WA) & 1U)) + +/** \brief Device memory type non Gathering, non Re-ordering, non Early Write Acknowledgement */ +#define ARM_MPU_ATTR_DEVICE_nGnRnE (0U) + +/** \brief Device memory type non Gathering, non Re-ordering, Early Write Acknowledgement */ +#define ARM_MPU_ATTR_DEVICE_nGnRE (1U) + +/** \brief Device memory type non Gathering, Re-ordering, Early Write Acknowledgement */ +#define ARM_MPU_ATTR_DEVICE_nGRE (2U) + +/** \brief Device memory type Gathering, Re-ordering, Early Write Acknowledgement */ +#define ARM_MPU_ATTR_DEVICE_GRE (3U) + +/** \brief Memory Attribute +* \param O Outer memory attributes +* \param I O == ARM_MPU_ATTR_DEVICE: Device memory attributes, else: Inner memory attributes +*/ +#define ARM_MPU_ATTR(O, I) ((((O) & 0xFU) << 4U) | ((((O) & 0xFU) != 0U) ? ((I) & 0xFU) : (((I) & 0x3U) << 2U))) + +/** \brief Normal memory non-shareable */ +#define ARM_MPU_SH_NON (0U) + +/** \brief Normal memory outer shareable */ +#define ARM_MPU_SH_OUTER (2U) + +/** \brief Normal memory inner shareable */ +#define ARM_MPU_SH_INNER (3U) + +/** \brief Memory access permissions +* \param RO Read-Only: Set to 1 for read-only memory. +* \param NP Non-Privileged: Set to 1 for non-privileged memory. +*/ +#define ARM_MPU_AP_(RO, NP) ((((RO) & 1U) << 1U) | ((NP) & 1U)) + +/** \brief Region Base Address Register value +* \param BASE The base address bits [31:5] of a memory region. The value is zero extended. Effective address gets 32 byte aligned. +* \param SH Defines the Shareability domain for this memory region. +* \param RO Read-Only: Set to 1 for a read-only memory region. +* \param NP Non-Privileged: Set to 1 for a non-privileged memory region. +* \oaram XN eXecute Never: Set to 1 for a non-executable memory region. +*/ +#define ARM_MPU_RBAR(BASE, SH, RO, NP, XN) \ + (((BASE) & MPU_RBAR_BASE_Msk) | \ + (((SH) << MPU_RBAR_SH_Pos) & MPU_RBAR_SH_Msk) | \ + ((ARM_MPU_AP_(RO, NP) << MPU_RBAR_AP_Pos) & MPU_RBAR_AP_Msk) | \ + (((XN) << MPU_RBAR_XN_Pos) & MPU_RBAR_XN_Msk)) + +/** \brief Region Limit Address Register value +* \param LIMIT The limit address bits [31:5] for this memory region. The value is one extended. +* \param IDX The attribute index to be associated with this memory region. +*/ +#define ARM_MPU_RLAR(LIMIT, IDX) \ + (((LIMIT) & MPU_RLAR_LIMIT_Msk) | \ + (((IDX) << MPU_RLAR_AttrIndx_Pos) & MPU_RLAR_AttrIndx_Msk) | \ + (MPU_RLAR_EN_Msk)) + +#if defined(MPU_RLAR_PXN_Pos) + +/** \brief Region Limit Address Register with PXN value +* \param LIMIT The limit address bits [31:5] for this memory region. The value is one extended. +* \param PXN Privileged execute never. Defines whether code can be executed from this privileged region. +* \param IDX The attribute index to be associated with this memory region. +*/ +#define ARM_MPU_RLAR_PXN(LIMIT, PXN, IDX) \ + (((LIMIT) & MPU_RLAR_LIMIT_Msk) | \ + (((PXN) << MPU_RLAR_PXN_Pos) & MPU_RLAR_PXN_Msk) | \ + (((IDX) << MPU_RLAR_AttrIndx_Pos) & MPU_RLAR_AttrIndx_Msk) | \ + (MPU_RLAR_EN_Msk)) + +#endif + +/** +* Struct for a single MPU Region +*/ +typedef struct { + uint32_t RBAR; /*!< Region Base Address Register value */ + uint32_t RLAR; /*!< Region Limit Address Register value */ +} ARM_MPU_Region_t; + +/** Enable the MPU. +* \param MPU_Control Default access permissions for unconfigured regions. +*/ +__STATIC_INLINE void ARM_MPU_Enable(uint32_t MPU_Control) +{ + __DMB(); + MPU->CTRL = MPU_Control | MPU_CTRL_ENABLE_Msk; +#ifdef SCB_SHCSR_MEMFAULTENA_Msk + SCB->SHCSR |= SCB_SHCSR_MEMFAULTENA_Msk; +#endif + __DSB(); + __ISB(); +} + +/** Disable the MPU. +*/ +__STATIC_INLINE void ARM_MPU_Disable(void) +{ + __DMB(); +#ifdef SCB_SHCSR_MEMFAULTENA_Msk + SCB->SHCSR &= ~SCB_SHCSR_MEMFAULTENA_Msk; +#endif + MPU->CTRL &= ~MPU_CTRL_ENABLE_Msk; + __DSB(); + __ISB(); +} + +#ifdef MPU_NS +/** Enable the Non-secure MPU. +* \param MPU_Control Default access permissions for unconfigured regions. +*/ +__STATIC_INLINE void ARM_MPU_Enable_NS(uint32_t MPU_Control) +{ + __DMB(); + MPU_NS->CTRL = MPU_Control | MPU_CTRL_ENABLE_Msk; +#ifdef SCB_SHCSR_MEMFAULTENA_Msk + SCB_NS->SHCSR |= SCB_SHCSR_MEMFAULTENA_Msk; +#endif + __DSB(); + __ISB(); +} + +/** Disable the Non-secure MPU. +*/ +__STATIC_INLINE void ARM_MPU_Disable_NS(void) +{ + __DMB(); +#ifdef SCB_SHCSR_MEMFAULTENA_Msk + SCB_NS->SHCSR &= ~SCB_SHCSR_MEMFAULTENA_Msk; +#endif + MPU_NS->CTRL &= ~MPU_CTRL_ENABLE_Msk; + __DSB(); + __ISB(); +} +#endif + +/** Set the memory attribute encoding to the given MPU. +* \param mpu Pointer to the MPU to be configured. +* \param idx The attribute index to be set [0-7] +* \param attr The attribute value to be set. +*/ +__STATIC_INLINE void ARM_MPU_SetMemAttrEx(MPU_Type* mpu, uint8_t idx, uint8_t attr) +{ + const uint8_t reg = idx / 4U; + const uint32_t pos = ((idx % 4U) * 8U); + const uint32_t mask = 0xFFU << pos; + + if (reg >= (sizeof(mpu->MAIR) / sizeof(mpu->MAIR[0]))) { + return; // invalid index + } + + mpu->MAIR[reg] = ((mpu->MAIR[reg] & ~mask) | ((attr << pos) & mask)); +} + +/** Set the memory attribute encoding. +* \param idx The attribute index to be set [0-7] +* \param attr The attribute value to be set. +*/ +__STATIC_INLINE void ARM_MPU_SetMemAttr(uint8_t idx, uint8_t attr) +{ + ARM_MPU_SetMemAttrEx(MPU, idx, attr); +} + +#ifdef MPU_NS +/** Set the memory attribute encoding to the Non-secure MPU. +* \param idx The attribute index to be set [0-7] +* \param attr The attribute value to be set. +*/ +__STATIC_INLINE void ARM_MPU_SetMemAttr_NS(uint8_t idx, uint8_t attr) +{ + ARM_MPU_SetMemAttrEx(MPU_NS, idx, attr); +} +#endif + +/** Clear and disable the given MPU region of the given MPU. +* \param mpu Pointer to MPU to be used. +* \param rnr Region number to be cleared. +*/ +__STATIC_INLINE void ARM_MPU_ClrRegionEx(MPU_Type* mpu, uint32_t rnr) +{ + mpu->RNR = rnr; + mpu->RLAR = 0U; +} + +/** Clear and disable the given MPU region. +* \param rnr Region number to be cleared. +*/ +__STATIC_INLINE void ARM_MPU_ClrRegion(uint32_t rnr) +{ + ARM_MPU_ClrRegionEx(MPU, rnr); +} + +#ifdef MPU_NS +/** Clear and disable the given Non-secure MPU region. +* \param rnr Region number to be cleared. +*/ +__STATIC_INLINE void ARM_MPU_ClrRegion_NS(uint32_t rnr) +{ + ARM_MPU_ClrRegionEx(MPU_NS, rnr); +} +#endif + +/** Configure the given MPU region of the given MPU. +* \param mpu Pointer to MPU to be used. +* \param rnr Region number to be configured. +* \param rbar Value for RBAR register. +* \param rlar Value for RLAR register. +*/ +__STATIC_INLINE void ARM_MPU_SetRegionEx(MPU_Type* mpu, uint32_t rnr, uint32_t rbar, uint32_t rlar) +{ + mpu->RNR = rnr; + mpu->RBAR = rbar; + mpu->RLAR = rlar; +} + +/** Configure the given MPU region. +* \param rnr Region number to be configured. +* \param rbar Value for RBAR register. +* \param rlar Value for RLAR register. +*/ +__STATIC_INLINE void ARM_MPU_SetRegion(uint32_t rnr, uint32_t rbar, uint32_t rlar) +{ + ARM_MPU_SetRegionEx(MPU, rnr, rbar, rlar); +} + +#ifdef MPU_NS +/** Configure the given Non-secure MPU region. +* \param rnr Region number to be configured. +* \param rbar Value for RBAR register. +* \param rlar Value for RLAR register. +*/ +__STATIC_INLINE void ARM_MPU_SetRegion_NS(uint32_t rnr, uint32_t rbar, uint32_t rlar) +{ + ARM_MPU_SetRegionEx(MPU_NS, rnr, rbar, rlar); +} +#endif + +/** Memcpy with strictly ordered memory access, e.g. used by code in ARM_MPU_LoadEx() +* \param dst Destination data is copied to. +* \param src Source data is copied from. +* \param len Amount of data words to be copied. +*/ +__STATIC_INLINE void ARM_MPU_OrderedMemcpy(volatile uint32_t* dst, const uint32_t* __RESTRICT src, uint32_t len) +{ + uint32_t i; + for (i = 0U; i < len; ++i) + { + dst[i] = src[i]; + } +} + +/** Load the given number of MPU regions from a table to the given MPU. +* \param mpu Pointer to the MPU registers to be used. +* \param rnr First region number to be configured. +* \param table Pointer to the MPU configuration table. +* \param cnt Amount of regions to be configured. +*/ +__STATIC_INLINE void ARM_MPU_LoadEx(MPU_Type* mpu, uint32_t rnr, ARM_MPU_Region_t const* table, uint32_t cnt) +{ + const uint32_t rowWordSize = sizeof(ARM_MPU_Region_t)/4U; + if (cnt == 1U) { + mpu->RNR = rnr; + ARM_MPU_OrderedMemcpy(&(mpu->RBAR), &(table->RBAR), rowWordSize); + } else { + uint32_t rnrBase = rnr & ~(MPU_TYPE_RALIASES-1U); + uint32_t rnrOffset = rnr % MPU_TYPE_RALIASES; + + mpu->RNR = rnrBase; + while ((rnrOffset + cnt) > MPU_TYPE_RALIASES) { + uint32_t c = MPU_TYPE_RALIASES - rnrOffset; + ARM_MPU_OrderedMemcpy(&(mpu->RBAR)+(rnrOffset*2U), &(table->RBAR), c*rowWordSize); + table += c; + cnt -= c; + rnrOffset = 0U; + rnrBase += MPU_TYPE_RALIASES; + mpu->RNR = rnrBase; + } + + ARM_MPU_OrderedMemcpy(&(mpu->RBAR)+(rnrOffset*2U), &(table->RBAR), cnt*rowWordSize); + } +} + +/** Load the given number of MPU regions from a table. +* \param rnr First region number to be configured. +* \param table Pointer to the MPU configuration table. +* \param cnt Amount of regions to be configured. +*/ +__STATIC_INLINE void ARM_MPU_Load(uint32_t rnr, ARM_MPU_Region_t const* table, uint32_t cnt) +{ + ARM_MPU_LoadEx(MPU, rnr, table, cnt); +} + +#ifdef MPU_NS +/** Load the given number of MPU regions from a table to the Non-secure MPU. +* \param rnr First region number to be configured. +* \param table Pointer to the MPU configuration table. +* \param cnt Amount of regions to be configured. +*/ +__STATIC_INLINE void ARM_MPU_Load_NS(uint32_t rnr, ARM_MPU_Region_t const* table, uint32_t cnt) +{ + ARM_MPU_LoadEx(MPU_NS, rnr, table, cnt); +} +#endif + +#endif + diff --git a/bsp/renesas/ra8m1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/pac_armv81.h b/bsp/renesas/ra8m1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/pac_armv81.h new file mode 100644 index 000000000000..854b60a204cc --- /dev/null +++ b/bsp/renesas/ra8m1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/pac_armv81.h @@ -0,0 +1,206 @@ +/****************************************************************************** + * @file pac_armv81.h + * @brief CMSIS PAC key functions for Armv8.1-M PAC extension + * @version V1.0.0 + * @date 23. March 2022 + ******************************************************************************/ +/* + * Copyright (c) 2022 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#elif defined (__clang__) + #pragma clang system_header /* treat file as system include file */ +#endif + +#ifndef PAC_ARMV81_H +#define PAC_ARMV81_H + + +/* ################### PAC Key functions ########################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_PacKeyFunctions PAC Key functions + \brief Functions that access the PAC keys. + @{ + */ + +#if (defined (__ARM_FEATURE_PAUTH) && (__ARM_FEATURE_PAUTH == 1)) + +/** + \brief read the PAC key used for privileged mode + \details Reads the PAC key stored in the PAC_KEY_P registers. + \param [out] pPacKey 128bit PAC key + */ +__STATIC_FORCEINLINE void __get_PAC_KEY_P (uint32_t* pPacKey) { + __ASM volatile ( + "mrs r1, pac_key_p_0\n" + "str r1,[%0,#0]\n" + "mrs r1, pac_key_p_1\n" + "str r1,[%0,#4]\n" + "mrs r1, pac_key_p_2\n" + "str r1,[%0,#8]\n" + "mrs r1, pac_key_p_3\n" + "str r1,[%0,#12]\n" + : : "r" (pPacKey) : "memory", "r1" + ); +} + +/** + \brief write the PAC key used for privileged mode + \details writes the given PAC key to the PAC_KEY_P registers. + \param [in] pPacKey 128bit PAC key + */ +__STATIC_FORCEINLINE void __set_PAC_KEY_P (uint32_t* pPacKey) { + __ASM volatile ( + "ldr r1,[%0,#0]\n" + "msr pac_key_p_0, r1\n" + "ldr r1,[%0,#4]\n" + "msr pac_key_p_1, r1\n" + "ldr r1,[%0,#8]\n" + "msr pac_key_p_2, r1\n" + "ldr r1,[%0,#12]\n" + "msr pac_key_p_3, r1\n" + : : "r" (pPacKey) : "memory", "r1" + ); +} + +/** + \brief read the PAC key used for unprivileged mode + \details Reads the PAC key stored in the PAC_KEY_U registers. + \param [out] pPacKey 128bit PAC key + */ +__STATIC_FORCEINLINE void __get_PAC_KEY_U (uint32_t* pPacKey) { + __ASM volatile ( + "mrs r1, pac_key_u_0\n" + "str r1,[%0,#0]\n" + "mrs r1, pac_key_u_1\n" + "str r1,[%0,#4]\n" + "mrs r1, pac_key_u_2\n" + "str r1,[%0,#8]\n" + "mrs r1, pac_key_u_3\n" + "str r1,[%0,#12]\n" + : : "r" (pPacKey) : "memory", "r1" + ); +} + +/** + \brief write the PAC key used for unprivileged mode + \details writes the given PAC key to the PAC_KEY_U registers. + \param [in] pPacKey 128bit PAC key + */ +__STATIC_FORCEINLINE void __set_PAC_KEY_U (uint32_t* pPacKey) { + __ASM volatile ( + "ldr r1,[%0,#0]\n" + "msr pac_key_u_0, r1\n" + "ldr r1,[%0,#4]\n" + "msr pac_key_u_1, r1\n" + "ldr r1,[%0,#8]\n" + "msr pac_key_u_2, r1\n" + "ldr r1,[%0,#12]\n" + "msr pac_key_u_3, r1\n" + : : "r" (pPacKey) : "memory", "r1" + ); +} + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) + +/** + \brief read the PAC key used for privileged mode (non-secure) + \details Reads the PAC key stored in the non-secure PAC_KEY_P registers when in secure mode. + \param [out] pPacKey 128bit PAC key + */ +__STATIC_FORCEINLINE void __TZ_get_PAC_KEY_P_NS (uint32_t* pPacKey) { + __ASM volatile ( + "mrs r1, pac_key_p_0_ns\n" + "str r1,[%0,#0]\n" + "mrs r1, pac_key_p_1_ns\n" + "str r1,[%0,#4]\n" + "mrs r1, pac_key_p_2_ns\n" + "str r1,[%0,#8]\n" + "mrs r1, pac_key_p_3_ns\n" + "str r1,[%0,#12]\n" + : : "r" (pPacKey) : "memory", "r1" + ); +} + +/** + \brief write the PAC key used for privileged mode (non-secure) + \details writes the given PAC key to the non-secure PAC_KEY_P registers when in secure mode. + \param [in] pPacKey 128bit PAC key + */ +__STATIC_FORCEINLINE void __TZ_set_PAC_KEY_P_NS (uint32_t* pPacKey) { + __ASM volatile ( + "ldr r1,[%0,#0]\n" + "msr pac_key_p_0_ns, r1\n" + "ldr r1,[%0,#4]\n" + "msr pac_key_p_1_ns, r1\n" + "ldr r1,[%0,#8]\n" + "msr pac_key_p_2_ns, r1\n" + "ldr r1,[%0,#12]\n" + "msr pac_key_p_3_ns, r1\n" + : : "r" (pPacKey) : "memory", "r1" + ); +} + +/** + \brief read the PAC key used for unprivileged mode (non-secure) + \details Reads the PAC key stored in the non-secure PAC_KEY_U registers when in secure mode. + \param [out] pPacKey 128bit PAC key + */ +__STATIC_FORCEINLINE void __TZ_get_PAC_KEY_U_NS (uint32_t* pPacKey) { + __ASM volatile ( + "mrs r1, pac_key_u_0_ns\n" + "str r1,[%0,#0]\n" + "mrs r1, pac_key_u_1_ns\n" + "str r1,[%0,#4]\n" + "mrs r1, pac_key_u_2_ns\n" + "str r1,[%0,#8]\n" + "mrs r1, pac_key_u_3_ns\n" + "str r1,[%0,#12]\n" + : : "r" (pPacKey) : "memory", "r1" + ); +} + +/** + \brief write the PAC key used for unprivileged mode (non-secure) + \details writes the given PAC key to the non-secure PAC_KEY_U registers when in secure mode. + \param [in] pPacKey 128bit PAC key + */ +__STATIC_FORCEINLINE void __TZ_set_PAC_KEY_U_NS (uint32_t* pPacKey) { + __ASM volatile ( + "ldr r1,[%0,#0]\n" + "msr pac_key_u_0_ns, r1\n" + "ldr r1,[%0,#4]\n" + "msr pac_key_u_1_ns, r1\n" + "ldr r1,[%0,#8]\n" + "msr pac_key_u_2_ns, r1\n" + "ldr r1,[%0,#12]\n" + "msr pac_key_u_3_ns, r1\n" + : : "r" (pPacKey) : "memory", "r1" + ); +} + +#endif /* (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) */ + +#endif /* (defined (__ARM_FEATURE_PAUTH) && (__ARM_FEATURE_PAUTH == 1)) */ + +/*@} end of CMSIS_Core_PacKeyFunctions */ + + +#endif /* PAC_ARMV81_H */ diff --git a/bsp/renesas/ra8m1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/pmu_armv8.h b/bsp/renesas/ra8m1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/pmu_armv8.h new file mode 100644 index 000000000000..f8f3d8935b82 --- /dev/null +++ b/bsp/renesas/ra8m1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/pmu_armv8.h @@ -0,0 +1,337 @@ +/****************************************************************************** + * @file pmu_armv8.h + * @brief CMSIS PMU API for Armv8.1-M PMU + * @version V1.0.1 + * @date 15. April 2020 + ******************************************************************************/ +/* + * Copyright (c) 2020 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#elif defined (__clang__) + #pragma clang system_header /* treat file as system include file */ +#endif + +#ifndef ARM_PMU_ARMV8_H +#define ARM_PMU_ARMV8_H + +/** + * \brief PMU Events + * \note See the Armv8.1-M Architecture Reference Manual for full details on these PMU events. + * */ + +#define ARM_PMU_SW_INCR 0x0000 /*!< Software update to the PMU_SWINC register, architecturally executed and condition code check pass */ +#define ARM_PMU_L1I_CACHE_REFILL 0x0001 /*!< L1 I-Cache refill */ +#define ARM_PMU_L1D_CACHE_REFILL 0x0003 /*!< L1 D-Cache refill */ +#define ARM_PMU_L1D_CACHE 0x0004 /*!< L1 D-Cache access */ +#define ARM_PMU_LD_RETIRED 0x0006 /*!< Memory-reading instruction architecturally executed and condition code check pass */ +#define ARM_PMU_ST_RETIRED 0x0007 /*!< Memory-writing instruction architecturally executed and condition code check pass */ +#define ARM_PMU_INST_RETIRED 0x0008 /*!< Instruction architecturally executed */ +#define ARM_PMU_EXC_TAKEN 0x0009 /*!< Exception entry */ +#define ARM_PMU_EXC_RETURN 0x000A /*!< Exception return instruction architecturally executed and the condition code check pass */ +#define ARM_PMU_PC_WRITE_RETIRED 0x000C /*!< Software change to the Program Counter (PC). Instruction is architecturally executed and condition code check pass */ +#define ARM_PMU_BR_IMMED_RETIRED 0x000D /*!< Immediate branch architecturally executed */ +#define ARM_PMU_BR_RETURN_RETIRED 0x000E /*!< Function return instruction architecturally executed and the condition code check pass */ +#define ARM_PMU_UNALIGNED_LDST_RETIRED 0x000F /*!< Unaligned memory memory-reading or memory-writing instruction architecturally executed and condition code check pass */ +#define ARM_PMU_BR_MIS_PRED 0x0010 /*!< Mispredicted or not predicted branch speculatively executed */ +#define ARM_PMU_CPU_CYCLES 0x0011 /*!< Cycle */ +#define ARM_PMU_BR_PRED 0x0012 /*!< Predictable branch speculatively executed */ +#define ARM_PMU_MEM_ACCESS 0x0013 /*!< Data memory access */ +#define ARM_PMU_L1I_CACHE 0x0014 /*!< Level 1 instruction cache access */ +#define ARM_PMU_L1D_CACHE_WB 0x0015 /*!< Level 1 data cache write-back */ +#define ARM_PMU_L2D_CACHE 0x0016 /*!< Level 2 data cache access */ +#define ARM_PMU_L2D_CACHE_REFILL 0x0017 /*!< Level 2 data cache refill */ +#define ARM_PMU_L2D_CACHE_WB 0x0018 /*!< Level 2 data cache write-back */ +#define ARM_PMU_BUS_ACCESS 0x0019 /*!< Bus access */ +#define ARM_PMU_MEMORY_ERROR 0x001A /*!< Local memory error */ +#define ARM_PMU_INST_SPEC 0x001B /*!< Instruction speculatively executed */ +#define ARM_PMU_BUS_CYCLES 0x001D /*!< Bus cycles */ +#define ARM_PMU_CHAIN 0x001E /*!< For an odd numbered counter, increment when an overflow occurs on the preceding even-numbered counter on the same PE */ +#define ARM_PMU_L1D_CACHE_ALLOCATE 0x001F /*!< Level 1 data cache allocation without refill */ +#define ARM_PMU_L2D_CACHE_ALLOCATE 0x0020 /*!< Level 2 data cache allocation without refill */ +#define ARM_PMU_BR_RETIRED 0x0021 /*!< Branch instruction architecturally executed */ +#define ARM_PMU_BR_MIS_PRED_RETIRED 0x0022 /*!< Mispredicted branch instruction architecturally executed */ +#define ARM_PMU_STALL_FRONTEND 0x0023 /*!< No operation issued because of the frontend */ +#define ARM_PMU_STALL_BACKEND 0x0024 /*!< No operation issued because of the backend */ +#define ARM_PMU_L2I_CACHE 0x0027 /*!< Level 2 instruction cache access */ +#define ARM_PMU_L2I_CACHE_REFILL 0x0028 /*!< Level 2 instruction cache refill */ +#define ARM_PMU_L3D_CACHE_ALLOCATE 0x0029 /*!< Level 3 data cache allocation without refill */ +#define ARM_PMU_L3D_CACHE_REFILL 0x002A /*!< Level 3 data cache refill */ +#define ARM_PMU_L3D_CACHE 0x002B /*!< Level 3 data cache access */ +#define ARM_PMU_L3D_CACHE_WB 0x002C /*!< Level 3 data cache write-back */ +#define ARM_PMU_LL_CACHE_RD 0x0036 /*!< Last level data cache read */ +#define ARM_PMU_LL_CACHE_MISS_RD 0x0037 /*!< Last level data cache read miss */ +#define ARM_PMU_L1D_CACHE_MISS_RD 0x0039 /*!< Level 1 data cache read miss */ +#define ARM_PMU_OP_COMPLETE 0x003A /*!< Operation retired */ +#define ARM_PMU_OP_SPEC 0x003B /*!< Operation speculatively executed */ +#define ARM_PMU_STALL 0x003C /*!< Stall cycle for instruction or operation not sent for execution */ +#define ARM_PMU_STALL_OP_BACKEND 0x003D /*!< Stall cycle for instruction or operation not sent for execution due to pipeline backend */ +#define ARM_PMU_STALL_OP_FRONTEND 0x003E /*!< Stall cycle for instruction or operation not sent for execution due to pipeline frontend */ +#define ARM_PMU_STALL_OP 0x003F /*!< Instruction or operation slots not occupied each cycle */ +#define ARM_PMU_L1D_CACHE_RD 0x0040 /*!< Level 1 data cache read */ +#define ARM_PMU_LE_RETIRED 0x0100 /*!< Loop end instruction executed */ +#define ARM_PMU_LE_SPEC 0x0101 /*!< Loop end instruction speculatively executed */ +#define ARM_PMU_BF_RETIRED 0x0104 /*!< Branch future instruction architecturally executed and condition code check pass */ +#define ARM_PMU_BF_SPEC 0x0105 /*!< Branch future instruction speculatively executed and condition code check pass */ +#define ARM_PMU_LE_CANCEL 0x0108 /*!< Loop end instruction not taken */ +#define ARM_PMU_BF_CANCEL 0x0109 /*!< Branch future instruction not taken */ +#define ARM_PMU_SE_CALL_S 0x0114 /*!< Call to secure function, resulting in Security state change */ +#define ARM_PMU_SE_CALL_NS 0x0115 /*!< Call to non-secure function, resulting in Security state change */ +#define ARM_PMU_DWT_CMPMATCH0 0x0118 /*!< DWT comparator 0 match */ +#define ARM_PMU_DWT_CMPMATCH1 0x0119 /*!< DWT comparator 1 match */ +#define ARM_PMU_DWT_CMPMATCH2 0x011A /*!< DWT comparator 2 match */ +#define ARM_PMU_DWT_CMPMATCH3 0x011B /*!< DWT comparator 3 match */ +#define ARM_PMU_MVE_INST_RETIRED 0x0200 /*!< MVE instruction architecturally executed */ +#define ARM_PMU_MVE_INST_SPEC 0x0201 /*!< MVE instruction speculatively executed */ +#define ARM_PMU_MVE_FP_RETIRED 0x0204 /*!< MVE floating-point instruction architecturally executed */ +#define ARM_PMU_MVE_FP_SPEC 0x0205 /*!< MVE floating-point instruction speculatively executed */ +#define ARM_PMU_MVE_FP_HP_RETIRED 0x0208 /*!< MVE half-precision floating-point instruction architecturally executed */ +#define ARM_PMU_MVE_FP_HP_SPEC 0x0209 /*!< MVE half-precision floating-point instruction speculatively executed */ +#define ARM_PMU_MVE_FP_SP_RETIRED 0x020C /*!< MVE single-precision floating-point instruction architecturally executed */ +#define ARM_PMU_MVE_FP_SP_SPEC 0x020D /*!< MVE single-precision floating-point instruction speculatively executed */ +#define ARM_PMU_MVE_FP_MAC_RETIRED 0x0214 /*!< MVE floating-point multiply or multiply-accumulate instruction architecturally executed */ +#define ARM_PMU_MVE_FP_MAC_SPEC 0x0215 /*!< MVE floating-point multiply or multiply-accumulate instruction speculatively executed */ +#define ARM_PMU_MVE_INT_RETIRED 0x0224 /*!< MVE integer instruction architecturally executed */ +#define ARM_PMU_MVE_INT_SPEC 0x0225 /*!< MVE integer instruction speculatively executed */ +#define ARM_PMU_MVE_INT_MAC_RETIRED 0x0228 /*!< MVE multiply or multiply-accumulate instruction architecturally executed */ +#define ARM_PMU_MVE_INT_MAC_SPEC 0x0229 /*!< MVE multiply or multiply-accumulate instruction speculatively executed */ +#define ARM_PMU_MVE_LDST_RETIRED 0x0238 /*!< MVE load or store instruction architecturally executed */ +#define ARM_PMU_MVE_LDST_SPEC 0x0239 /*!< MVE load or store instruction speculatively executed */ +#define ARM_PMU_MVE_LD_RETIRED 0x023C /*!< MVE load instruction architecturally executed */ +#define ARM_PMU_MVE_LD_SPEC 0x023D /*!< MVE load instruction speculatively executed */ +#define ARM_PMU_MVE_ST_RETIRED 0x0240 /*!< MVE store instruction architecturally executed */ +#define ARM_PMU_MVE_ST_SPEC 0x0241 /*!< MVE store instruction speculatively executed */ +#define ARM_PMU_MVE_LDST_CONTIG_RETIRED 0x0244 /*!< MVE contiguous load or store instruction architecturally executed */ +#define ARM_PMU_MVE_LDST_CONTIG_SPEC 0x0245 /*!< MVE contiguous load or store instruction speculatively executed */ +#define ARM_PMU_MVE_LD_CONTIG_RETIRED 0x0248 /*!< MVE contiguous load instruction architecturally executed */ +#define ARM_PMU_MVE_LD_CONTIG_SPEC 0x0249 /*!< MVE contiguous load instruction speculatively executed */ +#define ARM_PMU_MVE_ST_CONTIG_RETIRED 0x024C /*!< MVE contiguous store instruction architecturally executed */ +#define ARM_PMU_MVE_ST_CONTIG_SPEC 0x024D /*!< MVE contiguous store instruction speculatively executed */ +#define ARM_PMU_MVE_LDST_NONCONTIG_RETIRED 0x0250 /*!< MVE non-contiguous load or store instruction architecturally executed */ +#define ARM_PMU_MVE_LDST_NONCONTIG_SPEC 0x0251 /*!< MVE non-contiguous load or store instruction speculatively executed */ +#define ARM_PMU_MVE_LD_NONCONTIG_RETIRED 0x0254 /*!< MVE non-contiguous load instruction architecturally executed */ +#define ARM_PMU_MVE_LD_NONCONTIG_SPEC 0x0255 /*!< MVE non-contiguous load instruction speculatively executed */ +#define ARM_PMU_MVE_ST_NONCONTIG_RETIRED 0x0258 /*!< MVE non-contiguous store instruction architecturally executed */ +#define ARM_PMU_MVE_ST_NONCONTIG_SPEC 0x0259 /*!< MVE non-contiguous store instruction speculatively executed */ +#define ARM_PMU_MVE_LDST_MULTI_RETIRED 0x025C /*!< MVE memory instruction targeting multiple registers architecturally executed */ +#define ARM_PMU_MVE_LDST_MULTI_SPEC 0x025D /*!< MVE memory instruction targeting multiple registers speculatively executed */ +#define ARM_PMU_MVE_LD_MULTI_RETIRED 0x0260 /*!< MVE memory load instruction targeting multiple registers architecturally executed */ +#define ARM_PMU_MVE_LD_MULTI_SPEC 0x0261 /*!< MVE memory load instruction targeting multiple registers speculatively executed */ +#define ARM_PMU_MVE_ST_MULTI_RETIRED 0x0261 /*!< MVE memory store instruction targeting multiple registers architecturally executed */ +#define ARM_PMU_MVE_ST_MULTI_SPEC 0x0265 /*!< MVE memory store instruction targeting multiple registers speculatively executed */ +#define ARM_PMU_MVE_LDST_UNALIGNED_RETIRED 0x028C /*!< MVE unaligned memory load or store instruction architecturally executed */ +#define ARM_PMU_MVE_LDST_UNALIGNED_SPEC 0x028D /*!< MVE unaligned memory load or store instruction speculatively executed */ +#define ARM_PMU_MVE_LD_UNALIGNED_RETIRED 0x0290 /*!< MVE unaligned load instruction architecturally executed */ +#define ARM_PMU_MVE_LD_UNALIGNED_SPEC 0x0291 /*!< MVE unaligned load instruction speculatively executed */ +#define ARM_PMU_MVE_ST_UNALIGNED_RETIRED 0x0294 /*!< MVE unaligned store instruction architecturally executed */ +#define ARM_PMU_MVE_ST_UNALIGNED_SPEC 0x0295 /*!< MVE unaligned store instruction speculatively executed */ +#define ARM_PMU_MVE_LDST_UNALIGNED_NONCONTIG_RETIRED 0x0298 /*!< MVE unaligned noncontiguous load or store instruction architecturally executed */ +#define ARM_PMU_MVE_LDST_UNALIGNED_NONCONTIG_SPEC 0x0299 /*!< MVE unaligned noncontiguous load or store instruction speculatively executed */ +#define ARM_PMU_MVE_VREDUCE_RETIRED 0x02A0 /*!< MVE vector reduction instruction architecturally executed */ +#define ARM_PMU_MVE_VREDUCE_SPEC 0x02A1 /*!< MVE vector reduction instruction speculatively executed */ +#define ARM_PMU_MVE_VREDUCE_FP_RETIRED 0x02A4 /*!< MVE floating-point vector reduction instruction architecturally executed */ +#define ARM_PMU_MVE_VREDUCE_FP_SPEC 0x02A5 /*!< MVE floating-point vector reduction instruction speculatively executed */ +#define ARM_PMU_MVE_VREDUCE_INT_RETIRED 0x02A8 /*!< MVE integer vector reduction instruction architecturally executed */ +#define ARM_PMU_MVE_VREDUCE_INT_SPEC 0x02A9 /*!< MVE integer vector reduction instruction speculatively executed */ +#define ARM_PMU_MVE_PRED 0x02B8 /*!< Cycles where one or more predicated beats architecturally executed */ +#define ARM_PMU_MVE_STALL 0x02CC /*!< Stall cycles caused by an MVE instruction */ +#define ARM_PMU_MVE_STALL_RESOURCE 0x02CD /*!< Stall cycles caused by an MVE instruction because of resource conflicts */ +#define ARM_PMU_MVE_STALL_RESOURCE_MEM 0x02CE /*!< Stall cycles caused by an MVE instruction because of memory resource conflicts */ +#define ARM_PMU_MVE_STALL_RESOURCE_FP 0x02CF /*!< Stall cycles caused by an MVE instruction because of floating-point resource conflicts */ +#define ARM_PMU_MVE_STALL_RESOURCE_INT 0x02D0 /*!< Stall cycles caused by an MVE instruction because of integer resource conflicts */ +#define ARM_PMU_MVE_STALL_BREAK 0x02D3 /*!< Stall cycles caused by an MVE chain break */ +#define ARM_PMU_MVE_STALL_DEPENDENCY 0x02D4 /*!< Stall cycles caused by MVE register dependency */ +#define ARM_PMU_ITCM_ACCESS 0x4007 /*!< Instruction TCM access */ +#define ARM_PMU_DTCM_ACCESS 0x4008 /*!< Data TCM access */ +#define ARM_PMU_TRCEXTOUT0 0x4010 /*!< ETM external output 0 */ +#define ARM_PMU_TRCEXTOUT1 0x4011 /*!< ETM external output 1 */ +#define ARM_PMU_TRCEXTOUT2 0x4012 /*!< ETM external output 2 */ +#define ARM_PMU_TRCEXTOUT3 0x4013 /*!< ETM external output 3 */ +#define ARM_PMU_CTI_TRIGOUT4 0x4018 /*!< Cross-trigger Interface output trigger 4 */ +#define ARM_PMU_CTI_TRIGOUT5 0x4019 /*!< Cross-trigger Interface output trigger 5 */ +#define ARM_PMU_CTI_TRIGOUT6 0x401A /*!< Cross-trigger Interface output trigger 6 */ +#define ARM_PMU_CTI_TRIGOUT7 0x401B /*!< Cross-trigger Interface output trigger 7 */ + +/** \brief PMU Functions */ + +__STATIC_INLINE void ARM_PMU_Enable(void); +__STATIC_INLINE void ARM_PMU_Disable(void); + +__STATIC_INLINE void ARM_PMU_Set_EVTYPER(uint32_t num, uint32_t type); + +__STATIC_INLINE void ARM_PMU_CYCCNT_Reset(void); +__STATIC_INLINE void ARM_PMU_EVCNTR_ALL_Reset(void); + +__STATIC_INLINE void ARM_PMU_CNTR_Enable(uint32_t mask); +__STATIC_INLINE void ARM_PMU_CNTR_Disable(uint32_t mask); + +__STATIC_INLINE uint32_t ARM_PMU_Get_CCNTR(void); +__STATIC_INLINE uint32_t ARM_PMU_Get_EVCNTR(uint32_t num); + +__STATIC_INLINE uint32_t ARM_PMU_Get_CNTR_OVS(void); +__STATIC_INLINE void ARM_PMU_Set_CNTR_OVS(uint32_t mask); + +__STATIC_INLINE void ARM_PMU_Set_CNTR_IRQ_Enable(uint32_t mask); +__STATIC_INLINE void ARM_PMU_Set_CNTR_IRQ_Disable(uint32_t mask); + +__STATIC_INLINE void ARM_PMU_CNTR_Increment(uint32_t mask); + +/** + \brief Enable the PMU +*/ +__STATIC_INLINE void ARM_PMU_Enable(void) +{ + PMU->CTRL |= PMU_CTRL_ENABLE_Msk; +} + +/** + \brief Disable the PMU +*/ +__STATIC_INLINE void ARM_PMU_Disable(void) +{ + PMU->CTRL &= ~PMU_CTRL_ENABLE_Msk; +} + +/** + \brief Set event to count for PMU eventer counter + \param [in] num Event counter (0-30) to configure + \param [in] type Event to count +*/ +__STATIC_INLINE void ARM_PMU_Set_EVTYPER(uint32_t num, uint32_t type) +{ + PMU->EVTYPER[num] = type; +} + +/** + \brief Reset cycle counter +*/ +__STATIC_INLINE void ARM_PMU_CYCCNT_Reset(void) +{ + PMU->CTRL |= PMU_CTRL_CYCCNT_RESET_Msk; +} + +/** + \brief Reset all event counters +*/ +__STATIC_INLINE void ARM_PMU_EVCNTR_ALL_Reset(void) +{ + PMU->CTRL |= PMU_CTRL_EVENTCNT_RESET_Msk; +} + +/** + \brief Enable counters + \param [in] mask Counters to enable + \note Enables one or more of the following: + - event counters (0-30) + - cycle counter +*/ +__STATIC_INLINE void ARM_PMU_CNTR_Enable(uint32_t mask) +{ + PMU->CNTENSET = mask; +} + +/** + \brief Disable counters + \param [in] mask Counters to enable + \note Disables one or more of the following: + - event counters (0-30) + - cycle counter +*/ +__STATIC_INLINE void ARM_PMU_CNTR_Disable(uint32_t mask) +{ + PMU->CNTENCLR = mask; +} + +/** + \brief Read cycle counter + \return Cycle count +*/ +__STATIC_INLINE uint32_t ARM_PMU_Get_CCNTR(void) +{ + return PMU->CCNTR; +} + +/** + \brief Read event counter + \param [in] num Event counter (0-30) to read + \return Event count +*/ +__STATIC_INLINE uint32_t ARM_PMU_Get_EVCNTR(uint32_t num) +{ + return PMU_EVCNTR_CNT_Msk & PMU->EVCNTR[num]; +} + +/** + \brief Read counter overflow status + \return Counter overflow status bits for the following: + - event counters (0-30) + - cycle counter +*/ +__STATIC_INLINE uint32_t ARM_PMU_Get_CNTR_OVS(void) +{ + return PMU->OVSSET; +} + +/** + \brief Clear counter overflow status + \param [in] mask Counter overflow status bits to clear + \note Clears overflow status bits for one or more of the following: + - event counters (0-30) + - cycle counter +*/ +__STATIC_INLINE void ARM_PMU_Set_CNTR_OVS(uint32_t mask) +{ + PMU->OVSCLR = mask; +} + +/** + \brief Enable counter overflow interrupt request + \param [in] mask Counter overflow interrupt request bits to set + \note Sets overflow interrupt request bits for one or more of the following: + - event counters (0-30) + - cycle counter +*/ +__STATIC_INLINE void ARM_PMU_Set_CNTR_IRQ_Enable(uint32_t mask) +{ + PMU->INTENSET = mask; +} + +/** + \brief Disable counter overflow interrupt request + \param [in] mask Counter overflow interrupt request bits to clear + \note Clears overflow interrupt request bits for one or more of the following: + - event counters (0-30) + - cycle counter +*/ +__STATIC_INLINE void ARM_PMU_Set_CNTR_IRQ_Disable(uint32_t mask) +{ + PMU->INTENCLR = mask; +} + +/** + \brief Software increment event counter + \param [in] mask Counters to increment + \note Software increment bits for one or more event counters (0-30) +*/ +__STATIC_INLINE void ARM_PMU_CNTR_Increment(uint32_t mask) +{ + PMU->SWINC = mask; +} + +#endif diff --git a/bsp/renesas/ra8m1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/tz_context.h b/bsp/renesas/ra8m1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/tz_context.h new file mode 100644 index 000000000000..0d09749f3a50 --- /dev/null +++ b/bsp/renesas/ra8m1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/tz_context.h @@ -0,0 +1,70 @@ +/****************************************************************************** + * @file tz_context.h + * @brief Context Management for Armv8-M TrustZone + * @version V1.0.1 + * @date 10. January 2018 + ******************************************************************************/ +/* + * Copyright (c) 2017-2018 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#elif defined (__clang__) + #pragma clang system_header /* treat file as system include file */ +#endif + +#ifndef TZ_CONTEXT_H +#define TZ_CONTEXT_H + +#include + +#ifndef TZ_MODULEID_T +#define TZ_MODULEID_T +/// \details Data type that identifies secure software modules called by a process. +typedef uint32_t TZ_ModuleId_t; +#endif + +/// \details TZ Memory ID identifies an allocated memory slot. +typedef uint32_t TZ_MemoryId_t; + +/// Initialize secure context memory system +/// \return execution status (1: success, 0: error) +uint32_t TZ_InitContextSystem_S (void); + +/// Allocate context memory for calling secure software modules in TrustZone +/// \param[in] module identifies software modules called from non-secure mode +/// \return value != 0 id TrustZone memory slot identifier +/// \return value 0 no memory available or internal error +TZ_MemoryId_t TZ_AllocModuleContext_S (TZ_ModuleId_t module); + +/// Free context memory that was previously allocated with \ref TZ_AllocModuleContext_S +/// \param[in] id TrustZone memory slot identifier +/// \return execution status (1: success, 0: error) +uint32_t TZ_FreeModuleContext_S (TZ_MemoryId_t id); + +/// Load secure context (called on RTOS thread context switch) +/// \param[in] id TrustZone memory slot identifier +/// \return execution status (1: success, 0: error) +uint32_t TZ_LoadContext_S (TZ_MemoryId_t id); + +/// Store secure context (called on RTOS thread context switch) +/// \param[in] id TrustZone memory slot identifier +/// \return execution status (1: success, 0: error) +uint32_t TZ_StoreContext_S (TZ_MemoryId_t id); + +#endif // TZ_CONTEXT_H diff --git a/bsp/renesas/ra8m1-ek/ra/arm/CMSIS_5/LICENSE.txt b/bsp/renesas/ra8m1-ek/ra/arm/CMSIS_5/LICENSE.txt new file mode 100644 index 000000000000..8dada3edaf50 --- /dev/null +++ b/bsp/renesas/ra8m1-ek/ra/arm/CMSIS_5/LICENSE.txt @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright {yyyy} {name of copyright owner} + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/bsp/renesas/ra8m1-ek/ra/board/ra8m1_ek/board.h b/bsp/renesas/ra8m1-ek/ra/board/ra8m1_ek/board.h new file mode 100644 index 000000000000..b5759fc6b051 --- /dev/null +++ b/bsp/renesas/ra8m1-ek/ra/board/ra8m1_ek/board.h @@ -0,0 +1,62 @@ +/*********************************************************************************************************************** + * Copyright [2020-2023] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics America Inc. and may only be used with products + * of Renesas Electronics Corp. and its affiliates ("Renesas"). No other uses are authorized. Renesas products are + * sold pursuant to Renesas terms and conditions of sale. Purchasers are solely responsible for the selection and use + * of Renesas products and Renesas assumes no liability. No license, express or implied, to any intellectual property + * right is granted by Renesas. This software is protected under all applicable laws, including copyright laws. Renesas + * reserves the right to change or discontinue this software and/or this documentation. THE SOFTWARE AND DOCUMENTATION + * IS DELIVERED TO YOU "AS IS," AND RENESAS MAKES NO REPRESENTATIONS OR WARRANTIES, AND TO THE FULLEST EXTENT + * PERMISSIBLE UNDER APPLICABLE LAW, DISCLAIMS ALL WARRANTIES, WHETHER EXPLICITLY OR IMPLICITLY, INCLUDING WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT, WITH RESPECT TO THE SOFTWARE OR + * DOCUMENTATION. RENESAS SHALL HAVE NO LIABILITY ARISING OUT OF ANY SECURITY VULNERABILITY OR BREACH. TO THE MAXIMUM + * EXTENT PERMITTED BY LAW, IN NO EVENT WILL RENESAS BE LIABLE TO YOU IN CONNECTION WITH THE SOFTWARE OR DOCUMENTATION + * (OR ANY PERSON OR ENTITY CLAIMING RIGHTS DERIVED FROM YOU) FOR ANY LOSS, DAMAGES, OR CLAIMS WHATSOEVER, INCLUDING, + * WITHOUT LIMITATION, ANY DIRECT, CONSEQUENTIAL, SPECIAL, INDIRECT, PUNITIVE, OR INCIDENTAL DAMAGES; ANY LOST PROFITS, + * OTHER ECONOMIC DAMAGE, PROPERTY DAMAGE, OR PERSONAL INJURY; AND EVEN IF RENESAS HAS BEEN ADVISED OF THE POSSIBILITY + * OF SUCH LOSS, DAMAGES, CLAIMS OR COSTS. + **********************************************************************************************************************/ + +/*******************************************************************************************************************//** + * @ingroup BOARDS + * @defgroup BOARD_RA8M1_EK for the RA8M1-EK board + * @brief BSP for the RA8M1-EK Board + * + * The RA8M1_EK is a development kit for the Renesas R7FA8M1AHDCBD microcontroller in a BGA224 package. + * + * @{ + **********************************************************************************************************************/ + +#ifndef BOARD_H +#define BOARD_H + +/*********************************************************************************************************************** + * Includes , "Project Includes" + **********************************************************************************************************************/ + +/* BSP Board Specific Includes. */ +#include "board_init.h" +#include "board_leds.h" +#include "board_ethernet_phy.h" + +/*********************************************************************************************************************** + * Macro definitions + **********************************************************************************************************************/ +#define BOARD_RA8M1_EK + +/*********************************************************************************************************************** + * Typedef definitions + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Exported global variables + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Exported global functions (to be accessed by other files) + **********************************************************************************************************************/ + +/** @} (end defgroup BOARD_RA8M1_EK) */ + +#endif diff --git a/bsp/renesas/ra8m1-ek/ra/board/ra8m1_ek/board_ethernet_phy.h b/bsp/renesas/ra8m1-ek/ra/board/ra8m1_ek/board_ethernet_phy.h new file mode 100644 index 000000000000..7e9eec59d85a --- /dev/null +++ b/bsp/renesas/ra8m1-ek/ra/board/ra8m1_ek/board_ethernet_phy.h @@ -0,0 +1,61 @@ +/*********************************************************************************************************************** + * Copyright [2020-2023] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics America Inc. and may only be used with products + * of Renesas Electronics Corp. and its affiliates ("Renesas"). No other uses are authorized. Renesas products are + * sold pursuant to Renesas terms and conditions of sale. Purchasers are solely responsible for the selection and use + * of Renesas products and Renesas assumes no liability. No license, express or implied, to any intellectual property + * right is granted by Renesas. This software is protected under all applicable laws, including copyright laws. Renesas + * reserves the right to change or discontinue this software and/or this documentation. THE SOFTWARE AND DOCUMENTATION + * IS DELIVERED TO YOU "AS IS," AND RENESAS MAKES NO REPRESENTATIONS OR WARRANTIES, AND TO THE FULLEST EXTENT + * PERMISSIBLE UNDER APPLICABLE LAW, DISCLAIMS ALL WARRANTIES, WHETHER EXPLICITLY OR IMPLICITLY, INCLUDING WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT, WITH RESPECT TO THE SOFTWARE OR + * DOCUMENTATION. RENESAS SHALL HAVE NO LIABILITY ARISING OUT OF ANY SECURITY VULNERABILITY OR BREACH. TO THE MAXIMUM + * EXTENT PERMITTED BY LAW, IN NO EVENT WILL RENESAS BE LIABLE TO YOU IN CONNECTION WITH THE SOFTWARE OR DOCUMENTATION + * (OR ANY PERSON OR ENTITY CLAIMING RIGHTS DERIVED FROM YOU) FOR ANY LOSS, DAMAGES, OR CLAIMS WHATSOEVER, INCLUDING, + * WITHOUT LIMITATION, ANY DIRECT, CONSEQUENTIAL, SPECIAL, INDIRECT, PUNITIVE, OR INCIDENTAL DAMAGES; ANY LOST PROFITS, + * OTHER ECONOMIC DAMAGE, PROPERTY DAMAGE, OR PERSONAL INJURY; AND EVEN IF RENESAS HAS BEEN ADVISED OF THE POSSIBILITY + * OF SUCH LOSS, DAMAGES, CLAIMS OR COSTS. + **********************************************************************************************************************/ + +/*******************************************************************************************************************//** + * @ingroup BOARD_RA8M1_EK + * @defgroup BOARD_RA8M1_EK_ETHERNET_PHY Board Ethernet Phy + * @brief Ethernet Phy information for this board. + * + * This is code specific to the RA8M1_EK board. + * + * @{ + **********************************************************************************************************************/ + +#ifndef BSP_ETHERNET_PHY_H +#define BSP_ETHERNET_PHY_H + +/** Common macro for FSP header files. There is also a corresponding FSP_FOOTER macro at the end of this file. */ +FSP_HEADER + +/*********************************************************************************************************************** + * Macro definitions + **********************************************************************************************************************/ +#define ETHER_PHY_CFG_TARGET_ICS1894_ENABLE (1) +#define ETHER_PHY_LSI_TYPE_KIT_COMPONENT ETHER_PHY_LSI_TYPE_ICS1894 +#define BOARD_PHY_REF_CLK (1) + +/*********************************************************************************************************************** + * Typedef definitions + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Exported global variables + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Public Functions + **********************************************************************************************************************/ + +/** Common macro for FSP header files. There is also a corresponding FSP_HEADER macro at the top of this file. */ +FSP_FOOTER + +#endif + +/** @} (end defgroup BOARD_RA8M1_EK_ETHERNET_PHY) */ diff --git a/bsp/renesas/ra8m1-ek/ra/board/ra8m1_ek/board_init.c b/bsp/renesas/ra8m1-ek/ra/board/ra8m1_ek/board_init.c new file mode 100644 index 000000000000..addecb06bc2b --- /dev/null +++ b/bsp/renesas/ra8m1-ek/ra/board/ra8m1_ek/board_init.c @@ -0,0 +1,62 @@ +/*********************************************************************************************************************** + * Copyright [2020-2023] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics America Inc. and may only be used with products + * of Renesas Electronics Corp. and its affiliates ("Renesas"). No other uses are authorized. Renesas products are + * sold pursuant to Renesas terms and conditions of sale. Purchasers are solely responsible for the selection and use + * of Renesas products and Renesas assumes no liability. No license, express or implied, to any intellectual property + * right is granted by Renesas. This software is protected under all applicable laws, including copyright laws. Renesas + * reserves the right to change or discontinue this software and/or this documentation. THE SOFTWARE AND DOCUMENTATION + * IS DELIVERED TO YOU "AS IS," AND RENESAS MAKES NO REPRESENTATIONS OR WARRANTIES, AND TO THE FULLEST EXTENT + * PERMISSIBLE UNDER APPLICABLE LAW, DISCLAIMS ALL WARRANTIES, WHETHER EXPLICITLY OR IMPLICITLY, INCLUDING WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT, WITH RESPECT TO THE SOFTWARE OR + * DOCUMENTATION. RENESAS SHALL HAVE NO LIABILITY ARISING OUT OF ANY SECURITY VULNERABILITY OR BREACH. TO THE MAXIMUM + * EXTENT PERMITTED BY LAW, IN NO EVENT WILL RENESAS BE LIABLE TO YOU IN CONNECTION WITH THE SOFTWARE OR DOCUMENTATION + * (OR ANY PERSON OR ENTITY CLAIMING RIGHTS DERIVED FROM YOU) FOR ANY LOSS, DAMAGES, OR CLAIMS WHATSOEVER, INCLUDING, + * WITHOUT LIMITATION, ANY DIRECT, CONSEQUENTIAL, SPECIAL, INDIRECT, PUNITIVE, OR INCIDENTAL DAMAGES; ANY LOST PROFITS, + * OTHER ECONOMIC DAMAGE, PROPERTY DAMAGE, OR PERSONAL INJURY; AND EVEN IF RENESAS HAS BEEN ADVISED OF THE POSSIBILITY + * OF SUCH LOSS, DAMAGES, CLAIMS OR COSTS. + **********************************************************************************************************************/ + +/*******************************************************************************************************************//** + * @addtogroup BOARD_RA8M1_EK + * + * @{ + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Includes , "Project Includes" + **********************************************************************************************************************/ +#include "bsp_api.h" + +#if defined(BOARD_RA8M1_EK) + +/*********************************************************************************************************************** + * Macro definitions + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Typedef definitions + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Exported global variables (to be accessed by other files) + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Private global variables and functions + **********************************************************************************************************************/ + +/*******************************************************************************************************************//** + * @brief Performs any initialization specific to this BSP. + * + * @param[in] p_args Pointer to arguments of the user's choice. + **********************************************************************************************************************/ +void bsp_init (void * p_args) +{ + FSP_PARAMETER_NOT_USED(p_args); +} + +#endif + +/** @} (end addtogroup BOARD_RA8M1_EK) */ diff --git a/bsp/renesas/ra8m1-ek/ra/board/ra8m1_ek/board_init.h b/bsp/renesas/ra8m1-ek/ra/board/ra8m1_ek/board_init.h new file mode 100644 index 000000000000..0e8f647e41e9 --- /dev/null +++ b/bsp/renesas/ra8m1-ek/ra/board/ra8m1_ek/board_init.h @@ -0,0 +1,58 @@ +/*********************************************************************************************************************** + * Copyright [2020-2023] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics America Inc. and may only be used with products + * of Renesas Electronics Corp. and its affiliates ("Renesas"). No other uses are authorized. Renesas products are + * sold pursuant to Renesas terms and conditions of sale. Purchasers are solely responsible for the selection and use + * of Renesas products and Renesas assumes no liability. No license, express or implied, to any intellectual property + * right is granted by Renesas. This software is protected under all applicable laws, including copyright laws. Renesas + * reserves the right to change or discontinue this software and/or this documentation. THE SOFTWARE AND DOCUMENTATION + * IS DELIVERED TO YOU "AS IS," AND RENESAS MAKES NO REPRESENTATIONS OR WARRANTIES, AND TO THE FULLEST EXTENT + * PERMISSIBLE UNDER APPLICABLE LAW, DISCLAIMS ALL WARRANTIES, WHETHER EXPLICITLY OR IMPLICITLY, INCLUDING WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT, WITH RESPECT TO THE SOFTWARE OR + * DOCUMENTATION. RENESAS SHALL HAVE NO LIABILITY ARISING OUT OF ANY SECURITY VULNERABILITY OR BREACH. TO THE MAXIMUM + * EXTENT PERMITTED BY LAW, IN NO EVENT WILL RENESAS BE LIABLE TO YOU IN CONNECTION WITH THE SOFTWARE OR DOCUMENTATION + * (OR ANY PERSON OR ENTITY CLAIMING RIGHTS DERIVED FROM YOU) FOR ANY LOSS, DAMAGES, OR CLAIMS WHATSOEVER, INCLUDING, + * WITHOUT LIMITATION, ANY DIRECT, CONSEQUENTIAL, SPECIAL, INDIRECT, PUNITIVE, OR INCIDENTAL DAMAGES; ANY LOST PROFITS, + * OTHER ECONOMIC DAMAGE, PROPERTY DAMAGE, OR PERSONAL INJURY; AND EVEN IF RENESAS HAS BEEN ADVISED OF THE POSSIBILITY + * OF SUCH LOSS, DAMAGES, CLAIMS OR COSTS. + **********************************************************************************************************************/ + +/*******************************************************************************************************************//** + * @addtogroup BOARD_RA8M1_EK + * @brief Board specific code for the RA8M1-EK Board + * + * This include file is specific to the RA8M1-EK board. + * + * @{ + **********************************************************************************************************************/ + +#ifndef BOARD_INIT_H +#define BOARD_INIT_H + +/** Common macro for FSP header files. There is also a corresponding FSP_FOOTER macro at the end of this file. */ +FSP_HEADER + +/*********************************************************************************************************************** + * Macro definitions + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Typedef definitions + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Exported global variables + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Exported global functions (to be accessed by other files) + **********************************************************************************************************************/ +void bsp_init(void * p_args); + +/** Common macro for FSP header files. There is also a corresponding FSP_HEADER macro at the top of this file. */ +FSP_FOOTER + +#endif + +/** @} (end addtogroup BOARD_RA8M1_EK) */ diff --git a/bsp/renesas/ra8m1-ek/ra/board/ra8m1_ek/board_leds.c b/bsp/renesas/ra8m1-ek/ra/board/ra8m1_ek/board_leds.c new file mode 100644 index 000000000000..e312f74eba45 --- /dev/null +++ b/bsp/renesas/ra8m1-ek/ra/board/ra8m1_ek/board_leds.c @@ -0,0 +1,71 @@ +/*********************************************************************************************************************** + * Copyright [2020-2023] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics America Inc. and may only be used with products + * of Renesas Electronics Corp. and its affiliates ("Renesas"). No other uses are authorized. Renesas products are + * sold pursuant to Renesas terms and conditions of sale. Purchasers are solely responsible for the selection and use + * of Renesas products and Renesas assumes no liability. No license, express or implied, to any intellectual property + * right is granted by Renesas. This software is protected under all applicable laws, including copyright laws. Renesas + * reserves the right to change or discontinue this software and/or this documentation. THE SOFTWARE AND DOCUMENTATION + * IS DELIVERED TO YOU "AS IS," AND RENESAS MAKES NO REPRESENTATIONS OR WARRANTIES, AND TO THE FULLEST EXTENT + * PERMISSIBLE UNDER APPLICABLE LAW, DISCLAIMS ALL WARRANTIES, WHETHER EXPLICITLY OR IMPLICITLY, INCLUDING WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT, WITH RESPECT TO THE SOFTWARE OR + * DOCUMENTATION. RENESAS SHALL HAVE NO LIABILITY ARISING OUT OF ANY SECURITY VULNERABILITY OR BREACH. TO THE MAXIMUM + * EXTENT PERMITTED BY LAW, IN NO EVENT WILL RENESAS BE LIABLE TO YOU IN CONNECTION WITH THE SOFTWARE OR DOCUMENTATION + * (OR ANY PERSON OR ENTITY CLAIMING RIGHTS DERIVED FROM YOU) FOR ANY LOSS, DAMAGES, OR CLAIMS WHATSOEVER, INCLUDING, + * WITHOUT LIMITATION, ANY DIRECT, CONSEQUENTIAL, SPECIAL, INDIRECT, PUNITIVE, OR INCIDENTAL DAMAGES; ANY LOST PROFITS, + * OTHER ECONOMIC DAMAGE, PROPERTY DAMAGE, OR PERSONAL INJURY; AND EVEN IF RENESAS HAS BEEN ADVISED OF THE POSSIBILITY + * OF SUCH LOSS, DAMAGES, CLAIMS OR COSTS. + **********************************************************************************************************************/ + +/*******************************************************************************************************************//** + * @addtogroup BOARD_RA8M1_EK_LEDS + * + * @{ + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Includes + **********************************************************************************************************************/ +#include "bsp_api.h" +#if defined(BOARD_RA8M1_EK) + +/*********************************************************************************************************************** + * Macro definitions + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Typedef definitions + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Private global variables and functions + **********************************************************************************************************************/ + +/** Array of LED IOPORT pins. */ +static const uint16_t g_bsp_prv_leds[] = +{ + (uint16_t) BSP_IO_PORT_06_PIN_00, ///< LED1 + (uint16_t) BSP_IO_PORT_04_PIN_14, ///< LED2 + (uint16_t) BSP_IO_PORT_01_PIN_07, ///< LED3 +}; + +/*********************************************************************************************************************** + * Exported global variables (to be accessed by other files) + **********************************************************************************************************************/ + +/** Structure with LED information for this board. */ + +const bsp_leds_t g_bsp_leds = +{ + .led_count = (uint16_t) ((sizeof(g_bsp_prv_leds) / sizeof(g_bsp_prv_leds[0]))), + .p_leds = &g_bsp_prv_leds[0] +}; + +/*********************************************************************************************************************** + * Exported global variables (to be accessed by other files) + **********************************************************************************************************************/ + +#endif + +/** @} (end addtogroup BOARD_RA8M1_EK_LEDS) */ diff --git a/bsp/renesas/ra8m1-ek/ra/board/ra8m1_ek/board_leds.h b/bsp/renesas/ra8m1-ek/ra/board/ra8m1_ek/board_leds.h new file mode 100644 index 000000000000..7f108308af5c --- /dev/null +++ b/bsp/renesas/ra8m1-ek/ra/board/ra8m1_ek/board_leds.h @@ -0,0 +1,75 @@ +/*********************************************************************************************************************** + * Copyright [2020-2023] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics America Inc. and may only be used with products + * of Renesas Electronics Corp. and its affiliates ("Renesas"). No other uses are authorized. Renesas products are + * sold pursuant to Renesas terms and conditions of sale. Purchasers are solely responsible for the selection and use + * of Renesas products and Renesas assumes no liability. No license, express or implied, to any intellectual property + * right is granted by Renesas. This software is protected under all applicable laws, including copyright laws. Renesas + * reserves the right to change or discontinue this software and/or this documentation. THE SOFTWARE AND DOCUMENTATION + * IS DELIVERED TO YOU "AS IS," AND RENESAS MAKES NO REPRESENTATIONS OR WARRANTIES, AND TO THE FULLEST EXTENT + * PERMISSIBLE UNDER APPLICABLE LAW, DISCLAIMS ALL WARRANTIES, WHETHER EXPLICITLY OR IMPLICITLY, INCLUDING WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT, WITH RESPECT TO THE SOFTWARE OR + * DOCUMENTATION. RENESAS SHALL HAVE NO LIABILITY ARISING OUT OF ANY SECURITY VULNERABILITY OR BREACH. TO THE MAXIMUM + * EXTENT PERMITTED BY LAW, IN NO EVENT WILL RENESAS BE LIABLE TO YOU IN CONNECTION WITH THE SOFTWARE OR DOCUMENTATION + * (OR ANY PERSON OR ENTITY CLAIMING RIGHTS DERIVED FROM YOU) FOR ANY LOSS, DAMAGES, OR CLAIMS WHATSOEVER, INCLUDING, + * WITHOUT LIMITATION, ANY DIRECT, CONSEQUENTIAL, SPECIAL, INDIRECT, PUNITIVE, OR INCIDENTAL DAMAGES; ANY LOST PROFITS, + * OTHER ECONOMIC DAMAGE, PROPERTY DAMAGE, OR PERSONAL INJURY; AND EVEN IF RENESAS HAS BEEN ADVISED OF THE POSSIBILITY + * OF SUCH LOSS, DAMAGES, CLAIMS OR COSTS. + **********************************************************************************************************************/ + +/*******************************************************************************************************************//** + * @ingroup BOARD_RA8M1_EK + * @defgroup BOARD_RA8M1_EK_LEDS Board LEDs + * @brief LED information for this board. + * + * This is code specific to the EK board. It includes info on the number of LEDs and which pins are they + * are on. + * + * @{ + **********************************************************************************************************************/ + +#ifndef BOARD_LEDS_H +#define BOARD_LEDS_H + +/** Common macro for FSP header files. There is also a corresponding FSP_FOOTER macro at the end of this file. */ +FSP_HEADER + +/*********************************************************************************************************************** + * Macro definitions + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Typedef definitions + **********************************************************************************************************************/ + +/** Information on how many LEDs and what pins they are on. */ +typedef struct st_bsp_leds +{ + uint16_t led_count; ///< The number of LEDs on this board + uint16_t const * p_leds; ///< Pointer to an array of IOPORT pins for controlling LEDs +} bsp_leds_t; + +/** Available user-controllable LEDs on this board. These enums can be can be used to index into the array of LED pins + * found in the bsp_leds_t structure. */ +typedef enum e_bsp_led +{ + BSP_LED_LED1, ///< LED1 + BSP_LED_LED2, ///< LED2 + BSP_LED_LED3, ///< LED3 +} bsp_led_t; + +/*********************************************************************************************************************** + * Exported global variables + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Public Functions + **********************************************************************************************************************/ + +/** Common macro for FSP header files. There is also a corresponding FSP_HEADER macro at the top of this file. */ +FSP_FOOTER + +#endif + +/** @} (end defgroup BOARD_RA8M1_EK_LEDS) */ diff --git a/bsp/renesas/ra8m1-ek/ra/fsp/inc/api/bsp_api.h b/bsp/renesas/ra8m1-ek/ra/fsp/inc/api/bsp_api.h new file mode 100644 index 000000000000..1b3472a35414 --- /dev/null +++ b/bsp/renesas/ra8m1-ek/ra/fsp/inc/api/bsp_api.h @@ -0,0 +1,111 @@ +/*********************************************************************************************************************** + * Copyright [2020-2023] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics America Inc. and may only be used with products + * of Renesas Electronics Corp. and its affiliates ("Renesas"). No other uses are authorized. Renesas products are + * sold pursuant to Renesas terms and conditions of sale. Purchasers are solely responsible for the selection and use + * of Renesas products and Renesas assumes no liability. No license, express or implied, to any intellectual property + * right is granted by Renesas. This software is protected under all applicable laws, including copyright laws. Renesas + * reserves the right to change or discontinue this software and/or this documentation. THE SOFTWARE AND DOCUMENTATION + * IS DELIVERED TO YOU "AS IS," AND RENESAS MAKES NO REPRESENTATIONS OR WARRANTIES, AND TO THE FULLEST EXTENT + * PERMISSIBLE UNDER APPLICABLE LAW, DISCLAIMS ALL WARRANTIES, WHETHER EXPLICITLY OR IMPLICITLY, INCLUDING WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT, WITH RESPECT TO THE SOFTWARE OR + * DOCUMENTATION. RENESAS SHALL HAVE NO LIABILITY ARISING OUT OF ANY SECURITY VULNERABILITY OR BREACH. TO THE MAXIMUM + * EXTENT PERMITTED BY LAW, IN NO EVENT WILL RENESAS BE LIABLE TO YOU IN CONNECTION WITH THE SOFTWARE OR DOCUMENTATION + * (OR ANY PERSON OR ENTITY CLAIMING RIGHTS DERIVED FROM YOU) FOR ANY LOSS, DAMAGES, OR CLAIMS WHATSOEVER, INCLUDING, + * WITHOUT LIMITATION, ANY DIRECT, CONSEQUENTIAL, SPECIAL, INDIRECT, PUNITIVE, OR INCIDENTAL DAMAGES; ANY LOST PROFITS, + * OTHER ECONOMIC DAMAGE, PROPERTY DAMAGE, OR PERSONAL INJURY; AND EVEN IF RENESAS HAS BEEN ADVISED OF THE POSSIBILITY + * OF SUCH LOSS, DAMAGES, CLAIMS OR COSTS. + **********************************************************************************************************************/ + +#ifndef BSP_API_H +#define BSP_API_H + +/*********************************************************************************************************************** + * Includes , "Project Includes" + **********************************************************************************************************************/ + +/* FSP Common Includes. */ +#include "fsp_common_api.h" + +/* Gets MCU configuration information. */ +#include "bsp_cfg.h" + +#if defined(__GNUC__) && !defined(__ARMCC_VERSION) + +/* Store warning settings for 'conversion' and 'sign-conversion' to as specified on command line. */ + #pragma GCC diagnostic push + +/* CMSIS-CORE currently generates 2 warnings when compiling with GCC. One in core_cmInstr.h and one in core_cm4_simd.h. + * We are not modifying these files so we will ignore these warnings temporarily. */ + #pragma GCC diagnostic ignored "-Wconversion" + #pragma GCC diagnostic ignored "-Wsign-conversion" +#endif + +/* Vector information for this project. This is generated by the tooling. */ +#include "../../src/bsp/mcu/all/bsp_exceptions.h" +#include "vector_data.h" + +/* CMSIS-CORE Renesas Device Files. Must come after bsp_feature.h, which is included in bsp_cfg.h. */ +#include "../../src/bsp/cmsis/Device/RENESAS/Include/renesas.h" +#include "../../src/bsp/cmsis/Device/RENESAS/Include/system.h" + +#if defined(__GNUC__) && !defined(__ARMCC_VERSION) + +/* Restore warning settings for 'conversion' and 'sign-conversion' to as specified on command line. */ + #pragma GCC diagnostic pop +#endif + +#if defined(BSP_API_OVERRIDE) + #include BSP_API_OVERRIDE +#else + +/* BSP Common Includes. */ + #include "../../src/bsp/mcu/all/bsp_common.h" + +/* BSP MCU Specific Includes. */ + #include "../../src/bsp/mcu/all/bsp_register_protection.h" + #include "../../src/bsp/mcu/all/bsp_irq.h" + #include "../../src/bsp/mcu/all/bsp_io.h" + #include "../../src/bsp/mcu/all/bsp_group_irq.h" + #include "../../src/bsp/mcu/all/bsp_clocks.h" + #include "../../src/bsp/mcu/all/bsp_module_stop.h" + #include "../../src/bsp/mcu/all/bsp_security.h" + +/* Factory MCU information. */ + #include "../../inc/fsp_features.h" + +/* BSP Common Includes (Other than bsp_common.h) */ + #include "../../src/bsp/mcu/all/bsp_delay.h" + #include "../../src/bsp/mcu/all/bsp_mcu_api.h" + +#endif + +/** Common macro for FSP header files. There is also a corresponding FSP_FOOTER macro at the end of this file. */ +FSP_HEADER + +/*********************************************************************************************************************** + * Typedef definitions + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Exported global variables + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Exported global functions (to be accessed by other files) + **********************************************************************************************************************/ + +/*******************************************************************************************************************//** + * @addtogroup BSP_MCU + * @{ + **********************************************************************************************************************/ + +fsp_err_t R_FSP_VersionGet(fsp_pack_version_t * const p_version); + +/** @} (end addtogroup BSP_MCU) */ + +/** Common macro for FSP header files. There is also a corresponding FSP_HEADER macro at the top of this file. */ +FSP_FOOTER + +#endif diff --git a/bsp/renesas/ra8m1-ek/ra/fsp/inc/api/fsp_common_api.h b/bsp/renesas/ra8m1-ek/ra/fsp/inc/api/fsp_common_api.h new file mode 100644 index 000000000000..0ab2ece3bede --- /dev/null +++ b/bsp/renesas/ra8m1-ek/ra/fsp/inc/api/fsp_common_api.h @@ -0,0 +1,387 @@ +/*********************************************************************************************************************** + * Copyright [2020-2023] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics America Inc. and may only be used with products + * of Renesas Electronics Corp. and its affiliates ("Renesas"). No other uses are authorized. Renesas products are + * sold pursuant to Renesas terms and conditions of sale. Purchasers are solely responsible for the selection and use + * of Renesas products and Renesas assumes no liability. No license, express or implied, to any intellectual property + * right is granted by Renesas. This software is protected under all applicable laws, including copyright laws. Renesas + * reserves the right to change or discontinue this software and/or this documentation. THE SOFTWARE AND DOCUMENTATION + * IS DELIVERED TO YOU "AS IS," AND RENESAS MAKES NO REPRESENTATIONS OR WARRANTIES, AND TO THE FULLEST EXTENT + * PERMISSIBLE UNDER APPLICABLE LAW, DISCLAIMS ALL WARRANTIES, WHETHER EXPLICITLY OR IMPLICITLY, INCLUDING WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT, WITH RESPECT TO THE SOFTWARE OR + * DOCUMENTATION. RENESAS SHALL HAVE NO LIABILITY ARISING OUT OF ANY SECURITY VULNERABILITY OR BREACH. TO THE MAXIMUM + * EXTENT PERMITTED BY LAW, IN NO EVENT WILL RENESAS BE LIABLE TO YOU IN CONNECTION WITH THE SOFTWARE OR DOCUMENTATION + * (OR ANY PERSON OR ENTITY CLAIMING RIGHTS DERIVED FROM YOU) FOR ANY LOSS, DAMAGES, OR CLAIMS WHATSOEVER, INCLUDING, + * WITHOUT LIMITATION, ANY DIRECT, CONSEQUENTIAL, SPECIAL, INDIRECT, PUNITIVE, OR INCIDENTAL DAMAGES; ANY LOST PROFITS, + * OTHER ECONOMIC DAMAGE, PROPERTY DAMAGE, OR PERSONAL INJURY; AND EVEN IF RENESAS HAS BEEN ADVISED OF THE POSSIBILITY + * OF SUCH LOSS, DAMAGES, CLAIMS OR COSTS. + **********************************************************************************************************************/ + +#ifndef FSP_COMMON_API_H +#define FSP_COMMON_API_H + +/*********************************************************************************************************************** + * Includes + **********************************************************************************************************************/ +#include +#include + +/* Includes FSP version macros. */ +#include "fsp_version.h" + +/*******************************************************************************************************************//** + * @ingroup RENESAS_COMMON + * @defgroup RENESAS_ERROR_CODES Common Error Codes + * All FSP modules share these common error codes. + * @{ + **********************************************************************************************************************/ + +/********************************************************************************************************************** + * Macro definitions + **********************************************************************************************************************/ + +/** This macro is used to suppress compiler messages about a parameter not being used in a function. The nice thing + * about using this implementation is that it does not take any extra RAM or ROM. */ + +#define FSP_PARAMETER_NOT_USED(p) (void) ((p)) + +/** Determine if a C++ compiler is being used. + * If so, ensure that standard C is used to process the API information. */ +#if defined(__cplusplus) + #define FSP_CPP_HEADER extern "C" { + #define FSP_CPP_FOOTER } +#else + #define FSP_CPP_HEADER + #define FSP_CPP_FOOTER +#endif + +/** FSP Header and Footer definitions */ +#define FSP_HEADER FSP_CPP_HEADER +#define FSP_FOOTER FSP_CPP_FOOTER + +/* Common macro for FSP header files. There is also a corresponding FSP_FOOTER macro at the end of this file. */ +FSP_HEADER + +/** Macro to be used when argument to function is ignored since function call is NSC and the parameter is statically + * defined on the Secure side. */ +#define FSP_SECURE_ARGUMENT (NULL) + +/********************************************************************************************************************** + * Typedef definitions + **********************************************************************************************************************/ + +/** Common error codes */ +typedef enum e_fsp_err +{ + FSP_SUCCESS = 0, + + FSP_ERR_ASSERTION = 1, ///< A critical assertion has failed + FSP_ERR_INVALID_POINTER = 2, ///< Pointer points to invalid memory location + FSP_ERR_INVALID_ARGUMENT = 3, ///< Invalid input parameter + FSP_ERR_INVALID_CHANNEL = 4, ///< Selected channel does not exist + FSP_ERR_INVALID_MODE = 5, ///< Unsupported or incorrect mode + FSP_ERR_UNSUPPORTED = 6, ///< Selected mode not supported by this API + FSP_ERR_NOT_OPEN = 7, ///< Requested channel is not configured or API not open + FSP_ERR_IN_USE = 8, ///< Channel/peripheral is running/busy + FSP_ERR_OUT_OF_MEMORY = 9, ///< Allocate more memory in the driver's cfg.h + FSP_ERR_HW_LOCKED = 10, ///< Hardware is locked + FSP_ERR_IRQ_BSP_DISABLED = 11, ///< IRQ not enabled in BSP + FSP_ERR_OVERFLOW = 12, ///< Hardware overflow + FSP_ERR_UNDERFLOW = 13, ///< Hardware underflow + FSP_ERR_ALREADY_OPEN = 14, ///< Requested channel is already open in a different configuration + FSP_ERR_APPROXIMATION = 15, ///< Could not set value to exact result + FSP_ERR_CLAMPED = 16, ///< Value had to be limited for some reason + FSP_ERR_INVALID_RATE = 17, ///< Selected rate could not be met + FSP_ERR_ABORTED = 18, ///< An operation was aborted + FSP_ERR_NOT_ENABLED = 19, ///< Requested operation is not enabled + FSP_ERR_TIMEOUT = 20, ///< Timeout error + FSP_ERR_INVALID_BLOCKS = 21, ///< Invalid number of blocks supplied + FSP_ERR_INVALID_ADDRESS = 22, ///< Invalid address supplied + FSP_ERR_INVALID_SIZE = 23, ///< Invalid size/length supplied for operation + FSP_ERR_WRITE_FAILED = 24, ///< Write operation failed + FSP_ERR_ERASE_FAILED = 25, ///< Erase operation failed + FSP_ERR_INVALID_CALL = 26, ///< Invalid function call is made + FSP_ERR_INVALID_HW_CONDITION = 27, ///< Detected hardware is in invalid condition + FSP_ERR_INVALID_FACTORY_FLASH = 28, ///< Factory flash is not available on this MCU + FSP_ERR_INVALID_STATE = 30, ///< API or command not valid in the current state + FSP_ERR_NOT_ERASED = 31, ///< Erase verification failed + FSP_ERR_SECTOR_RELEASE_FAILED = 32, ///< Sector release failed + FSP_ERR_NOT_INITIALIZED = 33, ///< Required initialization not complete + FSP_ERR_NOT_FOUND = 34, ///< The requested item could not be found + FSP_ERR_NO_CALLBACK_MEMORY = 35, ///< Non-secure callback memory not provided for non-secure callback + FSP_ERR_BUFFER_EMPTY = 36, ///< No data available in buffer + FSP_ERR_INVALID_DATA = 37, ///< Accuracy of data is not guaranteed + + /* Start of RTOS only error codes */ + FSP_ERR_INTERNAL = 100, ///< Internal error + FSP_ERR_WAIT_ABORTED = 101, ///< Wait aborted + + /* Start of UART specific */ + FSP_ERR_FRAMING = 200, ///< Framing error occurs + FSP_ERR_BREAK_DETECT = 201, ///< Break signal detects + FSP_ERR_PARITY = 202, ///< Parity error occurs + FSP_ERR_RXBUF_OVERFLOW = 203, ///< Receive queue overflow + FSP_ERR_QUEUE_UNAVAILABLE = 204, ///< Can't open s/w queue + FSP_ERR_INSUFFICIENT_SPACE = 205, ///< Not enough space in transmission circular buffer + FSP_ERR_INSUFFICIENT_DATA = 206, ///< Not enough data in receive circular buffer + + /* Start of SPI specific */ + FSP_ERR_TRANSFER_ABORTED = 300, ///< The data transfer was aborted. + FSP_ERR_MODE_FAULT = 301, ///< Mode fault error. + FSP_ERR_READ_OVERFLOW = 302, ///< Read overflow. + FSP_ERR_SPI_PARITY = 303, ///< Parity error. + FSP_ERR_OVERRUN = 304, ///< Overrun error. + + /* Start of CGC Specific */ + FSP_ERR_CLOCK_INACTIVE = 400, ///< Inactive clock specified as system clock. + FSP_ERR_CLOCK_ACTIVE = 401, ///< Active clock source cannot be modified without stopping first. + FSP_ERR_NOT_STABILIZED = 403, ///< Clock has not stabilized after its been turned on/off + FSP_ERR_PLL_SRC_INACTIVE = 404, ///< PLL initialization attempted when PLL source is turned off + FSP_ERR_OSC_STOP_DET_ENABLED = 405, ///< Illegal attempt to stop LOCO when Oscillation stop is enabled + FSP_ERR_OSC_STOP_DETECTED = 406, ///< The Oscillation stop detection status flag is set + FSP_ERR_OSC_STOP_CLOCK_ACTIVE = 407, ///< Attempt to clear Oscillation Stop Detect Status with PLL/MAIN_OSC active + FSP_ERR_CLKOUT_EXCEEDED = 408, ///< Output on target output clock pin exceeds maximum supported limit + FSP_ERR_USB_MODULE_ENABLED = 409, ///< USB clock configure request with USB Module enabled + FSP_ERR_HARDWARE_TIMEOUT = 410, ///< A register read or write timed out + FSP_ERR_LOW_VOLTAGE_MODE = 411, ///< Invalid clock setting attempted in low voltage mode + + /* Start of FLASH Specific */ + FSP_ERR_PE_FAILURE = 500, ///< Unable to enter Programming mode. + FSP_ERR_CMD_LOCKED = 501, ///< Peripheral in command locked state + FSP_ERR_FCLK = 502, ///< FCLK must be >= 4 MHz + FSP_ERR_INVALID_LINKED_ADDRESS = 503, ///< Function or data are linked at an invalid region of memory + FSP_ERR_BLANK_CHECK_FAILED = 504, ///< Blank check operation failed + + /* Start of CAC Specific */ + FSP_ERR_INVALID_CAC_REF_CLOCK = 600, ///< Measured clock rate < reference clock rate + + /* Start of IIRFA Specific */ + FSP_ERR_INVALID_RESULT = 700, ///< The result of one or more calculations was +/- infinity. + + /* Start of GLCD Specific */ + FSP_ERR_CLOCK_GENERATION = 1000, ///< Clock cannot be specified as system clock + FSP_ERR_INVALID_TIMING_SETTING = 1001, ///< Invalid timing parameter + FSP_ERR_INVALID_LAYER_SETTING = 1002, ///< Invalid layer parameter + FSP_ERR_INVALID_ALIGNMENT = 1003, ///< Invalid memory alignment found + FSP_ERR_INVALID_GAMMA_SETTING = 1004, ///< Invalid gamma correction parameter + FSP_ERR_INVALID_LAYER_FORMAT = 1005, ///< Invalid color format in layer + FSP_ERR_INVALID_UPDATE_TIMING = 1006, ///< Invalid timing for register update + FSP_ERR_INVALID_CLUT_ACCESS = 1007, ///< Invalid access to CLUT entry + FSP_ERR_INVALID_FADE_SETTING = 1008, ///< Invalid fade-in/fade-out setting + FSP_ERR_INVALID_BRIGHTNESS_SETTING = 1009, ///< Invalid gamma correction parameter + + /* Start of JPEG Specific */ + FSP_ERR_JPEG_ERR = 1100, ///< JPEG error + FSP_ERR_JPEG_SOI_NOT_DETECTED = 1101, ///< SOI not detected until EOI detected. + FSP_ERR_JPEG_SOF1_TO_SOFF_DETECTED = 1102, ///< SOF1 to SOFF detected. + FSP_ERR_JPEG_UNSUPPORTED_PIXEL_FORMAT = 1103, ///< Unprovided pixel format detected. + FSP_ERR_JPEG_SOF_ACCURACY_ERROR = 1104, ///< SOF accuracy error: other than 8 detected. + FSP_ERR_JPEG_DQT_ACCURACY_ERROR = 1105, ///< DQT accuracy error: other than 0 detected. + FSP_ERR_JPEG_COMPONENT_ERROR1 = 1106, ///< Component error 1: the number of SOF0 header components detected is other than 1, 3, or 4. + FSP_ERR_JPEG_COMPONENT_ERROR2 = 1107, ///< Component error 2: the number of components differs between SOF0 header and SOS. + FSP_ERR_JPEG_SOF0_DQT_DHT_NOT_DETECTED = 1108, ///< SOF0, DQT, and DHT not detected when SOS detected. + FSP_ERR_JPEG_SOS_NOT_DETECTED = 1109, ///< SOS not detected: SOS not detected until EOI detected. + FSP_ERR_JPEG_EOI_NOT_DETECTED = 1110, ///< EOI not detected (default) + FSP_ERR_JPEG_RESTART_INTERVAL_DATA_NUMBER_ERROR = 1111, ///< Restart interval data number error detected. + FSP_ERR_JPEG_IMAGE_SIZE_ERROR = 1112, ///< Image size error detected. + FSP_ERR_JPEG_LAST_MCU_DATA_NUMBER_ERROR = 1113, ///< Last MCU data number error detected. + FSP_ERR_JPEG_BLOCK_DATA_NUMBER_ERROR = 1114, ///< Block data number error detected. + FSP_ERR_JPEG_BUFFERSIZE_NOT_ENOUGH = 1115, ///< User provided buffer size not enough + FSP_ERR_JPEG_UNSUPPORTED_IMAGE_SIZE = 1116, ///< JPEG Image size is not aligned with MCU + + /* Start of touch panel framework specific */ + FSP_ERR_CALIBRATE_FAILED = 1200, ///< Calibration failed + + /* Start of IIRFA specific */ + FSP_ERR_IIRFA_ECC_1BIT = 1300, ///< 1-bit ECC error detected + FSP_ERR_IIRFA_ECC_2BIT = 1301, ///< 2-bit ECC error detected + + /* Start of IP specific */ + FSP_ERR_IP_HARDWARE_NOT_PRESENT = 1400, ///< Requested IP does not exist on this device + FSP_ERR_IP_UNIT_NOT_PRESENT = 1401, ///< Requested unit does not exist on this device + FSP_ERR_IP_CHANNEL_NOT_PRESENT = 1402, ///< Requested channel does not exist on this device + + /* Start of USB specific */ + FSP_ERR_USB_FAILED = 1500, + FSP_ERR_USB_BUSY = 1501, + FSP_ERR_USB_SIZE_SHORT = 1502, + FSP_ERR_USB_SIZE_OVER = 1503, + FSP_ERR_USB_NOT_OPEN = 1504, + FSP_ERR_USB_NOT_SUSPEND = 1505, + FSP_ERR_USB_PARAMETER = 1506, + + /* Start of Message framework specific */ + FSP_ERR_NO_MORE_BUFFER = 2000, ///< No more buffer found in the memory block pool + FSP_ERR_ILLEGAL_BUFFER_ADDRESS = 2001, ///< Buffer address is out of block memory pool + FSP_ERR_INVALID_WORKBUFFER_SIZE = 2002, ///< Work buffer size is invalid + FSP_ERR_INVALID_MSG_BUFFER_SIZE = 2003, ///< Message buffer size is invalid + FSP_ERR_TOO_MANY_BUFFERS = 2004, ///< Number of buffer is too many + FSP_ERR_NO_SUBSCRIBER_FOUND = 2005, ///< No message subscriber found + FSP_ERR_MESSAGE_QUEUE_EMPTY = 2006, ///< No message found in the message queue + FSP_ERR_MESSAGE_QUEUE_FULL = 2007, ///< No room for new message in the message queue + FSP_ERR_ILLEGAL_SUBSCRIBER_LISTS = 2008, ///< Message subscriber lists is illegal + FSP_ERR_BUFFER_RELEASED = 2009, ///< Buffer has been released + + /* Start of 2DG Driver specific */ + FSP_ERR_D2D_ERROR_INIT = 3000, ///< D/AVE 2D has an error in the initialization + FSP_ERR_D2D_ERROR_DEINIT = 3001, ///< D/AVE 2D has an error in the initialization + FSP_ERR_D2D_ERROR_RENDERING = 3002, ///< D/AVE 2D has an error in the rendering + FSP_ERR_D2D_ERROR_SIZE = 3003, ///< D/AVE 2D has an error in the rendering + + /* Start of ETHER Driver specific */ + FSP_ERR_ETHER_ERROR_NO_DATA = 4000, ///< No Data in Receive buffer. + FSP_ERR_ETHER_ERROR_LINK = 4001, ///< ETHERC/EDMAC has an error in the Auto-negotiation + FSP_ERR_ETHER_ERROR_MAGIC_PACKET_MODE = 4002, ///< As a Magic Packet is being detected, and transmission/reception is not enabled + FSP_ERR_ETHER_ERROR_TRANSMIT_BUFFER_FULL = 4003, ///< Transmit buffer is not empty + FSP_ERR_ETHER_ERROR_FILTERING = 4004, ///< Detect multicast frame when multicast frame filtering enable + FSP_ERR_ETHER_ERROR_PHY_COMMUNICATION = 4005, ///< ETHERC/EDMAC has an error in the phy communication + FSP_ERR_ETHER_RECEIVE_BUFFER_ACTIVE = 4006, ///< Receive buffer is active. + + /* Start of ETHER_PHY Driver specific */ + FSP_ERR_ETHER_PHY_ERROR_LINK = 5000, ///< PHY is not link up. + FSP_ERR_ETHER_PHY_NOT_READY = 5001, ///< PHY has an error in the Auto-negotiation + + /* Start of BYTEQ library specific */ + FSP_ERR_QUEUE_FULL = 10000, ///< Queue is full, cannot queue another data + FSP_ERR_QUEUE_EMPTY = 10001, ///< Queue is empty, no data to dequeue + + /* Start of CTSU Driver specific */ + FSP_ERR_CTSU_SCANNING = 6000, ///< Scanning. + FSP_ERR_CTSU_NOT_GET_DATA = 6001, ///< Not processed previous scan data. + FSP_ERR_CTSU_INCOMPLETE_TUNING = 6002, ///< Incomplete initial offset tuning. + FSP_ERR_CTSU_DIAG_NOT_YET = 6003, ///< Diagnosis of data collected no yet. + FSP_ERR_CTSU_DIAG_LDO_OVER_VOLTAGE = 6004, ///< Diagnosis of LDO over voltage failed. + FSP_ERR_CTSU_DIAG_CCO_HIGH = 6005, ///< Diagnosis of CCO into 19.2uA failed. + FSP_ERR_CTSU_DIAG_CCO_LOW = 6006, ///< Diagnosis of CCO into 2.4uA failed. + FSP_ERR_CTSU_DIAG_SSCG = 6007, ///< Diagnosis of SSCG frequency failed. + FSP_ERR_CTSU_DIAG_DAC = 6008, ///< Diagnosis of non-touch count value failed. + FSP_ERR_CTSU_DIAG_OUTPUT_VOLTAGE = 6009, ///< Diagnosis of LDO output voltage failed. + FSP_ERR_CTSU_DIAG_OVER_VOLTAGE = 6010, ///< Diagnosis of over voltage detection circuit failed. + FSP_ERR_CTSU_DIAG_OVER_CURRENT = 6011, ///< Diagnosis of over current detection circuit failed. + FSP_ERR_CTSU_DIAG_LOAD_RESISTANCE = 6012, ///< Diagnosis of LDO internal resistance value failed. + FSP_ERR_CTSU_DIAG_CURRENT_SOURCE = 6013, ///< Diagnosis of Current source value failed. + FSP_ERR_CTSU_DIAG_SENSCLK_GAIN = 6014, ///< Diagnosis of SENSCLK frequency gain failed. + FSP_ERR_CTSU_DIAG_SUCLK_GAIN = 6015, ///< Diagnosis of SUCLK frequency gain failed. + FSP_ERR_CTSU_DIAG_CLOCK_RECOVERY = 6016, ///< Diagnosis of SUCLK clock recovery function failed. + FSP_ERR_CTSU_DIAG_CFC_GAIN = 6017, ///< Diagnosis of CFC oscillator gain failed. + + /* Start of SDMMC specific */ + FSP_ERR_CARD_INIT_FAILED = 40000, ///< SD card or eMMC device failed to initialize. + FSP_ERR_CARD_NOT_INSERTED = 40001, ///< SD card not installed. + FSP_ERR_DEVICE_BUSY = 40002, ///< Device is holding DAT0 low or another operation is ongoing. + FSP_ERR_CARD_NOT_INITIALIZED = 40004, ///< SD card was removed. + FSP_ERR_CARD_WRITE_PROTECTED = 40005, ///< Media is write protected. + FSP_ERR_TRANSFER_BUSY = 40006, ///< Transfer in progress. + FSP_ERR_RESPONSE = 40007, ///< Card did not respond or responded with an error. + + /* Start of FX_IO specific */ + FSP_ERR_MEDIA_FORMAT_FAILED = 50000, ///< Media format failed. + FSP_ERR_MEDIA_OPEN_FAILED = 50001, ///< Media open failed. + + /* Start of CAN specific */ + FSP_ERR_CAN_DATA_UNAVAILABLE = 60000, ///< No data available. + FSP_ERR_CAN_MODE_SWITCH_FAILED = 60001, ///< Switching operation modes failed. + FSP_ERR_CAN_INIT_FAILED = 60002, ///< Hardware initialization failed. + FSP_ERR_CAN_TRANSMIT_NOT_READY = 60003, ///< Transmit in progress. + FSP_ERR_CAN_RECEIVE_MAILBOX = 60004, ///< Mailbox is setup as a receive mailbox. + FSP_ERR_CAN_TRANSMIT_MAILBOX = 60005, ///< Mailbox is setup as a transmit mailbox. + FSP_ERR_CAN_MESSAGE_LOST = 60006, ///< Receive message has been overwritten or overrun. + FSP_ERR_CAN_TRANSMIT_FIFO_FULL = 60007, ///< Transmit FIFO is full. + + /* Start of SF_WIFI Specific */ + FSP_ERR_WIFI_CONFIG_FAILED = 70000, ///< WiFi module Configuration failed. + FSP_ERR_WIFI_INIT_FAILED = 70001, ///< WiFi module initialization failed. + FSP_ERR_WIFI_TRANSMIT_FAILED = 70002, ///< Transmission failed + FSP_ERR_WIFI_INVALID_MODE = 70003, ///< API called when provisioned in client mode + FSP_ERR_WIFI_FAILED = 70004, ///< WiFi Failed. + FSP_ERR_WIFI_SCAN_COMPLETE = 70005, ///< Wifi scan has completed. + FSP_ERR_WIFI_AP_NOT_CONNECTED = 70006, ///< WiFi module is not connected to access point + FSP_ERR_WIFI_UNKNOWN_AT_CMD = 70007, ///< DA16200 Unknown AT command Error + FSP_ERR_WIFI_INSUF_PARAM = 70008, ///< DA16200 Insufficient parameter + FSP_ERR_WIFI_TOO_MANY_PARAMS = 70009, ///< DA16200 Too many parameters + FSP_ERR_WIFI_INV_PARAM_VAL = 70010, ///< DA16200 Wrong parameter value + FSP_ERR_WIFI_NO_RESULT = 70011, ///< DA16200 No result + FSP_ERR_WIFI_RSP_BUF_OVFLW = 70012, ///< DA16200 Response buffer overflow + FSP_ERR_WIFI_FUNC_NOT_CONFIG = 70013, ///< DA16200 Function is not configured + FSP_ERR_WIFI_NVRAM_WR_FAIL = 70014, ///< DA16200 NVRAM write failure + FSP_ERR_WIFI_RET_MEM_WR_FAIL = 70015, ///< DA16200 Retention memory write failure + FSP_ERR_WIFI_UNKNOWN_ERR = 70016, ///< DA16200 unknown error + + /* Start of SF_CELLULAR Specific */ + FSP_ERR_CELLULAR_CONFIG_FAILED = 80000, ///< Cellular module Configuration failed. + FSP_ERR_CELLULAR_INIT_FAILED = 80001, ///< Cellular module initialization failed. + FSP_ERR_CELLULAR_TRANSMIT_FAILED = 80002, ///< Transmission failed + FSP_ERR_CELLULAR_FW_UPTODATE = 80003, ///< Firmware is uptodate + FSP_ERR_CELLULAR_FW_UPGRADE_FAILED = 80004, ///< Firmware upgrade failed + FSP_ERR_CELLULAR_FAILED = 80005, ///< Cellular Failed. + FSP_ERR_CELLULAR_INVALID_STATE = 80006, ///< API Called in invalid state. + FSP_ERR_CELLULAR_REGISTRATION_FAILED = 80007, ///< Cellular Network registration failed + + /* Start of SF_BLE specific */ + FSP_ERR_BLE_FAILED = 90001, ///< BLE operation failed + FSP_ERR_BLE_INIT_FAILED = 90002, ///< BLE device initialization failed + FSP_ERR_BLE_CONFIG_FAILED = 90003, ///< BLE device configuration failed + FSP_ERR_BLE_PRF_ALREADY_ENABLED = 90004, ///< BLE device Profile already enabled + FSP_ERR_BLE_PRF_NOT_ENABLED = 90005, ///< BLE device not enabled + + /* Start of SF_BLE_ABS specific */ + FSP_ERR_BLE_ABS_INVALID_OPERATION = 91001, ///< Invalid operation is executed. + FSP_ERR_BLE_ABS_NOT_FOUND = 91002, ///< Valid data or free space is not found. + + /* Start of Crypto specific (0x10000) @note Refer to sf_cryoto_err.h for Crypto error code. */ + FSP_ERR_CRYPTO_CONTINUE = 0x10000, ///< Continue executing function + FSP_ERR_CRYPTO_SCE_RESOURCE_CONFLICT = 0x10001, ///< Hardware resource busy + FSP_ERR_CRYPTO_SCE_FAIL = 0x10002, ///< Internal I/O buffer is not empty + FSP_ERR_CRYPTO_SCE_HRK_INVALID_INDEX = 0x10003, ///< Invalid index + FSP_ERR_CRYPTO_SCE_RETRY = 0x10004, ///< Retry + FSP_ERR_CRYPTO_SCE_VERIFY_FAIL = 0x10005, ///< Verify is failed + FSP_ERR_CRYPTO_SCE_ALREADY_OPEN = 0x10006, ///< HW SCE module is already opened + FSP_ERR_CRYPTO_NOT_OPEN = 0x10007, ///< Hardware module is not initialized + FSP_ERR_CRYPTO_UNKNOWN = 0x10008, ///< Some unknown error occurred + FSP_ERR_CRYPTO_NULL_POINTER = 0x10009, ///< Null pointer input as a parameter + FSP_ERR_CRYPTO_NOT_IMPLEMENTED = 0x1000a, ///< Algorithm/size not implemented + FSP_ERR_CRYPTO_RNG_INVALID_PARAM = 0x1000b, ///< An invalid parameter is specified + FSP_ERR_CRYPTO_RNG_FATAL_ERROR = 0x1000c, ///< A fatal error occurred + FSP_ERR_CRYPTO_INVALID_SIZE = 0x1000d, ///< Size specified is invalid + FSP_ERR_CRYPTO_INVALID_STATE = 0x1000e, ///< Function used in an valid state + FSP_ERR_CRYPTO_ALREADY_OPEN = 0x1000f, ///< control block is already opened + FSP_ERR_CRYPTO_INSTALL_KEY_FAILED = 0x10010, ///< Specified input key is invalid. + FSP_ERR_CRYPTO_AUTHENTICATION_FAILED = 0x10011, ///< Authentication failed + FSP_ERR_CRYPTO_SCE_KEY_SET_FAIL = 0x10012, ///< Failure to Init Cipher + FSP_ERR_CRYPTO_SCE_AUTHENTICATION = 0x10013, ///< Authentication failed + FSP_ERR_CRYPTO_SCE_PARAMETER = 0x10014, ///< Input date is illegal. + FSP_ERR_CRYPTO_SCE_PROHIBIT_FUNCTION = 0x10015, ///< An invalid function call occurred. + + /* Start of SF_CRYPTO specific */ + FSP_ERR_CRYPTO_COMMON_NOT_OPENED = 0x20000, ///< Crypto Framework Common is not opened + FSP_ERR_CRYPTO_HAL_ERROR = 0x20001, ///< Cryoto HAL module returned an error + FSP_ERR_CRYPTO_KEY_BUF_NOT_ENOUGH = 0x20002, ///< Key buffer size is not enough to generate a key + FSP_ERR_CRYPTO_BUF_OVERFLOW = 0x20003, ///< Attempt to write data larger than what the buffer can hold + FSP_ERR_CRYPTO_INVALID_OPERATION_MODE = 0x20004, ///< Invalid operation mode. + FSP_ERR_MESSAGE_TOO_LONG = 0x20005, ///< Message for RSA encryption is too long. + FSP_ERR_RSA_DECRYPTION_ERROR = 0x20006, ///< RSA Decryption error. + + /** @note SF_CRYPTO APIs may return an error code starting from 0x10000 which is of Crypto module. + * Refer to sf_cryoto_err.h for Crypto error codes. + */ + + /* Start of Sensor specific */ + FSP_ERR_SENSOR_INVALID_DATA = 0x30000, ///< Data is invalid. + FSP_ERR_SENSOR_IN_STABILIZATION = 0x30001, ///< Sensor is stabilizing. + FSP_ERR_SENSOR_MEASUREMENT_NOT_FINISHED = 0x30002, ///< Measurement is not finished. + + /* Start of COMMS specific */ + FSP_ERR_COMMS_BUS_NOT_OPEN = 0x40000, ///< Bus is not open. +} fsp_err_t; + +/** @} */ + +/*********************************************************************************************************************** + * Function prototypes + **********************************************************************************************************************/ + +/* Common macro for FSP header files. There is also a corresponding FSP_HEADER macro at the top of this file. */ +FSP_FOOTER + +#endif diff --git a/bsp/renesas/ra8m1-ek/ra/fsp/inc/api/r_ioport_api.h b/bsp/renesas/ra8m1-ek/ra/fsp/inc/api/r_ioport_api.h new file mode 100644 index 000000000000..ad9106e9e2d8 --- /dev/null +++ b/bsp/renesas/ra8m1-ek/ra/fsp/inc/api/r_ioport_api.h @@ -0,0 +1,206 @@ +/*********************************************************************************************************************** + * Copyright [2020-2023] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics America Inc. and may only be used with products + * of Renesas Electronics Corp. and its affiliates ("Renesas"). No other uses are authorized. Renesas products are + * sold pursuant to Renesas terms and conditions of sale. Purchasers are solely responsible for the selection and use + * of Renesas products and Renesas assumes no liability. No license, express or implied, to any intellectual property + * right is granted by Renesas. This software is protected under all applicable laws, including copyright laws. Renesas + * reserves the right to change or discontinue this software and/or this documentation. THE SOFTWARE AND DOCUMENTATION + * IS DELIVERED TO YOU "AS IS," AND RENESAS MAKES NO REPRESENTATIONS OR WARRANTIES, AND TO THE FULLEST EXTENT + * PERMISSIBLE UNDER APPLICABLE LAW, DISCLAIMS ALL WARRANTIES, WHETHER EXPLICITLY OR IMPLICITLY, INCLUDING WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT, WITH RESPECT TO THE SOFTWARE OR + * DOCUMENTATION. RENESAS SHALL HAVE NO LIABILITY ARISING OUT OF ANY SECURITY VULNERABILITY OR BREACH. TO THE MAXIMUM + * EXTENT PERMITTED BY LAW, IN NO EVENT WILL RENESAS BE LIABLE TO YOU IN CONNECTION WITH THE SOFTWARE OR DOCUMENTATION + * (OR ANY PERSON OR ENTITY CLAIMING RIGHTS DERIVED FROM YOU) FOR ANY LOSS, DAMAGES, OR CLAIMS WHATSOEVER, INCLUDING, + * WITHOUT LIMITATION, ANY DIRECT, CONSEQUENTIAL, SPECIAL, INDIRECT, PUNITIVE, OR INCIDENTAL DAMAGES; ANY LOST PROFITS, + * OTHER ECONOMIC DAMAGE, PROPERTY DAMAGE, OR PERSONAL INJURY; AND EVEN IF RENESAS HAS BEEN ADVISED OF THE POSSIBILITY + * OF SUCH LOSS, DAMAGES, CLAIMS OR COSTS. + **********************************************************************************************************************/ + +/*******************************************************************************************************************//** + * @ingroup RENESAS_INTERFACES + * @defgroup IOPORT_API I/O Port Interface + * @brief Interface for accessing I/O ports and configuring I/O functionality. + * + * @section IOPORT_API_SUMMARY Summary + * The IOPort shared interface provides the ability to access the IOPorts of a device at both bit and port level. + * Port and pin direction can be changed. + * + * + * @{ + **********************************************************************************************************************/ + +#ifndef R_IOPORT_API_H +#define R_IOPORT_API_H + +/*********************************************************************************************************************** + * Includes + **********************************************************************************************************************/ + +/* Common error codes and definitions. */ +#include "bsp_api.h" + +/* Common macro for FSP header files. There is also a corresponding FSP_FOOTER macro at the end of this file. */ +FSP_HEADER + +/********************************************************************************************************************** + * Macro definitions + **********************************************************************************************************************/ + +/********************************************************************************************************************** + * Typedef definitions + **********************************************************************************************************************/ +#ifndef BSP_OVERRIDE_IOPORT_SIZE_T + +/** IO port type used with ports */ +typedef uint16_t ioport_size_t; ///< IO port size +#endif + +/** Pin identifier and pin configuration value */ +typedef struct st_ioport_pin_cfg +{ + uint32_t pin_cfg; ///< Pin configuration - Use ioport_cfg_options_t parameters to configure + bsp_io_port_pin_t pin; ///< Pin identifier +} ioport_pin_cfg_t; + +/** Multiple pin configuration data for loading into registers by R_IOPORT_Open() */ +typedef struct st_ioport_cfg +{ + uint16_t number_of_pins; ///< Number of pins for which there is configuration data + ioport_pin_cfg_t const * p_pin_cfg_data; ///< Pin configuration data + const void * p_extend; ///< Pointer to hardware extend configuration +} ioport_cfg_t; + +/** IOPORT control block. Allocate an instance specific control block to pass into the IOPORT API calls. + */ +typedef void ioport_ctrl_t; + +/** IOPort driver structure. IOPort functions implemented at the HAL layer will follow this API. */ +typedef struct st_ioport_api +{ + /** Initialize internal driver data and initial pin configurations. Called during startup. Do + * not call this API during runtime. Use @ref ioport_api_t::pinsCfg for runtime reconfiguration of + * multiple pins. + * + * @param[in] p_ctrl Pointer to control structure. Must be declared by user. Elements set here. + * @param[in] p_cfg Pointer to pin configuration data array. + */ + fsp_err_t (* open)(ioport_ctrl_t * const p_ctrl, const ioport_cfg_t * p_cfg); + + /** Close the API. + * + * @param[in] p_ctrl Pointer to control structure. + **/ + fsp_err_t (* close)(ioport_ctrl_t * const p_ctrl); + + /** Configure multiple pins. + * + * @param[in] p_ctrl Pointer to control structure. + * @param[in] p_cfg Pointer to pin configuration data array. + */ + fsp_err_t (* pinsCfg)(ioport_ctrl_t * const p_ctrl, const ioport_cfg_t * p_cfg); + + /** Configure settings for an individual pin. + * + * @param[in] p_ctrl Pointer to control structure. + * @param[in] pin Pin to be read. + * @param[in] cfg Configuration options for the pin. + */ + fsp_err_t (* pinCfg)(ioport_ctrl_t * const p_ctrl, bsp_io_port_pin_t pin, uint32_t cfg); + + /** Read the event input data of the specified pin and return the level. + * + * @param[in] p_ctrl Pointer to control structure. + * @param[in] pin Pin to be read. + * @param[in] p_pin_event Pointer to return the event data. + */ + fsp_err_t (* pinEventInputRead)(ioport_ctrl_t * const p_ctrl, bsp_io_port_pin_t pin, bsp_io_level_t * p_pin_event); + + /** Write pin event data. + * + * @param[in] p_ctrl Pointer to control structure. + * @param[in] pin Pin event data is to be written to. + * @param[in] pin_value Level to be written to pin output event. + */ + fsp_err_t (* pinEventOutputWrite)(ioport_ctrl_t * const p_ctrl, bsp_io_port_pin_t pin, bsp_io_level_t pin_value); + + /** Read level of a pin. + * + * @param[in] p_ctrl Pointer to control structure. + * @param[in] pin Pin to be read. + * @param[in] p_pin_value Pointer to return the pin level. + */ + fsp_err_t (* pinRead)(ioport_ctrl_t * const p_ctrl, bsp_io_port_pin_t pin, bsp_io_level_t * p_pin_value); + + /** Write specified level to a pin. + * + * @param[in] p_ctrl Pointer to control structure. + * @param[in] pin Pin to be written to. + * @param[in] level State to be written to the pin. + */ + fsp_err_t (* pinWrite)(ioport_ctrl_t * const p_ctrl, bsp_io_port_pin_t pin, bsp_io_level_t level); + + /** Set the direction of one or more pins on a port. + * + * @param[in] p_ctrl Pointer to control structure. + * @param[in] port Port being configured. + * @param[in] direction_values Value controlling direction of pins on port. + * @param[in] mask Mask controlling which pins on the port are to be configured. + */ + fsp_err_t (* portDirectionSet)(ioport_ctrl_t * const p_ctrl, bsp_io_port_t port, ioport_size_t direction_values, + ioport_size_t mask); + + /** Read captured event data for a port. + * + * @param[in] p_ctrl Pointer to control structure. + * @param[in] port Port to be read. + * @param[in] p_event_data Pointer to return the event data. + */ + fsp_err_t (* portEventInputRead)(ioport_ctrl_t * const p_ctrl, bsp_io_port_t port, ioport_size_t * p_event_data); + + /** Write event output data for a port. + * + * @param[in] p_ctrl Pointer to control structure. + * @param[in] port Port event data will be written to. + * @param[in] event_data Data to be written as event data to specified port. + * @param[in] mask_value Each bit set to 1 in the mask corresponds to that bit's value in event data. + * being written to port. + */ + fsp_err_t (* portEventOutputWrite)(ioport_ctrl_t * const p_ctrl, bsp_io_port_t port, ioport_size_t event_data, + ioport_size_t mask_value); + + /** Read states of pins on the specified port. + * + * @param[in] p_ctrl Pointer to control structure. + * @param[in] port Port to be read. + * @param[in] p_port_value Pointer to return the port value. + */ + fsp_err_t (* portRead)(ioport_ctrl_t * const p_ctrl, bsp_io_port_t port, ioport_size_t * p_port_value); + + /** Write to multiple pins on a port. + * + * @param[in] p_ctrl Pointer to control structure. + * @param[in] port Port to be written to. + * @param[in] value Value to be written to the port. + * @param[in] mask Mask controlling which pins on the port are written to. + */ + fsp_err_t (* portWrite)(ioport_ctrl_t * const p_ctrl, bsp_io_port_t port, ioport_size_t value, ioport_size_t mask); +} ioport_api_t; + +/** This structure encompasses everything that is needed to use an instance of this interface. */ +typedef struct st_ioport_instance +{ + ioport_ctrl_t * p_ctrl; ///< Pointer to the control structure for this instance + ioport_cfg_t const * p_cfg; ///< Pointer to the configuration structure for this instance + ioport_api_t const * p_api; ///< Pointer to the API structure for this instance +} ioport_instance_t; + +/* Common macro for FSP header files. There is also a corresponding FSP_HEADER macro at the top of this file. */ +FSP_FOOTER + +#endif + +/*******************************************************************************************************************//** + * @} (end defgroup IOPORT_API) + **********************************************************************************************************************/ diff --git a/bsp/renesas/ra8m1-ek/ra/fsp/inc/api/r_transfer_api.h b/bsp/renesas/ra8m1-ek/ra/fsp/inc/api/r_transfer_api.h new file mode 100644 index 000000000000..020d0a3d674b --- /dev/null +++ b/bsp/renesas/ra8m1-ek/ra/fsp/inc/api/r_transfer_api.h @@ -0,0 +1,381 @@ +/*********************************************************************************************************************** + * Copyright [2020-2023] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics America Inc. and may only be used with products + * of Renesas Electronics Corp. and its affiliates ("Renesas"). No other uses are authorized. Renesas products are + * sold pursuant to Renesas terms and conditions of sale. Purchasers are solely responsible for the selection and use + * of Renesas products and Renesas assumes no liability. No license, express or implied, to any intellectual property + * right is granted by Renesas. This software is protected under all applicable laws, including copyright laws. Renesas + * reserves the right to change or discontinue this software and/or this documentation. THE SOFTWARE AND DOCUMENTATION + * IS DELIVERED TO YOU "AS IS," AND RENESAS MAKES NO REPRESENTATIONS OR WARRANTIES, AND TO THE FULLEST EXTENT + * PERMISSIBLE UNDER APPLICABLE LAW, DISCLAIMS ALL WARRANTIES, WHETHER EXPLICITLY OR IMPLICITLY, INCLUDING WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT, WITH RESPECT TO THE SOFTWARE OR + * DOCUMENTATION. RENESAS SHALL HAVE NO LIABILITY ARISING OUT OF ANY SECURITY VULNERABILITY OR BREACH. TO THE MAXIMUM + * EXTENT PERMITTED BY LAW, IN NO EVENT WILL RENESAS BE LIABLE TO YOU IN CONNECTION WITH THE SOFTWARE OR DOCUMENTATION + * (OR ANY PERSON OR ENTITY CLAIMING RIGHTS DERIVED FROM YOU) FOR ANY LOSS, DAMAGES, OR CLAIMS WHATSOEVER, INCLUDING, + * WITHOUT LIMITATION, ANY DIRECT, CONSEQUENTIAL, SPECIAL, INDIRECT, PUNITIVE, OR INCIDENTAL DAMAGES; ANY LOST PROFITS, + * OTHER ECONOMIC DAMAGE, PROPERTY DAMAGE, OR PERSONAL INJURY; AND EVEN IF RENESAS HAS BEEN ADVISED OF THE POSSIBILITY + * OF SUCH LOSS, DAMAGES, CLAIMS OR COSTS. + **********************************************************************************************************************/ + +/*******************************************************************************************************************//** + * @ingroup RENESAS_INTERFACES + * @defgroup TRANSFER_API Transfer Interface + * + * @brief Interface for data transfer functions. + * + * @section TRANSFER_API_SUMMARY Summary + * The transfer interface supports background data transfer (no CPU intervention). + * + * + * @{ + **********************************************************************************************************************/ + +#ifndef R_TRANSFER_API_H +#define R_TRANSFER_API_H + +/*********************************************************************************************************************** + * Includes + **********************************************************************************************************************/ + +/* Common error codes and definitions. */ +#include "bsp_api.h" + +/* Common macro for FSP header files. There is also a corresponding FSP_FOOTER macro at the end of this file. */ +FSP_HEADER + +/********************************************************************************************************************** + * Macro definitions + **********************************************************************************************************************/ + +#define TRANSFER_SETTINGS_MODE_BITS (30U) +#define TRANSFER_SETTINGS_SIZE_BITS (28U) +#define TRANSFER_SETTINGS_SRC_ADDR_BITS (26U) +#define TRANSFER_SETTINGS_CHAIN_MODE_BITS (22U) +#define TRANSFER_SETTINGS_IRQ_BITS (21U) +#define TRANSFER_SETTINGS_REPEAT_AREA_BITS (20U) +#define TRANSFER_SETTINGS_DEST_ADDR_BITS (18U) + +/********************************************************************************************************************** + * Typedef definitions + **********************************************************************************************************************/ + +/** Transfer control block. Allocate an instance specific control block to pass into the transfer API calls. + */ +typedef void transfer_ctrl_t; + +#ifndef BSP_OVERRIDE_TRANSFER_MODE_T + +/** Transfer mode describes what will happen when a transfer request occurs. */ +typedef enum e_transfer_mode +{ + /** In normal mode, each transfer request causes a transfer of @ref transfer_size_t from the source pointer to + * the destination pointer. The transfer length is decremented and the source and address pointers are + * updated according to @ref transfer_addr_mode_t. After the transfer length reaches 0, transfer requests + * will not cause any further transfers. */ + TRANSFER_MODE_NORMAL = 0, + + /** Repeat mode is like normal mode, except that when the transfer length reaches 0, the pointer to the + * repeat area and the transfer length will be reset to their initial values. If DMAC is used, the + * transfer repeats only transfer_info_t::num_blocks times. After the transfer repeats + * transfer_info_t::num_blocks times, transfer requests will not cause any further transfers. If DTC is + * used, the transfer repeats continuously (no limit to the number of repeat transfers). */ + TRANSFER_MODE_REPEAT = 1, + + /** In block mode, each transfer request causes transfer_info_t::length transfers of @ref transfer_size_t. + * After each individual transfer, the source and destination pointers are updated according to + * @ref transfer_addr_mode_t. After the block transfer is complete, transfer_info_t::num_blocks is + * decremented. After the transfer_info_t::num_blocks reaches 0, transfer requests will not cause any + * further transfers. */ + TRANSFER_MODE_BLOCK = 2, + + /** In addition to block mode features, repeat-block mode supports a ring buffer of blocks and offsets + * within a block (to split blocks into arrays of their first data, second data, etc.) */ + TRANSFER_MODE_REPEAT_BLOCK = 3 +} transfer_mode_t; + +#endif + +#ifndef BSP_OVERRIDE_TRANSFER_SIZE_T + +/** Transfer size specifies the size of each individual transfer. + * Total transfer length = transfer_size_t * transfer_length_t + */ +typedef enum e_transfer_size +{ + TRANSFER_SIZE_1_BYTE = 0, ///< Each transfer transfers a 8-bit value + TRANSFER_SIZE_2_BYTE = 1, ///< Each transfer transfers a 16-bit value + TRANSFER_SIZE_4_BYTE = 2 ///< Each transfer transfers a 32-bit value +} transfer_size_t; + +#endif + +#ifndef BSP_OVERRIDE_TRANSFER_ADDR_MODE_T + +/** Address mode specifies whether to modify (increment or decrement) pointer after each transfer. */ +typedef enum e_transfer_addr_mode +{ + /** Address pointer remains fixed after each transfer. */ + TRANSFER_ADDR_MODE_FIXED = 0, + + /** Offset is added to the address pointer after each transfer. */ + TRANSFER_ADDR_MODE_OFFSET = 1, + + /** Address pointer is incremented by associated @ref transfer_size_t after each transfer. */ + TRANSFER_ADDR_MODE_INCREMENTED = 2, + + /** Address pointer is decremented by associated @ref transfer_size_t after each transfer. */ + TRANSFER_ADDR_MODE_DECREMENTED = 3 +} transfer_addr_mode_t; + +#endif + +#ifndef BSP_OVERRIDE_TRANSFER_REPEAT_AREA_T + +/** Repeat area options (source or destination). In @ref TRANSFER_MODE_REPEAT, the selected pointer returns to its + * original value after transfer_info_t::length transfers. In @ref TRANSFER_MODE_BLOCK and @ref TRANSFER_MODE_REPEAT_BLOCK, + * the selected pointer returns to its original value after each transfer. */ +typedef enum e_transfer_repeat_area +{ + /** Destination area repeated in @ref TRANSFER_MODE_REPEAT or @ref TRANSFER_MODE_BLOCK or @ref TRANSFER_MODE_REPEAT_BLOCK. */ + TRANSFER_REPEAT_AREA_DESTINATION = 0, + + /** Source area repeated in @ref TRANSFER_MODE_REPEAT or @ref TRANSFER_MODE_BLOCK or @ref TRANSFER_MODE_REPEAT_BLOCK. */ + TRANSFER_REPEAT_AREA_SOURCE = 1 +} transfer_repeat_area_t; + +#endif + +#ifndef BSP_OVERRIDE_TRANSFER_CHAIN_MODE_T + +/** Chain transfer mode options. + * @note Only applies for DTC. */ +typedef enum e_transfer_chain_mode +{ + /** Chain mode not used. */ + TRANSFER_CHAIN_MODE_DISABLED = 0, + + /** Switch to next transfer after a single transfer from this @ref transfer_info_t. */ + TRANSFER_CHAIN_MODE_EACH = 2, + + /** Complete the entire transfer defined in this @ref transfer_info_t before chaining to next transfer. */ + TRANSFER_CHAIN_MODE_END = 3 +} transfer_chain_mode_t; + +#endif + +#ifndef BSP_OVERRIDE_TRANSFER_IRQ_T + +/** Interrupt options. */ +typedef enum e_transfer_irq +{ + /** Interrupt occurs only after last transfer. If this transfer is chained to a subsequent transfer, + * the interrupt will occur only after subsequent chained transfer(s) are complete. + * @warning DTC triggers the interrupt of the activation source. Choosing TRANSFER_IRQ_END with DTC will + * prevent activation source interrupts until the transfer is complete. */ + TRANSFER_IRQ_END = 0, + + /** Interrupt occurs after each transfer. + * @note Not available in all HAL drivers. See HAL driver for details. */ + TRANSFER_IRQ_EACH = 1 +} transfer_irq_t; + +#endif + +/** Driver specific information. */ +typedef struct st_transfer_properties +{ + uint32_t block_count_max; ///< Maximum number of blocks + uint32_t block_count_remaining; ///< Number of blocks remaining + uint32_t transfer_length_max; ///< Maximum number of transfers + uint32_t transfer_length_remaining; ///< Number of transfers remaining +} transfer_properties_t; + +#ifndef BSP_OVERRIDE_TRANSFER_INFO_T + +/** This structure specifies the properties of the transfer. + * @warning When using DTC, this structure corresponds to the descriptor block registers required by the DTC. + * The following components may be modified by the driver: p_src, p_dest, num_blocks, and length. + * @warning When using DTC, do NOT reuse this structure to configure multiple transfers. Each transfer must + * have a unique transfer_info_t. + * @warning When using DTC, this structure must not be allocated in a temporary location. Any instance of this + * structure must remain in scope until the transfer it is used for is closed. + * @note When using DTC, consider placing instances of this structure in a protected section of memory. */ +typedef struct st_transfer_info +{ + union + { + struct + { + uint32_t : 16; + uint32_t : 2; + + /** Select what happens to destination pointer after each transfer. */ + transfer_addr_mode_t dest_addr_mode : 2; + + /** Select to repeat source or destination area, unused in @ref TRANSFER_MODE_NORMAL. */ + transfer_repeat_area_t repeat_area : 1; + + /** Select if interrupts should occur after each individual transfer or after the completion of all planned + * transfers. */ + transfer_irq_t irq : 1; + + /** Select when the chain transfer ends. */ + transfer_chain_mode_t chain_mode : 2; + + uint32_t : 2; + + /** Select what happens to source pointer after each transfer. */ + transfer_addr_mode_t src_addr_mode : 2; + + /** Select number of bytes to transfer at once. @see transfer_info_t::length. */ + transfer_size_t size : 2; + + /** Select mode from @ref transfer_mode_t. */ + transfer_mode_t mode : 2; + } transfer_settings_word_b; + + uint32_t transfer_settings_word; + }; + + void const * volatile p_src; ///< Source pointer + void * volatile p_dest; ///< Destination pointer + + /** Number of blocks to transfer when using @ref TRANSFER_MODE_BLOCK (both DTC an DMAC) or + * @ref TRANSFER_MODE_REPEAT (DMAC only) or + * @ref TRANSFER_MODE_REPEAT_BLOCK (DMAC only), unused in other modes. */ + volatile uint16_t num_blocks; + + /** Length of each transfer. Range limited for @ref TRANSFER_MODE_BLOCK, @ref TRANSFER_MODE_REPEAT, + * and @ref TRANSFER_MODE_REPEAT_BLOCK + * see HAL driver for details. */ + volatile uint16_t length; +} transfer_info_t; + +#endif + +/** Driver configuration set in @ref transfer_api_t::open. All elements except p_extend are required and must be + * initialized. */ +typedef struct st_transfer_cfg +{ + /** Pointer to transfer configuration options. If using chain transfer (DTC only), this can be a pointer to + * an array of chained transfers that will be completed in order. */ + transfer_info_t * p_info; + + void const * p_extend; ///< Extension parameter for hardware specific settings. +} transfer_cfg_t; + +/** Select whether to start single or repeated transfer with software start. */ +typedef enum e_transfer_start_mode +{ + TRANSFER_START_MODE_SINGLE = 0, ///< Software start triggers single transfer. + TRANSFER_START_MODE_REPEAT = 1 ///< Software start transfer continues until transfer is complete. +} transfer_start_mode_t; + +/** Transfer functions implemented at the HAL layer will follow this API. */ +typedef struct st_transfer_api +{ + /** Initial configuration. + * + * @param[in,out] p_ctrl Pointer to control block. Must be declared by user. Elements set here. + * @param[in] p_cfg Pointer to configuration structure. All elements of this structure + * must be set by user. + */ + fsp_err_t (* open)(transfer_ctrl_t * const p_ctrl, transfer_cfg_t const * const p_cfg); + + /** Reconfigure the transfer. + * Enable the transfer if p_info is valid. + * + * @param[in,out] p_ctrl Pointer to control block. Must be declared by user. Elements set here. + * @param[in] p_info Pointer to a new transfer info structure. + */ + fsp_err_t (* reconfigure)(transfer_ctrl_t * const p_ctrl, transfer_info_t * p_info); + + /** Reset source address pointer, destination address pointer, and/or length, keeping all other settings the same. + * Enable the transfer if p_src, p_dest, and length are valid. + * + * @param[in] p_ctrl Control block set in @ref transfer_api_t::open call for this transfer. + * @param[in] p_src Pointer to source. Set to NULL if source pointer should not change. + * @param[in] p_dest Pointer to destination. Set to NULL if destination pointer should not change. + * @param[in] num_transfers Transfer length in normal mode or number of blocks in block mode. In DMAC only, + * resets number of repeats (initially stored in transfer_info_t::num_blocks) in + * repeat mode. Not used in repeat mode for DTC. + */ + fsp_err_t (* reset)(transfer_ctrl_t * const p_ctrl, void const * p_src, void * p_dest, + uint16_t const num_transfers); + + /** Enable transfer. Transfers occur after the activation source event (or when + * @ref transfer_api_t::softwareStart is called if no peripheral event is chosen as activation source). + * + * @param[in] p_ctrl Control block set in @ref transfer_api_t::open call for this transfer. + */ + fsp_err_t (* enable)(transfer_ctrl_t * const p_ctrl); + + /** Disable transfer. Transfers do not occur after the activation source event (or when + * @ref transfer_api_t::softwareStart is called if no peripheral event is chosen as the DMAC activation source). + * @note If a transfer is in progress, it will be completed. Subsequent transfer requests do not cause a + * transfer. + * + * @param[in] p_ctrl Control block set in @ref transfer_api_t::open call for this transfer. + */ + fsp_err_t (* disable)(transfer_ctrl_t * const p_ctrl); + + /** Start transfer in software. + * @warning Only works if no peripheral event is chosen as the DMAC activation source. + * @note Not supported for DTC. + * + * @param[in] p_ctrl Control block set in @ref transfer_api_t::open call for this transfer. + * @param[in] mode Select mode from @ref transfer_start_mode_t. + */ + fsp_err_t (* softwareStart)(transfer_ctrl_t * const p_ctrl, transfer_start_mode_t mode); + + /** Stop transfer in software. The transfer will stop after completion of the current transfer. + * @note Not supported for DTC. + * @note Only applies for transfers started with TRANSFER_START_MODE_REPEAT. + * @warning Only works if no peripheral event is chosen as the DMAC activation source. + * + * @param[in] p_ctrl Control block set in @ref transfer_api_t::open call for this transfer. + */ + fsp_err_t (* softwareStop)(transfer_ctrl_t * const p_ctrl); + + /** Provides information about this transfer. + * + * @param[in] p_ctrl Control block set in @ref transfer_api_t::open call for this transfer. + * @param[out] p_properties Driver specific information. + */ + fsp_err_t (* infoGet)(transfer_ctrl_t * const p_ctrl, transfer_properties_t * const p_properties); + + /** Releases hardware lock. This allows a transfer to be reconfigured using @ref transfer_api_t::open. + * + * @param[in] p_ctrl Control block set in @ref transfer_api_t::open call for this transfer. + */ + fsp_err_t (* close)(transfer_ctrl_t * const p_ctrl); + + /** To update next transfer information without interruption during transfer. + * Allow further transfer continuation. + * + * @param[in] p_ctrl Control block set in @ref transfer_api_t::open call for this transfer. + * @param[in] p_src Pointer to source. Set to NULL if source pointer should not change. + * @param[in] p_dest Pointer to destination. Set to NULL if destination pointer should not change. + * @param[in] num_transfers Transfer length in normal mode or block mode. + */ + fsp_err_t (* reload)(transfer_ctrl_t * const p_ctrl, void const * p_src, void * p_dest, + uint32_t const num_transfers); +} transfer_api_t; + +/** This structure encompasses everything that is needed to use an instance of this interface. */ +typedef struct st_transfer_instance +{ + transfer_ctrl_t * p_ctrl; ///< Pointer to the control structure for this instance + transfer_cfg_t const * p_cfg; ///< Pointer to the configuration structure for this instance + transfer_api_t const * p_api; ///< Pointer to the API structure for this instance +} transfer_instance_t; + +/* Common macro for FSP header files. There is also a corresponding FSP_HEADER macro at the top of this file. */ +FSP_FOOTER + +#endif + +/*******************************************************************************************************************//** + * @} (end defgroup TRANSFER_API) + **********************************************************************************************************************/ diff --git a/bsp/renesas/ra8m1-ek/ra/fsp/inc/api/r_uart_api.h b/bsp/renesas/ra8m1-ek/ra/fsp/inc/api/r_uart_api.h new file mode 100644 index 000000000000..818d99f7ff0b --- /dev/null +++ b/bsp/renesas/ra8m1-ek/ra/fsp/inc/api/r_uart_api.h @@ -0,0 +1,267 @@ +/*********************************************************************************************************************** + * Copyright [2020-2023] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics America Inc. and may only be used with products + * of Renesas Electronics Corp. and its affiliates ("Renesas"). No other uses are authorized. Renesas products are + * sold pursuant to Renesas terms and conditions of sale. Purchasers are solely responsible for the selection and use + * of Renesas products and Renesas assumes no liability. No license, express or implied, to any intellectual property + * right is granted by Renesas. This software is protected under all applicable laws, including copyright laws. Renesas + * reserves the right to change or discontinue this software and/or this documentation. THE SOFTWARE AND DOCUMENTATION + * IS DELIVERED TO YOU "AS IS," AND RENESAS MAKES NO REPRESENTATIONS OR WARRANTIES, AND TO THE FULLEST EXTENT + * PERMISSIBLE UNDER APPLICABLE LAW, DISCLAIMS ALL WARRANTIES, WHETHER EXPLICITLY OR IMPLICITLY, INCLUDING WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT, WITH RESPECT TO THE SOFTWARE OR + * DOCUMENTATION. RENESAS SHALL HAVE NO LIABILITY ARISING OUT OF ANY SECURITY VULNERABILITY OR BREACH. TO THE MAXIMUM + * EXTENT PERMITTED BY LAW, IN NO EVENT WILL RENESAS BE LIABLE TO YOU IN CONNECTION WITH THE SOFTWARE OR DOCUMENTATION + * (OR ANY PERSON OR ENTITY CLAIMING RIGHTS DERIVED FROM YOU) FOR ANY LOSS, DAMAGES, OR CLAIMS WHATSOEVER, INCLUDING, + * WITHOUT LIMITATION, ANY DIRECT, CONSEQUENTIAL, SPECIAL, INDIRECT, PUNITIVE, OR INCIDENTAL DAMAGES; ANY LOST PROFITS, + * OTHER ECONOMIC DAMAGE, PROPERTY DAMAGE, OR PERSONAL INJURY; AND EVEN IF RENESAS HAS BEEN ADVISED OF THE POSSIBILITY + * OF SUCH LOSS, DAMAGES, CLAIMS OR COSTS. + **********************************************************************************************************************/ + +/*******************************************************************************************************************//** + * @ingroup RENESAS_INTERFACES + * @defgroup UART_API UART Interface + * @brief Interface for UART communications. + * + * @section UART_INTERFACE_SUMMARY Summary + * The UART interface provides common APIs for UART HAL drivers. The UART interface supports the following features: + * - Full-duplex UART communication + * - Interrupt driven transmit/receive processing + * - Callback function with returned event code + * - Runtime baud-rate change + * - Hardware resource locking during a transaction + * - CTS/RTS hardware flow control support (with an associated IOPORT pin) + * + * + * @{ + **********************************************************************************************************************/ + +#ifndef R_UART_API_H +#define R_UART_API_H + +/*********************************************************************************************************************** + * Includes + **********************************************************************************************************************/ + +/* Includes board and MCU related header files. */ +#include "bsp_api.h" +#include "r_transfer_api.h" + +/* Common macro for FSP header files. There is also a corresponding FSP_FOOTER macro at the end of this file. */ +FSP_HEADER + +/********************************************************************************************************************** + * Macro definitions + **********************************************************************************************************************/ + +/********************************************************************************************************************** + * Typedef definitions + **********************************************************************************************************************/ + +/** UART Event codes */ +#ifndef BSP_OVERRIDE_UART_EVENT_T +typedef enum e_sf_event +{ + UART_EVENT_RX_COMPLETE = (1UL << 0), ///< Receive complete event + UART_EVENT_TX_COMPLETE = (1UL << 1), ///< Transmit complete event + UART_EVENT_RX_CHAR = (1UL << 2), ///< Character received + UART_EVENT_ERR_PARITY = (1UL << 3), ///< Parity error event + UART_EVENT_ERR_FRAMING = (1UL << 4), ///< Mode fault error event + UART_EVENT_ERR_OVERFLOW = (1UL << 5), ///< FIFO Overflow error event + UART_EVENT_BREAK_DETECT = (1UL << 6), ///< Break detect error event + UART_EVENT_TX_DATA_EMPTY = (1UL << 7), ///< Last byte is transmitting, ready for more data +} uart_event_t; +#endif +#ifndef BSP_OVERRIDE_UART_DATA_BITS_T + +/** UART Data bit length definition */ +typedef enum e_uart_data_bits +{ + UART_DATA_BITS_9 = 0U, ///< Data bits 9-bit + UART_DATA_BITS_8 = 2U, ///< Data bits 8-bit + UART_DATA_BITS_7 = 3U, ///< Data bits 7-bit +} uart_data_bits_t; +#endif +#ifndef BSP_OVERRIDE_UART_PARITY_T + +/** UART Parity definition */ +typedef enum e_uart_parity +{ + UART_PARITY_OFF = 0U, ///< No parity + UART_PARITY_EVEN = 2U, ///< Even parity + UART_PARITY_ODD = 3U, ///< Odd parity +} uart_parity_t; +#endif + +/** UART Stop bits definition */ +typedef enum e_uart_stop_bits +{ + UART_STOP_BITS_1 = 0U, ///< Stop bit 1-bit + UART_STOP_BITS_2 = 1U, ///< Stop bits 2-bit +} uart_stop_bits_t; + +/** UART transaction definition */ +typedef enum e_uart_dir +{ + UART_DIR_RX_TX = 3U, ///< Both RX and TX + UART_DIR_RX = 1U, ///< Only RX + UART_DIR_TX = 2U, ///< Only TX +} uart_dir_t; + +/** UART driver specific information */ +typedef struct st_uart_info +{ + /** Maximum bytes that can be written at this time. Only applies if uart_cfg_t::p_transfer_tx is not NULL. */ + uint32_t write_bytes_max; + + /** Maximum bytes that are available to read at one time. Only applies if uart_cfg_t::p_transfer_rx is not NULL. */ + uint32_t read_bytes_max; +} uart_info_t; + +/** UART Callback parameter definition */ +typedef struct st_uart_callback_arg +{ + uint32_t channel; ///< Device channel number + uart_event_t event; ///< Event code + + /** Contains the next character received for the events UART_EVENT_RX_CHAR, UART_EVENT_ERR_PARITY, + * UART_EVENT_ERR_FRAMING, or UART_EVENT_ERR_OVERFLOW. Otherwise unused. */ + uint32_t data; + void const * p_context; ///< Context provided to user during callback +} uart_callback_args_t; + +/** UART Configuration */ +typedef struct st_uart_cfg +{ + /* UART generic configuration */ + uint8_t channel; ///< Select a channel corresponding to the channel number of the hardware. + uart_data_bits_t data_bits; ///< Data bit length (8 or 7 or 9) + uart_parity_t parity; ///< Parity type (none or odd or even) + uart_stop_bits_t stop_bits; ///< Stop bit length (1 or 2) + uint8_t rxi_ipl; ///< Receive interrupt priority + IRQn_Type rxi_irq; ///< Receive interrupt IRQ number + uint8_t txi_ipl; ///< Transmit interrupt priority + IRQn_Type txi_irq; ///< Transmit interrupt IRQ number + uint8_t tei_ipl; ///< Transmit end interrupt priority + IRQn_Type tei_irq; ///< Transmit end interrupt IRQ number + uint8_t eri_ipl; ///< Error interrupt priority + IRQn_Type eri_irq; ///< Error interrupt IRQ number + + /** Optional transfer instance used to receive multiple bytes without interrupts. Set to NULL if unused. + * If NULL, the number of bytes allowed in the read API is limited to one byte at a time. */ + transfer_instance_t const * p_transfer_rx; + + /** Optional transfer instance used to send multiple bytes without interrupts. Set to NULL if unused. + * If NULL, the number of bytes allowed in the write APIs is limited to one byte at a time. */ + transfer_instance_t const * p_transfer_tx; + + /* Configuration for UART Event processing */ + void (* p_callback)(uart_callback_args_t * p_args); ///< Pointer to callback function + void const * p_context; ///< User defined context passed into callback function + + /* Pointer to UART peripheral specific configuration */ + void const * p_extend; ///< UART hardware dependent configuration +} uart_cfg_t; + +/** UART control block. Allocate an instance specific control block to pass into the UART API calls. + */ +typedef void uart_ctrl_t; + +/** Shared Interface definition for UART */ +typedef struct st_uart_api +{ + /** Open UART device. + * + * @param[in,out] p_ctrl Pointer to the UART control block. Must be declared by user. Value set here. + * @param[in] uart_cfg_t Pointer to UART configuration structure. All elements of this structure must be set by + * user. + */ + fsp_err_t (* open)(uart_ctrl_t * const p_ctrl, uart_cfg_t const * const p_cfg); + + /** Read from UART device. The read buffer is used until the read is complete. When a transfer is complete, the + * callback is called with event UART_EVENT_RX_COMPLETE. Bytes received outside an active transfer are received in + * the callback function with event UART_EVENT_RX_CHAR. + * The maximum transfer size is reported by infoGet(). + * + * @param[in] p_ctrl Pointer to the UART control block for the channel. + * @param[in] p_dest Destination address to read data from. + * @param[in] bytes Read data length. + */ + fsp_err_t (* read)(uart_ctrl_t * const p_ctrl, uint8_t * const p_dest, uint32_t const bytes); + + /** Write to UART device. The write buffer is used until write is complete. Do not overwrite write buffer + * contents until the write is finished. When the write is complete (all bytes are fully transmitted on the wire), + * the callback called with event UART_EVENT_TX_COMPLETE. + * The maximum transfer size is reported by infoGet(). + * + * @param[in] p_ctrl Pointer to the UART control block. + * @param[in] p_src Source address to write data to. + * @param[in] bytes Write data length. + */ + fsp_err_t (* write)(uart_ctrl_t * const p_ctrl, uint8_t const * const p_src, uint32_t const bytes); + + /** Change baud rate. + * @warning Calling this API aborts any in-progress transmission and disables reception until the new baud + * settings have been applied. + * + * + * @param[in] p_ctrl Pointer to the UART control block. + * @param[in] p_baudrate_info Pointer to module specific information for configuring baud rate. + */ + fsp_err_t (* baudSet)(uart_ctrl_t * const p_ctrl, void const * const p_baudrate_info); + + /** Get the driver specific information. + * + * @param[in] p_ctrl Pointer to the UART control block. + * @param[in] baudrate Baud rate in bps. + */ + fsp_err_t (* infoGet)(uart_ctrl_t * const p_ctrl, uart_info_t * const p_info); + + /** + * Abort ongoing transfer. + * + * @param[in] p_ctrl Pointer to the UART control block. + * @param[in] communication_to_abort Type of abort request. + */ + fsp_err_t (* communicationAbort)(uart_ctrl_t * const p_ctrl, uart_dir_t communication_to_abort); + + /** + * Specify callback function and optional context pointer and working memory pointer. + * + * @param[in] p_ctrl Pointer to the UART control block. + * @param[in] p_callback Callback function + * @param[in] p_context Pointer to send to callback function + * @param[in] p_working_memory Pointer to volatile memory where callback structure can be allocated. + * Callback arguments allocated here are only valid during the callback. + */ + fsp_err_t (* callbackSet)(uart_ctrl_t * const p_ctrl, void (* p_callback)(uart_callback_args_t *), + void const * const p_context, uart_callback_args_t * const p_callback_memory); + + /** Close UART device. + * + * @param[in] p_ctrl Pointer to the UART control block. + */ + fsp_err_t (* close)(uart_ctrl_t * const p_ctrl); + + /** Stop ongoing read and return the number of bytes remaining in the read. + * + * @param[in] p_ctrl Pointer to the UART control block. + * @param[in,out] remaining_bytes Pointer to location to store remaining bytes for read. + */ + fsp_err_t (* readStop)(uart_ctrl_t * const p_ctrl, uint32_t * remaining_bytes); +} uart_api_t; + +/** This structure encompasses everything that is needed to use an instance of this interface. */ +typedef struct st_uart_instance +{ + uart_ctrl_t * p_ctrl; ///< Pointer to the control structure for this instance + uart_cfg_t const * p_cfg; ///< Pointer to the configuration structure for this instance + uart_api_t const * p_api; ///< Pointer to the API structure for this instance +} uart_instance_t; + +/** @} (end defgroup UART_API) */ + +/* Common macro for FSP header files. There is also a corresponding FSP_HEADER macro at the top of this file. */ +FSP_FOOTER + +#endif diff --git a/bsp/renesas/ra8m1-ek/ra/fsp/inc/fsp_features.h b/bsp/renesas/ra8m1-ek/ra/fsp/inc/fsp_features.h new file mode 100644 index 000000000000..0d1a6d27da09 --- /dev/null +++ b/bsp/renesas/ra8m1-ek/ra/fsp/inc/fsp_features.h @@ -0,0 +1,304 @@ +/*********************************************************************************************************************** + * Copyright [2020-2023] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics America Inc. and may only be used with products + * of Renesas Electronics Corp. and its affiliates ("Renesas"). No other uses are authorized. Renesas products are + * sold pursuant to Renesas terms and conditions of sale. Purchasers are solely responsible for the selection and use + * of Renesas products and Renesas assumes no liability. No license, express or implied, to any intellectual property + * right is granted by Renesas. This software is protected under all applicable laws, including copyright laws. Renesas + * reserves the right to change or discontinue this software and/or this documentation. THE SOFTWARE AND DOCUMENTATION + * IS DELIVERED TO YOU "AS IS," AND RENESAS MAKES NO REPRESENTATIONS OR WARRANTIES, AND TO THE FULLEST EXTENT + * PERMISSIBLE UNDER APPLICABLE LAW, DISCLAIMS ALL WARRANTIES, WHETHER EXPLICITLY OR IMPLICITLY, INCLUDING WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT, WITH RESPECT TO THE SOFTWARE OR + * DOCUMENTATION. RENESAS SHALL HAVE NO LIABILITY ARISING OUT OF ANY SECURITY VULNERABILITY OR BREACH. TO THE MAXIMUM + * EXTENT PERMITTED BY LAW, IN NO EVENT WILL RENESAS BE LIABLE TO YOU IN CONNECTION WITH THE SOFTWARE OR DOCUMENTATION + * (OR ANY PERSON OR ENTITY CLAIMING RIGHTS DERIVED FROM YOU) FOR ANY LOSS, DAMAGES, OR CLAIMS WHATSOEVER, INCLUDING, + * WITHOUT LIMITATION, ANY DIRECT, CONSEQUENTIAL, SPECIAL, INDIRECT, PUNITIVE, OR INCIDENTAL DAMAGES; ANY LOST PROFITS, + * OTHER ECONOMIC DAMAGE, PROPERTY DAMAGE, OR PERSONAL INJURY; AND EVEN IF RENESAS HAS BEEN ADVISED OF THE POSSIBILITY + * OF SUCH LOSS, DAMAGES, CLAIMS OR COSTS. + **********************************************************************************************************************/ + +#ifndef FSP_FEATURES_H +#define FSP_FEATURES_H + +/*********************************************************************************************************************** + * Includes , "Project Includes" + **********************************************************************************************************************/ + +/* C99 includes. */ +#include +#include +#include +#include + +/* Different compiler support. */ +#include "fsp_common_api.h" +#include "../../fsp/src/bsp/mcu/all/bsp_compiler_support.h" + +/*********************************************************************************************************************** + * Macro definitions + **********************************************************************************************************************/ + +/*******************************************************************************************************************//** + * @addtogroup BSP_MCU + * @{ + **********************************************************************************************************************/ + +/* Common macro for FSP header files. There is also a corresponding FSP_FOOTER macro at the end of this file. */ +FSP_HEADER + +/*********************************************************************************************************************** + * Typedef definitions + **********************************************************************************************************************/ + +/** Available modules. */ +typedef enum e_fsp_ip +{ + FSP_IP_CFLASH = 0, ///< Code Flash + FSP_IP_DFLASH = 1, ///< Data Flash + FSP_IP_RAM = 2, ///< RAM + FSP_IP_LVD = 3, ///< Low Voltage Detection + FSP_IP_CGC = 3, ///< Clock Generation Circuit + FSP_IP_LPM = 3, ///< Low Power Modes + FSP_IP_FCU = 4, ///< Flash Control Unit + FSP_IP_ICU = 6, ///< Interrupt Control Unit + FSP_IP_DMAC = 7, ///< DMA Controller + FSP_IP_DTC = 8, ///< Data Transfer Controller + FSP_IP_IOPORT = 9, ///< I/O Ports + FSP_IP_PFS = 10, ///< Pin Function Select + FSP_IP_ELC = 11, ///< Event Link Controller + FSP_IP_MPU = 13, ///< Memory Protection Unit + FSP_IP_MSTP = 14, ///< Module Stop + FSP_IP_MMF = 15, ///< Memory Mirror Function + FSP_IP_KEY = 16, ///< Key Interrupt Function + FSP_IP_CAC = 17, ///< Clock Frequency Accuracy Measurement Circuit + FSP_IP_DOC = 18, ///< Data Operation Circuit + FSP_IP_CRC = 19, ///< Cyclic Redundancy Check Calculator + FSP_IP_SCI = 20, ///< Serial Communications Interface + FSP_IP_IIC = 21, ///< I2C Bus Interface + FSP_IP_SPI = 22, ///< Serial Peripheral Interface + FSP_IP_CTSU = 23, ///< Capacitive Touch Sensing Unit + FSP_IP_SCE = 24, ///< Secure Cryptographic Engine + FSP_IP_SLCDC = 25, ///< Segment LCD Controller + FSP_IP_AES = 26, ///< Advanced Encryption Standard + FSP_IP_TRNG = 27, ///< True Random Number Generator + FSP_IP_FCACHE = 30, ///< Flash Cache + FSP_IP_SRAM = 31, ///< SRAM + FSP_IP_ADC = 32, ///< A/D Converter + FSP_IP_DAC = 33, ///< 12-Bit D/A Converter + FSP_IP_TSN = 34, ///< Temperature Sensor + FSP_IP_DAAD = 35, ///< D/A A/D Synchronous Unit + FSP_IP_ACMPHS = 36, ///< High Speed Analog Comparator + FSP_IP_ACMPLP = 37, ///< Low Power Analog Comparator + FSP_IP_OPAMP = 38, ///< Operational Amplifier + FSP_IP_SDADC = 39, ///< Sigma Delta A/D Converter + FSP_IP_RTC = 40, ///< Real Time Clock + FSP_IP_WDT = 41, ///< Watch Dog Timer + FSP_IP_IWDT = 42, ///< Independent Watch Dog Timer + FSP_IP_GPT = 43, ///< General PWM Timer + FSP_IP_POEG = 44, ///< Port Output Enable for GPT + FSP_IP_OPS = 45, ///< Output Phase Switch + FSP_IP_AGT = 47, ///< Asynchronous General-Purpose Timer + FSP_IP_CAN = 48, ///< Controller Area Network + FSP_IP_IRDA = 49, ///< Infrared Data Association + FSP_IP_QSPI = 50, ///< Quad Serial Peripheral Interface + FSP_IP_USBFS = 51, ///< USB Full Speed + FSP_IP_SDHI = 52, ///< SD/MMC Host Interface + FSP_IP_SRC = 53, ///< Sampling Rate Converter + FSP_IP_SSI = 54, ///< Serial Sound Interface + FSP_IP_DALI = 55, ///< Digital Addressable Lighting Interface + FSP_IP_ETHER = 64, ///< Ethernet MAC Controller + FSP_IP_EDMAC = 64, ///< Ethernet DMA Controller + FSP_IP_EPTPC = 65, ///< Ethernet PTP Controller + FSP_IP_PDC = 66, ///< Parallel Data Capture Unit + FSP_IP_GLCDC = 67, ///< Graphics LCD Controller + FSP_IP_DRW = 68, ///< 2D Drawing Engine + FSP_IP_JPEG = 69, ///< JPEG + FSP_IP_DAC8 = 70, ///< 8-Bit D/A Converter + FSP_IP_USBHS = 71, ///< USB High Speed + FSP_IP_OSPI = 72, ///< Octa Serial Peripheral Interface + FSP_IP_CEC = 73, ///< HDMI CEC + FSP_IP_TFU = 74, ///< Trigonometric Function Unit + FSP_IP_IIRFA = 75, ///< IIR Filter Accelerator + FSP_IP_CANFD = 76, ///< CAN-FD + FSP_IP_ULPT = 77, ///< Ultra Low Power Timer ULPT +} fsp_ip_t; + +/** Signals that can be mapped to an interrupt. */ +typedef enum e_fsp_signal +{ + FSP_SIGNAL_ADC_COMPARE_MATCH = 0, ///< ADC COMPARE MATCH + FSP_SIGNAL_ADC_COMPARE_MISMATCH, ///< ADC COMPARE MISMATCH + FSP_SIGNAL_ADC_SCAN_END, ///< ADC SCAN END + FSP_SIGNAL_ADC_SCAN_END_B, ///< ADC SCAN END B + FSP_SIGNAL_ADC_WINDOW_A, ///< ADC WINDOW A + FSP_SIGNAL_ADC_WINDOW_B, ///< ADC WINDOW B + FSP_SIGNAL_AES_RDREQ = 0, ///< AES RDREQ + FSP_SIGNAL_AES_WRREQ, ///< AES WRREQ + FSP_SIGNAL_AGT_COMPARE_A = 0, ///< AGT COMPARE A + FSP_SIGNAL_AGT_COMPARE_B, ///< AGT COMPARE B + FSP_SIGNAL_AGT_INT, ///< AGT INT + FSP_SIGNAL_CAC_FREQUENCY_ERROR = 0, ///< CAC FREQUENCY ERROR + FSP_SIGNAL_CAC_MEASUREMENT_END, ///< CAC MEASUREMENT END + FSP_SIGNAL_CAC_OVERFLOW, ///< CAC OVERFLOW + FSP_SIGNAL_CAN_ERROR = 0, ///< CAN ERROR + FSP_SIGNAL_CAN_FIFO_RX, ///< CAN FIFO RX + FSP_SIGNAL_CAN_FIFO_TX, ///< CAN FIFO TX + FSP_SIGNAL_CAN_MAILBOX_RX, ///< CAN MAILBOX RX + FSP_SIGNAL_CAN_MAILBOX_TX, ///< CAN MAILBOX TX + FSP_SIGNAL_CGC_MOSC_STOP = 0, ///< CGC MOSC STOP + FSP_SIGNAL_LPM_SNOOZE_REQUEST, ///< LPM SNOOZE REQUEST + FSP_SIGNAL_LVD_LVD1, ///< LVD LVD1 + FSP_SIGNAL_LVD_LVD2, ///< LVD LVD2 + FSP_SIGNAL_VBATT_LVD, ///< VBATT LVD + FSP_SIGNAL_LVD_VBATT = FSP_SIGNAL_VBATT_LVD, ///< LVD VBATT + FSP_SIGNAL_ACMPHS_INT = 0, ///< ACMPHS INT + FSP_SIGNAL_ACMPLP_INT = 0, ///< ACMPLP INT + FSP_SIGNAL_CTSU_END = 0, ///< CTSU END + FSP_SIGNAL_CTSU_READ, ///< CTSU READ + FSP_SIGNAL_CTSU_WRITE, ///< CTSU WRITE + FSP_SIGNAL_DALI_DEI = 0, ///< DALI DEI + FSP_SIGNAL_DALI_CLI, ///< DALI CLI + FSP_SIGNAL_DALI_SDI, ///< DALI SDI + FSP_SIGNAL_DALI_BPI, ///< DALI BPI + FSP_SIGNAL_DALI_FEI, ///< DALI FEI + FSP_SIGNAL_DALI_SDI_OR_BPI, ///< DALI SDI OR BPI + FSP_SIGNAL_DMAC_INT = 0, ///< DMAC INT + FSP_SIGNAL_DOC_INT = 0, ///< DOC INT + FSP_SIGNAL_DRW_INT = 0, ///< DRW INT + FSP_SIGNAL_DTC_COMPLETE = 0, ///< DTC COMPLETE + FSP_SIGNAL_DTC_END, ///< DTC END + FSP_SIGNAL_EDMAC_EINT = 0, ///< EDMAC EINT + FSP_SIGNAL_ELC_SOFTWARE_EVENT_0 = 0, ///< ELC SOFTWARE EVENT 0 + FSP_SIGNAL_ELC_SOFTWARE_EVENT_1, ///< ELC SOFTWARE EVENT 1 + FSP_SIGNAL_EPTPC_IPLS = 0, ///< EPTPC IPLS + FSP_SIGNAL_EPTPC_MINT, ///< EPTPC MINT + FSP_SIGNAL_EPTPC_PINT, ///< EPTPC PINT + FSP_SIGNAL_EPTPC_TIMER0_FALL, ///< EPTPC TIMER0 FALL + FSP_SIGNAL_EPTPC_TIMER0_RISE, ///< EPTPC TIMER0 RISE + FSP_SIGNAL_EPTPC_TIMER1_FALL, ///< EPTPC TIMER1 FALL + FSP_SIGNAL_EPTPC_TIMER1_RISE, ///< EPTPC TIMER1 RISE + FSP_SIGNAL_EPTPC_TIMER2_FALL, ///< EPTPC TIMER2 FALL + FSP_SIGNAL_EPTPC_TIMER2_RISE, ///< EPTPC TIMER2 RISE + FSP_SIGNAL_EPTPC_TIMER3_FALL, ///< EPTPC TIMER3 FALL + FSP_SIGNAL_EPTPC_TIMER3_RISE, ///< EPTPC TIMER3 RISE + FSP_SIGNAL_EPTPC_TIMER4_FALL, ///< EPTPC TIMER4 FALL + FSP_SIGNAL_EPTPC_TIMER4_RISE, ///< EPTPC TIMER4 RISE + FSP_SIGNAL_EPTPC_TIMER5_FALL, ///< EPTPC TIMER5 FALL + FSP_SIGNAL_EPTPC_TIMER5_RISE, ///< EPTPC TIMER5 RISE + FSP_SIGNAL_FCU_FIFERR = 0, ///< FCU FIFERR + FSP_SIGNAL_FCU_FRDYI, ///< FCU FRDYI + FSP_SIGNAL_GLCDC_LINE_DETECT = 0, ///< GLCDC LINE DETECT + FSP_SIGNAL_GLCDC_UNDERFLOW_1, ///< GLCDC UNDERFLOW 1 + FSP_SIGNAL_GLCDC_UNDERFLOW_2, ///< GLCDC UNDERFLOW 2 + FSP_SIGNAL_GPT_CAPTURE_COMPARE_A = 0, ///< GPT CAPTURE COMPARE A + FSP_SIGNAL_GPT_CAPTURE_COMPARE_B, ///< GPT CAPTURE COMPARE B + FSP_SIGNAL_GPT_COMPARE_C, ///< GPT COMPARE C + FSP_SIGNAL_GPT_COMPARE_D, ///< GPT COMPARE D + FSP_SIGNAL_GPT_COMPARE_E, ///< GPT COMPARE E + FSP_SIGNAL_GPT_COMPARE_F, ///< GPT COMPARE F + FSP_SIGNAL_GPT_COUNTER_OVERFLOW, ///< GPT COUNTER OVERFLOW + FSP_SIGNAL_GPT_COUNTER_UNDERFLOW, ///< GPT COUNTER UNDERFLOW + FSP_SIGNAL_GPT_AD_TRIG_A, ///< GPT AD TRIG A + FSP_SIGNAL_GPT_AD_TRIG_B, ///< GPT AD TRIG B + FSP_SIGNAL_OPS_UVW_EDGE, ///< OPS UVW EDGE + FSP_SIGNAL_ICU_IRQ0 = 0, ///< ICU IRQ0 + FSP_SIGNAL_ICU_IRQ1, ///< ICU IRQ1 + FSP_SIGNAL_ICU_IRQ2, ///< ICU IRQ2 + FSP_SIGNAL_ICU_IRQ3, ///< ICU IRQ3 + FSP_SIGNAL_ICU_IRQ4, ///< ICU IRQ4 + FSP_SIGNAL_ICU_IRQ5, ///< ICU IRQ5 + FSP_SIGNAL_ICU_IRQ6, ///< ICU IRQ6 + FSP_SIGNAL_ICU_IRQ7, ///< ICU IRQ7 + FSP_SIGNAL_ICU_IRQ8, ///< ICU IRQ8 + FSP_SIGNAL_ICU_IRQ9, ///< ICU IRQ9 + FSP_SIGNAL_ICU_IRQ10, ///< ICU IRQ10 + FSP_SIGNAL_ICU_IRQ11, ///< ICU IRQ11 + FSP_SIGNAL_ICU_IRQ12, ///< ICU IRQ12 + FSP_SIGNAL_ICU_IRQ13, ///< ICU IRQ13 + FSP_SIGNAL_ICU_IRQ14, ///< ICU IRQ14 + FSP_SIGNAL_ICU_IRQ15, ///< ICU IRQ15 + FSP_SIGNAL_ICU_SNOOZE_CANCEL, ///< ICU SNOOZE CANCEL + FSP_SIGNAL_IIC_ERI = 0, ///< IIC ERI + FSP_SIGNAL_IIC_RXI, ///< IIC RXI + FSP_SIGNAL_IIC_TEI, ///< IIC TEI + FSP_SIGNAL_IIC_TXI, ///< IIC TXI + FSP_SIGNAL_IIC_WUI, ///< IIC WUI + FSP_SIGNAL_IOPORT_EVENT_1 = 0, ///< IOPORT EVENT 1 + FSP_SIGNAL_IOPORT_EVENT_2, ///< IOPORT EVENT 2 + FSP_SIGNAL_IOPORT_EVENT_3, ///< IOPORT EVENT 3 + FSP_SIGNAL_IOPORT_EVENT_4, ///< IOPORT EVENT 4 + FSP_SIGNAL_IOPORT_EVENT_B = 0, ///< IOPORT EVENT B + FSP_SIGNAL_IOPORT_EVENT_C, ///< IOPORT EVENT C + FSP_SIGNAL_IOPORT_EVENT_D, ///< IOPORT EVENT D + FSP_SIGNAL_IOPORT_EVENT_E, ///< IOPORT EVENT E + FSP_SIGNAL_IWDT_UNDERFLOW = 0, ///< IWDT UNDERFLOW + FSP_SIGNAL_JPEG_JDTI = 0, ///< JPEG JDTI + FSP_SIGNAL_JPEG_JEDI, ///< JPEG JEDI + FSP_SIGNAL_KEY_INT = 0, ///< KEY INT + FSP_SIGNAL_PDC_FRAME_END = 0, ///< PDC FRAME END + FSP_SIGNAL_PDC_INT, ///< PDC INT + FSP_SIGNAL_PDC_RECEIVE_DATA_READY, ///< PDC RECEIVE DATA READY + FSP_SIGNAL_POEG_EVENT = 0, ///< POEG EVENT + FSP_SIGNAL_QSPI_INT = 0, ///< QSPI INT + FSP_SIGNAL_RTC_ALARM = 0, ///< RTC ALARM + FSP_SIGNAL_RTC_PERIOD, ///< RTC PERIOD + FSP_SIGNAL_RTC_CARRY, ///< RTC CARRY + FSP_SIGNAL_SCE_INTEGRATE_RDRDY = 0, ///< SCE INTEGRATE RDRDY + FSP_SIGNAL_SCE_INTEGRATE_WRRDY, ///< SCE INTEGRATE WRRDY + FSP_SIGNAL_SCE_LONG_PLG, ///< SCE LONG PLG + FSP_SIGNAL_SCE_PROC_BUSY, ///< SCE PROC BUSY + FSP_SIGNAL_SCE_RDRDY_0, ///< SCE RDRDY 0 + FSP_SIGNAL_SCE_RDRDY_1, ///< SCE RDRDY 1 + FSP_SIGNAL_SCE_ROMOK, ///< SCE ROMOK + FSP_SIGNAL_SCE_TEST_BUSY, ///< SCE TEST BUSY + FSP_SIGNAL_SCE_WRRDY_0, ///< SCE WRRDY 0 + FSP_SIGNAL_SCE_WRRDY_1, ///< SCE WRRDY 1 + FSP_SIGNAL_SCE_WRRDY_4, ///< SCE WRRDY 4 + FSP_SIGNAL_SCI_AM = 0, ///< SCI AM + FSP_SIGNAL_SCI_ERI, ///< SCI ERI + FSP_SIGNAL_SCI_RXI, ///< SCI RXI + FSP_SIGNAL_SCI_RXI_OR_ERI, ///< SCI RXI OR ERI + FSP_SIGNAL_SCI_TEI, ///< SCI TEI + FSP_SIGNAL_SCI_TXI, ///< SCI TXI + FSP_SIGNAL_SDADC_ADI = 0, ///< SDADC ADI + FSP_SIGNAL_SDADC_SCANEND, ///< SDADC SCANEND + FSP_SIGNAL_SDADC_CALIEND, ///< SDADC CALIEND + FSP_SIGNAL_SDHIMMC_ACCS = 0, ///< SDHIMMC ACCS + FSP_SIGNAL_SDHIMMC_CARD, ///< SDHIMMC CARD + FSP_SIGNAL_SDHIMMC_DMA_REQ, ///< SDHIMMC DMA REQ + FSP_SIGNAL_SDHIMMC_SDIO, ///< SDHIMMC SDIO + FSP_SIGNAL_SPI_ERI = 0, ///< SPI ERI + FSP_SIGNAL_SPI_IDLE, ///< SPI IDLE + FSP_SIGNAL_SPI_RXI, ///< SPI RXI + FSP_SIGNAL_SPI_TEI, ///< SPI TEI + FSP_SIGNAL_SPI_TXI, ///< SPI TXI + FSP_SIGNAL_SRC_CONVERSION_END = 0, ///< SRC CONVERSION END + FSP_SIGNAL_SRC_INPUT_FIFO_EMPTY, ///< SRC INPUT FIFO EMPTY + FSP_SIGNAL_SRC_OUTPUT_FIFO_FULL, ///< SRC OUTPUT FIFO FULL + FSP_SIGNAL_SRC_OUTPUT_FIFO_OVERFLOW, ///< SRC OUTPUT FIFO OVERFLOW + FSP_SIGNAL_SRC_OUTPUT_FIFO_UNDERFLOW, ///< SRC OUTPUT FIFO UNDERFLOW + FSP_SIGNAL_SSI_INT = 0, ///< SSI INT + FSP_SIGNAL_SSI_RXI, ///< SSI RXI + FSP_SIGNAL_SSI_TXI, ///< SSI TXI + FSP_SIGNAL_SSI_TXI_RXI, ///< SSI TXI RXI + FSP_SIGNAL_TRNG_RDREQ = 0, ///< TRNG RDREQ + FSP_SIGNAL_USB_FIFO_0 = 0, ///< USB FIFO 0 + FSP_SIGNAL_USB_FIFO_1, ///< USB FIFO 1 + FSP_SIGNAL_USB_INT, ///< USB INT + FSP_SIGNAL_USB_RESUME, ///< USB RESUME + FSP_SIGNAL_USB_USB_INT_RESUME, ///< USB USB INT RESUME + FSP_SIGNAL_WDT_UNDERFLOW = 0, ///< WDT UNDERFLOW + FSP_SIGNAL_ULPT_COMPARE_A = 0, ///< ULPT COMPARE A + FSP_SIGNAL_ULPT_COMPARE_B, ///< ULPT COMPARE B + FSP_SIGNAL_ULPT_INT, ///< ULPT INT +} fsp_signal_t; + +typedef void (* fsp_vector_t)(void); + +/** @} (end addtogroup BSP_MCU) */ + +/** Common macro for FSP header files. There is also a corresponding FSP_HEADER macro at the top of this file. */ +FSP_FOOTER + +#endif diff --git a/bsp/renesas/ra8m1-ek/ra/fsp/inc/fsp_version.h b/bsp/renesas/ra8m1-ek/ra/fsp/inc/fsp_version.h new file mode 100644 index 000000000000..a3531570609d --- /dev/null +++ b/bsp/renesas/ra8m1-ek/ra/fsp/inc/fsp_version.h @@ -0,0 +1,90 @@ +/*********************************************************************************************************************** + * Copyright [2020-2023] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics America Inc. and may only be used with products + * of Renesas Electronics Corp. and its affiliates ("Renesas"). No other uses are authorized. Renesas products are + * sold pursuant to Renesas terms and conditions of sale. Purchasers are solely responsible for the selection and use + * of Renesas products and Renesas assumes no liability. No license, express or implied, to any intellectual property + * right is granted by Renesas. This software is protected under all applicable laws, including copyright laws. Renesas + * reserves the right to change or discontinue this software and/or this documentation. THE SOFTWARE AND DOCUMENTATION + * IS DELIVERED TO YOU "AS IS," AND RENESAS MAKES NO REPRESENTATIONS OR WARRANTIES, AND TO THE FULLEST EXTENT + * PERMISSIBLE UNDER APPLICABLE LAW, DISCLAIMS ALL WARRANTIES, WHETHER EXPLICITLY OR IMPLICITLY, INCLUDING WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT, WITH RESPECT TO THE SOFTWARE OR + * DOCUMENTATION. RENESAS SHALL HAVE NO LIABILITY ARISING OUT OF ANY SECURITY VULNERABILITY OR BREACH. TO THE MAXIMUM + * EXTENT PERMITTED BY LAW, IN NO EVENT WILL RENESAS BE LIABLE TO YOU IN CONNECTION WITH THE SOFTWARE OR DOCUMENTATION + * (OR ANY PERSON OR ENTITY CLAIMING RIGHTS DERIVED FROM YOU) FOR ANY LOSS, DAMAGES, OR CLAIMS WHATSOEVER, INCLUDING, + * WITHOUT LIMITATION, ANY DIRECT, CONSEQUENTIAL, SPECIAL, INDIRECT, PUNITIVE, OR INCIDENTAL DAMAGES; ANY LOST PROFITS, + * OTHER ECONOMIC DAMAGE, PROPERTY DAMAGE, OR PERSONAL INJURY; AND EVEN IF RENESAS HAS BEEN ADVISED OF THE POSSIBILITY + * OF SUCH LOSS, DAMAGES, CLAIMS OR COSTS. + **********************************************************************************************************************/ + +#ifndef FSP_VERSION_H + #define FSP_VERSION_H + +/*********************************************************************************************************************** + * Includes + **********************************************************************************************************************/ + +/* Includes board and MCU related header files. */ + #include "bsp_api.h" + +/*******************************************************************************************************************//** + * @addtogroup RENESAS_COMMON + * @{ + **********************************************************************************************************************/ + + #ifdef __cplusplus +extern "C" { + #endif + +/********************************************************************************************************************** + * Macro definitions + **********************************************************************************************************************/ + +/** FSP pack major version. */ + #define FSP_VERSION_MAJOR (5U) + +/** FSP pack minor version. */ + #define FSP_VERSION_MINOR (0U) + +/** FSP pack patch version. */ + #define FSP_VERSION_PATCH (0U) + +/** FSP pack version build number (currently unused). */ + #define FSP_VERSION_BUILD (0U) + +/** Public FSP version name. */ + #define FSP_VERSION_STRING ("5.0.0") + +/** Unique FSP version ID. */ + #define FSP_VERSION_BUILD_STRING ("Built with Renesas Advanced Flexible Software Package version 5.0.0") + +/********************************************************************************************************************** + * Typedef definitions + **********************************************************************************************************************/ + +/** FSP Pack version structure */ +typedef union st_fsp_pack_version +{ + /** Version id */ + uint32_t version_id; + + /** + * Code version parameters, little endian order. + */ + struct version_id_b_s + { + uint8_t build; ///< Build version of FSP Pack + uint8_t patch; ///< Patch version of FSP Pack + uint8_t minor; ///< Minor version of FSP Pack + uint8_t major; ///< Major version of FSP Pack + } version_id_b; +} fsp_pack_version_t; + +/** @} */ + + #ifdef __cplusplus +} + #endif + +#endif diff --git a/bsp/renesas/ra8m1-ek/ra/fsp/inc/instances/r_ioport.h b/bsp/renesas/ra8m1-ek/ra/fsp/inc/instances/r_ioport.h new file mode 100644 index 000000000000..99fa57daab70 --- /dev/null +++ b/bsp/renesas/ra8m1-ek/ra/fsp/inc/instances/r_ioport.h @@ -0,0 +1,527 @@ +/*********************************************************************************************************************** + * Copyright [2020-2023] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics America Inc. and may only be used with products + * of Renesas Electronics Corp. and its affiliates ("Renesas"). No other uses are authorized. Renesas products are + * sold pursuant to Renesas terms and conditions of sale. Purchasers are solely responsible for the selection and use + * of Renesas products and Renesas assumes no liability. No license, express or implied, to any intellectual property + * right is granted by Renesas. This software is protected under all applicable laws, including copyright laws. Renesas + * reserves the right to change or discontinue this software and/or this documentation. THE SOFTWARE AND DOCUMENTATION + * IS DELIVERED TO YOU "AS IS," AND RENESAS MAKES NO REPRESENTATIONS OR WARRANTIES, AND TO THE FULLEST EXTENT + * PERMISSIBLE UNDER APPLICABLE LAW, DISCLAIMS ALL WARRANTIES, WHETHER EXPLICITLY OR IMPLICITLY, INCLUDING WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT, WITH RESPECT TO THE SOFTWARE OR + * DOCUMENTATION. RENESAS SHALL HAVE NO LIABILITY ARISING OUT OF ANY SECURITY VULNERABILITY OR BREACH. TO THE MAXIMUM + * EXTENT PERMITTED BY LAW, IN NO EVENT WILL RENESAS BE LIABLE TO YOU IN CONNECTION WITH THE SOFTWARE OR DOCUMENTATION + * (OR ANY PERSON OR ENTITY CLAIMING RIGHTS DERIVED FROM YOU) FOR ANY LOSS, DAMAGES, OR CLAIMS WHATSOEVER, INCLUDING, + * WITHOUT LIMITATION, ANY DIRECT, CONSEQUENTIAL, SPECIAL, INDIRECT, PUNITIVE, OR INCIDENTAL DAMAGES; ANY LOST PROFITS, + * OTHER ECONOMIC DAMAGE, PROPERTY DAMAGE, OR PERSONAL INJURY; AND EVEN IF RENESAS HAS BEEN ADVISED OF THE POSSIBILITY + * OF SUCH LOSS, DAMAGES, CLAIMS OR COSTS. + **********************************************************************************************************************/ + +/*******************************************************************************************************************//** + * @addtogroup IOPORT + * @{ + **********************************************************************************************************************/ + +#ifndef R_IOPORT_H +#define R_IOPORT_H + +/*********************************************************************************************************************** + * Includes + **********************************************************************************************************************/ +#include "bsp_api.h" + +/* Common macro for FSP header files. There is also a corresponding FSP_FOOTER macro at the end of this file. */ +FSP_HEADER + +#include "r_ioport_api.h" +#if __has_include("r_ioport_cfg.h") + #include "r_ioport_cfg.h" +#endif + +/*********************************************************************************************************************** + * Macro definitions + **********************************************************************************************************************/ + +/* Private definition to set enumeration values. */ +#define IOPORT_PRV_PFS_PSEL_OFFSET (24) + +/*********************************************************************************************************************** + * Typedef definitions + **********************************************************************************************************************/ + +/** IOPORT private control block. DO NOT MODIFY. Initialization occurs when R_IOPORT_Open() is called. */ +typedef struct st_ioport_instance_ctrl +{ + uint32_t open; + void const * p_context; +} ioport_instance_ctrl_t; + +/* This typedef is here temporarily. See SWFLEX-144 for details. */ +/** Superset list of all possible IO port pins. */ +typedef enum e_ioport_port_pin_t +{ + IOPORT_PORT_00_PIN_00 = 0x0000, ///< IO port 0 pin 0 + IOPORT_PORT_00_PIN_01 = 0x0001, ///< IO port 0 pin 1 + IOPORT_PORT_00_PIN_02 = 0x0002, ///< IO port 0 pin 2 + IOPORT_PORT_00_PIN_03 = 0x0003, ///< IO port 0 pin 3 + IOPORT_PORT_00_PIN_04 = 0x0004, ///< IO port 0 pin 4 + IOPORT_PORT_00_PIN_05 = 0x0005, ///< IO port 0 pin 5 + IOPORT_PORT_00_PIN_06 = 0x0006, ///< IO port 0 pin 6 + IOPORT_PORT_00_PIN_07 = 0x0007, ///< IO port 0 pin 7 + IOPORT_PORT_00_PIN_08 = 0x0008, ///< IO port 0 pin 8 + IOPORT_PORT_00_PIN_09 = 0x0009, ///< IO port 0 pin 9 + IOPORT_PORT_00_PIN_10 = 0x000A, ///< IO port 0 pin 10 + IOPORT_PORT_00_PIN_11 = 0x000B, ///< IO port 0 pin 11 + IOPORT_PORT_00_PIN_12 = 0x000C, ///< IO port 0 pin 12 + IOPORT_PORT_00_PIN_13 = 0x000D, ///< IO port 0 pin 13 + IOPORT_PORT_00_PIN_14 = 0x000E, ///< IO port 0 pin 14 + IOPORT_PORT_00_PIN_15 = 0x000F, ///< IO port 0 pin 15 + + IOPORT_PORT_01_PIN_00 = 0x0100, ///< IO port 1 pin 0 + IOPORT_PORT_01_PIN_01 = 0x0101, ///< IO port 1 pin 1 + IOPORT_PORT_01_PIN_02 = 0x0102, ///< IO port 1 pin 2 + IOPORT_PORT_01_PIN_03 = 0x0103, ///< IO port 1 pin 3 + IOPORT_PORT_01_PIN_04 = 0x0104, ///< IO port 1 pin 4 + IOPORT_PORT_01_PIN_05 = 0x0105, ///< IO port 1 pin 5 + IOPORT_PORT_01_PIN_06 = 0x0106, ///< IO port 1 pin 6 + IOPORT_PORT_01_PIN_07 = 0x0107, ///< IO port 1 pin 7 + IOPORT_PORT_01_PIN_08 = 0x0108, ///< IO port 1 pin 8 + IOPORT_PORT_01_PIN_09 = 0x0109, ///< IO port 1 pin 9 + IOPORT_PORT_01_PIN_10 = 0x010A, ///< IO port 1 pin 10 + IOPORT_PORT_01_PIN_11 = 0x010B, ///< IO port 1 pin 11 + IOPORT_PORT_01_PIN_12 = 0x010C, ///< IO port 1 pin 12 + IOPORT_PORT_01_PIN_13 = 0x010D, ///< IO port 1 pin 13 + IOPORT_PORT_01_PIN_14 = 0x010E, ///< IO port 1 pin 14 + IOPORT_PORT_01_PIN_15 = 0x010F, ///< IO port 1 pin 15 + + IOPORT_PORT_02_PIN_00 = 0x0200, ///< IO port 2 pin 0 + IOPORT_PORT_02_PIN_01 = 0x0201, ///< IO port 2 pin 1 + IOPORT_PORT_02_PIN_02 = 0x0202, ///< IO port 2 pin 2 + IOPORT_PORT_02_PIN_03 = 0x0203, ///< IO port 2 pin 3 + IOPORT_PORT_02_PIN_04 = 0x0204, ///< IO port 2 pin 4 + IOPORT_PORT_02_PIN_05 = 0x0205, ///< IO port 2 pin 5 + IOPORT_PORT_02_PIN_06 = 0x0206, ///< IO port 2 pin 6 + IOPORT_PORT_02_PIN_07 = 0x0207, ///< IO port 2 pin 7 + IOPORT_PORT_02_PIN_08 = 0x0208, ///< IO port 2 pin 8 + IOPORT_PORT_02_PIN_09 = 0x0209, ///< IO port 2 pin 9 + IOPORT_PORT_02_PIN_10 = 0x020A, ///< IO port 2 pin 10 + IOPORT_PORT_02_PIN_11 = 0x020B, ///< IO port 2 pin 11 + IOPORT_PORT_02_PIN_12 = 0x020C, ///< IO port 2 pin 12 + IOPORT_PORT_02_PIN_13 = 0x020D, ///< IO port 2 pin 13 + IOPORT_PORT_02_PIN_14 = 0x020E, ///< IO port 2 pin 14 + IOPORT_PORT_02_PIN_15 = 0x020F, ///< IO port 2 pin 15 + + IOPORT_PORT_03_PIN_00 = 0x0300, ///< IO port 3 pin 0 + IOPORT_PORT_03_PIN_01 = 0x0301, ///< IO port 3 pin 1 + IOPORT_PORT_03_PIN_02 = 0x0302, ///< IO port 3 pin 2 + IOPORT_PORT_03_PIN_03 = 0x0303, ///< IO port 3 pin 3 + IOPORT_PORT_03_PIN_04 = 0x0304, ///< IO port 3 pin 4 + IOPORT_PORT_03_PIN_05 = 0x0305, ///< IO port 3 pin 5 + IOPORT_PORT_03_PIN_06 = 0x0306, ///< IO port 3 pin 6 + IOPORT_PORT_03_PIN_07 = 0x0307, ///< IO port 3 pin 7 + IOPORT_PORT_03_PIN_08 = 0x0308, ///< IO port 3 pin 8 + IOPORT_PORT_03_PIN_09 = 0x0309, ///< IO port 3 pin 9 + IOPORT_PORT_03_PIN_10 = 0x030A, ///< IO port 3 pin 10 + IOPORT_PORT_03_PIN_11 = 0x030B, ///< IO port 3 pin 11 + IOPORT_PORT_03_PIN_12 = 0x030C, ///< IO port 3 pin 12 + IOPORT_PORT_03_PIN_13 = 0x030D, ///< IO port 3 pin 13 + IOPORT_PORT_03_PIN_14 = 0x030E, ///< IO port 3 pin 14 + IOPORT_PORT_03_PIN_15 = 0x030F, ///< IO port 3 pin 15 + + IOPORT_PORT_04_PIN_00 = 0x0400, ///< IO port 4 pin 0 + IOPORT_PORT_04_PIN_01 = 0x0401, ///< IO port 4 pin 1 + IOPORT_PORT_04_PIN_02 = 0x0402, ///< IO port 4 pin 2 + IOPORT_PORT_04_PIN_03 = 0x0403, ///< IO port 4 pin 3 + IOPORT_PORT_04_PIN_04 = 0x0404, ///< IO port 4 pin 4 + IOPORT_PORT_04_PIN_05 = 0x0405, ///< IO port 4 pin 5 + IOPORT_PORT_04_PIN_06 = 0x0406, ///< IO port 4 pin 6 + IOPORT_PORT_04_PIN_07 = 0x0407, ///< IO port 4 pin 7 + IOPORT_PORT_04_PIN_08 = 0x0408, ///< IO port 4 pin 8 + IOPORT_PORT_04_PIN_09 = 0x0409, ///< IO port 4 pin 9 + IOPORT_PORT_04_PIN_10 = 0x040A, ///< IO port 4 pin 10 + IOPORT_PORT_04_PIN_11 = 0x040B, ///< IO port 4 pin 11 + IOPORT_PORT_04_PIN_12 = 0x040C, ///< IO port 4 pin 12 + IOPORT_PORT_04_PIN_13 = 0x040D, ///< IO port 4 pin 13 + IOPORT_PORT_04_PIN_14 = 0x040E, ///< IO port 4 pin 14 + IOPORT_PORT_04_PIN_15 = 0x040F, ///< IO port 4 pin 15 + + IOPORT_PORT_05_PIN_00 = 0x0500, ///< IO port 5 pin 0 + IOPORT_PORT_05_PIN_01 = 0x0501, ///< IO port 5 pin 1 + IOPORT_PORT_05_PIN_02 = 0x0502, ///< IO port 5 pin 2 + IOPORT_PORT_05_PIN_03 = 0x0503, ///< IO port 5 pin 3 + IOPORT_PORT_05_PIN_04 = 0x0504, ///< IO port 5 pin 4 + IOPORT_PORT_05_PIN_05 = 0x0505, ///< IO port 5 pin 5 + IOPORT_PORT_05_PIN_06 = 0x0506, ///< IO port 5 pin 6 + IOPORT_PORT_05_PIN_07 = 0x0507, ///< IO port 5 pin 7 + IOPORT_PORT_05_PIN_08 = 0x0508, ///< IO port 5 pin 8 + IOPORT_PORT_05_PIN_09 = 0x0509, ///< IO port 5 pin 9 + IOPORT_PORT_05_PIN_10 = 0x050A, ///< IO port 5 pin 10 + IOPORT_PORT_05_PIN_11 = 0x050B, ///< IO port 5 pin 11 + IOPORT_PORT_05_PIN_12 = 0x050C, ///< IO port 5 pin 12 + IOPORT_PORT_05_PIN_13 = 0x050D, ///< IO port 5 pin 13 + IOPORT_PORT_05_PIN_14 = 0x050E, ///< IO port 5 pin 14 + IOPORT_PORT_05_PIN_15 = 0x050F, ///< IO port 5 pin 15 + + IOPORT_PORT_06_PIN_00 = 0x0600, ///< IO port 6 pin 0 + IOPORT_PORT_06_PIN_01 = 0x0601, ///< IO port 6 pin 1 + IOPORT_PORT_06_PIN_02 = 0x0602, ///< IO port 6 pin 2 + IOPORT_PORT_06_PIN_03 = 0x0603, ///< IO port 6 pin 3 + IOPORT_PORT_06_PIN_04 = 0x0604, ///< IO port 6 pin 4 + IOPORT_PORT_06_PIN_05 = 0x0605, ///< IO port 6 pin 5 + IOPORT_PORT_06_PIN_06 = 0x0606, ///< IO port 6 pin 6 + IOPORT_PORT_06_PIN_07 = 0x0607, ///< IO port 6 pin 7 + IOPORT_PORT_06_PIN_08 = 0x0608, ///< IO port 6 pin 8 + IOPORT_PORT_06_PIN_09 = 0x0609, ///< IO port 6 pin 9 + IOPORT_PORT_06_PIN_10 = 0x060A, ///< IO port 6 pin 10 + IOPORT_PORT_06_PIN_11 = 0x060B, ///< IO port 6 pin 11 + IOPORT_PORT_06_PIN_12 = 0x060C, ///< IO port 6 pin 12 + IOPORT_PORT_06_PIN_13 = 0x060D, ///< IO port 6 pin 13 + IOPORT_PORT_06_PIN_14 = 0x060E, ///< IO port 6 pin 14 + IOPORT_PORT_06_PIN_15 = 0x060F, ///< IO port 6 pin 15 + + IOPORT_PORT_07_PIN_00 = 0x0700, ///< IO port 7 pin 0 + IOPORT_PORT_07_PIN_01 = 0x0701, ///< IO port 7 pin 1 + IOPORT_PORT_07_PIN_02 = 0x0702, ///< IO port 7 pin 2 + IOPORT_PORT_07_PIN_03 = 0x0703, ///< IO port 7 pin 3 + IOPORT_PORT_07_PIN_04 = 0x0704, ///< IO port 7 pin 4 + IOPORT_PORT_07_PIN_05 = 0x0705, ///< IO port 7 pin 5 + IOPORT_PORT_07_PIN_06 = 0x0706, ///< IO port 7 pin 6 + IOPORT_PORT_07_PIN_07 = 0x0707, ///< IO port 7 pin 7 + IOPORT_PORT_07_PIN_08 = 0x0708, ///< IO port 7 pin 8 + IOPORT_PORT_07_PIN_09 = 0x0709, ///< IO port 7 pin 9 + IOPORT_PORT_07_PIN_10 = 0x070A, ///< IO port 7 pin 10 + IOPORT_PORT_07_PIN_11 = 0x070B, ///< IO port 7 pin 11 + IOPORT_PORT_07_PIN_12 = 0x070C, ///< IO port 7 pin 12 + IOPORT_PORT_07_PIN_13 = 0x070D, ///< IO port 7 pin 13 + IOPORT_PORT_07_PIN_14 = 0x070E, ///< IO port 7 pin 14 + IOPORT_PORT_07_PIN_15 = 0x070F, ///< IO port 7 pin 15 + + IOPORT_PORT_08_PIN_00 = 0x0800, ///< IO port 8 pin 0 + IOPORT_PORT_08_PIN_01 = 0x0801, ///< IO port 8 pin 1 + IOPORT_PORT_08_PIN_02 = 0x0802, ///< IO port 8 pin 2 + IOPORT_PORT_08_PIN_03 = 0x0803, ///< IO port 8 pin 3 + IOPORT_PORT_08_PIN_04 = 0x0804, ///< IO port 8 pin 4 + IOPORT_PORT_08_PIN_05 = 0x0805, ///< IO port 8 pin 5 + IOPORT_PORT_08_PIN_06 = 0x0806, ///< IO port 8 pin 6 + IOPORT_PORT_08_PIN_07 = 0x0807, ///< IO port 8 pin 7 + IOPORT_PORT_08_PIN_08 = 0x0808, ///< IO port 8 pin 8 + IOPORT_PORT_08_PIN_09 = 0x0809, ///< IO port 8 pin 9 + IOPORT_PORT_08_PIN_10 = 0x080A, ///< IO port 8 pin 10 + IOPORT_PORT_08_PIN_11 = 0x080B, ///< IO port 8 pin 11 + IOPORT_PORT_08_PIN_12 = 0x080C, ///< IO port 8 pin 12 + IOPORT_PORT_08_PIN_13 = 0x080D, ///< IO port 8 pin 13 + IOPORT_PORT_08_PIN_14 = 0x080E, ///< IO port 8 pin 14 + IOPORT_PORT_08_PIN_15 = 0x080F, ///< IO port 8 pin 15 + + IOPORT_PORT_09_PIN_00 = 0x0900, ///< IO port 9 pin 0 + IOPORT_PORT_09_PIN_01 = 0x0901, ///< IO port 9 pin 1 + IOPORT_PORT_09_PIN_02 = 0x0902, ///< IO port 9 pin 2 + IOPORT_PORT_09_PIN_03 = 0x0903, ///< IO port 9 pin 3 + IOPORT_PORT_09_PIN_04 = 0x0904, ///< IO port 9 pin 4 + IOPORT_PORT_09_PIN_05 = 0x0905, ///< IO port 9 pin 5 + IOPORT_PORT_09_PIN_06 = 0x0906, ///< IO port 9 pin 6 + IOPORT_PORT_09_PIN_07 = 0x0907, ///< IO port 9 pin 7 + IOPORT_PORT_09_PIN_08 = 0x0908, ///< IO port 9 pin 8 + IOPORT_PORT_09_PIN_09 = 0x0909, ///< IO port 9 pin 9 + IOPORT_PORT_09_PIN_10 = 0x090A, ///< IO port 9 pin 10 + IOPORT_PORT_09_PIN_11 = 0x090B, ///< IO port 9 pin 11 + IOPORT_PORT_09_PIN_12 = 0x090C, ///< IO port 9 pin 12 + IOPORT_PORT_09_PIN_13 = 0x090D, ///< IO port 9 pin 13 + IOPORT_PORT_09_PIN_14 = 0x090E, ///< IO port 9 pin 14 + IOPORT_PORT_09_PIN_15 = 0x090F, ///< IO port 9 pin 15 + + IOPORT_PORT_10_PIN_00 = 0x0A00, ///< IO port 10 pin 0 + IOPORT_PORT_10_PIN_01 = 0x0A01, ///< IO port 10 pin 1 + IOPORT_PORT_10_PIN_02 = 0x0A02, ///< IO port 10 pin 2 + IOPORT_PORT_10_PIN_03 = 0x0A03, ///< IO port 10 pin 3 + IOPORT_PORT_10_PIN_04 = 0x0A04, ///< IO port 10 pin 4 + IOPORT_PORT_10_PIN_05 = 0x0A05, ///< IO port 10 pin 5 + IOPORT_PORT_10_PIN_06 = 0x0A06, ///< IO port 10 pin 6 + IOPORT_PORT_10_PIN_07 = 0x0A07, ///< IO port 10 pin 7 + IOPORT_PORT_10_PIN_08 = 0x0A08, ///< IO port 10 pin 8 + IOPORT_PORT_10_PIN_09 = 0x0A09, ///< IO port 10 pin 9 + IOPORT_PORT_10_PIN_10 = 0x0A0A, ///< IO port 10 pin 10 + IOPORT_PORT_10_PIN_11 = 0x0A0B, ///< IO port 10 pin 11 + IOPORT_PORT_10_PIN_12 = 0x0A0C, ///< IO port 10 pin 12 + IOPORT_PORT_10_PIN_13 = 0x0A0D, ///< IO port 10 pin 13 + IOPORT_PORT_10_PIN_14 = 0x0A0E, ///< IO port 10 pin 14 + IOPORT_PORT_10_PIN_15 = 0x0A0F, ///< IO port 10 pin 15 + + IOPORT_PORT_11_PIN_00 = 0x0B00, ///< IO port 11 pin 0 + IOPORT_PORT_11_PIN_01 = 0x0B01, ///< IO port 11 pin 1 + IOPORT_PORT_11_PIN_02 = 0x0B02, ///< IO port 11 pin 2 + IOPORT_PORT_11_PIN_03 = 0x0B03, ///< IO port 11 pin 3 + IOPORT_PORT_11_PIN_04 = 0x0B04, ///< IO port 11 pin 4 + IOPORT_PORT_11_PIN_05 = 0x0B05, ///< IO port 11 pin 5 + IOPORT_PORT_11_PIN_06 = 0x0B06, ///< IO port 11 pin 6 + IOPORT_PORT_11_PIN_07 = 0x0B07, ///< IO port 11 pin 7 + IOPORT_PORT_11_PIN_08 = 0x0B08, ///< IO port 11 pin 8 + IOPORT_PORT_11_PIN_09 = 0x0B09, ///< IO port 11 pin 9 + IOPORT_PORT_11_PIN_10 = 0x0B0A, ///< IO port 11 pin 10 + IOPORT_PORT_11_PIN_11 = 0x0B0B, ///< IO port 11 pin 11 + IOPORT_PORT_11_PIN_12 = 0x0B0C, ///< IO port 11 pin 12 + IOPORT_PORT_11_PIN_13 = 0x0B0D, ///< IO port 11 pin 13 + IOPORT_PORT_11_PIN_14 = 0x0B0E, ///< IO port 11 pin 14 + IOPORT_PORT_11_PIN_15 = 0x0B0F, ///< IO port 11 pin 15 + + IOPORT_PORT_12_PIN_00 = 0x0C00, ///< IO port 12 pin 0 + IOPORT_PORT_12_PIN_01 = 0x0C01, ///< IO port 12 pin 1 + IOPORT_PORT_12_PIN_02 = 0x0C02, ///< IO port 12 pin 2 + IOPORT_PORT_12_PIN_03 = 0x0C03, ///< IO port 12 pin 3 + IOPORT_PORT_12_PIN_04 = 0x0C04, ///< IO port 12 pin 4 + IOPORT_PORT_12_PIN_05 = 0x0C05, ///< IO port 12 pin 5 + IOPORT_PORT_12_PIN_06 = 0x0C06, ///< IO port 12 pin 6 + IOPORT_PORT_12_PIN_07 = 0x0C07, ///< IO port 12 pin 7 + IOPORT_PORT_12_PIN_08 = 0x0C08, ///< IO port 12 pin 8 + IOPORT_PORT_12_PIN_09 = 0x0C09, ///< IO port 12 pin 9 + IOPORT_PORT_12_PIN_10 = 0x0C0A, ///< IO port 12 pin 10 + IOPORT_PORT_12_PIN_11 = 0x0C0B, ///< IO port 12 pin 11 + IOPORT_PORT_12_PIN_12 = 0x0C0C, ///< IO port 12 pin 12 + IOPORT_PORT_12_PIN_13 = 0x0C0D, ///< IO port 12 pin 13 + IOPORT_PORT_12_PIN_14 = 0x0C0E, ///< IO port 12 pin 14 + IOPORT_PORT_12_PIN_15 = 0x0C0F, ///< IO port 12 pin 15 + + IOPORT_PORT_13_PIN_00 = 0x0D00, ///< IO port 13 pin 0 + IOPORT_PORT_13_PIN_01 = 0x0D01, ///< IO port 13 pin 1 + IOPORT_PORT_13_PIN_02 = 0x0D02, ///< IO port 13 pin 2 + IOPORT_PORT_13_PIN_03 = 0x0D03, ///< IO port 13 pin 3 + IOPORT_PORT_13_PIN_04 = 0x0D04, ///< IO port 13 pin 4 + IOPORT_PORT_13_PIN_05 = 0x0D05, ///< IO port 13 pin 5 + IOPORT_PORT_13_PIN_06 = 0x0D06, ///< IO port 13 pin 6 + IOPORT_PORT_13_PIN_07 = 0x0D07, ///< IO port 13 pin 7 + IOPORT_PORT_13_PIN_08 = 0x0D08, ///< IO port 13 pin 8 + IOPORT_PORT_13_PIN_09 = 0x0D09, ///< IO port 13 pin 9 + IOPORT_PORT_13_PIN_10 = 0x0D0A, ///< IO port 13 pin 10 + IOPORT_PORT_13_PIN_11 = 0x0D0B, ///< IO port 13 pin 11 + IOPORT_PORT_13_PIN_12 = 0x0D0C, ///< IO port 13 pin 12 + IOPORT_PORT_13_PIN_13 = 0x0D0D, ///< IO port 13 pin 13 + IOPORT_PORT_13_PIN_14 = 0x0D0E, ///< IO port 13 pin 14 + IOPORT_PORT_13_PIN_15 = 0x0D0F, ///< IO port 13 pin 15 + + IOPORT_PORT_14_PIN_00 = 0x0E00, ///< IO port 14 pin 0 + IOPORT_PORT_14_PIN_01 = 0x0E01, ///< IO port 14 pin 1 + IOPORT_PORT_14_PIN_02 = 0x0E02, ///< IO port 14 pin 2 + IOPORT_PORT_14_PIN_03 = 0x0E03, ///< IO port 14 pin 3 + IOPORT_PORT_14_PIN_04 = 0x0E04, ///< IO port 14 pin 4 + IOPORT_PORT_14_PIN_05 = 0x0E05, ///< IO port 14 pin 5 + IOPORT_PORT_14_PIN_06 = 0x0E06, ///< IO port 14 pin 6 + IOPORT_PORT_14_PIN_07 = 0x0E07, ///< IO port 14 pin 7 + IOPORT_PORT_14_PIN_08 = 0x0E08, ///< IO port 14 pin 8 + IOPORT_PORT_14_PIN_09 = 0x0E09, ///< IO port 14 pin 9 + IOPORT_PORT_14_PIN_10 = 0x0E0A, ///< IO port 14 pin 10 + IOPORT_PORT_14_PIN_11 = 0x0E0B, ///< IO port 14 pin 11 + IOPORT_PORT_14_PIN_12 = 0x0E0C, ///< IO port 14 pin 12 + IOPORT_PORT_14_PIN_13 = 0x0E0D, ///< IO port 14 pin 13 + IOPORT_PORT_14_PIN_14 = 0x0E0E, ///< IO port 14 pin 14 + IOPORT_PORT_14_PIN_15 = 0x0E0F, ///< IO port 14 pin 15 +} ioport_port_pin_t; + +/** Superset of all peripheral functions. */ +typedef enum e_ioport_peripheral +{ + /** Pin will functions as an IO pin */ + IOPORT_PERIPHERAL_IO = 0x00, + + /** Pin will function as a DEBUG pin */ + IOPORT_PERIPHERAL_DEBUG = (0x00UL << IOPORT_PRV_PFS_PSEL_OFFSET), + + /** Pin will function as an AGT peripheral pin */ + IOPORT_PERIPHERAL_AGT = (0x01UL << IOPORT_PRV_PFS_PSEL_OFFSET), + + /** Pin will function as an AGT peripheral pin */ + IOPORT_PERIPHERAL_AGTW = (0x01UL << IOPORT_PRV_PFS_PSEL_OFFSET), + + /** Pin will function as an AGT peripheral pin */ + IOPORT_PERIPHERAL_AGT1 = (0x18UL << IOPORT_PRV_PFS_PSEL_OFFSET), + + /** Pin will function as a GPT peripheral pin */ + IOPORT_PERIPHERAL_GPT0 = (0x02UL << IOPORT_PRV_PFS_PSEL_OFFSET), + + /** Pin will function as a GPT peripheral pin */ + IOPORT_PERIPHERAL_GPT1 = (0x03UL << IOPORT_PRV_PFS_PSEL_OFFSET), + + /** Pin will function as an SCI peripheral pin */ + IOPORT_PERIPHERAL_SCI0_2_4_6_8 = (0x04UL << IOPORT_PRV_PFS_PSEL_OFFSET), + + /** Pin will function as an SCI peripheral pin */ + IOPORT_PERIPHERAL_SCI1_3_5_7_9 = (0x05UL << IOPORT_PRV_PFS_PSEL_OFFSET), + + /** Pin will function as a SPI peripheral pin */ + IOPORT_PERIPHERAL_SPI = (0x06UL << IOPORT_PRV_PFS_PSEL_OFFSET), + + /** Pin will function as a IIC peripheral pin */ + IOPORT_PERIPHERAL_IIC = (0x07UL << IOPORT_PRV_PFS_PSEL_OFFSET), + + /** Pin will function as a KEY peripheral pin */ + IOPORT_PERIPHERAL_KEY = (0x08UL << IOPORT_PRV_PFS_PSEL_OFFSET), + + /** Pin will function as a clock/comparator/RTC peripheral pin */ + IOPORT_PERIPHERAL_CLKOUT_COMP_RTC = (0x09UL << IOPORT_PRV_PFS_PSEL_OFFSET), + + /** Pin will function as a CAC/ADC peripheral pin */ + IOPORT_PERIPHERAL_CAC_AD = (0x0AUL << IOPORT_PRV_PFS_PSEL_OFFSET), + + /** Pin will function as a BUS peripheral pin */ + IOPORT_PERIPHERAL_BUS = (0x0BUL << IOPORT_PRV_PFS_PSEL_OFFSET), + + /** Pin will function as a CTSU peripheral pin */ + IOPORT_PERIPHERAL_CTSU = (0x0CUL << IOPORT_PRV_PFS_PSEL_OFFSET), + + /** Pin will function as a CMPHS peripheral pin */ + IOPORT_PERIPHERAL_ACMPHS = (0x0CUL << IOPORT_PRV_PFS_PSEL_OFFSET), + + /** Pin will function as a segment LCD peripheral pin */ + IOPORT_PERIPHERAL_LCDC = (0x0DUL << IOPORT_PRV_PFS_PSEL_OFFSET), + +#if BSP_FEATURE_SCI_UART_DE_IS_INVERTED + + /** Pin will function as an SCI peripheral DEn pin */ + IOPORT_PERIPHERAL_DE_SCI1_3_5_7_9 = (0x0DUL << IOPORT_PRV_PFS_PSEL_OFFSET), + + /** Pin will function as an SCI DEn peripheral pin */ + IOPORT_PERIPHERAL_DE_SCI0_2_4_6_8 = (0x0EUL << IOPORT_PRV_PFS_PSEL_OFFSET), +#else + + /** Pin will function as an SCI peripheral DEn pin */ + IOPORT_PERIPHERAL_DE_SCI0_2_4_6_8 = (0x0DUL << IOPORT_PRV_PFS_PSEL_OFFSET), + + /** Pin will function as an SCI DEn peripheral pin */ + IOPORT_PERIPHERAL_DE_SCI1_3_5_7_9 = (0x0EUL << IOPORT_PRV_PFS_PSEL_OFFSET), +#endif + + /** Pin will function as a DALI peripheral pin */ + IOPORT_PERIPHERAL_DALI = (0x0EUL << IOPORT_PRV_PFS_PSEL_OFFSET), + + /** Pin will function as a CEU peripheral pin */ + IOPORT_PERIPHERAL_CEU = (0x0FUL << IOPORT_PRV_PFS_PSEL_OFFSET), + + /** Pin will function as a CAN peripheral pin */ + IOPORT_PERIPHERAL_CAN = (0x10UL << IOPORT_PRV_PFS_PSEL_OFFSET), + + /** Pin will function as a QSPI peripheral pin */ + IOPORT_PERIPHERAL_QSPI = (0x11UL << IOPORT_PRV_PFS_PSEL_OFFSET), + + /** Pin will function as an SSI peripheral pin */ + IOPORT_PERIPHERAL_SSI = (0x12UL << IOPORT_PRV_PFS_PSEL_OFFSET), + + /** Pin will function as a USB full speed peripheral pin */ + IOPORT_PERIPHERAL_USB_FS = (0x13UL << IOPORT_PRV_PFS_PSEL_OFFSET), + + /** Pin will function as a USB high speed peripheral pin */ + IOPORT_PERIPHERAL_USB_HS = (0x14UL << IOPORT_PRV_PFS_PSEL_OFFSET), + + /** Pin will function as a GPT peripheral pin */ + IOPORT_PERIPHERAL_GPT2 = (0x14UL << IOPORT_PRV_PFS_PSEL_OFFSET), + + /** Pin will function as an SD/MMC peripheral pin */ + IOPORT_PERIPHERAL_SDHI_MMC = (0x15UL << IOPORT_PRV_PFS_PSEL_OFFSET), + + /** Pin will function as a GPT peripheral pin */ + IOPORT_PERIPHERAL_GPT3 = (0x15UL << IOPORT_PRV_PFS_PSEL_OFFSET), + + /** Pin will function as an Ethernet MMI peripheral pin */ + IOPORT_PERIPHERAL_ETHER_MII = (0x16UL << IOPORT_PRV_PFS_PSEL_OFFSET), + + /** Pin will function as a GPT peripheral pin */ + IOPORT_PERIPHERAL_GPT4 = (0x16UL << IOPORT_PRV_PFS_PSEL_OFFSET), + + /** Pin will function as an Ethernet RMMI peripheral pin */ + IOPORT_PERIPHERAL_ETHER_RMII = (0x17UL << IOPORT_PRV_PFS_PSEL_OFFSET), + + /** Pin will function as a PDC peripheral pin */ + IOPORT_PERIPHERAL_PDC = (0x18UL << IOPORT_PRV_PFS_PSEL_OFFSET), + + /** Pin will function as a graphics LCD peripheral pin */ + IOPORT_PERIPHERAL_LCD_GRAPHICS = (0x19UL << IOPORT_PRV_PFS_PSEL_OFFSET), + + /** Pin will function as a CAC peripheral pin */ + IOPORT_PERIPHERAL_CAC = (0x19UL << IOPORT_PRV_PFS_PSEL_OFFSET), + + /** Pin will function as a debug trace peripheral pin */ + IOPORT_PERIPHERAL_TRACE = (0x1AUL << IOPORT_PRV_PFS_PSEL_OFFSET), + + /** Pin will function as a OSPI peripheral pin */ + IOPORT_PERIPHERAL_OSPI = (0x1CUL << IOPORT_PRV_PFS_PSEL_OFFSET), + + /** Pin will function as a CEC peripheral pin */ + IOPORT_PERIPHERAL_CEC = (0x1DUL << IOPORT_PRV_PFS_PSEL_OFFSET), + + /** Pin will function as a PGAOUT peripheral pin */ + IOPORT_PERIPHERAL_PGAOUT0 = (0x1DUL << IOPORT_PRV_PFS_PSEL_OFFSET), + + /** Pin will function as a PGAOUT peripheral pin */ + IOPORT_PERIPHERAL_PGAOUT1 = (0x1EUL << IOPORT_PRV_PFS_PSEL_OFFSET), + + /** Pin will function as a ULPT peripheral pin */ + IOPORT_PERIPHERAL_ULPT = (0x1EUL << IOPORT_PRV_PFS_PSEL_OFFSET), + + /** Pin will function as a MIPI DSI peripheral pin */ + IOPORT_PERIPHERAL_MIPI = (0x1FUL << IOPORT_PRV_PFS_PSEL_OFFSET), +} ioport_peripheral_t; + +/** Options to configure pin functions */ +typedef enum e_ioport_cfg_options +{ + IOPORT_CFG_PORT_DIRECTION_INPUT = 0x00000000, ///< Sets the pin direction to input (default) + IOPORT_CFG_PORT_DIRECTION_OUTPUT = 0x00000004, ///< Sets the pin direction to output + IOPORT_CFG_PORT_OUTPUT_LOW = 0x00000000, ///< Sets the pin level to low + IOPORT_CFG_PORT_OUTPUT_HIGH = 0x00000001, ///< Sets the pin level to high + IOPORT_CFG_PULLUP_ENABLE = 0x00000010, ///< Enables the pin's internal pull-up + IOPORT_CFG_PIM_TTL = 0x00000020, ///< Enables the pin's input mode + IOPORT_CFG_NMOS_ENABLE = 0x00000040, ///< Enables the pin's NMOS open-drain output + IOPORT_CFG_PMOS_ENABLE = 0x00000080, ///< Enables the pin's PMOS open-drain ouput + IOPORT_CFG_DRIVE_MID = 0x00000400, ///< Sets pin drive output to medium + IOPORT_CFG_DRIVE_HS_HIGH = 0x00000800, ///< Sets pin drive output to high along with supporting high speed + IOPORT_CFG_DRIVE_MID_IIC = 0x00000C00, ///< Sets pin to drive output needed for IIC on a 20mA port + IOPORT_CFG_DRIVE_HIGH = 0x00000C00, ///< Sets pin drive output to high + IOPORT_CFG_EVENT_RISING_EDGE = 0x00001000, ///< Sets pin event trigger to rising edge + IOPORT_CFG_EVENT_FALLING_EDGE = 0x00002000, ///< Sets pin event trigger to falling edge + IOPORT_CFG_EVENT_BOTH_EDGES = 0x00003000, ///< Sets pin event trigger to both edges + IOPORT_CFG_IRQ_ENABLE = 0x00004000, ///< Sets pin as an IRQ pin + IOPORT_CFG_ANALOG_ENABLE = 0x00008000, ///< Enables pin to operate as an analog pin + IOPORT_CFG_PERIPHERAL_PIN = 0x00010000 ///< Enables pin to operate as a peripheral pin +} ioport_cfg_options_t; + +/********************************************************************************************************************** + * Exported global variables + **********************************************************************************************************************/ + +/** @cond INC_HEADER_DEFS_SEC */ +/** Filled in Interface API structure for this Instance. */ +extern const ioport_api_t g_ioport_on_ioport; + +/** @endcond */ + +/*********************************************************************************************************************** + * Public APIs + **********************************************************************************************************************/ + +fsp_err_t R_IOPORT_Open(ioport_ctrl_t * const p_ctrl, const ioport_cfg_t * p_cfg); +fsp_err_t R_IOPORT_Close(ioport_ctrl_t * const p_ctrl); +fsp_err_t R_IOPORT_PinsCfg(ioport_ctrl_t * const p_ctrl, const ioport_cfg_t * p_cfg); +fsp_err_t R_IOPORT_PinCfg(ioport_ctrl_t * const p_ctrl, bsp_io_port_pin_t pin, uint32_t cfg); +fsp_err_t R_IOPORT_PinEventInputRead(ioport_ctrl_t * const p_ctrl, bsp_io_port_pin_t pin, bsp_io_level_t * p_pin_event); +fsp_err_t R_IOPORT_PinEventOutputWrite(ioport_ctrl_t * const p_ctrl, bsp_io_port_pin_t pin, bsp_io_level_t pin_value); +fsp_err_t R_IOPORT_PinRead(ioport_ctrl_t * const p_ctrl, bsp_io_port_pin_t pin, bsp_io_level_t * p_pin_value); +fsp_err_t R_IOPORT_PinWrite(ioport_ctrl_t * const p_ctrl, bsp_io_port_pin_t pin, bsp_io_level_t level); +fsp_err_t R_IOPORT_PortDirectionSet(ioport_ctrl_t * const p_ctrl, + bsp_io_port_t port, + ioport_size_t direction_values, + ioport_size_t mask); +fsp_err_t R_IOPORT_PortEventInputRead(ioport_ctrl_t * const p_ctrl, bsp_io_port_t port, ioport_size_t * event_data); +fsp_err_t R_IOPORT_PortEventOutputWrite(ioport_ctrl_t * const p_ctrl, + bsp_io_port_t port, + ioport_size_t event_data, + ioport_size_t mask_value); +fsp_err_t R_IOPORT_PortRead(ioport_ctrl_t * const p_ctrl, bsp_io_port_t port, ioport_size_t * p_port_value); +fsp_err_t R_IOPORT_PortWrite(ioport_ctrl_t * const p_ctrl, bsp_io_port_t port, ioport_size_t value, ioport_size_t mask); + +/*******************************************************************************************************************//** + * @} (end defgroup IOPORT) + **********************************************************************************************************************/ + +/* Common macro for FSP header files. There is also a corresponding FSP_HEADER macro at the top of this file. */ +FSP_FOOTER + +#endif // R_IOPORT_H diff --git a/bsp/renesas/ra8m1-ek/ra/fsp/inc/instances/r_sci_b_uart.h b/bsp/renesas/ra8m1-ek/ra/fsp/inc/instances/r_sci_b_uart.h new file mode 100644 index 000000000000..11529a431440 --- /dev/null +++ b/bsp/renesas/ra8m1-ek/ra/fsp/inc/instances/r_sci_b_uart.h @@ -0,0 +1,218 @@ +/*********************************************************************************************************************** + * Copyright [2020-2023] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics America Inc. and may only be used with products + * of Renesas Electronics Corp. and its affiliates ("Renesas"). No other uses are authorized. Renesas products are + * sold pursuant to Renesas terms and conditions of sale. Purchasers are solely responsible for the selection and use + * of Renesas products and Renesas assumes no liability. No license, express or implied, to any intellectual property + * right is granted by Renesas. This software is protected under all applicable laws, including copyright laws. Renesas + * reserves the right to change or discontinue this software and/or this documentation. THE SOFTWARE AND DOCUMENTATION + * IS DELIVERED TO YOU "AS IS," AND RENESAS MAKES NO REPRESENTATIONS OR WARRANTIES, AND TO THE FULLEST EXTENT + * PERMISSIBLE UNDER APPLICABLE LAW, DISCLAIMS ALL WARRANTIES, WHETHER EXPLICITLY OR IMPLICITLY, INCLUDING WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT, WITH RESPECT TO THE SOFTWARE OR + * DOCUMENTATION. RENESAS SHALL HAVE NO LIABILITY ARISING OUT OF ANY SECURITY VULNERABILITY OR BREACH. TO THE MAXIMUM + * EXTENT PERMITTED BY LAW, IN NO EVENT WILL RENESAS BE LIABLE TO YOU IN CONNECTION WITH THE SOFTWARE OR DOCUMENTATION + * (OR ANY PERSON OR ENTITY CLAIMING RIGHTS DERIVED FROM YOU) FOR ANY LOSS, DAMAGES, OR CLAIMS WHATSOEVER, INCLUDING, + * WITHOUT LIMITATION, ANY DIRECT, CONSEQUENTIAL, SPECIAL, INDIRECT, PUNITIVE, OR INCIDENTAL DAMAGES; ANY LOST PROFITS, + * OTHER ECONOMIC DAMAGE, PROPERTY DAMAGE, OR PERSONAL INJURY; AND EVEN IF RENESAS HAS BEEN ADVISED OF THE POSSIBILITY + * OF SUCH LOSS, DAMAGES, CLAIMS OR COSTS. + **********************************************************************************************************************/ + +#ifndef R_SCI_B_UART_H +#define R_SCI_B_UART_H + +/*******************************************************************************************************************//** + * @addtogroup SCI_B_UART + * @{ + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Includes + **********************************************************************************************************************/ +#include "bsp_api.h" +#include "r_uart_api.h" +#include "r_sci_b_uart_cfg.h" + +/* Common macro for FSP header files. There is also a corresponding FSP_FOOTER macro at the end of this file. */ +FSP_HEADER + +/*********************************************************************************************************************** + * Macro definitions + **********************************************************************************************************************/ + +/********************************************************************************************************************** + * Typedef definitions + **********************************************************************************************************************/ + +/** Enumeration for SCI clock source */ +typedef enum e_sci_b_clk_src +{ + SCI_B_UART_CLOCK_INT, ///< Use internal clock for baud generation + SCI_B_UART_CLOCK_INT_WITH_BAUDRATE_OUTPUT, ///< Use internal clock for baud generation and output on SCK + SCI_B_UART_CLOCK_EXT8X, ///< Use external clock 8x baud rate + SCI_B_UART_CLOCK_EXT16X ///< Use external clock 16x baud rate +} sci_b_clk_src_t; + +/** UART flow control mode definition */ +typedef enum e_sci_b_uart_flow_control +{ + SCI_B_UART_FLOW_CONTROL_RTS = 0U, ///< Use CTSn_RTSn pin for RTS + SCI_B_UART_FLOW_CONTROL_CTS = 1U, ///< Use CTSn_RTSn pin for CTS + SCI_B_UART_FLOW_CONTROL_HARDWARE_CTSRTS = 3U, ///< Use CTSn pin for CTS, CTSn_RTSn pin for RTS + SCI_B_UART_FLOW_CONTROL_CTSRTS = 5U, ///< Use SCI pin for CTS, external pin for RTS +} sci_b_uart_flow_control_t; + +/** UART instance control block. */ +typedef struct st_sci_b_uart_instance_ctrl +{ + /* Parameters to control UART peripheral device */ + uint8_t fifo_depth; // FIFO depth of the UART channel + uint8_t rx_transfer_in_progress; // Set to 1 if a receive transfer is in progress, 0 otherwise + uint8_t data_bytes : 2; // 1 byte for 7 or 8 bit data, 2 bytes for 9 bit data + uint8_t bitrate_modulation : 1; // 1 if bit rate modulation is enabled, 0 otherwise + uint32_t open; // Used to determine if the channel is configured + + bsp_io_port_pin_t flow_pin; + + /* Source buffer pointer used to fill hardware FIFO from transmit ISR. */ + uint8_t const * p_tx_src; + + /* Size of source buffer pointer used to fill hardware FIFO from transmit ISR. */ + uint32_t tx_src_bytes; + + /* Destination buffer pointer used for receiving data. */ + uint8_t const * p_rx_dest; + + /* Size of destination buffer pointer used for receiving data. */ + uint32_t rx_dest_bytes; + + /* Pointer to the configuration block. */ + uart_cfg_t const * p_cfg; + + /* Base register for this channel */ + R_SCI_B0_Type * p_reg; + + void (* p_callback)(uart_callback_args_t *); // Pointer to callback that is called when a uart_event_t occurs. + uart_callback_args_t * p_callback_memory; // Pointer to non-secure memory that can be used to pass arguments to a callback in non-secure memory. + + /* Pointer to context to be passed into callback function */ + void const * p_context; +} sci_b_uart_instance_ctrl_t; + +/** Receive FIFO trigger configuration. */ +typedef enum e_sci_b_uart_rx_fifo_trigger +{ + SCI_B_UART_RX_FIFO_TRIGGER_1 = 0x1, ///< Callback after each byte is received without buffering + SCI_B_UART_RX_FIFO_TRIGGER_MAX = 0xF, ///< Callback when FIFO is full or after 15 bit times with no data (fewer interrupts) +} sci_b_uart_rx_fifo_trigger_t; + +/** Asynchronous Start Bit Edge Detection configuration. */ +typedef enum e_sci_b_uart_start_bit_detect +{ + SCI_B_UART_START_BIT_LOW_LEVEL = 0x0, ///< Detect low level on RXDn pin as start bit + SCI_B_UART_START_BIT_FALLING_EDGE = 0x1, ///< Detect falling level on RXDn pin as start bit +} sci_b_uart_start_bit_detect_t; + +/** Noise cancellation configuration. */ +typedef enum e_sci_b_uart_noise_cancellation +{ + SCI_B_UART_NOISE_CANCELLATION_DISABLE = 0x0, ///< Disable noise cancellation + SCI_B_UART_NOISE_CANCELLATION_ENABLE = 0x1, ///< Enable noise cancellation +} sci_b_uart_noise_cancellation_t; + +/** RS-485 Enable/Disable. */ +typedef enum e_sci_b_uart_rs485_enable +{ + SCI_B_UART_RS485_DISABLE = 0, ///< RS-485 disabled. + SCI_B_UART_RS485_ENABLE = 1, ///< RS-485 enabled. +} sci_b_uart_rs485_enable_t; + +/** The polarity of the RS-485 DE signal. */ +typedef enum e_sci_b_uart_rs485_de_polarity +{ + SCI_B_UART_RS485_DE_POLARITY_HIGH = 0, ///< The DE signal is high when a write transfer is in progress. + SCI_B_UART_RS485_DE_POLARITY_LOW = 1, ///< The DE signal is low when a write transfer is in progress. +} sci_b_uart_rs485_de_polarity_t; + +/** Register settings to acheive a desired baud rate and modulation duty. */ +typedef struct st_sci_b_baud_setting_t +{ + union + { + uint32_t baudrate_bits; + + struct + { + uint32_t : 3; + uint32_t : 1; + uint32_t bgdm : 1; ///< Baud Rate Generator Double-Speed Mode Select + uint32_t abcs : 1; ///< Asynchronous Mode Base Clock Select + uint32_t abcse : 1; ///< Asynchronous Mode Extended Base Clock Select 1 + uint32_t : 1; + uint32_t brr : 8; ///< Bit Rate Register setting + uint32_t brme : 1; ///< Bit Rate Modulation Enable + uint32_t : 3; + uint32_t cks : 2; ///< CKS value to get divisor (CKS = N) + uint32_t : 2; + uint32_t mddr : 8; ///< Modulation Duty Register setting + } baudrate_bits_b; + }; +} sci_b_baud_setting_t; + +/** Configuration settings for controlling the DE signal for RS-485. */ +typedef struct st_sci_b_uart_rs485_setting +{ + sci_b_uart_rs485_enable_t enable; ///< Enable the DE signal. + sci_b_uart_rs485_de_polarity_t polarity; ///< DE signal polarity. + uint8_t assertion_time : 5; ///< Time in baseclock units after assertion of the DE signal and before the start of the write transfer. + uint8_t negation_time : 5; ///< Time in baseclock units after the end of a write transfer and before the DE signal is negated. +} sci_b_uart_rs485_setting_t; + +/** UART on SCI device Configuration */ +typedef struct st_sci_b_uart_extended_cfg +{ + sci_b_clk_src_t clock; ///< The source clock for the baud-rate generator. If internal optionally output baud rate on SCK + sci_b_uart_start_bit_detect_t rx_edge_start; ///< Start reception on falling edge + sci_b_uart_noise_cancellation_t noise_cancel; ///< Noise cancellation setting + sci_b_baud_setting_t * p_baud_setting; ///< Register settings for a desired baud rate. + sci_b_uart_rx_fifo_trigger_t rx_fifo_trigger; ///< Receive FIFO trigger level, unused if channel has no FIFO or if DTC is used. + bsp_io_port_pin_t flow_control_pin; ///< UART Driver Enable pin + sci_b_uart_flow_control_t flow_control; ///< CTS/RTS function of the SSn pin + sci_b_uart_rs485_setting_t rs485_setting; ///< RS-485 settings. +} sci_b_uart_extended_cfg_t; + +/********************************************************************************************************************** + * Exported global variables + **********************************************************************************************************************/ + +/** @cond INC_HEADER_DEFS_SEC */ +/** Filled in Interface API structure for this Instance. */ +extern const uart_api_t g_uart_on_sci_b; + +/** @endcond */ + +fsp_err_t R_SCI_B_UART_Open(uart_ctrl_t * const p_api_ctrl, uart_cfg_t const * const p_cfg); +fsp_err_t R_SCI_B_UART_Read(uart_ctrl_t * const p_api_ctrl, uint8_t * const p_dest, uint32_t const bytes); +fsp_err_t R_SCI_B_UART_Write(uart_ctrl_t * const p_api_ctrl, uint8_t const * const p_src, uint32_t const bytes); +fsp_err_t R_SCI_B_UART_BaudSet(uart_ctrl_t * const p_api_ctrl, void const * const p_baud_setting); +fsp_err_t R_SCI_B_UART_InfoGet(uart_ctrl_t * const p_api_ctrl, uart_info_t * const p_info); +fsp_err_t R_SCI_B_UART_Close(uart_ctrl_t * const p_api_ctrl); +fsp_err_t R_SCI_B_UART_Abort(uart_ctrl_t * const p_api_ctrl, uart_dir_t communication_to_abort); +fsp_err_t R_SCI_B_UART_BaudCalculate(uint32_t baudrate, + bool bitrate_modulation, + uint32_t baud_rate_error_x_1000, + sci_b_baud_setting_t * const p_baud_setting); +fsp_err_t R_SCI_B_UART_CallbackSet(uart_ctrl_t * const p_api_ctrl, + void ( * p_callback)(uart_callback_args_t *), + void const * const p_context, + uart_callback_args_t * const p_callback_memory); +fsp_err_t R_SCI_B_UART_ReadStop(uart_ctrl_t * const p_api_ctrl, uint32_t * remaining_bytes); + +/*******************************************************************************************************************//** + * @} (end addtogroup SCI_B_UART) + **********************************************************************************************************************/ + +/* Common macro for FSP header files. There is also a corresponding FSP_HEADER macro at the top of this file. */ +FSP_FOOTER + +#endif diff --git a/bsp/renesas/ra8m1-ek/ra/fsp/src/bsp/cmsis/Device/RENESAS/Include/R7FA8M1AH.h b/bsp/renesas/ra8m1-ek/ra/fsp/src/bsp/cmsis/Device/RENESAS/Include/R7FA8M1AH.h new file mode 100644 index 000000000000..08fa1c47dc48 --- /dev/null +++ b/bsp/renesas/ra8m1-ek/ra/fsp/src/bsp/cmsis/Device/RENESAS/Include/R7FA8M1AH.h @@ -0,0 +1,32676 @@ +/* + * Copyright (c) 2009-2019 ARM Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * @file ./out/R7FA8M1AH.h + * @brief CMSIS HeaderFile + * @version 1.2 + */ + +/** @addtogroup Renesas + * @{ + */ + +/** @addtogroup R7FA8M1AH + * @{ + */ + +#ifndef R7FA8M1AH_H + #define R7FA8M1AH_H + + #ifdef __cplusplus +extern "C" { + #endif + +/** @addtogroup Configuration_of_CMSIS + * @{ + */ + +/* =========================================================================================================================== */ +/* ================ Interrupt Number Definition ================ */ +/* =========================================================================================================================== */ + +/* =========================================================================================================================== */ +/* ================ Processor and Core Peripheral Section ================ */ +/* =========================================================================================================================== */ + +/* ========================== Configuration of the ARM Cortex-M85 Processor and Core Peripherals =========================== */ + #define __CM85_REV 0x0000U /*!< CM85 Core Revision */ + #define __NVIC_PRIO_BITS 4 /*!< Number of Bits used for Priority Levels */ + #define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ + #define __VTOR_PRESENT 1 /*!< Set to 1 if CPU supports Vector Table Offset Register */ + #define __MPU_PRESENT 1 /*!< MPU present */ + #define __FPU_PRESENT 1 /*!< FPU present */ + #define __FPU_DP 0 /*!< Double Precision FPU */ + #define __DSP_PRESENT 1 /*!< DSP extension present */ + #define __ICACHE_PRESENT 1 /*!< Instruction Cache present */ + #define __DCACHE_PRESENT 1 /*!< Data Cache present */ + #define __SAUREGION_PRESENT 1 /*!< SAU region present */ + #define __PMU_PRESENT 0 /*!< PMU present */ + #define __PMU_NUM_EVENTCNT 0 /*!< PMU Event Counters */ + +/** @} */ /* End of group Configuration_of_CMSIS */ + + #include "core_cm85.h" /*!< ARM Cortex-M85 processor and core peripherals */ + #include "system.h" /*!< R7FA8M1AH 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 R_BUS_CSa [CSa] (CS Registers) + */ +typedef struct +{ + __IM uint16_t RESERVED; + + union + { + __IOM uint16_t MOD; /*!< (@ 0x00000002) Mode Register */ + + struct + { + __IOM uint16_t WRMOD : 1; /*!< [0..0] Write Access Mode Select */ + uint16_t : 2; + __IOM uint16_t EWENB : 1; /*!< [3..3] External Wait Enable */ + uint16_t : 4; + __IOM uint16_t PRENB : 1; /*!< [8..8] Page Read Access Enable */ + __IOM uint16_t PWENB : 1; /*!< [9..9] Page Write Access Enable */ + uint16_t : 5; + __IOM uint16_t PRMOD : 1; /*!< [15..15] Page Read Access Mode Select */ + } MOD_b; + }; + + union + { + __IOM uint32_t WCR1; /*!< (@ 0x00000004) Wait Control Register 1 */ + + struct + { + __IOM uint32_t CSPWWAIT : 3; /*!< [2..0] Page Write Cycle Wait Select */ + uint32_t : 5; + __IOM uint32_t CSPRWAIT : 3; /*!< [10..8] Page Read Cycle Wait Select */ + uint32_t : 5; + __IOM uint32_t CSWWAIT : 5; /*!< [20..16] Normal Write Cycle Wait Select */ + uint32_t : 3; + __IOM uint32_t CSRWAIT : 5; /*!< [28..24] Normal Read Cycle Wait Select */ + uint32_t : 3; + } WCR1_b; + }; + + union + { + __IOM uint32_t WCR2; /*!< (@ 0x00000008) Wait Control Register 2 */ + + struct + { + __IOM uint32_t CSROFF : 3; /*!< [2..0] Read-Access CS Extension Cycle Select */ + uint32_t : 1; + __IOM uint32_t CSWOFF : 3; /*!< [6..4] Write-Access CS Extension Cycle Select */ + uint32_t : 1; + __IOM uint32_t WDOFF : 3; /*!< [10..8] Write Data Output Extension Cycle Select */ + uint32_t : 1; + __IOM uint32_t AWAIT : 2; /*!< [13..12] CS Assert Wait Select */ + uint32_t : 2; + __IOM uint32_t RDON : 3; /*!< [18..16] RD Assert Wait Select */ + uint32_t : 1; + __IOM uint32_t WRON : 3; /*!< [22..20] WR Assert Wait Select */ + uint32_t : 1; + __IOM uint32_t WDON : 3; /*!< [26..24] Write Data Output Wait Select */ + uint32_t : 1; + __IOM uint32_t CSON : 3; /*!< [30..28] CS Assert Wait Select */ + uint32_t : 1; + } WCR2_b; + }; + __IM uint32_t RESERVED1; +} R_BUS_CSa_Type; /*!< Size = 16 (0x10) */ + +/** + * @brief R_BUS_CSb [CSb] (CS Registers) + */ +typedef struct +{ + __IM uint16_t RESERVED; + + union + { + __IOM uint16_t CR; /*!< (@ 0x00000002) Control Register */ + + struct + { + __IOM uint16_t EXENB : 1; /*!< [0..0] Operation Enable */ + uint16_t : 3; + __IOM uint16_t BSIZE : 2; /*!< [5..4] External Bus Width Select */ + uint16_t : 2; + __IOM uint16_t EMODE : 1; /*!< [8..8] Endian Mode */ + uint16_t : 3; + __IOM uint16_t MPXEN : 1; /*!< [12..12] Address/Data Multiplexed I/O Interface Select */ + uint16_t : 3; + } CR_b; + }; + __IM uint16_t RESERVED1[3]; + + union + { + __IOM uint16_t REC; /*!< (@ 0x0000000A) Recovery Cycle Register */ + + struct + { + __IOM uint16_t RRCV : 4; /*!< [3..0] Read Recovery */ + uint16_t : 4; + __IOM uint16_t WRCV : 4; /*!< [11..8] Write Recovery */ + uint16_t : 4; + } REC_b; + }; + __IM uint16_t RESERVED2[2]; +} R_BUS_CSb_Type; /*!< Size = 16 (0x10) */ + +/** + * @brief R_BUS_SDRAM [SDRAM] (SDRAM Registers) + */ +typedef struct +{ + union + { + __IOM uint8_t SDCCR; /*!< (@ 0x00000000) SDC Control Register */ + + struct + { + __IOM uint8_t EXENB : 1; /*!< [0..0] Operation Enable */ + uint8_t : 3; + __IOM uint8_t BSIZE : 2; /*!< [5..4] SDRAM Bus Width Select */ + uint8_t : 2; + } SDCCR_b; + }; + + union + { + __IOM uint8_t SDCMOD; /*!< (@ 0x00000001) SDC Mode Register */ + + struct + { + __IOM uint8_t EMODE : 1; /*!< [0..0] Endian Mode */ + uint8_t : 7; + } SDCMOD_b; + }; + + union + { + __IOM uint8_t SDAMOD; /*!< (@ 0x00000002) SDRAM Access Mode Register */ + + struct + { + __IOM uint8_t BE : 1; /*!< [0..0] Continuous Access Enable */ + uint8_t : 7; + } SDAMOD_b; + }; + __IM uint8_t RESERVED; + __IM uint32_t RESERVED1[3]; + + union + { + __IOM uint8_t SDSELF; /*!< (@ 0x00000010) SDRAM Self-Refresh Control Register */ + + struct + { + __IOM uint8_t SFEN : 1; /*!< [0..0] SDRAM Self-Refresh Enable */ + uint8_t : 7; + } SDSELF_b; + }; + __IM uint8_t RESERVED2; + __IM uint16_t RESERVED3; + + union + { + __IOM uint16_t SDRFCR; /*!< (@ 0x00000014) SDRAM Refresh Control Register */ + + struct + { + __IOM uint16_t RFC : 12; /*!< [11..0] Auto-Refresh Request Interval Setting */ + __IOM uint16_t REFW : 4; /*!< [15..12] Auto-Refresh Cycle/ Self-Refresh Clearing Cycle Count + * Setting. ( REFW+1 Cycles ) */ + } SDRFCR_b; + }; + + union + { + __IOM uint8_t SDRFEN; /*!< (@ 0x00000016) SDRAM Auto-Refresh Control Register */ + + struct + { + __IOM uint8_t RFEN : 1; /*!< [0..0] Auto-Refresh Operation Enable */ + uint8_t : 7; + } SDRFEN_b; + }; + __IM uint8_t RESERVED4; + __IM uint32_t RESERVED5[2]; + + union + { + __IOM uint8_t SDICR; /*!< (@ 0x00000020) SDRAM Initialization Sequence Control Register */ + + struct + { + __IOM uint8_t INIRQ : 1; /*!< [0..0] Initialization Sequence Start */ + uint8_t : 7; + } SDICR_b; + }; + __IM uint8_t RESERVED6; + __IM uint16_t RESERVED7; + + union + { + __IOM uint16_t SDIR; /*!< (@ 0x00000024) SDRAM Initialization Register */ + + struct + { + __IOM uint16_t ARFI : 4; /*!< [3..0] Initialization Auto-Refresh Interval ( PRF+3 cycles ) */ + __IOM uint16_t ARFC : 4; /*!< [7..4] Initialization Auto-Refresh Count */ + __IOM uint16_t PRC : 3; /*!< [10..8] Initialization Precharge Cycle Count ( PRF+3 cycles + * ) */ + uint16_t : 5; + } SDIR_b; + }; + __IM uint16_t RESERVED8; + __IM uint32_t RESERVED9[6]; + + union + { + __IOM uint8_t SDADR; /*!< (@ 0x00000040) SDRAM Address Register */ + + struct + { + __IOM uint8_t MXC : 2; /*!< [1..0] Address Multiplex Select */ + uint8_t : 6; + } SDADR_b; + }; + __IM uint8_t RESERVED10; + __IM uint16_t RESERVED11; + + union + { + __IOM uint32_t SDTR; /*!< (@ 0x00000044) SDRAM Timing Register */ + + struct + { + __IOM uint32_t CL : 3; /*!< [2..0] SDRAMC Column Latency */ + uint32_t : 5; + __IOM uint32_t WR : 1; /*!< [8..8] Write Recovery Interval */ + __IOM uint32_t RP : 3; /*!< [11..9] Row Precharge Interval ( RP+1 cycles ) */ + __IOM uint32_t RCD : 2; /*!< [13..12] Row Column Latency ( RCD+1 cycles ) */ + uint32_t : 2; + __IOM uint32_t RAS : 3; /*!< [18..16] Row Active Interval */ + uint32_t : 13; + } SDTR_b; + }; + + union + { + __IOM uint16_t SDMOD; /*!< (@ 0x00000048) SDRAM Mode Register */ + + struct + { + __IOM uint16_t MR : 15; /*!< [14..0] Mode Register Setting */ + uint16_t : 1; + } SDMOD_b; + }; + __IM uint16_t RESERVED12; + __IM uint32_t RESERVED13; + + union + { + __IM uint8_t SDSR; /*!< (@ 0x00000050) SDRAM Status Register */ + + struct + { + __IM uint8_t MRSST : 1; /*!< [0..0] Mode Register Setting Status */ + uint8_t : 2; + __IM uint8_t INIST : 1; /*!< [3..3] Initialization Status */ + __IM uint8_t SRFST : 1; /*!< [4..4] Self-Refresh Transition/Recovery Status */ + uint8_t : 3; + } SDSR_b; + }; + __IM uint8_t RESERVED14; + __IM uint16_t RESERVED15; +} R_BUS_SDRAM_Type; /*!< Size = 84 (0x54) */ + +/** + * @brief R_BUS_BUSERRa [BUSERRa] (Bus Error Registers) + */ +typedef struct +{ + union + { + __IM uint32_t ADD; /*!< (@ 0x00000000) Bus Error Address Register */ + + struct + { + __IM uint32_t BERAD : 32; /*!< [31..0] Bus Error Address */ + } ADD_b; + }; + + union + { + union + { + __IM uint8_t STAT; /*!< (@ 0x00000004) Bus Error Status Register */ + + struct + { + __IM uint8_t ACCSTAT : 1; /*!< [0..0] Error access status */ + uint8_t : 6; + __IM uint8_t ERRSTAT : 1; /*!< [7..7] Bus Error Status */ + } STAT_b; + }; + + union + { + __IM uint8_t RW; /*!< (@ 0x00000004) Bus Error Read Write */ + + struct + { + __IM uint8_t RWSTAT : 1; /*!< [0..0] Error access Read/Write Status */ + uint8_t : 7; + } RW_b; + }; + }; + __IM uint8_t RESERVED; + __IM uint16_t RESERVED1; + __IM uint32_t RESERVED2[2]; +} R_BUS_BUSERRa_Type; /*!< Size = 16 (0x10) */ + +/** + * @brief R_BUS_BTZFERR [BTZFERR] (Bus TZF Error Registers) + */ +typedef struct +{ + union + { + __IM uint32_t ADD; /*!< (@ 0x00000000) BUS TZF Error Address */ + + struct + { + __IM uint32_t BTZFERAD : 32; /*!< [31..0] Bus TrustZone Filter Error Address */ + } ADD_b; + }; + + union + { + __IM uint8_t RW; /*!< (@ 0x00000004) BUS TZF Error Read Write */ + + struct + { + __IM uint8_t TRWSTAT : 1; /*!< [0..0] TrustZone filter error access Read/Write Status */ + uint8_t : 7; + } RW_b; + }; + __IM uint8_t RESERVED; + __IM uint16_t RESERVED1; + __IM uint32_t RESERVED2[2]; +} R_BUS_BTZFERR_Type; /*!< Size = 16 (0x10) */ + +/** + * @brief R_BUS_BUSERRb [BUSERRb] (Bus Error Registers) + */ +typedef struct +{ + union + { + __IM uint8_t STAT; /*!< (@ 0x00000000) Bus Error Status Register */ + + struct + { + __IM uint8_t SLERRSTAT : 1; /*!< [0..0] Slave Bus Error Status. */ + __IM uint8_t STERRSTAT : 1; /*!< [1..1] Slave TrustZone filter Error Status. */ + uint8_t : 1; + __IM uint8_t MMERRSTAT : 1; /*!< [3..3] Master MPU Error Status. */ + __IM uint8_t ILERRSTAT : 1; /*!< [4..4] Illegal Address Access Error Status. */ + __IM uint8_t MSERRSTAT : 1; /*!< [5..5] Master Security Attribution Unit Error Status. */ + uint8_t : 2; + } STAT_b; + }; + __IM uint8_t RESERVED[7]; + + union + { + __IOM uint8_t CLR; /*!< (@ 0x00000008) Bus Error Clear Register */ + + struct + { + __IOM uint8_t SLERRCLR : 1; /*!< [0..0] Slave Bus Error Clear. */ + __IOM uint8_t STERRCLR : 1; /*!< [1..1] Slave TrustZone filter Error Status. */ + uint8_t : 1; + __IOM uint8_t MMERRCLR : 1; /*!< [3..3] Master MPU Error Clear. */ + __IOM uint8_t ILERRCLR : 1; /*!< [4..4] Illegal Address Access Error Clear. */ + __IOM uint8_t MSERRCLR : 1; /*!< [5..5] Master Security Attribution Unit Error Clear. */ + uint8_t : 2; + } CLR_b; + }; + __IM uint8_t RESERVED1[7]; +} R_BUS_BUSERRb_Type; /*!< Size = 16 (0x10) */ + +/** + * @brief R_BUS_DMACDTCERR [DMACDTCERR] (DMAC/DTC Error Registers) + */ +typedef struct +{ + __IM uint8_t RESERVED[36]; + + union + { + __IM uint8_t STAT; /*!< (@ 0x00000024) DMAC/DTC Error Status Register */ + + struct + { + __IM uint8_t MTERRSTAT : 1; /*!< [0..0] Master TrustZone Filter Error Status */ + uint8_t : 7; + } STAT_b; + }; + __IM uint8_t RESERVED1[7]; + + union + { + __IOM uint8_t CLR; /*!< (@ 0x0000002C) DMAC/DTC Error Clear Register */ + + struct + { + __IOM uint8_t MTERRCLR : 1; /*!< [0..0] Master TrustZone filter Error Clear */ + uint8_t : 7; + } CLR_b; + }; +} R_BUS_DMACDTCERR_Type; /*!< Size = 45 (0x2d) */ + +/** + * @brief R_BUS_BUSSABT0 [BUSSABT0] (Bus Slave Arbitration Control 0 Registers) + */ +typedef struct +{ + __IM uint32_t RESERVED[2]; + + union + { + __IOM uint32_t MRE0BI; /*!< (@ 0x00000008) Bus Slave Arbitration Control Register */ + + struct + { + __IOM uint32_t ARBS : 1; /*!< [0..0] Arbitration Select for slave. */ + uint32_t : 31; + } MRE0BI_b; + }; + __IM uint32_t RESERVED1; + + union + { + __IOM uint32_t FLBI; /*!< (@ 0x00000010) Bus Slave Arbitration Control Register */ + + struct + { + __IOM uint32_t ARBS : 1; /*!< [0..0] Arbitration Select for slave. */ + uint32_t : 31; + } FLBI_b; + }; + __IM uint32_t RESERVED2[3]; + + union + { + __IOM uint32_t S0BI; /*!< (@ 0x00000020) Bus Slave Arbitration Control Register */ + + struct + { + __IOM uint32_t ARBS : 1; /*!< [0..0] Arbitration Select for slave. */ + uint32_t : 31; + } S0BI_b; + }; + __IM uint32_t RESERVED3; + + union + { + __IOM uint32_t S1BI; /*!< (@ 0x00000028) Bus Slave Arbitration Control Register */ + + struct + { + __IOM uint32_t ARBS : 1; /*!< [0..0] Arbitration Select for slave. */ + uint32_t : 31; + } S1BI_b; + }; + __IM uint32_t RESERVED4; + + union + { + __IOM uint32_t S2BI; /*!< (@ 0x00000030) Bus Slave Arbitration Control Register */ + + struct + { + __IOM uint32_t ARBS : 1; /*!< [0..0] Arbitration Select for slave. */ + uint32_t : 31; + } S2BI_b; + }; + __IM uint32_t RESERVED5; + + union + { + __IOM uint32_t S3BI; /*!< (@ 0x00000038) Bus Slave Arbitration Control Register */ + + struct + { + __IOM uint32_t ARBS : 1; /*!< [0..0] Arbitration Select for slave. */ + uint32_t : 31; + } S3BI_b; + }; + __IM uint32_t RESERVED6[3]; + + union + { + __IOM uint32_t STBYSBI; /*!< (@ 0x00000048) Bus Slave Arbitration Control Register */ + + struct + { + __IOM uint32_t ARBS : 1; /*!< [0..0] Arbitration Select for slave. */ + uint32_t : 31; + } STBYSBI_b; + }; + __IM uint32_t RESERVED7; + + union + { + union + { + __IOM uint32_t ECBI; /*!< (@ 0x00000050) Bus Slave Arbitration Control Register */ + + struct + { + __IOM uint32_t ARBS : 1; /*!< [0..0] Arbitration Select for slave. */ + uint32_t : 31; + } ECBI_b; + }; + + union + { + __IOM uint32_t SPI0BI; /*!< (@ 0x00000050) Bus Slave Arbitration Control Register */ + + struct + { + __IOM uint32_t ARBS : 1; /*!< [0..0] Arbitration Select for slave. */ + uint32_t : 31; + } SPI0BI_b; + }; + }; + __IM uint32_t RESERVED8; + + union + { + union + { + __IOM uint32_t EOBI; /*!< (@ 0x00000058) Bus Slave Arbitration Control Register */ + + struct + { + __IOM uint32_t ARBS : 1; /*!< [0..0] Arbitration Select for slave. */ + uint32_t : 31; + } EOBI_b; + }; + + union + { + __IOM uint32_t SPI1BI; /*!< (@ 0x00000058) Bus Slave Arbitration Control Register */ + + struct + { + __IOM uint32_t ARBS : 1; /*!< [0..0] Arbitration Select for slave. */ + uint32_t : 31; + } SPI1BI_b; + }; + }; + __IM uint32_t RESERVED9; + + union + { + __IOM uint32_t PBBI; /*!< (@ 0x00000060) Bus Slave Arbitration Control Register */ + + struct + { + __IOM uint32_t ARBS : 1; /*!< [0..0] Arbitration Select for slave. */ + uint32_t : 31; + } PBBI_b; + }; + __IM uint32_t RESERVED10; + + union + { + union + { + __IOM uint32_t PABI; /*!< (@ 0x00000068) Bus Slave Arbitration Control Register */ + + struct + { + __IOM uint32_t ARBS : 1; /*!< [0..0] Arbitration Select for slave. */ + uint32_t : 31; + } PABI_b; + }; + + union + { + __IOM uint32_t CPU0SAHBI; /*!< (@ 0x00000068) Bus Slave Arbitration Control Register */ + + struct + { + __IOM uint32_t ARBS : 1; /*!< [0..0] Arbitration Select for slave. */ + uint32_t : 31; + } CPU0SAHBI_b; + }; + }; + __IM uint32_t RESERVED11; + + union + { + union + { + __IOM uint32_t PIBI; /*!< (@ 0x00000070) Bus Slave Arbitration Control Register */ + + struct + { + __IOM uint32_t ARBS : 1; /*!< [0..0] Arbitration Select for slave. */ + uint32_t : 31; + } PIBI_b; + }; + + union + { + __IOM uint32_t CPU1TCMBI; /*!< (@ 0x00000070) Bus Slave Arbitration Control Register */ + + struct + { + __IOM uint32_t ARBS : 1; /*!< [0..0] Arbitration Select for slave. */ + uint32_t : 31; + } CPU1TCMBI_b; + }; + }; + __IM uint32_t RESERVED12; + + union + { + __IOM uint32_t PSBI; /*!< (@ 0x00000078) Bus Slave Arbitration Control Register */ + + struct + { + __IOM uint32_t ARBS : 1; /*!< [0..0] Arbitration Select for slave. */ + uint32_t : 31; + } PSBI_b; + }; +} R_BUS_BUSSABT0_Type; /*!< Size = 124 (0x7c) */ + +/** + * @brief R_BUS_BUSSABT1 [BUSSABT1] (Bus Slave Arbitration Control 1 Registers) + */ +typedef struct +{ + union + { + union + { + __IOM uint32_t FHBI; /*!< (@ 0x00000000) Bus Slave Arbitration Control Register */ + + struct + { + __IOM uint32_t ARBS : 2; /*!< [1..0] Arbitration Select for slave. */ + uint32_t : 30; + } FHBI_b; + }; + + union + { + __IOM uint32_t MRC0BI; /*!< (@ 0x00000000) Bus Slave Arbitration Control Register */ + + struct + { + __IOM uint32_t ARBS : 2; /*!< [1..0] Arbitration Select for slave. */ + uint32_t : 30; + } MRC0BI_b; + }; + }; + __IM uint32_t RESERVED[5]; + + union + { + __IOM uint32_t S0BI; /*!< (@ 0x00000018) Bus Slave Arbitration Control Register */ + + struct + { + __IOM uint32_t ARBS : 2; /*!< [1..0] Arbitration Select for slave. */ + uint32_t : 30; + } S0BI_b; + }; + __IM uint32_t RESERVED1; + + union + { + __IOM uint32_t S1BI; /*!< (@ 0x00000020) Bus Slave Arbitration Control Register */ + + struct + { + __IOM uint32_t ARBS : 2; /*!< [1..0] Arbitration Select for slave. */ + uint32_t : 30; + } S1BI_b; + }; +} R_BUS_BUSSABT1_Type; /*!< Size = 36 (0x24) */ + +/** + * @brief R_BUS_BMSAERR [BMSAERR] (Bus Master Security Attribution Unit Error Address and Read/Write Status registers.) + */ +typedef struct +{ + union + { + __IM uint32_t ADD; /*!< (@ 0x00000000) Bus Master Security Attribution Unit Error Address. */ + + struct + { + __IM uint32_t MSERAD : 32; /*!< [31..0] Bus Master Security Attribution Unit Error Address. */ + } ADD_b; + }; + + union + { + __IM uint8_t RW; /*!< (@ 0x00000004) BUS Master Security Attribution Unit Error Read + * Write. */ + + struct + { + __IM uint8_t MSARWSTAT : 1; /*!< [0..0] Master Security Attribution Unit error access Read/Write + * Status. */ + uint8_t : 7; + } RW_b; + }; + __IM uint8_t RESERVED; + __IM uint16_t RESERVED1; + __IM uint32_t RESERVED2[2]; +} R_BUS_BMSAERR_Type; /*!< Size = 16 (0x10) */ + +/** + * @brief R_BUS_OAD [OAD] (Bus Operation After Detection Registers) + */ +typedef struct +{ + union + { + __IOM uint16_t BUSOAD; /*!< (@ 0x00000000) Bus Operation After Detection Register */ + + struct + { + __IOM uint16_t ILERROAD : 1; /*!< [0..0] Illegal address access error operation after detection. */ + __IOM uint16_t SLERROAD : 1; /*!< [1..1] Slave bus error operation after detection. */ + __IOM uint16_t BWERROAD : 1; /*!< [2..2] Bufferable write error operation after detection. */ + uint16_t : 13; + } BUSOAD_b; + }; + __IM uint16_t RESERVED; + + union + { + __IOM uint16_t BUSOADPT; /*!< (@ 0x00000004) BUS Operation After Detection Protect Register. */ + + struct + { + __IOM uint16_t PROTECT : 1; /*!< [0..0] Protection of BUSOAD register. */ + uint16_t : 7; + __OM uint16_t KEY : 8; /*!< [15..8] Key code */ + } BUSOADPT_b; + }; + __IM uint16_t RESERVED1[5]; + + union + { + __IOM uint16_t MSAOAD; /*!< (@ 0x00000010) Master Security Attribution Operation After Detection + * Register. */ + + struct + { + __IOM uint16_t OAD : 1; /*!< [0..0] Master Security Attribution operation after detection. */ + uint16_t : 7; + __OM uint16_t KEY : 8; /*!< [15..8] Key Code. */ + } MSAOAD_b; + }; + __IM uint16_t RESERVED2; + + union + { + __IOM uint16_t MSAPT; /*!< (@ 0x00000014) Master Security Attribution Protect Register. */ + + struct + { + __IOM uint16_t PROTECT : 1; /*!< [0..0] Protection of MSAOAD register. */ + uint16_t : 7; + __OM uint16_t KEY : 8; /*!< [15..8] Key code */ + } MSAPT_b; + }; +} R_BUS_OAD_Type; /*!< Size = 22 (0x16) */ + +/** + * @brief R_BUS_MBWERR [MBWERR] (Master Bufferable Write Error Registers) + */ +typedef struct +{ + union + { + __IM uint32_t STAT; /*!< (@ 0x00000000) Bufferable Write Error Status Register */ + + struct + { + __IM uint32_t BWERR0 : 1; /*!< [0..0] Bufferable Write Error in 0. */ + __IM uint32_t BWERR1 : 1; /*!< [1..1] Bufferable Write Error in 1. */ + __IM uint32_t BWERR2 : 1; /*!< [2..2] Bufferable Write Error in 2. */ + __IM uint32_t BWERR3 : 1; /*!< [3..3] Bufferable Write Error in 3. */ + __IM uint32_t BWERR4 : 1; /*!< [4..4] Bufferable Write Error in 4. */ + __IM uint32_t BWERR5 : 1; /*!< [5..5] Bufferable Write Error in 5. */ + __IM uint32_t BWERR6 : 1; /*!< [6..6] Bufferable Write Error in 6. */ + __IM uint32_t BWERR7 : 1; /*!< [7..7] Bufferable Write Error in 7. */ + __IM uint32_t BWERR8 : 1; /*!< [8..8] Bufferable Write Error in 8. */ + __IM uint32_t BWERR9 : 1; /*!< [9..9] Bufferable Write Error in 9. */ + __IM uint32_t BWERR10 : 1; /*!< [10..10] Bufferable Write Error in 10. */ + __IM uint32_t BWERR11 : 1; /*!< [11..11] Bufferable Write Error in 11. */ + __IM uint32_t BWERR12 : 1; /*!< [12..12] Bufferable Write Error in 12. */ + __IM uint32_t BWERR13 : 1; /*!< [13..13] Bufferable Write Error in 13. */ + __IM uint32_t BWERR14 : 1; /*!< [14..14] Bufferable Write Error in 14. */ + __IM uint32_t BWERR15 : 1; /*!< [15..15] Bufferable Write Error in 15. */ + __IM uint32_t BWERR16 : 1; /*!< [16..16] Bufferable Write Error in 16. */ + __IM uint32_t BWERR17 : 1; /*!< [17..17] Bufferable Write Error in 17. */ + __IM uint32_t BWERR18 : 1; /*!< [18..18] Bufferable Write Error in 18. */ + __IM uint32_t BWERR19 : 1; /*!< [19..19] Bufferable Write Error in 19. */ + __IM uint32_t BWERR20 : 1; /*!< [20..20] Bufferable Write Error in 20. */ + __IM uint32_t BWERR21 : 1; /*!< [21..21] Bufferable Write Error in 21. */ + __IM uint32_t BWERR22 : 1; /*!< [22..22] Bufferable Write Error in 22. */ + __IM uint32_t BWERR23 : 1; /*!< [23..23] Bufferable Write Error in 23. */ + __IM uint32_t BWERR24 : 1; /*!< [24..24] Bufferable Write Error in 24. */ + __IM uint32_t BWERR25 : 1; /*!< [25..25] Bufferable Write Error in 25. */ + __IM uint32_t BWERR26 : 1; /*!< [26..26] Bufferable Write Error in 26. */ + __IM uint32_t BWERR27 : 1; /*!< [27..27] Bufferable Write Error in 27. */ + __IM uint32_t BWERR28 : 1; /*!< [28..28] Bufferable Write Error in 28. */ + __IM uint32_t BWERR29 : 1; /*!< [29..29] Bufferable Write Error in 29. */ + __IM uint32_t BWERR30 : 1; /*!< [30..30] Bufferable Write Error in 30. */ + __IM uint32_t BWERR31 : 1; /*!< [31..31] Bufferable Write Error in 31. */ + } STAT_b; + }; + __IM uint32_t RESERVED; + + union + { + __IOM uint32_t CLR; /*!< (@ 0x00000008) Bufferable Write Error Clear Register. */ + + struct + { + __IOM uint32_t BWERR0 : 1; /*!< [0..0] Bufferable Write Error Clear for 0. */ + __IOM uint32_t BWERR1 : 1; /*!< [1..1] Bufferable Write Error Clear for 1. */ + __IOM uint32_t BWERR2 : 1; /*!< [2..2] Bufferable Write Error Clear for 2. */ + __IOM uint32_t BWERR3 : 1; /*!< [3..3] Bufferable Write Error Clear for 3. */ + __IOM uint32_t BWERR4 : 1; /*!< [4..4] Bufferable Write Error Clear for 4. */ + __IOM uint32_t BWERR5 : 1; /*!< [5..5] Bufferable Write Error Clear for 5. */ + __IOM uint32_t BWERR6 : 1; /*!< [6..6] Bufferable Write Error Clear for 6. */ + __IOM uint32_t BWERR7 : 1; /*!< [7..7] Bufferable Write Error Clear for 7. */ + __IOM uint32_t BWERR8 : 1; /*!< [8..8] Bufferable Write Error Clear for 8. */ + __IOM uint32_t BWERR9 : 1; /*!< [9..9] Bufferable Write Error Clear for 9. */ + __IOM uint32_t BWERR10 : 1; /*!< [10..10] Bufferable Write Error Clear for 10. */ + __IOM uint32_t BWERR11 : 1; /*!< [11..11] Bufferable Write Error Clear for 11. */ + __IOM uint32_t BWERR12 : 1; /*!< [12..12] Bufferable Write Error Clear for 12. */ + __IOM uint32_t BWERR13 : 1; /*!< [13..13] Bufferable Write Error Clear for 13. */ + __IOM uint32_t BWERR14 : 1; /*!< [14..14] Bufferable Write Error Clear for 14. */ + __IOM uint32_t BWERR15 : 1; /*!< [15..15] Bufferable Write Error Clear for 15. */ + __IOM uint32_t BWERR16 : 1; /*!< [16..16] Bufferable Write Error Clear for 16. */ + __IOM uint32_t BWERR17 : 1; /*!< [17..17] Bufferable Write Error Clear for 17. */ + __IOM uint32_t BWERR18 : 1; /*!< [18..18] Bufferable Write Error Clear for 18. */ + __IOM uint32_t BWERR19 : 1; /*!< [19..19] Bufferable Write Error Clear for 19. */ + __IOM uint32_t BWERR20 : 1; /*!< [20..20] Bufferable Write Error Clear for 20. */ + __IOM uint32_t BWERR21 : 1; /*!< [21..21] Bufferable Write Error Clear for 21. */ + __IOM uint32_t BWERR22 : 1; /*!< [22..22] Bufferable Write Error Clear for 22. */ + __IOM uint32_t BWERR23 : 1; /*!< [23..23] Bufferable Write Error Clear for 23. */ + __IOM uint32_t BWERR24 : 1; /*!< [24..24] Bufferable Write Error Clear for 24. */ + __IOM uint32_t BWERR25 : 1; /*!< [25..25] Bufferable Write Error Clear for 25. */ + __IOM uint32_t BWERR26 : 1; /*!< [26..26] Bufferable Write Error Clear for 26. */ + __IOM uint32_t BWERR27 : 1; /*!< [27..27] Bufferable Write Error Clear for 27. */ + __IOM uint32_t BWERR28 : 1; /*!< [28..28] Bufferable Write Error Clear for 28. */ + __IOM uint32_t BWERR29 : 1; /*!< [29..29] Bufferable Write Error Clear for 29. */ + __IOM uint32_t BWERR30 : 1; /*!< [30..30] Bufferable Write Error Clear for 30. */ + __IOM uint32_t BWERR31 : 1; /*!< [31..31] Bufferable Write Error Clear for 31. */ + } CLR_b; + }; +} R_BUS_MBWERR_Type; /*!< Size = 12 (0xc) */ + +/** + * @brief R_BUS_BUSM [BUSM] (Master Bus Control Registers) + */ +typedef struct +{ + union + { + __IOM uint16_t CNT; /*!< (@ 0x00000000) Master Bus Control Register */ + + struct + { + uint16_t : 15; + __IOM uint16_t IERES : 1; /*!< [15..15] Ignore Error Responses */ + } CNT_b; + }; + __IM uint16_t RESERVED; +} R_BUS_BUSM_Type; /*!< Size = 4 (0x4) */ + +/** + * @brief R_BUS_BUSS [BUSS] (Slave Bus Control Register Array) + */ +typedef struct +{ + union + { + __IOM uint16_t CNT; /*!< (@ 0x00000000) Slave Bus Control Register */ + + struct + { + __IOM uint16_t ARBS : 2; /*!< [1..0] Arbitration Select */ + uint16_t : 2; + __IOM uint16_t ARBMET : 2; /*!< [5..4] Arbitration Method */ + uint16_t : 10; + } CNT_b; + }; + __IM uint16_t RESERVED; +} R_BUS_BUSS_Type; /*!< Size = 4 (0x4) */ + +/** + * @brief R_CANFD_CFDC [CFDC] (Channel Control/Status) + */ +typedef struct +{ + union + { + __IOM uint32_t NCFG; /*!< (@ 0x00000000) Channel Nominal Bitrate Configuration Register */ + + struct + { + __IOM uint32_t NBRP : 10; /*!< [9..0] Channel Nominal Baud Rate Prescaler */ + __IOM uint32_t NSJW : 7; /*!< [16..10] Resynchronization Jump Width */ + __IOM uint32_t NTSEG1 : 8; /*!< [24..17] Timing Segment 1 */ + __IOM uint32_t NTSEG2 : 7; /*!< [31..25] Timing Segment 2 */ + } NCFG_b; + }; + + union + { + __IOM uint32_t CTR; /*!< (@ 0x00000004) Channel Control Registers */ + + struct + { + __IOM uint32_t CHMDC : 2; /*!< [1..0] Channel Mode Control */ + __IOM uint32_t CSLPR : 1; /*!< [2..2] Channel Sleep Request */ + __IOM uint32_t RTBO : 1; /*!< [3..3] Return from Bus-Off */ + uint32_t : 4; + __IOM uint32_t BEIE : 1; /*!< [8..8] Bus Error Interrupt Enable */ + __IOM uint32_t EWIE : 1; /*!< [9..9] Error Warning Interrupt Enable */ + __IOM uint32_t EPIE : 1; /*!< [10..10] Error Passive Interrupt Enable */ + __IOM uint32_t BOEIE : 1; /*!< [11..11] Bus-Off Entry Interrupt Enable */ + __IOM uint32_t BORIE : 1; /*!< [12..12] Bus-Off Recovery Interrupt Enable */ + __IOM uint32_t OLIE : 1; /*!< [13..13] Overload Interrupt Enable */ + __IOM uint32_t BLIE : 1; /*!< [14..14] Bus Lock Interrupt Enable */ + __IOM uint32_t ALIE : 1; /*!< [15..15] Arbitration Lost Interrupt Enable */ + __IOM uint32_t TAIE : 1; /*!< [16..16] Transmission abort Interrupt Enable */ + __IOM uint32_t EOCOIE : 1; /*!< [17..17] Error occurrence counter overflow Interrupt enable */ + __IOM uint32_t SOCOIE : 1; /*!< [18..18] Successful Occurrence Counter Overflow Interrupt enable */ + __IOM uint32_t TDCVFIE : 1; /*!< [19..19] Transceiver Delay Compensation Violation Interrupt + * enable */ + uint32_t : 1; + __IOM uint32_t BOM : 2; /*!< [22..21] Channel Bus-Off Mode */ + __IOM uint32_t ERRD : 1; /*!< [23..23] Channel Error Display */ + __IOM uint32_t CTME : 1; /*!< [24..24] Channel Test Mode Enable */ + __IOM uint32_t CTMS : 2; /*!< [26..25] Channel Test Mode Select */ + uint32_t : 3; + __IOM uint32_t CRCT : 1; /*!< [30..30] CRC Error Test */ + __IOM uint32_t ROM : 1; /*!< [31..31] Restricted Operation Mode */ + } CTR_b; + }; + + union + { + __IOM uint32_t STS; /*!< (@ 0x00000008) Channel Status Registers */ + + struct + { + __IM uint32_t CRSTSTS : 1; /*!< [0..0] Channel RESET Status */ + __IM uint32_t CHLTSTS : 1; /*!< [1..1] Channel HALT Status */ + __IM uint32_t CSLPSTS : 1; /*!< [2..2] Channel SLEEP Status */ + __IM uint32_t EPSTS : 1; /*!< [3..3] Channel Error Passive Status */ + __IM uint32_t BOSTS : 1; /*!< [4..4] Channel Bus-Off Status */ + __IM uint32_t TRMSTS : 1; /*!< [5..5] Channel Transmit Status */ + __IM uint32_t RECSTS : 1; /*!< [6..6] Channel Receive Status */ + __IM uint32_t COMSTS : 1; /*!< [7..7] Channel Communication Status */ + __IOM uint32_t ESIF : 1; /*!< [8..8] Error State Indication Flag */ + uint32_t : 7; + __IM uint32_t REC : 8; /*!< [23..16] Reception Error Count */ + __IOM uint32_t TEC : 8; /*!< [31..24] Transmission Error Count */ + } STS_b; + }; + + union + { + __IOM uint32_t ERFL; /*!< (@ 0x0000000C) Channel Error Flag Registers */ + + struct + { + __IOM uint32_t BEF : 1; /*!< [0..0] Bus Error Flag */ + __IOM uint32_t EWF : 1; /*!< [1..1] Error Warning Flag */ + __IOM uint32_t EPF : 1; /*!< [2..2] Error Passive Flag */ + __IOM uint32_t BOEF : 1; /*!< [3..3] Bus-Off Entry Flag */ + __IOM uint32_t BORF : 1; /*!< [4..4] Bus-Off Recovery Flag */ + __IOM uint32_t OVLF : 1; /*!< [5..5] Overload Flag */ + __IOM uint32_t BLF : 1; /*!< [6..6] Bus Lock Flag */ + __IOM uint32_t ALF : 1; /*!< [7..7] Arbitration Lost Flag */ + __IOM uint32_t SERR : 1; /*!< [8..8] Stuff Error */ + __IOM uint32_t FERR : 1; /*!< [9..9] Form Error */ + __IOM uint32_t AERR : 1; /*!< [10..10] Acknowledge Error */ + __IOM uint32_t CERR : 1; /*!< [11..11] CRC Error */ + __IOM uint32_t B1ERR : 1; /*!< [12..12] Bit 1 Error */ + __IOM uint32_t B0ERR : 1; /*!< [13..13] Bit 0 Error */ + __IOM uint32_t ADERR : 1; /*!< [14..14] Acknowledge Delimiter Error */ + uint32_t : 1; + __IM uint32_t CRCREG : 15; /*!< [30..16] CRC Register value */ + uint32_t : 1; + } ERFL_b; + }; +} R_CANFD_CFDC_Type; /*!< Size = 16 (0x10) */ + +/** + * @brief R_CANFD_CFDC2 [CFDC2] (Channel Configuration Registers) + */ +typedef struct +{ + union + { + __IOM uint32_t DCFG; /*!< (@ 0x00000000) Channel Data Bitrate Configuration Register */ + + struct + { + __IOM uint32_t DBRP : 8; /*!< [7..0] Channel Data Baud Rate Prescaler */ + __IOM uint32_t DTSEG1 : 5; /*!< [12..8] Timing Segment 1 */ + uint32_t : 3; + __IOM uint32_t DTSEG2 : 4; /*!< [19..16] Timing Segment 2 */ + uint32_t : 4; + __IOM uint32_t DSJW : 4; /*!< [27..24] Resynchronization Jump Width */ + uint32_t : 4; + } DCFG_b; + }; + + union + { + __IOM uint32_t FDCFG; /*!< (@ 0x00000004) Channel CAN-FD Configuration Register */ + + struct + { + __IOM uint32_t EOCCFG : 3; /*!< [2..0] Error Occurrence Counter Configuration */ + uint32_t : 5; + __IOM uint32_t TDCOC : 1; /*!< [8..8] Transceiver Delay Compensation Offset Configuration */ + __IOM uint32_t TDCE : 1; /*!< [9..9] Transceiver Delay Compensation Enable */ + __IOM uint32_t ESIC : 1; /*!< [10..10] Error State Indication Configuration */ + uint32_t : 5; + __IOM uint32_t TDCO : 8; /*!< [23..16] Transceiver Delay Compensation Offset */ + uint32_t : 4; + __IOM uint32_t FDOE : 1; /*!< [28..28] FD only enable */ + __IOM uint32_t REFE : 1; /*!< [29..29] RX edge filter enable */ + __IOM uint32_t CLOE : 1; /*!< [30..30] Classical CAN only enable */ + uint32_t : 1; + } FDCFG_b; + }; + + union + { + __IOM uint32_t FDCTR; /*!< (@ 0x00000008) Channel CAN-FD Control Register */ + + struct + { + __IOM uint32_t EOCCLR : 1; /*!< [0..0] Error Occurrence Counter Clear */ + __IOM uint32_t SOCCLR : 1; /*!< [1..1] Successful Occurrence Counter Clear */ + uint32_t : 30; + } FDCTR_b; + }; + + union + { + __IOM uint32_t FDSTS; /*!< (@ 0x0000000C) Channel CAN-FD Status Register */ + + struct + { + __IM uint32_t TDCR : 8; /*!< [7..0] Transceiver Delay Compensation Result */ + __IOM uint32_t EOCO : 1; /*!< [8..8] Error occurrence counter overflow */ + __IOM uint32_t SOCO : 1; /*!< [9..9] Successful occurrence counter overflow */ + uint32_t : 5; + __IOM uint32_t TDCVF : 1; /*!< [15..15] Transceiver Delay Compensation Violation Flag */ + __IM uint32_t EOC : 8; /*!< [23..16] Error occurrence counter register */ + __IM uint32_t SOC : 8; /*!< [31..24] Successful occurrence counter register */ + } FDSTS_b; + }; + + union + { + __IOM uint32_t FDCRC; /*!< (@ 0x00000010) Channel CAN-FD CRC Register */ + + struct + { + __IM uint32_t CRCREG : 21; /*!< [20..0] CRC Register value */ + uint32_t : 3; + __IM uint32_t SCNT : 4; /*!< [27..24] Stuff bit count */ + uint32_t : 4; + } FDCRC_b; + }; + __IM uint32_t RESERVED[3]; +} R_CANFD_CFDC2_Type; /*!< Size = 32 (0x20) */ + +/** + * @brief R_CANFD_CFDGAFL [CFDGAFL] (Global Acceptance Filter List Registers) + */ +typedef struct +{ + union + { + __IOM uint32_t ID; /*!< (@ 0x00000000) Global Acceptance Filter List ID Registers */ + + struct + { + __IOM uint32_t GAFLID : 29; /*!< [28..0] Global Acceptance Filter List Entry ID Field */ + __IOM uint32_t GAFLLB : 1; /*!< [29..29] Global Acceptance Filter List Entry Loopback Configuration */ + __IOM uint32_t GAFLRTR : 1; /*!< [30..30] Global Acceptance Filter List Entry RTR Field */ + __IOM uint32_t GAFLIDE : 1; /*!< [31..31] Global Acceptance Filter List Entry IDE Field */ + } ID_b; + }; + + union + { + __IOM uint32_t M; /*!< (@ 0x00000004) Global Acceptance Filter List Mask Registers */ + + struct + { + __IOM uint32_t GAFLIDM : 29; /*!< [28..0] Global Acceptance Filter List ID Mask Field */ + __IOM uint32_t GAFLIFL1 : 1; /*!< [29..29] Global Acceptance Filter List Information Label 1 */ + __IOM uint32_t GAFLRTRM : 1; /*!< [30..30] Global Acceptance Filter List Entry RTR Mask */ + __IOM uint32_t GAFLIDEM : 1; /*!< [31..31] Global Acceptance Filter List IDE Mask */ + } M_b; + }; + + union + { + __IOM uint32_t P0; /*!< (@ 0x00000008) Global Acceptance Filter List Pointer 0 Registers */ + + struct + { + __IOM uint32_t GAFLDLC : 4; /*!< [3..0] Global Acceptance Filter List DLC Field */ + uint32_t : 3; + __IOM uint32_t GAFLIFL0 : 1; /*!< [7..7] Global Acceptance Filter List Information Label 0 */ + __IOM uint32_t GAFLRMDP : 5; /*!< [12..8] Global Acceptance Filter List RX Message Buffer Direction + * Pointer */ + uint32_t : 2; + __IOM uint32_t GAFLRMV : 1; /*!< [15..15] Global Acceptance Filter List RX Message Buffer Valid */ + __IOM uint32_t GAFLPTR : 16; /*!< [31..16] Global Acceptance Filter List Pointer Field */ + } P0_b; + }; + + union + { + __IOM uint32_t P1; /*!< (@ 0x0000000C) Global Acceptance Filter List Pointer 1 Registers */ + + struct + { + __IOM uint32_t GAFLFDP : 9; /*!< [8..0] Global Acceptance Filter List FIFO Direction Pointer */ + uint32_t : 23; + } P1_b; + }; +} R_CANFD_CFDGAFL_Type; /*!< Size = 16 (0x10) */ + +/** + * @brief R_CANFD_CFDTHL [CFDTHL] (Channel TX History List) + */ +typedef struct +{ + union + { + __IM uint32_t ACC0; /*!< (@ 0x00000000) Channel TX History List Access Registers 0 */ + + struct + { + __IM uint32_t BT : 3; /*!< [2..0] Buffer Type */ + __IM uint32_t BN : 7; /*!< [9..3] Buffer No. */ + uint32_t : 6; + __IM uint32_t TMTS : 16; /*!< [31..16] Transmit Timestamp */ + } ACC0_b; + }; + + union + { + __IOM uint32_t ACC1; /*!< (@ 0x00000004) Channel TX History List Access Registers 1 */ + + struct + { + __IM uint32_t TID : 16; /*!< [15..0] Transmit ID */ + __IM uint32_t TIFL : 2; /*!< [17..16] Transmit Information Label */ + uint32_t : 14; + } ACC1_b; + }; +} R_CANFD_CFDTHL_Type; /*!< Size = 8 (0x8) */ + +/** + * @brief R_CANFD_CFDRF [CFDRF] (RX FIFO Access Registers) + */ +typedef struct +{ + union + { + __IM uint32_t ID; /*!< (@ 0x00000000) RX FIFO Access ID Register */ + + struct + { + __IM uint32_t RFID : 29; /*!< [28..0] RX FIFO Buffer ID Field */ + uint32_t : 1; + __IM uint32_t RFRTR : 1; /*!< [30..30] RX FIFO Buffer RTR Frame */ + __IM uint32_t RFIDE : 1; /*!< [31..31] RX FIFO Buffer IDE Bit */ + } ID_b; + }; + + union + { + __IM uint32_t PTR; /*!< (@ 0x00000004) RX FIFO Access Pointer Register */ + + struct + { + __IM uint32_t RFTS : 16; /*!< [15..0] RX FIFO Timestamp Field */ + uint32_t : 12; + __IM uint32_t RFDLC : 4; /*!< [31..28] RX FIFO Buffer DLC Field */ + } PTR_b; + }; + + union + { + __IM uint32_t FDSTS; /*!< (@ 0x00000008) RX FIFO Access CAN-FD Status Register */ + + struct + { + __IM uint32_t RFESI : 1; /*!< [0..0] Error State Indicator bit */ + __IM uint32_t RFBRS : 1; /*!< [1..1] Bit Rate Switch bit */ + __IM uint32_t RFFDF : 1; /*!< [2..2] CAN FD Format bit */ + uint32_t : 5; + __IM uint32_t RFIFL : 2; /*!< [9..8] RX FIFO Buffer Information Label Field */ + uint32_t : 6; + __IM uint32_t RFPTR : 16; /*!< [31..16] RX FIFO Buffer Pointer Field */ + } FDSTS_b; + }; + + union + { + __IM uint8_t DF[64]; /*!< (@ 0x0000000C) RX FIFO Access Data Field Registers */ + + struct + { + __IM uint8_t RFDB : 8; /*!< [7..0] RX FIFO Buffer Data Byte */ + } DF_b[64]; + }; +} R_CANFD_CFDRF_Type; /*!< Size = 76 (0x4c) */ + +/** + * @brief R_CANFD_CFDCF [CFDCF] (Common FIFO Access Registers) + */ +typedef struct +{ + union + { + __IOM uint32_t ID; /*!< (@ 0x00000000) Common FIFO Access ID Register */ + + struct + { + __IOM uint32_t CFID : 29; /*!< [28..0] Common FIFO Buffer ID Field */ + uint32_t : 1; + __IOM uint32_t CFRTR : 1; /*!< [30..30] Common FIFO Buffer RTR Frame */ + __IOM uint32_t CFIDE : 1; /*!< [31..31] Common FIFO Buffer IDE Bit */ + } ID_b; + }; + + union + { + __IOM uint32_t PTR; /*!< (@ 0x00000004) Common FIFO Access Pointer Register */ + + struct + { + __IOM uint32_t CFTS : 16; /*!< [15..0] Common FIFO Timestamp Field */ + uint32_t : 12; + __IOM uint32_t CFDLC : 4; /*!< [31..28] Common FIFO Buffer DLC Field */ + } PTR_b; + }; + + union + { + __IOM uint32_t FDSTS; /*!< (@ 0x00000008) Common FIFO Access CAN-FD Status Register */ + + struct + { + __IOM uint32_t CFESI : 1; /*!< [0..0] Error State Indicator bit */ + __IOM uint32_t CFBRS : 1; /*!< [1..1] Bit Rate Switch bit */ + __IOM uint32_t CFFDF : 1; /*!< [2..2] CAN FD Format bit */ + uint32_t : 5; + __IOM uint32_t CFIFL : 2; /*!< [9..8] Common FIFO Buffer Information Label Field */ + uint32_t : 6; + __IOM uint32_t CFPTR : 16; /*!< [31..16] Common FIFO Buffer Pointer Field */ + } FDSTS_b; + }; + + union + { + __IOM uint8_t DF[64]; /*!< (@ 0x0000000C) Common FIFO Access Data Field Registers */ + + struct + { + __IOM uint8_t CFDB : 8; /*!< [7..0] Common FIFO Buffer Data Byte */ + } DF_b[64]; + }; +} R_CANFD_CFDCF_Type; /*!< Size = 76 (0x4c) */ + +/** + * @brief R_CANFD_CFDTM [CFDTM] (TX Message Buffer Access Registers) + */ +typedef struct +{ + union + { + __IOM uint32_t ID; /*!< (@ 0x00000000) TX Message Buffer ID Register */ + + struct + { + __IOM uint32_t TMID : 29; /*!< [28..0] TX Message Buffer ID Field */ + uint32_t : 1; + __IOM uint32_t TMRTR : 1; /*!< [30..30] TX Message Buffer RTR Frame */ + __IOM uint32_t TMIDE : 1; /*!< [31..31] TX Message Buffer IDE Bit */ + } ID_b; + }; + + union + { + __IOM uint32_t PTR; /*!< (@ 0x00000004) TX Message Buffer Pointer Register */ + + struct + { + __IOM uint32_t TMTS : 16; /*!< [15..0] TX Message Buffer Timestamp Field */ + uint32_t : 12; + __IOM uint32_t TMDLC : 4; /*!< [31..28] TX Message Buffer DLC Field */ + } PTR_b; + }; + + union + { + __IOM uint32_t FDCTR; /*!< (@ 0x00000008) TX Message Buffer CAN-FD Control Register */ + + struct + { + __IOM uint32_t TMESI : 1; /*!< [0..0] Error State Indicator bit */ + __IOM uint32_t TMBRS : 1; /*!< [1..1] Bit Rate Switch bit */ + __IOM uint32_t TMFDF : 1; /*!< [2..2] CAN FD Format bit */ + uint32_t : 5; + __IOM uint32_t TMIFL : 2; /*!< [9..8] TX Message Buffer Information Label Field */ + uint32_t : 6; + __IOM uint32_t TMPTR : 16; /*!< [31..16] TX Message Buffer Pointer Field */ + } FDCTR_b; + }; + + union + { + __IOM uint8_t DF[64]; /*!< (@ 0x0000000C) TX Message Buffer Data Field Registers */ + + struct + { + __IOM uint8_t TMDB : 8; /*!< [7..0] TX Message Buffer Data Byte */ + } DF_b[64]; + }; +} R_CANFD_CFDTM_Type; /*!< Size = 76 (0x4c) */ + +/** + * @brief R_CANFD_CFDRM_RM [RM] (RX Message Buffer Access Registers) + */ +typedef struct +{ + union + { + __IM uint32_t ID; /*!< (@ 0x00000000) RX Message Buffer ID Register */ + + struct + { + __IM uint32_t RMID : 29; /*!< [28..0] RX Message Buffer ID Field */ + uint32_t : 1; + __IM uint32_t RMRTR : 1; /*!< [30..30] RX Message Buffer RTR Frame */ + __IM uint32_t RMIDE : 1; /*!< [31..31] RX Message Buffer IDE Bit */ + } ID_b; + }; + + union + { + __IM uint32_t PTR; /*!< (@ 0x00000004) RX Message Buffer Pointer Register */ + + struct + { + __IM uint32_t RMTS : 16; /*!< [15..0] RX Message Buffer Timestamp Field */ + uint32_t : 12; + __IM uint32_t RMDLC : 4; /*!< [31..28] RX Message Buffer DLC Field */ + } PTR_b; + }; + + union + { + __IM uint32_t FDSTS; /*!< (@ 0x00000008) RX Message Buffer CAN-FD Status Register */ + + struct + { + __IM uint32_t RMESI : 1; /*!< [0..0] Error State Indicator bit */ + __IM uint32_t RMBRS : 1; /*!< [1..1] Bit Rate Switch bit */ + __IM uint32_t RMFDF : 1; /*!< [2..2] CAN FD Format bit */ + uint32_t : 5; + __IM uint32_t RMIFL : 2; /*!< [9..8] RX Message Buffer Information Label Field */ + uint32_t : 6; + __IM uint32_t RMPTR : 16; /*!< [31..16] RX Message Buffer Pointer Field */ + } FDSTS_b; + }; + + union + { + __IM uint8_t DF[64]; /*!< (@ 0x0000000C) RX Message Buffer Data Field Registers */ + + struct + { + __IM uint8_t RMDB : 8; /*!< [7..0] RX Message Buffer Data Byte */ + } DF_b[64]; + }; +} R_CANFD_CFDRM_RM_Type; /*!< Size = 76 (0x4c) */ + +/** + * @brief R_CANFD_CFDRM [CFDRM] (RX Message Buffer Access Clusters) + */ +typedef struct +{ + __IOM R_CANFD_CFDRM_RM_Type RM[8]; /*!< (@ 0x00000000) RX Message Buffer Access Registers */ + __IM uint32_t RESERVED[104]; +} R_CANFD_CFDRM_Type; /*!< Size = 1024 (0x400) */ + +/** + * @brief R_ELC_ELSEGR [ELSEGR] (Event Link Software Event Generation Register) + */ +typedef struct +{ + union + { + __IOM uint8_t BY; /*!< (@ 0x00000000) Event Link Software Event Generation Register */ + + struct + { + __OM uint8_t SEG : 1; /*!< [0..0] Software Event Generation */ + uint8_t : 5; + __IOM uint8_t WE : 1; /*!< [6..6] SEG Bit Write Enable */ + __OM uint8_t WI : 1; /*!< [7..7] ELSEGR Register Write Disable */ + } BY_b; + }; + __IM uint8_t RESERVED; +} R_ELC_ELSEGR_Type; /*!< Size = 2 (0x2) */ + +/** + * @brief R_ELC_ELSR [ELSR] (Event Link Setting Register [0..30]) + */ +typedef struct +{ + union + { + __IOM uint16_t HA; /*!< (@ 0x00000000) Event Link Setting Register */ + + struct + { + __IOM uint16_t ELS : 9; /*!< [8..0] Event Link Select */ + uint16_t : 7; + } HA_b; + }; + __IM uint16_t RESERVED; +} R_ELC_ELSR_Type; /*!< Size = 4 (0x4) */ + +/** + * @brief R_IIC0_SAR [SAR] (Slave Address Registers) + */ +typedef struct +{ + union + { + __IOM uint8_t L; /*!< (@ 0x00000000) Slave Address Register L */ + + struct + { + __IOM uint8_t SVA : 8; /*!< [7..0] A slave address is set.7-Bit Address = SVA[7:1] 10-Bit + * Address = { SVA9,SVA8,SVA[7:0] } */ + } L_b; + }; + + union + { + __IOM uint8_t U; /*!< (@ 0x00000001) Slave Address Register U */ + + struct + { + __IOM uint8_t FS : 1; /*!< [0..0] 7-Bit/10-Bit Address Format Selection */ + __IOM uint8_t SVA8 : 1; /*!< [1..1] 10-Bit Address(bit8) */ + __IOM uint8_t SVA9 : 1; /*!< [2..2] 10-Bit Address(bit9) */ + uint8_t : 5; + } U_b; + }; +} R_IIC0_SAR_Type; /*!< Size = 2 (0x2) */ + +/** + * @brief R_MPU_MMPU_GROUP_REGION [REGION] (Address region control) + */ +typedef struct +{ + union + { + __IOM uint16_t AC; /*!< (@ 0x00000000) Access Control Register */ + + struct + { + __IOM uint16_t ENABLE : 1; /*!< [0..0] Region enable */ + __IOM uint16_t RP : 1; /*!< [1..1] Read protection */ + __IOM uint16_t WP : 1; /*!< [2..2] Write protection */ + __IOM uint16_t PP : 1; /*!< [3..3] Privilege protection */ + uint16_t : 12; + } AC_b; + }; + __IM uint16_t RESERVED; + + union + { + __IOM uint32_t S; /*!< (@ 0x00000004) Start Address Register */ + + struct + { + __IOM uint32_t MMPUS : 32; /*!< [31..0] Address where the region starts, for use in region determination. + * NOTE: Some low-order bits are fixed to 0. */ + } S_b; + }; + + union + { + __IOM uint32_t E; /*!< (@ 0x00000008) End Address Register */ + + struct + { + __IOM uint32_t MMPUE : 32; /*!< [31..0] Region end address registerAddress where the region + * end, for use in region determination. NOTE: Some low-order + * bits are fixed to 1. */ + } E_b; + }; + __IM uint32_t RESERVED1; +} R_MPU_MMPU_GROUP_REGION_Type; /*!< Size = 16 (0x10) */ + +/** + * @brief R_MPU_MMPU_GROUP [GROUP] ([DMAC0..NPU] MMPU Registers) + */ +typedef struct +{ + union + { + __IOM uint16_t EN; /*!< (@ 0x00000000) MMPU enable register */ + + struct + { + __IOM uint16_t ENABLE : 1; /*!< [0..0] Bus master MPU of DMAC enable */ + uint16_t : 7; + __OM uint16_t KEY : 8; /*!< [15..8] Write Keyword The data written to these bits are not + * stored. */ + } EN_b; + }; + __IM uint16_t RESERVED; + + union + { + __IOM uint16_t ENPT; /*!< (@ 0x00000004) MMPU enable protect register */ + + struct + { + __IOM uint16_t PROTECT : 1; /*!< [0..0] Protection of register EN */ + uint16_t : 7; + __OM uint16_t KEY : 8; /*!< [15..8] Write Keyword The data written to these bits are not + * stored. */ + } ENPT_b; + }; + __IM uint16_t RESERVED1; + + union + { + __IOM uint16_t RPT; /*!< (@ 0x00000008) MMPU Regions Protect Register Non-Secure */ + + struct + { + __IOM uint16_t PROTECT : 1; /*!< [0..0] Protection of register */ + uint16_t : 7; + __OM uint16_t KEY : 8; /*!< [15..8] Write Keyword The data written to these bits are not + * stored. */ + } RPT_b; + }; + __IM uint16_t RESERVED2; + + union + { + __IOM uint16_t RPT_SEC; /*!< (@ 0x0000000C) MMPU Regions Protect Register Secure (DMAC only) */ + + struct + { + __IOM uint16_t PROTECT : 1; /*!< [0..0] Protection of register */ + uint16_t : 7; + __OM uint16_t KEY : 8; /*!< [15..8] Write Keyword The data written to these bits are not + * stored. */ + } RPT_SEC_b; + }; + __IM uint16_t RESERVED3; + __IM uint32_t RESERVED4[60]; + __IOM R_MPU_MMPU_GROUP_REGION_Type REGION[8]; /*!< (@ 0x00000100) Address region control */ + __IM uint32_t RESERVED5[32]; +} R_MPU_MMPU_GROUP_Type; /*!< Size = 512 (0x200) */ + +/** + * @brief R_MPU_SPMON_SP [SP] (Stack Pointer Monitor) + */ +typedef struct +{ + union + { + __IOM uint16_t OAD; /*!< (@ 0x00000000) Stack Pointer Monitor Operation After Detection + * Register */ + + struct + { + __IOM uint16_t OAD : 1; /*!< [0..0] Operation after detection */ + uint16_t : 7; + __OM uint16_t KEY : 8; /*!< [15..8] Write Keyword The data written to these bits are not + * stored. */ + } OAD_b; + }; + __IM uint16_t RESERVED; + + union + { + __IOM uint16_t CTL; /*!< (@ 0x00000004) Stack Pointer Monitor Access Control Register */ + + struct + { + __IOM uint16_t ENABLE : 1; /*!< [0..0] Stack Pointer Monitor Enable */ + uint16_t : 7; + __IOM uint16_t ERROR : 1; /*!< [8..8] Stack Pointer Monitor Error Flag */ + uint16_t : 7; + } CTL_b; + }; + + union + { + __IOM uint16_t PT; /*!< (@ 0x00000006) Stack Pointer Monitor Protection Register */ + + struct + { + __IOM uint16_t PROTECT : 1; /*!< [0..0] Protection of register (MSPMPUAC, MSPMPUSA and MSPMPUSE) */ + uint16_t : 7; + __OM uint16_t KEY : 8; /*!< [15..8] Write Keyword The data written to these bits are not + * stored. */ + } PT_b; + }; + + union + { + __IOM uint32_t SA; /*!< (@ 0x00000008) Stack Pointer Monitor Start Address Register */ + + struct + { + __IOM uint32_t MSPMPUSA : 32; /*!< [31..0] Region start address register Address where the region + * starts, for use in region determination.NOTE: Range: 0x1FF00000-0x200FFFF + * The low-order 2 bits are fixed to 0. */ + } SA_b; + }; + + union + { + __IOM uint32_t EA; /*!< (@ 0x0000000C) Stack Pointer Monitor End Address Register */ + + struct + { + __IOM uint32_t MSPMPUEA : 32; /*!< [31..0] Region end address register Address where the region + * starts, for use in region determination.NOTE: Range: 0x1FF00003-0x200FFFF + * The low-order 2 bits are fixed to 1. */ + } EA_b; + }; +} R_MPU_SPMON_SP_Type; /*!< Size = 16 (0x10) */ + +/** + * @brief R_PFS_PORT_PIN [PIN] (Pin Function Selects) + */ +typedef struct +{ + union + { + union + { + __IOM uint32_t PmnPFS; /*!< (@ 0x00000000) Pin Function Control Register */ + + struct + { + __IOM uint32_t PODR : 1; /*!< [0..0] Port Output Data */ + __IM uint32_t PIDR : 1; /*!< [1..1] Port Input Data */ + __IOM uint32_t PDR : 1; /*!< [2..2] Port Direction */ + uint32_t : 1; + __IOM uint32_t PCR : 1; /*!< [4..4] Pull-up Control */ + uint32_t : 1; + __IOM uint32_t NCODR : 1; /*!< [6..6] N-Channel Open Drain Control */ + uint32_t : 3; + __IOM uint32_t DSCR : 2; /*!< [11..10] Drive Strength Control Register */ + __IOM uint32_t EOFR : 2; /*!< [13..12] Event on Falling/Event on Rising. */ + __IOM uint32_t ISEL : 1; /*!< [14..14] IRQ input enable */ + __IOM uint32_t ASEL : 1; /*!< [15..15] Analog Input enable */ + __IOM uint32_t PMR : 1; /*!< [16..16] Port Mode Control */ + uint32_t : 7; + __IOM uint32_t PSEL : 5; /*!< [28..24] Port Function SelectThese bits select the peripheral + * function. For individual pin functions, see the MPC table */ + uint32_t : 3; + } PmnPFS_b; + }; + + union + { + __IOM uint16_t PmnPFS_HA; /*!< (@ 0x00000000) Pin Function Control Register */ + + struct + { + __IOM uint16_t PODR : 1; /*!< [0..0] Port Output Data */ + __IM uint16_t PIDR : 1; /*!< [1..1] Port Input Data */ + __IOM uint16_t PDR : 1; /*!< [2..2] Port Direction */ + uint16_t : 1; + __IOM uint16_t PCR : 1; /*!< [4..4] Pull-up Control */ + uint16_t : 1; + __IOM uint16_t NCODR : 1; /*!< [6..6] N-Channel Open Drain Control */ + uint16_t : 3; + __IOM uint16_t DSCR : 2; /*!< [11..10] Drive Strength Control Register */ + __IOM uint16_t EOFR : 2; /*!< [13..12] Event on Falling/Event on Rising. */ + __IOM uint16_t ISEL : 1; /*!< [14..14] IRQ input enable */ + __IOM uint16_t ASEL : 1; /*!< [15..15] Analog Input enable */ + } PmnPFS_HA_b; + }; + + union + { + __IOM uint8_t PmnPFS_BY; /*!< (@ 0x00000000) Pin Function Control Register */ + + struct + { + __IOM uint8_t PODR : 1; /*!< [0..0] Port Output Data */ + __IM uint8_t PIDR : 1; /*!< [1..1] Port Input Data */ + __IOM uint8_t PDR : 1; /*!< [2..2] Port Direction */ + uint8_t : 1; + __IOM uint8_t PCR : 1; /*!< [4..4] Pull-up Control */ + uint8_t : 1; + __IOM uint8_t NCODR : 1; /*!< [6..6] N-Channel Open Drain Control */ + uint8_t : 1; + } PmnPFS_BY_b; + }; + }; +} R_PFS_PORT_PIN_Type; /*!< Size = 4 (0x4) */ + +/** + * @brief R_PFS_PORT [PORT] (Port [0..14]) + */ +typedef struct +{ + __IOM R_PFS_PORT_PIN_Type PIN[16]; /*!< (@ 0x00000000) Pin Function Selects */ +} R_PFS_PORT_Type; /*!< Size = 64 (0x40) */ + +/** + * @brief R_PMISC_PMSAR [PMSAR] (Port Security Attribution Register) + */ +typedef struct +{ + __IOM uint16_t PMSAR; /*!< (@ 0x00000000) Port Security Attribution Register */ + __IM uint16_t RESERVED; +} R_PMISC_PMSAR_Type; /*!< Size = 4 (0x4) */ + +/** + * @brief R_RTC_RTCCR [RTCCR] (Time Capture Control Register) + */ +typedef struct +{ + union + { + __IOM uint8_t RTCCR; /*!< (@ 0x00000000) Time Capture Control Register */ + + struct + { + __IOM uint8_t TCCT : 2; /*!< [1..0] Time Capture Control */ + __IM uint8_t TCST : 1; /*!< [2..2] Time Capture Status */ + uint8_t : 1; + __IOM uint8_t TCNF : 2; /*!< [5..4] Time Capture Noise Filter Control */ + uint8_t : 1; + __IOM uint8_t TCEN : 1; /*!< [7..7] Time Capture Event Input Pin Enable */ + } RTCCR_b; + }; + __IM uint8_t RESERVED; +} R_RTC_RTCCR_Type; /*!< Size = 2 (0x2) */ + +/** + * @brief R_RTC_CP [CP] (Capture registers) + */ +typedef struct +{ + __IM uint8_t RESERVED[2]; + + union + { + union + { + __IM uint8_t RSEC; /*!< (@ 0x00000002) Second Capture Register */ + + struct + { + __IM uint8_t SEC1 : 4; /*!< [3..0] 1-Second Capture Capture value for the ones place of + * seconds */ + __IM uint8_t SEC10 : 3; /*!< [6..4] 10-Second Capture Capture value for the tens place of + * seconds */ + uint8_t : 1; + } RSEC_b; + }; + + union + { + __IM uint8_t BCNT0; /*!< (@ 0x00000002) BCNT0 Capture Register */ + + struct + { + __IM uint8_t BCNT0CP : 8; /*!< [7..0] BCNT0CP is a read-only register that captures the BCNT0 + * value when a time capture event is detected. */ + } BCNT0_b; + }; + }; + __IM uint8_t RESERVED1; + + union + { + union + { + __IM uint8_t RMIN; /*!< (@ 0x00000004) Minute Capture Register */ + + struct + { + __IM uint8_t MIN1 : 4; /*!< [3..0] 1-Minute Capture Capture value for the ones place of + * minutes */ + __IM uint8_t MIN10 : 3; /*!< [6..4] 10-Minute Capture Capture value for the tens place of + * minutes */ + uint8_t : 1; + } RMIN_b; + }; + + union + { + __IM uint8_t BCNT1; /*!< (@ 0x00000004) BCNT1 Capture Register */ + + struct + { + __IM uint8_t BCNT1CP : 8; /*!< [7..0] BCNT1CP is a read-only register that captures the BCNT1 + * value when a time capture event is detected. */ + } BCNT1_b; + }; + }; + __IM uint8_t RESERVED2; + + union + { + union + { + __IM uint8_t RHR; /*!< (@ 0x00000006) Hour Capture Register */ + + struct + { + __IM uint8_t HR1 : 4; /*!< [3..0] 1-Minute Capture Capture value for the ones place of + * minutes */ + __IM uint8_t HR10 : 2; /*!< [5..4] 10-Minute Capture Capture value for the tens place of + * minutes */ + __IM uint8_t PM : 1; /*!< [6..6] A.m./p.m. select for time counter setting. */ + uint8_t : 1; + } RHR_b; + }; + + union + { + __IM uint8_t BCNT2; /*!< (@ 0x00000006) BCNT2 Capture Register */ + + struct + { + __IM uint8_t BCNT2CP : 8; /*!< [7..0] BCNT2CP is a read-only register that captures the BCNT2 + * value when a time capture event is detected. */ + } BCNT2_b; + }; + }; + __IM uint8_t RESERVED3[3]; + + union + { + union + { + __IM uint8_t RDAY; /*!< (@ 0x0000000A) Date Capture Register */ + + struct + { + __IM uint8_t DATE1 : 4; /*!< [3..0] 1-Day Capture Capture value for the ones place of minutes */ + __IM uint8_t DATE10 : 2; /*!< [5..4] 10-Day Capture Capture value for the tens place of minutes */ + uint8_t : 2; + } RDAY_b; + }; + + union + { + __IM uint8_t BCNT3; /*!< (@ 0x0000000A) BCNT3 Capture Register */ + + struct + { + __IM uint8_t BCNT3CP : 8; /*!< [7..0] BCNT3CP is a read-only register that captures the BCNT3 + * value when a time capture event is detected. */ + } BCNT3_b; + }; + }; + __IM uint8_t RESERVED4; + + union + { + __IM uint8_t RMON; /*!< (@ 0x0000000C) Month Capture Register */ + + struct + { + __IM uint8_t MON1 : 4; /*!< [3..0] 1-Month Capture Capture value for the ones place of months */ + __IM uint8_t MON10 : 1; /*!< [4..4] 10-Month Capture Capture value for the tens place of + * months */ + uint8_t : 3; + } RMON_b; + }; + __IM uint8_t RESERVED5[3]; +} R_RTC_CP_Type; /*!< Size = 16 (0x10) */ + +/** + * @brief R_USB_FS0_PIPE_TR [PIPE_TR] (Pipe Transaction Counter Registers) + */ +typedef struct +{ + union + { + __IOM uint16_t E; /*!< (@ 0x00000000) Pipe Transaction Counter Enable Register */ + + struct + { + uint16_t : 8; + __IOM uint16_t TRCLR : 1; /*!< [8..8] Transaction Counter Clear */ + __IOM uint16_t TRENB : 1; /*!< [9..9] Transaction Counter Enable */ + uint16_t : 6; + } E_b; + }; + + union + { + __IOM uint16_t N; /*!< (@ 0x00000002) Pipe Transaction Counter Register */ + + struct + { + __IOM uint16_t TRNCNT : 16; /*!< [15..0] Transaction Counter */ + } N_b; + }; +} R_USB_FS0_PIPE_TR_Type; /*!< Size = 4 (0x4) */ + +/** + * @brief R_USB_HS0_PIPE_TR [PIPE_TR] (Pipe Transaction Counter Registers) + */ +typedef struct +{ + union + { + __IOM uint16_t E; /*!< (@ 0x00000000) PIPE Transaction Counter Enable Register */ + + struct + { + uint16_t : 8; + __IOM uint16_t TRCLR : 1; /*!< [8..8] Transaction Counter ClearSetting this bit to 1 allows + * clearing the transaction counter to 0. */ + __IOM uint16_t TRENB : 1; /*!< [9..9] Transaction Counter EnableEnables or disables the transaction + * counter function. */ + uint16_t : 6; + } E_b; + }; + + union + { + __IOM uint16_t N; /*!< (@ 0x00000002) PIPE Transaction Counter Register */ + + struct + { + __IOM uint16_t TRNCNT : 16; /*!< [15..0] Transaction CounterWhen writing to: Specify the number + * of total packets (number of transactions) to be received + * by the relevant PIPE.When read from: When TRENB = 0: Indicate + * the specified number of transactions.When TRENB = 1: Indicate + * the number of currently counted transactions. */ + } N_b; + }; +} R_USB_HS0_PIPE_TR_Type; /*!< Size = 4 (0x4) */ + +/** + * @brief R_XSPI_CMCFGCS [CMCFGCS] (xSPI Command Map Configuration registers) + */ +typedef struct +{ + union + { + __IOM uint32_t CMCFG0; /*!< (@ 0x00000000) xSPI Command Map Configuration register 0 */ + + struct + { + __IOM uint32_t FFMT : 2; /*!< [1..0] Frame format */ + __IOM uint32_t ADDSIZE : 2; /*!< [3..2] Address size */ + __IOM uint32_t WPBSTMD : 1; /*!< [4..4] Wrapping burst mode */ + __IOM uint32_t ARYAMD : 1; /*!< [5..5] Array address mode */ + uint32_t : 10; + __IOM uint32_t ADDRPEN : 8; /*!< [23..16] Address Replace Enable */ + __IOM uint32_t ADDRPCD : 8; /*!< [31..24] Address Replace Code */ + } CMCFG0_b; + }; + + union + { + __IOM uint32_t CMCFG1; /*!< (@ 0x00000004) xSPI Command Map Configuration register 1 */ + + struct + { + __IOM uint32_t RDCMD : 16; /*!< [15..0] Read command */ + __IOM uint32_t RDLATE : 5; /*!< [20..16] Read latency cycle */ + uint32_t : 11; + } CMCFG1_b; + }; + + union + { + __IOM uint32_t CMCFG2; /*!< (@ 0x00000008) xSPI Command Map Configuration register 2 */ + + struct + { + __IOM uint32_t WRCMD : 16; /*!< [15..0] Write command */ + __IOM uint32_t WRLATE : 5; /*!< [20..16] Write latency cycle */ + uint32_t : 11; + } CMCFG2_b; + }; + __IM uint32_t RESERVED; +} R_XSPI_CMCFGCS_Type; /*!< Size = 16 (0x10) */ + +/** + * @brief R_XSPI_CDBUF [CDBUF] (xSPI BUF register) + */ +typedef struct +{ + union + { + __IOM uint32_t CDT; /*!< (@ 0x00000000) xSPI Command Manual Type buf */ + + struct + { + __IOM uint32_t CMDSIZE : 2; /*!< [1..0] Command Size */ + __IOM uint32_t ADDSIZE : 3; /*!< [4..2] Address size */ + __IOM uint32_t DATASIZE : 4; /*!< [8..5] Write/Read Data Size */ + __IOM uint32_t LATE : 5; /*!< [13..9] Latency cycle */ + uint32_t : 1; + __IOM uint32_t TRTYPE : 1; /*!< [15..15] Transaction Type */ + __IOM uint32_t CMD : 16; /*!< [31..16] Command (1-2byte) */ + } CDT_b; + }; + + union + { + __IOM uint32_t CDA; /*!< (@ 0x00000004) xSPI Command Manual Address buf */ + + struct + { + __IOM uint32_t ADD : 32; /*!< [31..0] Address */ + } CDA_b; + }; + + union + { + __IOM uint32_t CDD0; /*!< (@ 0x00000008) xSPI Command Manual Data 0 buf */ + + struct + { + __IOM uint32_t DATA : 32; /*!< [31..0] Write/Read Data */ + } CDD0_b; + }; + + union + { + __IOM uint32_t CDD1; /*!< (@ 0x0000000C) xSPI Command Manual Data 1 buf */ + + struct + { + __IOM uint32_t DATA : 32; /*!< [31..0] Write/Read Data */ + } CDD1_b; + }; +} R_XSPI_CDBUF_Type; /*!< Size = 16 (0x10) */ + +/** + * @brief R_XSPI_CCCTLCS [CCCTLCS] (xSPI CS register) + */ +typedef struct +{ + union + { + __IOM uint32_t CCCTL0; /*!< (@ 0x00000000) xSPI Command Calibration Control register 0 */ + + struct + { + __IOM uint32_t CAEN : 1; /*!< [0..0] Automatic Calibration Enable */ + __IOM uint32_t CANOWR : 1; /*!< [1..1] Calibration no write mode */ + uint32_t : 6; + __IOM uint32_t CAITV : 5; /*!< [12..8] Calibration interval */ + uint32_t : 3; + __IOM uint32_t CASFTSTA : 5; /*!< [20..16] Calibration DS shift start value */ + uint32_t : 3; + __IOM uint32_t CASFTEND : 5; /*!< [28..24] Calibration DS shift end value */ + uint32_t : 3; + } CCCTL0_b; + }; + + union + { + __IOM uint32_t CCCTL1; /*!< (@ 0x00000004) xSPI Command Calibration Control register 1 */ + + struct + { + __IOM uint32_t CACMDSIZE : 2; /*!< [1..0] Command Size */ + __IOM uint32_t CAADDSIZE : 3; /*!< [4..2] Address size */ + __IOM uint32_t CADATASIZE : 4; /*!< [8..5] Write/Read Data Size */ + uint32_t : 7; + __IOM uint32_t CAWRLATE : 5; /*!< [20..16] Write Latency cycle */ + uint32_t : 3; + __IOM uint32_t CARDLATE : 5; /*!< [28..24] Read Latency cycle */ + uint32_t : 3; + } CCCTL1_b; + }; + + union + { + __IOM uint32_t CCCTL2; /*!< (@ 0x00000008) xSPI Command Calibration Control register 2 */ + + struct + { + __IOM uint32_t CAWRCMD : 16; /*!< [15..0] Calibration pattern write command */ + __IOM uint32_t CARDCMD : 16; /*!< [31..16] Calibration pattern read command */ + } CCCTL2_b; + }; + + union + { + __IOM uint32_t CCCTL3; /*!< (@ 0x0000000C) xSPI Command Calibration Control register 3 */ + + struct + { + __IOM uint32_t CAADD : 32; /*!< [31..0] Calibration pattern address */ + } CCCTL3_b; + }; + + union + { + __IOM uint32_t CCCTL4; /*!< (@ 0x00000010) xSPI Command Calibration Control register 4 */ + + struct + { + __IOM uint32_t CADATA : 32; /*!< [31..0] Calibration pattern data */ + } CCCTL4_b; + }; + + union + { + __IOM uint32_t CCCTL5; /*!< (@ 0x00000014) xSPI Command Calibration Control register 5 */ + + struct + { + __IOM uint32_t CADATA : 32; /*!< [31..0] Calibration pattern data */ + } CCCTL5_b; + }; + + union + { + __IOM uint32_t CCCTL6; /*!< (@ 0x00000018) xSPI Command Calibration Control register 6 */ + + struct + { + __IOM uint32_t CADATA : 32; /*!< [31..0] Calibration pattern data */ + } CCCTL6_b; + }; + + union + { + __IOM uint32_t CCCTL7; /*!< (@ 0x0000001C) xSPI Command Calibration Control register 7 */ + + struct + { + __IOM uint32_t CADATA : 32; /*!< [31..0] Calibration pattern data */ + } CCCTL7_b; + }; +} R_XSPI_CCCTLCS_Type; /*!< Size = 32 (0x20) */ + +/** + * @brief R_AGTX0_AGT16_CTRL [CTRL] (CTRL) + */ +typedef struct +{ + union + { + __IOM uint8_t AGTCR; /*!< (@ 0x00000000) AGT Control Register */ + + struct + { + __IOM uint8_t TSTART : 1; /*!< [0..0] AGT count start */ + __IM uint8_t TCSTF : 1; /*!< [1..1] AGT count status flag */ + __OM uint8_t TSTOP : 1; /*!< [2..2] AGT count forced stop */ + uint8_t : 1; + __IOM uint8_t TEDGF : 1; /*!< [4..4] Active edge judgment flag */ + __IOM uint8_t TUNDF : 1; /*!< [5..5] Underflow flag */ + __IOM uint8_t TCMAF : 1; /*!< [6..6] Compare match A flag */ + __IOM uint8_t TCMBF : 1; /*!< [7..7] Compare match B flag */ + } AGTCR_b; + }; + + union + { + __IOM uint8_t AGTMR1; /*!< (@ 0x00000001) AGT Mode Register 1 */ + + struct + { + __IOM uint8_t TMOD : 3; /*!< [2..0] Operating mode */ + __IOM uint8_t TEDGPL : 1; /*!< [3..3] Edge polarity */ + __IOM uint8_t TCK : 3; /*!< [6..4] Count source */ + uint8_t : 1; + } AGTMR1_b; + }; + + union + { + __IOM uint8_t AGTMR2; /*!< (@ 0x00000002) AGT Mode Register 2 */ + + struct + { + __IOM uint8_t CKS : 3; /*!< [2..0] AGTLCLK/AGTSCLK count source clock frequency division + * ratio */ + uint8_t : 4; + __IOM uint8_t LPM : 1; /*!< [7..7] Low Power Mode */ + } AGTMR2_b; + }; + + union + { + __IOM uint8_t AGTIOSEL_ALT; /*!< (@ 0x00000003) AGT Pin Select Register */ + + struct + { + __IOM uint8_t SEL : 2; /*!< [1..0] AGTIO pin select */ + uint8_t : 2; + __IOM uint8_t TIES : 1; /*!< [4..4] AGTIO input enable */ + uint8_t : 3; + } AGTIOSEL_ALT_b; + }; + + union + { + __IOM uint8_t AGTIOC; /*!< (@ 0x00000004) AGT I/O Control Register */ + + struct + { + __IOM uint8_t TEDGSEL : 1; /*!< [0..0] I/O polarity switchFunction varies depending on the operating + * mode. */ + uint8_t : 1; + __IOM uint8_t TOE : 1; /*!< [2..2] AGTOn output enable */ + uint8_t : 1; + __IOM uint8_t TIPF : 2; /*!< [5..4] Input filter */ + __IOM uint8_t TIOGT : 2; /*!< [7..6] Count control */ + } AGTIOC_b; + }; + + union + { + __IOM uint8_t AGTISR; /*!< (@ 0x00000005) AGT Event Pin Select Register */ + + struct + { + uint8_t : 2; + __IOM uint8_t EEPS : 1; /*!< [2..2] AGTEE polarty selection */ + uint8_t : 5; + } AGTISR_b; + }; + + union + { + __IOM uint8_t AGTCMSR; /*!< (@ 0x00000006) AGT Compare Match Function Select Register */ + + struct + { + __IOM uint8_t TCMEA : 1; /*!< [0..0] Compare match A register enable */ + __IOM uint8_t TOEA : 1; /*!< [1..1] AGTOA output enable */ + __IOM uint8_t TOPOLA : 1; /*!< [2..2] AGTOA polarity select */ + uint8_t : 1; + __IOM uint8_t TCMEB : 1; /*!< [4..4] Compare match B register enable */ + __IOM uint8_t TOEB : 1; /*!< [5..5] AGTOB output enable */ + __IOM uint8_t TOPOLB : 1; /*!< [6..6] AGTOB polarity select */ + uint8_t : 1; + } AGTCMSR_b; + }; + + union + { + __IOM uint8_t AGTIOSEL; /*!< (@ 0x00000007) AGT Pin Select Register */ + + struct + { + __IOM uint8_t SEL : 2; /*!< [1..0] AGTIO pin select */ + uint8_t : 2; + __IOM uint8_t TIES : 1; /*!< [4..4] AGTIO input enable */ + uint8_t : 3; + } AGTIOSEL_b; + }; +} R_AGTX0_AGT16_CTRL_Type; /*!< Size = 8 (0x8) */ + +/** + * @brief R_AGTX0_AGT16 [AGT16] (AGT (16-bit) peripheral registers) + */ +typedef struct +{ + union + { + __IOM uint16_t AGT; /*!< (@ 0x00000000) AGT Counter Register */ + + struct + { + __IOM uint16_t AGT : 16; /*!< [15..0] 16bit counter and reload register. NOTE : When 1 is + * written to the TSTOP bit in the AGTCRn register, the 16-bit + * counter is forcibly stopped and set to FFFFH. */ + } AGT_b; + }; + + union + { + __IOM uint16_t AGTCMA; /*!< (@ 0x00000002) AGT Compare Match A Register */ + + struct + { + __IOM uint16_t AGTCMA : 16; /*!< [15..0] AGT Compare Match A data is stored.NOTE : When 1 is + * written to the TSTOP bit in the AGTCRn register, set to + * FFFFH */ + } AGTCMA_b; + }; + + union + { + __IOM uint16_t AGTCMB; /*!< (@ 0x00000004) AGT Compare Match B Register */ + + struct + { + __IOM uint16_t AGTCMB : 16; /*!< [15..0] AGT Compare Match B data is stored.NOTE : When 1 is + * written to the TSTOP bit in the AGTCR register, set to + * FFFFH */ + } AGTCMB_b; + }; + __IM uint16_t RESERVED; + __IOM R_AGTX0_AGT16_CTRL_Type CTRL; /*!< (@ 0x00000008) CTRL */ +} R_AGTX0_AGT16_Type; /*!< Size = 16 (0x10) */ + +/** + * @brief R_AGTX0_AGT32 [AGT32] (AGTW (32-bit) peripheral registers) + */ +typedef struct +{ + union + { + __IOM uint32_t AGT; /*!< (@ 0x00000000) AGT 32-bit Counter Register */ + + struct + { + __IOM uint32_t AGT : 32; /*!< [31..0] 32bit counter and reload register. NOTE : When 1 is + * written to the TSTOP bit in the AGTCRn register, the 16-bit + * counter is forcibly stopped and set to FFFFH. */ + } AGT_b; + }; + + union + { + __IOM uint32_t AGTCMA; /*!< (@ 0x00000004) AGT Compare Match A Register */ + + struct + { + __IOM uint32_t AGTCMA : 32; /*!< [31..0] AGT Compare Match A data is stored.NOTE : When 1 is + * written to the TSTOP bit in the AGTCRn register, set to + * FFFFH */ + } AGTCMA_b; + }; + + union + { + __IOM uint32_t AGTCMB; /*!< (@ 0x00000008) AGT Compare Match B Register */ + + struct + { + __IOM uint32_t AGTCMB : 32; /*!< [31..0] AGT Compare Match B data is stored.NOTE : When 1 is + * written to the TSTOP bit in the AGTCR register, set to + * FFFFH */ + } AGTCMB_b; + }; + __IOM R_AGTX0_AGT16_CTRL_Type CTRL; /*!< (@ 0x0000000C) CTRL */ +} R_AGTX0_AGT32_Type; /*!< Size = 20 (0x14) */ + +/** + * @brief R_OFS_DATAFLASH_CFGDLOCK_CFGD [CFGD] (Configuration Data [0..1] Lock Bits) + */ +typedef struct +{ + union + { + __IM uint32_t CFGD_L; /*!< (@ 0x00000000) Configuration Data Lock Bits Lower Word */ + + struct + { + __IM uint32_t CDLK0 : 1; /*!< [0..0] Configuration Data Lock Bit */ + __IM uint32_t CDLK1 : 1; /*!< [1..1] Configuration Data Lock Bit */ + __IM uint32_t CDLK2 : 1; /*!< [2..2] Configuration Data Lock Bit */ + __IM uint32_t CDLK3 : 1; /*!< [3..3] Configuration Data Lock Bit */ + __IM uint32_t CDLK4 : 1; /*!< [4..4] Configuration Data Lock Bit */ + __IM uint32_t CDLK5 : 1; /*!< [5..5] Configuration Data Lock Bit */ + __IM uint32_t CDLK6 : 1; /*!< [6..6] Configuration Data Lock Bit */ + __IM uint32_t CDLK7 : 1; /*!< [7..7] Configuration Data Lock Bit */ + __IM uint32_t CDLK8 : 1; /*!< [8..8] Configuration Data Lock Bit */ + __IM uint32_t CDLK9 : 1; /*!< [9..9] Configuration Data Lock Bit */ + __IM uint32_t CDLK10 : 1; /*!< [10..10] Configuration Data Lock Bit */ + __IM uint32_t CDLK11 : 1; /*!< [11..11] Configuration Data Lock Bit */ + __IM uint32_t CDLK12 : 1; /*!< [12..12] Configuration Data Lock Bit */ + __IM uint32_t CDLK13 : 1; /*!< [13..13] Configuration Data Lock Bit */ + __IM uint32_t CDLK14 : 1; /*!< [14..14] Configuration Data Lock Bit */ + __IM uint32_t CDLK15 : 1; /*!< [15..15] Configuration Data Lock Bit */ + __IM uint32_t CDLK16 : 1; /*!< [16..16] Configuration Data Lock Bit */ + __IM uint32_t CDLK17 : 1; /*!< [17..17] Configuration Data Lock Bit */ + __IM uint32_t CDLK18 : 1; /*!< [18..18] Configuration Data Lock Bit */ + __IM uint32_t CDLK19 : 1; /*!< [19..19] Configuration Data Lock Bit */ + __IM uint32_t CDLK20 : 1; /*!< [20..20] Configuration Data Lock Bit */ + __IM uint32_t CDLK21 : 1; /*!< [21..21] Configuration Data Lock Bit */ + __IM uint32_t CDLK22 : 1; /*!< [22..22] Configuration Data Lock Bit */ + __IM uint32_t CDLK23 : 1; /*!< [23..23] Configuration Data Lock Bit */ + __IM uint32_t CDLK24 : 1; /*!< [24..24] Configuration Data Lock Bit */ + __IM uint32_t CDLK25 : 1; /*!< [25..25] Configuration Data Lock Bit */ + __IM uint32_t CDLK26 : 1; /*!< [26..26] Configuration Data Lock Bit */ + __IM uint32_t CDLK27 : 1; /*!< [27..27] Configuration Data Lock Bit */ + __IM uint32_t CDLK28 : 1; /*!< [28..28] Configuration Data Lock Bit */ + __IM uint32_t CDLK29 : 1; /*!< [29..29] Configuration Data Lock Bit */ + __IM uint32_t CDLK30 : 1; /*!< [30..30] Configuration Data Lock Bit */ + __IM uint32_t CDLK31 : 1; /*!< [31..31] Configuration Data Lock Bit */ + } CFGD_L_b; + }; + + union + { + __IM uint32_t CFGD_H; /*!< (@ 0x00000004) Configuration Data Lock Bits Higher Word */ + + struct + { + __IM uint32_t CDLK32 : 1; /*!< [0..0] Configuration Data Lock Bit */ + __IM uint32_t CDLK33 : 1; /*!< [1..1] Configuration Data Lock Bit */ + __IM uint32_t CDLK34 : 1; /*!< [2..2] Configuration Data Lock Bit */ + __IM uint32_t CDLK35 : 1; /*!< [3..3] Configuration Data Lock Bit */ + __IM uint32_t CDLK36 : 1; /*!< [4..4] Configuration Data Lock Bit */ + __IM uint32_t CDLK37 : 1; /*!< [5..5] Configuration Data Lock Bit */ + __IM uint32_t CDLK38 : 1; /*!< [6..6] Configuration Data Lock Bit */ + __IM uint32_t CDLK39 : 1; /*!< [7..7] Configuration Data Lock Bit */ + __IM uint32_t CDLK40 : 1; /*!< [8..8] Configuration Data Lock Bit */ + __IM uint32_t CDLK41 : 1; /*!< [9..9] Configuration Data Lock Bit */ + __IM uint32_t CDLK42 : 1; /*!< [10..10] Configuration Data Lock Bit */ + __IM uint32_t CDLK43 : 1; /*!< [11..11] Configuration Data Lock Bit */ + __IM uint32_t CDLK44 : 1; /*!< [12..12] Configuration Data Lock Bit */ + __IM uint32_t CDLK45 : 1; /*!< [13..13] Configuration Data Lock Bit */ + __IM uint32_t CDLK46 : 1; /*!< [14..14] Configuration Data Lock Bit */ + __IM uint32_t CDLK47 : 1; /*!< [15..15] Configuration Data Lock Bit */ + __IM uint32_t CDLK48 : 1; /*!< [16..16] Configuration Data Lock Bit */ + __IM uint32_t CDLK49 : 1; /*!< [17..17] Configuration Data Lock Bit */ + __IM uint32_t CDLK50 : 1; /*!< [18..18] Configuration Data Lock Bit */ + __IM uint32_t CDLK51 : 1; /*!< [19..19] Configuration Data Lock Bit */ + __IM uint32_t CDLK52 : 1; /*!< [20..20] Configuration Data Lock Bit */ + __IM uint32_t CDLK53 : 1; /*!< [21..21] Configuration Data Lock Bit */ + __IM uint32_t CDLK54 : 1; /*!< [22..22] Configuration Data Lock Bit */ + __IM uint32_t CDLK55 : 1; /*!< [23..23] Configuration Data Lock Bit */ + __IM uint32_t CDLK56 : 1; /*!< [24..24] Configuration Data Lock Bit */ + __IM uint32_t CDLK57 : 1; /*!< [25..25] Configuration Data Lock Bit */ + __IM uint32_t CDLK58 : 1; /*!< [26..26] Configuration Data Lock Bit */ + __IM uint32_t CDLK59 : 1; /*!< [27..27] Configuration Data Lock Bit */ + __IM uint32_t CDLK60 : 1; /*!< [28..28] Configuration Data Lock Bit */ + __IM uint32_t CDLK61 : 1; /*!< [29..29] Configuration Data Lock Bit */ + __IM uint32_t CDLK62 : 1; /*!< [30..30] Configuration Data Lock Bit */ + __IM uint32_t CDLK63 : 1; /*!< [31..31] Configuration Data Lock Bit */ + } CFGD_H_b; + }; +} R_OFS_DATAFLASH_CFGDLOCK_CFGD_Type; /*!< Size = 8 (0x8) */ + +/** + * @brief R_OFS_DATAFLASH_CFGDLOCK [CFGDLOCK] (Configuration Data Lock Bits) + */ +typedef struct +{ + __IOM R_OFS_DATAFLASH_CFGDLOCK_CFGD_Type CFGD0; /*!< (@ 0x00000000) Configuration Data 0 Lock Bits */ + __IOM R_OFS_DATAFLASH_CFGDLOCK_CFGD_Type CFGD1; /*!< (@ 0x00000008) Configuration Data 1 Lock Bits */ + + union + { + __IM uint16_t CFGD2; /*!< (@ 0x00000010) Configuration Data 2 Lock Bit */ + + struct + { + __IM uint16_t CDLK0 : 1; /*!< [0..0] Configuration Data Lock Bit */ + __IM uint16_t CDLK1 : 1; /*!< [1..1] Configuration Data Lock Bit */ + __IM uint16_t CDLK2 : 1; /*!< [2..2] Configuration Data Lock Bit */ + __IM uint16_t CDLK3 : 1; /*!< [3..3] Configuration Data Lock Bit */ + __IM uint16_t CDLK4 : 1; /*!< [4..4] Configuration Data Lock Bit */ + __IM uint16_t CDLK5 : 1; /*!< [5..5] Configuration Data Lock Bit */ + __IM uint16_t CDLK6 : 1; /*!< [6..6] Configuration Data Lock Bit */ + __IM uint16_t CDLK7 : 1; /*!< [7..7] Configuration Data Lock Bit */ + __IM uint16_t CDLK8 : 1; /*!< [8..8] Configuration Data Lock Bit */ + __IM uint16_t CDLK9 : 1; /*!< [9..9] Configuration Data Lock Bit */ + __IM uint16_t CDLK10 : 1; /*!< [10..10] Configuration Data Lock Bit */ + __IM uint16_t CDLK11 : 1; /*!< [11..11] Configuration Data Lock Bit */ + __IM uint16_t CDLK12 : 1; /*!< [12..12] Configuration Data Lock Bit */ + __IM uint16_t CDLK13 : 1; /*!< [13..13] Configuration Data Lock Bit */ + __IM uint16_t CDLK14 : 1; /*!< [14..14] Configuration Data Lock Bit */ + __IM uint16_t CDLK15 : 1; /*!< [15..15] Configuration Data Lock Bit */ + } CFGD2_b; + }; + __IM uint16_t RESERVED; +} R_OFS_DATAFLASH_CFGDLOCK_Type; /*!< Size = 20 (0x14) */ + +/** @} */ /* End of group Device_Peripheral_clusters */ + +/* =========================================================================================================================== */ +/* ================ Device Specific Peripheral Section ================ */ +/* =========================================================================================================================== */ + +/** @addtogroup Device_Peripheral_peripherals + * @{ + */ + +/* =========================================================================================================================== */ +/* ================ R_ACMPHS0 ================ */ +/* =========================================================================================================================== */ + +/** + * @brief High-Speed Analog Comparator (R_ACMPHS0) + */ + +typedef struct /*!< (@ 0x40236000) R_ACMPHS0 Structure */ +{ + union + { + __IOM uint8_t CMPCTL; /*!< (@ 0x00000000) Comparator Control Register */ + + struct + { + __IOM uint8_t CINV : 1; /*!< [0..0] Comparator output polarity selection */ + __IOM uint8_t COE : 1; /*!< [1..1] Comparator output enable */ + __IOM uint8_t CSTEN : 1; /*!< [2..2] Interrupt Select */ + __IOM uint8_t CEG : 2; /*!< [4..3] Selection of valid edge (Edge selector) */ + __IOM uint8_t CDFS : 2; /*!< [6..5] Noise filter selection */ + __IOM uint8_t HCMPON : 1; /*!< [7..7] Comparator operation control */ + } CMPCTL_b; + }; + __IM uint8_t RESERVED[3]; + + union + { + __IOM uint8_t CMPSEL0; /*!< (@ 0x00000004) Comparator Input Select Register */ + + struct + { + __IOM uint8_t CMPSEL : 4; /*!< [3..0] Comparator Input Selection */ + uint8_t : 4; + } CMPSEL0_b; + }; + __IM uint8_t RESERVED1[3]; + + union + { + __IOM uint8_t CMPSEL1; /*!< (@ 0x00000008) Comparator Reference Voltage Select Register */ + + struct + { + __IOM uint8_t CRVS : 6; /*!< [5..0] Reference Voltage Selection */ + uint8_t : 2; + } CMPSEL1_b; + }; + __IM uint8_t RESERVED2[3]; + + union + { + __IM uint8_t CMPMON; /*!< (@ 0x0000000C) Comparator Output Monitor Register */ + + struct + { + __IM uint8_t CMPMON : 1; /*!< [0..0] Comparator output monitor */ + uint8_t : 7; + } CMPMON_b; + }; + __IM uint8_t RESERVED3[3]; + + union + { + __IOM uint8_t CPIOC; /*!< (@ 0x00000010) Comparator Output Control Register */ + + struct + { + __IOM uint8_t CPOE : 1; /*!< [0..0] Comparator output selection */ + uint8_t : 6; + __IOM uint8_t VREFEN : 1; /*!< [7..7] Internal Vref enable */ + } CPIOC_b; + }; +} R_ACMPHS0_Type; /*!< Size = 17 (0x11) */ + +/* =========================================================================================================================== */ +/* ================ R_ADC0 ================ */ +/* =========================================================================================================================== */ + +/** + * @brief A/D Converter (R_ADC0) + */ + +typedef struct /*!< (@ 0x40332000) R_ADC0 Structure */ +{ + union + { + __IOM uint16_t ADCSR; /*!< (@ 0x00000000) A/D Control Register */ + + struct + { + __IOM uint16_t DBLANS : 5; /*!< [4..0] Double Trigger Channel SelectThese bits select one analog + * input channel for double triggered operation. The setting + * is only effective while double trigger mode is selected. */ + uint16_t : 1; + __IOM uint16_t GBADIE : 1; /*!< [6..6] Group B Scan End Interrupt Enable */ + __IOM uint16_t DBLE : 1; /*!< [7..7] Double Trigger Mode Select */ + __IOM uint16_t EXTRG : 1; /*!< [8..8] Trigger Select */ + __IOM uint16_t TRGE : 1; /*!< [9..9] Trigger Start Enable */ + __IOM uint16_t ADHSC : 1; /*!< [10..10] A/D Conversion Operation Mode Select */ + uint16_t : 1; + __IOM uint16_t ADIE : 1; /*!< [12..12] Scan End Interrupt Enable */ + __IOM uint16_t ADCS : 2; /*!< [14..13] Scan Mode Select */ + __IOM uint16_t ADST : 1; /*!< [15..15] A/D Conversion Start */ + } ADCSR_b; + }; + + union + { + __IOM uint8_t ADREF; /*!< (@ 0x00000002) A/D status register */ + + struct + { + __IOM uint8_t ADF : 1; /*!< [0..0] Scanning end flag bitThis bit is a status bit that becomes + * '1' while scanning. */ + uint8_t : 6; + __IM uint8_t ADSCACT : 1; /*!< [7..7] Scanning status bit */ + } ADREF_b; + }; + + union + { + __IOM uint8_t ADEXREF; /*!< (@ 0x00000003) A/D enhancing status register */ + + struct + { + __IOM uint8_t GBADF : 1; /*!< [0..0] Group B scanning end flag bit. */ + uint8_t : 7; + } ADEXREF_b; + }; + + union + { + __IOM uint16_t ADANSA[2]; /*!< (@ 0x00000004) A/D Channel Select Register */ + + struct + { + __IOM uint16_t ANSA0 : 1; /*!< [0..0] AN Input Select */ + __IOM uint16_t ANSA1 : 1; /*!< [1..1] AN Input Select */ + __IOM uint16_t ANSA2 : 1; /*!< [2..2] AN Input Select */ + __IOM uint16_t ANSA3 : 1; /*!< [3..3] AN Input Select */ + __IOM uint16_t ANSA4 : 1; /*!< [4..4] AN Input Select */ + __IOM uint16_t ANSA5 : 1; /*!< [5..5] AN Input Select */ + __IOM uint16_t ANSA6 : 1; /*!< [6..6] AN Input Select */ + __IOM uint16_t ANSA7 : 1; /*!< [7..7] AN Input Select */ + __IOM uint16_t ANSA8 : 1; /*!< [8..8] AN Input Select */ + __IOM uint16_t ANSA9 : 1; /*!< [9..9] AN Input Select */ + __IOM uint16_t ANSA10 : 1; /*!< [10..10] AN Input Select */ + __IOM uint16_t ANSA11 : 1; /*!< [11..11] AN Input Select */ + __IOM uint16_t ANSA12 : 1; /*!< [12..12] AN Input Select */ + __IOM uint16_t ANSA13 : 1; /*!< [13..13] AN Input Select */ + __IOM uint16_t ANSA14 : 1; /*!< [14..14] AN Input Select */ + __IOM uint16_t ANSA15 : 1; /*!< [15..15] AN Input Select */ + } ADANSA_b[2]; + }; + + union + { + __IOM uint16_t ADADS[2]; /*!< (@ 0x00000008) A/D-Converted Value Addition/Average Channel + * Select Register */ + + struct + { + __IOM uint16_t ADS0 : 1; /*!< [0..0] A/D-Converted Value Addition/Average Channel Select */ + __IOM uint16_t ADS1 : 1; /*!< [1..1] A/D-Converted Value Addition/Average Channel Select */ + __IOM uint16_t ADS2 : 1; /*!< [2..2] A/D-Converted Value Addition/Average Channel Select */ + __IOM uint16_t ADS3 : 1; /*!< [3..3] A/D-Converted Value Addition/Average Channel Select */ + __IOM uint16_t ADS4 : 1; /*!< [4..4] A/D-Converted Value Addition/Average Channel Select */ + __IOM uint16_t ADS5 : 1; /*!< [5..5] A/D-Converted Value Addition/Average Channel Select */ + __IOM uint16_t ADS6 : 1; /*!< [6..6] A/D-Converted Value Addition/Average Channel Select */ + __IOM uint16_t ADS7 : 1; /*!< [7..7] A/D-Converted Value Addition/Average Channel Select */ + __IOM uint16_t ADS8 : 1; /*!< [8..8] A/D-Converted Value Addition/Average Channel Select */ + __IOM uint16_t ADS9 : 1; /*!< [9..9] A/D-Converted Value Addition/Average Channel Select */ + __IOM uint16_t ADS10 : 1; /*!< [10..10] A/D-Converted Value Addition/Average Channel Select */ + __IOM uint16_t ADS11 : 1; /*!< [11..11] A/D-Converted Value Addition/Average Channel Select */ + __IOM uint16_t ADS12 : 1; /*!< [12..12] A/D-Converted Value Addition/Average Channel Select */ + __IOM uint16_t ADS13 : 1; /*!< [13..13] A/D-Converted Value Addition/Average Channel Select */ + __IOM uint16_t ADS14 : 1; /*!< [14..14] A/D-Converted Value Addition/Average Channel Select */ + __IOM uint16_t ADS15 : 1; /*!< [15..15] A/D-Converted Value Addition/Average Channel Select */ + } ADADS_b[2]; + }; + + union + { + __IOM uint8_t ADADC; /*!< (@ 0x0000000C) A/D-Converted Value Addition/Average Count Select + * Register */ + + struct + { + __IOM uint8_t ADC : 3; /*!< [2..0] Addition frequency selection bit.NOTE: AVEE bit is valid + * at the only setting of ADC[2:0] bits = 001b or 011b. When + * average mode is selected by setting the ADADC.AVEE bit + * to 1, do not set the addition count to three times (ADADC.ADC[2:0] + * = 010b) */ + uint8_t : 4; + __IOM uint8_t AVEE : 1; /*!< [7..7] Average Mode Enable. NOTE:When average mode is deselected + * by setting the ADADC.AVEE bit to 0, set the addition count + * to 1, 2, 3, 4 or 16-time conversion. 16-time conversion + * can only be used with 12-bit accuracy selected. NOTE: AVEE + * bit is valid at the only setting of ADC[2:0] bits = 001b + * or 011b. When average mode is selected by setting the ADADC.AVEE + * bit to 1, do not set the addition count to three times + * (ADADC.ADC[2:0] = 010b) */ + } ADADC_b; + }; + __IM uint8_t RESERVED; + + union + { + __IOM uint16_t ADCER; /*!< (@ 0x0000000E) A/D Control Extended Register */ + + struct + { + uint16_t : 1; + __IOM uint16_t ADPRC : 2; /*!< [2..1] A/D Conversion Accuracy Specify */ + uint16_t : 1; + __IOM uint16_t DCE : 1; /*!< [4..4] Discharge Enable */ + __IOM uint16_t ACE : 1; /*!< [5..5] A/D Data Register Automatic Clearing Enable */ + uint16_t : 2; + __IOM uint16_t DIAGVAL : 2; /*!< [9..8] Self-Diagnosis Conversion Voltage Select */ + __IOM uint16_t DIAGLD : 1; /*!< [10..10] Self-Diagnosis Mode Select */ + __IOM uint16_t DIAGM : 1; /*!< [11..11] Self-Diagnosis Enable */ + uint16_t : 2; + __IOM uint16_t ADINV : 1; /*!< [14..14] Single-Ended Input A/D Converted Data Inversion Select */ + __IOM uint16_t ADRFMT : 1; /*!< [15..15] A/D Data Register Format Select */ + } ADCER_b; + }; + + union + { + __IOM uint16_t ADSTRGR; /*!< (@ 0x00000010) A/D Conversion Start Trigger Select Register */ + + struct + { + __IOM uint16_t TRSB : 6; /*!< [5..0] A/D Conversion Start Trigger Select for Group BSelect + * the A/D conversion start trigger for group B in group scan + * mode. */ + uint16_t : 2; + __IOM uint16_t TRSA : 6; /*!< [13..8] A/D Conversion Start Trigger SelectSelect the A/D conversion + * start trigger in single scan mode and continuous mode. + * In group scan mode, the A/D conversion start trigger for + * group A is selected. */ + uint16_t : 2; + } ADSTRGR_b; + }; + + union + { + __IOM uint16_t ADEXICR; /*!< (@ 0x00000012) A/D Conversion Extended Input Control Register */ + + struct + { + __IOM uint16_t TSSAD : 1; /*!< [0..0] Temperature Sensor Output A/D converted Value Addition/Average + * Mode Select */ + __IOM uint16_t OCSAD : 1; /*!< [1..1] Internal Reference Voltage A/D converted Value Addition/Average + * Mode Select */ + uint16_t : 6; + __IOM uint16_t TSSA : 1; /*!< [8..8] Temperature Sensor Output A/D Conversion Select */ + __IOM uint16_t OCSA : 1; /*!< [9..9] Internal Reference Voltage A/D Conversion Select */ + __IOM uint16_t TSSB : 1; /*!< [10..10] Temperature Sensor Output A/D Conversion Select for + * Group B in group scan mode. */ + __IOM uint16_t OCSB : 1; /*!< [11..11] Internal Reference Voltage A/D Conversion Select for + * Group B in group scan mode. */ + uint16_t : 2; + __IOM uint16_t EXSEL : 1; /*!< [14..14] Extended Analog Input Select */ + __IOM uint16_t EXOEN : 1; /*!< [15..15] Extended Analog Output Control */ + } ADEXICR_b; + }; + + union + { + __IOM uint16_t ADANSB[2]; /*!< (@ 0x00000014) A/D Channel Select Register B */ + + struct + { + __IOM uint16_t ANSB0 : 1; /*!< [0..0] AN Input Select */ + __IOM uint16_t ANSB1 : 1; /*!< [1..1] AN Input Select */ + __IOM uint16_t ANSB2 : 1; /*!< [2..2] AN Input Select */ + __IOM uint16_t ANSB3 : 1; /*!< [3..3] AN Input Select */ + __IOM uint16_t ANSB4 : 1; /*!< [4..4] AN Input Select */ + __IOM uint16_t ANSB5 : 1; /*!< [5..5] AN Input Select */ + __IOM uint16_t ANSB6 : 1; /*!< [6..6] AN Input Select */ + __IOM uint16_t ANSB7 : 1; /*!< [7..7] AN Input Select */ + __IOM uint16_t ANSB8 : 1; /*!< [8..8] AN Input Select */ + __IOM uint16_t ANSB9 : 1; /*!< [9..9] AN Input Select */ + __IOM uint16_t ANSB10 : 1; /*!< [10..10] AN Input Select */ + __IOM uint16_t ANSB11 : 1; /*!< [11..11] AN Input Select */ + __IOM uint16_t ANSB12 : 1; /*!< [12..12] AN Input Select */ + __IOM uint16_t ANSB13 : 1; /*!< [13..13] AN Input Select */ + __IOM uint16_t ANSB14 : 1; /*!< [14..14] AN Input Select */ + __IOM uint16_t ANSB15 : 1; /*!< [15..15] AN Input Select */ + } ADANSB_b[2]; + }; + + union + { + __IM uint16_t ADDBLDR; /*!< (@ 0x00000018) A/D Data Duplication Register */ + + struct + { + __IM uint16_t ADDBLDR : 16; /*!< [15..0] This is a 16-bit read-only register for storing the + * result of A/D conversion in response to the second trigger + * in double trigger mode. */ + } ADDBLDR_b; + }; + + union + { + __IM uint16_t ADTSDR; /*!< (@ 0x0000001A) A/D Temperature Sensor Data Register */ + + struct + { + __IM uint16_t ADTSDR : 16; /*!< [15..0] This is a 16-bit read-only register for storing the + * A/D conversion result of temperature sensor output. */ + } ADTSDR_b; + }; + + union + { + __IM uint16_t ADOCDR; /*!< (@ 0x0000001C) A/D Internal Reference Voltage Data Register */ + + struct + { + __IM uint16_t ADOCDR : 16; /*!< [15..0] This is a 16-bit read-only register for storing the + * A/D result of internal reference voltage. */ + } ADOCDR_b; + }; + + union + { + union + { + __IM uint16_t ADRD_RIGHT; /*!< (@ 0x0000001E) A/D Self-Diagnosis Data Register Right Justified */ + + struct + { + __IM uint16_t AD : 14; /*!< [13..0] A/D-converted value (right-justified)The format for + * data determine ADCER.ADRFMT and ADCER.ADPRC. */ + __IM uint16_t DIAGST : 2; /*!< [15..14] Self-Diagnosis Status */ + } ADRD_RIGHT_b; + }; + + union + { + __IM uint16_t ADRD_LEFT; /*!< (@ 0x0000001E) A/D Self-Diagnosis Data Register Left Justified */ + + struct + { + __IM uint16_t DIAGST : 2; /*!< [1..0] Self-Diagnosis Status */ + __IM uint16_t AD : 14; /*!< [15..2] A/D-converted value (right-justified)The format for + * data determine ADCER.ADRFMT and ADCER.ADPRC. */ + } ADRD_LEFT_b; + }; + }; + + union + { + __IM uint16_t ADDR[29]; /*!< (@ 0x00000020) A/D Data Register */ + + struct + { + __IM uint16_t ADDR : 16; /*!< [15..0] The ADDR register is a 16-bit read-only registers for + * storing the result of A/D conversion. */ + } ADDR_b[29]; + }; + __IM uint16_t RESERVED1; + __IM uint32_t RESERVED2; + __IM uint16_t RESERVED3; + + union + { + __IOM uint8_t ADAMPOFF; /*!< (@ 0x00000062) A/D RRAMP off state register */ + + struct + { + __IOM uint8_t OPOFF : 8; /*!< [7..0] OPOFF */ + } ADAMPOFF_b; + }; + + union + { + __IOM uint8_t ADTSTPR; /*!< (@ 0x00000063) A/D Test Protecting Release Register */ + + struct + { + __IOM uint8_t PRO : 1; /*!< [0..0] Test register protecting bit. */ + __IOM uint8_t B0WI : 1; /*!< [1..1] Bit 0 writing permission bit. */ + uint8_t : 6; + } ADTSTPR_b; + }; + + union + { + __IOM uint16_t ADDDACER; /*!< (@ 0x00000064) A/D RRAMP Discharge Period Register */ + + struct + { + __IOM uint16_t WRION : 5; /*!< [4..0] WRION */ + uint16_t : 3; + __IOM uint16_t WRIOFF : 5; /*!< [12..8] WRIOFF */ + uint16_t : 2; + __IOM uint16_t ADHS : 1; /*!< [15..15] ADHS */ + } ADDDACER_b; + }; + + union + { + __IOM uint16_t ADSHCR; /*!< (@ 0x00000066) A/D Sample and Hold Circuit Control Register */ + + struct + { + __IOM uint16_t SSTSH : 8; /*!< [7..0] Channel-Dedicated Sample-and-Hold Circuit Sampling Time + * Setting Set the sampling time (4 to 255 states) */ + __IOM uint16_t SHANS0 : 1; /*!< [8..8] AN000 sample-and-hold circuit Select */ + __IOM uint16_t SHANS1 : 1; /*!< [9..9] AN001 sample-and-hold circuit Select */ + __IOM uint16_t SHANS2 : 1; /*!< [10..10] AN002 sample-and-hold circuit Select */ + uint16_t : 5; + } ADSHCR_b; + }; + + union + { + __IOM uint16_t ADEXTSTR; /*!< (@ 0x00000068) A/D Enhancing Test Register */ + + struct + { + __IOM uint16_t SHTEST : 3; /*!< [2..0] Test mode bit for S&H circuit.Test mode bit of S&H circuit + * only for channel. */ + uint16_t : 1; + __IOM uint16_t SWTST : 2; /*!< [5..4] Test selection bit for pressure switch. */ + uint16_t : 2; + __IOM uint16_t SHTRM : 2; /*!< [9..8] Current adjustment trim bit for S&H circuit.Trim bit + * for adjustment to hardening of process. */ + uint16_t : 1; + __IOM uint16_t ADTRM3 : 1; /*!< [11..11] Trim bit 3 for A/D hard macro.3bit Flash comparator + * power save bit for A/D hard macro to hardening of process. */ + __IOM uint16_t ADTRM2 : 2; /*!< [13..12] Trim bit 2 for A/D hard macro.Bias adjustment trim + * bit for A/D hard macro to hardening of process. */ + __IOM uint16_t ADTRM1 : 2; /*!< [15..14] Trim bit 1 for A/D hard macro.Timing adjustment trim + * bit for A/D hard macro to hardening of process. */ + } ADEXTSTR_b; + }; + + union + { + __IOM uint16_t ADTSTRA; /*!< (@ 0x0000006A) A/D Test Register A */ + + struct + { + __IOM uint16_t ATBUSSEL : 1; /*!< [0..0] Analog test bus selection bit. */ + __IOM uint16_t TSTSWREF : 3; /*!< [3..1] Pressure switch refreshing setting bit for S&H circuit + * amplifier test.Refreshing the pressure switch that opens + * for the DAC output voltage charge period when the amplifier + * of the S&H circuit is tested only for the channel is set. */ + uint16_t : 1; + __IOM uint16_t OCSW : 1; /*!< [5..5] Internal reference voltage analog switch test control + * bit. */ + __IOM uint16_t TSSW : 1; /*!< [6..6] Temperature sensor output analogue switch test control + * bit */ + uint16_t : 1; + __IOM uint16_t ADTEST_AD : 4; /*!< [11..8] Test bit for A/D analog module Bit for test of A/D analog + * module Details are described to the bit explanation. */ + __IOM uint16_t ADTEST_IO : 4; /*!< [15..12] Test bit for analog I/ODetails are described to the + * bit explanation. */ + } ADTSTRA_b; + }; + + union + { + __IOM uint16_t ADTSTRB; /*!< (@ 0x0000006C) A/D Test Register B */ + + struct + { + __IOM uint16_t ADVAL : 15; /*!< [14..0] Signal input bit bit14-0 for A/D analog module test.It + * corresponds to ADVAL 14:0 input of A/D analog module. */ + uint16_t : 1; + } ADTSTRB_b; + }; + + union + { + __IOM uint16_t ADTSTRC; /*!< (@ 0x0000006E) A/D Test Register C */ + + struct + { + __IOM uint16_t ADMD : 8; /*!< [7..0] Bit for A/D analog module test.ADMODE 6:0 input of A/D + * analog module. */ + uint16_t : 4; + __IOM uint16_t SYNCERR : 1; /*!< [12..12] Synchronous analog to digital conversion error bit. */ + uint16_t : 3; + } ADTSTRC_b; + }; + + union + { + __IOM uint16_t ADTSTRD; /*!< (@ 0x00000070) A/D Test Register D */ + + struct + { + __IOM uint16_t ADVAL16 : 1; /*!< [0..0] Signal input bit bit16 for A/D analog module test.It + * corresponds to ADVAL 16 input of A/D analog module. */ + uint16_t : 15; + } ADTSTRD_b; + }; + + union + { + __IOM uint16_t ADSWTSTR0; /*!< (@ 0x00000072) A/D Channel Switch Test Control Register 0 */ + + struct + { + __IOM uint16_t CHSW00 : 1; /*!< [0..0] Channel switch test control bit. */ + __IOM uint16_t CHSW01 : 1; /*!< [1..1] Channel switch test control bit. */ + __IOM uint16_t CHSW02 : 1; /*!< [2..2] Channel switch test control bit. */ + __IOM uint16_t CHSW03 : 1; /*!< [3..3] Channel switch test control bit. */ + __IOM uint16_t CHSW04 : 1; /*!< [4..4] Channel switch test control bit. */ + __IOM uint16_t CHSW05 : 1; /*!< [5..5] Channel switch test control bit. */ + uint16_t : 10; + } ADSWTSTR0_b; + }; + + union + { + __IOM uint16_t ADSWTSTR1; /*!< (@ 0x00000074) A/D Channel Switch Test Control Register 1 */ + + struct + { + __IOM uint16_t CHSW16 : 1; /*!< [0..0] Channel switch test control bit. */ + __IOM uint16_t CHSW17 : 1; /*!< [1..1] Channel switch test control bit. */ + __IOM uint16_t CHSW18 : 1; /*!< [2..2] Channel switch test control bit. */ + __IOM uint16_t CHSW19 : 1; /*!< [3..3] Channel switch test control bit. */ + __IOM uint16_t CHSW20 : 1; /*!< [4..4] Channel switch test control bit. */ + __IOM uint16_t CHSW21 : 1; /*!< [5..5] Channel switch test control bit. */ + uint16_t : 10; + } ADSWTSTR1_b; + }; + + union + { + __IOM uint16_t ADSWTSTR2; /*!< (@ 0x00000076) A/D Channel Switch Test Control Register 2 */ + + struct + { + __IOM uint16_t EX0SW : 1; /*!< [0..0] Test control of 0 enhancing input channel switches bit + * (ANEX0 switch) */ + __IOM uint16_t EX1SW : 1; /*!< [1..1] Test control of one enhancing input channel switch bit + * (ANEX1 switch). */ + uint16_t : 2; + __IOM uint16_t SHBYPS0 : 1; /*!< [4..4] S&H circuit by-pass switch control bit 0. */ + __IOM uint16_t SHBYPS1 : 1; /*!< [5..5] S&H circuit by-pass switch control bit 1. */ + __IOM uint16_t SHBYPS2 : 1; /*!< [6..6] S&H circuit by-pass switch control bit 2. */ + uint16_t : 1; + __IOM uint16_t GRP0SW : 1; /*!< [8..8] Test control of 0 group switches bit. */ + __IOM uint16_t GRP1SW : 1; /*!< [9..9] Test control of one group switch bit. */ + __IOM uint16_t GRP2SW : 1; /*!< [10..10] Test control of two group switches bit */ + __IOM uint16_t GRP3SW : 1; /*!< [11..11] Test control of two group switches bit */ + __IOM uint16_t GRPEX1SW : 1; /*!< [12..12] Switch test control bit of enhancing analog ANEX1 */ + uint16_t : 3; + } ADSWTSTR2_b; + }; + __IM uint16_t RESERVED4; + + union + { + __IOM uint8_t ADDISCR; /*!< (@ 0x0000007A) A/D Disconnection Detection Control Register */ + + struct + { + __IOM uint8_t ADNDIS : 4; /*!< [3..0] The charging time */ + __IOM uint8_t CHARGE : 1; /*!< [4..4] Selection of Precharge or Discharge */ + uint8_t : 3; + } ADDISCR_b; + }; + + union + { + __IOM uint8_t ADSWCR; /*!< (@ 0x0000007B) A/D Pressure Switch Control Register */ + + struct + { + __IOM uint8_t ADSWREF : 3; /*!< [2..0] These bits are read as 0. The write value should be 0.Refreshing + * the pressure switch in A/D analog module is set. */ + uint8_t : 1; + __IOM uint8_t SHSWREF : 3; /*!< [6..4] S&H Boost Switch Refresh Interval Setting */ + uint8_t : 1; + } ADSWCR_b; + }; + + union + { + __IOM uint8_t ADSHMSR; /*!< (@ 0x0000007C) A/D Sample and Hold Operation Mode Select Register */ + + struct + { + __IOM uint8_t SHMD : 1; /*!< [0..0] Channel-Dedicated Sample-and-Hold Circuit Operation Mode + * Select */ + uint8_t : 7; + } ADSHMSR_b; + }; + + union + { + __IOM uint8_t ADICR; /*!< (@ 0x0000007D) A/D Interrupt Control Register */ + + struct + { + __IOM uint8_t ADIC : 2; /*!< [1..0] A/D Interrupt Control */ + uint8_t : 6; + } ADICR_b; + }; + + union + { + __IOM uint8_t ADACSR; /*!< (@ 0x0000007E) A/D Conversion Operation Mode Select Register */ + + struct + { + uint8_t : 1; + __IOM uint8_t ADSAC : 1; /*!< [1..1] Successive Approximation Control Setting */ + uint8_t : 6; + } ADACSR_b; + }; + __IM uint8_t RESERVED5; + + union + { + __IOM uint16_t ADGSPCR; /*!< (@ 0x00000080) A/D Group Scan Priority Control Register */ + + struct + { + __IOM uint16_t PGS : 1; /*!< [0..0] Group A priority control setting bit.Note: When the PGS + * bit is to be set to 1, the ADCSR.ADCS[1:0] bits must be + * set to 01b (group scan mode). If the bits are set to any + * other values, proper operation is not guaranteed. */ + __IOM uint16_t GBRSCN : 1; /*!< [1..1] Group B Restart Setting(Enabled only when PGS = 1. Reserved + * when PGS = 0.) */ + uint16_t : 6; + __IOM uint16_t GBEXTRG : 1; /*!< [8..8] External trigger selection bit for group B. */ + uint16_t : 6; + __IOM uint16_t GBRP : 1; /*!< [15..15] Group B Single Scan Continuous Start(Enabled only when + * PGS = 1. Reserved when PGS = 0.)Note: When the GBRP bit + * has been set to 1, single scan is performed continuously + * for group B regardless of the setting of the GBRSCN bit. */ + } ADGSPCR_b; + }; + + union + { + __IM uint16_t ADGSCS; /*!< (@ 0x00000082) A/D Conversion Channel Status Register (for Group + * Scan) */ + + struct + { + __IM uint16_t CHSELGB : 8; /*!< [7..0] Channel status of Group B scan */ + __IM uint16_t CHSELGA : 8; /*!< [15..8] Channel status of Group A scan */ + } ADGSCS_b; + }; + + union + { + __IM uint16_t ADDBLDRA; /*!< (@ 0x00000084) A/D Data Duplexing Register A */ + + struct + { + __IM uint16_t ADDBLDRA : 16; /*!< [15..0] This register is a 16-bit read-only registers for storing + * the result of A/D conversion in response to the respective + * triggers during extended operation in double trigger mode. */ + } ADDBLDRA_b; + }; + + union + { + __IM uint16_t ADDBLDRB; /*!< (@ 0x00000086) A/D Data Duplexing Register B */ + + struct + { + __IM uint16_t ADDBLDRB : 16; /*!< [15..0] This register is a 16-bit read-only registers for storing + * the result of A/D conversion in response to the respective + * triggers during extended operation in double trigger mode. */ + } ADDBLDRB_b; + }; + + union + { + __IOM uint8_t ADSER; /*!< (@ 0x00000088) A/D Sampling Extension Register */ + + struct + { + uint8_t : 7; + __IOM uint8_t SMPEX : 1; /*!< [7..7] Sampling extension control */ + } ADSER_b; + }; + __IM uint8_t RESERVED6; + + union + { + __IOM uint8_t ADHVREFCNT; /*!< (@ 0x0000008A) A/D High-Potential/Low-Potential Reference Voltage + * Control Register */ + + struct + { + __IOM uint8_t HVSEL : 2; /*!< [1..0] High-Potential Reference Voltage Select */ + uint8_t : 2; + __IOM uint8_t LVSEL : 1; /*!< [4..4] Low-Potential Reference Voltage Select */ + uint8_t : 2; + __IOM uint8_t ADSLP : 1; /*!< [7..7] Sleep */ + } ADHVREFCNT_b; + }; + __IM uint8_t RESERVED7; + + union + { + __IM uint8_t ADWINMON; /*!< (@ 0x0000008C) A/D Compare Function Window A/B Status Monitor + * Register */ + + struct + { + __IM uint8_t MONCOMB : 1; /*!< [0..0] Combination result monitorThis bit indicates the combination + * result.This bit is valid when both window A operation and + * window B operation are enabled. */ + uint8_t : 3; + __IM uint8_t MONCMPA : 1; /*!< [4..4] Comparison Result Monitor A */ + __IM uint8_t MONCMPB : 1; /*!< [5..5] Comparison Result Monitor B */ + uint8_t : 2; + } ADWINMON_b; + }; + __IM uint8_t RESERVED8; + __IM uint16_t RESERVED9; + + union + { + __IOM uint16_t ADCMPCR; /*!< (@ 0x00000090) A/D Compare Function Control Register */ + + struct + { + __IOM uint16_t CMPAB : 2; /*!< [1..0] Window A/B Composite Conditions SettingNOTE: These bits + * are valid when both window A and window B are enabled (CMPAE + * = 1 and CMPBE = 1). */ + uint16_t : 7; + __IOM uint16_t CMPBE : 1; /*!< [9..9] Compare Window B Operation Enable */ + uint16_t : 1; + __IOM uint16_t CMPAE : 1; /*!< [11..11] Compare Window A Operation Enable */ + uint16_t : 1; + __IOM uint16_t CMPBIE : 1; /*!< [13..13] Compare B Interrupt Enable */ + __IOM uint16_t WCMPE : 1; /*!< [14..14] Window Function Setting */ + __IOM uint16_t CMPAIE : 1; /*!< [15..15] Compare A Interrupt Enable */ + } ADCMPCR_b; + }; + + union + { + __IOM uint8_t ADCMPANSER; /*!< (@ 0x00000092) A/D Compare Function Window A Extended Input + * Select Register */ + + struct + { + __IOM uint8_t CMPTSA : 1; /*!< [0..0] Temperature sensor output Compare selection bit. */ + __IOM uint8_t CMPOCA : 1; /*!< [1..1] Internal reference voltage Compare selection bit. */ + uint8_t : 6; + } ADCMPANSER_b; + }; + + union + { + __IOM uint8_t ADCMPLER; /*!< (@ 0x00000093) A/D Compare Function Window A Extended Input + * Comparison Condition Setting Register */ + + struct + { + __IOM uint8_t CMPLTSA : 1; /*!< [0..0] Compare Window A Temperature Sensor Output Comparison + * Condition Select */ + __IOM uint8_t CMPLOCA : 1; /*!< [1..1] Compare Window A Internal Reference Voltage ComparisonCondition + * Select */ + uint8_t : 6; + } ADCMPLER_b; + }; + + union + { + __IOM uint16_t ADCMPANSR[2]; /*!< (@ 0x00000094) A/D Compare Function Window A Channel Select + * Register */ + + struct + { + __IOM uint16_t CMPCHA0 : 1; /*!< [0..0] AN Input Select */ + __IOM uint16_t CMPCHA1 : 1; /*!< [1..1] AN Input Select */ + __IOM uint16_t CMPCHA2 : 1; /*!< [2..2] AN Input Select */ + __IOM uint16_t CMPCHA3 : 1; /*!< [3..3] AN Input Select */ + __IOM uint16_t CMPCHA4 : 1; /*!< [4..4] AN Input Select */ + __IOM uint16_t CMPCHA5 : 1; /*!< [5..5] AN Input Select */ + __IOM uint16_t CMPCHA6 : 1; /*!< [6..6] AN Input Select */ + __IOM uint16_t CMPCHA7 : 1; /*!< [7..7] AN Input Select */ + __IOM uint16_t CMPCHA8 : 1; /*!< [8..8] AN Input Select */ + __IOM uint16_t CMPCHA9 : 1; /*!< [9..9] AN Input Select */ + __IOM uint16_t CMPCHA10 : 1; /*!< [10..10] AN Input Select */ + __IOM uint16_t CMPCHA11 : 1; /*!< [11..11] AN Input Select */ + __IOM uint16_t CMPCHA12 : 1; /*!< [12..12] AN Input Select */ + __IOM uint16_t CMPCHA13 : 1; /*!< [13..13] AN Input Select */ + __IOM uint16_t CMPCHA14 : 1; /*!< [14..14] AN Input Select */ + __IOM uint16_t CMPCHA15 : 1; /*!< [15..15] AN Input Select */ + } ADCMPANSR_b[2]; + }; + + union + { + __IOM uint16_t ADCMPLR[2]; /*!< (@ 0x00000098) A/D Compare Function Window A Comparison Condition + * Setting Register */ + + struct + { + __IOM uint16_t CMPLCHA0 : 1; /*!< [0..0] Comparison condition of input */ + __IOM uint16_t CMPLCHA1 : 1; /*!< [1..1] Comparison condition of input */ + __IOM uint16_t CMPLCHA2 : 1; /*!< [2..2] Comparison condition of input */ + __IOM uint16_t CMPLCHA3 : 1; /*!< [3..3] Comparison condition of input */ + __IOM uint16_t CMPLCHA4 : 1; /*!< [4..4] Comparison condition of input */ + __IOM uint16_t CMPLCHA5 : 1; /*!< [5..5] Comparison condition of input */ + __IOM uint16_t CMPLCHA6 : 1; /*!< [6..6] Comparison condition of input */ + __IOM uint16_t CMPLCHA7 : 1; /*!< [7..7] Comparison condition of input */ + __IOM uint16_t CMPLCHA8 : 1; /*!< [8..8] Comparison condition of input */ + __IOM uint16_t CMPLCHA9 : 1; /*!< [9..9] Comparison condition of input */ + __IOM uint16_t CMPLCHA10 : 1; /*!< [10..10] Comparison condition of input */ + __IOM uint16_t CMPLCHA11 : 1; /*!< [11..11] Comparison condition of input */ + __IOM uint16_t CMPLCHA12 : 1; /*!< [12..12] Comparison condition of input */ + __IOM uint16_t CMPLCHA13 : 1; /*!< [13..13] Comparison condition of input */ + __IOM uint16_t CMPLCHA14 : 1; /*!< [14..14] Comparison condition of input */ + __IOM uint16_t CMPLCHA15 : 1; /*!< [15..15] Comparison condition of input */ + } ADCMPLR_b[2]; + }; + + union + { + __IOM uint16_t ADCMPDR0; /*!< (@ 0x0000009C) A/D Compare Function Window A Lower-Side Level + * Setting Register */ + + struct + { + __IOM uint16_t ADCMPDR0 : 16; /*!< [15..0] The ADCMPDR0 register sets the reference data when the + * compare window A function is used. ADCMPDR0 sets the lower-side + * level of window A. */ + } ADCMPDR0_b; + }; + + union + { + __IOM uint16_t ADCMPDR1; /*!< (@ 0x0000009E) A/D Compare Function Window A Upper-Side Level + * Setting Register */ + + struct + { + __IOM uint16_t ADCMPDR1 : 16; /*!< [15..0] The ADCMPDR1 register sets the reference data when the + * compare window A function is used. ADCMPDR1 sets the upper-side + * level of window A.. */ + } ADCMPDR1_b; + }; + + union + { + __IOM uint16_t ADCMPSR[2]; /*!< (@ 0x000000A0) A/D Compare Function Window A Channel Status + * Register */ + + struct + { + __IOM uint16_t CMPSTCHA0 : 1; /*!< [0..0] Compare window A flag of input */ + __IOM uint16_t CMPSTCHA1 : 1; /*!< [1..1] Compare window A flag of input */ + __IOM uint16_t CMPSTCHA2 : 1; /*!< [2..2] Compare window A flag of input */ + __IOM uint16_t CMPSTCHA3 : 1; /*!< [3..3] Compare window A flag of input */ + __IOM uint16_t CMPSTCHA4 : 1; /*!< [4..4] Compare window A flag of input */ + __IOM uint16_t CMPSTCHA5 : 1; /*!< [5..5] Compare window A flag of input */ + __IOM uint16_t CMPSTCHA6 : 1; /*!< [6..6] Compare window A flag of input */ + __IOM uint16_t CMPSTCHA7 : 1; /*!< [7..7] Compare window A flag of input */ + __IOM uint16_t CMPSTCHA8 : 1; /*!< [8..8] Compare window A flag of input */ + __IOM uint16_t CMPSTCHA9 : 1; /*!< [9..9] Compare window A flag of input */ + __IOM uint16_t CMPSTCHA10 : 1; /*!< [10..10] Compare window A flag of input */ + __IOM uint16_t CMPSTCHA11 : 1; /*!< [11..11] Compare window A flag of input */ + __IOM uint16_t CMPSTCHA12 : 1; /*!< [12..12] Compare window A flag of input */ + __IOM uint16_t CMPSTCHA13 : 1; /*!< [13..13] Compare window A flag of input */ + __IOM uint16_t CMPSTCHA14 : 1; /*!< [14..14] Compare window A flag of input */ + __IOM uint16_t CMPSTCHA15 : 1; /*!< [15..15] Compare window A flag of input */ + } ADCMPSR_b[2]; + }; + + union + { + __IOM uint8_t ADCMPSER; /*!< (@ 0x000000A4) A/D Compare Function Window A Extended Input + * Channel Status Register */ + + struct + { + __IOM uint8_t CMPSTTSA : 1; /*!< [0..0] Compare Window A Temperature Sensor Output Compare Flag + * When window A operation is enabled (ADCMPCR.CMPAE = 1b), + * this bit indicates the temperature sensor output comparison + * result. When window A operation is disabled (ADCMPCR.CMPAE + * = 0b), comparison conditions for CMPSTTSA are not met any + * time. */ + __IOM uint8_t CMPSTOCA : 1; /*!< [1..1] Compare Window A Internal Reference Voltage Compare Flag + * When window A operation is enabled (ADCMPCR.CMPAE = 1b), + * this bit indicates the temperature sensor output comparison + * result. When window A operation is disabled (ADCMPCR.CMPAE + * = 0b), comparison conditions for CMPSTTSA are not met any + * time. */ + uint8_t : 6; + } ADCMPSER_b; + }; + __IM uint8_t RESERVED10; + + union + { + __IOM uint8_t ADCMPBNSR; /*!< (@ 0x000000A6) A/D Compare Function Window B Channel Selection + * Register */ + + struct + { + __IOM uint8_t CMPCHB : 6; /*!< [5..0] Compare window B channel selection bit.The channel that + * compares it on the condition of compare window B is selected. */ + uint8_t : 1; + __IOM uint8_t CMPLB : 1; /*!< [7..7] Compare window B Compare condition setting bit. */ + } ADCMPBNSR_b; + }; + __IM uint8_t RESERVED11; + + union + { + __IOM uint16_t ADWINLLB; /*!< (@ 0x000000A8) A/D Compare Function Window B Lower-Side Level + * Setting Register */ + + struct + { + __IOM uint16_t ADWINLLB : 16; /*!< [15..0] This register is used to compare A window function is + * used to set the lower level of the window B. */ + } ADWINLLB_b; + }; + + union + { + __IOM uint16_t ADWINULB; /*!< (@ 0x000000AA) A/D Compare Function Window B Upper-Side Level + * Setting Register */ + + struct + { + __IOM uint16_t ADWINULB : 16; /*!< [15..0] This register is used to compare A window function is + * used to set the higher level of the window B. */ + } ADWINULB_b; + }; + + union + { + __IOM uint8_t ADCMPBSR; /*!< (@ 0x000000AC) A/D Compare Function Window B Status Register */ + + struct + { + __IOM uint8_t CMPSTB : 1; /*!< [0..0] Compare window B flag.It is a status flag that shows + * the comparative result of CH (AN000-AN027, temperature + * sensor, and internal reference voltage) made the object + * of window B relation condition. */ + uint8_t : 7; + } ADCMPBSR_b; + }; + __IM uint8_t RESERVED12; + __IM uint16_t RESERVED13; + + union + { + __IM uint16_t ADBUF0; /*!< (@ 0x000000B0) A/D Data Buffer Register 0 */ + + struct + { + __IM uint16_t ADBUF : 16; /*!< [15..0] A/D data buffer registers (ADBUF) are 16-bit read-only + * registers that sequentially store all A/D converted values. + * The automatic clear function is not applied to these registers. */ + } ADBUF0_b; + }; + + union + { + __IM uint16_t ADBUF1; /*!< (@ 0x000000B2) A/D Data Buffer Register 1 */ + + struct + { + __IM uint16_t ADBUF : 16; /*!< [15..0] A/D data buffer registers (ADBUF) are 16-bit read-only + * registers that sequentially store all A/D converted values. + * The automatic clear function is not applied to these registers. */ + } ADBUF1_b; + }; + + union + { + __IM uint16_t ADBUF2; /*!< (@ 0x000000B4) A/D Data Buffer Register 2 */ + + struct + { + __IM uint16_t ADBUF : 16; /*!< [15..0] A/D data buffer registers (ADBUF) are 16-bit read-only + * registers that sequentially store all A/D converted values. + * The automatic clear function is not applied to these registers. */ + } ADBUF2_b; + }; + + union + { + __IM uint16_t ADBUF3; /*!< (@ 0x000000B6) A/D Data Buffer Register 3 */ + + struct + { + __IM uint16_t ADBUF : 16; /*!< [15..0] A/D data buffer registers (ADBUF) are 16-bit read-only + * registers that sequentially store all A/D converted values. + * The automatic clear function is not applied to these registers. */ + } ADBUF3_b; + }; + + union + { + __IM uint16_t ADBUF4; /*!< (@ 0x000000B8) A/D Data Buffer Register 4 */ + + struct + { + __IM uint16_t ADBUF : 16; /*!< [15..0] A/D data buffer registers (ADBUF) are 16-bit read-only + * registers that sequentially store all A/D converted values. + * The automatic clear function is not applied to these registers. */ + } ADBUF4_b; + }; + + union + { + __IM uint16_t ADBUF5; /*!< (@ 0x000000BA) A/D Data Buffer Register 5 */ + + struct + { + __IM uint16_t ADBUF : 16; /*!< [15..0] A/D data buffer registers (ADBUF) are 16-bit read-only + * registers that sequentially store all A/D converted values. + * The automatic clear function is not applied to these registers. */ + } ADBUF5_b; + }; + + union + { + __IM uint16_t ADBUF6; /*!< (@ 0x000000BC) A/D Data Buffer Register 6 */ + + struct + { + __IM uint16_t ADBUF : 16; /*!< [15..0] A/D data buffer registers (ADBUF) are 16-bit read-only + * registers that sequentially store all A/D converted values. + * The automatic clear function is not applied to these registers. */ + } ADBUF6_b; + }; + + union + { + __IM uint16_t ADBUF7; /*!< (@ 0x000000BE) A/D Data Buffer Register 7 */ + + struct + { + __IM uint16_t ADBUF : 16; /*!< [15..0] A/D data buffer registers (ADBUF) are 16-bit read-only + * registers that sequentially store all A/D converted values. + * The automatic clear function is not applied to these registers. */ + } ADBUF7_b; + }; + + union + { + __IM uint16_t ADBUF8; /*!< (@ 0x000000C0) A/D Data Buffer Register 8 */ + + struct + { + __IM uint16_t ADBUF : 16; /*!< [15..0] A/D data buffer registers (ADBUF) are 16-bit read-only + * registers that sequentially store all A/D converted values. + * The automatic clear function is not applied to these registers. */ + } ADBUF8_b; + }; + + union + { + __IM uint16_t ADBUF9; /*!< (@ 0x000000C2) A/D Data Buffer Register 9 */ + + struct + { + __IM uint16_t ADBUF : 16; /*!< [15..0] A/D data buffer registers (ADBUF) are 16-bit read-only + * registers that sequentially store all A/D converted values. + * The automatic clear function is not applied to these registers. */ + } ADBUF9_b; + }; + + union + { + __IM uint16_t ADBUF10; /*!< (@ 0x000000C4) A/D Data Buffer Register 10 */ + + struct + { + __IM uint16_t ADBUF : 16; /*!< [15..0] A/D data buffer registers (ADBUF) are 16-bit read-only + * registers that sequentially store all A/D converted values. + * The automatic clear function is not applied to these registers. */ + } ADBUF10_b; + }; + + union + { + __IM uint16_t ADBUF11; /*!< (@ 0x000000C6) A/D Data Buffer Register 11 */ + + struct + { + __IM uint16_t ADBUF : 16; /*!< [15..0] A/D data buffer registers (ADBUF) are 16-bit read-only + * registers that sequentially store all A/D converted values. + * The automatic clear function is not applied to these registers. */ + } ADBUF11_b; + }; + + union + { + __IM uint16_t ADBUF12; /*!< (@ 0x000000C8) A/D Data Buffer Register 12 */ + + struct + { + __IM uint16_t ADBUF : 16; /*!< [15..0] A/D data buffer registers (ADBUF) are 16-bit read-only + * registers that sequentially store all A/D converted values. + * The automatic clear function is not applied to these registers. */ + } ADBUF12_b; + }; + + union + { + __IM uint16_t ADBUF13; /*!< (@ 0x000000CA) A/D Data Buffer Register 13 */ + + struct + { + __IM uint16_t ADBUF : 16; /*!< [15..0] A/D data buffer registers (ADBUF) are 16-bit read-only + * registers that sequentially store all A/D converted values. + * The automatic clear function is not applied to these registers. */ + } ADBUF13_b; + }; + + union + { + __IM uint16_t ADBUF14; /*!< (@ 0x000000CC) A/D Data Buffer Register 14 */ + + struct + { + __IM uint16_t ADBUF : 16; /*!< [15..0] A/D data buffer registers (ADBUF) are 16-bit read-only + * registers that sequentially store all A/D converted values. + * The automatic clear function is not applied to these registers. */ + } ADBUF14_b; + }; + + union + { + __IM uint16_t ADBUF15; /*!< (@ 0x000000CE) A/D Data Buffer Register 15 */ + + struct + { + __IM uint16_t ADBUF : 16; /*!< [15..0] A/D data buffer registers (ADBUF) are 16-bit read-only + * registers that sequentially store all A/D converted values. + * The automatic clear function is not applied to these registers. */ + } ADBUF15_b; + }; + + union + { + __IOM uint8_t ADBUFEN; /*!< (@ 0x000000D0) A/D Data Buffer Enable Register */ + + struct + { + __IOM uint8_t BUFEN : 1; /*!< [0..0] Data Buffer Enable */ + uint8_t : 7; + } ADBUFEN_b; + }; + __IM uint8_t RESERVED14; + + union + { + __IOM uint8_t ADBUFPTR; /*!< (@ 0x000000D2) A/D Data Buffer Pointer Register */ + + struct + { + __IM uint8_t BUFPTR : 4; /*!< [3..0] Data Buffer PointerThese bits indicate the number of + * data buffer to which the next A/D converted data is transferred. */ + __IM uint8_t PTROVF : 1; /*!< [4..4] Pointer Overflow Flag */ + uint8_t : 3; + } ADBUFPTR_b; + }; + __IM uint8_t RESERVED15; + __IM uint32_t RESERVED16[2]; + __IM uint8_t RESERVED17; + + union + { + __IOM uint8_t ADSSTRL; /*!< (@ 0x000000DD) A/D Sampling State Register L */ + + struct + { + __IOM uint8_t SST : 8; /*!< [7..0] Sampling Time Setting (AN016-AN027) */ + } ADSSTRL_b; + }; + + union + { + __IOM uint8_t ADSSTRT; /*!< (@ 0x000000DE) A/D Sampling State Register T */ + + struct + { + __IOM uint8_t SST : 8; /*!< [7..0] Sampling Time Setting (temperature sensor output) */ + } ADSSTRT_b; + }; + + union + { + __IOM uint8_t ADSSTRO; /*!< (@ 0x000000DF) A/D Sampling State Register O */ + + struct + { + __IOM uint8_t SST : 8; /*!< [7..0] Sampling Time Setting (Internal reference voltage) */ + } ADSSTRO_b; + }; + + union + { + __IOM uint8_t ADSSTR[16]; /*!< (@ 0x000000E0) A/D Sampling State Registers */ + + struct + { + __IOM uint8_t SST : 8; /*!< [7..0] Sampling time setting */ + } ADSSTR_b[16]; + }; + + union + { + __IOM uint16_t ADANIM; /*!< (@ 0x000000F0) A/D Channel Input Mode Select Register */ + + struct + { + __IOM uint16_t ANIM0 : 1; /*!< [0..0] Analog Channel Input Mode Select */ + __IOM uint16_t ANIM1 : 1; /*!< [1..1] Analog Channel Input Mode Select */ + __IOM uint16_t ANIM2 : 1; /*!< [2..2] Analog Channel Input Mode Select */ + __IOM uint16_t ANIM3 : 1; /*!< [3..3] Analog Channel Input Mode Select */ + uint16_t : 12; + } ADANIM_b; + }; + + union + { + __IOM uint8_t ADCALEXE; /*!< (@ 0x000000F2) A/D Calibration Execution Register */ + + struct + { + uint8_t : 6; + __IM uint8_t CALMON : 1; /*!< [6..6] Calibration Status Flag */ + __IOM uint8_t CALEXE : 1; /*!< [7..7] Calibration Start */ + } ADCALEXE_b; + }; + __IM uint8_t RESERVED18; + + union + { + __IOM uint8_t VREFAMPCNT; /*!< (@ 0x000000F4) A/D Dedicated Reference Voltage Circuit Control + * Register */ + + struct + { + __IOM uint8_t OLDETEN : 1; /*!< [0..0] OLDET Enable */ + __IOM uint8_t VREFADCG : 2; /*!< [2..1] VREFADC Output Voltage Control */ + __IOM uint8_t VREFADCEN : 1; /*!< [3..3] VREFADCG Enable */ + __IOM uint8_t BGREN : 1; /*!< [4..4] BGR Enable */ + uint8_t : 2; + __IOM uint8_t ADSLP : 1; /*!< [7..7] Sleep */ + } VREFAMPCNT_b; + }; + __IM uint8_t RESERVED19; + __IM uint16_t RESERVED20; + + union + { + __IOM uint16_t ADRD; /*!< (@ 0x000000F8) A/D Self-Diagnosis Data Register */ + + struct + { + __IM uint16_t AD : 16; /*!< [15..0] Converted Value 15 to 0 */ + } ADRD_b; + }; + + union + { + __IM uint8_t ADRST; /*!< (@ 0x000000FA) A/D Self-Diagnostic Status Register */ + + struct + { + __IM uint8_t DIAGST : 2; /*!< [1..0] Self-Diagnosis Status */ + uint8_t : 6; + } ADRST_b; + }; + __IM uint8_t RESERVED21; + __IM uint32_t RESERVED22[41]; + + union + { + __IOM uint16_t ADPGACR; /*!< (@ 0x000001A0) A/D Programmable Gain Amplifier Control Register */ + + struct + { + __IOM uint16_t P000SEL0 : 1; /*!< [0..0] A through amplifier is enable for PGA P000 */ + __IOM uint16_t P000SEL1 : 1; /*!< [1..1] The amplifier passing is enable for PGA P000 */ + __IOM uint16_t P000ENAMP : 1; /*!< [2..2] Amplifier enable bit for PGA P000 */ + __IOM uint16_t P000GEN : 1; /*!< [3..3] PGA P000 gain setting and enable bit */ + __IOM uint16_t P001SEL0 : 1; /*!< [4..4] A through amplifier is enable for PGA P001 */ + __IOM uint16_t P001SEL1 : 1; /*!< [5..5] The amplifier passing is enable for PGA P001 */ + __IOM uint16_t P001ENAMP : 1; /*!< [6..6] Amplifier enable bit for PGA P001 */ + __IOM uint16_t P001GEN : 1; /*!< [7..7] PGA P001 gain setting and enable bit */ + __IOM uint16_t P002SEL0 : 1; /*!< [8..8] A through amplifier is enable for PGA P002 */ + __IOM uint16_t P002SEL1 : 1; /*!< [9..9] The amplifier passing is enable for PGA P002 */ + __IOM uint16_t P002ENAMP : 1; /*!< [10..10] Amplifier enable bit for PGA P002 */ + __IOM uint16_t P002GEN : 1; /*!< [11..11] PGA P002 gain setting and enable bit */ + __IOM uint16_t P003SEL0 : 1; /*!< [12..12] A through amplifier is enable for PGA P003 */ + __IOM uint16_t P003SEL1 : 1; /*!< [13..13] The amplifier passing is enable for PGA P003 */ + __IOM uint16_t P003ENAMP : 1; /*!< [14..14] Amplifier enable bit for PGA P003 */ + __IOM uint16_t P003GEN : 1; /*!< [15..15] PGA P003 gain setting and enable bit */ + } ADPGACR_b; + }; + + union + { + __IOM uint16_t ADPGAGS0; /*!< (@ 0x000001A2) A/D Programmable Gain Amplifier Gain Setting + * Register 0 */ + + struct + { + __IOM uint16_t P000GAIN : 4; /*!< [3..0] PGA P000 gain setting bit.The gain magnification of (ADPGSDCR0.P000GEN= + * b) when the shingle end is input and each PGA P000 is set. + * When the differential motion is input, (ADPGSDCR0.P000GEN=1b) + * sets the gain magnification when the differential motion + * is input by the combination with ADPGSDCR0.P000DG 1:0. */ + __IOM uint16_t P001GAIN : 4; /*!< [7..4] PGA P001 gain setting bit.The gain magnification of (ADPGSDCR0.P001GEN= + * b) when the shingle end is input and each PGA P001 is set. + * When the differential motion is input, (ADPGSDCR0.P001GEN=1b) + * sets the gain magnification when the differential motion + * is input by the combination with ADPGSDCR0.P001DG 1:0. */ + __IOM uint16_t P002GAIN : 4; /*!< [11..8] PGA P002 gain setting bit.The gain magnification of + * (ADPGSDCR0.P002GEN=0b) when the shingle end is input and + * each PGA P002 is set. When the differential motion is input, + * (ADPGSDCR0.P002GEN=1b) sets the gain magnification when + * the differential motion is input by the combination with + * ADPGSDCR0.P002DG 1:0. */ + __IOM uint16_t P003GAIN : 4; /*!< [15..12] PGA P003 gain setting bit.The gain magnification of + * (ADPGSDCR0.P003GEN=0b) when the shingle end is input and + * each PGA P003 is set. When the differential motion is input, + * (ADPGSDCR0.P003GEN=1b) sets the gain magnification when + * the differential motion is input by the combination with + * ADPGSDCR0.P003DG 1:0. */ + } ADPGAGS0_b; + }; + __IM uint32_t RESERVED23[3]; + + union + { + __IOM uint16_t ADPGADCR0; /*!< (@ 0x000001B0) A/D Programmable Gain Amplifier Differential + * Input Control Register */ + + struct + { + __IOM uint16_t P000DG : 2; /*!< [1..0] P000 Differential Input Gain SettingNOTE: When these + * bits are used, set {P000DEN, P000GEN} to 11b. */ + uint16_t : 1; + __IOM uint16_t P000DEN : 1; /*!< [3..3] P000 Differential Input Enable */ + __IOM uint16_t P001DG : 2; /*!< [5..4] P001 Differential Input Gain SettingNOTE: When these + * bits are used, set {P001DEN, P001GEN} to 11b. */ + uint16_t : 1; + __IOM uint16_t P001DEN : 1; /*!< [7..7] P001 Differential Input Enable */ + __IOM uint16_t P002DG : 2; /*!< [9..8] P002 Differential Input Gain SettingNOTE: When these + * bits are used, set {P002DEN, P002GEN} to 11b. */ + uint16_t : 1; + __IOM uint16_t P002DEN : 1; /*!< [11..11] P002 Differential Input Enable */ + __IOM uint16_t P003DG : 2; /*!< [13..12] P003 Differential Input Gain SettingNOTE: When these + * bits are used, set {P003DEN, P003GEN} to 11b. */ + uint16_t : 1; + __IOM uint16_t P003DEN : 1; /*!< [15..15] P003 Differential Input Enable */ + } ADPGADCR0_b; + }; + __IM uint16_t RESERVED24; + + union + { + __IOM uint8_t ADPGADBS0; /*!< (@ 0x000001B4) A/D Programmable Gain Amplifier Differential + * Input Bias Select Register 0 */ + + struct + { + __IOM uint8_t P0BIAS : 1; /*!< [0..0] Programmable Gain Amplifiers P000 to P002 Bias Voltage + * SelectNOTE: This bit selects the input bias voltage value + * when differential inputs are used. */ + uint8_t : 7; + } ADPGADBS0_b; + }; + + union + { + __IOM uint8_t ADPGADBS1; /*!< (@ 0x000001B5) A/D Programmable Gain Amplifier Differential + * Input Bias Select Register 1 */ + + struct + { + __IOM uint8_t P3BIAS : 1; /*!< [0..0] Programmable Gain Amplifiers P003 Bias Voltage SelectNOTE: + * This bit selects the input bias voltage value when differential + * inputs are used. */ + uint8_t : 7; + } ADPGADBS1_b; + }; + __IM uint16_t RESERVED25; + __IM uint32_t RESERVED26[10]; + + union + { + __IOM uint32_t ADREFMON; /*!< (@ 0x000001E0) A/D External Reference Voltage Monitor Register */ + + struct + { + __IOM uint32_t PGAMON : 3; /*!< [2..0] PGA Monitor Output Enable */ + uint32_t : 13; + __IOM uint32_t MONSEL : 4; /*!< [19..16] Monitor output selection bit. */ + uint32_t : 12; + } ADREFMON_b; + }; +} R_ADC0_Type; /*!< Size = 484 (0x1e4) */ + +/* =========================================================================================================================== */ +/* ================ R_PSCU ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Peripheral Security Control Unit (R_PSCU) + */ + +typedef struct /*!< (@ 0x40204000) R_PSCU Structure */ +{ + __IM uint32_t RESERVED; + + union + { + __IOM uint32_t PSARB; /*!< (@ 0x00000004) Peripheral Security Attribution Register B */ + + struct + { + uint32_t : 4; + __IOM uint32_t PSARB4 : 1; /*!< [4..4] I3C Bus Interface 2 Security Attribution */ + uint32_t : 3; + __IOM uint32_t PSARB8 : 1; /*!< [8..8] I2C Bus Interface 1 Security Attribution */ + __IOM uint32_t PSARB9 : 1; /*!< [9..9] I2C Bus Interface 0 Security Attribution */ + uint32_t : 1; + __IOM uint32_t PSARB11 : 1; /*!< [11..11] Universal Serial Bus 2.0 FS Interface 0 Security Attribution */ + __IOM uint32_t PSARB12 : 1; /*!< [12..12] Universal Serial Bus 2.0 HS Interface 0 Security Attribution */ + uint32_t : 2; + __IOM uint32_t PSARB15 : 1; /*!< [15..15] ETHER0/EDMAC0 Controller Security Attribution */ + __IOM uint32_t PSARB16 : 1; /*!< [16..16] Octa Memory Controller Security Attribution */ + uint32_t : 1; + __IOM uint32_t PSARB18 : 1; /*!< [18..18] Serial Peripheral Interface 1 Security Attribution */ + __IOM uint32_t PSARB19 : 1; /*!< [19..19] Serial Peripheral Interface 0 Security Attribution */ + uint32_t : 2; + __IOM uint32_t PSARB22 : 1; /*!< [22..22] Serial Communication Interface 9 Security Attribution */ + uint32_t : 4; + __IOM uint32_t PSARB27 : 1; /*!< [27..27] Serial Communication Interface 4 Security Attribution */ + __IOM uint32_t PSARB28 : 1; /*!< [28..28] Serial Communication Interface 3 Security Attribution */ + __IOM uint32_t PSARB29 : 1; /*!< [29..29] Serial Communication Interface 2 Security Attribution */ + __IOM uint32_t PSARB30 : 1; /*!< [30..30] Serial Communication Interface 1 Security Attribution */ + __IOM uint32_t PSARB31 : 1; /*!< [31..31] Serial Communication Interface 0 Security Attribution */ + } PSARB_b; + }; + + union + { + __IOM uint32_t PSARC; /*!< (@ 0x00000008) Peripheral Security Attribution Register C */ + + struct + { + __IOM uint32_t PSARC0 : 1; /*!< [0..0] Clock Frequency Accuracy Measurement Circuit Security + * Attribution */ + __IOM uint32_t PSARC1 : 1; /*!< [1..1] Cyclic Redundancy Check Calculator Security Attribution */ + uint32_t : 5; + __IOM uint32_t PSARC7 : 1; /*!< [7..7] Serial Sound Interface Enhanced (channel 1) Security + * Attribution */ + __IOM uint32_t PSARC8 : 1; /*!< [8..8] Serial Sound Interface Enhanced (channel 0) Security + * Attribution */ + uint32_t : 2; + __IOM uint32_t PSARC11 : 1; /*!< [11..11] Secure Digital Host IF 1 Security Attribution */ + __IOM uint32_t PSARC12 : 1; /*!< [12..12] Secure Digital Host IF 0 Security Attribution */ + __IOM uint32_t PSARC13 : 1; /*!< [13..13] Data Operation Circuit Security Attribution */ + uint32_t : 1; + __IOM uint32_t PSARC15 : 1; /*!< [15..15] Graph-ic(GLCDC,MIPI,DRW,JPEG) Security Attribution */ + __IOM uint32_t PSARC16 : 1; /*!< [16..16] CEU Security Attribution */ + uint32_t : 9; + __IOM uint32_t PSARC26 : 1; /*!< [26..26] Controller Area Network with Flexible Data-Rate 1 Security + * Attribution */ + __IOM uint32_t PSARC27 : 1; /*!< [27..27] Controller Area Network with Flexible Data-Rate 0 Security + * Attribution */ + uint32_t : 3; + __IOM uint32_t PSARC31 : 1; /*!< [31..31] SHIP Security Attribution */ + } PSARC_b; + }; + + union + { + __IOM uint32_t PSARD; /*!< (@ 0x0000000C) Peripheral Security Attribution Register D */ + + struct + { + uint32_t : 4; + __IOM uint32_t PSARD4 : 1; /*!< [4..4] Asynchronous General Purpose Timer 1 Security Attribution */ + __IOM uint32_t PSARD5 : 1; /*!< [5..5] Asynchronous General Purpose Timer 0 Security Attribution */ + uint32_t : 5; + __IOM uint32_t PSARD11 : 1; /*!< [11..11] Port Output Enable for GPT Group 3 Security Attribution */ + __IOM uint32_t PSARD12 : 1; /*!< [12..12] Port Output Enable for GPT Group 2 Security Attribution */ + __IOM uint32_t PSARD13 : 1; /*!< [13..13] Port Output Enable for GPT Group 1 Security Attribution */ + __IOM uint32_t PSARD14 : 1; /*!< [14..14] Port Output Enable for GPT Group 0 Security Attribution */ + __IOM uint32_t PSARD15 : 1; /*!< [15..15] 12-Bit A/D 1 Converter Security Attribution */ + __IOM uint32_t PSARD16 : 1; /*!< [16..16] 12-Bit A/D 0 Converter Security Attribution */ + uint32_t : 3; + __IOM uint32_t PSARD20 : 1; /*!< [20..20] 12-Bit D/A Converter Security Attribution */ + uint32_t : 1; + __IOM uint32_t PSARD22 : 1; /*!< [22..22] Temperature Sensor Security Attribution */ + uint32_t : 4; + __IOM uint32_t PSARD27 : 1; /*!< [27..27] High speed analog Comparator 1 Security Attribution */ + __IOM uint32_t PSARD28 : 1; /*!< [28..28] High speed analog Comparator 0 Security Attribution */ + uint32_t : 3; + } PSARD_b; + }; + + union + { + __IOM uint32_t PSARE; /*!< (@ 0x00000010) Peripheral Security Attribution Register E */ + + struct + { + uint32_t : 1; + __IOM uint32_t PSARE1 : 1; /*!< [1..1] WDT0 Security Attribution */ + __IOM uint32_t PSARE2 : 1; /*!< [2..2] Independent Watchdog Timer Security Attribution */ + __IOM uint32_t PSARE3 : 1; /*!< [3..3] Real Time Clock Security Attribution */ + uint32_t : 4; + __IOM uint32_t PSARE8 : 1; /*!< [8..8] ULPT1 Security Attribution */ + __IOM uint32_t PSARE9 : 1; /*!< [9..9] ULPT0 Security Attribution */ + uint32_t : 8; + __IOM uint32_t PSARE18 : 1; /*!< [18..18] General PWM Timer channel13 Security Attribution */ + __IOM uint32_t PSARE19 : 1; /*!< [19..19] General PWM Timer channel12 Security Attribution */ + __IOM uint32_t PSARE20 : 1; /*!< [20..20] General PWM Timer channel11 Security Attribution */ + __IOM uint32_t PSARE21 : 1; /*!< [21..21] General PWM Timer channel10 Security Attribution */ + __IOM uint32_t PSARE22 : 1; /*!< [22..22] General PWM Timer channel9 Security Attribution */ + __IOM uint32_t PSARE23 : 1; /*!< [23..23] General PWM Timer channel8 Security Attribution */ + __IOM uint32_t PSARE24 : 1; /*!< [24..24] General PWM Timer channel7 Security Attribution */ + __IOM uint32_t PSARE25 : 1; /*!< [25..25] General PWM Timer channel6 Security Attribution */ + __IOM uint32_t PSARE26 : 1; /*!< [26..26] General PWM Timer channel5 Security Attribution */ + __IOM uint32_t PSARE27 : 1; /*!< [27..27] General PWM Timer channel4 Security Attribution */ + __IOM uint32_t PSARE28 : 1; /*!< [28..28] General PWM Timer channel3 Security Attribution */ + __IOM uint32_t PSARE29 : 1; /*!< [29..29] General PWM Timer channel2 Security Attribution */ + __IOM uint32_t PSARE30 : 1; /*!< [30..30] General PWM Timer channel1 Security Attribution */ + __IOM uint32_t PSARE31 : 1; /*!< [31..31] General PWM Timer channel0 Security Attribution */ + } PSARE_b; + }; + + union + { + __IOM uint32_t MSSAR; /*!< (@ 0x00000014) Module Stop Security Attribution Register */ + + struct + { + __IOM uint32_t MSSAR0 : 1; /*!< [0..0] SRAM0 Clock Stop Security Attribution */ + __IOM uint32_t MSSAR1 : 1; /*!< [1..1] SRAM1 Clock Stop Security Attribution */ + uint32_t : 9; + __IOM uint32_t MSSAR11 : 1; /*!< [11..11] CTCM0 Security Attribution */ + uint32_t : 1; + __IOM uint32_t MSSAR13 : 1; /*!< [13..13] STCM0 Security Attribution */ + uint32_t : 1; + __IOM uint32_t MSSAR15 : 1; /*!< [15..15] Standby RAM Clock Stop Security Attribution */ + uint32_t : 6; + __IOM uint32_t MSSAR22 : 1; /*!< [22..22] DMAC0/DTC0 Clock Stop Security Attribution */ + uint32_t : 8; + __IOM uint32_t MSSAR31 : 1; /*!< [31..31] ELC clock stop Security Attribution */ + } MSSAR_b; + }; + __IM uint32_t RESERVED1; + + union + { + __IOM uint32_t PPARB; /*!< (@ 0x0000001C) Peripheral Privilege Attribution Register B */ + + struct + { + uint32_t : 4; + __IOM uint32_t PPARB4 : 1; /*!< [4..4] I3C Bus Interface 2 Privilege Attribution */ + uint32_t : 3; + __IOM uint32_t PPARB8 : 1; /*!< [8..8] I2C Bus Interface 1 Privilege Attribution */ + __IOM uint32_t PPARB9 : 1; /*!< [9..9] I2C Bus Interface 0 Privilege Attribution */ + uint32_t : 1; + __IOM uint32_t PPARB11 : 1; /*!< [11..11] Universal Serial Bus 2.0 FS Interface 0 Privilege Attribution */ + __IOM uint32_t PPARB12 : 1; /*!< [12..12] Universal Serial Bus 2.0 HS Interface 0 Privilege Attribution */ + uint32_t : 2; + __IOM uint32_t PPARB15 : 1; /*!< [15..15] ETHER0/EDMAC0 Controller Privilege Attribution */ + __IOM uint32_t PPARB16 : 1; /*!< [16..16] Octa Memory Controller Privilege Attribution */ + uint32_t : 1; + __IOM uint32_t PPARB18 : 1; /*!< [18..18] Serial Peripheral Interface 1 Privilege Attribution */ + __IOM uint32_t PPARB19 : 1; /*!< [19..19] Serial Peripheral Interface 0 Privilege Attribution */ + uint32_t : 2; + __IOM uint32_t PPARB22 : 1; /*!< [22..22] Serial Communication Interface 9 Privilege Attribution */ + uint32_t : 4; + __IOM uint32_t PPARB27 : 1; /*!< [27..27] Serial Communication Interface 4 Privilege Attribution */ + __IOM uint32_t PPARB28 : 1; /*!< [28..28] Serial Communication Interface 3 Privilege Attribution */ + __IOM uint32_t PPARB29 : 1; /*!< [29..29] Serial Communication Interface 2 Privilege Attribution */ + __IOM uint32_t PPARB30 : 1; /*!< [30..30] Serial Communication Interface 1 Privilege Attribution */ + __IOM uint32_t PPARB31 : 1; /*!< [31..31] Serial Communication Interface 0 Privilege Attribution */ + } PPARB_b; + }; + + union + { + __IOM uint32_t PPARC; /*!< (@ 0x00000020) Peripheral Privilege Attribution Register C */ + + struct + { + __IOM uint32_t PPARC0 : 1; /*!< [0..0] Clock Frequency Accuracy Measurement Circuit Privilege + * Attribution */ + __IOM uint32_t PPARC1 : 1; /*!< [1..1] Cyclic Redundancy Check Calculator Privilege Attribution */ + uint32_t : 5; + __IOM uint32_t PPARC7 : 1; /*!< [7..7] Serial Sound Interface Enhanced (channel 1) Privilege + * Attribution */ + __IOM uint32_t PPARC8 : 1; /*!< [8..8] Serial Sound Interface Enhanced (channel 0) Privilege + * Attribution */ + uint32_t : 2; + __IOM uint32_t PPARC11 : 1; /*!< [11..11] Privilege Digital Host IF 1 Privilege Attribution */ + __IOM uint32_t PPARC12 : 1; /*!< [12..12] Privilege Digital Host IF 0 Privilege Attribution */ + __IOM uint32_t PPARC13 : 1; /*!< [13..13] Data Operation Circuit Privilege Attribution */ + uint32_t : 1; + __IOM uint32_t PPARC15 : 1; /*!< [15..15] Graph-ic(GLCDC,MIPI,DRW,JPEG) Privilege Attribution */ + __IOM uint32_t PPARC16 : 1; /*!< [16..16] CEU Privilege Attribution */ + uint32_t : 9; + __IOM uint32_t PPARC26 : 1; /*!< [26..26] Controller Area Network with Flexible Data-Rate 1 Privilege + * Attribution */ + __IOM uint32_t PPARC27 : 1; /*!< [27..27] Controller Area Network with Flexible Data-Rate 0 Privilege + * Attribution */ + uint32_t : 3; + __IOM uint32_t PPARC31 : 1; /*!< [31..31] SHIP Privilege Attribution */ + } PPARC_b; + }; + + union + { + __IOM uint32_t PPARD; /*!< (@ 0x00000024) Peripheral Privilege Attribution Register D */ + + struct + { + uint32_t : 4; + __IOM uint32_t PPARD4 : 1; /*!< [4..4] Asynchronous General Purpose Timer 1 Privilege Attribution */ + __IOM uint32_t PPARD5 : 1; /*!< [5..5] Asynchronous General Purpose Timer 0 Privilege Attribution */ + uint32_t : 5; + __IOM uint32_t PPARD11 : 1; /*!< [11..11] Port Output Enable for GPT Group 3 Privilege Attribution */ + __IOM uint32_t PPARD12 : 1; /*!< [12..12] Port Output Enable for GPT Group 2 Privilege Attribution */ + __IOM uint32_t PPARD13 : 1; /*!< [13..13] Port Output Enable for GPT Group 1 Privilege Attribution */ + __IOM uint32_t PPARD14 : 1; /*!< [14..14] Port Output Enable for GPT Group 0 Privilege Attribution */ + __IOM uint32_t PPARD15 : 1; /*!< [15..15] 12-Bit A/D 1 Converter Privilege Attribution */ + __IOM uint32_t PPARD16 : 1; /*!< [16..16] 12-Bit A/D 0 Converter Privilege Attribution */ + uint32_t : 3; + __IOM uint32_t PPARD20 : 1; /*!< [20..20] 12-Bit D/A Converter Privilege Attribution */ + uint32_t : 1; + __IOM uint32_t PPARD22 : 1; /*!< [22..22] Temperature Sensor Privilege Attribution */ + uint32_t : 4; + __IOM uint32_t PPARD27 : 1; /*!< [27..27] High speed analog Comparator 1 Privilege Attribution */ + __IOM uint32_t PPARD28 : 1; /*!< [28..28] High speed analog Comparator 0 Privilege Attribution */ + uint32_t : 3; + } PPARD_b; + }; + + union + { + __IOM uint32_t PPARE; /*!< (@ 0x00000028) Peripheral Privilege Attribution Register E */ + + struct + { + uint32_t : 1; + __IOM uint32_t PPARE1 : 1; /*!< [1..1] Watchdog Timer0 Privilege Attribution */ + __IOM uint32_t PPARE2 : 1; /*!< [2..2] Independent Watchdog Timer Privilege Attribution */ + __IOM uint32_t PPARE3 : 1; /*!< [3..3] Real Time Clock Privilege Attribution */ + uint32_t : 4; + __IOM uint32_t PPARE8 : 1; /*!< [8..8] ULPT1 Privilege Attribution */ + __IOM uint32_t PPARE9 : 1; /*!< [9..9] ULPT0 Privilege Attribution */ + uint32_t : 8; + __IOM uint32_t PPARE18 : 1; /*!< [18..18] General PWM Timer channel13 Privilege Attribution */ + __IOM uint32_t PPARE19 : 1; /*!< [19..19] General PWM Timer channel12 Privilege Attribution */ + __IOM uint32_t PPARE20 : 1; /*!< [20..20] General PWM Timer channel11 Privilege Attribution */ + __IOM uint32_t PPARE21 : 1; /*!< [21..21] General PWM Timer channel10 Privilege Attribution */ + __IOM uint32_t PPARE22 : 1; /*!< [22..22] General PWM Timer channel9 Privilege Attribution */ + __IOM uint32_t PPARE23 : 1; /*!< [23..23] General PWM Timer channel8 Privilege Attribution */ + __IOM uint32_t PPARE24 : 1; /*!< [24..24] General PWM Timer channel7 Privilege Attribution */ + __IOM uint32_t PPARE25 : 1; /*!< [25..25] General PWM Timer channel6 Privilege Attribution */ + __IOM uint32_t PPARE26 : 1; /*!< [26..26] General PWM Timer channel5 Privilege Attribution */ + __IOM uint32_t PPARE27 : 1; /*!< [27..27] General PWM Timer channel4 Privilege Attribution */ + __IOM uint32_t PPARE28 : 1; /*!< [28..28] General PWM Timer channel3 Privilege Attribution */ + __IOM uint32_t PPARE29 : 1; /*!< [29..29] General PWM Timer channel2 Privilege Attribution */ + __IOM uint32_t PPARE30 : 1; /*!< [30..30] General PWM Timer channel1 Privilege Attribution */ + __IOM uint32_t PPARE31 : 1; /*!< [31..31] General PWM Timer channel0 Privilege Attribution */ + } PPARE_b; + }; + + union + { + __IOM uint32_t MSPAR; /*!< (@ 0x0000002C) Module Stop Privilege Attribution Register */ + + struct + { + uint32_t : 31; + __IOM uint32_t MSPAR31 : 1; /*!< [31..31] ELC clock stop Privilege Attribution */ + } MSPAR_b; + }; + + union + { + __IM uint32_t CFSAMONA; /*!< (@ 0x00000030) Code Flash Security Attribution Monitor Register + * A */ + + struct + { + uint32_t : 15; + __IM uint32_t CFS2 : 9; /*!< [23..15] Code Flash Secure area */ + uint32_t : 8; + } CFSAMONA_b; + }; + + union + { + __IM uint32_t DFSAMON; /*!< (@ 0x00000034) Data Flash Security Attribution Monitor Register */ + + struct + { + uint32_t : 10; + __IM uint32_t DFS : 6; /*!< [15..10] Data flash Secure area */ + uint32_t : 16; + } DFSAMON_b; + }; + + union + { + __IM uint32_t DLMMON; /*!< (@ 0x00000038) Device Lifecycle Management State Monitor Register */ + + struct + { + __IM uint32_t DLMMON : 4; /*!< [3..0] Device Lifecycle Management State Monitor */ + uint32_t : 28; + } DLMMON_b; + }; +} R_PSCU_Type; /*!< Size = 60 (0x3c) */ + +/* =========================================================================================================================== */ +/* ================ R_BUS ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Bus Interface (R_BUS) + */ + +typedef struct /*!< (@ 0x40003000) R_BUS Structure */ +{ + __IOM R_BUS_CSa_Type CSa[8]; /*!< (@ 0x00000000) CS Registers */ + __IM uint32_t RESERVED[480]; + __IOM R_BUS_CSb_Type CSb[8]; /*!< (@ 0x00000800) CS Registers */ + + union + { + __IOM uint16_t CSRECEN; /*!< (@ 0x00000880) CS Recovery Cycle Insertion Enable Register */ + + struct + { + __IOM uint16_t RCVEN0 : 1; /*!< [0..0] Separate Bus Recovery Cycle Insertion Enable */ + __IOM uint16_t RCVEN1 : 1; /*!< [1..1] Separate Bus Recovery Cycle Insertion Enable */ + __IOM uint16_t RCVEN2 : 1; /*!< [2..2] Separate Bus Recovery Cycle Insertion Enable */ + __IOM uint16_t RCVEN3 : 1; /*!< [3..3] Separate Bus Recovery Cycle Insertion Enable */ + __IOM uint16_t RCVEN4 : 1; /*!< [4..4] Separate Bus Recovery Cycle Insertion Enable */ + __IOM uint16_t RCVEN5 : 1; /*!< [5..5] Separate Bus Recovery Cycle Insertion Enable */ + __IOM uint16_t RCVEN6 : 1; /*!< [6..6] Separate Bus Recovery Cycle Insertion Enable */ + __IOM uint16_t RCVEN7 : 1; /*!< [7..7] Separate Bus Recovery Cycle Insertion Enable */ + __IOM uint16_t RCVENM0 : 1; /*!< [8..8] Multiplexed Bus Recovery Cycle Insertion Enable */ + __IOM uint16_t RCVENM1 : 1; /*!< [9..9] Multiplexed Bus Recovery Cycle Insertion Enable */ + __IOM uint16_t RCVENM2 : 1; /*!< [10..10] Multiplexed Bus Recovery Cycle Insertion Enable */ + __IOM uint16_t RCVENM3 : 1; /*!< [11..11] Multiplexed Bus Recovery Cycle Insertion Enable */ + __IOM uint16_t RCVENM4 : 1; /*!< [12..12] Multiplexed Bus Recovery Cycle Insertion Enable */ + __IOM uint16_t RCVENM5 : 1; /*!< [13..13] Multiplexed Bus Recovery Cycle Insertion Enable */ + __IOM uint16_t RCVENM6 : 1; /*!< [14..14] Multiplexed Bus Recovery Cycle Insertion Enable */ + __IOM uint16_t RCVENM7 : 1; /*!< [15..15] Multiplexed Bus Recovery Cycle Insertion Enable */ + } CSRECEN_b; + }; + __IM uint16_t RESERVED1; + __IM uint32_t RESERVED2[223]; + __IOM R_BUS_SDRAM_Type SDRAM; /*!< (@ 0x00000C00) SDRAM Registers */ + __IM uint32_t RESERVED3[235]; + + union + { + __IOM R_BUS_OAD_Type OAD; /*!< (@ 0x00001000) Bus Operation After Detection Registers */ + __IOM R_BUS_BUSM_Type BUSM[6]; /*!< (@ 0x00001000) Master Bus Control Registers */ + }; + __IM uint32_t RESERVED4[58]; + + union + { + union + { + __IOM uint32_t BUSMABT; /*!< (@ 0x00001100) Bus Master Arbitration Control Register. */ + + struct + { + __IOM uint32_t ARBS : 1; /*!< [0..0] Arbitration Select for GDSSBI. */ + uint32_t : 31; + } BUSMABT_b; + }; + __IOM R_BUS_BUSS_Type BUSS[18]; /*!< (@ 0x00001100) Slave Bus Control Register Array */ + }; + __IM uint32_t RESERVED5[46]; + + union + { + __IOM R_BUS_BUSSABT0_Type BUSSABT0; /*!< (@ 0x00001200) Bus Slave Arbitration Control 0 Registers */ + __IOM R_BUS_BUSSABT1_Type BUSSABT1; /*!< (@ 0x00001200) Bus Slave Arbitration Control 1 Registers */ + }; + __IM uint32_t RESERVED6[33]; + + union + { + __IOM uint32_t BUSDIVBYP; /*!< (@ 0x00001300) Bus Divider Bypass Register. */ + + struct + { + __IOM uint32_t EDMABPE : 1; /*!< [0..0] Divider for EDMACBI bypass enable. */ + uint32_t : 2; + __IOM uint32_t GDSSBPE : 1; /*!< [3..3] Divider for GDSSBI bypass enable. */ + uint32_t : 12; + __IOM uint32_t CPU0SBPE : 1; /*!< [16..16] Divider for CPUSAHBI bypass enable. */ + uint32_t : 15; + } BUSDIVBYP_b; + }; + __IM uint32_t RESERVED7[319]; + __IOM R_BUS_BUSERRa_Type BUSERRa[12]; /*!< (@ 0x00001800) Bus Error Registers */ + __IM uint32_t RESERVED8[16]; + + union + { + __IOM R_BUS_BTZFERR_Type BTZFERR[4]; /*!< (@ 0x00001900) Bus TZF Error Registers */ + __IOM R_BUS_BMSAERR_Type BMSAERR[9]; /*!< (@ 0x00001900) Bus Master Security Attribution Unit Error Address + * and Read/Write Status registers. */ + }; + __IM uint32_t RESERVED9[28]; + + union + { + __IOM R_BUS_BUSERRb_Type BUSERRb[12]; /*!< (@ 0x00001A00) Bus Error Registers */ + __IOM R_BUS_DMACDTCERR_Type DMACDTCERR; /*!< (@ 0x00001A00) DMAC/DTC Error Registers */ + }; + __IM uint32_t RESERVED10[16]; + __IOM R_BUS_MBWERR_Type MBWERR; /*!< (@ 0x00001B00) Master Bufferable Write Error Registers */ + __IM uint32_t RESERVED11[5]; + __IOM R_BUS_MBWERR_Type SBWERR; /*!< (@ 0x00001B20) Slave Bufferable Write Error Registers */ +} R_BUS_Type; /*!< Size = 6956 (0x1b2c) */ + +/* =========================================================================================================================== */ +/* ================ R_CAC ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Clock Frequency Accuracy Measurement Circuit (R_CAC) + */ + +typedef struct /*!< (@ 0x40202400) R_CAC Structure */ +{ + union + { + __IOM uint8_t CACR0; /*!< (@ 0x00000000) CAC Control Register 0 */ + + struct + { + __IOM uint8_t CFME : 1; /*!< [0..0] Clock Frequency Measurement Enable. */ + uint8_t : 7; + } CACR0_b; + }; + + union + { + __IOM uint8_t CACR1; /*!< (@ 0x00000001) CAC Control Register 1 */ + + struct + { + __IOM uint8_t CACREFE : 1; /*!< [0..0] CACREF Pin Input Enable */ + __IOM uint8_t FMCS : 3; /*!< [3..1] Measurement Target Clock Select */ + __IOM uint8_t TCSS : 2; /*!< [5..4] Measurement Target Clock Frequency Division Ratio Select */ + __IOM uint8_t EDGES : 2; /*!< [7..6] Valid Edge Select */ + } CACR1_b; + }; + + union + { + __IOM uint8_t CACR2; /*!< (@ 0x00000002) CAC Control Register 2 */ + + struct + { + __IOM uint8_t RPS : 1; /*!< [0..0] Reference Signal Select */ + __IOM uint8_t RSCS : 3; /*!< [3..1] Measurement Reference Clock Select */ + __IOM uint8_t RCDS : 2; /*!< [5..4] Measurement Reference Clock Frequency Division Ratio + * Select */ + __IOM uint8_t DFS : 2; /*!< [7..6] Digital Filter Selection */ + } CACR2_b; + }; + + union + { + __IOM uint8_t CAICR; /*!< (@ 0x00000003) CAC Interrupt Control Register */ + + struct + { + __IOM uint8_t FERRIE : 1; /*!< [0..0] Frequency Error Interrupt Request Enable */ + __IOM uint8_t MENDIE : 1; /*!< [1..1] Measurement End Interrupt Request Enable */ + __IOM uint8_t OVFIE : 1; /*!< [2..2] Overflow Interrupt Request Enable */ + uint8_t : 1; + __OM uint8_t FERRFCL : 1; /*!< [4..4] FERRF Clear */ + __OM uint8_t MENDFCL : 1; /*!< [5..5] MENDF Clear */ + __OM uint8_t OVFFCL : 1; /*!< [6..6] OVFF Clear */ + uint8_t : 1; + } CAICR_b; + }; + + union + { + __IM uint8_t CASTR; /*!< (@ 0x00000004) CAC Status Register */ + + struct + { + __IM uint8_t FERRF : 1; /*!< [0..0] Frequency Error Flag */ + __IM uint8_t MENDF : 1; /*!< [1..1] Measurement End Flag */ + __IM uint8_t OVFF : 1; /*!< [2..2] Counter Overflow Flag */ + uint8_t : 5; + } CASTR_b; + }; + __IM uint8_t RESERVED; + + union + { + __IOM uint16_t CAULVR; /*!< (@ 0x00000006) CAC Upper-Limit Value Setting Register */ + + struct + { + __IOM uint16_t CAULVR : 16; /*!< [15..0] CAULVR is a 16-bit readable/writable register that stores + * the upper-limit value of the frequency. */ + } CAULVR_b; + }; + + union + { + __IOM uint16_t CALLVR; /*!< (@ 0x00000008) CAC Lower-Limit Value Setting Register */ + + struct + { + __IOM uint16_t CALLVR : 16; /*!< [15..0] CALLVR is a 16-bit readable/writable register that stores + * the lower-limit value of the frequency. */ + } CALLVR_b; + }; + + union + { + __IM uint16_t CACNTBR; /*!< (@ 0x0000000A) CAC Counter Buffer Register */ + + struct + { + __IM uint16_t CACNTBR : 16; /*!< [15..0] CACNTBR is a 16-bit read-only register that retains + * the counter value at the time a valid reference signal + * edge is input */ + } CACNTBR_b; + }; +} R_CAC_Type; /*!< Size = 12 (0xc) */ + +/* =========================================================================================================================== */ +/* ================ R_CANFD0 ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Controller Area Network - Flexible Data (CAN-FD) Module (R_CANFD0) + */ + +typedef struct /*!< (@ 0x40380000) R_CANFD0 Structure */ +{ + __IOM R_CANFD_CFDC_Type CFDC[1]; /*!< (@ 0x00000000) Channel Control/Status */ + __IM uint32_t RESERVED; + + union + { + __IOM uint32_t CFDGCFG; /*!< (@ 0x00000014) Global Configuration Register */ + + struct + { + __IOM uint32_t TPRI : 1; /*!< [0..0] Transmission Priority */ + __IOM uint32_t DCE : 1; /*!< [1..1] DLC Check Enable */ + __IOM uint32_t DRE : 1; /*!< [2..2] DLC Replacement Enable */ + __IOM uint32_t MME : 1; /*!< [3..3] Mirror Mode Enable */ + __IOM uint32_t DCS : 1; /*!< [4..4] Data Link Controller Clock Select */ + __IOM uint32_t CMPOC : 1; /*!< [5..5] CAN-FD message Payload overflow configuration */ + uint32_t : 2; + __IOM uint32_t TSP : 4; /*!< [11..8] Timestamp Prescaler */ + __IOM uint32_t TSSS : 1; /*!< [12..12] Timestamp Source Select */ + uint32_t : 3; + __IOM uint32_t ITRCP : 16; /*!< [31..16] Interval Timer Reference Clock Prescaler */ + } CFDGCFG_b; + }; + + union + { + __IOM uint32_t CFDGCTR; /*!< (@ 0x00000018) Global Control Register */ + + struct + { + __IOM uint32_t GMDC : 2; /*!< [1..0] Global Mode Control */ + __IOM uint32_t GSLPR : 1; /*!< [2..2] Global Sleep Request */ + uint32_t : 5; + __IOM uint32_t DEIE : 1; /*!< [8..8] DLC check Interrupt Enable */ + __IOM uint32_t MEIE : 1; /*!< [9..9] Message lost Error Interrupt Enable */ + __IOM uint32_t THLEIE : 1; /*!< [10..10] TX History List Entry Lost Interrupt Enable */ + __IOM uint32_t CMPOFIE : 1; /*!< [11..11] CAN-FD message payload overflow Flag Interrupt enable */ + uint32_t : 4; + __IOM uint32_t TSRST : 1; /*!< [16..16] Timestamp Reset */ + uint32_t : 15; + } CFDGCTR_b; + }; + + union + { + __IOM uint32_t CFDGSTS; /*!< (@ 0x0000001C) Global Status Register */ + + struct + { + __IM uint32_t GRSTSTS : 1; /*!< [0..0] Global Reset Status */ + __IM uint32_t GHLTSTS : 1; /*!< [1..1] Global Halt Status */ + __IM uint32_t GSLPSTS : 1; /*!< [2..2] Global Sleep Status */ + __IM uint32_t GRAMINIT : 1; /*!< [3..3] Global RAM Initialisation */ + uint32_t : 28; + } CFDGSTS_b; + }; + + union + { + __IOM uint32_t CFDGERFL; /*!< (@ 0x00000020) Global Error Flag Register */ + + struct + { + __IOM uint32_t DEF : 1; /*!< [0..0] DLC Error Flag */ + __IM uint32_t MES : 1; /*!< [1..1] Message Lost Error Status */ + __IM uint32_t THLES : 1; /*!< [2..2] TX History List Entry Lost Error Status */ + __IOM uint32_t CMPOF : 1; /*!< [3..3] CAN-FD message payload overflow Flag */ + uint32_t : 12; + __IOM uint32_t EEF0 : 1; /*!< [16..16] ECC Error Flag for Channel 0 */ + uint32_t : 15; + } CFDGERFL_b; + }; + + union + { + __IOM uint32_t CFDGTSC; /*!< (@ 0x00000024) Global Timestamp Counter Register */ + + struct + { + __IM uint32_t TS : 16; /*!< [15..0] Timestamp Value */ + uint32_t : 16; + } CFDGTSC_b; + }; + + union + { + __IOM uint32_t CFDGAFLECTR; /*!< (@ 0x00000028) Global Acceptance Filter List Entry Control Register */ + + struct + { + __IOM uint32_t AFLPN : 4; /*!< [3..0] Acceptance Filter List Page Number */ + uint32_t : 4; + __IOM uint32_t AFLDAE : 1; /*!< [8..8] Acceptance Filter List Data Access Enable */ + uint32_t : 23; + } CFDGAFLECTR_b; + }; + + union + { + __IOM uint32_t CFDGAFLCFG0; /*!< (@ 0x0000002C) Global Acceptance Filter List Configuration Register + * 0 */ + + struct + { + __IOM uint32_t RNC1 : 9; /*!< [8..0] Rule Number for Channel 1 */ + uint32_t : 7; + __IOM uint32_t RNC0 : 9; /*!< [24..16] Rule Number for Channel 0 */ + uint32_t : 7; + } CFDGAFLCFG0_b; + }; + + union + { + __IOM uint32_t CFDRMNB; /*!< (@ 0x00000030) RX Message Buffer Number Register */ + + struct + { + __IOM uint32_t NRXMB : 8; /*!< [7..0] Number of RX Message Buffers */ + __IOM uint32_t RMPLS : 3; /*!< [10..8] Reception Message Buffer Payload Data Size */ + uint32_t : 21; + } CFDRMNB_b; + }; + + union + { + __IOM uint32_t CFDRMND0; /*!< (@ 0x00000034) RX Message Buffer New Data Register 0 */ + + struct + { + __IOM uint32_t RMNSu : 32; /*!< [31..0] RX Message Buffer New Data Status */ + } CFDRMND0_b; + }; + + union + { + __IOM uint32_t CFDRMIEC; /*!< (@ 0x00000038) RX Message Buffer Interrupt Enable Configuration + * Register */ + + struct + { + __IOM uint32_t RMIE : 32; /*!< [31..0] RX Message Buffer Interrupt Enable */ + } CFDRMIEC_b; + }; + + union + { + __IOM uint32_t CFDRFCC[2]; /*!< (@ 0x0000003C) RX FIFO Configuration / Control Registers */ + + struct + { + __IOM uint32_t RFE : 1; /*!< [0..0] RX FIFO Enable */ + __IOM uint32_t RFIE : 1; /*!< [1..1] RX FIFO Interrupt Enable */ + uint32_t : 2; + __IOM uint32_t RFPLS : 3; /*!< [6..4] Rx FIFO Payload Data Size configuration */ + uint32_t : 1; + __IOM uint32_t RFDC : 3; /*!< [10..8] RX FIFO Depth Configuration */ + uint32_t : 1; + __IOM uint32_t RFIM : 1; /*!< [12..12] RX FIFO Interrupt Mode */ + __IOM uint32_t RFIGCV : 3; /*!< [15..13] RX FIFO Interrupt Generation Counter Value */ + uint32_t : 16; + } CFDRFCC_b[2]; + }; + + union + { + __IOM uint32_t CFDRFSTS[2]; /*!< (@ 0x00000044) RX FIFO Status Registers */ + + struct + { + __IM uint32_t RFEMP : 1; /*!< [0..0] RX FIFO Empty */ + __IM uint32_t RFFLL : 1; /*!< [1..1] RX FIFO Full */ + __IOM uint32_t RFMLT : 1; /*!< [2..2] RX FIFO Message Lost */ + __IOM uint32_t RFIF : 1; /*!< [3..3] RX FIFO Interrupt Flag */ + uint32_t : 4; + __IM uint32_t RFMC : 8; /*!< [15..8] RX FIFO Message Count */ + uint32_t : 16; + } CFDRFSTS_b[2]; + }; + + union + { + __IOM uint32_t CFDRFPCTR[2]; /*!< (@ 0x0000004C) RX FIFO Pointer Control Registers */ + + struct + { + __OM uint32_t RFPC : 8; /*!< [7..0] RX FIFO Pointer Control */ + uint32_t : 24; + } CFDRFPCTR_b[2]; + }; + + union + { + __IOM uint32_t CFDCFCC[1]; /*!< (@ 0x00000054) Common FIFO Configuration / Control Registers */ + + struct + { + __IOM uint32_t CFE : 1; /*!< [0..0] Common FIFO Enable */ + __IOM uint32_t CFRXIE : 1; /*!< [1..1] Common FIFO RX Interrupt Enable */ + __IOM uint32_t CFTXIE : 1; /*!< [2..2] Common FIFO TX Interrupt Enable */ + uint32_t : 1; + __IOM uint32_t CFPLS : 3; /*!< [6..4] Common FIFO Payload Data size configuration */ + uint32_t : 1; + __IOM uint32_t CFM : 2; /*!< [9..8] Common FIFO Mode */ + __IOM uint32_t CFITSS : 1; /*!< [10..10] Common FIFO Interval Timer Source Select */ + __IOM uint32_t CFITR : 1; /*!< [11..11] Common FIFO Interval Timer Resolution */ + __IOM uint32_t CFIM : 1; /*!< [12..12] Common FIFO Interrupt Mode */ + __IOM uint32_t CFIGCV : 3; /*!< [15..13] Common FIFO Interrupt Generation Counter Value */ + __IOM uint32_t CFTML : 5; /*!< [20..16] Common FIFO TX Message Buffer Link */ + __IOM uint32_t CFDC : 3; /*!< [23..21] Common FIFO Depth Configuration */ + __IOM uint32_t CFITT : 8; /*!< [31..24] Common FIFO Interval Transmission Time */ + } CFDCFCC_b[1]; + }; + + union + { + __IOM uint32_t CFDCFSTS[1]; /*!< (@ 0x00000058) Common FIFO Status Registers */ + + struct + { + __IM uint32_t CFEMP : 1; /*!< [0..0] Common FIFO Empty */ + __IM uint32_t CFFLL : 1; /*!< [1..1] Common FIFO Full */ + __IOM uint32_t CFMLT : 1; /*!< [2..2] Common FIFO Message Lost */ + __IOM uint32_t CFRXIF : 1; /*!< [3..3] Common RX FIFO Interrupt Flag */ + __IOM uint32_t CFTXIF : 1; /*!< [4..4] Common TX FIFO Interrupt Flag */ + uint32_t : 3; + __IM uint32_t CFMC : 8; /*!< [15..8] Common FIFO Message Count */ + uint32_t : 16; + } CFDCFSTS_b[1]; + }; + + union + { + __IOM uint32_t CFDCFPCTR[1]; /*!< (@ 0x0000005C) Common FIFO Pointer Control Registers */ + + struct + { + __OM uint32_t CFPC : 8; /*!< [7..0] Common FIFO Pointer Control */ + uint32_t : 24; + } CFDCFPCTR_b[1]; + }; + + union + { + __IM uint32_t CFDFESTS; /*!< (@ 0x00000060) FIFO Empty Status Register */ + + struct + { + __IM uint32_t RFXEMP : 2; /*!< [1..0] RX FIF0 Empty Status */ + uint32_t : 6; + __IM uint32_t CFXEMP : 1; /*!< [8..8] Common FIF0 Empty Status */ + uint32_t : 23; + } CFDFESTS_b; + }; + + union + { + __IM uint32_t CFDFFSTS; /*!< (@ 0x00000064) FIFO Full Status Register */ + + struct + { + __IM uint32_t RFXFLL : 2; /*!< [1..0] RX FIF0 Full Status */ + uint32_t : 6; + __IM uint32_t CFXFLL : 1; /*!< [8..8] Common FIF0 Full Status */ + uint32_t : 23; + } CFDFFSTS_b; + }; + + union + { + __IM uint32_t CFDFMSTS; /*!< (@ 0x00000068) FIFO Message Lost Status Register */ + + struct + { + __IM uint32_t RFXMLT : 2; /*!< [1..0] RX FIFO Msg Lost Status */ + uint32_t : 6; + __IM uint32_t CFXMLT : 1; /*!< [8..8] Common FIFO Msg Lost Status */ + uint32_t : 23; + } CFDFMSTS_b; + }; + + union + { + __IOM uint32_t CFDRFISTS; /*!< (@ 0x0000006C) RX FIFO Interrupt Flag Status Register */ + + struct + { + __IM uint32_t RFXIF : 1; /*!< [0..0] RX FIFO[x] Interrupt Flag Status */ + uint32_t : 31; + } CFDRFISTS_b; + }; + + union + { + __IOM uint8_t CFDTMC[4]; /*!< (@ 0x00000070) TX Message Buffer Control Registers */ + + struct + { + __IOM uint8_t TMTR : 1; /*!< [0..0] TX Message Buffer Transmission Request */ + __IOM uint8_t TMTAR : 1; /*!< [1..1] TX Message Buffer Transmission abort Request */ + __IOM uint8_t TMOM : 1; /*!< [2..2] TX Message Buffer One-shot Mode */ + uint8_t : 5; + } CFDTMC_b[4]; + }; + + union + { + __IOM uint8_t CFDTMSTS[4]; /*!< (@ 0x00000074) TX Message Buffer Status Registers */ + + struct + { + __IM uint8_t TMTSTS : 1; /*!< [0..0] TX Message Buffer Transmission Status */ + __IOM uint8_t TMTRF : 2; /*!< [2..1] TX Message Buffer Transmission Result Flag */ + __IM uint8_t TMTRM : 1; /*!< [3..3] TX Message Buffer Transmission Request Mirrored */ + __IM uint8_t TMTARM : 1; /*!< [4..4] TX Message Buffer Transmission abort Request Mirrored */ + uint8_t : 3; + } CFDTMSTS_b[4]; + }; + + union + { + __IM uint32_t CFDTMTRSTS[1]; /*!< (@ 0x00000078) TX Message Buffer Transmission Request Status + * Register */ + + struct + { + __IM uint32_t CFDTMTRSTSg : 4; /*!< [3..0] TX Message Buffer Transmission Request Status */ + uint32_t : 28; + } CFDTMTRSTS_b[1]; + }; + + union + { + __IM uint32_t CFDTMTARSTS[1]; /*!< (@ 0x0000007C) TX Message Buffer Transmission Abort Request + * Status Register */ + + struct + { + __IM uint32_t CFDTMTARSTSg : 4; /*!< [3..0] TX Message Buffer Transmission abort Request Status */ + uint32_t : 28; + } CFDTMTARSTS_b[1]; + }; + + union + { + __IM uint32_t CFDTMTCSTS[1]; /*!< (@ 0x00000080) TX Message Buffer Transmission Completion Status + * Register */ + + struct + { + __IM uint32_t CFDTMTCSTSg : 4; /*!< [3..0] TX Message Buffer Transmission Completion Status */ + uint32_t : 28; + } CFDTMTCSTS_b[1]; + }; + + union + { + __IM uint32_t CFDTMTASTS[1]; /*!< (@ 0x00000084) TX Message Buffer Transmission Abort Status Register */ + + struct + { + __IM uint32_t CFDTMTASTSg : 4; /*!< [3..0] TX Message Buffer Transmission abort Status */ + uint32_t : 28; + } CFDTMTASTS_b[1]; + }; + + union + { + __IOM uint32_t CFDTMIEC[1]; /*!< (@ 0x00000088) TX Message Buffer Interrupt Enable Configuration + * Register */ + + struct + { + __IOM uint32_t TMIEg : 4; /*!< [3..0] TX Message Buffer Interrupt Enable */ + uint32_t : 28; + } CFDTMIEC_b[1]; + }; + + union + { + __IOM uint32_t CFDTXQCC0[1]; /*!< (@ 0x0000008C) TX Queue Configuration / Control Registers 0 */ + + struct + { + __IOM uint32_t TXQE : 1; /*!< [0..0] TX Queue Enable */ + uint32_t : 4; + __IOM uint32_t TXQTXIE : 1; /*!< [5..5] TX Queue TX Interrupt Enable */ + uint32_t : 1; + __IOM uint32_t TXQIM : 1; /*!< [7..7] TX Queue Interrupt Mode */ + __IOM uint32_t TXQDC : 2; /*!< [9..8] TX Queue Depth Configuration */ + uint32_t : 22; + } CFDTXQCC0_b[1]; + }; + + union + { + __IOM uint32_t CFDTXQSTS0[1]; /*!< (@ 0x00000090) TX Queue Status Registers 0 */ + + struct + { + __IM uint32_t TXQEMP : 1; /*!< [0..0] TX Queue Empty */ + __IM uint32_t TXQFLL : 1; /*!< [1..1] TX Queue Full */ + __IOM uint32_t TXQTXIF : 1; /*!< [2..2] TX Queue TX Interrupt Flag */ + uint32_t : 5; + __IM uint32_t TXQMC : 6; /*!< [13..8] TX Queue Message Count */ + uint32_t : 18; + } CFDTXQSTS0_b[1]; + }; + + union + { + __IOM uint32_t CFDTXQPCTR0[1]; /*!< (@ 0x00000094) TX Queue Pointer Control Registers 0 */ + + struct + { + __OM uint32_t TXQPC : 8; /*!< [7..0] TX Queue Pointer Control */ + uint32_t : 24; + } CFDTXQPCTR0_b[1]; + }; + + union + { + __IOM uint32_t CFDTHLCC[1]; /*!< (@ 0x00000098) TX History List Configuration / Control Register */ + + struct + { + __IOM uint32_t THLE : 1; /*!< [0..0] TX History List Enable */ + uint32_t : 7; + __IOM uint32_t THLIE : 1; /*!< [8..8] TX History List Interrupt Enable */ + __IOM uint32_t THLIM : 1; /*!< [9..9] TX History List Interrupt Mode */ + __IOM uint32_t THLDTE : 1; /*!< [10..10] TX History List Dedicated TX Enable */ + uint32_t : 21; + } CFDTHLCC_b[1]; + }; + + union + { + __IOM uint32_t CFDTHLSTS[1]; /*!< (@ 0x0000009C) TX History List Status Register */ + + struct + { + __IM uint32_t THLEMP : 1; /*!< [0..0] TX History List Empty */ + __IM uint32_t THLFLL : 1; /*!< [1..1] TX History List Full */ + __IOM uint32_t THLELT : 1; /*!< [2..2] TX History List Entry Lost */ + __IOM uint32_t THLIF : 1; /*!< [3..3] TX History List Interrupt Flag */ + uint32_t : 4; + __IM uint32_t THLMC : 6; /*!< [13..8] TX History List Message Count */ + uint32_t : 18; + } CFDTHLSTS_b[1]; + }; + + union + { + __IOM uint32_t CFDTHLPCTR[1]; /*!< (@ 0x000000A0) TX History List Pointer Control Registers */ + + struct + { + __OM uint32_t THLPC : 8; /*!< [7..0] TX History List Pointer Control */ + uint32_t : 24; + } CFDTHLPCTR_b[1]; + }; + + union + { + __IOM uint32_t CFDGTINTSTS0; /*!< (@ 0x000000A4) Global TX Interrupt Status Register 0 */ + + struct + { + __IM uint32_t TSIF0 : 1; /*!< [0..0] TX Successful Interrupt Flag Channel 0 */ + __IM uint32_t TAIF0 : 1; /*!< [1..1] TX Abort Interrupt Flag Channel 0 */ + __IM uint32_t TQIF0 : 1; /*!< [2..2] TX Queue Interrupt Flag Channel 0 */ + __IM uint32_t CFTIF0 : 1; /*!< [3..3] COM FIFO TX/GW Mode Interrupt Flag Channel 0 */ + __IM uint32_t THIF0 : 1; /*!< [4..4] TX History List Interrupt Channel 0 */ + uint32_t : 27; + } CFDGTINTSTS0_b; + }; + + union + { + __IOM uint32_t CFDGTSTCFG; /*!< (@ 0x000000A8) Global Test Configuration Register */ + + struct + { + uint32_t : 16; + __IOM uint32_t RTMPS : 10; /*!< [25..16] RAM Test Mode Page Select */ + uint32_t : 6; + } CFDGTSTCFG_b; + }; + + union + { + __IOM uint32_t CFDGTSTCTR; /*!< (@ 0x000000AC) Global Test Control Register */ + + struct + { + uint32_t : 2; + __IOM uint32_t RTME : 1; /*!< [2..2] RAM Test Mode Enable */ + uint32_t : 29; + } CFDGTSTCTR_b; + }; + + union + { + __IOM uint32_t CFDGFDCFG; /*!< (@ 0x000000B0) Global FD Configuration register */ + + struct + { + __IOM uint32_t RPED : 1; /*!< [0..0] RES bit Protocol exception disable */ + uint32_t : 7; + __IOM uint32_t TSCCFG : 2; /*!< [9..8] Timestamp capture configuration */ + uint32_t : 22; + } CFDGFDCFG_b; + }; + __IM uint32_t RESERVED1; + + union + { + __IOM uint32_t CFDGLOCKK; /*!< (@ 0x000000B8) Global Lock Key Register */ + + struct + { + __OM uint32_t LOCK : 16; /*!< [15..0] Lock Key */ + uint32_t : 16; + } CFDGLOCKK_b; + }; + __IM uint32_t RESERVED2; + + union + { + __IOM uint32_t CFDGAFLIGNENT; /*!< (@ 0x000000C0) Global AFL Ignore Entry Register */ + + struct + { + __IOM uint32_t IRN : 5; /*!< [4..0] Ignore Rule Number */ + uint32_t : 27; + } CFDGAFLIGNENT_b; + }; + + union + { + __IOM uint32_t CFDGAFLIGNCTR; /*!< (@ 0x000000C4) Global AFL Ignore Control Register */ + + struct + { + __IOM uint32_t IREN : 1; /*!< [0..0] Ignore Rule Enable */ + uint32_t : 7; + __OM uint32_t KEY : 8; /*!< [15..8] Key code */ + uint32_t : 16; + } CFDGAFLIGNCTR_b; + }; + + union + { + __IOM uint32_t CFDCDTCT; /*!< (@ 0x000000C8) DMA Transfer Control Register */ + + struct + { + __IOM uint32_t RFDMAE0 : 1; /*!< [0..0] DMA Transfer Enable for RXFIFO 0 */ + __IOM uint32_t RFDMAE1 : 1; /*!< [1..1] DMA Transfer Enable for RXFIFO 1 */ + uint32_t : 6; + __IOM uint32_t CFDMAE0 : 1; /*!< [8..8] DMA Transfer Enable for Common FIFO 0 of channel 0 */ + uint32_t : 23; + } CFDCDTCT_b; + }; + + union + { + __IM uint32_t CFDCDTSTS; /*!< (@ 0x000000CC) DMA Transfer Status Register */ + + struct + { + __IM uint32_t RFDMASTS0 : 1; /*!< [0..0] DMA Transfer Status for RX FIFO 0 */ + __IM uint32_t RFDMASTS1 : 1; /*!< [1..1] DMA Transfer Status for RX FIFO 1 */ + uint32_t : 6; + __IM uint32_t CFDMASTS0 : 1; /*!< [8..8] DMA Transfer Status only for Common FIFO 0 of channel + * 0 */ + uint32_t : 23; + } CFDCDTSTS_b; + }; + __IM uint32_t RESERVED3[2]; + + union + { + __IOM uint32_t CFDGRSTC; /*!< (@ 0x000000D8) Global SW reset Register */ + + struct + { + __IOM uint32_t SRST : 1; /*!< [0..0] SW reset */ + uint32_t : 7; + __OM uint32_t KEY : 8; /*!< [15..8] Key code */ + uint32_t : 16; + } CFDGRSTC_b; + }; + __IM uint32_t RESERVED4[9]; + __IOM R_CANFD_CFDC2_Type CFDC2[1]; /*!< (@ 0x00000100) Channel Configuration Registers */ + __IOM R_CANFD_CFDGAFL_Type CFDGAFL[16]; /*!< (@ 0x00000120) Global Acceptance Filter List Registers */ + __IM uint32_t RESERVED5[24]; + + union + { + __IOM uint32_t CFDRPGACC[64]; /*!< (@ 0x00000280) RAM Test Page Access Registers */ + + struct + { + __IOM uint32_t RDTA : 32; /*!< [31..0] RAM Data Test Access */ + } CFDRPGACC_b[64]; + }; + __IM uint32_t RESERVED6[104]; + __IOM R_CANFD_CFDRF_Type CFDRF[2]; /*!< (@ 0x00000520) RX FIFO Access Registers */ + __IOM R_CANFD_CFDCF_Type CFDCF[1]; /*!< (@ 0x000005B8) Common FIFO Access Registers */ + __IOM R_CANFD_CFDTM_Type CFDTM[4]; /*!< (@ 0x00000604) TX Message Buffer Access Registers */ + __IM uint32_t RESERVED7[3]; + __IOM R_CANFD_CFDTHL_Type CFDTHL[1]; /*!< (@ 0x00000740) Channel TX History List */ + __IM uint32_t RESERVED8[118]; + __IOM R_CANFD_CFDRM_Type CFDRM[4]; /*!< (@ 0x00000920) RX Message Buffer Access Clusters */ +} R_CANFD_Type; /*!< Size = 6432 (0x1920) */ + +/* =========================================================================================================================== */ +/* ================ R_CRC ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Cyclic Redundancy Check (CRC) Calculator (R_CRC) + */ + +typedef struct /*!< (@ 0x40310000) R_CRC Structure */ +{ + union + { + __IOM uint8_t CRCCR0; /*!< (@ 0x00000000) CRC Control Register0 */ + + struct + { + __IOM uint8_t GPS : 3; /*!< [2..0] CRC Generating Polynomial Switching */ + uint8_t : 3; + __IOM uint8_t LMS : 1; /*!< [6..6] CRC Calculation Switching */ + __OM uint8_t DORCLR : 1; /*!< [7..7] CRCDOR Register Clear */ + } CRCCR0_b; + }; + + union + { + __IOM uint8_t CRCCR1; /*!< (@ 0x00000001) CRC Control Register1 */ + + struct + { + uint8_t : 6; + __IOM uint8_t CRCSWR : 1; /*!< [6..6] Snoop-on-write/read switch bit */ + __IOM uint8_t CRCSEN : 1; /*!< [7..7] Snoop enable bit */ + } CRCCR1_b; + }; + __IM uint16_t RESERVED; + + union + { + union + { + __IOM uint32_t CRCDIR; /*!< (@ 0x00000004) CRC Data Input Register */ + + struct + { + __IOM uint32_t CRCDIR : 32; /*!< [31..0] Calculation input Data (Case of CRC-32, CRC-32C ) */ + } CRCDIR_b; + }; + + union + { + __IOM uint8_t CRCDIR_BY; /*!< (@ 0x00000004) CRC Data Input Register (byte access) */ + + struct + { + __IOM uint8_t CRCDIR_BY : 8; /*!< [7..0] Calculation input Data ( Case of CRC-8, CRC-16 or CRC-CCITT + * ) */ + } CRCDIR_BY_b; + }; + }; + + union + { + union + { + __IOM uint32_t CRCDOR; /*!< (@ 0x00000008) CRC Data Output Register */ + + struct + { + __IOM uint32_t CRCDOR : 32; /*!< [31..0] Calculation output Data (Case of CRC-32, CRC-32C ) */ + } CRCDOR_b; + }; + + union + { + __IOM uint16_t CRCDOR_HA; /*!< (@ 0x00000008) CRC Data Output Register (halfword access) */ + + struct + { + __IOM uint16_t CRCDOR_HA : 16; /*!< [15..0] Calculation output Data (Case of CRC-16 or CRC-CCITT + * ) */ + } CRCDOR_HA_b; + }; + + union + { + __IOM uint8_t CRCDOR_BY; /*!< (@ 0x00000008) CRC Data Output Register(byte access) */ + + struct + { + __IOM uint8_t CRCDOR_BY : 8; /*!< [7..0] Calculation output Data (Case of CRC-8 ) */ + } CRCDOR_BY_b; + }; + }; + + union + { + __IOM uint16_t CRCSAR; /*!< (@ 0x0000000C) Snoop Address Register */ + + struct + { + __IOM uint16_t CRCSA : 14; /*!< [13..0] snoop address bitSet the I/O register address to snoop */ + uint16_t : 2; + } CRCSAR_b; + }; + __IM uint16_t RESERVED1; +} R_CRC_Type; /*!< Size = 16 (0x10) */ + +/* =========================================================================================================================== */ +/* ================ R_DAC ================ */ +/* =========================================================================================================================== */ + +/** + * @brief D/A Converter (R_DAC) + */ + +typedef struct /*!< (@ 0x40333000) R_DAC Structure */ +{ + union + { + __IOM uint16_t DADR[2]; /*!< (@ 0x00000000) D/A Data Register */ + + struct + { + __IOM uint16_t DADR : 16; /*!< [15..0] D/A Data RegisterNOTE: When DADPR.DPSEL = 0, the high-order + * 4 bits are fixed to 0: right justified format. When DADPR.DPSEL + * = 1, the low-order 4 bits are fixed to 0: left justified + * format. */ + } DADR_b[2]; + }; + + union + { + __IOM uint8_t DACR; /*!< (@ 0x00000004) D/A Control Register */ + + struct + { + uint8_t : 5; + __IOM uint8_t DAE : 1; /*!< [5..5] D/A Enable */ + __IOM uint8_t DAOE0 : 1; /*!< [6..6] D/A Output Enable 0 */ + __IOM uint8_t DAOE1 : 1; /*!< [7..7] D/A Output Enable 0 */ + } DACR_b; + }; + + union + { + __IOM uint8_t DADPR; /*!< (@ 0x00000005) DADR0 Format Select Register */ + + struct + { + uint8_t : 7; + __IOM uint8_t DPSEL : 1; /*!< [7..7] DADRm Format Select */ + } DADPR_b; + }; + + union + { + __IOM uint8_t DAADSCR; /*!< (@ 0x00000006) D/A-A/D Synchronous Start Control Register */ + + struct + { + uint8_t : 7; + __IOM uint8_t DAADST : 1; /*!< [7..7] D/A-A/D Synchronous Conversion */ + } DAADSCR_b; + }; + + union + { + __IOM uint8_t DAVREFCR; /*!< (@ 0x00000007) D/A VREF Control Register */ + + struct + { + __IOM uint8_t REF : 3; /*!< [2..0] D/A Reference Voltage Select */ + uint8_t : 5; + } DAVREFCR_b; + }; + + union + { + __IOM uint8_t DAAMPCR; /*!< (@ 0x00000008) D/A Output Amplifier Control Register */ + + struct + { + uint8_t : 6; + __IOM uint8_t DAAMP0 : 1; /*!< [6..6] Amplifier Control */ + __IOM uint8_t DAAMP1 : 1; /*!< [7..7] Amplifier Control */ + } DAAMPCR_b; + }; + + union + { + __IOM uint8_t DAPC; /*!< (@ 0x00000009) D/A Switch Charge Pump Control Register */ + + struct + { + __IOM uint8_t PUMPEN : 1; /*!< [0..0] Charge Pump Enable */ + uint8_t : 7; + } DAPC_b; + }; + __IM uint16_t RESERVED[9]; + + union + { + __IOM uint8_t DAASWCR; /*!< (@ 0x0000001C) D/A Amplifier Stabilization Wait Control Register */ + + struct + { + uint8_t : 6; + __IOM uint8_t DAASW0 : 1; /*!< [6..6] Set the DAASW0 bit to 1 in the initialization procedure + * to wait for stabilization of the output amplifier of D/A + * channel 0. When DAASW0 is set to 1, D/A conversion operates, + * but the conversion result D/A is not output from channel + * 0. When the DAASW0 bit is 0, the stabilization wait time + * stops, and the D/A conversion result of channel 0 is output + * through the output amplifier. */ + __IOM uint8_t DAASW1 : 1; /*!< [7..7] Set the DAASW1 bit to 1 in the initialization procedure + * to wait for stabilization of the output amplifier of D/A + * channel 1. When DAASW1 is set to 1, D/A conversion operates, + * but the conversion result D/A is not output from channel + * 1. When the DAASW1 bit is 0, the stabilization wait time + * stops, and the D/A conversion result of channel 1 is output + * through the output amplifier. */ + } DAASWCR_b; + }; + __IM uint8_t RESERVED1; + __IM uint16_t RESERVED2[2129]; + + union + { + __IOM uint8_t DAADUSR; /*!< (@ 0x000010C0) D/A A/D Synchronous Unit Select Register */ + + struct + { + __IOM uint8_t AMADSEL0 : 1; /*!< [0..0] The DAADUSR register selects the target ADC12 unit for + * D/A and A/D synchronous conversions. Set bit [0] to 1 to + * select unit 0 as the target synchronous unit for the MCU. + * When setting the DAADSCR.DAADST bit to 1 for synchronous + * conversions, select the target unit in this register in + * advance. Only set the DAADUSR register while the ADCSR.ADST + * bit of the ADC12 is set to 0 and the DAADSCR.DAADST bit + * is set to 0. */ + __IOM uint8_t AMADSEL1 : 1; /*!< [1..1] The DAADUSR register selects the target ADC12 unit for + * D/A and A/D synchronous conversions. Set bit [1] to 1 to + * select unit 1 as the target synchronous unit for the MCU. + * When setting the DAADSCR.DAADST bit to 1 for synchronous + * conversions, select the target unit in this register in + * advance. Only set the DAADUSR register while the ADCSR.ADST + * bit of the ADC12 is set to 0 and the DAADSCR.DAADST bit + * is set to 0. */ + uint8_t : 6; + } DAADUSR_b; + }; + __IM uint8_t RESERVED3; + __IM uint16_t RESERVED4; +} R_DAC_Type; /*!< Size = 4292 (0x10c4) */ + +/* =========================================================================================================================== */ +/* ================ R_DEBUG ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Debug Function (R_DEBUG) + */ + +typedef struct /*!< (@ 0x4001B000) R_DEBUG Structure */ +{ + union + { + __IM uint32_t DBGSTR; /*!< (@ 0x00000000) Debug Status Register */ + + struct + { + uint32_t : 28; + __IM uint32_t CDBGPWRUPREQ : 1; /*!< [28..28] Debug power-up request */ + __IM uint32_t CDBGPWRUPACK : 1; /*!< [29..29] Debug power-up acknowledge */ + uint32_t : 2; + } DBGSTR_b; + }; + __IM uint32_t RESERVED[3]; + + union + { + __IOM uint32_t DBGSTOPCR; /*!< (@ 0x00000010) Debug Stop Control Register */ + + struct + { + __IOM uint32_t DBGSTOP_IWDT : 1; /*!< [0..0] Mask bit for IWDT reset/interrupt */ + __IOM uint32_t DBGSTOP_WDT : 1; /*!< [1..1] Mask bit for WDT reset/interrupt */ + uint32_t : 14; + __IOM uint32_t DBGSTOP_LVD0 : 1; /*!< [16..16] Mask bit for LVD reset/interupt */ + __IOM uint32_t DBGSTOP_LVD1 : 1; /*!< [17..17] Mask bit for LVD reset/interupt */ + __IOM uint32_t DBGSTOP_LVD2 : 1; /*!< [18..18] Mask bit for LVD reset/interupt */ + uint32_t : 5; + __IOM uint32_t DBGSTOP_RPER : 1; /*!< [24..24] Mask bit for SRAM parity error */ + __IOM uint32_t DBGSTOP_RECCR : 1; /*!< [25..25] Mask bit for SRAM ECC error */ + uint32_t : 5; + __IOM uint32_t DBGSTOP_CPER : 1; /*!< [31..31] Mask bit for Cache SRAM parity error reset/interrupt */ + } DBGSTOPCR_b; + }; + __IM uint32_t RESERVED1[123]; + + union + { + __IOM uint32_t FSBLSTAT; /*!< (@ 0x00000200) First Stage Boot Loader Status Register */ + + struct + { + __IOM uint32_t CS : 1; /*!< [0..0] FSBL completion status. */ + __IOM uint32_t RS : 1; /*!< [1..1] FSBL result status. */ + uint32_t : 6; + __IM uint32_t FSBLCLK : 3; /*!< [10..8] System clock frequency selection during FSBL execution */ + uint32_t : 21; + } FSBLSTAT_b; + }; +} R_DEBUG_Type; /*!< Size = 516 (0x204) */ + +/* =========================================================================================================================== */ +/* ================ R_DMA ================ */ +/* =========================================================================================================================== */ + +/** + * @brief DMA Controller Common (R_DMA) + */ + +typedef struct /*!< (@ 0x4000A800) R_DMA Structure */ +{ + union + { + __IOM uint8_t DMAST; /*!< (@ 0x00000000) DMAC Module Activation Register */ + + struct + { + __IOM uint8_t DMST : 1; /*!< [0..0] DMAC Operation Enable */ + uint8_t : 7; + } DMAST_b; + }; + __IM uint8_t RESERVED; + __IM uint16_t RESERVED1; + __IM uint32_t RESERVED2[15]; + + union + { + __IOM uint32_t DMECHR; /*!< (@ 0x00000040) DMAC Error Channel Register */ + + struct + { + __IM uint32_t DMECH : 3; /*!< [2..0] DMAC Error channel */ + uint32_t : 5; + __IM uint32_t DMECHSAM : 1; /*!< [8..8] DMAC Error channel Security Attribution Monitor */ + uint32_t : 7; + __IOM uint32_t DMESTA : 1; /*!< [16..16] DMAC Error Status */ + uint32_t : 15; + } DMECHR_b; + }; + __IM uint32_t RESERVED3[15]; + + union + { + __IOM uint32_t DELSR[8]; /*!< (@ 0x00000080) DMAC Event Link Setting Register */ + + struct + { + __IOM uint32_t DELS : 9; /*!< [8..0] DMAC Event Link Select */ + uint32_t : 7; + __IOM uint32_t IR : 1; /*!< [16..16] Interrupt Status Flag for DMAC NOTE: Writing 1 to the + * IR flag is prohibited. */ + uint32_t : 15; + } DELSR_b[8]; + }; +} R_DMA_Type; /*!< Size = 160 (0xa0) */ + +/* =========================================================================================================================== */ +/* ================ R_DMAC0 ================ */ +/* =========================================================================================================================== */ + +/** + * @brief DMA Controller (R_DMAC0) + */ + +typedef struct /*!< (@ 0x4000A000) R_DMAC0 Structure */ +{ + union + { + __IOM uint32_t DMSAR; /*!< (@ 0x00000000) DMA Source Address Register */ + + struct + { + __IOM uint32_t DMSAR : 32; /*!< [31..0] Specifies the transfer source start address. */ + } DMSAR_b; + }; + + union + { + __IOM uint32_t DMDAR; /*!< (@ 0x00000004) DMA Destination Address Register */ + + struct + { + __IOM uint32_t DMDAR : 32; /*!< [31..0] Specifies the transfer destination start address. */ + } DMDAR_b; + }; + + union + { + __IOM uint32_t DMCRA; /*!< (@ 0x00000008) DMA Transfer Count Register */ + + struct + { + __IOM uint32_t DMCRAL : 16; /*!< [15..0] Lower bits of transfer count */ + __IOM uint32_t DMCRAH : 10; /*!< [25..16] Upper bits of transfer count */ + uint32_t : 6; + } DMCRA_b; + }; + + union + { + __IOM uint32_t DMCRB; /*!< (@ 0x0000000C) DMA Block Transfer Count Register */ + + struct + { + __IOM uint32_t DMCRBL : 16; /*!< [15..0] Functions as a number of block, repeat or repeat-block + * transfer counter. */ + __IOM uint32_t DMCRBH : 16; /*!< [31..16] Specifies the number of block transfer operations or + * repeat transfer operations. */ + } DMCRB_b; + }; + + union + { + __IOM uint16_t DMTMD; /*!< (@ 0x00000010) DMA Transfer Mode Register */ + + struct + { + __IOM uint16_t DCTG : 2; /*!< [1..0] Transfer Request Source Select */ + uint16_t : 6; + __IOM uint16_t SZ : 2; /*!< [9..8] Transfer Data Size Select */ + __IOM uint16_t TKP : 1; /*!< [10..10] Transfer Keeping */ + uint16_t : 1; + __IOM uint16_t DTS : 2; /*!< [13..12] Repeat Area Select */ + __IOM uint16_t MD : 2; /*!< [15..14] Transfer Mode Select */ + } DMTMD_b; + }; + __IM uint8_t RESERVED; + + union + { + __IOM uint8_t DMINT; /*!< (@ 0x00000013) DMA Interrupt Setting Register */ + + struct + { + __IOM uint8_t DARIE : 1; /*!< [0..0] Destination Address Extended Repeat Area Overflow Interrupt + * Enable */ + __IOM uint8_t SARIE : 1; /*!< [1..1] Source Address Extended Repeat Area Overflow Interrupt + * Enable */ + __IOM uint8_t RPTIE : 1; /*!< [2..2] Repeat Size End Interrupt Enable */ + __IOM uint8_t ESIE : 1; /*!< [3..3] Transfer Escape End Interrupt Enable */ + __IOM uint8_t DTIE : 1; /*!< [4..4] Transfer End Interrupt Enable */ + uint8_t : 3; + } DMINT_b; + }; + + union + { + __IOM uint16_t DMAMD; /*!< (@ 0x00000014) DMA Address Mode Register */ + + struct + { + __IOM uint16_t DARA : 5; /*!< [4..0] Destination Address Extended Repeat Area Specifies the + * extended repeat area on the destination address. For details + * on the settings. */ + __IOM uint16_t DADR : 1; /*!< [5..5] Destination Address Update Select After Reload */ + __IOM uint16_t DM : 2; /*!< [7..6] Destination Address Update Mode */ + __IOM uint16_t SARA : 5; /*!< [12..8] Source Address Extended Repeat Area Specifies the extended + * repeat area on the source address. For details on the settings. */ + __IOM uint16_t SADR : 1; /*!< [13..13] Source Address Update Select After Reload */ + __IOM uint16_t SM : 2; /*!< [15..14] Source Address Update Mode */ + } DMAMD_b; + }; + __IM uint16_t RESERVED1; + + union + { + __IOM uint32_t DMOFR; /*!< (@ 0x00000018) DMA Offset Register */ + + struct + { + __IOM uint32_t DMOFR : 32; /*!< [31..0] Specifies the offset when offset addition is selected + * as the address update mode for transfer source or destination. */ + } DMOFR_b; + }; + + union + { + __IOM uint8_t DMCNT; /*!< (@ 0x0000001C) DMA Transfer Enable Register */ + + struct + { + __IOM uint8_t DTE : 1; /*!< [0..0] DMA Transfer Enable */ + uint8_t : 7; + } DMCNT_b; + }; + + union + { + __IOM uint8_t DMREQ; /*!< (@ 0x0000001D) DMA Software Start Register */ + + struct + { + __IOM uint8_t SWREQ : 1; /*!< [0..0] DMA Software Start */ + uint8_t : 3; + __IOM uint8_t CLRS : 1; /*!< [4..4] DMA Software Start Bit Auto Clear Select */ + uint8_t : 3; + } DMREQ_b; + }; + + union + { + __IOM uint8_t DMSTS; /*!< (@ 0x0000001E) DMA Status Register */ + + struct + { + __IOM uint8_t ESIF : 1; /*!< [0..0] Transfer Escape End Interrupt Flag */ + uint8_t : 3; + __IOM uint8_t DTIF : 1; /*!< [4..4] Transfer End Interrupt Flag */ + uint8_t : 2; + __IM uint8_t ACT : 1; /*!< [7..7] DMA Active Flag */ + } DMSTS_b; + }; + __IM uint8_t RESERVED2; + __IOM uint32_t DMSRR; /*!< (@ 0x00000020) DMA Source Reload Address Register */ + __IOM uint32_t DMDRR; /*!< (@ 0x00000024) DMA Destination Reload Address Register */ + + union + { + __IOM uint32_t DMSBS; /*!< (@ 0x00000028) DMA Source Buffer Size Register */ + + struct + { + __IOM uint32_t DMSBSL : 16; /*!< [15..0] Functions as data transfer counter in repeat-block transfer + * mode */ + __IOM uint32_t DMSBSH : 16; /*!< [31..16] Specifies the repeat-area size in repeat-block transfer + * mode */ + } DMSBS_b; + }; + + union + { + __IOM uint32_t DMDBS; /*!< (@ 0x0000002C) DMA Destination Buffer Size Register */ + + struct + { + __IOM uint32_t DMDBSL : 16; /*!< [15..0] Functions as data transfer counter in repeat-block transfer + * mode */ + __IOM uint32_t DMDBSH : 16; /*!< [31..16] Specifies the repeat-area size in repeat-block transfer + * mode */ + } DMDBS_b; + }; + + union + { + __IOM uint8_t DMBWR; /*!< (@ 0x00000030) DMA Bufferable Write Enable Register */ + + struct + { + __IOM uint8_t BWE : 1; /*!< [0..0] Bufferable Write Enable */ + uint8_t : 7; + } DMBWR_b; + }; + __IM uint8_t RESERVED3; + __IM uint16_t RESERVED4; +} R_DMAC0_Type; /*!< Size = 52 (0x34) */ + +/* =========================================================================================================================== */ +/* ================ R_DOC ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Data Operation Circuit (R_DOC) + */ + +typedef struct /*!< (@ 0x40311000) R_DOC Structure */ +{ + union + { + __IOM uint8_t DOCR; /*!< (@ 0x00000000) DOC Control Register */ + + struct + { + __IOM uint8_t OMS : 2; /*!< [1..0] Operating Mode Select */ + __IOM uint8_t DCSEL : 1; /*!< [2..2] Detection Condition Select */ + uint8_t : 2; + __IM uint8_t DOPCF : 1; /*!< [5..5] Data Operation Circuit Flag */ + __IOM uint8_t DOPCFCL : 1; /*!< [6..6] DOPCF Clear */ + uint8_t : 1; + } DOCR_b; + }; + __IM uint8_t RESERVED; + + union + { + __IOM uint16_t DODIR; /*!< (@ 0x00000002) DOC Data Input Register */ + + struct + { + __IOM uint16_t DODIR : 16; /*!< [15..0] 16-bit read-write register in which 16-bit data for + * use in the operations are stored. */ + } DODIR_b; + }; + + union + { + __IOM uint16_t DODSR; /*!< (@ 0x00000004) DOC Data Setting Register */ + + struct + { + __IOM uint16_t DODSR : 16; /*!< [15..0] This register stores 16-bit data for use as a reference + * in data comparison mode. This register also stores the + * results of operations in data addition and data subtraction + * modes. */ + } DODSR_b; + }; +} R_DOC_Type; /*!< Size = 6 (0x6) */ + +/* =========================================================================================================================== */ +/* ================ R_DTC ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Data Transfer Controller (R_DTC) + */ + +typedef struct /*!< (@ 0x4000AC00) R_DTC Structure */ +{ + union + { + __IOM uint8_t DTCCR; /*!< (@ 0x00000000) DTC Control Register */ + + struct + { + uint8_t : 4; + __IOM uint8_t RRS : 1; /*!< [4..4] DTC Transfer Information Read Skip Enable. */ + uint8_t : 3; + } DTCCR_b; + }; + __IM uint8_t RESERVED; + __IM uint16_t RESERVED1; + + union + { + __IOM uint32_t DTCVBR; /*!< (@ 0x00000004) DTC Vector Base Register */ + + struct + { + __IOM uint32_t DTCVBR : 32; /*!< [31..0] DTC Vector Base Address.Note: A value cannot be set + * in the lower-order 10 bits. These bits are fixed to 0. */ + } DTCVBR_b; + }; + __IM uint32_t RESERVED2; + + union + { + __IOM uint8_t DTCST; /*!< (@ 0x0000000C) DTC Module Start Register */ + + struct + { + __IOM uint8_t DTCST : 1; /*!< [0..0] DTC Module Start */ + uint8_t : 7; + } DTCST_b; + }; + __IM uint8_t RESERVED3; + + union + { + __IM uint16_t DTCSTS; /*!< (@ 0x0000000E) DTC Status Register */ + + struct + { + __IM uint16_t VECN : 8; /*!< [7..0] DTC-Activating Vector Number MonitoringThese bits indicate + * the vector number for the activating source when DTC transfer + * is in progress.The value is only valid if DTC transfer + * is in progress (the value of the ACT flag is 1) */ + uint16_t : 7; + __IM uint16_t ACT : 1; /*!< [15..15] DTC Active Flag */ + } DTCSTS_b; + }; + + union + { + __IOM uint8_t DTCCR_SEC; /*!< (@ 0x00000010) DTC Control Register for secure Region */ + + struct + { + uint8_t : 4; + __IOM uint8_t RRSS : 1; /*!< [4..4] DTC Transfer Information Read Skip Enable for Secure */ + uint8_t : 3; + } DTCCR_SEC_b; + }; + __IM uint8_t RESERVED4; + __IM uint16_t RESERVED5; + __IOM uint32_t DTCVBR_SEC; /*!< (@ 0x00000014) DTC Vector Base Register for secure Region */ + __IM uint32_t RESERVED6[2]; + + union + { + __IOM uint32_t DTEVR; /*!< (@ 0x00000020) DTC Error Vector Register */ + + struct + { + __IM uint32_t DTEV : 8; /*!< [7..0] DTC Error Vector Number */ + __IM uint32_t DTEVSAM : 1; /*!< [8..8] DTC Error Vector Number SA Monitor */ + uint32_t : 7; + __IOM uint32_t DTESTA : 1; /*!< [16..16] DTC Error Status Flag */ + uint32_t : 15; + } DTEVR_b; + }; +} R_DTC_Type; /*!< Size = 36 (0x24) */ + +/* =========================================================================================================================== */ +/* ================ R_ELC ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Event Link Controller (R_ELC) + */ + +typedef struct /*!< (@ 0x40201000) R_ELC Structure */ +{ + union + { + __IOM uint8_t ELCR; /*!< (@ 0x00000000) Event Link Controller Register */ + + struct + { + uint8_t : 7; + __IOM uint8_t ELCON : 1; /*!< [7..7] All Event Link Enable */ + } ELCR_b; + }; + __IM uint8_t RESERVED; + __IM uint16_t RESERVED1; + __IOM R_ELC_ELSEGR_Type ELSEGR[2]; /*!< (@ 0x00000004) Event Link Software Event Generation Register */ + __IM uint32_t RESERVED2[6]; + __IOM R_ELC_ELSR_Type ELSR[31]; /*!< (@ 0x00000020) Event Link Setting Register [0..30] */ + __IM uint32_t RESERVED3[17]; + + union + { + __IOM uint32_t ELCSARA; /*!< (@ 0x000000E0) Event Link Controller Security Attribution Register + * A */ + + struct + { + __IOM uint32_t ELCR : 1; /*!< [0..0] Event Link Controller RegisterSecurity Attribution */ + __IOM uint32_t ELSEGR0 : 1; /*!< [1..1] Event Link Software Event Generation Register 0 Security + * Attribution */ + __IOM uint32_t ELSEGR1 : 1; /*!< [2..2] Event Link Software Event Generation Register 1Security + * Attribution */ + uint32_t : 29; + } ELCSARA_b; + }; + + union + { + __IOM uint32_t ELCSARB; /*!< (@ 0x000000E4) Event Link Controller Security Attribution Register + * B */ + + struct + { + __IOM uint32_t ELSR0 : 1; /*!< [0..0] Event Link Setting Register 0 Security Attribution */ + __IOM uint32_t ELSR1 : 1; /*!< [1..1] Event Link Setting Register 1 Security Attribution */ + __IOM uint32_t ELSR2 : 1; /*!< [2..2] Event Link Setting Register 2 Security Attribution */ + __IOM uint32_t ELSR3 : 1; /*!< [3..3] Event Link Setting Register 3 Security Attribution */ + __IOM uint32_t ELSR4 : 1; /*!< [4..4] Event Link Setting Register 4 Security Attribution */ + __IOM uint32_t ELSR5 : 1; /*!< [5..5] Event Link Setting Register 5 Security Attribution */ + __IOM uint32_t ELSR6 : 1; /*!< [6..6] Event Link Setting Register 6 Security Attribution */ + __IOM uint32_t ELSR7 : 1; /*!< [7..7] Event Link Setting Register 7 Security Attribution */ + __IOM uint32_t ELSR8 : 1; /*!< [8..8] Event Link Setting Register 8 Security Attribution */ + __IOM uint32_t ELSR9 : 1; /*!< [9..9] Event Link Setting Register 9 Security Attribution */ + __IOM uint32_t ELSR10 : 1; /*!< [10..10] Event Link Setting Register 10 Security Attribution */ + __IOM uint32_t ELSR11 : 1; /*!< [11..11] Event Link Setting Register 11 Security Attribution */ + __IOM uint32_t ELSR12 : 1; /*!< [12..12] Event Link Setting Register 12 Security Attribution */ + __IOM uint32_t ELSR13 : 1; /*!< [13..13] Event Link Setting Register 13 Security Attribution */ + __IOM uint32_t ELSR14 : 1; /*!< [14..14] Event Link Setting Register 14 Security Attribution */ + __IOM uint32_t ELSR15 : 1; /*!< [15..15] Event Link Setting Register 15 Security Attribution */ + __IOM uint32_t ELSR16 : 1; /*!< [16..16] Event Link Setting Register 16 Security Attribution */ + __IOM uint32_t ELSR17 : 1; /*!< [17..17] Event Link Setting Register 17 Security Attribution */ + uint32_t : 12; + __IOM uint32_t ELSR30 : 1; /*!< [30..30] Event Link Setting Register 30 Security Attribution */ + uint32_t : 1; + } ELCSARB_b; + }; + __IM uint32_t RESERVED4[2]; + + union + { + __IOM uint32_t ELCPARA; /*!< (@ 0x000000F0) Event Link Controller Priviledge Attribution + * Register A */ + + struct + { + __IOM uint32_t ELCR : 1; /*!< [0..0] Event Link Controller Register Priviledge Attribution */ + __IOM uint32_t ELSEGR0 : 1; /*!< [1..1] Event Link Software Event Generation Register 0 Priviledge + * Attribution */ + __IOM uint32_t ELSEGR1 : 1; /*!< [2..2] Event Link Software Event Generation Register 1 Priviledge + * Attribution */ + uint32_t : 29; + } ELCPARA_b; + }; + + union + { + __IOM uint32_t ELCPARB; /*!< (@ 0x000000F4) Event Link Controller Priviledge Attribution + * Register B */ + + struct + { + __IOM uint32_t ELSR0 : 1; /*!< [0..0] Event Link Setting Register 0 Priviledge Attribution */ + __IOM uint32_t ELSR1 : 1; /*!< [1..1] Event Link Setting Register 1 Priviledge Attribution */ + __IOM uint32_t ELSR2 : 1; /*!< [2..2] Event Link Setting Register 2 Priviledge Attribution */ + __IOM uint32_t ELSR3 : 1; /*!< [3..3] Event Link Setting Register 3 Priviledge Attribution */ + __IOM uint32_t ELSR4 : 1; /*!< [4..4] Event Link Setting Register 4 Priviledge Attribution */ + __IOM uint32_t ELSR5 : 1; /*!< [5..5] Event Link Setting Register 5 Priviledge Attribution */ + __IOM uint32_t ELSR6 : 1; /*!< [6..6] Event Link Setting Register 6 Priviledge Attribution */ + __IOM uint32_t ELSR7 : 1; /*!< [7..7] Event Link Setting Register 7 Priviledge Attribution */ + __IOM uint32_t ELSR8 : 1; /*!< [8..8] Event Link Setting Register 8 Priviledge Attribution */ + __IOM uint32_t ELSR9 : 1; /*!< [9..9] Event Link Setting Register 9 Priviledge Attribution */ + __IOM uint32_t ELSR10 : 1; /*!< [10..10] Event Link Setting Register 10 Priviledge Attribution */ + __IOM uint32_t ELSR11 : 1; /*!< [11..11] Event Link Setting Register 11 Priviledge Attribution */ + __IOM uint32_t ELSR12 : 1; /*!< [12..12] Event Link Setting Register 12 Priviledge Attribution */ + __IOM uint32_t ELSR13 : 1; /*!< [13..13] Event Link Setting Register 13 Priviledge Attribution */ + __IOM uint32_t ELSR14 : 1; /*!< [14..14] Event Link Setting Register 14 Priviledge Attribution */ + __IOM uint32_t ELSR15 : 1; /*!< [15..15] Event Link Setting Register 15 Priviledge Attribution */ + __IOM uint32_t ELSR16 : 1; /*!< [16..16] Event Link Setting Register 16 Priviledge Attribution */ + __IOM uint32_t ELSR17 : 1; /*!< [17..17] Event Link Setting Register 17 Priviledge Attribution */ + uint32_t : 12; + __IOM uint32_t ELSR30 : 1; /*!< [30..30] Event Link Setting Register 30 Priviledge Attribution */ + uint32_t : 1; + } ELCPARB_b; + }; +} R_ELC_Type; /*!< Size = 248 (0xf8) */ + +/* =========================================================================================================================== */ +/* ================ R_ETHERC0 ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Ethernet MAC Controller (R_ETHERC0) + */ + +typedef struct /*!< (@ 0x40354100) R_ETHERC0 Structure */ +{ + union + { + __IOM uint32_t ECMR; /*!< (@ 0x00000000) ETHERC Mode Register */ + + struct + { + __IOM uint32_t PRM : 1; /*!< [0..0] Promiscuous Mode */ + __IOM uint32_t DM : 1; /*!< [1..1] Duplex Mode */ + __IOM uint32_t RTM : 1; /*!< [2..2] Bit Rate */ + __IOM uint32_t ILB : 1; /*!< [3..3] Internal Loopback Mode */ + uint32_t : 1; + __IOM uint32_t TE : 1; /*!< [5..5] Transmission Enable */ + __IOM uint32_t RE : 1; /*!< [6..6] Reception Enable */ + uint32_t : 2; + __IOM uint32_t MPDE : 1; /*!< [9..9] Magic Packet Detection Enable */ + uint32_t : 2; + __IOM uint32_t PRCEF : 1; /*!< [12..12] CRC Error Frame Receive Mode */ + uint32_t : 3; + __IOM uint32_t TXF : 1; /*!< [16..16] Transmit Flow Control Operating Mode */ + __IOM uint32_t RXF : 1; /*!< [17..17] Receive Flow Control Operating Mode */ + __IOM uint32_t PFR : 1; /*!< [18..18] PAUSE Frame Receive Mode */ + __IOM uint32_t ZPF : 1; /*!< [19..19] 0 Time PAUSE Frame Enable */ + __IOM uint32_t TPC : 1; /*!< [20..20] PAUSE Frame Transmit */ + uint32_t : 11; + } ECMR_b; + }; + __IM uint32_t RESERVED; + + union + { + __IOM uint32_t RFLR; /*!< (@ 0x00000008) Receive Frame Maximum Length Register */ + + struct + { + __IOM uint32_t RFL : 12; /*!< [11..0] Receive Frame Maximum LengthThe set value becomes the + * maximum frame length. The minimum value that can be set + * is 1,518 bytes, and the maximum value that can be set is + * 2,048 bytes. Values that are less than 1,518 bytes are + * regarded as 1,518 bytes, and values larger than 2,048 bytes + * are regarded as 2,048 bytes. */ + uint32_t : 20; + } RFLR_b; + }; + __IM uint32_t RESERVED1; + + union + { + __IOM uint32_t ECSR; /*!< (@ 0x00000010) ETHERC Status Register */ + + struct + { + __IOM uint32_t ICD : 1; /*!< [0..0] False Carrier Detect Flag */ + __IOM uint32_t MPD : 1; /*!< [1..1] Magic Packet Detect Flag */ + __IOM uint32_t LCHNG : 1; /*!< [2..2] LCHNG Link Signal Change Flag */ + uint32_t : 1; + __IOM uint32_t PSRTO : 1; /*!< [4..4] PAUSE Frame Retransmit Over Flag */ + __IOM uint32_t BFR : 1; /*!< [5..5] Continuous Broadcast Frame Reception Flag */ + uint32_t : 26; + } ECSR_b; + }; + __IM uint32_t RESERVED2; + + union + { + __IOM uint32_t ECSIPR; /*!< (@ 0x00000018) ETHERC Interrupt Enable Register */ + + struct + { + __IOM uint32_t ICDIP : 1; /*!< [0..0] False Carrier Detect Interrupt Enable */ + __IOM uint32_t MPDIP : 1; /*!< [1..1] Magic Packet Detect Interrupt Enable */ + __IOM uint32_t LCHNGIP : 1; /*!< [2..2] LINK Signal Change Interrupt Enable */ + uint32_t : 1; + __IOM uint32_t PSRTOIP : 1; /*!< [4..4] PAUSE Frame Retransmit Over Interrupt Enable */ + __IOM uint32_t BFSIPR : 1; /*!< [5..5] Continuous Broadcast Frame Reception Interrupt Enable */ + uint32_t : 26; + } ECSIPR_b; + }; + __IM uint32_t RESERVED3; + + union + { + __IOM uint32_t PIR; /*!< (@ 0x00000020) PHY Interface Register */ + + struct + { + __IOM uint32_t MDC : 1; /*!< [0..0] MII/RMII Management Data ClockThe MDC bit value is output + * from the ETn_MDC pin to supply the management data clock + * to the MII or RMII. */ + __IOM uint32_t MMD : 1; /*!< [1..1] MII/RMII Management Mode */ + __IOM uint32_t MDO : 1; /*!< [2..2] MII/RMII Management Data-OutThe MDO bit value is output + * from the ETn_MDIO pin when the MMD bit is 1 (write). The + * value is not output when the MMD bit is 0 (read). */ + __IM uint32_t MDI : 1; /*!< [3..3] MII/RMII Management Data-InThis bit indicates the level + * of the ETn_MDIO pin. The write value should be 0. */ + uint32_t : 28; + } PIR_b; + }; + __IM uint32_t RESERVED4; + + union + { + __IM uint32_t PSR; /*!< (@ 0x00000028) PHY Status Register */ + + struct + { + __IM uint32_t LMON : 1; /*!< [0..0] ETn_LINKSTA Pin Status FlagThe link status can be read + * by connecting the link signal output from the PHY-LSI to + * the ETn_LINKSTA pin. For details on the polarity, refer + * to the specifications of the connected PHY-LSI. */ + uint32_t : 31; + } PSR_b; + }; + __IM uint32_t RESERVED5[5]; + + union + { + __IOM uint32_t RDMLR; /*!< (@ 0x00000040) Random Number Generation Counter Upper Limit + * Setting Register */ + + struct + { + __IOM uint32_t RMD : 20; /*!< [19..0] Random Number Generation Counter */ + uint32_t : 12; + } RDMLR_b; + }; + __IM uint32_t RESERVED6[3]; + + union + { + __IOM uint32_t IPGR; /*!< (@ 0x00000050) IPG Register */ + + struct + { + __IOM uint32_t IPG : 5; /*!< [4..0] Interpacket Gap Range:'16bit time(0x00)'-'140bit time(0x1F)' */ + uint32_t : 27; + } IPGR_b; + }; + + union + { + __IOM uint32_t APR; /*!< (@ 0x00000054) Automatic PAUSE Frame Register */ + + struct + { + __IOM uint32_t AP : 16; /*!< [15..0] Automatic PAUSE Time SettingThese bits set the value + * of the pause_time parameter for a PAUSE frame that is automatically + * transmitted. Transmission is not performed until the set + * value multiplied by 512 bit time has elapsed. */ + uint32_t : 16; + } APR_b; + }; + + union + { + __OM uint32_t MPR; /*!< (@ 0x00000058) Manual PAUSE Frame Register */ + + struct + { + __OM uint32_t MP : 16; /*!< [15..0] Manual PAUSE Time SettingThese bits set the value of + * the pause_time parameter for a PAUSE frame that is manually + * transmitted. Transmission is not performed until the set + * value multiplied by 512 bit time has elapsed. The read + * value is undefined. */ + uint32_t : 16; + } MPR_b; + }; + __IM uint32_t RESERVED7; + + union + { + __IM uint32_t RFCF; /*!< (@ 0x00000060) Received PAUSE Frame Counter */ + + struct + { + __IM uint32_t RPAUSE : 8; /*!< [7..0] Received PAUSE Frame CountNumber of received PAUSE frames */ + uint32_t : 24; + } RFCF_b; + }; + + union + { + __IOM uint32_t TPAUSER; /*!< (@ 0x00000064) PAUSE Frame Retransmit Count Setting Register */ + + struct + { + __IOM uint32_t TPAUSE : 16; /*!< [15..0] Automatic PAUSE Frame Retransmit Setting */ + uint32_t : 16; + } TPAUSER_b; + }; + __IM uint32_t TPAUSECR; /*!< (@ 0x00000068) PAUSE Frame Retransmit Counter */ + + union + { + __IOM uint32_t BCFRR; /*!< (@ 0x0000006C) Broadcast Frame Receive Count Setting Register */ + + struct + { + __IOM uint32_t BCF : 16; /*!< [15..0] Broadcast Frame Continuous Receive Count Setting */ + uint32_t : 16; + } BCFRR_b; + }; + __IM uint32_t RESERVED8[20]; + + union + { + __IOM uint32_t MAHR; /*!< (@ 0x000000C0) MAC Address Upper Bit Register */ + + struct + { + __IOM uint32_t MAHR : 32; /*!< [31..0] MAC Address Upper Bit RegisterThe MAHR register sets + * the upper 32 bits (b47 to b16) of the 48-bit MAC address. */ + } MAHR_b; + }; + __IM uint32_t RESERVED9; + + union + { + __IOM uint32_t MALR; /*!< (@ 0x000000C8) MAC Address Lower Bit Register */ + + struct + { + __IOM uint32_t MALR : 16; /*!< [15..0] MAC Address Lower Bit RegisterThe MALR register sets + * the lower 16 bits of the 48-bit MAC address. */ + uint32_t : 16; + } MALR_b; + }; + __IM uint32_t RESERVED10; + + union + { + __IOM uint32_t TROCR; /*!< (@ 0x000000D0) Transmit Retry Over Counter Register */ + + struct + { + __IOM uint32_t TROCR : 32; /*!< [31..0] Transmit Retry Over Counter RegisterThe TROCR register + * is a counter indicating the number of frames that fail + * to be retransmitted. */ + } TROCR_b; + }; + __IOM uint32_t CDCR; /*!< (@ 0x000000D4) Late Collision Detect Counter Register */ + + union + { + __IOM uint32_t LCCR; /*!< (@ 0x000000D8) Lost Carrier Counter Register */ + + struct + { + __IOM uint32_t LCCR : 32; /*!< [31..0] Lost Carrier Counter RegisterThe LCCR register is a + * counter indicating the number of times a loss of carrier + * is detected during frame transmission. */ + } LCCR_b; + }; + + union + { + __IOM uint32_t CNDCR; /*!< (@ 0x000000DC) Carrier Not Detect Counter Register */ + + struct + { + __IOM uint32_t CNDCR : 32; /*!< [31..0] Carrier Not Detect Counter RegisterThe CNDCR register + * is a counter indicating the number of times a carrier is + * not detected during preamble transmission. */ + } CNDCR_b; + }; + __IM uint32_t RESERVED11; + + union + { + __IOM uint32_t CEFCR; /*!< (@ 0x000000E4) CRC Error Frame Receive Counter Register */ + + struct + { + __IOM uint32_t CEFCR : 32; /*!< [31..0] CRC Error Frame Receive Counter RegisterThe CEFCR register + * is a counter indicating the number of received frames where + * a CRC error has been detected. */ + } CEFCR_b; + }; + + union + { + __IOM uint32_t FRECR; /*!< (@ 0x000000E8) Frame Receive Error Counter Register */ + + struct + { + __IOM uint32_t FRECR : 32; /*!< [31..0] Frame Receive Error Counter RegisterThe FRECR register + * is a counter indicating the number of times a frame receive + * error has occurred. */ + } FRECR_b; + }; + + union + { + __IOM uint32_t TSFRCR; /*!< (@ 0x000000EC) Too-Short Frame Receive Counter Register */ + + struct + { + __IOM uint32_t TSFRCR : 32; /*!< [31..0] Too-Short Frame Receive Counter RegisterThe TSFRCR register + * is a counter indicating the number of times a short frame + * that is shorter than 64 bytes has been received. */ + } TSFRCR_b; + }; + + union + { + __IOM uint32_t TLFRCR; /*!< (@ 0x000000F0) Too-Long Frame Receive Counter Register */ + + struct + { + __IOM uint32_t TLFRCR : 32; /*!< [31..0] Too-Long Frame Receive Counter RegisterThe TLFRCR register + * is a counter indicating the number of times a long frame + * that is longer than the RFLR register value has been received. */ + } TLFRCR_b; + }; + + union + { + __IOM uint32_t RFCR; /*!< (@ 0x000000F4) Received Alignment Error Frame Counter Register */ + + struct + { + __IOM uint32_t RFCR : 32; /*!< [31..0] Received Alignment Error Frame Counter RegisterThe RFCR + * register is a counter indicating the number of times a + * frame has been received with the alignment error (frame + * is not an integral number of octets). */ + } RFCR_b; + }; + + union + { + __IOM uint32_t MAFCR; /*!< (@ 0x000000F8) Multicast Address Frame Receive Counter Register */ + + struct + { + __IOM uint32_t MAFCR : 32; /*!< [31..0] Multicast Address Frame Receive Counter RegisterThe + * MAFCR register is a counter indicating the number of times + * a frame where the multicast address is set has been received. */ + } MAFCR_b; + }; +} R_ETHERC0_Type; /*!< Size = 252 (0xfc) */ + +/* =========================================================================================================================== */ +/* ================ R_ETHERC_EDMAC ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Ethernet DMA Controller (R_ETHERC_EDMAC) + */ + +typedef struct /*!< (@ 0x40354000) R_ETHERC_EDMAC Structure */ +{ + union + { + __IOM uint32_t EDMR; /*!< (@ 0x00000000) EDMAC Mode Register */ + + struct + { + __OM uint32_t SWR : 1; /*!< [0..0] Software Reset */ + uint32_t : 3; + __IOM uint32_t DL : 2; /*!< [5..4] Transmit/Receive DescriptorLength */ + __IOM uint32_t DE : 1; /*!< [6..6] Big Endian Mode/Little Endian ModeNOTE: This setting + * applies to data for the transmit/receive buffer. It does + * not apply to transmit/receive descriptors and registers. */ + uint32_t : 25; + } EDMR_b; + }; + __IM uint32_t RESERVED; + + union + { + __IOM uint32_t EDTRR; /*!< (@ 0x00000008) EDMAC Transmit Request Register */ + + struct + { + __OM uint32_t TR : 1; /*!< [0..0] Transmit Request */ + uint32_t : 31; + } EDTRR_b; + }; + __IM uint32_t RESERVED1; + + union + { + __IOM uint32_t EDRRR; /*!< (@ 0x00000010) EDMAC Receive Request Register */ + + struct + { + __IOM uint32_t RR : 1; /*!< [0..0] Receive Request */ + uint32_t : 31; + } EDRRR_b; + }; + __IM uint32_t RESERVED2; + + union + { + __IOM uint32_t TDLAR; /*!< (@ 0x00000018) Transmit Descriptor List Start Address Register */ + + struct + { + __IOM uint32_t TDLAR : 32; /*!< [31..0] The start address of the transmit descriptor list is + * set. Set the start address according to the descriptor + * length selected by the EDMR.DL[1:0] bits.16-byte boundary: + * Lower 4 bits = 0000b32-byte boundary: Lower 5 bits = 00000b64-byte + * boundary: Lower 6 bits = 000000b */ + } TDLAR_b; + }; + __IM uint32_t RESERVED3; + + union + { + __IOM uint32_t RDLAR; /*!< (@ 0x00000020) Receive Descriptor List Start Address Register */ + + struct + { + __IOM uint32_t RDLAR : 32; /*!< [31..0] The start address of the receive descriptor list is + * set. Set the start address according to the descriptor + * length selected by the EDMR.DL[1:0] bits.16-byte boundary: + * Lower 4 bits = 0000b32-byte boundary: Lower 5 bits = 00000b64-byte + * boundary: Lower 6 bits = 000000b */ + } RDLAR_b; + }; + __IM uint32_t RESERVED4; + + union + { + __IOM uint32_t EESR; /*!< (@ 0x00000028) ETHERC/EDMAC Status Register */ + + struct + { + __IOM uint32_t CERF : 1; /*!< [0..0] CRC Error Flag */ + __IOM uint32_t PRE : 1; /*!< [1..1] PHY-LSI Receive Error Flag */ + __IOM uint32_t RTSF : 1; /*!< [2..2] Frame-Too-Short Error Flag */ + __IOM uint32_t RTLF : 1; /*!< [3..3] Frame-Too-Long Error Flag */ + __IOM uint32_t RRF : 1; /*!< [4..4] Alignment Error Flag */ + uint32_t : 2; + __IOM uint32_t RMAF : 1; /*!< [7..7] Multicast Address Frame Receive Flag */ + __IOM uint32_t TRO : 1; /*!< [8..8] Transmit Retry Over Flag */ + __IOM uint32_t CD : 1; /*!< [9..9] Late Collision Detect Flag */ + __IOM uint32_t DLC : 1; /*!< [10..10] Loss of Carrier Detect Flag */ + __IOM uint32_t CND : 1; /*!< [11..11] Carrier Not Detect Flag */ + uint32_t : 4; + __IOM uint32_t RFOF : 1; /*!< [16..16] Receive FIFO Overflow Flag */ + __IOM uint32_t RDE : 1; /*!< [17..17] Receive Descriptor Empty Flag */ + __IOM uint32_t FR : 1; /*!< [18..18] Frame Receive Flag */ + __IOM uint32_t TFUF : 1; /*!< [19..19] Transmit FIFO Underflow Flag */ + __IOM uint32_t TDE : 1; /*!< [20..20] Transmit Descriptor Empty Flag */ + __IOM uint32_t TC : 1; /*!< [21..21] Frame Transfer Complete Flag */ + __IM uint32_t ECI : 1; /*!< [22..22] ETHERC Status Register Source FlagNOTE: When the source + * in the ETHERCn.ECSR register is cleared, the ECI flag is + * also cleared. */ + __IOM uint32_t ADE : 1; /*!< [23..23] Address Error Flag */ + __IOM uint32_t RFCOF : 1; /*!< [24..24] Receive Frame Counter Overflow Flag */ + __IOM uint32_t RABT : 1; /*!< [25..25] Receive Abort Detect Flag */ + __IOM uint32_t TABT : 1; /*!< [26..26] Transmit Abort Detect Flag */ + uint32_t : 3; + __IOM uint32_t TWB : 1; /*!< [30..30] Write-Back Complete Flag */ + uint32_t : 1; + } EESR_b; + }; + __IM uint32_t RESERVED5; + + union + { + __IOM uint32_t EESIPR; /*!< (@ 0x00000030) ETHERC/EDMAC Status Interrupt Enable Register */ + + struct + { + __IOM uint32_t CERFIP : 1; /*!< [0..0] CRC Error Interrupt Request Enable */ + __IOM uint32_t PREIP : 1; /*!< [1..1] PHY-LSI Receive Error Interrupt Request Enable */ + __IOM uint32_t RTSFIP : 1; /*!< [2..2] Frame-Too-Short Error Interrupt Request Enable */ + __IOM uint32_t RTLFIP : 1; /*!< [3..3] Frame-Too-Long Error Interrupt Request Enable */ + __IOM uint32_t RRFIP : 1; /*!< [4..4] Alignment Error Interrupt Request Enable */ + uint32_t : 2; + __IOM uint32_t RMAFIP : 1; /*!< [7..7] Multicast Address Frame Receive Interrupt Request Enable */ + __IOM uint32_t TROIP : 1; /*!< [8..8] Transmit Retry Over Interrupt Request Enable */ + __IOM uint32_t CDIP : 1; /*!< [9..9] Late Collision Detect Interrupt Request Enable */ + __IOM uint32_t DLCIP : 1; /*!< [10..10] Loss of Carrier Detect Interrupt Request Enable */ + __IOM uint32_t CNDIP : 1; /*!< [11..11] Carrier Not Detect Interrupt Request Enable */ + uint32_t : 4; + __IOM uint32_t RFOFIP : 1; /*!< [16..16] Receive FIFO Overflow Interrupt Request Enable */ + __IOM uint32_t RDEIP : 1; /*!< [17..17] Receive Descriptor Empty Interrupt Request Enable */ + __IOM uint32_t FRIP : 1; /*!< [18..18] Frame Receive Interrupt Request Enable */ + __IOM uint32_t TFUFIP : 1; /*!< [19..19] Transmit FIFO Underflow Interrupt Request Enable */ + __IOM uint32_t TDEIP : 1; /*!< [20..20] Transmit Descriptor Empty Interrupt Request Enable */ + __IOM uint32_t TCIP : 1; /*!< [21..21] Frame Transfer Complete Interrupt Request Enable */ + __IOM uint32_t ECIIP : 1; /*!< [22..22] ETHERC Status Register Source Interrupt Request Enable */ + __IOM uint32_t ADEIP : 1; /*!< [23..23] Address Error Interrupt Request Enable */ + __IOM uint32_t RFCOFIP : 1; /*!< [24..24] Receive Frame Counter Overflow Interrupt Request Enable */ + __IOM uint32_t RABTIP : 1; /*!< [25..25] Receive Abort Detect Interrupt Request Enable */ + __IOM uint32_t TABTIP : 1; /*!< [26..26] Transmit Abort Detect Interrupt Request Enable */ + uint32_t : 3; + __IOM uint32_t TWBIP : 1; /*!< [30..30] Write-Back Complete Interrupt Request Enable */ + uint32_t : 1; + } EESIPR_b; + }; + __IM uint32_t RESERVED6; + + union + { + __IOM uint32_t TRSCER; /*!< (@ 0x00000038) ETHERC/EDMAC Transmit/Receive Status Copy Enable + * Register */ + + struct + { + uint32_t : 4; + __IOM uint32_t RRFCE : 1; /*!< [4..4] RRF Flag Copy Enable */ + uint32_t : 2; + __IOM uint32_t RMAFCE : 1; /*!< [7..7] RMAF Flag Copy Enable */ + uint32_t : 24; + } TRSCER_b; + }; + __IM uint32_t RESERVED7; + + union + { + __IOM uint32_t RMFCR; /*!< (@ 0x00000040) Missed-Frame Counter Register */ + + struct + { + __IOM uint32_t MFC : 16; /*!< [15..0] Missed-Frame CounterThese bits indicate the number of + * frames that are discarded and not transferred to the receive + * buffer during reception. */ + uint32_t : 16; + } RMFCR_b; + }; + __IM uint32_t RESERVED8; + + union + { + __IOM uint32_t TFTR; /*!< (@ 0x00000048) Transmit FIFO Threshold Register */ + + struct + { + __IOM uint32_t TFT : 11; /*!< [10..0] Transmit FIFO Threshold00Dh to 200h: The threshold is + * the set value multiplied by 4. Example: 00Dh: 52 bytes + * 040h: 256 bytes 100h: 1024 bytes 200h: 2048 bytes */ + uint32_t : 21; + } TFTR_b; + }; + __IM uint32_t RESERVED9; + + union + { + __IOM uint32_t FDR; /*!< (@ 0x00000050) Transmit FIFO Threshold Register */ + + struct + { + __IOM uint32_t RFD : 5; /*!< [4..0] Transmit FIFO Depth */ + uint32_t : 3; + __IOM uint32_t TFD : 5; /*!< [12..8] Receive FIFO Depth */ + uint32_t : 19; + } FDR_b; + }; + __IM uint32_t RESERVED10; + + union + { + __IOM uint32_t RMCR; /*!< (@ 0x00000058) Receive Method Control Register */ + + struct + { + __IOM uint32_t RNR : 1; /*!< [0..0] Receive Request Reset */ + uint32_t : 31; + } RMCR_b; + }; + __IM uint32_t RESERVED11[2]; + + union + { + __IOM uint32_t TFUCR; /*!< (@ 0x00000064) Transmit FIFO Underflow Counter */ + + struct + { + __IOM uint32_t UNDER : 16; /*!< [15..0] Transmit FIFO Underflow CountThese bits indicate how + * many times the transmit FIFO has underflowed. The counter + * stops when the counter value reaches FFFFh. */ + uint32_t : 16; + } TFUCR_b; + }; + + union + { + __IOM uint32_t RFOCR; /*!< (@ 0x00000068) Receive FIFO Overflow Counter */ + + struct + { + __IOM uint32_t OVER : 16; /*!< [15..0] Receive FIFO Overflow CountThese bits indicate how many + * times the receive FIFO has overflowed. The counter stops + * when the counter value reaches FFFFh. */ + uint32_t : 16; + } RFOCR_b; + }; + + union + { + __IOM uint32_t IOSR; /*!< (@ 0x0000006C) Independent Output Signal Setting Register */ + + struct + { + __IOM uint32_t ELB : 1; /*!< [0..0] External Loopback Mode */ + uint32_t : 31; + } IOSR_b; + }; + + union + { + __IOM uint32_t FCFTR; /*!< (@ 0x00000070) Flow Control Start FIFO Threshold Setting Register */ + + struct + { + __IOM uint32_t RFDO : 3; /*!< [2..0] Receive FIFO Data PAUSE Output Threshold(When (RFDO+1)x256-32 + * bytes of data is stored in the receive FIFO.) */ + uint32_t : 13; + __IOM uint32_t RFFO : 3; /*!< [18..16] Receive FIFO Frame PAUSE Output Threshold(When ((RFFO+1)x2) + * receive frames have been stored in the receive FIFO.) */ + uint32_t : 13; + } FCFTR_b; + }; + __IM uint32_t RESERVED12; + + union + { + __IOM uint32_t RPADIR; /*!< (@ 0x00000078) Receive Data Padding Insert Register */ + + struct + { + __IOM uint32_t PADR : 6; /*!< [5..0] Padding Slot */ + uint32_t : 10; + __IOM uint32_t PADS : 2; /*!< [17..16] Padding Size */ + uint32_t : 14; + } RPADIR_b; + }; + + union + { + __IOM uint32_t TRIMD; /*!< (@ 0x0000007C) Transmit Interrupt Setting Register */ + + struct + { + __IOM uint32_t TIS : 1; /*!< [0..0] Transmit Interrupt EnableSet the EESR.TWB flag to 1 in + * the mode selected by the TIM bit to notify an interrupt. */ + uint32_t : 3; + __IOM uint32_t TIM : 1; /*!< [4..4] Transmit Interrupt Mode */ + uint32_t : 27; + } TRIMD_b; + }; + __IM uint32_t RESERVED13[18]; + + union + { + __IOM uint32_t RBWAR; /*!< (@ 0x000000C8) Receive Buffer Write Address Register */ + + struct + { + __IM uint32_t RBWAR : 32; /*!< [31..0] Receive Buffer Write Address RegisterThe RBWAR register + * indicates the last address that the EDMAC has written data + * to when writing to the receive buffer.Refer to the address + * indicated by the RBWAR register to recognize which address + * in the receive buffer the EDMAC is writing data to. Note + * that the address that the EDMAC is outputting to the receive + * buffer may not match the read value of the RBWAR register + * during data reception. */ + } RBWAR_b; + }; + + union + { + __IOM uint32_t RDFAR; /*!< (@ 0x000000CC) Receive Descriptor Fetch Address Register */ + + struct + { + __IM uint32_t RDFAR : 32; /*!< [31..0] Receive Descriptor Fetch Address RegisterThe RDFAR register + * indicates the start address of the last fetched receive + * descriptor when the EDMAC fetches descriptor information + * from the receive descriptor.Refer to the address indicated + * by the RDFAR register to recognize which receive descriptor + * information the EDMAC is using for the current processing. + * Note that the address of the receive descriptor that the + * EDMAC fetches may not match the read value of the RDFAR + * register during data reception. */ + } RDFAR_b; + }; + __IM uint32_t RESERVED14; + + union + { + __IOM uint32_t TBRAR; /*!< (@ 0x000000D4) Transmit Buffer Read Address Register */ + + struct + { + __IM uint32_t TBRAR : 32; /*!< [31..0] Transmit Buffer Read Address RegisterThe TBRAR register + * indicates the last address that the EDMAC has read data + * from when reading data from the transmit buffer.Refer to + * the address indicated by the TBRAR register to recognize + * which address in the transmit buffer the EDMAC is reading + * from. Note that the address that the EDMAC is outputting + * to the transmit buffer may not match the read value of + * the TBRAR register. */ + } TBRAR_b; + }; + + union + { + __IM uint32_t TDFAR; /*!< (@ 0x000000D8) Transmit Descriptor Fetch Address Register */ + + struct + { + __IM uint32_t TDFAR : 32; /*!< [31..0] Transmit Descriptor Fetch Address RegisterThe TDFAR + * register indicates the start address of the last fetched + * transmit descriptor when the EDMAC fetches descriptor information + * from the transmit descriptor.Refer to the address indicated + * by the TDFAR register to recognize which transmit descriptor + * information the EDMAC is using for the current processing. + * Note that the address of the transmit descriptor that the + * EDMAC fetches may not match the read value of the TDFAR + * register. */ + } TDFAR_b; + }; +} R_ETHERC_EDMAC_Type; /*!< Size = 220 (0xdc) */ + +/* =========================================================================================================================== */ +/* ================ R_FACI_HP_CMD ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Flash Application Command Interface Command-Issuing Area (R_FACI_HP_CMD) + */ + +typedef struct /*!< (@ 0x40100000) R_FACI_HP_CMD Structure */ +{ + union + { + __IOM uint16_t FACI_CMD16; /*!< (@ 0x00000000) FACI Command Issuing Area (halfword access) */ + __IOM uint8_t FACI_CMD8; /*!< (@ 0x00000000) FACI Command Issuing Area (halfword access) */ + }; +} R_FACI_HP_CMD_Type; /*!< Size = 2 (0x2) */ + +/* =========================================================================================================================== */ +/* ================ R_FACI_HP ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Flash Application Command Interface (R_FACI_HP) + */ + +typedef struct /*!< (@ 0x4011E000) R_FACI_HP Structure */ +{ + __IM uint32_t RESERVED[4]; + + union + { + __IOM uint8_t FASTAT; /*!< (@ 0x00000010) Flash Access Status */ + + struct + { + uint8_t : 3; + __IOM uint8_t DFAE : 1; /*!< [3..3] Data Flash Access Error */ + __IM uint8_t CMDLK : 1; /*!< [4..4] Command Lock */ + uint8_t : 2; + __IOM uint8_t CFAE : 1; /*!< [7..7] Code Flash Access Error */ + } FASTAT_b; + }; + __IM uint8_t RESERVED1; + __IM uint16_t RESERVED2; + + union + { + __IOM uint8_t FAEINT; /*!< (@ 0x00000014) Flash Access Error Interrupt Enable */ + + struct + { + uint8_t : 3; + __IOM uint8_t DFAEIE : 1; /*!< [3..3] Data Flash Access Error Interrupt Enable */ + __IOM uint8_t CMDLKIE : 1; /*!< [4..4] Command Lock Interrupt Enable */ + uint8_t : 2; + __IOM uint8_t CFAEIE : 1; /*!< [7..7] Code Flash Access Error Interrupt Enable */ + } FAEINT_b; + }; + __IM uint8_t RESERVED3; + __IM uint16_t RESERVED4; + + union + { + __IOM uint8_t FRDYIE; /*!< (@ 0x00000018) Flash Ready Interrupt Enable */ + + struct + { + __IOM uint8_t FRDYIE : 1; /*!< [0..0] FRDY Interrupt Enable */ + uint8_t : 7; + } FRDYIE_b; + }; + __IM uint8_t RESERVED5; + __IM uint16_t RESERVED6; + __IM uint32_t RESERVED7[5]; + + union + { + __IOM uint32_t FSADDR; /*!< (@ 0x00000030) Flash Start Address */ + + struct + { + __IOM uint32_t FSA : 32; /*!< [31..0] Start Address of Flash Sequencer Command Target Area + * These bits can be written when FRDY bit of FSTATR register + * is '1'. Writing to these bits in FRDY = '0' is ignored. */ + } FSADDR_b; + }; + + union + { + __IOM uint32_t FEADDR; /*!< (@ 0x00000034) Flash End Address */ + + struct + { + __IOM uint32_t FEA : 32; /*!< [31..0] End Address of Flash Sequencer Command Target Area Specifies + * end address of target area in 'Blank Check' command. These + * bits can be written when FRDY bit of FSTATR register is + * '1'. Writing to these bits in FRDY = '0' is ignored. */ + } FEADDR_b; + }; + __IM uint32_t RESERVED8[3]; + + union + { + __IOM uint16_t FMEPROT; /*!< (@ 0x00000044) Flash P/E Mode Entry Protection Register */ + + struct + { + __IOM uint16_t CEPROT : 1; /*!< [0..0] Code Flash P/E Mode Entry ProtectionWriting to this bit + * is only possible when the FRDY bit in the FSTATR register + * is 1. Writing to this bit while the FRDY bit = 0 isignored.Writing + * to this bit is only possible when 16 bits are written and + * the value written to the KEY bits is D9h.Written values + * are not retained by these bits (always read as 0x00).Only + * secure access can write to this register. Both secure access + * and non-secure read access are allowed. Non-secure writeaccess + * is denied, but TrustZo */ + uint16_t : 7; + __OM uint16_t KEY : 8; /*!< [15..8] KEY Code */ + } FMEPROT_b; + }; + __IM uint16_t RESERVED9; + __IM uint32_t RESERVED10[12]; + + union + { + __IOM uint16_t FBPROT0; /*!< (@ 0x00000078) Flash Block Protection Register */ + + struct + { + __IOM uint16_t BPCN0 : 1; /*!< [0..0] Block Protection for Non-secure CancelThis bit can be + * written when the FRDY bit in the FSTATR register is 1. + * Writing to this bit is ignored when the FRDY bit is 0.Writing + * to this bit is only possible when 16 bits are written and + * the value written to the KEY[7:0] bits is 0x78.Written + * values are not retained by these bits (always read as 0x00). */ + uint16_t : 7; + __OM uint16_t KEY : 8; /*!< [15..8] KEY Code */ + } FBPROT0_b; + }; + __IM uint16_t RESERVED11; + + union + { + __IOM uint16_t FBPROT1; /*!< (@ 0x0000007C) Flash Block Protection for Secure Register */ + + struct + { + __IOM uint16_t BPCN1 : 1; /*!< [0..0] Block Protection for Secure CancelWriting to this bit + * is only possible when the FRDY bit in the FSTATR register + * is 1. Writing to this bit while FRDY bit = 0 is ignored.Writing + * to this bit is only possible when 16 bits are written and + * the value written to the KEY[7:0] bits is 0xB1.Written + * values are not retained by these bits (always read as 0x00). */ + uint16_t : 7; + __OM uint16_t KEY : 8; /*!< [15..8] KEY Code */ + } FBPROT1_b; + }; + __IM uint16_t RESERVED12; + + union + { + __IM uint32_t FSTATR; /*!< (@ 0x00000080) Flash Status */ + + struct + { + uint32_t : 6; + __IM uint32_t FLWEERR : 1; /*!< [6..6] Flash Write/Erase Protect Error Flag */ + uint32_t : 1; + __IM uint32_t PRGSPD : 1; /*!< [8..8] Programming-Suspended Status */ + __IM uint32_t ERSSPD : 1; /*!< [9..9] Erasure-Suspended Status */ + __IM uint32_t DBFULL : 1; /*!< [10..10] Data Buffer Full */ + __IM uint32_t SUSRDY : 1; /*!< [11..11] Suspend Ready */ + __IM uint32_t PRGERR : 1; /*!< [12..12] Programming Error */ + __IM uint32_t ERSERR : 1; /*!< [13..13] Erasure Error */ + __IM uint32_t ILGLERR : 1; /*!< [14..14] Illegal Command Error */ + __IM uint32_t FRDY : 1; /*!< [15..15] Flash Ready */ + uint32_t : 4; + __IM uint32_t OTERR : 1; /*!< [20..20] Other Error */ + __IOM uint32_t SECERR : 1; /*!< [21..21] Security Error */ + __IM uint32_t FESETERR : 1; /*!< [22..22] FENTRY Setting Error */ + __IM uint32_t ILGCOMERR : 1; /*!< [23..23] Illegal Command Error */ + uint32_t : 8; + } FSTATR_b; + }; + + union + { + __IOM uint16_t FENTRYR; /*!< (@ 0x00000084) Program/Erase Mode Entry */ + + struct + { + __IOM uint16_t FENTRYC : 1; /*!< [0..0] Code Flash P/E Mode Entry These bits can be written when + * FRDY bit in FSTATR register is '1'. Writing to this bit + * in FRDY = '0' is ignored. Writing to these bits is enabled + * only when this register is accessed in 16-bit size and + * H'AA is written to KEY bits */ + uint16_t : 6; + __IOM uint16_t FENTRYD : 1; /*!< [7..7] Data Flash P/E Mode Entry These bits can be written when + * FRDY bit in FSTATR register is '1'. Writing to this bit + * in FRDY = '0' is ignored. Writing to these bits is enabled + * only when this register is accessed in 16-bit size and + * H'AA is written to KEY bits. */ + __OM uint16_t KEY : 8; /*!< [15..8] KEY Code */ + } FENTRYR_b; + }; + __IM uint16_t RESERVED13; + __IM uint32_t RESERVED14; + + union + { + __IOM uint16_t FSUINITR; /*!< (@ 0x0000008C) Flash Sequencer Set-up Initialize */ + + struct + { + __IOM uint16_t SUINIT : 1; /*!< [0..0] Set-up Initialization This bit can be written when FRDY + * bit of FSTATR register is '1'. Writing to this bit in FRDY + * = '0' is ignored. Writing to these bits is enabled only + * when this register is accessed in 16-bit size and H'2D + * is written to KEY bits. */ + uint16_t : 7; + __OM uint16_t KEY : 8; /*!< [15..8] KEY Code */ + } FSUINITR_b; + }; + __IM uint16_t RESERVED15; + __IM uint32_t RESERVED16[4]; + + union + { + __IM uint16_t FCMDR; /*!< (@ 0x000000A0) Flash Sequencer Command */ + + struct + { + __IM uint16_t PCMDR : 8; /*!< [7..0] Previous Command Register */ + __IM uint16_t CMDR : 8; /*!< [15..8] Command Register */ + } FCMDR_b; + }; + __IM uint16_t RESERVED17; + __IM uint32_t RESERVED18[11]; + + union + { + __IOM uint8_t FBCCNT; /*!< (@ 0x000000D0) Blank Check Control */ + + struct + { + __IOM uint8_t BCDIR : 1; /*!< [0..0] Blank Check Direction */ + uint8_t : 7; + } FBCCNT_b; + }; + __IM uint8_t RESERVED19; + __IM uint16_t RESERVED20; + + union + { + __IM uint8_t FBCSTAT; /*!< (@ 0x000000D4) Blank Check Status */ + + struct + { + __IM uint8_t BCST : 1; /*!< [0..0] Blank Check Status Bit */ + uint8_t : 7; + } FBCSTAT_b; + }; + __IM uint8_t RESERVED21; + __IM uint16_t RESERVED22; + + union + { + __IM uint32_t FPSADDR; /*!< (@ 0x000000D8) Programmed Area Start Address */ + + struct + { + __IM uint32_t PSADR : 19; /*!< [18..0] Programmed Area Start Address NOTE: Indicates address + * of the first programmed data which is found in 'Blank Check' + * command execution. */ + uint32_t : 13; + } FPSADDR_b; + }; + + union + { + __IM uint32_t FAWMON; /*!< (@ 0x000000DC) Flash Access Window Monitor */ + + struct + { + __IM uint32_t FAWS : 11; /*!< [10..0] Start Sector Address for Access Window NOTE: These bits + * indicate the start sector address for setting the access + * window that is located in the configuration area. */ + uint32_t : 4; + __IM uint32_t FSPR : 1; /*!< [15..15] Protection Flag of programming the Access Window, Boot + * Flag and Temporary Boot Swap Control and 'Config Clear' + * command execution */ + __IM uint32_t FAWE : 11; /*!< [26..16] End Sector Address for Access Window NOTE: These bits + * indicate the end sector address for setting the access + * window that is located in the configuration area. */ + uint32_t : 4; + __IM uint32_t BTFLG : 1; /*!< [31..31] Flag of Start-Up area select for Boot Swap */ + } FAWMON_b; + }; + + union + { + __IOM uint16_t FCPSR; /*!< (@ 0x000000E0) FCU Process Switch */ + + struct + { + __IOM uint16_t ESUSPMD : 1; /*!< [0..0] Erasure-Suspended Mode */ + uint16_t : 15; + } FCPSR_b; + }; + __IM uint16_t RESERVED23; + + union + { + __IOM uint16_t FPCKAR; /*!< (@ 0x000000E4) Flash Sequencer Processing Clock Frequency Notification */ + + struct + { + __IOM uint16_t PCKA : 8; /*!< [7..0] Flash Sequencer Processing Clock Frequency These bits + * can be written when FRDY bit in FSTATR register is '1'. + * Writing to this bit in FRDY = '0' is ignored. Writing to + * these bits is enabled only when this register is accessed + * in 16-bit size and H'1E is written to KEY bits. */ + __OM uint16_t KEY : 8; /*!< [15..8] KEY Code */ + } FPCKAR_b; + }; + __IM uint16_t RESERVED24; + + union + { + __IOM uint16_t FSUACR; /*!< (@ 0x000000E8) Flash Start-Up Area Control Register */ + + struct + { + __IOM uint16_t SAS : 2; /*!< [1..0] Start Up Area Select These bits can be written when FRDY + * bit in FSTATR register is '1'. Writing to this bit in FRDY + * = '0' is ignored. Writing to these bits is enabled only + * when this register is accessed in 16-bit size and H'66 + * is written to KEY bits. */ + uint16_t : 6; + __OM uint16_t KEY : 8; /*!< [15..8] KEY Code */ + } FSUACR_b; + }; + __IM uint16_t RESERVED25; +} R_FACI_HP_Type; /*!< Size = 236 (0xec) */ + +/* =========================================================================================================================== */ +/* ================ R_FCACHE ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Flash Cache (R_FCACHE) + */ + +typedef struct /*!< (@ 0x4001C100) R_FCACHE Structure */ +{ + union + { + __IOM uint16_t FCACHEE; /*!< (@ 0x00000000) Flash Cache Enable Register */ + + struct + { + __IOM uint16_t FCACHEEN : 1; /*!< [0..0] Flash Cache Enable */ + uint16_t : 15; + } FCACHEE_b; + }; + __IM uint16_t RESERVED; + + union + { + __IOM uint16_t FCACHEIV; /*!< (@ 0x00000004) Flash Cache Invalidate Register */ + + struct + { + __IOM uint16_t FCACHEIV : 1; /*!< [0..0] Flash Cache Invalidate */ + uint16_t : 15; + } FCACHEIV_b; + }; + __IM uint16_t RESERVED1[11]; + + union + { + __IOM uint8_t FLWT; /*!< (@ 0x0000001C) Flash Wait Cycle Register */ + + struct + { + __IOM uint8_t FLWT : 3; /*!< [2..0] Flash Wait Cycle */ + uint8_t : 5; + } FLWT_b; + }; + __IM uint8_t RESERVED2; + __IM uint16_t RESERVED3[17]; + + union + { + __IOM uint16_t FSAR; /*!< (@ 0x00000040) Flash Security Attribution Register */ + + struct + { + __IOM uint16_t FLWTSA : 1; /*!< [0..0] FLWT Security Attribution */ + __IOM uint16_t FCACHEENSA : 1; /*!< [1..1] FCHACHEEN Security Attribution */ + uint16_t : 6; + __IOM uint16_t FCKMHZSA : 1; /*!< [8..8] FCKMHZ Security Attribution */ + __IOM uint16_t FACICOMISA : 1; /*!< [9..9] FACI command Issuing Security Attribution */ + __IOM uint16_t FACICOMRSA : 1; /*!< [10..10] FACI command Registers Security Attribution */ + __IOM uint16_t FACITRSA : 1; /*!< [11..11] FACI transfer Security Attribution */ + uint16_t : 4; + } FSAR_b; + }; +} R_FCACHE_Type; /*!< Size = 66 (0x42) */ + +/* =========================================================================================================================== */ +/* ================ R_GPT0 ================ */ +/* =========================================================================================================================== */ + +/** + * @brief General PWM Timer (R_GPT0) + */ + +typedef struct /*!< (@ 0x40322000) R_GPT0 Structure */ +{ + union + { + __IOM uint32_t GTWP; /*!< (@ 0x00000000) General PWM Timer Write-Protection Register */ + + struct + { + __IOM uint32_t WP : 1; /*!< [0..0] Register Write Disable */ + __IOM uint32_t STRWP : 1; /*!< [1..1] GTSTR.CSTRT Bit Write Disable */ + __IOM uint32_t STPWP : 1; /*!< [2..2] GTSTP.CSTOP Bit Write Disable */ + __IOM uint32_t CLRWP : 1; /*!< [3..3] GTCLR.CCLR Bit Write Disable */ + __IOM uint32_t CMNWP : 1; /*!< [4..4] Common Register Write Disabled */ + uint32_t : 3; + __OM uint32_t PRKEY : 8; /*!< [15..8] GTWP Key Code */ + uint32_t : 16; + } GTWP_b; + }; + + union + { + __IOM uint32_t GTSTR; /*!< (@ 0x00000004) General PWM Timer Software Start Register */ + + struct + { + __IOM uint32_t CSTRT0 : 1; /*!< [0..0] Channel GTCNT Count StartRead data shows each channel's + * counter status (GTCR.CST bit). 0 means counter stop. 1 + * means counter running. */ + __IOM uint32_t CSTRT1 : 1; /*!< [1..1] Channel GTCNT Count StartRead data shows each channel's + * counter status (GTCR.CST bit). 0 means counter stop. 1 + * means counter running. */ + __IOM uint32_t CSTRT2 : 1; /*!< [2..2] Channel GTCNT Count StartRead data shows each channel's + * counter status (GTCR.CST bit). 0 means counter stop. 1 + * means counter running. */ + __IOM uint32_t CSTRT3 : 1; /*!< [3..3] Channel GTCNT Count StartRead data shows each channel's + * counter status (GTCR.CST bit). 0 means counter stop. 1 + * means counter running. */ + __IOM uint32_t CSTRT4 : 1; /*!< [4..4] Channel GTCNT Count StartRead data shows each channel's + * counter status (GTCR.CST bit). 0 means counter stop. 1 + * means counter running. */ + __IOM uint32_t CSTRT5 : 1; /*!< [5..5] Channel GTCNT Count StartRead data shows each channel's + * counter status (GTCR.CST bit). 0 means counter stop. 1 + * means counter running. */ + __IOM uint32_t CSTRT6 : 1; /*!< [6..6] Channel GTCNT Count StartRead data shows each channel's + * counter status (GTCR.CST bit). 0 means counter stop. 1 + * means counter running. */ + __IOM uint32_t CSTRT7 : 1; /*!< [7..7] Channel GTCNT Count StartRead data shows each channel's + * counter status (GTCR.CST bit). 0 means counter stop. 1 + * means counter running. */ + __IOM uint32_t CSTRT8 : 1; /*!< [8..8] Channel GTCNT Count StartRead data shows each channel's + * counter status (GTCR.CST bit). 0 means counter stop. 1 + * means counter running. */ + __IOM uint32_t CSTRT9 : 1; /*!< [9..9] Channel GTCNT Count StartRead data shows each channel's + * counter status (GTCR.CST bit). 0 means counter stop. 1 + * means counter running. */ + __IOM uint32_t CSTRT10 : 1; /*!< [10..10] Channel GTCNT Count StartRead data shows each channel's + * counter status (GTCR.CST bit). 0 means counter stop. 1 + * means counter running. */ + __IOM uint32_t CSTRT11 : 1; /*!< [11..11] Channel GTCNT Count StartRead data shows each channel's + * counter status (GTCR.CST bit). 0 means counter stop. 1 + * means counter running. */ + __IOM uint32_t CSTRT12 : 1; /*!< [12..12] Channel GTCNT Count StartRead data shows each channel's + * counter status (GTCR.CST bit). 0 means counter stop. 1 + * means counter running. */ + __IOM uint32_t CSTRT13 : 1; /*!< [13..13] Channel GTCNT Count StartRead data shows each channel's + * counter status (GTCR.CST bit). 0 means counter stop. 1 + * means counter running. */ + __IOM uint32_t CSTRT14 : 1; /*!< [14..14] Channel GTCNT Count StartRead data shows each channel's + * counter status (GTCR.CST bit). 0 means counter stop. 1 + * means counter running. */ + __IOM uint32_t CSTRT15 : 1; /*!< [15..15] Channel GTCNT Count StartRead data shows each channel's + * counter status (GTCR.CST bit). 0 means counter stop. 1 + * means counter running. */ + __IOM uint32_t CSTRT16 : 1; /*!< [16..16] Channel GTCNT Count StartRead data shows each channel's + * counter status (GTCR.CST bit). 0 means counter stop. 1 + * means counter running. */ + __IOM uint32_t CSTRT17 : 1; /*!< [17..17] Channel GTCNT Count StartRead data shows each channel's + * counter status (GTCR.CST bit). 0 means counter stop. 1 + * means counter running. */ + __IOM uint32_t CSTRT18 : 1; /*!< [18..18] Channel GTCNT Count StartRead data shows each channel's + * counter status (GTCR.CST bit). 0 means counter stop. 1 + * means counter running. */ + __IOM uint32_t CSTRT19 : 1; /*!< [19..19] Channel GTCNT Count StartRead data shows each channel's + * counter status (GTCR.CST bit). 0 means counter stop. 1 + * means counter running. */ + __IOM uint32_t CSTRT20 : 1; /*!< [20..20] Channel GTCNT Count StartRead data shows each channel's + * counter status (GTCR.CST bit). 0 means counter stop. 1 + * means counter running. */ + __IOM uint32_t CSTRT21 : 1; /*!< [21..21] Channel GTCNT Count StartRead data shows each channel's + * counter status (GTCR.CST bit). 0 means counter stop. 1 + * means counter running. */ + __IOM uint32_t CSTRT22 : 1; /*!< [22..22] Channel GTCNT Count StartRead data shows each channel's + * counter status (GTCR.CST bit). 0 means counter stop. 1 + * means counter running. */ + __IOM uint32_t CSTRT23 : 1; /*!< [23..23] Channel GTCNT Count StartRead data shows each channel's + * counter status (GTCR.CST bit). 0 means counter stop. 1 + * means counter running. */ + __IOM uint32_t CSTRT24 : 1; /*!< [24..24] Channel GTCNT Count StartRead data shows each channel's + * counter status (GTCR.CST bit). 0 means counter stop. 1 + * means counter running. */ + __IOM uint32_t CSTRT25 : 1; /*!< [25..25] Channel GTCNT Count StartRead data shows each channel's + * counter status (GTCR.CST bit). 0 means counter stop. 1 + * means counter running. */ + __IOM uint32_t CSTRT26 : 1; /*!< [26..26] Channel GTCNT Count StartRead data shows each channel's + * counter status (GTCR.CST bit). 0 means counter stop. 1 + * means counter running. */ + __IOM uint32_t CSTRT27 : 1; /*!< [27..27] Channel GTCNT Count StartRead data shows each channel's + * counter status (GTCR.CST bit). 0 means counter stop. 1 + * means counter running. */ + __IOM uint32_t CSTRT28 : 1; /*!< [28..28] Channel GTCNT Count StartRead data shows each channel's + * counter status (GTCR.CST bit). 0 means counter stop. 1 + * means counter running. */ + __IOM uint32_t CSTRT29 : 1; /*!< [29..29] Channel GTCNT Count StartRead data shows each channel's + * counter status (GTCR.CST bit). 0 means counter stop. 1 + * means counter running. */ + __IOM uint32_t CSTRT30 : 1; /*!< [30..30] Channel GTCNT Count StartRead data shows each channel's + * counter status (GTCR.CST bit). 0 means counter stop. 1 + * means counter running. */ + __IOM uint32_t CSTRT31 : 1; /*!< [31..31] Channel GTCNT Count StartRead data shows each channel's + * counter status (GTCR.CST bit). 0 means counter stop. 1 + * means counter running. */ + } GTSTR_b; + }; + + union + { + __IOM uint32_t GTSTP; /*!< (@ 0x00000008) General PWM Timer Software Stop Register */ + + struct + { + __IOM uint32_t CSTOP0 : 1; /*!< [0..0] Channel GTCNT Count StopRead data shows each channel's + * counter status (GTCR.CST bit). 0 means counter runnning. + * 1 means counter stop. */ + __IOM uint32_t CSTOP1 : 1; /*!< [1..1] Channel GTCNT Count StopRead data shows each channel's + * counter status (GTCR.CST bit). 0 means counter runnning. + * 1 means counter stop. */ + __IOM uint32_t CSTOP2 : 1; /*!< [2..2] Channel GTCNT Count StopRead data shows each channel's + * counter status (GTCR.CST bit). 0 means counter runnning. + * 1 means counter stop. */ + __IOM uint32_t CSTOP3 : 1; /*!< [3..3] Channel GTCNT Count StopRead data shows each channel's + * counter status (GTCR.CST bit). 0 means counter runnning. + * 1 means counter stop. */ + __IOM uint32_t CSTOP4 : 1; /*!< [4..4] Channel GTCNT Count StopRead data shows each channel's + * counter status (GTCR.CST bit). 0 means counter runnning. + * 1 means counter stop. */ + __IOM uint32_t CSTOP5 : 1; /*!< [5..5] Channel GTCNT Count StopRead data shows each channel's + * counter status (GTCR.CST bit). 0 means counter runnning. + * 1 means counter stop. */ + __IOM uint32_t CSTOP6 : 1; /*!< [6..6] Channel GTCNT Count StopRead data shows each channel's + * counter status (GTCR.CST bit). 0 means counter runnning. + * 1 means counter stop. */ + __IOM uint32_t CSTOP7 : 1; /*!< [7..7] Channel GTCNT Count StopRead data shows each channel's + * counter status (GTCR.CST bit). 0 means counter runnning. + * 1 means counter stop. */ + __IOM uint32_t CSTOP8 : 1; /*!< [8..8] Channel GTCNT Count StopRead data shows each channel's + * counter status (GTCR.CST bit). 0 means counter runnning. + * 1 means counter stop. */ + __IOM uint32_t CSTOP9 : 1; /*!< [9..9] Channel GTCNT Count StopRead data shows each channel's + * counter status (GTCR.CST bit). 0 means counter runnning. + * 1 means counter stop. */ + __IOM uint32_t CSTOP10 : 1; /*!< [10..10] Channel GTCNT Count StopRead data shows each channel's + * counter status (GTCR.CST bit). 0 means counter runnning. + * 1 means counter stop. */ + __IOM uint32_t CSTOP11 : 1; /*!< [11..11] Channel GTCNT Count StopRead data shows each channel's + * counter status (GTCR.CST bit). 0 means counter runnning. + * 1 means counter stop. */ + __IOM uint32_t CSTOP12 : 1; /*!< [12..12] Channel GTCNT Count StopRead data shows each channel's + * counter status (GTCR.CST bit). 0 means counter runnning. + * 1 means counter stop. */ + __IOM uint32_t CSTOP13 : 1; /*!< [13..13] Channel GTCNT Count StopRead data shows each channel's + * counter status (GTCR.CST bit). 0 means counter runnning. + * 1 means counter stop. */ + __IOM uint32_t CSTOP14 : 1; /*!< [14..14] Channel GTCNT Count StopRead data shows each channel's + * counter status (GTCR.CST bit). 0 means counter runnning. + * 1 means counter stop. */ + __IOM uint32_t CSTOP15 : 1; /*!< [15..15] Channel GTCNT Count StopRead data shows each channel's + * counter status (GTCR.CST bit). 0 means counter runnning. + * 1 means counter stop. */ + __IOM uint32_t CSTOP16 : 1; /*!< [16..16] Channel GTCNT Count StopRead data shows each channel's + * counter status (GTCR.CST bit). 0 means counter runnning. + * 1 means counter stop. */ + __IOM uint32_t CSTOP17 : 1; /*!< [17..17] Channel GTCNT Count StopRead data shows each channel's + * counter status (GTCR.CST bit). 0 means counter runnning. + * 1 means counter stop. */ + __IOM uint32_t CSTOP18 : 1; /*!< [18..18] Channel GTCNT Count StopRead data shows each channel's + * counter status (GTCR.CST bit). 0 means counter runnning. + * 1 means counter stop. */ + __IOM uint32_t CSTOP19 : 1; /*!< [19..19] Channel GTCNT Count StopRead data shows each channel's + * counter status (GTCR.CST bit). 0 means counter runnning. + * 1 means counter stop. */ + __IOM uint32_t CSTOP20 : 1; /*!< [20..20] Channel GTCNT Count StopRead data shows each channel's + * counter status (GTCR.CST bit). 0 means counter runnning. + * 1 means counter stop. */ + __IOM uint32_t CSTOP21 : 1; /*!< [21..21] Channel GTCNT Count StopRead data shows each channel's + * counter status (GTCR.CST bit). 0 means counter runnning. + * 1 means counter stop. */ + __IOM uint32_t CSTOP22 : 1; /*!< [22..22] Channel GTCNT Count StopRead data shows each channel's + * counter status (GTCR.CST bit). 0 means counter runnning. + * 1 means counter stop. */ + __IOM uint32_t CSTOP23 : 1; /*!< [23..23] Channel GTCNT Count StopRead data shows each channel's + * counter status (GTCR.CST bit). 0 means counter runnning. + * 1 means counter stop. */ + __IOM uint32_t CSTOP24 : 1; /*!< [24..24] Channel GTCNT Count StopRead data shows each channel's + * counter status (GTCR.CST bit). 0 means counter runnning. + * 1 means counter stop. */ + __IOM uint32_t CSTOP25 : 1; /*!< [25..25] Channel GTCNT Count StopRead data shows each channel's + * counter status (GTCR.CST bit). 0 means counter runnning. + * 1 means counter stop. */ + __IOM uint32_t CSTOP26 : 1; /*!< [26..26] Channel GTCNT Count StopRead data shows each channel's + * counter status (GTCR.CST bit). 0 means counter runnning. + * 1 means counter stop. */ + __IOM uint32_t CSTOP27 : 1; /*!< [27..27] Channel GTCNT Count StopRead data shows each channel's + * counter status (GTCR.CST bit). 0 means counter runnning. + * 1 means counter stop. */ + __IOM uint32_t CSTOP28 : 1; /*!< [28..28] Channel GTCNT Count StopRead data shows each channel's + * counter status (GTCR.CST bit). 0 means counter runnning. + * 1 means counter stop. */ + __IOM uint32_t CSTOP29 : 1; /*!< [29..29] Channel GTCNT Count StopRead data shows each channel's + * counter status (GTCR.CST bit). 0 means counter runnning. + * 1 means counter stop. */ + __IOM uint32_t CSTOP30 : 1; /*!< [30..30] Channel GTCNT Count StopRead data shows each channel's + * counter status (GTCR.CST bit). 0 means counter runnning. + * 1 means counter stop. */ + __IOM uint32_t CSTOP31 : 1; /*!< [31..31] Channel GTCNT Count StopRead data shows each channel's + * counter status (GTCR.CST bit). 0 means counter runnning. + * 1 means counter stop. */ + } GTSTP_b; + }; + + union + { + __OM uint32_t GTCLR; /*!< (@ 0x0000000C) General PWM Timer Software Clear Register */ + + struct + { + __OM uint32_t CCLR0 : 1; /*!< [0..0] Channel GTCNT Count Clear */ + __OM uint32_t CCLR1 : 1; /*!< [1..1] Channel GTCNT Count Clear */ + __OM uint32_t CCLR2 : 1; /*!< [2..2] Channel GTCNT Count Clear */ + __OM uint32_t CCLR3 : 1; /*!< [3..3] Channel GTCNT Count Clear */ + __OM uint32_t CCLR4 : 1; /*!< [4..4] Channel GTCNT Count Clear */ + __OM uint32_t CCLR5 : 1; /*!< [5..5] Channel GTCNT Count Clear */ + __OM uint32_t CCLR6 : 1; /*!< [6..6] Channel GTCNT Count Clear */ + __OM uint32_t CCLR7 : 1; /*!< [7..7] Channel GTCNT Count Clear */ + __OM uint32_t CCLR8 : 1; /*!< [8..8] Channel GTCNT Count Clear */ + __OM uint32_t CCLR9 : 1; /*!< [9..9] Channel GTCNT Count Clear */ + __OM uint32_t CCLR10 : 1; /*!< [10..10] Channel GTCNT Count Clear */ + __OM uint32_t CCLR11 : 1; /*!< [11..11] Channel GTCNT Count Clear */ + __OM uint32_t CCLR12 : 1; /*!< [12..12] Channel GTCNT Count Clear */ + __OM uint32_t CCLR13 : 1; /*!< [13..13] Channel GTCNT Count Clear */ + __OM uint32_t CCLR14 : 1; /*!< [14..14] Channel GTCNT Count Clear */ + __OM uint32_t CCLR15 : 1; /*!< [15..15] Channel GTCNT Count Clear */ + __OM uint32_t CCLR16 : 1; /*!< [16..16] Channel GTCNT Count Clear */ + __OM uint32_t CCLR17 : 1; /*!< [17..17] Channel GTCNT Count Clear */ + __OM uint32_t CCLR18 : 1; /*!< [18..18] Channel GTCNT Count Clear */ + __OM uint32_t CCLR19 : 1; /*!< [19..19] Channel GTCNT Count Clear */ + __OM uint32_t CCLR20 : 1; /*!< [20..20] Channel GTCNT Count Clear */ + __OM uint32_t CCLR21 : 1; /*!< [21..21] Channel GTCNT Count Clear */ + __OM uint32_t CCLR22 : 1; /*!< [22..22] Channel GTCNT Count Clear */ + __OM uint32_t CCLR23 : 1; /*!< [23..23] Channel GTCNT Count Clear */ + __OM uint32_t CCLR24 : 1; /*!< [24..24] Channel GTCNT Count Clear */ + __OM uint32_t CCLR25 : 1; /*!< [25..25] Channel GTCNT Count Clear */ + __OM uint32_t CCLR26 : 1; /*!< [26..26] Channel GTCNT Count Clear */ + __OM uint32_t CCLR27 : 1; /*!< [27..27] Channel GTCNT Count Clear */ + __OM uint32_t CCLR28 : 1; /*!< [28..28] Channel GTCNT Count Clear */ + __OM uint32_t CCLR29 : 1; /*!< [29..29] Channel GTCNT Count Clear */ + __OM uint32_t CCLR30 : 1; /*!< [30..30] Channel GTCNT Count Clear */ + __OM uint32_t CCLR31 : 1; /*!< [31..31] Channel GTCNT Count Clear */ + } GTCLR_b; + }; + + union + { + __IOM uint32_t GTSSR; /*!< (@ 0x00000010) General PWM Timer Start Source Select Register */ + + struct + { + __IOM uint32_t SSGTRGAR : 1; /*!< [0..0] GTETRG Pin Rising Input Source Counter Start Enable */ + __IOM uint32_t SSGTRGAF : 1; /*!< [1..1] GTETRG Pin Falling Input Source Counter Start Enable */ + __IOM uint32_t SSGTRGBR : 1; /*!< [2..2] GTETRG Pin Rising Input Source Counter Start Enable */ + __IOM uint32_t SSGTRGBF : 1; /*!< [3..3] GTETRG Pin Falling Input Source Counter Start Enable */ + __IOM uint32_t SSGTRGCR : 1; /*!< [4..4] GTETRG Pin Rising Input Source Counter Start Enable */ + __IOM uint32_t SSGTRGCF : 1; /*!< [5..5] GTETRG Pin Falling Input Source Counter Start Enable */ + __IOM uint32_t SSGTRGDR : 1; /*!< [6..6] GTETRG Pin Rising Input Source Counter Start Enable */ + __IOM uint32_t SSGTRGDF : 1; /*!< [7..7] GTETRG Pin Falling Input Source Counter Start Enable */ + __IOM uint32_t SSCARBL : 1; /*!< [8..8] GTIOCA Pin Rising Input during GTIOCB Value Low Source + * Counter Start Enable */ + __IOM uint32_t SSCARBH : 1; /*!< [9..9] GTIOCA Pin Rising Input during GTIOCB Value High Source + * Counter Start Enable */ + __IOM uint32_t SSCAFBL : 1; /*!< [10..10] GTIOCA Pin Falling Input during GTIOCB Value Low Source + * Counter Start Enable */ + __IOM uint32_t SSCAFBH : 1; /*!< [11..11] GTIOCA Pin Falling Input during GTIOCB Value High Source + * Counter Start Enable */ + __IOM uint32_t SSCBRAL : 1; /*!< [12..12] GTIOCB Pin Rising Input during GTIOCA Value Low Source + * Counter Start Enable */ + __IOM uint32_t SSCBRAH : 1; /*!< [13..13] GTIOCB Pin Rising Input during GTIOCA Value High Source + * Counter Start Enable */ + __IOM uint32_t SSCBFAL : 1; /*!< [14..14] GTIOCB Pin Falling Input during GTIOCA Value Low Source + * Counter Start Enable */ + __IOM uint32_t SSCBFAH : 1; /*!< [15..15] GTIOCB Pin Falling Input during GTIOCA Value High Source + * Counter Start Enable */ + __IOM uint32_t SSELCA : 1; /*!< [16..16] ELC_GPT Event Source Counter Start Enable */ + __IOM uint32_t SSELCB : 1; /*!< [17..17] ELC_GPT Event Source Counter Start Enable */ + __IOM uint32_t SSELCC : 1; /*!< [18..18] ELC_GPT Event Source Counter Start Enable */ + __IOM uint32_t SSELCD : 1; /*!< [19..19] ELC_GPT Event Source Counter Start Enable */ + __IOM uint32_t SSELCE : 1; /*!< [20..20] ELC_GPT Event Source Counter Start Enable */ + __IOM uint32_t SSELCF : 1; /*!< [21..21] ELC_GPT Event Source Counter Start Enable */ + __IOM uint32_t SSELCG : 1; /*!< [22..22] ELC_GPT Event Source Counter Start Enable */ + __IOM uint32_t SSELCH : 1; /*!< [23..23] ELC_GPT Event Source Counter Start Enable */ + uint32_t : 7; + __IOM uint32_t CSTRT : 1; /*!< [31..31] Software Source Counter Start Enable */ + } GTSSR_b; + }; + + union + { + __IOM uint32_t GTPSR; /*!< (@ 0x00000014) General PWM Timer Stop Source Select Register */ + + struct + { + __IOM uint32_t PSGTRGAR : 1; /*!< [0..0] GTETRG Pin Rising Input Source Counter Stop Enable */ + __IOM uint32_t PSGTRGAF : 1; /*!< [1..1] GTETRG Pin Falling Input Source Counter Stop Enable */ + __IOM uint32_t PSGTRGBR : 1; /*!< [2..2] GTETRG Pin Rising Input Source Counter Stop Enable */ + __IOM uint32_t PSGTRGBF : 1; /*!< [3..3] GTETRG Pin Falling Input Source Counter Stop Enable */ + __IOM uint32_t PSGTRGCR : 1; /*!< [4..4] GTETRG Pin Rising Input Source Counter Stop Enable */ + __IOM uint32_t PSGTRGCF : 1; /*!< [5..5] GTETRG Pin Falling Input Source Counter Stop Enable */ + __IOM uint32_t PSGTRGDR : 1; /*!< [6..6] GTETRG Pin Rising Input Source Counter Stop Enable */ + __IOM uint32_t PSGTRGDF : 1; /*!< [7..7] GTETRG Pin Falling Input Source Counter Stop Enable */ + __IOM uint32_t PSCARBL : 1; /*!< [8..8] GTIOCA Pin Rising Input during GTIOCB Value Low Source + * Counter Stop Enable */ + __IOM uint32_t PSCARBH : 1; /*!< [9..9] GTIOCA Pin Rising Input during GTIOCB Value High Source + * Counter Stop Enable */ + __IOM uint32_t PSCAFBL : 1; /*!< [10..10] GTIOCA Pin Falling Input during GTIOCB Value Low Source + * Counter Stop Enable */ + __IOM uint32_t PSCAFBH : 1; /*!< [11..11] GTIOCA Pin Falling Input during GTIOCB Value High Source + * Counter Stop Enable */ + __IOM uint32_t PSCBRAL : 1; /*!< [12..12] GTIOCB Pin Rising Input during GTIOCA Value Low Source + * Counter Stop Enable */ + __IOM uint32_t PSCBRAH : 1; /*!< [13..13] GTIOCB Pin Rising Input during GTIOCA Value High Source + * Counter Stop Enable */ + __IOM uint32_t PSCBFAL : 1; /*!< [14..14] GTIOCB Pin Falling Input during GTIOCA Value Low Source + * Counter Stop Enable */ + __IOM uint32_t PSCBFAH : 1; /*!< [15..15] GTIOCB Pin Falling Input during GTIOCA Value High Source + * Counter Stop Enable */ + __IOM uint32_t PSELCA : 1; /*!< [16..16] ELC_GPTA Event Source Counter Stop Enable */ + __IOM uint32_t PSELCB : 1; /*!< [17..17] ELC_GPTA Event Source Counter Stop Enable */ + __IOM uint32_t PSELCC : 1; /*!< [18..18] ELC_GPTA Event Source Counter Stop Enable */ + __IOM uint32_t PSELCD : 1; /*!< [19..19] ELC_GPTA Event Source Counter Stop Enable */ + __IOM uint32_t PSELCE : 1; /*!< [20..20] ELC_GPTA Event Source Counter Stop Enable */ + __IOM uint32_t PSELCF : 1; /*!< [21..21] ELC_GPTA Event Source Counter Stop Enable */ + __IOM uint32_t PSELCG : 1; /*!< [22..22] ELC_GPTA Event Source Counter Stop Enable */ + __IOM uint32_t PSELCH : 1; /*!< [23..23] ELC_GPTA Event Source Counter Stop Enable */ + uint32_t : 7; + __IOM uint32_t CSTOP : 1; /*!< [31..31] Software Source Counter Stop Enable */ + } GTPSR_b; + }; + + union + { + __IOM uint32_t GTCSR; /*!< (@ 0x00000018) General PWM Timer Clear Source Select Register */ + + struct + { + __IOM uint32_t CSGTRGAR : 1; /*!< [0..0] GTETRG Pin Rising Input Source Counter Clear Enable */ + __IOM uint32_t CSGTRGAF : 1; /*!< [1..1] GTETRG Pin Falling Input Source Counter Clear Enable */ + __IOM uint32_t CSGTRGBR : 1; /*!< [2..2] GTETRG Pin Rising Input Source Counter Clear Enable */ + __IOM uint32_t CSGTRGBF : 1; /*!< [3..3] GTETRG Pin Falling Input Source Counter Clear Enable */ + __IOM uint32_t CSGTRGCR : 1; /*!< [4..4] GTETRG Pin Rising Input Source Counter Clear Enable */ + __IOM uint32_t CSGTRGCF : 1; /*!< [5..5] GTETRG Pin Falling Input Source Counter Clear Enable */ + __IOM uint32_t CSGTRGDR : 1; /*!< [6..6] GTETRG Pin Rising Input Source Counter Clear Enable */ + __IOM uint32_t CSGTRGDF : 1; /*!< [7..7] GTETRG Pin Falling Input Source Counter Clear Enable */ + __IOM uint32_t CSCARBL : 1; /*!< [8..8] GTIOCA Pin Rising Input during GTIOCB Value Low Source + * Counter Clear Enable */ + __IOM uint32_t CSCARBH : 1; /*!< [9..9] GTIOCA Pin Rising Input during GTIOCB Value High Source + * Counter Clear Enable */ + __IOM uint32_t CSCAFBL : 1; /*!< [10..10] GTIOCA Pin Falling Input during GTIOCB Value Low Source + * Counter Clear Enable */ + __IOM uint32_t CSCAFBH : 1; /*!< [11..11] GTIOCA Pin Falling Input during GTIOCB Value High Source + * Counter Clear Enable */ + __IOM uint32_t CSCBRAL : 1; /*!< [12..12] GTIOCB Pin Rising Input during GTIOCA Value Low Source + * Counter Clear Enable */ + __IOM uint32_t CSCBRAH : 1; /*!< [13..13] GTIOCB Pin Rising Input during GTIOCA Value High Source + * Counter Clear Enable */ + __IOM uint32_t CSCBFAL : 1; /*!< [14..14] GTIOCB Pin Falling Input during GTIOCA Value Low Source + * Counter Clear Enable */ + __IOM uint32_t CSCBFAH : 1; /*!< [15..15] GTIOCB Pin Falling Input during GTIOCA Value High Source + * Counter Clear Enable */ + __IOM uint32_t CSELCA : 1; /*!< [16..16] ELC_GPTA Event Source Counter Clear Enable */ + __IOM uint32_t CSELCB : 1; /*!< [17..17] ELC_GPTA Event Source Counter Clear Enable */ + __IOM uint32_t CSELCC : 1; /*!< [18..18] ELC_GPTA Event Source Counter Clear Enable */ + __IOM uint32_t CSELCD : 1; /*!< [19..19] ELC_GPTA Event Source Counter Clear Enable */ + __IOM uint32_t CSELCE : 1; /*!< [20..20] ELC_GPTA Event Source Counter Clear Enable */ + __IOM uint32_t CSELCF : 1; /*!< [21..21] ELC_GPTA Event Source Counter Clear Enable */ + __IOM uint32_t CSELCG : 1; /*!< [22..22] ELC_GPTA Event Source Counter Clear Enable */ + __IOM uint32_t CSELCH : 1; /*!< [23..23] ELC_GPTA Event Source Counter Clear Enable */ + __IOM uint32_t CSCMSC : 3; /*!< [26..24] Compare Match/Input Capture/Synchronous counter clearing + * Source Counter Clear Enable. */ + __IOM uint32_t CP1CCE : 1; /*!< [27..27] Complementary PWM mode1 Crest Source Counter Clear + * Enable (This bit is only available in GPT324 to GPT329. + * In GPT320 to GPT323, this bit is read as 0. The write value + * should be 0.) */ + uint32_t : 3; + __IOM uint32_t CCLR : 1; /*!< [31..31] Software Source Counter Clear Enable */ + } GTCSR_b; + }; + + union + { + __IOM uint32_t GTUPSR; /*!< (@ 0x0000001C) General PWM Timer Up Count Source Select Register */ + + struct + { + __IOM uint32_t USGTRGAR : 1; /*!< [0..0] GTETRG Pin Rising Input Source Counter Count Up Enable */ + __IOM uint32_t USGTRGAF : 1; /*!< [1..1] GTETRG Pin Falling Input Source Counter Count Up Enable */ + __IOM uint32_t USGTRGBR : 1; /*!< [2..2] GTETRG Pin Rising Input Source Counter Count Up Enable */ + __IOM uint32_t USGTRGBF : 1; /*!< [3..3] GTETRG Pin Falling Input Source Counter Count Up Enable */ + __IOM uint32_t USGTRGCR : 1; /*!< [4..4] GTETRG Pin Rising Input Source Counter Count Up Enable */ + __IOM uint32_t USGTRGCF : 1; /*!< [5..5] GTETRG Pin Falling Input Source Counter Count Up Enable */ + __IOM uint32_t USGTRGDR : 1; /*!< [6..6] GTETRG Pin Rising Input Source Counter Count Up Enable */ + __IOM uint32_t USGTRGDF : 1; /*!< [7..7] GTETRG Pin Falling Input Source Counter Count Up Enable */ + __IOM uint32_t USCARBL : 1; /*!< [8..8] GTIOCA Pin Rising Input during GTIOCB Value Low Source + * Counter Count Up Enable */ + __IOM uint32_t USCARBH : 1; /*!< [9..9] GTIOCA Pin Rising Input during GTIOCB Value High Source + * Counter Count Up Enable */ + __IOM uint32_t USCAFBL : 1; /*!< [10..10] GTIOCA Pin Falling Input during GTIOCB Value Low Source + * Counter Count Up Enable */ + __IOM uint32_t USCAFBH : 1; /*!< [11..11] GTIOCA Pin Falling Input during GTIOCB Value High Source + * Counter Count Up Enable */ + __IOM uint32_t USCBRAL : 1; /*!< [12..12] GTIOCB Pin Rising Input during GTIOCA Value Low Source + * Counter Count Up Enable */ + __IOM uint32_t USCBRAH : 1; /*!< [13..13] GTIOCB Pin Rising Input during GTIOCA Value High Source + * Counter Count Up Enable */ + __IOM uint32_t USCBFAL : 1; /*!< [14..14] GTIOCB Pin Falling Input during GTIOCA Value Low Source + * Counter Count Up Enable */ + __IOM uint32_t USCBFAH : 1; /*!< [15..15] GTIOCB Pin Falling Input during GTIOCA Value High Source + * Counter Count Up Enable */ + __IOM uint32_t USELCA : 1; /*!< [16..16] ELC_GPT Event Source Counter Count Up Enable */ + __IOM uint32_t USELCB : 1; /*!< [17..17] ELC_GPT Event Source Counter Count Up Enable */ + __IOM uint32_t USELCC : 1; /*!< [18..18] ELC_GPT Event Source Counter Count Up Enable */ + __IOM uint32_t USELCD : 1; /*!< [19..19] ELC_GPT Event Source Counter Count Up Enable */ + __IOM uint32_t USELCE : 1; /*!< [20..20] ELC_GPT Event Source Counter Count Up Enable */ + __IOM uint32_t USELCF : 1; /*!< [21..21] ELC_GPT Event Source Counter Count Up Enable */ + __IOM uint32_t USELCG : 1; /*!< [22..22] ELC_GPT Event Source Counter Count Up Enable */ + __IOM uint32_t USELCH : 1; /*!< [23..23] ELC_GPT Event Source Counter Count Up Enable */ + __IOM uint32_t USILVL : 4; /*!< [27..24] External Input Level Source Count-Up Enable */ + uint32_t : 4; + } GTUPSR_b; + }; + + union + { + __IOM uint32_t GTDNSR; /*!< (@ 0x00000020) General PWM Timer Down Count Source Select Register */ + + struct + { + __IOM uint32_t DSGTRGAR : 1; /*!< [0..0] GTETRG Pin Rising Input Source Counter Count Down Enable */ + __IOM uint32_t DSGTRGAF : 1; /*!< [1..1] GTETRG Pin Falling Input Source Counter Count Down Enable */ + __IOM uint32_t DSGTRGBR : 1; /*!< [2..2] GTETRG Pin Rising Input Source Counter Count Down Enable */ + __IOM uint32_t DSGTRGBF : 1; /*!< [3..3] GTETRG Pin Falling Input Source Counter Count Down Enable */ + __IOM uint32_t DSGTRGCR : 1; /*!< [4..4] GTETRG Pin Rising Input Source Counter Count Down Enable */ + __IOM uint32_t DSGTRGCF : 1; /*!< [5..5] GTETRG Pin Falling Input Source Counter Count Down Enable */ + __IOM uint32_t DSGTRGDR : 1; /*!< [6..6] GTETRG Pin Rising Input Source Counter Count Down Enable */ + __IOM uint32_t DSGTRGDF : 1; /*!< [7..7] GTETRG Pin Falling Input Source Counter Count Down Enable */ + __IOM uint32_t DSCARBL : 1; /*!< [8..8] GTIOCA Pin Rising Input during GTIOCB Value Low Source + * Counter Count Down Enable */ + __IOM uint32_t DSCARBH : 1; /*!< [9..9] GTIOCA Pin Rising Input during GTIOCB Value High Source + * Counter Count Down Enable */ + __IOM uint32_t DSCAFBL : 1; /*!< [10..10] GTIOCA Pin Falling Input during GTIOCB Value Low Source + * Counter Count Down Enable */ + __IOM uint32_t DSCAFBH : 1; /*!< [11..11] GTIOCA Pin Falling Input during GTIOCB Value High Source + * Counter Count Down Enable */ + __IOM uint32_t DSCBRAL : 1; /*!< [12..12] GTIOCB Pin Rising Input during GTIOCA Value Low Source + * Counter Count Down Enable */ + __IOM uint32_t DSCBRAH : 1; /*!< [13..13] GTIOCB Pin Rising Input during GTIOCA Value High Source + * Counter Count Down Enable */ + __IOM uint32_t DSCBFAL : 1; /*!< [14..14] GTIOCB Pin Falling Input during GTIOCA Value Low Source + * Counter Count Down Enable */ + __IOM uint32_t DSCBFAH : 1; /*!< [15..15] GTIOCB Pin Falling Input during GTIOCA Value High Source + * Counter Count Down Enable */ + __IOM uint32_t DSELCA : 1; /*!< [16..16] ELC_GPT Event Source Counter Count Down Enable */ + __IOM uint32_t DSELCB : 1; /*!< [17..17] ELC_GPT Event Source Counter Count Down Enable */ + __IOM uint32_t DSELCC : 1; /*!< [18..18] ELC_GPT Event Source Counter Count Down Enable */ + __IOM uint32_t DSELCD : 1; /*!< [19..19] ELC_GPT Event Source Counter Count Down Enable */ + __IOM uint32_t DSELCE : 1; /*!< [20..20] ELC_GPT Event Source Counter Count Down Enable */ + __IOM uint32_t DSELCF : 1; /*!< [21..21] ELC_GPT Event Source Counter Count Down Enable */ + __IOM uint32_t DSELCG : 1; /*!< [22..22] ELC_GPT Event Source Counter Count Down Enable */ + __IOM uint32_t DSELCH : 1; /*!< [23..23] ELC_GPT Event Source Counter Count Down Enable */ + __IOM uint32_t DSILVL : 4; /*!< [27..24] External Input Level Source Count-Down Enable */ + uint32_t : 4; + } GTDNSR_b; + }; + + union + { + __IOM uint32_t GTICASR; /*!< (@ 0x00000024) General PWM Timer Input Capture Source Select + * Register A */ + + struct + { + __IOM uint32_t ASGTRGAR : 1; /*!< [0..0] GTETRG Pin Rising Input Source GTCCRA Input Capture Enable */ + __IOM uint32_t ASGTRGAF : 1; /*!< [1..1] GTETRG Pin Falling Input Source GTCCRA Input Capture + * Enable */ + __IOM uint32_t ASGTRGBR : 1; /*!< [2..2] GTETRG Pin Rising Input Source GTCCRA Input Capture Enable */ + __IOM uint32_t ASGTRGBF : 1; /*!< [3..3] GTETRG Pin Falling Input Source GTCCRA Input Capture + * Enable */ + __IOM uint32_t ASGTRGCR : 1; /*!< [4..4] GTETRG Pin Rising Input Source GTCCRA Input Capture Enable */ + __IOM uint32_t ASGTRGCF : 1; /*!< [5..5] GTETRG Pin Falling Input Source GTCCRA Input Capture + * Enable */ + __IOM uint32_t ASGTRGDR : 1; /*!< [6..6] GTETRG Pin Rising Input Source GTCCRA Input Capture Enable */ + __IOM uint32_t ASGTRGDF : 1; /*!< [7..7] GTETRG Pin Falling Input Source GTCCRA Input Capture + * Enable */ + __IOM uint32_t ASCARBL : 1; /*!< [8..8] GTIOCA Pin Rising Input during GTIOCB Value Low Source + * GTCCRA Input Capture Enable */ + __IOM uint32_t ASCARBH : 1; /*!< [9..9] GTIOCA Pin Rising Input during GTIOCB Value High Source + * GTCCRA Input Capture Enable */ + __IOM uint32_t ASCAFBL : 1; /*!< [10..10] GTIOCA Pin Falling Input during GTIOCB Value Low Source + * GTCCRA Input Capture Enable */ + __IOM uint32_t ASCAFBH : 1; /*!< [11..11] GTIOCA Pin Falling Input during GTIOCB Value High Source + * GTCCRA Input Capture Enable */ + __IOM uint32_t ASCBRAL : 1; /*!< [12..12] GTIOCB Pin Rising Input during GTIOCA Value Low Source + * GTCCRA Input Capture Enable */ + __IOM uint32_t ASCBRAH : 1; /*!< [13..13] GTIOCB Pin Rising Input during GTIOCA Value High Source + * GTCCRA Input Capture Enable */ + __IOM uint32_t ASCBFAL : 1; /*!< [14..14] GTIOCB Pin Falling Input during GTIOCA Value Low Source + * GTCCRA Input Capture Enable */ + __IOM uint32_t ASCBFAH : 1; /*!< [15..15] GTIOCB Pin Falling Input during GTIOCA Value High Source + * GTCCRA Input Capture Enable */ + __IOM uint32_t ASELCA : 1; /*!< [16..16] ELC_GPT Event Source GTCCRA Input Capture Enable */ + __IOM uint32_t ASELCB : 1; /*!< [17..17] ELC_GPT Event Source GTCCRA Input Capture Enable */ + __IOM uint32_t ASELCC : 1; /*!< [18..18] ELC_GPT Event Source GTCCRA Input Capture Enable */ + __IOM uint32_t ASELCD : 1; /*!< [19..19] ELC_GPT Event Source GTCCRA Input Capture Enable */ + __IOM uint32_t ASELCE : 1; /*!< [20..20] ELC_GPT Event Source GTCCRA Input Capture Enable */ + __IOM uint32_t ASELCF : 1; /*!< [21..21] ELC_GPT Event Source GTCCRA Input Capture Enable */ + __IOM uint32_t ASELCG : 1; /*!< [22..22] ELC_GPT Event Source GTCCRA Input Capture Enable */ + __IOM uint32_t ASELCH : 1; /*!< [23..23] ELC_GPT Event Source GTCCRA Input Capture Enable */ + uint32_t : 8; + } GTICASR_b; + }; + + union + { + __IOM uint32_t GTICBSR; /*!< (@ 0x00000028) General PWM Timer Input Capture Source Select + * Register B */ + + struct + { + __IOM uint32_t BSGTRGAR : 1; /*!< [0..0] GTETRG Pin Rising Input Source GTCCRB Input Capture Enable */ + __IOM uint32_t BSGTRGAF : 1; /*!< [1..1] GTETRG Pin Falling Input Source GTCCRB Input Capture + * Enable */ + __IOM uint32_t BSGTRGBR : 1; /*!< [2..2] GTETRG Pin Rising Input Source GTCCRB Input Capture Enable */ + __IOM uint32_t BSGTRGBF : 1; /*!< [3..3] GTETRG Pin Falling Input Source GTCCRB Input Capture + * Enable */ + __IOM uint32_t BSGTRGCR : 1; /*!< [4..4] GTETRG Pin Rising Input Source GTCCRB Input Capture Enable */ + __IOM uint32_t BSGTRGCF : 1; /*!< [5..5] GTETRG Pin Falling Input Source GTCCRB Input Capture + * Enable */ + __IOM uint32_t BSGTRGDR : 1; /*!< [6..6] GTETRG Pin Rising Input Source GTCCRB Input Capture Enable */ + __IOM uint32_t BSGTRGDF : 1; /*!< [7..7] GTETRG Pin Falling Input Source GTCCRB Input Capture + * Enable */ + __IOM uint32_t BSCARBL : 1; /*!< [8..8] GTIOCA Pin Rising Input during GTIOCB Value Low Source + * GTCCRB Input Capture Enable */ + __IOM uint32_t BSCARBH : 1; /*!< [9..9] GTIOCA Pin Rising Input during GTIOCB Value High Source + * GTCCRB Input Capture Enable */ + __IOM uint32_t BSCAFBL : 1; /*!< [10..10] GTIOCA Pin Falling Input during GTIOCB Value Low Source + * GTCCRB Input Capture Enable */ + __IOM uint32_t BSCAFBH : 1; /*!< [11..11] GTIOCA Pin Falling Input during GTIOCB Value High Source + * GTCCRB Input Capture Enable */ + __IOM uint32_t BSCBRAL : 1; /*!< [12..12] GTIOCB Pin Rising Input during GTIOCA Value Low Source + * GTCCRB Input Capture Enable */ + __IOM uint32_t BSCBRAH : 1; /*!< [13..13] GTIOCB Pin Rising Input during GTIOCA Value High Source + * GTCCRB Input Capture Enable */ + __IOM uint32_t BSCBFAL : 1; /*!< [14..14] GTIOCB Pin Falling Input during GTIOCA Value Low Source + * GTCCRB Input Capture Enable */ + __IOM uint32_t BSCBFAH : 1; /*!< [15..15] GTIOCB Pin Falling Input during GTIOCA Value High Source + * GTCCRB Input Capture Enable */ + __IOM uint32_t BSELCA : 1; /*!< [16..16] ELC_GPT Event Source GTCCRB Input Capture Enable */ + __IOM uint32_t BSELCB : 1; /*!< [17..17] ELC_GPT Event Source GTCCRB Input Capture Enable */ + __IOM uint32_t BSELCC : 1; /*!< [18..18] ELC_GPT Event Source GTCCRB Input Capture Enable */ + __IOM uint32_t BSELCD : 1; /*!< [19..19] ELC_GPT Event Source GTCCRB Input Capture Enable */ + __IOM uint32_t BSELCE : 1; /*!< [20..20] ELC_GPT Event Source GTCCRB Input Capture Enable */ + __IOM uint32_t BSELCF : 1; /*!< [21..21] ELC_GPT Event Source GTCCRB Input Capture Enable */ + __IOM uint32_t BSELCG : 1; /*!< [22..22] ELC_GPT Event Source GTCCRB Input Capture Enable */ + __IOM uint32_t BSELCH : 1; /*!< [23..23] ELC_GPT Event Source GTCCRB Input Capture Enable */ + uint32_t : 8; + } GTICBSR_b; + }; + + union + { + __IOM uint32_t GTCR; /*!< (@ 0x0000002C) General PWM Timer Control Register */ + + struct + { + __IOM uint32_t CST : 1; /*!< [0..0] Count Start */ + uint32_t : 7; + __IOM uint32_t ICDS : 1; /*!< [8..8] Input Capture Operation Select During Count Stop */ + __IOM uint32_t SCGTIOC : 1; /*!< [9..9] GTIOC input Source Synchronous Clear Enable */ + __IOM uint32_t SSCGRP : 2; /*!< [11..10] Synchronous Set/Clear Group Select */ + __IOM uint32_t CPSCD : 1; /*!< [12..12] Complementary PWM Mode Synchronous Clear Disable */ + uint32_t : 2; + __IOM uint32_t SSCEN : 1; /*!< [15..15] Synchronous Set/Clear Enable */ + __IOM uint32_t MD : 4; /*!< [19..16] Mode Select */ + uint32_t : 3; + __IOM uint32_t TPCS : 4; /*!< [26..23] Timer Prescaler Select */ + __IOM uint32_t CKEG : 2; /*!< [28..27] Clock Edge Select */ + uint32_t : 3; + } GTCR_b; + }; + + union + { + __IOM uint32_t GTUDDTYC; /*!< (@ 0x00000030) General PWM Timer Count Direction and Duty Setting + * Register */ + + struct + { + __IOM uint32_t UD : 1; /*!< [0..0] Count Direction Setting */ + __IOM uint32_t UDF : 1; /*!< [1..1] Forcible Count Direction Setting */ + uint32_t : 14; + __IOM uint32_t OADTY : 2; /*!< [17..16] GTIOCA Output Duty Setting */ + __IOM uint32_t OADTYF : 1; /*!< [18..18] Forcible GTIOCA Output Duty Setting */ + __IOM uint32_t OADTYR : 1; /*!< [19..19] GTIOCA Output Value Selecting after Releasing 0 percent/100 + * percent Duty Setting */ + uint32_t : 4; + __IOM uint32_t OBDTY : 2; /*!< [25..24] GTIOCB Output Duty Setting */ + __IOM uint32_t OBDTYF : 1; /*!< [26..26] Forcible GTIOCB Output Duty Setting */ + __IOM uint32_t OBDTYR : 1; /*!< [27..27] GTIOCB Output Value Selecting after Releasing 0 percent/100 + * percent Duty Setting */ + uint32_t : 4; + } GTUDDTYC_b; + }; + + union + { + __IOM uint32_t GTIOR; /*!< (@ 0x00000034) General PWM Timer I/O Control Register */ + + struct + { + __IOM uint32_t GTIOA : 5; /*!< [4..0] GTIOCA Pin Function Select */ + __IOM uint32_t CPSCIR : 1; /*!< [5..5] Complementary PWM Mode Initial Output at Synchronous + * Clear Disable.(This bit is only available in GPT324 to + * GPT329. In GPT320 to GPT323, this bit is read as 0. The + * write value should be 0.) */ + __IOM uint32_t OADFLT : 1; /*!< [6..6] GTIOCA Pin Output Value Setting at the Count Stop */ + __IOM uint32_t OAHLD : 1; /*!< [7..7] GTIOCA Pin Output Setting at the Start/Stop Count */ + __IOM uint32_t OAE : 1; /*!< [8..8] GTIOCA Pin Output Enable */ + __IOM uint32_t OADF : 2; /*!< [10..9] GTIOCA Pin Disable Value Setting */ + __IOM uint32_t OAEOCD : 1; /*!< [11..11] GTCCRA Compare Match Cycle End Output Invalidate.(This + * bit is only available in GPT324 to GPT329. In GPT320 to + * GPT323, this bit is read as 0. The write value should be + * 0.) */ + __IOM uint32_t PSYE : 1; /*!< [12..12] PWM Synchronous output Enable */ + __IOM uint32_t NFAEN : 1; /*!< [13..13] Noise Filter A Enable */ + __IOM uint32_t NFCSA : 2; /*!< [15..14] Noise Filter A Sampling Clock Select */ + __IOM uint32_t GTIOB : 5; /*!< [20..16] GTIOCB Pin Function Select */ + uint32_t : 1; + __IOM uint32_t OBDFLT : 1; /*!< [22..22] GTIOCB Pin Output Value Setting at the Count Stop */ + __IOM uint32_t OBHLD : 1; /*!< [23..23] GTIOCB Pin Output Setting at the Start/Stop Count */ + __IOM uint32_t OBE : 1; /*!< [24..24] GTIOCB Pin Output Enable */ + __IOM uint32_t OBDF : 2; /*!< [26..25] GTIOCB Pin Disable Value Setting */ + __IOM uint32_t OBEOCD : 1; /*!< [27..27] GTCCRB Compare Match Cycle End Output Invalidate.(This + * bit is only available in GPT324 to GPT329. In GPT320 to + * GPT323, this bit is read as 0. The write value should be + * 0.) */ + uint32_t : 1; + __IOM uint32_t NFBEN : 1; /*!< [29..29] Noise Filter B Enable */ + __IOM uint32_t NFCSB : 2; /*!< [31..30] Noise Filter B Sampling Clock Select */ + } GTIOR_b; + }; + + union + { + __IOM uint32_t GTINTAD; /*!< (@ 0x00000038) General PWM Timer Interrupt Output Setting Register */ + + struct + { + uint32_t : 8; + __IOM uint32_t SCFA : 1; /*!< [8..8] GTCCRn Register Compare Match/Input Capture Source Synchronous + * Clear Enable */ + __IOM uint32_t SCFB : 1; /*!< [9..9] GTCCRn Register Compare Match/Input Capture Source Synchronous + * Clear Enable */ + __IOM uint32_t SCFC : 1; /*!< [10..10] GTCCRn Register Compare Match/Input Capture Source + * Synchronous Clear Enable */ + __IOM uint32_t SCFD : 1; /*!< [11..11] GTCCRn Register Compare Match/Input Capture Source + * Synchronous Clear Enable */ + __IOM uint32_t SCFE : 1; /*!< [12..12] GTCCRn Register Compare Match/Input Capture Source + * Synchronous Clear Enable */ + __IOM uint32_t SCFF : 1; /*!< [13..13] GTCCRn Register Compare Match/Input Capture Source + * Synchronous Clear Enable */ + __IOM uint32_t SCFPO : 1; /*!< [14..14] Overflow Source Synchronous Clear Enable */ + __IOM uint32_t SCFPU : 1; /*!< [15..15] Underflow Source Synchronous Clear Enable */ + __IOM uint32_t ADTRAUEN : 1; /*!< [16..16] GTADTRn Register Compare Match (Up-Counting) A/D Conversion + * Start Request Enable */ + __IOM uint32_t ADTRADEN : 1; /*!< [17..17] GTADTRn Register Compare Match (Down-Counting) A/D + * Conversion Start Request Enable */ + __IOM uint32_t ADTRBUEN : 1; /*!< [18..18] GTADTRn Register Compare Match (Up-Counting) A/D Conversion + * Start Request Enable */ + __IOM uint32_t ADTRBDEN : 1; /*!< [19..19] GTADTRn Register Compare Match (Down-Counting) A/D + * Conversion Start Request Enable */ + uint32_t : 4; + __IOM uint32_t GRP : 2; /*!< [25..24] Output Disable Source Select */ + uint32_t : 2; + __IOM uint32_t GRPDTE : 1; /*!< [28..28] Dead Time Error Output Disable Request Enable */ + __IOM uint32_t GRPABH : 1; /*!< [29..29] Same Time Output Level High Disable Request Enable */ + __IOM uint32_t GRPABL : 1; /*!< [30..30] Same Time Output Level Low Disable Request Enable */ + __IOM uint32_t GTINTPC : 1; /*!< [31..31] Period Count Function Finish Interrupt Enable */ + } GTINTAD_b; + }; + + union + { + __IOM uint32_t GTST; /*!< (@ 0x0000003C) General PWM Timer Status Register */ + + struct + { + __IOM uint32_t TCFA : 1; /*!< [0..0] Input Capture/Compare Match Flag A */ + __IOM uint32_t TCFB : 1; /*!< [1..1] Input Capture/Compare Match Flag B */ + __IOM uint32_t TCFC : 1; /*!< [2..2] Input Compare Match Flag C */ + __IOM uint32_t TCFD : 1; /*!< [3..3] Input Compare Match Flag D */ + __IOM uint32_t TCFE : 1; /*!< [4..4] Input Compare Match Flag E */ + __IOM uint32_t TCFF : 1; /*!< [5..5] Input Compare Match Flag F */ + __IOM uint32_t TCFPO : 1; /*!< [6..6] Overflow Flag */ + __IOM uint32_t TCFPU : 1; /*!< [7..7] Underflow Flag */ + __IM uint32_t ITCNT : 3; /*!< [10..8] GTCIV/GTCIU Interrupt Skipping Count Counter(Counter + * for counting the number of times a timer interrupt has + * been skipped.) */ + uint32_t : 4; + __IM uint32_t TUCF : 1; /*!< [15..15] Count Direction Flag */ + __IOM uint32_t ADTRAUF : 1; /*!< [16..16] GTADTRA Compare Match (Up-Counting) A/D Converter Start + * Request Interrupt Enable */ + __IOM uint32_t ADTRADF : 1; /*!< [17..17] GTADTRA Compare Match(Down-Counting) A/D Convertor + * Start Request Flag */ + __IOM uint32_t ADTRBUF : 1; /*!< [18..18] GTADTRB Compare Match(Up-Counting) A/D Convertor Start + * Request Flag */ + __IOM uint32_t ADTRBDF : 1; /*!< [19..19] GTADTRB Compare Match(Down-Counting) A/D Convertor + * Start Request Flag */ + uint32_t : 4; + __IM uint32_t ODF : 1; /*!< [24..24] Output Disable Flag */ + uint32_t : 3; + __IM uint32_t DTEF : 1; /*!< [28..28] Dead Time Error Flag */ + __IM uint32_t OABHF : 1; /*!< [29..29] Same Time Output Level High Disable Request Enable */ + __IM uint32_t OABLF : 1; /*!< [30..30] Same Time Output Level Low Disable Request Enable */ + __IOM uint32_t PCF : 1; /*!< [31..31] Period Count Function Finish Flag */ + } GTST_b; + }; + + union + { + __IOM uint32_t GTBER; /*!< (@ 0x00000040) General PWM Timer Buffer Enable Register */ + + struct + { + __IOM uint32_t BD0 : 1; /*!< [0..0] BD[0]: GTCCR Buffer Operation Disable */ + __IOM uint32_t BD1 : 1; /*!< [1..1] BD[1]: GTPR Buffer Operation Disable */ + __IOM uint32_t BD2 : 1; /*!< [2..2] BD[2]: GTADTR Buffer Operation DisableBD */ + __IOM uint32_t BD3 : 1; /*!< [3..3] BD[3]: GTDV Buffer Operation DisableBD[2] */ + uint32_t : 4; + __IOM uint32_t DBRTECA : 1; /*!< [8..8] GTCCRn Register Double Buffer Repeat Operation Enable */ + uint32_t : 1; + __IOM uint32_t DBRTECB : 1; /*!< [10..10] GTCCRn Register Double Buffer Repeat Operation Enable */ + uint32_t : 5; + __IOM uint32_t CCRA : 2; /*!< [17..16] GTCCRA Buffer Operation */ + __IOM uint32_t CCRB : 2; /*!< [19..18] GTCCRB Buffer Operation */ + __IOM uint32_t PR : 2; /*!< [21..20] GTPR Buffer Operation */ + __OM uint32_t CCRSWT : 1; /*!< [22..22] GTCCRA and GTCCRB Forcible Buffer OperationThis bit + * is read as 0. */ + uint32_t : 1; + __IOM uint32_t ADTTA : 2; /*!< [25..24] GTADTRA Buffer Transfer Timing Select in the Triangle + * wavesNOTE: In the Saw waves, values other than 0 0: Transfer + * at an underflow (in down-counting) or overflow (in up-counting) + * is performed. */ + __IOM uint32_t ADTDA : 1; /*!< [26..26] GTADTRA Double Buffer Operation */ + uint32_t : 1; + __IOM uint32_t ADTTB : 2; /*!< [29..28] GTADTRB Buffer Transfer Timing Select in the Triangle + * wavesNOTE: In the Saw waves, values other than 0 0: Transfer + * at an underflow (in down-counting) or overflow (in up-counting) + * is performed. */ + __IOM uint32_t ADTDB : 1; /*!< [30..30] GTADTRB Double Buffer Operation */ + uint32_t : 1; + } GTBER_b; + }; + + union + { + __IOM uint32_t GTITC; /*!< (@ 0x00000044) General PWM Timer Interrupt and A/D Converter + * Start Request Skipping Setting Register */ + + struct + { + __IOM uint32_t ITLA : 1; /*!< [0..0] GTCCRA Compare Match/Input Capture Interrupt Link */ + __IOM uint32_t ITLB : 1; /*!< [1..1] GTCCRB Compare Match/Input Capture Interrupt Link */ + __IOM uint32_t ITLC : 1; /*!< [2..2] GTCCRC Compare Match Interrupt Link */ + __IOM uint32_t ITLD : 1; /*!< [3..3] GTCCRD Compare Match Interrupt Link */ + __IOM uint32_t ITLE : 1; /*!< [4..4] GTCCRE Compare Match Interrupt Link */ + __IOM uint32_t ITLF : 1; /*!< [5..5] GTCCRF Compare Match Interrupt Link */ + __IOM uint32_t IVTC : 2; /*!< [7..6] GPT_OVF/GPT_UDF Interrupt Skipping Function Select */ + __IOM uint32_t IVTT : 3; /*!< [10..8] GPT_OVF/GPT_UDF Interrupt Skipping Count Select */ + uint32_t : 1; + __IOM uint32_t ADTAL : 1; /*!< [12..12] GTADTRA A/D Converter Start Request Link */ + uint32_t : 1; + __IOM uint32_t ADTBL : 1; /*!< [14..14] GTADTRB A/D Converter Start Request Link */ + uint32_t : 17; + } GTITC_b; + }; + + union + { + __IOM uint32_t GTCNT; /*!< (@ 0x00000048) General PWM Timer Counter */ + + struct + { + __IOM uint32_t GTCNT : 32; /*!< [31..0] Counter */ + } GTCNT_b; + }; + + union + { + __IOM uint32_t GTCCR[6]; /*!< (@ 0x0000004C) General PWM Timer Compare Capture Register */ + + struct + { + __IOM uint32_t GTCCR : 32; /*!< [31..0] Compare Capture Register A */ + } GTCCR_b[6]; + }; + + union + { + __IOM uint32_t GTPR; /*!< (@ 0x00000064) General PWM Timer Cycle Setting Register */ + + struct + { + __IOM uint32_t GTPR : 32; /*!< [31..0] Cycle Setting Register */ + } GTPR_b; + }; + + union + { + __IOM uint32_t GTPBR; /*!< (@ 0x00000068) General PWM Timer Cycle Setting Buffer Register */ + + struct + { + __IOM uint32_t GTPBR : 32; /*!< [31..0] Cycle Setting Buffer Register */ + } GTPBR_b; + }; + + union + { + __IOM uint32_t GTPDBR; /*!< (@ 0x0000006C) General PWM Timer Cycle Setting Double-Buffer + * Register */ + + struct + { + __IOM uint32_t GTPDBR : 32; /*!< [31..0] Cycle Setting Double-Buffer Register */ + } GTPDBR_b; + }; + + union + { + __IOM uint32_t GTADTRA; /*!< (@ 0x00000070) A/D Converter Start Request Timing Register A */ + + struct + { + __IOM uint32_t GTADTRA : 32; /*!< [31..0] A/D Converter Start Request Timing Register A */ + } GTADTRA_b; + }; + + union + { + __IOM uint32_t GTADTBRA; /*!< (@ 0x00000074) A/D Converter Start Request Timing Buffer Register + * A */ + + struct + { + __IOM uint32_t GTADTBRA : 32; /*!< [31..0] A/D Converter Start Request Timing Buffer Register A */ + } GTADTBRA_b; + }; + + union + { + __IOM uint32_t GTADTDBRA; /*!< (@ 0x00000078) A/D Converter Start Request Timing Double-Buffer + * Register A */ + + struct + { + __IOM uint32_t GTADTDBRA : 32; /*!< [31..0] A/D Converter Start Request Timing Double-Buffer Register + * A */ + } GTADTDBRA_b; + }; + + union + { + __IOM uint32_t GTADTRB; /*!< (@ 0x0000007C) A/D Converter Start Request Timing Register B */ + + struct + { + __IOM uint32_t GTADTRB : 32; /*!< [31..0] A/D Converter Start Request Timing Register B */ + } GTADTRB_b; + }; + + union + { + __IOM uint32_t GTADTBRB; /*!< (@ 0x00000080) A/D Converter Start Request Timing Buffer Register + * B */ + + struct + { + __IOM uint32_t GTADTBRB : 32; /*!< [31..0] A/D Converter Start Request Timing Buffer Register B */ + } GTADTBRB_b; + }; + + union + { + __IOM uint32_t GTADTDBRB; /*!< (@ 0x00000084) A/D Converter Start Request Timing Double-Buffer + * Register B */ + + struct + { + __IOM uint32_t GTADTDBRB : 32; /*!< [31..0] A/D Converter Start Request Timing Double-Buffer Register + * B */ + } GTADTDBRB_b; + }; + + union + { + __IOM uint32_t GTDTCR; /*!< (@ 0x00000088) General PWM Timer Dead Time Control Register */ + + struct + { + __IOM uint32_t TDE : 1; /*!< [0..0] Negative-Phase Waveform Setting */ + uint32_t : 3; + __IOM uint32_t TDBUE : 1; /*!< [4..4] GTDVU Buffer Operation Enable */ + __IOM uint32_t TDBDE : 1; /*!< [5..5] GTDVD Buffer Operation Enable */ + uint32_t : 2; + __IOM uint32_t TDFER : 1; /*!< [8..8] GTDVD Setting */ + uint32_t : 23; + } GTDTCR_b; + }; + + union + { + __IOM uint32_t GTDVU; /*!< (@ 0x0000008C) General PWM Timer Dead Time Value Register U */ + + struct + { + __IOM uint32_t GTDVU : 32; /*!< [31..0] Dead Time Value Register U */ + } GTDVU_b; + }; + + union + { + __IOM uint32_t GTDVD; /*!< (@ 0x00000090) General PWM Timer Dead Time Value Register D */ + + struct + { + __IOM uint32_t GTDVD : 32; /*!< [31..0] Dead Time Value Register D */ + } GTDVD_b; + }; + + union + { + __IOM uint32_t GTDBU; /*!< (@ 0x00000094) General PWM Timer Dead Time Buffer Register U */ + + struct + { + __IOM uint32_t GTDVU : 32; /*!< [31..0] Dead Time Buffer Register U */ + } GTDBU_b; + }; + + union + { + __IOM uint32_t GTDBD; /*!< (@ 0x00000098) General PWM Timer Dead Time Buffer Register D */ + + struct + { + __IOM uint32_t GTDBD : 32; /*!< [31..0] Dead Time Buffer Register D */ + } GTDBD_b; + }; + + union + { + __IM uint32_t GTSOS; /*!< (@ 0x0000009C) General PWM Timer Output Protection Function + * Status Register */ + + struct + { + __IM uint32_t SOS : 2; /*!< [1..0] Output Protection Function Status */ + uint32_t : 30; + } GTSOS_b; + }; + + union + { + __IOM uint32_t GTSOTR; /*!< (@ 0x000000A0) General PWM Timer Output Protection Function + * Temporary Release Register */ + + struct + { + __IOM uint32_t SOTR : 1; /*!< [0..0] Output Protection Function Temporary Release */ + uint32_t : 31; + } GTSOTR_b; + }; + + union + { + __IOM uint32_t GTADSMR; /*!< (@ 0x000000A4) General PWM Timer A/D Conversion Start Request + * Signal Monitoring Register */ + + struct + { + __IOM uint32_t ADSMS0 : 2; /*!< [1..0] A/D Conversion Start Request Signal Monitor 0 Selection */ + uint32_t : 6; + __IOM uint32_t ADSMEN0 : 1; /*!< [8..8] A/D Conversion Start Request Signal Monitor 0 Output + * Enabling */ + uint32_t : 7; + __IOM uint32_t ADSMS1 : 2; /*!< [17..16] A/D Conversion Start Request Signal Monitor 1 Selection */ + uint32_t : 6; + __IOM uint32_t ADSMEN1 : 1; /*!< [24..24] A/D Conversion Start Request Signal Monitor 1 Output + * Enabling */ + uint32_t : 7; + } GTADSMR_b; + }; + + union + { + __IOM uint32_t GTEITC; /*!< (@ 0x000000A8) General PWM Timer Extended Interrupt Skipping + * Counter Control Register */ + + struct + { + __IOM uint32_t EIVTC1 : 2; /*!< [1..0] Extended Interrupt Skipping Counter 1 Count Source Select */ + uint32_t : 2; + __IOM uint32_t EIVTT1 : 4; /*!< [7..4] Extended Interrupt Skipping 1 Skipping Count Setting */ + uint32_t : 4; + __IM uint32_t EITCNT1 : 4; /*!< [15..12] Extended Interrupt Skipping Counter 1 */ + __IOM uint32_t EIVTC2 : 2; /*!< [17..16] Extended Interrupt Skipping Counter 2 Count Source + * select */ + uint32_t : 2; + __IOM uint32_t EIVTT2 : 4; /*!< [23..20] Extended Interrupt Skipping 2 Skipping Count Setting */ + __IOM uint32_t EITCNT2IV : 4; /*!< [27..24] Extended Interrupt Skipping Counter 2 Initial Value */ + __IM uint32_t EITCNT2 : 4; /*!< [31..28] Extended Interrupt Skipping Counter 2 */ + } GTEITC_b; + }; + + union + { + __IOM uint32_t GTEITLI1; /*!< (@ 0x000000AC) General PWM Timer Extended Interrupt Skipping + * Setting Register 1 */ + + struct + { + __IOM uint32_t EITLA : 3; /*!< [2..0] GTCCRA Register Compare Match/Input Capture Interrupt + * Extended Skipping Function Select */ + uint32_t : 1; + __IOM uint32_t EITLB : 3; /*!< [6..4] GTCCRB Register Compare Match/Input Capture Interrupt + * Extended Skipping Function Select */ + uint32_t : 1; + __IOM uint32_t EITLC : 3; /*!< [10..8] GTCCRC Register Compare Match Interrupt Extended Skipping + * Function Select */ + uint32_t : 1; + __IOM uint32_t EITLD : 3; /*!< [14..12] GTCCRD Register Compare Match Interrupt Extended Skipping + * Function Select */ + uint32_t : 1; + __IOM uint32_t EITLE : 3; /*!< [18..16] GTCCRE Register Compare Match Interrupt Extended Skipping + * Function Select */ + uint32_t : 1; + __IOM uint32_t EITLF : 3; /*!< [22..20] GTCCRF Register Compare Match Interrupt Extended Skipping + * Function Select */ + uint32_t : 1; + __IOM uint32_t EITLV : 3; /*!< [26..24] Overflow Interrupt Extended Skipping Function Select */ + uint32_t : 1; + __IOM uint32_t EITLU : 3; /*!< [30..28] Underflow Interrupt Extended Skipping Function Select */ + uint32_t : 1; + } GTEITLI1_b; + }; + + union + { + __IOM uint32_t GTEITLI2; /*!< (@ 0x000000B0) General PWM Timer Extended Interrupt Skipping + * Setting Register 2 */ + + struct + { + __IOM uint32_t EADTAL : 3; /*!< [2..0] GTADTRA Register A/D Conversion Start Request Extended + * Skipping Function Select */ + uint32_t : 1; + __IOM uint32_t EADTBL : 3; /*!< [6..4] GTADTRB Register A/D Conversion Start Request Extended + * Skipping Function Select */ + uint32_t : 25; + } GTEITLI2_b; + }; + + union + { + __IOM uint32_t GTEITLB; /*!< (@ 0x000000B4) General PWM Timer Extended Buffer Transfer Skipping + * Setting Register */ + + struct + { + __IOM uint32_t EBTLCA : 3; /*!< [2..0] GTCCRA Register Buffer Transfer Extended Skipping Function + * Select */ + uint32_t : 1; + __IOM uint32_t EBTLCB : 3; /*!< [6..4] GTCCRB Register Buffer Transfer Extended Skipping Function + * Select */ + uint32_t : 1; + __IOM uint32_t EBTLPR : 3; /*!< [10..8] GTPR Register Buffer Transfer Extended Skipping Function + * Select */ + uint32_t : 5; + __IOM uint32_t EBTLADA : 3; /*!< [18..16] GTADTRA Register Buffer Transfer Extended Skipping + * Function Select */ + uint32_t : 1; + __IOM uint32_t EBTLADB : 3; /*!< [22..20] GTADTRB Register Buffer Transfer Extended Skipping + * Function Select */ + uint32_t : 1; + __IOM uint32_t EBTLDVU : 3; /*!< [26..24] GTDVU Register Buffer Transfer Extended Skipping Function + * Select */ + uint32_t : 1; + __IOM uint32_t EBTLDVD : 3; /*!< [30..28] GTDVD Register Buffer Transfer Extended Skipping Function + * Select */ + uint32_t : 1; + } GTEITLB_b; + }; + + union + { + __IOM uint32_t GTICLF; /*!< (@ 0x000000B8) General PWM Timer Inter Channel Logical Operation + * Function Setting Register */ + + struct + { + __IOM uint32_t ICLFA : 3; /*!< [2..0] GTIOCnA Output Logical Operation Function Select */ + uint32_t : 1; + __IOM uint32_t ICLFSELC : 6; /*!< [9..4] Inter Channel Signal C Select */ + uint32_t : 6; + __IOM uint32_t ICLFB : 3; /*!< [18..16] GTIOCnB Output Logical Operation Function Select */ + uint32_t : 1; + __IOM uint32_t ICLFSELD : 6; /*!< [25..20] Inter Channel Signal D Select */ + uint32_t : 6; + } GTICLF_b; + }; + + union + { + __IOM uint32_t GTPC; /*!< (@ 0x000000BC) General PWM Timer Period Count Register */ + + struct + { + __IOM uint32_t PCEN : 1; /*!< [0..0] Period Count Function Enable */ + uint32_t : 7; + __IOM uint32_t ASTP : 1; /*!< [8..8] Automatic Stop Function Enable */ + uint32_t : 7; + __IOM uint32_t PCNT : 12; /*!< [27..16] Period Counter */ + uint32_t : 4; + } GTPC_b; + }; + __IM uint32_t RESERVED[4]; + + union + { + __IOM uint32_t GTSECSR; /*!< (@ 0x000000D0) General PWM Timer Operation Enable Bit Simultaneous + * Control Channel Select Register */ + + struct + { + __IOM uint32_t SECSEL0 : 1; /*!< [0..0] Channel 0 Operation Enable Bit Simultaneous Control Channel + * Select */ + __IOM uint32_t SECSEL1 : 1; /*!< [1..1] Channel 1 Operation Enable Bit Simultaneous Control Channel + * Select */ + __IOM uint32_t SECSEL2 : 1; /*!< [2..2] Channel 2 Operation Enable Bit Simultaneous Control Channel + * Select */ + __IOM uint32_t SECSEL3 : 1; /*!< [3..3] Channel 3 Operation Enable Bit Simultaneous Control Channel + * Select */ + __IOM uint32_t SECSEL4 : 1; /*!< [4..4] Channel 4 Operation Enable Bit Simultaneous Control Channel + * Select */ + __IOM uint32_t SECSEL5 : 1; /*!< [5..5] Channel 5 Operation Enable Bit Simultaneous Control Channel + * Select */ + __IOM uint32_t SECSEL6 : 1; /*!< [6..6] Channel 6 Operation Enable Bit Simultaneous Control Channel + * Select */ + __IOM uint32_t SECSEL7 : 1; /*!< [7..7] Channel 7 Operation Enable Bit Simultaneous Control Channel + * Select */ + __IOM uint32_t SECSEL8 : 1; /*!< [8..8] Channel 8 Operation Enable Bit Simultaneous Control Channel + * Select */ + __IOM uint32_t SECSEL9 : 1; /*!< [9..9] Channel 9 Operation Enable Bit Simultaneous Control Channel + * Select */ + uint32_t : 22; + } GTSECSR_b; + }; + + union + { + __IOM uint32_t GTSECR; /*!< (@ 0x000000D4) General PWM Timer Operation Enable Bit Simultaneous + * Control Register */ + + struct + { + __IOM uint32_t SBDCE : 1; /*!< [0..0] GTCCR Register Buffer Operation Simultaneous Enable */ + __IOM uint32_t SBDPE : 1; /*!< [1..1] GTPR Register Buffer Operation Simultaneous Enable */ + __IOM uint32_t SBDAE : 1; /*!< [2..2] GTADTR Register Buffer Operation Simultaneous Enable */ + __IOM uint32_t SBDDE : 1; /*!< [3..3] GTDV Register Buffer Operation Simultaneous Enable */ + uint32_t : 4; + __IOM uint32_t SBDCD : 1; /*!< [8..8] GTCCR Register Buffer Operation Simultaneous Disable */ + __IOM uint32_t SBDPD : 1; /*!< [9..9] GTPR Register Buffer Operation Simultaneous Disable */ + __IOM uint32_t SBDAD : 1; /*!< [10..10] GTADTR Register Buffer Operation Simultaneous Disable */ + __IOM uint32_t SBDDD : 1; /*!< [11..11] GTDV Register Buffer Operation Simultaneous Disable */ + uint32_t : 4; + __IOM uint32_t SPCE : 1; /*!< [16..16] Period Count Function Simultaneous Enable */ + __IOM uint32_t SSCE : 1; /*!< [17..17] Synchronous Set/Clear Simultaneous Enable */ + uint32_t : 6; + __IOM uint32_t SPCD : 1; /*!< [24..24] Period Count Function Simultaneous Disable */ + __IOM uint32_t SSCD : 1; /*!< [25..25] Synchronous Set/Clear Simultaneous Disable */ + uint32_t : 6; + } GTSECR_b; + }; + __IM uint32_t RESERVED1[2]; + + union + { + __IOM uint32_t GTBER2; /*!< (@ 0x000000E0) General PWM Timer Buffer Enable Register 2 */ + + struct + { + __IOM uint32_t CCTCA : 1; /*!< [0..0] Counter Clear Source GTCCRA Register Buffer Transfer + * Disable */ + __IOM uint32_t CCTCB : 1; /*!< [1..1] Counter Clear Source GTCCRB Register Buffer Transfer + * Disable */ + __IOM uint32_t CCTPR : 1; /*!< [2..2] Counter Clear Source GTPR Register Buffer Transfer Disable */ + __IOM uint32_t CCTADA : 1; /*!< [3..3] Counter Clear Source GTADTRA Register Buffer Transfer + * Disable */ + __IOM uint32_t CCTADB : 1; /*!< [4..4] Counter Clear Source GTADTRB Register Buffer Transfer + * Disable */ + __IOM uint32_t CCTDV : 1; /*!< [5..5] Counter Clear Source GTDVU/GTDVD Register Buffer Transfer + * Disable */ + uint32_t : 2; + __IOM uint32_t CMTCA : 2; /*!< [9..8] Compare Match Source GTCCRA Register Buffer Transfer + * Enable */ + __IOM uint32_t CMTCB : 2; /*!< [11..10] Compare Match Source GTCCRB Register Buffer Transfer + * Enable */ + uint32_t : 1; + __IOM uint32_t CMTADA : 1; /*!< [13..13] Compare Match Source GTADTRA Register Buffer Transfer + * Enable */ + __IOM uint32_t CMTADB : 1; /*!< [14..14] Compare Match Source GTADTRA Register Buffer Transfer + * Enable */ + uint32_t : 1; + __IOM uint32_t CPTCA : 1; /*!< [16..16] Overflow/Underflow Source GTCCRA Register Buffer Transfer + * Disable */ + __IOM uint32_t CPTCB : 1; /*!< [17..17] Overflow/Underflow Source GTCCRB Register Buffer Transfer + * Disable */ + __IOM uint32_t CPTPR : 1; /*!< [18..18] Overflow/Underflow Source GTPR Register Buffer Transfer + * Disable */ + __IOM uint32_t CPTADA : 1; /*!< [19..19] Overflow/Underflow Source GTADTRA Register Buffer Transfer + * Disable */ + __IOM uint32_t CPTADB : 1; /*!< [20..20] Overflow/Underflow Source GTADTRB Register Buffer Transfer + * Disable */ + __IOM uint32_t CPTDV : 1; /*!< [21..21] Overflow/Underflow Source GTDVU/GTDVD Register Buffer + * Transfer Disable */ + uint32_t : 2; + __IOM uint32_t CP3DB : 1; /*!< [24..24] Complementary PWM mode 3,4 Double Buffer select */ + __IOM uint32_t CPBTD : 1; /*!< [25..25] Complementary PWM mode Buffer Transfer Disable */ + __IOM uint32_t OLTTA : 2; /*!< [27..26] GTIOCnA Output Level Buffer Transfer Timing Select */ + __IOM uint32_t OLTTB : 2; /*!< [29..28] GTIOCnB Output Level Buffer Transfer Timing Select */ + uint32_t : 2; + } GTBER2_b; + }; + + union + { + __IOM uint32_t GTOLBR; /*!< (@ 0x000000E4) General PWM Timer Output Level Buffer Register */ + + struct + { + __IOM uint32_t GTIOAB : 5; /*!< [4..0] GTIOA buffer bits */ + uint32_t : 11; + __IOM uint32_t GTIOBB : 5; /*!< [20..16] GTIOBB buffer bits */ + uint32_t : 11; + } GTOLBR_b; + }; + __IM uint32_t RESERVED2; + + union + { + __IOM uint32_t GTICCR; /*!< (@ 0x000000EC) General PWM Timer Inter Channel Cooperation Input + * Capture Control Register */ + + struct + { + __IOM uint32_t ICAFA : 1; /*!< [0..0] Forwarding GTCCRA register Compare Match/Input Capture + * to Other Channel GTCCRA Input Capture Source Enable */ + __IOM uint32_t ICAFB : 1; /*!< [1..1] Forwarding GTCCRB register Compare Match/Input Capture + * to Other Channel GTCCRA Input Capture Source Enable */ + __IOM uint32_t ICAFC : 1; /*!< [2..2] Forwarding GTCCRC register Compare Match Capture to Other + * Channel GTCCRA Input Capture Source Enable */ + __IOM uint32_t ICAFD : 1; /*!< [3..3] Forwarding GTCCRD register Compare Match Capture to Other + * Channel GTCCRA Input Capture Source Enable */ + __IOM uint32_t ICAFE : 1; /*!< [4..4] Forwarding GTCCRE register Compare Match Capture to Other + * Channel GTCCRA Input Capture Source Enable */ + __IOM uint32_t ICAFF : 1; /*!< [5..5] Forwarding GTCCRF register Compare Match Capture to Other + * Channel GTCCRA Input Capture Source Enable */ + __IOM uint32_t ICAFPO : 1; /*!< [6..6] Forwarding Overflow to Other Channel GTCCRA Input Capture + * Source Enable */ + __IOM uint32_t ICAFPU : 1; /*!< [7..7] Forwarding Underflow to Other Channel GTCCRA Input Capture + * Source Enable */ + __IOM uint32_t ICACLK : 1; /*!< [8..8] Forwarding Count Clock to Other Channel GTCCRA Input + * Capture Source Enable */ + uint32_t : 5; + __IOM uint32_t ICAGRP : 2; /*!< [15..14] GTCCRA Input Capture Group Select */ + __IOM uint32_t ICBFA : 1; /*!< [16..16] Forwarding GTCCRA register Compare Match/Input Capture + * to Other Channel GTCCRB Input Capture Source Enable */ + __IOM uint32_t ICBFB : 1; /*!< [17..17] Forwarding GTCCRB register Compare Match/Input Capture + * to Other Channel GTCCRB Input Capture Source Enable */ + __IOM uint32_t ICBFC : 1; /*!< [18..18] Forwarding GTCCRC register Compare Match Capture to + * Other Channel GTCCRB Input Capture Source Enable */ + __IOM uint32_t ICBFD : 1; /*!< [19..19] Forwarding GTCCRD register Compare Match Capture to + * Other Channel GTCCRB Input Capture Source Enable */ + __IOM uint32_t ICBFE : 1; /*!< [20..20] Forwarding GTCCRE register Compare Match Capture to + * Other Channel GTCCRb Input Capture Source Enable */ + __IOM uint32_t ICBFF : 1; /*!< [21..21] Forwarding GTCCRF register Compare Match Capture to + * Other Channel GTCCRB Input Capture Source Enable */ + __IOM uint32_t ICBFPO : 1; /*!< [22..22] Forwarding Overflow to Other Channel GTCCRB Input Capture + * Source Enable */ + __IOM uint32_t ICBFPU : 1; /*!< [23..23] Forwarding Underflow to Other Channel GTCCRB Input + * Capture Source Enable */ + __IOM uint32_t ICBCLK : 1; /*!< [24..24] Forwarding Count Clock to Other Channel GTCCRB Input + * Capture Source Enable */ + uint32_t : 5; + __IOM uint32_t ICBGRP : 2; /*!< [31..30] GTCCRB Input Capture Group Select */ + } GTICCR_b; + }; +} R_GPT0_Type; /*!< Size = 240 (0xf0) */ + +/* =========================================================================================================================== */ +/* ================ R_GPT_OPS ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Output Phase Switching for GPT (R_GPT_OPS) + */ + +typedef struct /*!< (@ 0x40323F00) R_GPT_OPS Structure */ +{ + union + { + __IOM uint32_t OPSCR; /*!< (@ 0x00000000) Output Phase Switching Control Register */ + + struct + { + __IOM uint32_t UF : 1; /*!< [0..0] Input Phase Soft Setting WFThis bit sets the input phase + * by the software settings.This bit setting is valid when + * the OPSCR.FB bit = 1. */ + __IOM uint32_t VF : 1; /*!< [1..1] Input Phase Soft Setting VFThis bit sets the input phase + * by the software settings.This bit setting is valid when + * the OPSCR.FB bit = 1. */ + __IOM uint32_t WF : 1; /*!< [2..2] Input Phase Soft Setting UFThis bit sets the input phase + * by the software settings.This bit setting is valid when + * the OPSCR.FB bit = 1. */ + uint32_t : 1; + __IM uint32_t U : 1; /*!< [4..4] Input U-Phase MonitorThis bit monitors the state of the + * input phase.OPSCR.FB=0:External input monitoring by PCLKOPSCR.FB=1:Softwa + * e settings (UF/VF/WF) */ + __IM uint32_t V : 1; /*!< [5..5] Input V-Phase MonitorThis bit monitors the state of the + * input phase.OPSCR.FB=0:External input monitoring by PCLKOPSCR.FB=1:Softwa + * e settings (UF/VF/WF) */ + __IM uint32_t W : 1; /*!< [6..6] Input W-Phase MonitorThis bit monitors the state of the + * input phase.OPSCR.FB=0:External input monitoring by PCLKOPSCR.FB=1:Softwa + * e settings (UF/VF/WF) */ + uint32_t : 1; + __IOM uint32_t EN : 1; /*!< [8..8] Enable-Phase Output Control */ + uint32_t : 7; + __IOM uint32_t FB : 1; /*!< [16..16] External Feedback Signal EnableThis bit selects the + * input phase from the software settings and external input. */ + __IOM uint32_t P : 1; /*!< [17..17] Positive-Phase Output (P) Control */ + __IOM uint32_t N : 1; /*!< [18..18] Negative-Phase Output (N) Control */ + __IOM uint32_t INV : 1; /*!< [19..19] Invert-Phase Output Control */ + __IOM uint32_t RV : 1; /*!< [20..20] Output phase rotation direction reversal */ + __IOM uint32_t ALIGN : 1; /*!< [21..21] Input phase alignment */ + uint32_t : 2; + __IOM uint32_t GRP : 2; /*!< [25..24] Output disabled source selection */ + __IOM uint32_t GODF : 1; /*!< [26..26] Group output disable function */ + uint32_t : 2; + __IOM uint32_t NFEN : 1; /*!< [29..29] External Input Noise Filter Enable */ + __IOM uint32_t NFCS : 2; /*!< [31..30] External Input Noise Filter Clock selectionNoise filter + * sampling clock setting of the external input. */ + } OPSCR_b; + }; +} R_GPT_OPS_Type; /*!< Size = 4 (0x4) */ + +/* =========================================================================================================================== */ +/* ================ R_GPT_POEG0 ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Port Output Enable for GPT (R_GPT_POEG0) + */ + +typedef struct /*!< (@ 0x40212000) R_GPT_POEG0 Structure */ +{ + union + { + __IOM uint32_t POEGG; /*!< (@ 0x00000000) POEG Group Setting Register */ + + struct + { + __IOM uint32_t PIDF : 1; /*!< [0..0] Port Input Detection Flag */ + __IOM uint32_t IOCF : 1; /*!< [1..1] Real Time Overcurrent Detection Flag */ + __IOM uint32_t OSTPF : 1; /*!< [2..2] Oscillation Stop Detection Flag */ + __IOM uint32_t SSF : 1; /*!< [3..3] Software Stop Flag */ + __IOM uint32_t PIDE : 1; /*!< [4..4] Port Input Detection Enable. Note: Can be modified only + * once after a reset. */ + __IOM uint32_t IOCE : 1; /*!< [5..5] Enable for GPT Output-Disable Request. Note: Can be modified + * only once after a reset. */ + __IOM uint32_t OSTPE : 1; /*!< [6..6] Oscillation Stop Detection Enable. Note: Can be modified + * only once after a reset. */ + uint32_t : 1; + __IOM uint32_t CDRE0 : 1; /*!< [8..8] Comparator Disable Request Enable. Note: Can be modified + * only once after a reset. */ + __IOM uint32_t CDRE1 : 1; /*!< [9..9] Comparator Disable Request Enable. Note: Can be modified + * only once after a reset. */ + __IOM uint32_t CDRE2 : 1; /*!< [10..10] Comparator Disable Request Enable. Note: Can be modified + * only once after a reset. */ + __IOM uint32_t CDRE3 : 1; /*!< [11..11] Comparator Disable Request Enable. Note: Can be modified + * only once after a reset. */ + __IOM uint32_t CDRE4 : 1; /*!< [12..12] Comparator Disable Request Enable. Note: Can be modified + * only once after a reset. */ + __IOM uint32_t CDRE5 : 1; /*!< [13..13] Comparator Disable Request Enable. Note: Can be modified + * only once after a reset. */ + uint32_t : 2; + __IM uint32_t ST : 1; /*!< [16..16] GTETRG Input Status Flag */ + uint32_t : 7; + __IOM uint32_t DERR0ST : 1; /*!< [24..24] DSMIF0 Error Detection Flag */ + __IOM uint32_t DERR1ST : 1; /*!< [25..25] DSMIF1 Error Detection Flag */ + __IOM uint32_t DERR0E : 1; /*!< [26..26] DSMIF0 Error Detection Enable */ + __IOM uint32_t DERR1E : 1; /*!< [27..27] DSMIF1 Error Detection Enable */ + __IOM uint32_t INV : 1; /*!< [28..28] GTETRG Input Reverse */ + __IOM uint32_t NFEN : 1; /*!< [29..29] Noise Filter Enable */ + __IOM uint32_t NFCS : 2; /*!< [31..30] Noise Filter Clock Select */ + } POEGG_b; + }; + __IM uint32_t RESERVED[15]; + + union + { + __IOM uint16_t GTONCWP; /*!< (@ 0x00000040) GPT Output Stopping Control Group Write Protection + * Register */ + + struct + { + __IOM uint16_t WP : 1; /*!< [0..0] Register Writing Disable */ + uint16_t : 7; + __IOM uint16_t PRKEY : 8; /*!< [15..8] Key Code */ + } GTONCWP_b; + }; + __IM uint16_t RESERVED1; + + union + { + __IOM uint16_t GTONCCR; /*!< (@ 0x00000044) GPT Output Stopping Control Group Controlling + * Register */ + + struct + { + __IOM uint16_t NE : 1; /*!< [0..0] Direct Stopping Request Setting */ + uint16_t : 3; + __IOM uint16_t NFS : 4; /*!< [7..4] Direct Stopping Request Selection */ + __IOM uint16_t NFV : 1; /*!< [8..8] Direct Stopping Request Active Sense */ + uint16_t : 7; + } GTONCCR_b; + }; + __IM uint16_t RESERVED2; +} R_GPT_POEG0_Type; /*!< Size = 72 (0x48) */ + +/* =========================================================================================================================== */ +/* ================ R_ICU ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Interrupt Controller Unit (R_ICU) + */ + +typedef struct /*!< (@ 0x40006000) R_ICU Structure */ +{ + union + { + __IOM uint8_t IRQCR[16]; /*!< (@ 0x00000000) IRQ Control Register [0..15] */ + + struct + { + __IOM uint8_t IRQMD : 2; /*!< [1..0] IRQ Detection Sense Select */ + uint8_t : 2; + __IOM uint8_t FCLKSEL : 2; /*!< [5..4] IRQ Digital Filter Sampling Clock Select */ + uint8_t : 1; + __IOM uint8_t FLTEN : 1; /*!< [7..7] IRQ Digital Filter Enable */ + } IRQCR_b[16]; + }; + + union + { + __IM uint8_t NMICR; /*!< (@ 0x00000010) NMI Pin Interrupt Control Register */ + + struct + { + __IOM uint8_t NMIMD : 1; /*!< [0..0] NMI Detection Set */ + uint8_t : 3; + __IOM uint8_t NFCLKSEL : 2; /*!< [5..4] NMI Digital Filter Sampling Clock */ + uint8_t : 1; + __IOM uint8_t NFLTEN : 1; /*!< [7..7] NMI Digital Filter Enable */ + } NMICR_b; + }; + __IM uint8_t RESERVED; + __IM uint16_t RESERVED1; + __IM uint32_t RESERVED2[6143]; + + union + { + __IOM uint8_t SWIRQ_S; /*!< (@ 0x00006010) Software Interrupt Request Register for Secure + * Interrupt */ + + struct + { + __IOM uint8_t SWIRQS : 1; /*!< [0..0] Generates an interrupt for the other CPU subsystem. */ + uint8_t : 7; + } SWIRQ_S_b; + }; + __IM uint8_t RESERVED3; + __IM uint16_t RESERVED4; + __IM uint32_t RESERVED5[3]; + + union + { + __IOM uint8_t SWIRQ_NS; /*!< (@ 0x00006020) Software Interrupt Request Register for Non-secure + * Interrupt */ + + struct + { + __IOM uint8_t SWIRQNS : 1; /*!< [0..0] Generates an interrupt for the other CPU subsystem. */ + uint8_t : 7; + } SWIRQ_NS_b; + }; + __IM uint8_t RESERVED6; + __IM uint16_t RESERVED7; + __IM uint32_t RESERVED8[15]; + + union + { + __IOM uint16_t IENMIER; /*!< (@ 0x00006060) Integrated Error NMI Interrupt Enable Registe + * for CPU */ + + struct + { + __IOM uint16_t CMEN : 1; /*!< [0..0] Integrated Common Memory error nmi Enable */ + __IOM uint16_t LMEN : 1; /*!< [1..1] Integrated Local Memory error nmi Enable */ + __IOM uint16_t BUSEN : 1; /*!< [2..2] Integrated BUS error nmi Enable */ + uint16_t : 13; + } IENMIER_b; + }; + __IM uint16_t RESERVED9; + __IM uint32_t RESERVED10[39]; + + union + { + __IOM uint16_t NMIER; /*!< (@ 0x00006100) Non-Maskable Interrupt Enable Register */ + + struct + { + __IOM uint16_t IWDTEN : 1; /*!< [0..0] IWDT Underflow/Refresh Error Interrupt Enable */ + __IOM uint16_t WDTEN : 1; /*!< [1..1] WDT Underflow/Refresh Error Interrupt Enable */ + __IOM uint16_t LVD1EN : 1; /*!< [2..2] Voltage-Monitoring 1 Interrupt Enable */ + __IOM uint16_t LVD2EN : 1; /*!< [3..3] Voltage-Monitoring 2 Interrupt Enable */ + uint16_t : 2; + __IOM uint16_t OSTEN : 1; /*!< [6..6] Oscillation Stop Detection Interrupt Enable */ + __IOM uint16_t NMIEN : 1; /*!< [7..7] NMI Pin Interrupt Enable */ + uint16_t : 4; + __IOM uint16_t BUSEN : 1; /*!< [12..12] BUS error Interrupt Enable */ + __IOM uint16_t CMEN : 1; /*!< [13..13] Common Memory error Interrupt Enable */ + uint16_t : 1; + __IOM uint16_t LUEN : 1; /*!< [15..15] LockUp Interrupt Enable */ + } NMIER_b; + }; + __IM uint16_t RESERVED11; + __IM uint32_t RESERVED12[3]; + + union + { + __IOM uint16_t NMICLR; /*!< (@ 0x00006110) Non-Maskable Interrupt Status Clear Register */ + + struct + { + __IOM uint16_t IWDTCLR : 1; /*!< [0..0] IWDT Clear */ + __IOM uint16_t WDTCLR : 1; /*!< [1..1] WDT Clear */ + __IOM uint16_t LVD1CLR : 1; /*!< [2..2] PVD1 Clear */ + __IOM uint16_t LVD2CLR : 1; /*!< [3..3] PVD2 Clear */ + uint16_t : 2; + __IOM uint16_t OSTCLR : 1; /*!< [6..6] OST Clear */ + __IOM uint16_t NMICLR : 1; /*!< [7..7] NMI Clear */ + uint16_t : 4; + __IOM uint16_t BUSCLR : 1; /*!< [12..12] Bus Clear */ + __IOM uint16_t CMCLR : 1; /*!< [13..13] CM Clear */ + uint16_t : 1; + __IOM uint16_t LUCLR : 1; /*!< [15..15] LU Clear */ + } NMICLR_b; + }; + __IM uint16_t RESERVED13; + __IM uint32_t RESERVED14[3]; + + union + { + __IM uint16_t NMISR; /*!< (@ 0x00006120) Non-Maskable Interrupt Status Register */ + + struct + { + __IM uint16_t IWDTST : 1; /*!< [0..0] IWDT Underflow/Refresh Error Status Flag */ + __IM uint16_t WDTST : 1; /*!< [1..1] WDT Underflow/Refresh Error Status Flag */ + __IM uint16_t LVD1ST : 1; /*!< [2..2] Voltage-Monitoring 1 Interrupt Status Flag */ + __IM uint16_t LVD2ST : 1; /*!< [3..3] Voltage-Monitoring 2 Interrupt Status Flag */ + uint16_t : 2; + __IM uint16_t OSTST : 1; /*!< [6..6] Oscillation Stop Detection Interrupt Status Flag */ + __IM uint16_t NMIST : 1; /*!< [7..7] NMI Status Flag */ + uint16_t : 4; + __IM uint16_t BUSST : 1; /*!< [12..12] BUS error Interrupt Status Flag */ + __IM uint16_t CMST : 1; /*!< [13..13] Common Memory error Interrupt Status Flag */ + uint16_t : 1; + __IM uint16_t LUST : 1; /*!< [15..15] LockUp Interrupt Status Flag */ + } NMISR_b; + }; + __IM uint16_t RESERVED15; + __IM uint32_t RESERVED16[31]; + + union + { + __IOM uint32_t WUPEN; /*!< (@ 0x000061A0) Wake Up Interrupt Enable Register */ + + struct + { + __IOM uint32_t IRQWUPEN0 : 1; /*!< [0..0] IRQ0 Interrupt Deep Sleep/Software Standby Returns Enable + * bit */ + __IOM uint32_t IRQWUPEN1 : 1; /*!< [1..1] IRQ1 Interrupt Deep Sleep/Software Standby Returns Enable + * bit */ + __IOM uint32_t IRQWUPEN2 : 1; /*!< [2..2] IRQ2 Interrupt Deep Sleep/Software Standby Returns Enable + * bit */ + __IOM uint32_t IRQWUPEN3 : 1; /*!< [3..3] IRQ3 Interrupt Deep Sleep/Software Standby Returns Enable + * bit */ + __IOM uint32_t IRQWUPEN4 : 1; /*!< [4..4] IRQ4 Interrupt Deep Sleep/Software Standby Returns Enable + * bit */ + __IOM uint32_t IRQWUPEN5 : 1; /*!< [5..5] IRQ5 Interrupt Deep Sleep/Software Standby Returns Enable + * bit */ + __IOM uint32_t IRQWUPEN6 : 1; /*!< [6..6] IRQ6 Interrupt Deep Sleep/Software Standby Returns Enable + * bit */ + __IOM uint32_t IRQWUPEN7 : 1; /*!< [7..7] IRQ7 Interrupt Deep Sleep/Software Standby Returns Enable + * bit */ + __IOM uint32_t IRQWUPEN8 : 1; /*!< [8..8] IRQ8 Interrupt Deep Sleep/Software Standby Returns Enable + * bit */ + __IOM uint32_t IRQWUPEN9 : 1; /*!< [9..9] IRQ9 Interrupt Deep Sleep/Software Standby Returns Enable + * bit */ + __IOM uint32_t IRQWUPEN10 : 1; /*!< [10..10] IRQ10 Interrupt Deep Sleep/Software Standby Returns + * Enable bit */ + __IOM uint32_t IRQWUPEN11 : 1; /*!< [11..11] IRQ11 Interrupt Deep Sleep/Software Standby Returns + * Enable bit */ + __IOM uint32_t IRQWUPEN12 : 1; /*!< [12..12] IRQ12 Interrupt Deep Sleep/Software Standby Returns + * Enable bit */ + __IOM uint32_t IRQWUPEN13 : 1; /*!< [13..13] IRQ13 Interrupt Deep Sleep/Software Standby Returns + * Enable bit */ + __IOM uint32_t IRQWUPEN14 : 1; /*!< [14..14] IRQ14 Interrupt Deep Sleep/Software Standby Returns + * Enable bit */ + __IOM uint32_t IRQWUPEN15 : 1; /*!< [15..15] IRQ15 Interrupt Deep Sleep/Software Standby Returns + * Enable bit */ + __IOM uint32_t IWDTWUPEN : 1; /*!< [16..16] IWDT Interrupt Deep Sleep/Software Standby Returns + * Enable bit */ + uint32_t : 1; + __IOM uint32_t LVD1WUPEN : 1; /*!< [18..18] PVD1 Interrupt Deep Sleep/Software Standby Returns + * Enable bit */ + __IOM uint32_t LVD2WUPEN : 1; /*!< [19..19] PVD2 Interrupt Deep Sleep/Software Standby Returns + * Enable bit */ + __IOM uint32_t VBATTWUPEN : 1; /*!< [20..20] VBATT Monitor Interrupt Deep Sleep/Software Standby + * Returns Enable bit */ + uint32_t : 3; + __IOM uint32_t RTCALMWUPEN : 1; /*!< [24..24] RTC Alarm Interrupt Deep Sleep/Software Standby Returns + * Enable bit */ + __IOM uint32_t RTCPRDWUPEN : 1; /*!< [25..25] RCT Period Interrupt Deep Sleep/Software Standby Returns + * Enable bit */ + __IOM uint32_t USBHSWUPEN : 1; /*!< [26..26] USBHS Interrupt Deep Sleep/Software Standby Returns + * Enable bit */ + __IOM uint32_t USBFSWUPEN : 1; /*!< [27..27] USBFS0 Interrupt Deep Sleep/Software Standby Returns + * Enable bit */ + __IOM uint32_t AGT1UDWUPEN : 1; /*!< [28..28] AGT1 Underflow Interrupt Deep Sleep/Software Standby + * Returns Enable bit */ + __IOM uint32_t AGT1CAWUPEN : 1; /*!< [29..29] AGT1 Compare Match A Interrupt Deep Sleep/Software + * Standby Returns Enable bit */ + __IOM uint32_t AGT1CBWUPEN : 1; /*!< [30..30] AGT1 Compare Match B Interrupt Deep Sleep/Software + * Standby Returns Enable bit */ + __IOM uint32_t RIIC0WUPEN : 1; /*!< [31..31] RIIC0 Address Match Interrupt Deep Sleep/Software Standby + * Returns Enable bit */ + } WUPEN_b; + }; + + union + { + __IOM uint32_t WUPEN1; /*!< (@ 0x000061A4) Wake Up Interrupt Enable Register 1 */ + + struct + { + uint32_t : 3; + __IOM uint32_t COMPHS0WUPEN : 1; /*!< [3..3] Comparator-HS0 Interrupt Deep Sleep/Software Standby + * Returns Enable bit */ + uint32_t : 4; + __IOM uint32_t ULP0UWUPEN : 1; /*!< [8..8] ULPT0 Underflow Interrupt Deep Sleep/Software Standby + * Returns Enable bit */ + __IOM uint32_t ULP0AWUPEN : 1; /*!< [9..9] ULPT0 Compare Match A Interrupt Deep Sleep/Software Standby + * Returns Enable bit */ + __IOM uint32_t ULP0BWUPEN : 1; /*!< [10..10] ULPT0 Compare Match B Interrupt Deep Sleep/Software + * Standby Returns Enable bit */ + __IOM uint32_t I3CWUPEN : 1; /*!< [11..11] I3C Wakeup Condition Detection Interrupt Deep Sleep/Software + * Standby Returns Enable bit */ + __IOM uint32_t ULP1UWUPEN : 1; /*!< [12..12] ULPT1 Underflow Interrupt Deep Sleep/Software Standby + * Returns Enable bit */ + __IOM uint32_t ULP1AWUPEN : 1; /*!< [13..13] ULPT1 Compare Match A Interrupt Deep Sleep/Software + * Standby Returns Enable bit */ + __IOM uint32_t ULP1BWUPEN : 1; /*!< [14..14] ULPT1 Compare Match B Interrupt Deep Sleep/Software + * Standby Returns Enable bit */ + uint32_t : 17; + } WUPEN1_b; + }; + __IM uint32_t RESERVED17[86]; + + union + { + __IOM uint32_t IELSR[96]; /*!< (@ 0x00006300) ICU Event Link Setting Register [0..95] */ + + struct + { + __IOM uint32_t IELS : 9; /*!< [8..0] ICU Event selection to NVICSet the number for the event + * signal to be linked . */ + uint32_t : 7; + __IOM uint32_t IR : 1; /*!< [16..16] Interrupt Status Flag */ + uint32_t : 7; + __IOM uint32_t DTCE : 1; /*!< [24..24] DTC Activation Enable */ + uint32_t : 7; + } IELSR_b[96]; + }; +} R_ICU_Type; /*!< Size = 25728 (0x6480) */ + +/* =========================================================================================================================== */ +/* ================ R_IIC0 ================ */ +/* =========================================================================================================================== */ + +/** + * @brief I2C Bus Interface (R_IIC0) + */ + +typedef struct /*!< (@ 0x4025E000) R_IIC0 Structure */ +{ + union + { + __IOM uint8_t ICCR1; /*!< (@ 0x00000000) I2C Bus Control Register 1 */ + + struct + { + __IM uint8_t SDAI : 1; /*!< [0..0] SDA Line Monitor */ + __IM uint8_t SCLI : 1; /*!< [1..1] SCL Line Monitor */ + __IOM uint8_t SDAO : 1; /*!< [2..2] SDA Output Control/Monitor */ + __IOM uint8_t SCLO : 1; /*!< [3..3] SCL Output Control/Monitor */ + __IOM uint8_t SOWP : 1; /*!< [4..4] SCLO/SDAO Write Protect */ + __IOM uint8_t CLO : 1; /*!< [5..5] Extra SCL Clock Cycle Output */ + __IOM uint8_t IICRST : 1; /*!< [6..6] I2C Bus Interface Internal ResetNote:If an internal reset + * is initiated using the IICRST bit for a bus hang-up occurred + * during communication with the master device in slave mode, + * the states may become different between the slave device + * and the master device (due to the difference in the bit + * counter information). */ + __IOM uint8_t ICE : 1; /*!< [7..7] I2C Bus Interface Enable */ + } ICCR1_b; + }; + + union + { + __IOM uint8_t ICCR2; /*!< (@ 0x00000001) I2C Bus Control Register 2 */ + + struct + { + uint8_t : 1; + __IOM uint8_t ST : 1; /*!< [1..1] Start Condition Issuance RequestSet the ST bit to 1 (start + * condition issuance request) when the BBSY flag is set to + * 0 (bus free state). */ + __IOM uint8_t RS : 1; /*!< [2..2] Restart Condition Issuance RequestNote: Do not set the + * RS bit to 1 while issuing a stop condition. */ + __IOM uint8_t SP : 1; /*!< [3..3] Stop Condition Issuance RequestNote: Writing to the SP + * bit is not possible while the setting of the BBSY flag + * is 0 (bus free state).Note: Do not set the SP bit to 1 + * while a restart condition is being issued. */ + uint8_t : 1; + __IOM uint8_t TRS : 1; /*!< [5..5] Transmit/Receive Mode */ + __IOM uint8_t MST : 1; /*!< [6..6] Master/Slave Mode */ + __IM uint8_t BBSY : 1; /*!< [7..7] Bus Busy Detection Flag */ + } ICCR2_b; + }; + + union + { + __IOM uint8_t ICMR1; /*!< (@ 0x00000002) I2C Bus Mode Register 1 */ + + struct + { + __IOM uint8_t BC : 3; /*!< [2..0] Bit Counter */ + __OM uint8_t BCWP : 1; /*!< [3..3] BC Write Protect(This bit is read as 1.) */ + __IOM uint8_t CKS : 3; /*!< [6..4] Internal Reference Clock (fIIC) Selection ( fIIC = PCLKB + * / 2^CKS ) */ + __IOM uint8_t MTWP : 1; /*!< [7..7] MST/TRS Write Protect */ + } ICMR1_b; + }; + + union + { + __IOM uint8_t ICMR2; /*!< (@ 0x00000003) I2C Bus Mode Register 2 */ + + struct + { + __IOM uint8_t TMOS : 1; /*!< [0..0] Timeout Detection Time Select */ + __IOM uint8_t TMOL : 1; /*!< [1..1] Timeout L Count Control */ + __IOM uint8_t TMOH : 1; /*!< [2..2] Timeout H Count Control */ + uint8_t : 1; + __IOM uint8_t SDDL : 3; /*!< [6..4] SDA Output Delay Counter */ + __IOM uint8_t DLCS : 1; /*!< [7..7] SDA Output Delay Clock Source Select */ + } ICMR2_b; + }; + + union + { + __IOM uint8_t ICMR3; /*!< (@ 0x00000004) I2C Bus Mode Register 3 */ + + struct + { + __IOM uint8_t NF : 2; /*!< [1..0] Noise Filter Stage Selection */ + __IM uint8_t ACKBR : 1; /*!< [2..2] Receive Acknowledge */ + __IOM uint8_t ACKBT : 1; /*!< [3..3] Transmit Acknowledge */ + __IOM uint8_t ACKWP : 1; /*!< [4..4] ACKBT Write Protect */ + __IOM uint8_t RDRFS : 1; /*!< [5..5] RDRF Flag Set Timing Selection */ + __IOM uint8_t WAIT : 1; /*!< [6..6] WAITNote: When the value of the WAIT bit is to be read, + * be sure to read the ICDRR beforehand. */ + __IOM uint8_t SMBS : 1; /*!< [7..7] SMBus/I2C Bus Selection */ + } ICMR3_b; + }; + + union + { + __IOM uint8_t ICFER; /*!< (@ 0x00000005) I2C Bus Function Enable Register */ + + struct + { + __IOM uint8_t TMOE : 1; /*!< [0..0] Timeout Function Enable */ + __IOM uint8_t MALE : 1; /*!< [1..1] Master Arbitration-Lost Detection Enable */ + __IOM uint8_t NALE : 1; /*!< [2..2] NACK Transmission Arbitration-Lost Detection Enable */ + __IOM uint8_t SALE : 1; /*!< [3..3] Slave Arbitration-Lost Detection Enable */ + __IOM uint8_t NACKE : 1; /*!< [4..4] NACK Reception Transfer Suspension Enable */ + __IOM uint8_t NFE : 1; /*!< [5..5] Digital Noise Filter Circuit Enable */ + __IOM uint8_t SCLE : 1; /*!< [6..6] SCL Synchronous Circuit Enable */ + __IOM uint8_t FMPE : 1; /*!< [7..7] Fast-mode Plus Enable */ + } ICFER_b; + }; + + union + { + __IOM uint8_t ICSER; /*!< (@ 0x00000006) I2C Bus Status Enable Register */ + + struct + { + __IOM uint8_t SAR0E : 1; /*!< [0..0] Slave Address Register 0 Enable */ + __IOM uint8_t SAR1E : 1; /*!< [1..1] Slave Address Register 1 Enable */ + __IOM uint8_t SAR2E : 1; /*!< [2..2] Slave Address Register 2 Enable */ + __IOM uint8_t GCAE : 1; /*!< [3..3] General Call Address Enable */ + uint8_t : 1; + __IOM uint8_t DIDE : 1; /*!< [5..5] Device-ID Address Detection Enable */ + uint8_t : 1; + __IOM uint8_t HOAE : 1; /*!< [7..7] Host Address Enable */ + } ICSER_b; + }; + + union + { + __IOM uint8_t ICIER; /*!< (@ 0x00000007) I2C Bus Interrupt Enable Register */ + + struct + { + __IOM uint8_t TMOIE : 1; /*!< [0..0] Timeout Interrupt Request Enable */ + __IOM uint8_t ALIE : 1; /*!< [1..1] Arbitration-Lost Interrupt Request Enable */ + __IOM uint8_t STIE : 1; /*!< [2..2] Start Condition Detection Interrupt Request Enable */ + __IOM uint8_t SPIE : 1; /*!< [3..3] Stop Condition Detection Interrupt Request Enable */ + __IOM uint8_t NAKIE : 1; /*!< [4..4] NACK Reception Interrupt Request Enable */ + __IOM uint8_t RIE : 1; /*!< [5..5] Receive Data Full Interrupt Request Enable */ + __IOM uint8_t TEIE : 1; /*!< [6..6] Transmit End Interrupt Request Enable */ + __IOM uint8_t TIE : 1; /*!< [7..7] Transmit Data Empty Interrupt Request Enable */ + } ICIER_b; + }; + + union + { + __IOM uint8_t ICSR1; /*!< (@ 0x00000008) I2C Bus Status Register 1 */ + + struct + { + __IOM uint8_t AAS0 : 1; /*!< [0..0] Slave Address 0 Detection Flag */ + __IOM uint8_t AAS1 : 1; /*!< [1..1] Slave Address 1 Detection Flag */ + __IOM uint8_t AAS2 : 1; /*!< [2..2] Slave Address 2 Detection Flag */ + __IOM uint8_t GCA : 1; /*!< [3..3] General Call Address Detection Flag */ + uint8_t : 1; + __IOM uint8_t DID : 1; /*!< [5..5] Device-ID Address Detection Flag */ + uint8_t : 1; + __IOM uint8_t HOA : 1; /*!< [7..7] Host Address Detection Flag */ + } ICSR1_b; + }; + + union + { + __IOM uint8_t ICSR2; /*!< (@ 0x00000009) I2C Bus Status Register 2 */ + + struct + { + __IOM uint8_t TMOF : 1; /*!< [0..0] Timeout Detection Flag */ + __IOM uint8_t AL : 1; /*!< [1..1] Arbitration-Lost Flag */ + __IOM uint8_t START : 1; /*!< [2..2] Start Condition Detection Flag */ + __IOM uint8_t STOP : 1; /*!< [3..3] Stop Condition Detection Flag */ + __IOM uint8_t NACKF : 1; /*!< [4..4] NACK Detection Flag */ + __IOM uint8_t RDRF : 1; /*!< [5..5] Receive Data Full Flag */ + __IOM uint8_t TEND : 1; /*!< [6..6] Transmit End Flag */ + __IM uint8_t TDRE : 1; /*!< [7..7] Transmit Data Empty Flag */ + } ICSR2_b; + }; + __IOM R_IIC0_SAR_Type SAR[3]; /*!< (@ 0x0000000A) Slave Address Registers */ + + union + { + __IOM uint8_t ICBRL; /*!< (@ 0x00000010) I2C Bus Bit Rate Low-Level Register */ + + struct + { + __IOM uint8_t BRL : 5; /*!< [4..0] Bit Rate Low-Level Period(Low-level period of SCL clock) */ + uint8_t : 3; + } ICBRL_b; + }; + + union + { + __IOM uint8_t ICBRH; /*!< (@ 0x00000011) I2C Bus Bit Rate High-Level Register */ + + struct + { + __IOM uint8_t BRH : 5; /*!< [4..0] Bit Rate High-Level Period(High-level period of SCL clock) */ + uint8_t : 3; + } ICBRH_b; + }; + + union + { + __IOM uint8_t ICDRT; /*!< (@ 0x00000012) I2C Bus Transmit Data Register */ + + struct + { + __IOM uint8_t ICDRT : 8; /*!< [7..0] 8-bit read-write register that stores transmit data. */ + } ICDRT_b; + }; + + union + { + __IM uint8_t ICDRR; /*!< (@ 0x00000013) I2C Bus Receive Data Register */ + + struct + { + __IM uint8_t ICDRR : 8; /*!< [7..0] 8-bit register that stores the received data */ + } ICDRR_b; + }; + __IM uint8_t RESERVED[2]; + + union + { + __IOM uint8_t ICWUR; /*!< (@ 0x00000016) I2C Bus Wake Up Unit Register */ + + struct + { + __IOM uint8_t WUAFA : 1; /*!< [0..0] Wakeup Analog Filter Additional Selection */ + uint8_t : 3; + __IOM uint8_t WUACK : 1; /*!< [4..4] ACK bit for Wakeup Mode */ + __IOM uint8_t WUF : 1; /*!< [5..5] Wakeup Event Occurrence Flag */ + __IOM uint8_t WUIE : 1; /*!< [6..6] Wakeup Interrupt Request Enable */ + __IOM uint8_t WUE : 1; /*!< [7..7] Wakeup Function Enable */ + } ICWUR_b; + }; + + union + { + __IOM uint8_t ICWUR2; /*!< (@ 0x00000017) I2C Bus Wake up Unit Register 2 */ + + struct + { + __IOM uint8_t WUSEN : 1; /*!< [0..0] Wake-up Function Synchronous Enable */ + __IM uint8_t WUASYF : 1; /*!< [1..1] Wake-up Function Asynchronous Operation Status Flag */ + __IM uint8_t WUSYF : 1; /*!< [2..2] Wake-up Function Synchronous Operation Status Flag */ + uint8_t : 5; + } ICWUR2_b; + }; +} R_IIC0_Type; /*!< Size = 24 (0x18) */ + +/* =========================================================================================================================== */ +/* ================ R_IWDT ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Independent Watchdog Timer (R_IWDT) + */ + +typedef struct /*!< (@ 0x40202200) R_IWDT Structure */ +{ + union + { + __IOM uint8_t IWDTRR; /*!< (@ 0x00000000) IWDT Refresh Register */ + + struct + { + __IOM uint8_t IWDTRR : 8; /*!< [7..0] The counter is refreshed by writing 0x00 and then writing + * 0xFF to this register. */ + } IWDTRR_b; + }; + __IM uint8_t RESERVED; + + union + { + __IOM uint16_t IWDTCR; /*!< (@ 0x00000002) IWDT Control Register */ + + struct + { + __IOM uint16_t TOPS : 2; /*!< [1..0] Timeout Period Selection */ + uint16_t : 2; + __IOM uint16_t CKS : 4; /*!< [7..4] Clock Division Ratio Selection */ + __IOM uint16_t RPES : 2; /*!< [9..8] Window End Position Selection */ + uint16_t : 2; + __IOM uint16_t RPSS : 2; /*!< [13..12] Window Start Position Selection */ + uint16_t : 2; + } IWDTCR_b; + }; + + union + { + __IOM uint16_t IWDTSR; /*!< (@ 0x00000004) IWDT Status Register */ + + struct + { + __IM uint16_t CNTVAL : 14; /*!< [13..0] Down-Counter Value */ + __IOM uint16_t UNDFF : 1; /*!< [14..14] Underflow Flag */ + __IOM uint16_t REFEF : 1; /*!< [15..15] Refresh Error Flag */ + } IWDTSR_b; + }; + + union + { + __IOM uint8_t IWDTRCR; /*!< (@ 0x00000006) IWDT Reset Control Register */ + + struct + { + uint8_t : 7; + __IOM uint8_t RSTIRQS : 1; /*!< [7..7] Reset Interrupt Request Selection */ + } IWDTRCR_b; + }; + __IM uint8_t RESERVED1; + + union + { + __IOM uint8_t IWDTCSTPR; /*!< (@ 0x00000008) IWDT Count Stop Control Register */ + + struct + { + uint8_t : 7; + __IOM uint8_t SLCSTP : 1; /*!< [7..7] Sleep-Mode Count Stop Control */ + } IWDTCSTPR_b; + }; + __IM uint8_t RESERVED2; + __IM uint16_t RESERVED3; +} R_IWDT_Type; /*!< Size = 12 (0xc) */ + +/* =========================================================================================================================== */ +/* ================ R_I3C0 ================ */ +/* =========================================================================================================================== */ + +/** + * @brief I3C Bus Interface (R_I3C0) + */ + +typedef struct /*!< (@ 0x4035F000) R_I3C0 Structure */ +{ + union + { + __IOM uint32_t PRTS; /*!< (@ 0x00000000) Protocol Selection Register */ + + struct + { + __IOM uint32_t PRTMD : 1; /*!< [0..0] Protocol Mode */ + uint32_t : 31; + } PRTS_b; + }; + __IM uint32_t RESERVED[3]; + + union + { + __IOM uint32_t CECTL; /*!< (@ 0x00000010) Clock Enable Control Resisters */ + + struct + { + __IOM uint32_t CLKE : 1; /*!< [0..0] Clock Enable */ + uint32_t : 31; + } CECTL_b; + }; + + union + { + __IOM uint32_t BCTL; /*!< (@ 0x00000014) Bus Control Register */ + + struct + { + __IOM uint32_t INCBA : 1; /*!< [0..0] Include I3C Broadcast Address */ + uint32_t : 6; + __IOM uint32_t BMDS : 1; /*!< [7..7] Bus Mode Selection */ + __IOM uint32_t HJACKCTL : 1; /*!< [8..8] Hot-Join Acknowledge Control */ + uint32_t : 20; + __IOM uint32_t ABT : 1; /*!< [29..29] Abort */ + __IOM uint32_t RSM : 1; /*!< [30..30] Resume */ + __IOM uint32_t BUSE : 1; /*!< [31..31] Bus Enable */ + } BCTL_b; + }; + + union + { + __IOM uint32_t MSDVAD; /*!< (@ 0x00000018) Master Device Address Register */ + + struct + { + uint32_t : 16; + __IOM uint32_t MDYAD : 7; /*!< [22..16] Master Dynamic Address */ + uint32_t : 8; + __IOM uint32_t MDYADV : 1; /*!< [31..31] Master Dynamic Address Valid */ + } MSDVAD_b; + }; + __IM uint32_t RESERVED1; + + union + { + __IOM uint32_t RSTCTL; /*!< (@ 0x00000020) Reset Control Register */ + + struct + { + __IOM uint32_t RI3CRST : 1; /*!< [0..0] I3C Software Reset */ + __IOM uint32_t CMDQRST : 1; /*!< [1..1] Command Queue Software Reset */ + __IOM uint32_t RSPQRST : 1; /*!< [2..2] Response Queue Software Reset */ + __IOM uint32_t TDBRST : 1; /*!< [3..3] Transmit Data Buffer Software Reset */ + __IOM uint32_t RDBRST : 1; /*!< [4..4] Receive Data Buffer Software Reset */ + __IOM uint32_t IBIQRST : 1; /*!< [5..5] IBI Queue Software Reset */ + __IOM uint32_t RSQRST : 1; /*!< [6..6] Receive Status Queue Software Reset */ + uint32_t : 9; + __IOM uint32_t INTLRST : 1; /*!< [16..16] Internal Software Reset */ + uint32_t : 15; + } RSTCTL_b; + }; + + union + { + __IOM uint32_t PRSST; /*!< (@ 0x00000024) Present State Register */ + + struct + { + uint32_t : 2; + __IOM uint32_t CRMS : 1; /*!< [2..2] Current Master */ + uint32_t : 1; + __IM uint32_t TRMD : 1; /*!< [4..4] Transmit/Receive Mode */ + uint32_t : 2; + __OM uint32_t PRSSTWP : 1; /*!< [7..7] Present State Write Protect */ + uint32_t : 24; + } PRSST_b; + }; + __IM uint32_t RESERVED2[2]; + + union + { + __IOM uint32_t INST; /*!< (@ 0x00000030) Internal Status Register */ + + struct + { + uint32_t : 10; + __IOM uint32_t INEF : 1; /*!< [10..10] Internal Error Flag */ + uint32_t : 21; + } INST_b; + }; + + union + { + __IOM uint32_t INSTE; /*!< (@ 0x00000034) Internal Status Enable Register */ + + struct + { + uint32_t : 10; + __IOM uint32_t INEE : 1; /*!< [10..10] Internal Error Enable */ + uint32_t : 21; + } INSTE_b; + }; + + union + { + __IOM uint32_t INIE; /*!< (@ 0x00000038) Internal Interrupt Enable Register */ + + struct + { + uint32_t : 10; + __IOM uint32_t INEIE : 1; /*!< [10..10] Internal Error Interrupt Enable */ + uint32_t : 21; + } INIE_b; + }; + + union + { + __IOM uint32_t INSTFC; /*!< (@ 0x0000003C) Internal Status Force Register */ + + struct + { + uint32_t : 10; + __OM uint32_t INEFC : 1; /*!< [10..10] Internal Error Force */ + uint32_t : 21; + } INSTFC_b; + }; + __IM uint32_t RESERVED3; + + union + { + __IM uint32_t DVCT; /*!< (@ 0x00000044) Device Characteristic Table Register */ + + struct + { + uint32_t : 19; + __IM uint32_t IDX : 5; /*!< [23..19] DCT Table Index */ + uint32_t : 8; + } DVCT_b; + }; + __IM uint32_t RESERVED4[4]; + + union + { + __IOM uint32_t IBINCTL; /*!< (@ 0x00000058) IBI Notify Control Register */ + + struct + { + __IOM uint32_t NRHJCTL : 1; /*!< [0..0] Notify Rejected Hot-Join Control */ + __IOM uint32_t NRMRCTL : 1; /*!< [1..1] Notify Rejected Master Request Control */ + uint32_t : 1; + __IOM uint32_t NRSIRCTL : 1; /*!< [3..3] Notify Rejected Slave Interrupt Request Control */ + uint32_t : 28; + } IBINCTL_b; + }; + __IM uint32_t RESERVED5; + + union + { + __IOM uint32_t BFCTL; /*!< (@ 0x00000060) Bus Function Control Register */ + + struct + { + __IOM uint32_t MALE : 1; /*!< [0..0] Master Arbitration-Lost Detection Enable */ + __IOM uint32_t NALE : 1; /*!< [1..1] NACK Transmission Arbitration-Lost Detection Enable */ + __IOM uint32_t SALE : 1; /*!< [2..2] Slave Arbitration-Lost Detection Enable */ + uint32_t : 5; + __IOM uint32_t SCSYNE : 1; /*!< [8..8] SCL Synchronous Circuit Enable */ + uint32_t : 3; + __IOM uint32_t SMBS : 1; /*!< [12..12] SMBus/I2C Bus Selection */ + uint32_t : 1; + __IOM uint32_t FMPE : 1; /*!< [14..14] Fast-mode Plus Enable */ + __IOM uint32_t HSME : 1; /*!< [15..15] High Speed Mode Enable */ + uint32_t : 16; + } BFCTL_b; + }; + + union + { + __IOM uint32_t SVCTL; /*!< (@ 0x00000064) Slave Control Register */ + + struct + { + __IOM uint32_t GCAE : 1; /*!< [0..0] General Call Address Enable */ + uint32_t : 4; + __IOM uint32_t HSMCE : 1; /*!< [5..5] Hs-mode Master Code Enable */ + __IOM uint32_t DVIDE : 1; /*!< [6..6] Device-ID Address Enable */ + uint32_t : 8; + __IOM uint32_t HOAE : 1; /*!< [15..15] Host Address Enable */ + __IOM uint32_t SVAEn : 1; /*!< [16..16] Slave Address Enable n (n = 0) */ + uint32_t : 15; + } SVCTL_b; + }; + __IM uint32_t RESERVED6[2]; + + union + { + __IOM uint32_t REFCKCTL; /*!< (@ 0x00000070) Reference Clock Control Register */ + + struct + { + __IOM uint32_t IREFCKS : 3; /*!< [2..0] Internal Reference Clock Selection */ + uint32_t : 29; + } REFCKCTL_b; + }; + + union + { + __IOM uint32_t STDBR; /*!< (@ 0x00000074) Standard Bit Rate Register */ + + struct + { + __IOM uint32_t SBRLO : 8; /*!< [7..0] Count value of the Low-level period of SCL clock */ + __IOM uint32_t SBRHO : 8; /*!< [15..8] Count value of the High-level period of SCL clock */ + __IOM uint32_t SBRLP : 6; /*!< [21..16] Standard Bit Rate Low-level Period Push-Pull */ + uint32_t : 2; + __IOM uint32_t SBRHP : 6; /*!< [29..24] Standard Bit Rate High-Level Period Push-Pull */ + uint32_t : 1; + __IOM uint32_t DSBRPO : 1; /*!< [31..31] Double the Standard Bit Rate Period for Open-Drain */ + } STDBR_b; + }; + + union + { + __IOM uint32_t EXTBR; /*!< (@ 0x00000078) Extended Bit Rate Register */ + + struct + { + __IOM uint32_t EBRLO : 8; /*!< [7..0] Extended Bit Rate Low-Level Period Open-Drain */ + __IOM uint32_t EBRHO : 8; /*!< [15..8] Extended Bit Rate High-Level Period Open-Drain */ + __IOM uint32_t EBRLP : 6; /*!< [21..16] Extended Bit Rate Low-Level Period Push-Pull */ + uint32_t : 2; + __IOM uint32_t EBRHP : 6; /*!< [29..24] Extended Bit Rate Low-Level Period Push-Pull */ + uint32_t : 2; + } EXTBR_b; + }; + + union + { + __IOM uint32_t BFRECDT; /*!< (@ 0x0000007C) Bus Free Condition Detection Time Register */ + + struct + { + __IOM uint32_t FRECYC : 9; /*!< [8..0] Bus Free Condition Detection Cycle */ + uint32_t : 23; + } BFRECDT_b; + }; + + union + { + __IOM uint32_t BAVLCDT; /*!< (@ 0x00000080) Bus Available Condition Detection Time Register */ + + struct + { + __IOM uint32_t AVLCYC : 9; /*!< [8..0] Bus Available Condition Detection Cycle */ + uint32_t : 23; + } BAVLCDT_b; + }; + + union + { + __IOM uint32_t BIDLCDT; /*!< (@ 0x00000084) Bus Idle Condition Detection Time Register */ + + struct + { + __IOM uint32_t IDLCYC : 18; /*!< [17..0] Bus Idle Condition Detection Cycle */ + uint32_t : 14; + } BIDLCDT_b; + }; + + union + { + __IOM uint32_t OUTCTL; /*!< (@ 0x00000088) Output Control Register */ + + struct + { + __IOM uint32_t SDOC : 1; /*!< [0..0] SDA Output Control */ + __IOM uint32_t SCOC : 1; /*!< [1..1] SCL Output Control */ + __OM uint32_t SOCWP : 1; /*!< [2..2] SCL/SDA Output Control Write Protect */ + uint32_t : 1; + __IOM uint32_t EXCYC : 1; /*!< [4..4] Extra SCL Clock Cycle Output */ + uint32_t : 3; + __IOM uint32_t SDOD : 3; /*!< [10..8] SDA Output Delay */ + uint32_t : 4; + __IOM uint32_t SDODCS : 1; /*!< [15..15] SDA Output Delay Clock Source Selection */ + uint32_t : 16; + } OUTCTL_b; + }; + + union + { + __IOM uint32_t INCTL; /*!< (@ 0x0000008C) Input Control Register */ + + struct + { + __IOM uint32_t DNFS : 4; /*!< [3..0] Digital Noise Filter Stage Selection */ + __IOM uint32_t DNFE : 1; /*!< [4..4] Digital Noise Filter Circuit Enable */ + uint32_t : 27; + } INCTL_b; + }; + + union + { + __IOM uint32_t TMOCTL; /*!< (@ 0x00000090) Timeout Control Register */ + + struct + { + __IOM uint32_t TODTS : 2; /*!< [1..0] Timeout Detection Time Selection */ + uint32_t : 2; + __IOM uint32_t TOLCTL : 1; /*!< [4..4] Timeout L Count Control */ + __IOM uint32_t TOHCTL : 1; /*!< [5..5] Timeout H Count Control */ + __IOM uint32_t TOMDS : 2; /*!< [7..6] Timeout Operation Mode Selection */ + uint32_t : 24; + } TMOCTL_b; + }; + __IM uint32_t RESERVED7; + + union + { + __IOM uint32_t WUCTL; /*!< (@ 0x00000098) Wake Up Unit Control Register */ + + struct + { + __IOM uint32_t WUACKS : 1; /*!< [0..0] Wake-Up Acknowledge Selection */ + uint32_t : 3; + __IOM uint32_t WUANFS : 1; /*!< [4..4] Wake-Up Analog Noise Filter Selection */ + uint32_t : 1; + __IOM uint32_t WUFSYNE : 1; /*!< [6..6] Wake-Up function PCLKA Synchronous Enable */ + __IOM uint32_t WUFE : 1; /*!< [7..7] Wake-Up function Enable. */ + uint32_t : 24; + } WUCTL_b; + }; + __IM uint32_t RESERVED8; + + union + { + __IOM uint32_t ACKCTL; /*!< (@ 0x000000A0) Acknowledge Control Register */ + + struct + { + __IM uint32_t ACKR : 1; /*!< [0..0] Acknowledge Reception */ + __IOM uint32_t ACKT : 1; /*!< [1..1] Acknowledge Transmission */ + __OM uint32_t ACKTWP : 1; /*!< [2..2] ACKT Write Protect */ + uint32_t : 29; + } ACKCTL_b; + }; + + union + { + __IOM uint32_t SCSTRCTL; /*!< (@ 0x000000A4) SCL Stretch Control Register */ + + struct + { + __IOM uint32_t ACKTWE : 1; /*!< [0..0] Acknowledge Transmission Wait Enable */ + __IOM uint32_t RWE : 1; /*!< [1..1] Receive Wait Enable */ + uint32_t : 30; + } SCSTRCTL_b; + }; + __IM uint32_t RESERVED9[2]; + + union + { + __IOM uint32_t SCSTLCTL; /*!< (@ 0x000000B0) SCL Stalling Control Register */ + + struct + { + __IOM uint32_t STLCYC : 16; /*!< [15..0] Stalling Cycle */ + uint32_t : 12; + __IOM uint32_t AAPE : 1; /*!< [28..28] Assigend Address Phase Enable */ + __IOM uint32_t TRAPE : 1; /*!< [29..29] Transition Phase Enable */ + __IOM uint32_t PARPE : 1; /*!< [30..30] Parity Phase Enable */ + __IOM uint32_t ACKPE : 1; /*!< [31..31] ACK phase Enable */ + } SCSTLCTL_b; + }; + __IM uint32_t RESERVED10[3]; + + union + { + __IOM uint32_t SVTDLG0; /*!< (@ 0x000000C0) Slave Transfer Data Length Register 0 */ + + struct + { + uint32_t : 16; + __IOM uint32_t STDLG : 16; /*!< [31..16] Slave Transfer Data Length */ + } SVTDLG0_b; + }; + __IM uint32_t RESERVED11[31]; + + union + { + __IOM uint32_t CNDCTL; /*!< (@ 0x00000140) Condition Control Register */ + + struct + { + __IOM uint32_t STCND : 1; /*!< [0..0] START (S) Condition Issuance */ + __IOM uint32_t SRCND : 1; /*!< [1..1] Repeated START (Sr) Condition Issuance */ + __IOM uint32_t SPCND : 1; /*!< [2..2] STOP (P) Condition Issuance */ + uint32_t : 29; + } CNDCTL_b; + }; + __IM uint32_t RESERVED12[3]; + __OM uint32_t NCMDQP; /*!< (@ 0x00000150) Normal Command Queue Port Register */ + __IM uint32_t NRSPQP; /*!< (@ 0x00000154) Normal Response Queue Port Register */ + __IOM uint32_t NTDTBP0; /*!< (@ 0x00000158) Normal Transfer Data Buffer Port Register 0 */ + __IM uint32_t RESERVED13[8]; + __IOM uint32_t NIBIQP; /*!< (@ 0x0000017C) Normal IBI Queue Port Register */ + __IM uint32_t NRSQP; /*!< (@ 0x00000180) Normal Receive Status Queue Port Register */ + __IM uint32_t RESERVED14[3]; + + union + { + __IOM uint32_t NQTHCTL; /*!< (@ 0x00000190) Normal Queue Threshold Control Register */ + + struct + { + __IOM uint32_t CMDQTH : 8; /*!< [7..0] Normal Command Ready Queue Threshold */ + __IOM uint32_t RSPQTH : 8; /*!< [15..8] Normal Response Queue Threshold */ + __IOM uint32_t IBIDSSZ : 8; /*!< [23..16] Normal IBI Data Segment Size */ + __IOM uint32_t IBIQTH : 8; /*!< [31..24] Normal IBI Queue Threshold */ + } NQTHCTL_b; + }; + + union + { + __IOM uint32_t NTBTHCTL0; /*!< (@ 0x00000194) Normal Transfer Data Buffer Threshold Control + * Register 0 */ + + struct + { + __IOM uint32_t TXDBTH : 3; /*!< [2..0] Normal Transmit Data Buffer Threshold */ + uint32_t : 5; + __IOM uint32_t RXDBTH : 3; /*!< [10..8] Normal Receive Data Buffer Threshold */ + uint32_t : 5; + __IOM uint32_t TXSTTH : 3; /*!< [18..16] Normal Tx Start Threshold */ + uint32_t : 5; + __IOM uint32_t RXSTTH : 3; /*!< [26..24] Normal Rx Start Threshold */ + uint32_t : 5; + } NTBTHCTL0_b; + }; + __IM uint32_t RESERVED15[10]; + + union + { + __IOM uint32_t NRQTHCTL; /*!< (@ 0x000001C0) Normal Receive Status Queue Threshold Control + * Register */ + + struct + { + __IOM uint32_t RSQTH : 8; /*!< [7..0] Normal Receive Status Queue Threshold */ + uint32_t : 24; + } NRQTHCTL_b; + }; + __IM uint32_t RESERVED16[3]; + + union + { + __IOM uint32_t BST; /*!< (@ 0x000001D0) Bus Status Register */ + + struct + { + __IOM uint32_t STCNDDF : 1; /*!< [0..0] START condition Detection Flag */ + __IOM uint32_t SPCNDDF : 1; /*!< [1..1] STOP condition Detection Flag */ + __IOM uint32_t HDREXDF : 1; /*!< [2..2] HDR Exit Pattern Detection Flag */ + uint32_t : 1; + __IOM uint32_t NACKDF : 1; /*!< [4..4] NACK Detection Flag */ + uint32_t : 3; + __IOM uint32_t TENDF : 1; /*!< [8..8] Transmit End Flag */ + uint32_t : 7; + __IOM uint32_t ALF : 1; /*!< [16..16] Arbitration Lost Flag */ + uint32_t : 3; + __IOM uint32_t TODF : 1; /*!< [20..20] Timeout Detection Flag */ + uint32_t : 11; + } BST_b; + }; + + union + { + __IOM uint32_t BSTE; /*!< (@ 0x000001D4) Bus Status Enable Register */ + + struct + { + __IOM uint32_t STCNDDE : 1; /*!< [0..0] START condition Detection Enable */ + __IOM uint32_t SPCNDDE : 1; /*!< [1..1] STOP condition Detection Enable */ + __IOM uint32_t HDREXDE : 1; /*!< [2..2] HDR Exit Pattern Detection Enable */ + uint32_t : 1; + __IOM uint32_t NACKDE : 1; /*!< [4..4] NACK Detection Enable */ + uint32_t : 3; + __IOM uint32_t TENDE : 1; /*!< [8..8] Transmit End Enable */ + uint32_t : 7; + __IOM uint32_t ALE : 1; /*!< [16..16] Arbitration Lost Enable */ + uint32_t : 3; + __IOM uint32_t TODE : 1; /*!< [20..20] Timeout Detection Enable */ + uint32_t : 11; + } BSTE_b; + }; + + union + { + __IOM uint32_t BIE; /*!< (@ 0x000001D8) Bus Interrupt Enable Register */ + + struct + { + __IOM uint32_t STCNDDIE : 1; /*!< [0..0] START condition Detection Interrupt Enable */ + __IOM uint32_t SPCNDDIE : 1; /*!< [1..1] STOP condition Detection Interrupt Enable */ + __IOM uint32_t HDREXDIE : 1; /*!< [2..2] HDR Exit Pattern Detection Interrupt Enable */ + uint32_t : 1; + __IOM uint32_t NACKDIE : 1; /*!< [4..4] NACK Detection Interrupt Enable */ + uint32_t : 3; + __IOM uint32_t TENDIE : 1; /*!< [8..8] Transmit End Interrupt Enable */ + uint32_t : 7; + __IOM uint32_t ALIE : 1; /*!< [16..16] Arbitration Lost Interrupt Enable */ + uint32_t : 3; + __IOM uint32_t TODIE : 1; /*!< [20..20] Timeout Detection Interrupt Enable */ + uint32_t : 11; + } BIE_b; + }; + + union + { + __IOM uint32_t BSTFC; /*!< (@ 0x000001DC) Bus Status Force Register */ + + struct + { + __OM uint32_t STCNDDFC : 1; /*!< [0..0] START condition Detection Force */ + __OM uint32_t SPCNDDFC : 1; /*!< [1..1] STOP condition Detection Force */ + __OM uint32_t HDREXDFC : 1; /*!< [2..2] HDR Exit Pattern Detection Force */ + uint32_t : 1; + __OM uint32_t NACKDFC : 1; /*!< [4..4] NACK Detection Force */ + uint32_t : 3; + __OM uint32_t TENDFC : 1; /*!< [8..8] Transmit End Force */ + uint32_t : 7; + __OM uint32_t ALFC : 1; /*!< [16..16] Arbitration Lost Force */ + uint32_t : 3; + __OM uint32_t TODFC : 1; /*!< [20..20] Timeout Detection Force */ + uint32_t : 11; + } BSTFC_b; + }; + + union + { + __IOM uint32_t NTST; /*!< (@ 0x000001E0) Normal Transfer Status Register */ + + struct + { + __IOM uint32_t TDBEF0 : 1; /*!< [0..0] Normal Transmit Data Buffer Empty Flag 0 */ + __IOM uint32_t RDBFF0 : 1; /*!< [1..1] Normal Receive Data Buffer Full Flag 0 */ + __IOM uint32_t IBIQEFF : 1; /*!< [2..2] Normal IBI Queue Empty/Full Flag */ + __IOM uint32_t CMDQEF : 1; /*!< [3..3] Normal Command Queue Empty Flag */ + __IOM uint32_t RSPQFF : 1; /*!< [4..4] Normal Response Queue Full Flag */ + __IOM uint32_t TABTF : 1; /*!< [5..5] Normal Transfer Abort Flag */ + uint32_t : 3; + __IOM uint32_t TEF : 1; /*!< [9..9] Normal Transfer Error Flag */ + uint32_t : 10; + __IOM uint32_t RSQFF : 1; /*!< [20..20] Normal Receive Status Queue Full Flag */ + uint32_t : 11; + } NTST_b; + }; + + union + { + __IOM uint32_t NTSTE; /*!< (@ 0x000001E4) Normal Transfer Status Enable Register */ + + struct + { + __IOM uint32_t TDBEE0 : 1; /*!< [0..0] Normal Transmit Data Buffer Empty Enable 0 */ + __IOM uint32_t RDBFE0 : 1; /*!< [1..1] Normal Receive Data Buffer Full Enable 0 */ + __IOM uint32_t IBIQEFE : 1; /*!< [2..2] Normal IBI Queue Empty/Full Enable */ + __IOM uint32_t CMDQEE : 1; /*!< [3..3] Normal Command Queue Empty Enable */ + __IOM uint32_t RSPQFE : 1; /*!< [4..4] Normal Response Queue Full Enable */ + __IOM uint32_t TABTE : 1; /*!< [5..5] Normal Transfer Abort Enable */ + uint32_t : 3; + __IOM uint32_t TEE : 1; /*!< [9..9] Normal Transfer Error Enable */ + uint32_t : 10; + __IOM uint32_t RSQFE : 1; /*!< [20..20] Normal Receive Status Queue Full Enable */ + uint32_t : 11; + } NTSTE_b; + }; + + union + { + __IOM uint32_t NTIE; /*!< (@ 0x000001E8) Normal Transfer Interrupt Enable Register */ + + struct + { + __IOM uint32_t TDBEIE0 : 1; /*!< [0..0] Normal Transmit Data Buffer Empty Interrupt Enable 0 */ + __IOM uint32_t RDBFIE0 : 1; /*!< [1..1] Normal Receive Data Buffer Full Interrupt Enable 0 */ + __IOM uint32_t IBIQEFIE : 1; /*!< [2..2] Normal IBI Queue Empty/Full Interrupt Enable */ + __IOM uint32_t CMDQEIE : 1; /*!< [3..3] Normal Command Queue Empty Interrupt Enable */ + __IOM uint32_t RSPQFIE : 1; /*!< [4..4] Normal Response Queue Full Interrupt Enable */ + __IOM uint32_t TABTIE : 1; /*!< [5..5] Normal Transfer Abort Interrupt Enable */ + uint32_t : 3; + __IOM uint32_t TEIE : 1; /*!< [9..9] Normal Transfer Error Interrupt Enable */ + uint32_t : 10; + __IOM uint32_t RSQFIE : 1; /*!< [20..20] Normal Receive Status Queue Full Interrupt Enable */ + uint32_t : 11; + } NTIE_b; + }; + + union + { + __IOM uint32_t NTSTFC; /*!< (@ 0x000001EC) Normal Transfer Status Force Register */ + + struct + { + __OM uint32_t TDBEFC0 : 1; /*!< [0..0] Normal Transmit Data Buffer Empty Force 0 */ + __OM uint32_t RDBFFC0 : 1; /*!< [1..1] Normal Receive Data Buffer Full Force 0 */ + __OM uint32_t IBIQEFFC : 1; /*!< [2..2] Normal IBI Queue Empty/Full Force */ + __OM uint32_t CMDQEFC : 1; /*!< [3..3] Normal Command Queue Empty Force */ + __OM uint32_t RSPQFFC : 1; /*!< [4..4] Normal Response Queue Full Force */ + __OM uint32_t TABTFC : 1; /*!< [5..5] Normal Transfer Abort Force */ + uint32_t : 3; + __OM uint32_t TEFC : 1; /*!< [9..9] Normal Transfer Error Force */ + uint32_t : 10; + __OM uint32_t RSQFFC : 1; /*!< [20..20] Normal Receive Status Queue Full Force */ + uint32_t : 11; + } NTSTFC_b; + }; + __IM uint32_t RESERVED17[8]; + + union + { + __IM uint32_t BCST; /*!< (@ 0x00000210) Bus Condition Status Register */ + + struct + { + __IM uint32_t BFREF : 1; /*!< [0..0] Bus Free Detection Flag */ + __IM uint32_t BAVLF : 1; /*!< [1..1] Bus Available Detection Flag */ + __IM uint32_t BIDLF : 1; /*!< [2..2] Bus Idle Detection Flag */ + uint32_t : 29; + } BCST_b; + }; + + union + { + __IOM uint32_t SVST; /*!< (@ 0x00000214) Slave Status Register */ + + struct + { + __IOM uint32_t GCAF : 1; /*!< [0..0] General Call Address Detection Flag */ + uint32_t : 4; + __IOM uint32_t HSMCF : 1; /*!< [5..5] Hs-mode Master Code Detection Flag */ + __IOM uint32_t DVIDF : 1; /*!< [6..6] Device-ID Address Detection Flag */ + uint32_t : 8; + __IOM uint32_t HOAF : 1; /*!< [15..15] Host Address Detection Flag */ + __IOM uint32_t SVAFn : 1; /*!< [16..16] Slave Address Detection Flag n (n = 0) */ + uint32_t : 15; + } SVST_b; + }; + + union + { + __IOM uint32_t WUST; /*!< (@ 0x00000218) Wake Up Unit Control Register */ + + struct + { + __IOM uint32_t WUASYNF : 1; /*!< [0..0] Wake-up function asynchronous operation status flag. */ + uint32_t : 31; + } WUST_b; + }; + __IM uint32_t RESERVED18[2]; + + union + { + __IOM uint32_t DATBAS0; /*!< (@ 0x00000224) Device Address Table Basic Register 0 */ + + struct + { + __IOM uint32_t DVSTAD : 7; /*!< [6..0] Device Static Address */ + uint32_t : 5; + __IOM uint32_t DVIBIPL : 1; /*!< [12..12] Device IBI Payload */ + __IOM uint32_t DVSIRRJ : 1; /*!< [13..13] Device In-Band Slave Interrupt Request Reject */ + __IOM uint32_t DVMRRJ : 1; /*!< [14..14] Device In-Band Master Request Reject */ + __IOM uint32_t DVIBITS : 1; /*!< [15..15] Device IBI Time-stamp */ + __IOM uint32_t DVDYAD : 8; /*!< [23..16] Device I3C Dynamic Address */ + uint32_t : 5; + __IOM uint32_t DVNACK : 2; /*!< [30..29] Device NACK Retry Count */ + __IOM uint32_t DVTYP : 1; /*!< [31..31] Device Type */ + } DATBAS0_b; + }; + __IM uint32_t RESERVED19; + + union + { + __IOM uint32_t DATBAS1; /*!< (@ 0x0000022C) Device Address Table Basic Register 1 */ + + struct + { + __IOM uint32_t DVSTAD : 7; /*!< [6..0] Device Static Address */ + uint32_t : 5; + __IOM uint32_t DVIBIPL : 1; /*!< [12..12] Device IBI Payload */ + __IOM uint32_t DVSIRRJ : 1; /*!< [13..13] Device In-Band Slave Interrupt Request Reject */ + __IOM uint32_t DVMRRJ : 1; /*!< [14..14] Device In-Band Master Request Reject */ + __IOM uint32_t DVIBITS : 1; /*!< [15..15] Device IBI Time-stamp */ + __IOM uint32_t DVDYAD : 8; /*!< [23..16] Device I3C Dynamic Address */ + uint32_t : 5; + __IOM uint32_t DVNACK : 2; /*!< [30..29] Device NACK Retry Count */ + __IOM uint32_t DVTYP : 1; /*!< [31..31] Device Type */ + } DATBAS1_b; + }; + __IM uint32_t RESERVED20; + + union + { + __IOM uint32_t DATBAS2; /*!< (@ 0x00000234) Device Address Table Basic Register 2 */ + + struct + { + __IOM uint32_t DVSTAD : 7; /*!< [6..0] Device Static Address */ + uint32_t : 5; + __IOM uint32_t DVIBIPL : 1; /*!< [12..12] Device IBI Payload */ + __IOM uint32_t DVSIRRJ : 1; /*!< [13..13] Device In-Band Slave Interrupt Request Reject */ + __IOM uint32_t DVMRRJ : 1; /*!< [14..14] Device In-Band Master Request Reject */ + __IOM uint32_t DVIBITS : 1; /*!< [15..15] Device IBI Time-stamp */ + __IOM uint32_t DVDYAD : 8; /*!< [23..16] Device I3C Dynamic Address */ + uint32_t : 5; + __IOM uint32_t DVNACK : 2; /*!< [30..29] Device NACK Retry Count */ + __IOM uint32_t DVTYP : 1; /*!< [31..31] Device Type */ + } DATBAS2_b; + }; + __IM uint32_t RESERVED21; + + union + { + __IOM uint32_t DATBAS3; /*!< (@ 0x0000023C) Device Address Table Basic Register 3 */ + + struct + { + __IOM uint32_t DVSTAD : 7; /*!< [6..0] Device Static Address */ + uint32_t : 5; + __IOM uint32_t DVIBIPL : 1; /*!< [12..12] Device IBI Payload */ + __IOM uint32_t DVSIRRJ : 1; /*!< [13..13] Device In-Band Slave Interrupt Request Reject */ + __IOM uint32_t DVMRRJ : 1; /*!< [14..14] Device In-Band Master Request Reject */ + __IOM uint32_t DVIBITS : 1; /*!< [15..15] Device IBI Time-stamp */ + __IOM uint32_t DVDYAD : 8; /*!< [23..16] Device I3C Dynamic Address */ + uint32_t : 5; + __IOM uint32_t DVNACK : 2; /*!< [30..29] Device NACK Retry Count */ + __IOM uint32_t DVTYP : 1; /*!< [31..31] Device Type */ + } DATBAS3_b; + }; + __IM uint32_t RESERVED22[24]; + + union + { + __IOM uint32_t EXDATBAS; /*!< (@ 0x000002A0) Extended Device Address Table Basic Register */ + + struct + { + __IOM uint32_t EDSTAD : 7; /*!< [6..0] Extended Device Static Address */ + uint32_t : 9; + __IOM uint32_t EDDYAD : 8; /*!< [23..16] Extended Device I3C Dynamic Address */ + uint32_t : 5; + __IOM uint32_t EDNACK : 2; /*!< [30..29] Extended Device NACK Retry Count */ + __IOM uint32_t EDTYP : 1; /*!< [31..31] Extended Device Type */ + } EXDATBAS_b; + }; + __IM uint32_t RESERVED23[3]; + + union + { + __IOM uint32_t SDATBAS0; /*!< (@ 0x000002B0) Slave Device Address Table Basic Register 0 */ + + struct + { + __IOM uint32_t SDSTAD : 10; /*!< [9..0] Slave Device Static Address */ + __IOM uint32_t SDADLS : 1; /*!< [10..10] Slave Device Address Length Selection */ + uint32_t : 1; + __IOM uint32_t SDIBIPL : 1; /*!< [12..12] Slave Device IBI Payload */ + uint32_t : 3; + __IOM uint32_t SDDYAD : 7; /*!< [22..16] Slave Device I3C Dynamic Address */ + uint32_t : 9; + } SDATBAS0_b; + }; + + union + { + __IOM uint32_t SDATBAS1; /*!< (@ 0x000002B4) Slave Device Address Table Basic Register 1 */ + + struct + { + __IOM uint32_t SDSTAD : 10; /*!< [9..0] Slave Device Static Address */ + __IOM uint32_t SDADLS : 1; /*!< [10..10] Slave Device Address Length Selection */ + uint32_t : 1; + __IOM uint32_t SDIBIPL : 1; /*!< [12..12] Slave Device IBI Payload */ + uint32_t : 3; + __IOM uint32_t SDDYAD : 7; /*!< [22..16] Slave Device I3C Dynamic Address */ + uint32_t : 9; + } SDATBAS1_b; + }; + + union + { + __IOM uint32_t SDATBAS2; /*!< (@ 0x000002B8) Slave Device Address Table Basic Register 2 */ + + struct + { + __IOM uint32_t SDSTAD : 10; /*!< [9..0] Slave Device Static Address */ + __IOM uint32_t SDADLS : 1; /*!< [10..10] Slave Device Address Length Selection */ + uint32_t : 1; + __IOM uint32_t SDIBIPL : 1; /*!< [12..12] Slave Device IBI Payload */ + uint32_t : 3; + __IOM uint32_t SDDYAD : 7; /*!< [22..16] Slave Device I3C Dynamic Address */ + uint32_t : 9; + } SDATBAS2_b; + }; + __IM uint32_t RESERVED24[5]; + + union + { + __IOM uint32_t MSDCT0; /*!< (@ 0x000002D0) Master Device Characteristic Table Register 0 */ + + struct + { + uint32_t : 8; + __IOM uint32_t RBCR0 : 1; /*!< [8..8] Max Data Speed Limitation */ + __IOM uint32_t RBCR1 : 1; /*!< [9..9] IBI Request Capable */ + __IOM uint32_t RBCR2 : 1; /*!< [10..10] IBI Payload */ + __IOM uint32_t RBCR3 : 1; /*!< [11..11] Offline Capable */ + uint32_t : 2; + __IOM uint32_t RBCR76 : 2; /*!< [15..14] Device Role */ + uint32_t : 16; + } MSDCT0_b; + }; + + union + { + __IOM uint32_t MSDCT1; /*!< (@ 0x000002D4) Master Device Characteristic Table Register 1 */ + + struct + { + uint32_t : 8; + __IOM uint32_t RBCR0 : 1; /*!< [8..8] Max Data Speed Limitation */ + __IOM uint32_t RBCR1 : 1; /*!< [9..9] IBI Request Capable */ + __IOM uint32_t RBCR2 : 1; /*!< [10..10] IBI Payload */ + __IOM uint32_t RBCR3 : 1; /*!< [11..11] Offline Capable */ + uint32_t : 2; + __IOM uint32_t RBCR76 : 2; /*!< [15..14] Device Role */ + uint32_t : 16; + } MSDCT1_b; + }; + + union + { + __IOM uint32_t MSDCT2; /*!< (@ 0x000002D8) Master Device Characteristic Table Register 2 */ + + struct + { + uint32_t : 8; + __IOM uint32_t RBCR0 : 1; /*!< [8..8] Max Data Speed Limitation */ + __IOM uint32_t RBCR1 : 1; /*!< [9..9] IBI Request Capable */ + __IOM uint32_t RBCR2 : 1; /*!< [10..10] IBI Payload */ + __IOM uint32_t RBCR3 : 1; /*!< [11..11] Offline Capable */ + uint32_t : 2; + __IOM uint32_t RBCR76 : 2; /*!< [15..14] Device Role */ + uint32_t : 16; + } MSDCT2_b; + }; + + union + { + __IOM uint32_t MSDCT3; /*!< (@ 0x000002DC) Master Device Characteristic Table Register 3 */ + + struct + { + uint32_t : 8; + __IOM uint32_t RBCR0 : 1; /*!< [8..8] Max Data Speed Limitation */ + __IOM uint32_t RBCR1 : 1; /*!< [9..9] IBI Request Capable */ + __IOM uint32_t RBCR2 : 1; /*!< [10..10] IBI Payload */ + __IOM uint32_t RBCR3 : 1; /*!< [11..11] Offline Capable */ + uint32_t : 2; + __IOM uint32_t RBCR76 : 2; /*!< [15..14] Device Role */ + uint32_t : 16; + } MSDCT3_b; + }; + __IM uint32_t RESERVED25[16]; + + union + { + __IOM uint32_t SVDCT; /*!< (@ 0x00000320) Slave Device Characteristic Table Register */ + + struct + { + __IOM uint32_t TDCR : 8; /*!< [7..0] Transfar Device Characteristic Register */ + __IOM uint32_t TBCR0 : 1; /*!< [8..8] Max Data Speed Limitation */ + __IOM uint32_t TBCR1 : 1; /*!< [9..9] IBI Request Capable */ + __IOM uint32_t TBCR2 : 1; /*!< [10..10] IBI Payload */ + __IOM uint32_t TBCR3 : 1; /*!< [11..11] Offline Capable */ + uint32_t : 2; + __IOM uint32_t TBCR76 : 2; /*!< [15..14] Device Role */ + uint32_t : 16; + } SVDCT_b; + }; + __IOM uint32_t SDCTPIDL; /*!< (@ 0x00000324) Slave Device Characteristic Table Provisional + * ID Low Register */ + __IOM uint32_t SDCTPIDH; /*!< (@ 0x00000328) Slave Device Characteristic Table Provisional + * ID High Register */ + __IM uint32_t RESERVED26; + + union + { + __IM uint32_t SVDVAD0; /*!< (@ 0x00000330) Slave Device Address Register 0 */ + + struct + { + uint32_t : 16; + __IM uint32_t SVAD : 10; /*!< [25..16] Slave Address */ + uint32_t : 1; + __IM uint32_t SADLG : 1; /*!< [27..27] Slave Address Length */ + uint32_t : 2; + __IM uint32_t SSTADV : 1; /*!< [30..30] Slave Static Address Valid */ + __IM uint32_t SDYADV : 1; /*!< [31..31] Slave Dynamic Address Valid */ + } SVDVAD0_b; + }; + __IM uint32_t RESERVED27[7]; + + union + { + __IOM uint32_t CSECMD; /*!< (@ 0x00000350) CCC Slave Events Command Register */ + + struct + { + __IOM uint32_t SVIRQE : 1; /*!< [0..0] Slave Interrupt Requests Enable */ + __IOM uint32_t MSRQE : 1; /*!< [1..1] Mastership Requests Enable */ + uint32_t : 1; + __IOM uint32_t HJEVE : 1; /*!< [3..3] Hot-Join Event Enable */ + uint32_t : 28; + } CSECMD_b; + }; + + union + { + __IOM uint32_t CEACTST; /*!< (@ 0x00000354) CCC Enter Activity State Register */ + + struct + { + __IOM uint32_t ACTST : 4; /*!< [3..0] Activity State */ + uint32_t : 28; + } CEACTST_b; + }; + + union + { + __IOM uint32_t CMWLG; /*!< (@ 0x00000358) CCC Max Write Length Register */ + + struct + { + __IOM uint32_t MWLG : 16; /*!< [15..0] Max Write Length */ + uint32_t : 16; + } CMWLG_b; + }; + + union + { + __IOM uint32_t CMRLG; /*!< (@ 0x0000035C) CCC Max Read Length Register */ + + struct + { + __IOM uint32_t MRLG : 16; /*!< [15..0] Max Read Length */ + __IOM uint32_t IBIPSZ : 8; /*!< [23..16] IBI Payload Size */ + uint32_t : 8; + } CMRLG_b; + }; + + union + { + __IM uint32_t CETSTMD; /*!< (@ 0x00000360) CCC Enter Test Mode Register */ + + struct + { + __IM uint32_t TSTMD : 8; /*!< [7..0] Test Mode */ + uint32_t : 24; + } CETSTMD_b; + }; + + union + { + __IOM uint32_t CGDVST; /*!< (@ 0x00000364) CCC Get Device Status Register */ + + struct + { + __IOM uint32_t PNDINT : 4; /*!< [3..0] Pending Interrupt */ + uint32_t : 1; + __IOM uint32_t PRTE : 1; /*!< [5..5] Protocol Error */ + __IOM uint32_t ACTMD : 2; /*!< [7..6] Slave Device's current Activity Mode */ + __IOM uint32_t VDRSV : 8; /*!< [15..8] Vendor Reserved */ + uint32_t : 16; + } CGDVST_b; + }; + + union + { + __IOM uint32_t CMDSPW; /*!< (@ 0x00000368) CCC Max Data Speed W (Write) Register */ + + struct + { + __IOM uint32_t MSWDR : 3; /*!< [2..0] Maximum Sustained Write Data Rate */ + uint32_t : 29; + } CMDSPW_b; + }; + + union + { + __IOM uint32_t CMDSPR; /*!< (@ 0x0000036C) CCC Max Data Speed R (Read) Register */ + + struct + { + __IOM uint32_t MSRDR : 3; /*!< [2..0] Maximum Sustained Read Data Rate */ + __IOM uint32_t CDTTIM : 3; /*!< [5..3] Clock to Data Turnaround Time (TSCO) */ + uint32_t : 26; + } CMDSPR_b; + }; + + union + { + __IOM uint32_t CMDSPT; /*!< (@ 0x00000370) CCC Max Data Speed T (Turnaround) Register */ + + struct + { + __IOM uint32_t MRTTIM : 24; /*!< [23..0] Maximum Read Turnaround Time */ + uint32_t : 7; + __IOM uint32_t MRTE : 1; /*!< [31..31] Maximum Read Turnaround Time Enable */ + } CMDSPT_b; + }; + + union + { + __IOM uint32_t CETSM; /*!< (@ 0x00000374) CCC Exchange Timing Support Information M (Mode) + * Register */ + + struct + { + uint32_t : 8; + __IOM uint32_t FREQ : 8; /*!< [15..8] Frequency Byte */ + __IOM uint32_t INAC : 8; /*!< [23..16] Inaccuracy Byte */ + uint32_t : 8; + } CETSM_b; + }; + __IM uint32_t RESERVED28[2]; + + union + { + __IOM uint32_t BITCNT; /*!< (@ 0x00000380) Bit Count Register */ + + struct + { + __IOM uint32_t BCNT : 5; /*!< [4..0] Bit Counter */ + uint32_t : 2; + __OM uint32_t BCNTWP : 1; /*!< [7..7] BCNT Write Protect */ + uint32_t : 24; + } BITCNT_b; + }; + __IM uint32_t RESERVED29[4]; + + union + { + __IM uint32_t NQSTLV; /*!< (@ 0x00000394) Normal Queue Status Level Register */ + + struct + { + __IM uint32_t CMDQFLV : 8; /*!< [7..0] Normal Command Queue Free Level */ + __IM uint32_t RSPQLV : 8; /*!< [15..8] Normal Response Queue Level */ + __IM uint32_t IBIQLV : 8; /*!< [23..16] Normal IBI Queue Level */ + __IM uint32_t IBISCNT : 5; /*!< [28..24] Normal IBI Status Count */ + uint32_t : 3; + } NQSTLV_b; + }; + + union + { + __IM uint32_t NDBSTLV0; /*!< (@ 0x00000398) Normal Data Buffer Status Level Register */ + + struct + { + __IM uint32_t TDBFLV : 8; /*!< [7..0] Normal Transmit Data Buffer Free Level */ + __IM uint32_t RDBLV : 8; /*!< [15..8] Normal Receive Data Buffer Level */ + uint32_t : 16; + } NDBSTLV0_b; + }; + __IM uint32_t RESERVED30[9]; + + union + { + __IM uint32_t NRSQSTLV; /*!< (@ 0x000003C0) Normal Receive Status Queue Status Level Register */ + + struct + { + __IM uint32_t RSQLV : 8; /*!< [7..0] Normal Receive Status Queue Level */ + uint32_t : 24; + } NRSQSTLV_b; + }; + __IM uint32_t RESERVED31[2]; + + union + { + __IM uint32_t PRSTDBG; /*!< (@ 0x000003CC) Present State Debug Register */ + + struct + { + __IM uint32_t SCILV : 1; /*!< [0..0] SCL Line Signal Level */ + __IM uint32_t SDILV : 1; /*!< [1..1] SDA Line Signal Level */ + __IM uint32_t SCOLV : 1; /*!< [2..2] SCL Output Level */ + __IM uint32_t SDOLV : 1; /*!< [3..3] SDA Output Level */ + uint32_t : 28; + } PRSTDBG_b; + }; + + union + { + __IM uint32_t MSERRCNT; /*!< (@ 0x000003D0) Master Error Counters Register */ + + struct + { + __IM uint32_t M2ECNT : 8; /*!< [7..0] M2 Error Counter */ + uint32_t : 24; + } MSERRCNT_b; + }; +} R_I3C0_Type; /*!< Size = 980 (0x3d4) */ + +/* =========================================================================================================================== */ +/* ================ R_MPU_MMPU ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Bus Master MPU (R_MPU_MMPU) + */ + +typedef struct /*!< (@ 0x40000000) R_MPU_MMPU Structure */ +{ + union + { + __IOM uint16_t OAD; /*!< (@ 0x00000000) MMPU Operation After Detection Register */ + + struct + { + __IOM uint16_t OAD : 1; /*!< [0..0] Operation after detection */ + uint16_t : 7; + __OM uint16_t KEY : 8; /*!< [15..8] Write Keyword The data written to these bits are not + * stored. */ + } OAD_b; + }; + __IM uint16_t RESERVED; + + union + { + __IOM uint16_t OADPT; /*!< (@ 0x00000004) MMPU Operation After Detection Protect Register */ + + struct + { + __IOM uint16_t PROTECT : 1; /*!< [0..0] Protection of register */ + uint16_t : 7; + __OM uint16_t KEY : 8; /*!< [15..8] Write Keyword The data written to these bits are not + * stored. */ + } OADPT_b; + }; + __IM uint16_t RESERVED1; + __IM uint32_t RESERVED2[62]; + __IOM R_MPU_MMPU_GROUP_Type DMAC0; /*!< (@ 0x00000100) DMAC0 MMPU Registers */ + __IOM R_MPU_MMPU_GROUP_Type DMAC1; /*!< (@ 0x00000300) DMAC1 MMPU Registers */ + __IOM R_MPU_MMPU_GROUP_Type EDMAC; /*!< (@ 0x00000500) EDMAC MMPU Registers */ + __IOM R_MPU_MMPU_GROUP_Type GLCDC; /*!< (@ 0x00000700) GLCDC MMPU Registers */ + __IOM R_MPU_MMPU_GROUP_Type DRW; /*!< (@ 0x00000900) DRW MMPU Registers */ + __IOM R_MPU_MMPU_GROUP_Type MIPI_DSI; /*!< (@ 0x00000B00) MIPI_DSI MMPU Registers */ + __IOM R_MPU_MMPU_GROUP_Type CEU; /*!< (@ 0x00000D00) CEU MMPU Registers */ + __IOM R_MPU_MMPU_GROUP_Type MIPI_CSI; /*!< (@ 0x00000F00) MIPI_CSI MMPU Registers */ + __IOM R_MPU_MMPU_GROUP_Type NPU; /*!< (@ 0x00001100) NPU MMPU Registers */ +} R_MPU_MMPU_Type; /*!< Size = 4864 (0x1300) */ + +/* =========================================================================================================================== */ +/* ================ R_MPU_SPMON ================ */ +/* =========================================================================================================================== */ + +/** + * @brief CPU Stack Pointer Monitor (R_MPU_SPMON) + */ + +typedef struct /*!< (@ 0x40000D00) R_MPU_SPMON Structure */ +{ + __IOM R_MPU_SPMON_SP_Type SP[2]; /*!< (@ 0x00000000) Stack Pointer Monitor */ +} R_MPU_SPMON_Type; /*!< Size = 32 (0x20) */ + +/* =========================================================================================================================== */ +/* ================ R_MSTP ================ */ +/* =========================================================================================================================== */ + +/** + * @brief System-Module Stop (R_MSTP) + */ + +typedef struct /*!< (@ 0x40203000) R_MSTP Structure */ +{ + union + { + __IOM uint32_t MSTPCRA; /*!< (@ 0x00000000) Module Stop Control Register A */ + + struct + { + __IOM uint32_t MSTPA0 : 1; /*!< [0..0] Module stop bit 0. See device hardware manual for usage. */ + __IOM uint32_t MSTPA1 : 1; /*!< [1..1] Module stop bit 1. See device hardware manual for usage. */ + __IOM uint32_t MSTPA2 : 1; /*!< [2..2] Module stop bit 2. See device hardware manual for usage. */ + __IOM uint32_t MSTPA3 : 1; /*!< [3..3] Module stop bit 3. See device hardware manual for usage. */ + __IOM uint32_t MSTPA4 : 1; /*!< [4..4] Module stop bit 4. See device hardware manual for usage. */ + __IOM uint32_t MSTPA5 : 1; /*!< [5..5] Module stop bit 5. See device hardware manual for usage. */ + __IOM uint32_t MSTPA6 : 1; /*!< [6..6] Module stop bit 6. See device hardware manual for usage. */ + __IOM uint32_t MSTPA7 : 1; /*!< [7..7] Module stop bit 7. See device hardware manual for usage. */ + __IOM uint32_t MSTPA8 : 1; /*!< [8..8] Module stop bit 8. See device hardware manual for usage. */ + __IOM uint32_t MSTPA9 : 1; /*!< [9..9] Module stop bit 9. See device hardware manual for usage. */ + __IOM uint32_t MSTPA10 : 1; /*!< [10..10] Module stop bit 10. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPA11 : 1; /*!< [11..11] Module stop bit 11. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPA12 : 1; /*!< [12..12] Module stop bit 12. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPA13 : 1; /*!< [13..13] Module stop bit 13. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPA14 : 1; /*!< [14..14] Module stop bit 14. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPA15 : 1; /*!< [15..15] Module stop bit 15. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPA16 : 1; /*!< [16..16] Module stop bit 16. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPA17 : 1; /*!< [17..17] Module stop bit 17. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPA18 : 1; /*!< [18..18] Module stop bit 18. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPA19 : 1; /*!< [19..19] Module stop bit 19. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPA20 : 1; /*!< [20..20] Module stop bit 20. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPA21 : 1; /*!< [21..21] Module stop bit 21. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPA22 : 1; /*!< [22..22] Module stop bit 22. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPA23 : 1; /*!< [23..23] Module stop bit 23. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPA24 : 1; /*!< [24..24] Module stop bit 24. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPA25 : 1; /*!< [25..25] Module stop bit 25. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPA26 : 1; /*!< [26..26] Module stop bit 26. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPA27 : 1; /*!< [27..27] Module stop bit 27. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPA28 : 1; /*!< [28..28] Module stop bit 28. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPA29 : 1; /*!< [29..29] Module stop bit 29. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPA30 : 1; /*!< [30..30] Module stop bit 30. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPA31 : 1; /*!< [31..31] Module stop bit 31. See device hardware manual for + * usage. */ + } MSTPCRA_b; + }; + + union + { + __IOM uint32_t MSTPCRB; /*!< (@ 0x00000004) Module Stop Control Register B */ + + struct + { + __IOM uint32_t MSTPB0 : 1; /*!< [0..0] Module stop bit 0. See device hardware manual for usage. */ + __IOM uint32_t MSTPB1 : 1; /*!< [1..1] Module stop bit 1. See device hardware manual for usage. */ + __IOM uint32_t MSTPB2 : 1; /*!< [2..2] Module stop bit 2. See device hardware manual for usage. */ + __IOM uint32_t MSTPB3 : 1; /*!< [3..3] Module stop bit 3. See device hardware manual for usage. */ + __IOM uint32_t MSTPB4 : 1; /*!< [4..4] Module stop bit 4. See device hardware manual for usage. */ + __IOM uint32_t MSTPB5 : 1; /*!< [5..5] Module stop bit 5. See device hardware manual for usage. */ + __IOM uint32_t MSTPB6 : 1; /*!< [6..6] Module stop bit 6. See device hardware manual for usage. */ + __IOM uint32_t MSTPB7 : 1; /*!< [7..7] Module stop bit 7. See device hardware manual for usage. */ + __IOM uint32_t MSTPB8 : 1; /*!< [8..8] Module stop bit 8. See device hardware manual for usage. */ + __IOM uint32_t MSTPB9 : 1; /*!< [9..9] Module stop bit 9. See device hardware manual for usage. */ + __IOM uint32_t MSTPB10 : 1; /*!< [10..10] Module stop bit 10. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPB11 : 1; /*!< [11..11] Module stop bit 11. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPB12 : 1; /*!< [12..12] Module stop bit 12. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPB13 : 1; /*!< [13..13] Module stop bit 13. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPB14 : 1; /*!< [14..14] Module stop bit 14. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPB15 : 1; /*!< [15..15] Module stop bit 15. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPB16 : 1; /*!< [16..16] Module stop bit 16. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPB17 : 1; /*!< [17..17] Module stop bit 17. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPB18 : 1; /*!< [18..18] Module stop bit 18. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPB19 : 1; /*!< [19..19] Module stop bit 19. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPB20 : 1; /*!< [20..20] Module stop bit 20. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPB21 : 1; /*!< [21..21] Module stop bit 21. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPB22 : 1; /*!< [22..22] Module stop bit 22. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPB23 : 1; /*!< [23..23] Module stop bit 23. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPB24 : 1; /*!< [24..24] Module stop bit 24. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPB25 : 1; /*!< [25..25] Module stop bit 25. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPB26 : 1; /*!< [26..26] Module stop bit 26. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPB27 : 1; /*!< [27..27] Module stop bit 27. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPB28 : 1; /*!< [28..28] Module stop bit 28. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPB29 : 1; /*!< [29..29] Module stop bit 29. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPB30 : 1; /*!< [30..30] Module stop bit 30. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPB31 : 1; /*!< [31..31] Module stop bit 31. See device hardware manual for + * usage. */ + } MSTPCRB_b; + }; + + union + { + __IOM uint32_t MSTPCRC; /*!< (@ 0x00000008) Module Stop Control Register C */ + + struct + { + __IOM uint32_t MSTPC0 : 1; /*!< [0..0] Module stop bit 0. See device hardware manual for usage. */ + __IOM uint32_t MSTPC1 : 1; /*!< [1..1] Module stop bit 1. See device hardware manual for usage. */ + __IOM uint32_t MSTPC2 : 1; /*!< [2..2] Module stop bit 2. See device hardware manual for usage. */ + __IOM uint32_t MSTPC3 : 1; /*!< [3..3] Module stop bit 3. See device hardware manual for usage. */ + __IOM uint32_t MSTPC4 : 1; /*!< [4..4] Module stop bit 4. See device hardware manual for usage. */ + __IOM uint32_t MSTPC5 : 1; /*!< [5..5] Module stop bit 5. See device hardware manual for usage. */ + __IOM uint32_t MSTPC6 : 1; /*!< [6..6] Module stop bit 6. See device hardware manual for usage. */ + __IOM uint32_t MSTPC7 : 1; /*!< [7..7] Module stop bit 7. See device hardware manual for usage. */ + __IOM uint32_t MSTPC8 : 1; /*!< [8..8] Module stop bit 8. See device hardware manual for usage. */ + __IOM uint32_t MSTPC9 : 1; /*!< [9..9] Module stop bit 9. See device hardware manual for usage. */ + __IOM uint32_t MSTPC10 : 1; /*!< [10..10] Module stop bit 10. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPC11 : 1; /*!< [11..11] Module stop bit 11. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPC12 : 1; /*!< [12..12] Module stop bit 12. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPC13 : 1; /*!< [13..13] Module stop bit 13. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPC14 : 1; /*!< [14..14] Module stop bit 14. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPC15 : 1; /*!< [15..15] Module stop bit 15. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPC16 : 1; /*!< [16..16] Module stop bit 16. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPC17 : 1; /*!< [17..17] Module stop bit 17. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPC18 : 1; /*!< [18..18] Module stop bit 18. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPC19 : 1; /*!< [19..19] Module stop bit 19. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPC20 : 1; /*!< [20..20] Module stop bit 20. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPC21 : 1; /*!< [21..21] Module stop bit 21. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPC22 : 1; /*!< [22..22] Module stop bit 22. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPC23 : 1; /*!< [23..23] Module stop bit 23. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPC24 : 1; /*!< [24..24] Module stop bit 24. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPC25 : 1; /*!< [25..25] Module stop bit 25. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPC26 : 1; /*!< [26..26] Module stop bit 26. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPC27 : 1; /*!< [27..27] Module stop bit 27. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPC28 : 1; /*!< [28..28] Module stop bit 28. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPC29 : 1; /*!< [29..29] Module stop bit 29. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPC30 : 1; /*!< [30..30] Module stop bit 30. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPC31 : 1; /*!< [31..31] Module stop bit 31. See device hardware manual for + * usage. */ + } MSTPCRC_b; + }; + + union + { + __IOM uint32_t MSTPCRD; /*!< (@ 0x0000000C) Module Stop Control Register D */ + + struct + { + __IOM uint32_t MSTPD0 : 1; /*!< [0..0] Module stop bit 0. See device hardware manual for usage. */ + __IOM uint32_t MSTPD1 : 1; /*!< [1..1] Module stop bit 1. See device hardware manual for usage. */ + __IOM uint32_t MSTPD2 : 1; /*!< [2..2] Module stop bit 2. See device hardware manual for usage. */ + __IOM uint32_t MSTPD3 : 1; /*!< [3..3] Module stop bit 3. See device hardware manual for usage. */ + __IOM uint32_t MSTPD4 : 1; /*!< [4..4] Module stop bit 4. See device hardware manual for usage. */ + __IOM uint32_t MSTPD5 : 1; /*!< [5..5] Module stop bit 5. See device hardware manual for usage. */ + __IOM uint32_t MSTPD6 : 1; /*!< [6..6] Module stop bit 6. See device hardware manual for usage. */ + __IOM uint32_t MSTPD7 : 1; /*!< [7..7] Module stop bit 7. See device hardware manual for usage. */ + __IOM uint32_t MSTPD8 : 1; /*!< [8..8] Module stop bit 8. See device hardware manual for usage. */ + __IOM uint32_t MSTPD9 : 1; /*!< [9..9] Module stop bit 9. See device hardware manual for usage. */ + __IOM uint32_t MSTPD10 : 1; /*!< [10..10] Module stop bit 10. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPD11 : 1; /*!< [11..11] Module stop bit 11. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPD12 : 1; /*!< [12..12] Module stop bit 12. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPD13 : 1; /*!< [13..13] Module stop bit 13. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPD14 : 1; /*!< [14..14] Module stop bit 14. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPD15 : 1; /*!< [15..15] Module stop bit 15. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPD16 : 1; /*!< [16..16] Module stop bit 16. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPD17 : 1; /*!< [17..17] Module stop bit 17. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPD18 : 1; /*!< [18..18] Module stop bit 18. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPD19 : 1; /*!< [19..19] Module stop bit 19. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPD20 : 1; /*!< [20..20] Module stop bit 20. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPD21 : 1; /*!< [21..21] Module stop bit 21. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPD22 : 1; /*!< [22..22] Module stop bit 22. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPD23 : 1; /*!< [23..23] Module stop bit 23. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPD24 : 1; /*!< [24..24] Module stop bit 24. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPD25 : 1; /*!< [25..25] Module stop bit 25. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPD26 : 1; /*!< [26..26] Module stop bit 26. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPD27 : 1; /*!< [27..27] Module stop bit 27. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPD28 : 1; /*!< [28..28] Module stop bit 28. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPD29 : 1; /*!< [29..29] Module stop bit 29. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPD30 : 1; /*!< [30..30] Module stop bit 30. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPD31 : 1; /*!< [31..31] Module stop bit 31. See device hardware manual for + * usage. */ + } MSTPCRD_b; + }; + + union + { + union + { + __IOM uint32_t MSTPCRE; /*!< (@ 0x00000010) Module Stop Control Register E */ + + struct + { + __IOM uint32_t MSTPE0 : 1; /*!< [0..0] Module stop bit 0. See device hardware manual for usage. */ + __IOM uint32_t MSTPE1 : 1; /*!< [1..1] Module stop bit 1. See device hardware manual for usage. */ + __IOM uint32_t MSTPE2 : 1; /*!< [2..2] Module stop bit 2. See device hardware manual for usage. */ + __IOM uint32_t MSTPE3 : 1; /*!< [3..3] Module stop bit 3. See device hardware manual for usage. */ + __IOM uint32_t MSTPE4 : 1; /*!< [4..4] Module stop bit 4. See device hardware manual for usage. */ + __IOM uint32_t MSTPE5 : 1; /*!< [5..5] Module stop bit 5. See device hardware manual for usage. */ + __IOM uint32_t MSTPE6 : 1; /*!< [6..6] Module stop bit 6. See device hardware manual for usage. */ + __IOM uint32_t MSTPE7 : 1; /*!< [7..7] Module stop bit 7. See device hardware manual for usage. */ + __IOM uint32_t MSTPE8 : 1; /*!< [8..8] Module stop bit 8. See device hardware manual for usage. */ + __IOM uint32_t MSTPE9 : 1; /*!< [9..9] Module stop bit 9. See device hardware manual for usage. */ + __IOM uint32_t MSTPE10 : 1; /*!< [10..10] Module stop bit 10. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPE11 : 1; /*!< [11..11] Module stop bit 11. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPE12 : 1; /*!< [12..12] Module stop bit 12. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPE13 : 1; /*!< [13..13] Module stop bit 13. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPE14 : 1; /*!< [14..14] Module stop bit 14. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPE15 : 1; /*!< [15..15] Module stop bit 15. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPE16 : 1; /*!< [16..16] Module stop bit 16. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPE17 : 1; /*!< [17..17] Module stop bit 17. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPE18 : 1; /*!< [18..18] Module stop bit 18. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPE19 : 1; /*!< [19..19] Module stop bit 19. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPE20 : 1; /*!< [20..20] Module stop bit 20. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPE21 : 1; /*!< [21..21] Module stop bit 21. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPE22 : 1; /*!< [22..22] Module stop bit 22. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPE23 : 1; /*!< [23..23] Module stop bit 23. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPE24 : 1; /*!< [24..24] Module stop bit 24. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPE25 : 1; /*!< [25..25] Module stop bit 25. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPE26 : 1; /*!< [26..26] Module stop bit 26. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPE27 : 1; /*!< [27..27] Module stop bit 27. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPE28 : 1; /*!< [28..28] Module stop bit 28. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPE29 : 1; /*!< [29..29] Module stop bit 29. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPE30 : 1; /*!< [30..30] Module stop bit 30. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPE31 : 1; /*!< [31..31] Module stop bit 31. See device hardware manual for + * usage. */ + } MSTPCRE_b; + }; + + union + { + __IOM uint16_t LSMRWDIS; /*!< (@ 0x00000010) Low Speed Module R/W Disable Control Register */ + + struct + { + __IOM uint16_t RTCRWDIS : 1; /*!< [0..0] RTC Register R/W Enable Control */ + __IOM uint16_t WDTDIS : 1; /*!< [1..1] WDT Operate Clock Control */ + __IOM uint16_t IWDTIDS : 1; /*!< [2..2] IWDT Register Clock Control */ + uint16_t : 4; + __IOM uint16_t WREN : 1; /*!< [7..7] Write Enable for bits [2:0] */ + __OM uint16_t PRKEY : 8; /*!< [15..8] LSMRWDIS Key Code */ + } LSMRWDIS_b; + }; + }; +} R_MSTP_Type; /*!< Size = 20 (0x14) */ + +/* =========================================================================================================================== */ +/* ================ R_PORT0 ================ */ +/* =========================================================================================================================== */ + +/** + * @brief I/O Ports (R_PORT0) + */ + +typedef struct /*!< (@ 0x40400000) R_PORT0 Structure */ +{ + union + { + union + { + __IOM uint32_t PCNTR1; /*!< (@ 0x00000000) Port Control Register 1 */ + + struct + { + __IOM uint32_t PDR : 16; /*!< [15..0] Pmn Direction */ + __IOM uint32_t PODR : 16; /*!< [31..16] Pmn Output Data */ + } PCNTR1_b; + }; + + struct + { + union + { + __IOM uint16_t PDR; /*!< (@ 0x00000000) Data direction register */ + + struct + { + __IOM uint16_t PDR0 : 1; /*!< [0..0] Pmn Direction */ + __IOM uint16_t PDR1 : 1; /*!< [1..1] Pmn Direction */ + __IOM uint16_t PDR2 : 1; /*!< [2..2] Pmn Direction */ + __IOM uint16_t PDR3 : 1; /*!< [3..3] Pmn Direction */ + __IOM uint16_t PDR4 : 1; /*!< [4..4] Pmn Direction */ + __IOM uint16_t PDR5 : 1; /*!< [5..5] Pmn Direction */ + __IOM uint16_t PDR6 : 1; /*!< [6..6] Pmn Direction */ + __IOM uint16_t PDR7 : 1; /*!< [7..7] Pmn Direction */ + __IOM uint16_t PDR8 : 1; /*!< [8..8] Pmn Direction */ + __IOM uint16_t PDR9 : 1; /*!< [9..9] Pmn Direction */ + __IOM uint16_t PDR10 : 1; /*!< [10..10] Pmn Direction */ + __IOM uint16_t PDR11 : 1; /*!< [11..11] Pmn Direction */ + __IOM uint16_t PDR12 : 1; /*!< [12..12] Pmn Direction */ + __IOM uint16_t PDR13 : 1; /*!< [13..13] Pmn Direction */ + __IOM uint16_t PDR14 : 1; /*!< [14..14] Pmn Direction */ + __IOM uint16_t PDR15 : 1; /*!< [15..15] Pmn Direction */ + } PDR_b; + }; + + union + { + __IOM uint16_t PODR; /*!< (@ 0x00000002) Output data register */ + + struct + { + __IOM uint16_t PODR0 : 1; /*!< [0..0] Pmn Output Data */ + __IOM uint16_t PODR1 : 1; /*!< [1..1] Pmn Output Data */ + __IOM uint16_t PODR2 : 1; /*!< [2..2] Pmn Output Data */ + __IOM uint16_t PODR3 : 1; /*!< [3..3] Pmn Output Data */ + __IOM uint16_t PODR4 : 1; /*!< [4..4] Pmn Output Data */ + __IOM uint16_t PODR5 : 1; /*!< [5..5] Pmn Output Data */ + __IOM uint16_t PODR6 : 1; /*!< [6..6] Pmn Output Data */ + __IOM uint16_t PODR7 : 1; /*!< [7..7] Pmn Output Data */ + __IOM uint16_t PODR8 : 1; /*!< [8..8] Pmn Output Data */ + __IOM uint16_t PODR9 : 1; /*!< [9..9] Pmn Output Data */ + __IOM uint16_t PODR10 : 1; /*!< [10..10] Pmn Output Data */ + __IOM uint16_t PODR11 : 1; /*!< [11..11] Pmn Output Data */ + __IOM uint16_t PODR12 : 1; /*!< [12..12] Pmn Output Data */ + __IOM uint16_t PODR13 : 1; /*!< [13..13] Pmn Output Data */ + __IOM uint16_t PODR14 : 1; /*!< [14..14] Pmn Output Data */ + __IOM uint16_t PODR15 : 1; /*!< [15..15] Pmn Output Data */ + } PODR_b; + }; + }; + }; + + union + { + union + { + __IM uint32_t PCNTR2; /*!< (@ 0x00000004) Port Control Register 2 */ + + struct + { + __IM uint32_t PIDR : 16; /*!< [15..0] Pmn Input Data */ + __IM uint32_t EIDR : 16; /*!< [31..16] Pmn Event Input Data */ + } PCNTR2_b; + }; + + struct + { + union + { + __IM uint16_t PIDR; /*!< (@ 0x00000004) Input data register */ + + struct + { + __IM uint16_t PIDR0 : 1; /*!< [0..0] Pmn Input Data */ + __IM uint16_t PIDR1 : 1; /*!< [1..1] Pmn Input Data */ + __IM uint16_t PIDR2 : 1; /*!< [2..2] Pmn Input Data */ + __IM uint16_t PIDR3 : 1; /*!< [3..3] Pmn Input Data */ + __IM uint16_t PIDR4 : 1; /*!< [4..4] Pmn Input Data */ + __IM uint16_t PIDR5 : 1; /*!< [5..5] Pmn Input Data */ + __IM uint16_t PIDR6 : 1; /*!< [6..6] Pmn Input Data */ + __IM uint16_t PIDR7 : 1; /*!< [7..7] Pmn Input Data */ + __IM uint16_t PIDR8 : 1; /*!< [8..8] Pmn Input Data */ + __IM uint16_t PIDR9 : 1; /*!< [9..9] Pmn Input Data */ + __IM uint16_t PIDR10 : 1; /*!< [10..10] Pmn Input Data */ + __IM uint16_t PIDR11 : 1; /*!< [11..11] Pmn Input Data */ + __IM uint16_t PIDR12 : 1; /*!< [12..12] Pmn Input Data */ + __IM uint16_t PIDR13 : 1; /*!< [13..13] Pmn Input Data */ + __IM uint16_t PIDR14 : 1; /*!< [14..14] Pmn Input Data */ + __IM uint16_t PIDR15 : 1; /*!< [15..15] Pmn Input Data */ + } PIDR_b; + }; + + union + { + __IM uint16_t EIDR; /*!< (@ 0x00000006) Event input data register */ + + struct + { + __IM uint16_t EIDR0 : 1; /*!< [0..0] Pmn Event Input Data */ + __IM uint16_t EIDR1 : 1; /*!< [1..1] Pmn Event Input Data */ + __IM uint16_t EIDR2 : 1; /*!< [2..2] Pmn Event Input Data */ + __IM uint16_t EIDR3 : 1; /*!< [3..3] Pmn Event Input Data */ + __IM uint16_t EIDR4 : 1; /*!< [4..4] Pmn Event Input Data */ + __IM uint16_t EIDR5 : 1; /*!< [5..5] Pmn Event Input Data */ + __IM uint16_t EIDR6 : 1; /*!< [6..6] Pmn Event Input Data */ + __IM uint16_t EIDR7 : 1; /*!< [7..7] Pmn Event Input Data */ + __IM uint16_t EIDR8 : 1; /*!< [8..8] Pmn Event Input Data */ + __IM uint16_t EIDR9 : 1; /*!< [9..9] Pmn Event Input Data */ + __IM uint16_t EIDR10 : 1; /*!< [10..10] Pmn Event Input Data */ + __IM uint16_t EIDR11 : 1; /*!< [11..11] Pmn Event Input Data */ + __IM uint16_t EIDR12 : 1; /*!< [12..12] Pmn Event Input Data */ + __IM uint16_t EIDR13 : 1; /*!< [13..13] Pmn Event Input Data */ + __IM uint16_t EIDR14 : 1; /*!< [14..14] Pmn Event Input Data */ + __IM uint16_t EIDR15 : 1; /*!< [15..15] Pmn Event Input Data */ + } EIDR_b; + }; + }; + }; + + union + { + union + { + __OM uint32_t PCNTR3; /*!< (@ 0x00000008) Port Control Register 3 */ + + struct + { + __OM uint32_t POSR : 16; /*!< [15..0] Pmn Output Set */ + __OM uint32_t PORR : 16; /*!< [31..16] Pmn Output Reset */ + } PCNTR3_b; + }; + + struct + { + union + { + __OM uint16_t POSR; /*!< (@ 0x00000008) Output reset register */ + + struct + { + __OM uint16_t POSR0 : 1; /*!< [0..0] Pmn Output Set */ + __OM uint16_t POSR1 : 1; /*!< [1..1] Pmn Output Set */ + __OM uint16_t POSR2 : 1; /*!< [2..2] Pmn Output Set */ + __OM uint16_t POSR3 : 1; /*!< [3..3] Pmn Output Set */ + __OM uint16_t POSR4 : 1; /*!< [4..4] Pmn Output Set */ + __OM uint16_t POSR5 : 1; /*!< [5..5] Pmn Output Set */ + __OM uint16_t POSR6 : 1; /*!< [6..6] Pmn Output Set */ + __OM uint16_t POSR7 : 1; /*!< [7..7] Pmn Output Set */ + __OM uint16_t POSR8 : 1; /*!< [8..8] Pmn Output Set */ + __OM uint16_t POSR9 : 1; /*!< [9..9] Pmn Output Set */ + __OM uint16_t POSR10 : 1; /*!< [10..10] Pmn Output Set */ + __OM uint16_t POSR11 : 1; /*!< [11..11] Pmn Output Set */ + __OM uint16_t POSR12 : 1; /*!< [12..12] Pmn Output Set */ + __OM uint16_t POSR13 : 1; /*!< [13..13] Pmn Output Set */ + __OM uint16_t POSR14 : 1; /*!< [14..14] Pmn Output Set */ + __OM uint16_t POSR15 : 1; /*!< [15..15] Pmn Output Set */ + } POSR_b; + }; + + union + { + __OM uint16_t PORR; /*!< (@ 0x0000000A) Output set register */ + + struct + { + __OM uint16_t PORR0 : 1; /*!< [0..0] Pmn Output Reset */ + __OM uint16_t PORR1 : 1; /*!< [1..1] Pmn Output Reset */ + __OM uint16_t PORR2 : 1; /*!< [2..2] Pmn Output Reset */ + __OM uint16_t PORR3 : 1; /*!< [3..3] Pmn Output Reset */ + __OM uint16_t PORR4 : 1; /*!< [4..4] Pmn Output Reset */ + __OM uint16_t PORR5 : 1; /*!< [5..5] Pmn Output Reset */ + __OM uint16_t PORR6 : 1; /*!< [6..6] Pmn Output Reset */ + __OM uint16_t PORR7 : 1; /*!< [7..7] Pmn Output Reset */ + __OM uint16_t PORR8 : 1; /*!< [8..8] Pmn Output Reset */ + __OM uint16_t PORR9 : 1; /*!< [9..9] Pmn Output Reset */ + __OM uint16_t PORR10 : 1; /*!< [10..10] Pmn Output Reset */ + __OM uint16_t PORR11 : 1; /*!< [11..11] Pmn Output Reset */ + __OM uint16_t PORR12 : 1; /*!< [12..12] Pmn Output Reset */ + __OM uint16_t PORR13 : 1; /*!< [13..13] Pmn Output Reset */ + __OM uint16_t PORR14 : 1; /*!< [14..14] Pmn Output Reset */ + __OM uint16_t PORR15 : 1; /*!< [15..15] Pmn Output Reset */ + } PORR_b; + }; + }; + }; + + union + { + union + { + __IOM uint32_t PCNTR4; /*!< (@ 0x0000000C) Port Control Register 4 */ + + struct + { + __IOM uint32_t EOSR : 16; /*!< [15..0] Pmn Event Output Set */ + __IOM uint32_t EORR : 16; /*!< [31..16] Pmn Event Output Reset */ + } PCNTR4_b; + }; + + struct + { + union + { + __IOM uint16_t EOSR; /*!< (@ 0x0000000C) Event output reset register */ + + struct + { + __IOM uint16_t EOSR0 : 1; /*!< [0..0] Pmn Event Output Set */ + __IOM uint16_t EOSR1 : 1; /*!< [1..1] Pmn Event Output Set */ + __IOM uint16_t EOSR2 : 1; /*!< [2..2] Pmn Event Output Set */ + __IOM uint16_t EOSR3 : 1; /*!< [3..3] Pmn Event Output Set */ + __IOM uint16_t EOSR4 : 1; /*!< [4..4] Pmn Event Output Set */ + __IOM uint16_t EOSR5 : 1; /*!< [5..5] Pmn Event Output Set */ + __IOM uint16_t EOSR6 : 1; /*!< [6..6] Pmn Event Output Set */ + __IOM uint16_t EOSR7 : 1; /*!< [7..7] Pmn Event Output Set */ + __IOM uint16_t EOSR8 : 1; /*!< [8..8] Pmn Event Output Set */ + __IOM uint16_t EOSR9 : 1; /*!< [9..9] Pmn Event Output Set */ + __IOM uint16_t EOSR10 : 1; /*!< [10..10] Pmn Event Output Set */ + __IOM uint16_t EOSR11 : 1; /*!< [11..11] Pmn Event Output Set */ + __IOM uint16_t EOSR12 : 1; /*!< [12..12] Pmn Event Output Set */ + __IOM uint16_t EOSR13 : 1; /*!< [13..13] Pmn Event Output Set */ + __IOM uint16_t EOSR14 : 1; /*!< [14..14] Pmn Event Output Set */ + __IOM uint16_t EOSR15 : 1; /*!< [15..15] Pmn Event Output Set */ + } EOSR_b; + }; + + union + { + __IOM uint16_t EORR; /*!< (@ 0x0000000E) Event output set register */ + + struct + { + __IOM uint16_t EORR0 : 1; /*!< [0..0] Pmn Event Output Reset */ + __IOM uint16_t EORR1 : 1; /*!< [1..1] Pmn Event Output Reset */ + __IOM uint16_t EORR2 : 1; /*!< [2..2] Pmn Event Output Reset */ + __IOM uint16_t EORR3 : 1; /*!< [3..3] Pmn Event Output Reset */ + __IOM uint16_t EORR4 : 1; /*!< [4..4] Pmn Event Output Reset */ + __IOM uint16_t EORR5 : 1; /*!< [5..5] Pmn Event Output Reset */ + __IOM uint16_t EORR6 : 1; /*!< [6..6] Pmn Event Output Reset */ + __IOM uint16_t EORR7 : 1; /*!< [7..7] Pmn Event Output Reset */ + __IOM uint16_t EORR8 : 1; /*!< [8..8] Pmn Event Output Reset */ + __IOM uint16_t EORR9 : 1; /*!< [9..9] Pmn Event Output Reset */ + __IOM uint16_t EORR10 : 1; /*!< [10..10] Pmn Event Output Reset */ + __IOM uint16_t EORR11 : 1; /*!< [11..11] Pmn Event Output Reset */ + __IOM uint16_t EORR12 : 1; /*!< [12..12] Pmn Event Output Reset */ + __IOM uint16_t EORR13 : 1; /*!< [13..13] Pmn Event Output Reset */ + __IOM uint16_t EORR14 : 1; /*!< [14..14] Pmn Event Output Reset */ + __IOM uint16_t EORR15 : 1; /*!< [15..15] Pmn Event Output Reset */ + } EORR_b; + }; + }; + }; +} R_PORT0_Type; /*!< Size = 16 (0x10) */ + +/* =========================================================================================================================== */ +/* ================ R_PFS ================ */ +/* =========================================================================================================================== */ + +/** + * @brief I/O Ports-PFS (R_PFS) + */ + +typedef struct /*!< (@ 0x40400800) R_PFS Structure */ +{ + __IOM R_PFS_PORT_Type PORT[15]; /*!< (@ 0x00000000) Port [0..14] */ +} R_PFS_Type; /*!< Size = 960 (0x3c0) */ + +/* =========================================================================================================================== */ +/* ================ R_PMISC ================ */ +/* =========================================================================================================================== */ + +/** + * @brief I/O Ports-MISC (R_PMISC) + */ + +typedef struct /*!< (@ 0x40400D00) R_PMISC Structure */ +{ + union + { + __IOM uint8_t PFENET; /*!< (@ 0x00000000) Ethernet Control Register */ + + struct + { + uint8_t : 4; + __IOM uint8_t PHYMODE0 : 1; /*!< [4..4] Ethernet Mode Setting ch0 */ + uint8_t : 3; + } PFENET_b; + }; + __IM uint8_t RESERVED; + __IM uint16_t RESERVED1[5]; + + union + { + __IOM uint8_t PWPR; /*!< (@ 0x0000000C) Write-Protect Register */ + + struct + { + uint8_t : 6; + __IOM uint8_t PFSWE : 1; /*!< [6..6] PmnPFS Register Write */ + __IOM uint8_t B0WI : 1; /*!< [7..7] PFSWE Bit Write Disable */ + } PWPR_b; + }; + __IM uint8_t RESERVED2; + __IM uint16_t RESERVED3[3]; + + union + { + __IOM uint8_t PWPRS; /*!< (@ 0x00000014) Write-Protect Register for Secure */ + + struct + { + uint8_t : 6; + __IOM uint8_t PFSWE : 1; /*!< [6..6] PmnPFS Register Write */ + __IOM uint8_t B0WI : 1; /*!< [7..7] PFSWE Bit Write Disable */ + } PWPRS_b; + }; + __IM uint8_t RESERVED4; + __IM uint16_t RESERVED5[13]; + __IOM R_PMISC_PMSAR_Type PMSAR[15]; /*!< (@ 0x00000030) Port Security Attribution Register */ +} R_PMISC_Type; /*!< Size = 108 (0x6c) */ + +/* =========================================================================================================================== */ +/* ================ R_RTC ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Realtime Clock (R_RTC) + */ + +typedef struct /*!< (@ 0x40202000) R_RTC Structure */ +{ + union + { + __IM uint8_t R64CNT; /*!< (@ 0x00000000) 64-Hz Counter */ + + struct + { + __IM uint8_t F64HZ : 1; /*!< [0..0] 64Hz */ + __IM uint8_t F32HZ : 1; /*!< [1..1] 32Hz */ + __IM uint8_t F16HZ : 1; /*!< [2..2] 16Hz */ + __IM uint8_t F8HZ : 1; /*!< [3..3] 8Hz */ + __IM uint8_t F4HZ : 1; /*!< [4..4] 4Hz */ + __IM uint8_t F2HZ : 1; /*!< [5..5] 2Hz */ + __IM uint8_t F1HZ : 1; /*!< [6..6] 1Hz */ + uint8_t : 1; + } R64CNT_b; + }; + __IM uint8_t RESERVED; + + union + { + union + { + __IOM uint8_t BCNT0; /*!< (@ 0x00000002) Binary Counter 0 */ + + struct + { + __IOM uint8_t BCNT0 : 8; /*!< [7..0] The BCNT0 counter is a readable/writable 32-bit binary + * counter b7 to b0. */ + } BCNT0_b; + }; + + union + { + __IOM uint8_t RSECCNT; /*!< (@ 0x00000002) Second Counter */ + + struct + { + __IOM uint8_t SEC1 : 4; /*!< [3..0] 1-Second Count Counts from 0 to 9 every second. When + * a carry is generated, 1 is added to the tens place. */ + __IOM uint8_t SEC10 : 3; /*!< [6..4] 10-Second Count Counts from 0 to 5 for 60-second counting. */ + uint8_t : 1; + } RSECCNT_b; + }; + }; + __IM uint8_t RESERVED1; + + union + { + union + { + __IOM uint8_t BCNT1; /*!< (@ 0x00000004) Binary Counter 1 */ + + struct + { + __IOM uint8_t BCNT1 : 8; /*!< [7..0] The BCNT1 counter is a readable/writable 32-bit binary + * counter b15 to b8. */ + } BCNT1_b; + }; + + union + { + __IOM uint8_t RMINCNT; /*!< (@ 0x00000004) Minute Counter */ + + struct + { + __IOM uint8_t MIN1 : 4; /*!< [3..0] 1-Minute Count Counts from 0 to 9 every minute. When + * a carry is generated, 1 is added to the tens place. */ + __IOM uint8_t MIN10 : 3; /*!< [6..4] 10-Minute Count Counts from 0 to 5 for 60-minute counting. */ + uint8_t : 1; + } RMINCNT_b; + }; + }; + __IM uint8_t RESERVED2; + + union + { + union + { + __IOM uint8_t BCNT2; /*!< (@ 0x00000006) Binary Counter 2 */ + + struct + { + __IOM uint8_t BCNT2 : 8; /*!< [7..0] The BCNT2 counter is a readable/writable 32-bit binary + * counter b23 to b16. */ + } BCNT2_b; + }; + + union + { + __IOM uint8_t RHRCNT; /*!< (@ 0x00000006) Hour Counter */ + + struct + { + __IOM uint8_t HR1 : 4; /*!< [3..0] 1-Hour Count Counts from 0 to 9 once per hour. When a + * carry is generated, 1 is added to the tens place. */ + __IOM uint8_t HR10 : 2; /*!< [5..4] 10-Hour Count Counts from 0 to 2 once per carry from + * the ones place. */ + __IOM uint8_t PM : 1; /*!< [6..6] Time Counter Setting for a.m./p.m. */ + uint8_t : 1; + } RHRCNT_b; + }; + }; + __IM uint8_t RESERVED3; + + union + { + union + { + __IOM uint8_t BCNT3; /*!< (@ 0x00000008) Binary Counter 3 */ + + struct + { + __IOM uint8_t BCNT3 : 8; /*!< [7..0] The BCNT3 counter is a readable/writable 32-bit binary + * counter b31 to b24. */ + } BCNT3_b; + }; + + union + { + __IOM uint8_t RWKCNT; /*!< (@ 0x00000008) Day-of-Week Counter */ + + struct + { + __IOM uint8_t DAYW : 3; /*!< [2..0] Day-of-Week Counting */ + uint8_t : 5; + } RWKCNT_b; + }; + }; + __IM uint8_t RESERVED4; + + union + { + __IOM uint8_t RDAYCNT; /*!< (@ 0x0000000A) Day Counter */ + + struct + { + __IOM uint8_t DATE1 : 4; /*!< [3..0] 1-Day Count Counts from 0 to 9 once per day. When a carry + * is generated, 1 is added to the tens place. */ + __IOM uint8_t DATE10 : 2; /*!< [5..4] 10-Day Count Counts from 0 to 3 once per carry from the + * ones place. */ + uint8_t : 2; + } RDAYCNT_b; + }; + __IM uint8_t RESERVED5; + + union + { + __IOM uint8_t RMONCNT; /*!< (@ 0x0000000C) Month Counter */ + + struct + { + __IOM uint8_t MON1 : 4; /*!< [3..0] 1-Month Count Counts from 0 to 9 once per month. When + * a carry is generated, 1 is added to the tens place. */ + __IOM uint8_t MON10 : 1; /*!< [4..4] 10-Month Count Counts from 0 to 1 once per carry from + * the ones place. */ + uint8_t : 3; + } RMONCNT_b; + }; + __IM uint8_t RESERVED6; + + union + { + __IOM uint16_t RYRCNT; /*!< (@ 0x0000000E) Year Counter */ + + struct + { + __IOM uint16_t YR1 : 4; /*!< [3..0] 1-Year Count Counts from 0 to 9 once per year. When a + * carry is generated, 1 is added to the tens place. */ + __IOM uint16_t YR10 : 4; /*!< [7..4] 10-Year Count Counts from 0 to 9 once per carry from + * ones place. When a carry is generated in the tens place, + * 1 is added to the hundreds place. */ + uint16_t : 8; + } RYRCNT_b; + }; + + union + { + union + { + __IOM uint8_t BCNT0AR; /*!< (@ 0x00000010) Binary Counter 0 Alarm Register */ + + struct + { + __IOM uint8_t BCNT0AR : 8; /*!< [7..0] he BCNT0AR counter is a readable/writable alarm register + * corresponding to 32-bit binary counter b7 to b0. */ + } BCNT0AR_b; + }; + + union + { + __IOM uint8_t RSECAR; /*!< (@ 0x00000010) Second Alarm Register */ + + struct + { + __OM uint8_t SEC1 : 4; /*!< [3..0] 1-Second Value for the ones place of seconds */ + __IOM uint8_t SEC10 : 3; /*!< [6..4] 10-Seconds Value for the tens place of seconds */ + __IOM uint8_t ENB : 1; /*!< [7..7] Compare enable */ + } RSECAR_b; + }; + }; + __IM uint8_t RESERVED7; + + union + { + union + { + __IOM uint8_t BCNT1AR; /*!< (@ 0x00000012) Binary Counter 1 Alarm Register */ + + struct + { + __IOM uint8_t BCNT1AR : 8; /*!< [7..0] he BCNT1AR counter is a readable/writable alarm register + * corresponding to 32-bit binary counter b15 to b8. */ + } BCNT1AR_b; + }; + + union + { + __IOM uint8_t RMINAR; /*!< (@ 0x00000012) Minute Alarm Register */ + + struct + { + __IOM uint8_t MIN1 : 4; /*!< [3..0] 1-Minute Count Value for the ones place of minutes */ + __IOM uint8_t MIN10 : 3; /*!< [6..4] 10-Minute Count Value for the tens place of minutes */ + __IOM uint8_t ENB : 1; /*!< [7..7] Compare enable */ + } RMINAR_b; + }; + }; + __IM uint8_t RESERVED8; + + union + { + union + { + __IOM uint8_t BCNT2AR; /*!< (@ 0x00000014) Binary Counter 2 Alarm Register */ + + struct + { + __IOM uint8_t BCNT2AR : 8; /*!< [7..0] The BCNT2AR counter is a readable/writable 32-bit binary + * counter b23 to b16. */ + } BCNT2AR_b; + }; + + union + { + __IOM uint8_t RHRAR; /*!< (@ 0x00000014) Hour Alarm Register */ + + struct + { + __IOM uint8_t HR1 : 4; /*!< [3..0] 1-Hour Count Value for the ones place of hours */ + __IOM uint8_t HR10 : 2; /*!< [5..4] 10-Hour Count Value for the tens place of hours */ + __IOM uint8_t PM : 1; /*!< [6..6] Time Counter Setting for a.m./p.m. */ + __IOM uint8_t ENB : 1; /*!< [7..7] Compare enable */ + } RHRAR_b; + }; + }; + __IM uint8_t RESERVED9; + + union + { + union + { + __IOM uint8_t BCNT3AR; /*!< (@ 0x00000016) Binary Counter 3 Alarm Register */ + + struct + { + __IOM uint8_t BCNT3AR : 8; /*!< [7..0] The BCNT3AR counter is a readable/writable 32-bit binary + * counter b31 to b24. */ + } BCNT3AR_b; + }; + + union + { + __IOM uint8_t RWKAR; /*!< (@ 0x00000016) Day-of-Week Alarm Register */ + + struct + { + __IOM uint8_t DAYW : 3; /*!< [2..0] Day-of-Week Counting */ + uint8_t : 4; + __IOM uint8_t ENB : 1; /*!< [7..7] Compare enable */ + } RWKAR_b; + }; + }; + __IM uint8_t RESERVED10; + + union + { + union + { + __IOM uint8_t BCNT0AER; /*!< (@ 0x00000018) Binary Counter 0 Alarm Enable Register */ + + struct + { + __IOM uint8_t ENB : 8; /*!< [7..0] The BCNT0AER register is a readable/writable register + * for setting the alarm enable corresponding to 32-bit binary + * counter b7 to b0. */ + } BCNT0AER_b; + }; + + union + { + __IOM uint8_t RDAYAR; /*!< (@ 0x00000018) Date Alarm Register */ + + struct + { + __IOM uint8_t DATE1 : 4; /*!< [3..0] 1 Day Value for the ones place of days */ + __IOM uint8_t DATE10 : 2; /*!< [5..4] 10 Days Value for the tens place of days */ + uint8_t : 1; + __IOM uint8_t ENB : 1; /*!< [7..7] Compare enable */ + } RDAYAR_b; + }; + }; + __IM uint8_t RESERVED11; + + union + { + union + { + __IOM uint8_t BCNT1AER; /*!< (@ 0x0000001A) Binary Counter 1 Alarm Enable Register */ + + struct + { + __IOM uint8_t ENB : 8; /*!< [7..0] The BCNT1AER register is a readable/writable register + * for setting the alarm enable corresponding to 32-bit binary + * counter b15 to b8. */ + } BCNT1AER_b; + }; + + union + { + __IOM uint8_t RMONAR; /*!< (@ 0x0000001A) Month Alarm Register */ + + struct + { + __IOM uint8_t MON1 : 4; /*!< [3..0] 1 Month Value for the ones place of months */ + __IOM uint8_t MON10 : 1; /*!< [4..4] 10 Months Value for the tens place of months */ + uint8_t : 2; + __IOM uint8_t ENB : 1; /*!< [7..7] Compare enable */ + } RMONAR_b; + }; + }; + __IM uint8_t RESERVED12; + + union + { + union + { + __IOM uint16_t BCNT2AER; /*!< (@ 0x0000001C) Binary Counter 2 Alarm Enable Register */ + + struct + { + __IOM uint16_t ENB : 8; /*!< [7..0] The BCNT2AER register is a readable/writable register + * for setting the alarm enable corresponding to 32-bit binary + * counter b23 to b16. */ + uint16_t : 8; + } BCNT2AER_b; + }; + + union + { + __IOM uint16_t RYRAR; /*!< (@ 0x0000001C) Year Alarm Register */ + + struct + { + __IOM uint16_t YR1 : 4; /*!< [3..0] 1 Year Value for the ones place of years */ + __IOM uint16_t YR10 : 4; /*!< [7..4] 10 Years Value for the tens place of years */ + uint16_t : 8; + } RYRAR_b; + }; + }; + + union + { + union + { + __IOM uint8_t BCNT3AER; /*!< (@ 0x0000001E) Binary Counter 3 Alarm Enable Register */ + + struct + { + __IOM uint8_t ENB : 8; /*!< [7..0] The BCNT3AER register is a readable/writable register + * for setting the alarm enable corresponding to 32-bit binary + * counter b31 to b24. */ + } BCNT3AER_b; + }; + + union + { + __IOM uint8_t RYRAREN; /*!< (@ 0x0000001E) Year Alarm Enable Register */ + + struct + { + uint8_t : 7; + __IOM uint8_t ENB : 1; /*!< [7..7] Compare enable */ + } RYRAREN_b; + }; + }; + __IM uint8_t RESERVED13; + __IM uint16_t RESERVED14; + + union + { + __IOM uint8_t RCR1; /*!< (@ 0x00000022) RTC Control Register 1 */ + + struct + { + __IOM uint8_t AIE : 1; /*!< [0..0] Alarm Interrupt Enable */ + __IOM uint8_t CIE : 1; /*!< [1..1] Carry Interrupt Enable */ + __IOM uint8_t PIE : 1; /*!< [2..2] Periodic Interrupt Enable */ + __IOM uint8_t RTCOS : 1; /*!< [3..3] RTCOUT Output Select */ + __IOM uint8_t PES : 4; /*!< [7..4] Periodic Interrupt Select */ + } RCR1_b; + }; + __IM uint8_t RESERVED15; + + union + { + __IOM uint8_t RCR2; /*!< (@ 0x00000024) RTC Control Register 2 */ + + struct + { + __IOM uint8_t START : 1; /*!< [0..0] Start */ + __IOM uint8_t RESET : 1; /*!< [1..1] RTC Software Reset */ + __IOM uint8_t ADJ30 : 1; /*!< [2..2] 30-Second Adjustment */ + __IOM uint8_t RTCOE : 1; /*!< [3..3] RTCOUT Output Enable */ + __IOM uint8_t AADJE : 1; /*!< [4..4] Automatic Adjustment Enable (When the LOCO clock is selected, + * the setting of this bit is disabled.) */ + __IOM uint8_t AADJP : 1; /*!< [5..5] Automatic Adjustment Period Select (When the LOCO clock + * is selected, the setting of this bit is disabled.) */ + __IOM uint8_t HR24 : 1; /*!< [6..6] Hours Mode */ + __IOM uint8_t CNTMD : 1; /*!< [7..7] Count Mode Select */ + } RCR2_b; + }; + __IM uint8_t RESERVED16; + __IM uint16_t RESERVED17; + + union + { + __IOM uint8_t RCR4; /*!< (@ 0x00000028) RTC Control Register 4 */ + + struct + { + __IOM uint8_t RCKSEL : 1; /*!< [0..0] Count Source Select */ + uint8_t : 6; + __IOM uint8_t ROPSEL : 1; /*!< [7..7] RTC Operation Mode Select */ + } RCR4_b; + }; + __IM uint8_t RESERVED18; + + union + { + __IOM uint16_t RFRH; /*!< (@ 0x0000002A) Frequency Register H */ + + struct + { + __IOM uint16_t RFC16 : 1; /*!< [0..0] Frequency Comparison Value (b16) To generate the operating + * clock from the LOCOclock, this bit sets the comparison + * value of the 128-Hz clock cycle. */ + uint16_t : 15; + } RFRH_b; + }; + + union + { + __IOM uint16_t RFRL; /*!< (@ 0x0000002C) Frequency Register L */ + + struct + { + __IOM uint16_t RFC : 16; /*!< [15..0] Frequency Comparison Value(b15-b0) To generate the operating + * clock from the main clock, this bit sets the comparison + * value of the 128-Hz clock cycle. */ + } RFRL_b; + }; + + union + { + __IOM uint8_t RADJ; /*!< (@ 0x0000002E) Time Error Adjustment Register */ + + struct + { + __IOM uint8_t ADJ : 6; /*!< [5..0] Adjustment Value These bits specify the adjustment value + * from the prescaler. */ + __IOM uint8_t PMADJ : 2; /*!< [7..6] Plus-Minus */ + } RADJ_b; + }; + __IM uint8_t RESERVED19; + __IM uint16_t RESERVED20[8]; + __IOM R_RTC_RTCCR_Type RTCCR[3]; /*!< (@ 0x00000040) Time Capture Control Register */ + __IM uint16_t RESERVED21[5]; + __IOM R_RTC_CP_Type CP[3]; /*!< (@ 0x00000050) Capture registers */ +} R_RTC_Type; /*!< Size = 128 (0x80) */ + +/* =========================================================================================================================== */ +/* ================ R_SCI0 ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Serial Communications Interface (R_SCI0) + */ + +typedef struct /*!< (@ 0x40358000) R_SCI0 Structure */ +{ + union + { + union + { + __IOM uint8_t SMR; /*!< (@ 0x00000000) Serial Mode Register (SCMR.SMIF = 0) */ + + struct + { + __IOM uint8_t CKS : 2; /*!< [1..0] Clock Select */ + __IOM uint8_t MP : 1; /*!< [2..2] Multi-Processor Mode(Valid only in asynchronous mode) */ + __IOM uint8_t STOP : 1; /*!< [3..3] Stop Bit Length(Valid only in asynchronous mode) */ + __IOM uint8_t PM : 1; /*!< [4..4] Parity Mode (Valid only when the PE bit is 1) */ + __IOM uint8_t PE : 1; /*!< [5..5] Parity Enable(Valid only in asynchronous mode) */ + __IOM uint8_t CHR : 1; /*!< [6..6] Character Length(Valid only in asynchronous mode) */ + __IOM uint8_t CM : 1; /*!< [7..7] Communication Mode */ + } SMR_b; + }; + + union + { + __IOM uint8_t SMR_SMCI; /*!< (@ 0x00000000) Serial mode register (SCMR.SMIF = 1) */ + + struct + { + __IOM uint8_t CKS : 2; /*!< [1..0] Clock Select */ + __IOM uint8_t BCP : 2; /*!< [3..2] Base Clock Pulse(Valid only in asynchronous mode) */ + __IOM uint8_t PM : 1; /*!< [4..4] Parity Mode (Valid only when the PE bit is 1) */ + __IOM uint8_t PE : 1; /*!< [5..5] Parity Enable(Valid only in asynchronous mode) */ + __IOM uint8_t BLK : 1; /*!< [6..6] Block Transfer Mode */ + __IOM uint8_t GM : 1; /*!< [7..7] GSM Mode */ + } SMR_SMCI_b; + }; + }; + + union + { + __IOM uint8_t BRR; /*!< (@ 0x00000001) Bit Rate Register */ + + struct + { + __IOM uint8_t BRR : 8; /*!< [7..0] BRR is an 8-bit register that adjusts the bit rate. */ + } BRR_b; + }; + + union + { + union + { + __IOM uint8_t SCR; /*!< (@ 0x00000002) Serial Control Register (SCMR.SMIF = 0) */ + + struct + { + __IOM uint8_t CKE : 2; /*!< [1..0] Clock Enable */ + __IOM uint8_t TEIE : 1; /*!< [2..2] Transmit End Interrupt Enable */ + __IOM uint8_t MPIE : 1; /*!< [3..3] Multi-Processor Interrupt Enable(Valid in asynchronous + * mode when SMR.MP = 1) */ + __IOM uint8_t RE : 1; /*!< [4..4] Receive Enable */ + __IOM uint8_t TE : 1; /*!< [5..5] Transmit Enable */ + __IOM uint8_t RIE : 1; /*!< [6..6] Receive Interrupt Enable */ + __IOM uint8_t TIE : 1; /*!< [7..7] Transmit Interrupt Enable */ + } SCR_b; + }; + + union + { + __IOM uint8_t SCR_SMCI; /*!< (@ 0x00000002) Serial Control Register (SCMR.SMIF =1) */ + + struct + { + __IOM uint8_t CKE : 2; /*!< [1..0] Clock Enable */ + __IOM uint8_t TEIE : 1; /*!< [2..2] Transmit End Interrupt Enable */ + __IOM uint8_t MPIE : 1; /*!< [3..3] Multi-Processor Interrupt Enable */ + __IOM uint8_t RE : 1; /*!< [4..4] Receive Enable */ + __IOM uint8_t TE : 1; /*!< [5..5] Transmit Enable */ + __IOM uint8_t RIE : 1; /*!< [6..6] Receive Interrupt Enable */ + __IOM uint8_t TIE : 1; /*!< [7..7] Transmit Interrupt Enable */ + } SCR_SMCI_b; + }; + }; + + union + { + __IOM uint8_t TDR; /*!< (@ 0x00000003) Transmit Data Register */ + + struct + { + __IOM uint8_t TDR : 8; /*!< [7..0] TDR is an 8-bit register that stores transmit data. */ + } TDR_b; + }; + + union + { + union + { + __IOM uint8_t SSR; /*!< (@ 0x00000004) Serial Status Register(SCMR.SMIF = 0 and FCR.FM=0) */ + + struct + { + __IOM uint8_t MPBT : 1; /*!< [0..0] Multi-Processor Bit Transfer */ + __IM uint8_t MPB : 1; /*!< [1..1] Multi-Processor */ + __IM uint8_t TEND : 1; /*!< [2..2] Transmit End Flag */ + __IOM uint8_t PER : 1; /*!< [3..3] Parity Error Flag */ + __IOM uint8_t FER : 1; /*!< [4..4] Framing Error Flag */ + __IOM uint8_t ORER : 1; /*!< [5..5] Overrun Error Flag */ + __IOM uint8_t RDRF : 1; /*!< [6..6] Receive Data Full Flag */ + __IOM uint8_t TDRE : 1; /*!< [7..7] Transmit Data Empty Flag */ + } SSR_b; + }; + + union + { + __IOM uint8_t SSR_FIFO; /*!< (@ 0x00000004) Serial Status Register(SCMR.SMIF = 0 and FCR.FM=1) */ + + struct + { + __IOM uint8_t DR : 1; /*!< [0..0] Receive Data Ready flag(Valid only in asynchronous mode(including + * multi-processor) and FIFO selected) */ + uint8_t : 1; + __IOM uint8_t TEND : 1; /*!< [2..2] Transmit End Flag */ + __IOM uint8_t PER : 1; /*!< [3..3] Parity Error Flag */ + __IOM uint8_t FER : 1; /*!< [4..4] Framing Error Flag */ + __IOM uint8_t ORER : 1; /*!< [5..5] Overrun Error Flag */ + __IOM uint8_t RDF : 1; /*!< [6..6] Receive FIFO data full flag */ + __IOM uint8_t TDFE : 1; /*!< [7..7] Transmit FIFO data empty flag */ + } SSR_FIFO_b; + }; + + union + { + __IOM uint8_t SSR_SMCI; /*!< (@ 0x00000004) Serial Status Register(SCMR.SMIF = 1) */ + + struct + { + __IOM uint8_t MPBT : 1; /*!< [0..0] Multi-Processor Bit TransferThis bit should be 0 in smart + * card interface mode. */ + __IM uint8_t MPB : 1; /*!< [1..1] Multi-ProcessorThis bit should be 0 in smart card interface + * mode. */ + __IM uint8_t TEND : 1; /*!< [2..2] Transmit End Flag */ + __IOM uint8_t PER : 1; /*!< [3..3] Parity Error Flag */ + __IOM uint8_t ERS : 1; /*!< [4..4] Error Signal Status Flag */ + __IOM uint8_t ORER : 1; /*!< [5..5] Overrun Error Flag */ + __IOM uint8_t RDRF : 1; /*!< [6..6] Receive Data Full Flag */ + __IOM uint8_t TDRE : 1; /*!< [7..7] Transmit Data Empty Flag */ + } SSR_SMCI_b; + }; + }; + + union + { + __IM uint8_t RDR; /*!< (@ 0x00000005) Receive Data Register */ + + struct + { + __IM uint8_t RDR : 8; /*!< [7..0] RDR is an 8-bit register that stores receive data. */ + } RDR_b; + }; + + union + { + __IOM uint8_t SCMR; /*!< (@ 0x00000006) Smart Card Mode Register */ + + struct + { + __IOM uint8_t SMIF : 1; /*!< [0..0] Smart Card Interface Mode Select */ + uint8_t : 1; + __IOM uint8_t SINV : 1; /*!< [2..2] Transmitted/Received Data InvertSet this bit to 0 if + * operation is to be in simple I2C mode. */ + __IOM uint8_t SDIR : 1; /*!< [3..3] Transmitted/Received Data Transfer DirectionNOTE: The + * setting is invalid and a fixed data length of 8 bits is + * used in modes other than asynchronous mode.Set this bit + * to 1 if operation is to be in simple I2C mode. */ + __IOM uint8_t CHR1 : 1; /*!< [4..4] Character Length 1(Only valid in asynchronous mode) */ + uint8_t : 2; + __IOM uint8_t BCP2 : 1; /*!< [7..7] Base Clock Pulse 2Selects the number of base clock cycles + * in combination with the SMR.BCP[1:0] bits */ + } SCMR_b; + }; + + union + { + __IOM uint8_t SEMR; /*!< (@ 0x00000007) Serial Extended Mode Register */ + + struct + { + __IOM uint8_t ACS0 : 1; /*!< [0..0] Asynchronous Mode Clock Source Select (Valid only in + * asynchronous mode). */ + __IOM uint8_t PADIS : 1; /*!< [1..1] Preamble function Disable (Valid only in asynchronous + * mode). */ + __IOM uint8_t BRME : 1; /*!< [2..2] Bit Rate Modulation Enable */ + __IOM uint8_t ABCSE : 1; /*!< [3..3] Asynchronous Mode Extended Base Clock Select 1(Valid + * only in asynchronous mode and SCR.CKE[1]=0) */ + __IOM uint8_t ABCS : 1; /*!< [4..4] Asynchronous Mode Base Clock Select(Valid only in asynchronous + * mode) */ + __IOM uint8_t NFEN : 1; /*!< [5..5] Digital Noise Filter Function Enable(The NFEN bit should + * be 0 without simple I2C mode and asynchronous mode.)In + * asynchronous mode, for RXDn input only. In simple I2C mode, + * for RXDn/TxDn input. */ + __IOM uint8_t BGDM : 1; /*!< [6..6] Baud Rate Generator Double-Speed Mode Select(Only valid + * the CKE[1] bit in SCR is 0 in asynchronous mode). */ + __IOM uint8_t RXDESEL : 1; /*!< [7..7] Asynchronous Start Bit Edge Detection Select(Valid only + * in asynchronous mode) */ + } SEMR_b; + }; + + union + { + __IOM uint8_t SNFR; /*!< (@ 0x00000008) Noise Filter Setting Register */ + + struct + { + __IOM uint8_t NFCS : 3; /*!< [2..0] Noise Filter Clock Select */ + uint8_t : 5; + } SNFR_b; + }; + + union + { + __IOM uint8_t SIMR1; /*!< (@ 0x00000009) I2C Mode Register 1 */ + + struct + { + __IOM uint8_t IICM : 1; /*!< [0..0] Simple I2C Mode Select */ + uint8_t : 2; + __IOM uint8_t IICDL : 5; /*!< [7..3] SDA Delay Output SelectCycles below are of the clock + * signal from the on-chip baud rate generator. */ + } SIMR1_b; + }; + + union + { + __IOM uint8_t SIMR2; /*!< (@ 0x0000000A) I2C Mode Register 2 */ + + struct + { + __IOM uint8_t IICINTM : 1; /*!< [0..0] I2C Interrupt Mode Select */ + __IOM uint8_t IICCSC : 1; /*!< [1..1] Clock Synchronization */ + uint8_t : 3; + __IOM uint8_t IICACKT : 1; /*!< [5..5] ACK Transmission Data */ + uint8_t : 2; + } SIMR2_b; + }; + + union + { + __IOM uint8_t SIMR3; /*!< (@ 0x0000000B) I2C Mode Register 3 */ + + struct + { + __IOM uint8_t IICSTAREQ : 1; /*!< [0..0] Start Condition Generation */ + __IOM uint8_t IICRSTAREQ : 1; /*!< [1..1] Restart Condition Generation */ + __IOM uint8_t IICSTPREQ : 1; /*!< [2..2] Stop Condition Generation */ + __IOM uint8_t IICSTIF : 1; /*!< [3..3] Issuing of Start, Restart, or Stop Condition Completed + * Flag(When 0 is written to IICSTIF, it is cleared to 0.) */ + __IOM uint8_t IICSDAS : 2; /*!< [5..4] SDA Output Select */ + __IOM uint8_t IICSCLS : 2; /*!< [7..6] SCL Output Select */ + } SIMR3_b; + }; + + union + { + __IM uint8_t SISR; /*!< (@ 0x0000000C) I2C Status Register */ + + struct + { + __IM uint8_t IICACKR : 1; /*!< [0..0] ACK Reception Data Flag */ + uint8_t : 7; + } SISR_b; + }; + + union + { + __IOM uint8_t SPMR; /*!< (@ 0x0000000D) SPI Mode Register */ + + struct + { + __IOM uint8_t SSE : 1; /*!< [0..0] SSn Pin Function Enable */ + __IOM uint8_t CTSE : 1; /*!< [1..1] CTS Enable */ + __IOM uint8_t MSS : 1; /*!< [2..2] Master Slave Select */ + __IOM uint8_t CSTPEN : 1; /*!< [3..3] CTS external pin Enable */ + __IOM uint8_t MFF : 1; /*!< [4..4] Mode Fault Flag */ + uint8_t : 1; + __IOM uint8_t CKPOL : 1; /*!< [6..6] Clock Polarity Select */ + __IOM uint8_t CKPH : 1; /*!< [7..7] Clock Phase Select */ + } SPMR_b; + }; + + union + { + union + { + __IOM uint16_t TDRHL; /*!< (@ 0x0000000E) Transmit 9-bit Data Register */ + + struct + { + __OM uint16_t TDRHL : 16; /*!< [15..0] TDRHL is a 16-bit register that stores transmit data. */ + } TDRHL_b; + }; + + union + { + __OM uint16_t FTDRHL; /*!< (@ 0x0000000E) Transmit FIFO Data Register HL */ + + struct + { + __OM uint16_t TDAT : 9; /*!< [8..0] Serial transmit data (Valid only in asynchronous mode(including + * multi-processor) or clock synchronous mode, and FIFO selected) */ + __OM uint16_t MPBT : 1; /*!< [9..9] Multi-processor transfer bit flag(Valid only in asynchronous + * mode and SMR.MP=1 and FIFO selected) */ + uint16_t : 6; + } FTDRHL_b; + }; + + struct + { + union + { + __OM uint8_t FTDRH; /*!< (@ 0x0000000E) Transmit FIFO Data Register H */ + + struct + { + __OM uint8_t TDATH : 1; /*!< [0..0] Serial transmit data (b8) (Valid only in asynchronous + * mode(including multi-processor) or clock synchronous mode, + * and FIFO selected) */ + __OM uint8_t MPBT : 1; /*!< [1..1] Multi-processor transfer bit flag(Valid only in asynchronous + * mode and SMR.MP=1 and FIFO selected) */ + uint8_t : 6; + } FTDRH_b; + }; + + union + { + __OM uint8_t FTDRL; /*!< (@ 0x0000000F) Transmit FIFO Data Register L */ + + struct + { + __OM uint8_t TDATL : 8; /*!< [7..0] Serial transmit data(b7-b0) (Valid only in asynchronous + * mode(including multi-processor) or clock synchronous mode, + * and FIFO selected) */ + } FTDRL_b; + }; + }; + }; + + union + { + union + { + __IM uint16_t RDRHL; /*!< (@ 0x00000010) Receive 9-bit Data Register */ + + struct + { + __IM uint16_t RDRHL : 16; /*!< [15..0] RDRHL is an 16-bit register that stores receive data. */ + } RDRHL_b; + }; + + union + { + __IM uint16_t FRDRHL; /*!< (@ 0x00000010) Receive FIFO Data Register HL */ + + struct + { + __IM uint16_t RDAT : 9; /*!< [8..0] Serial receive data(Valid only in asynchronous mode(including + * multi-processor) or clock synchronous mode, and FIFO selected) */ + __IM uint16_t MPB : 1; /*!< [9..9] Multi-processor bit flag(Valid only in asynchronous mode + * with SMR.MP=1 and FIFO selected) It can read multi-processor + * bit corresponded to serial receive data(RDATA[8:0]) */ + __IM uint16_t DR : 1; /*!< [10..10] Receive data ready flag(It is same as SSR.DR) */ + __IM uint16_t PER : 1; /*!< [11..11] Parity error flag */ + __IM uint16_t FER : 1; /*!< [12..12] Framing error flag */ + __IM uint16_t ORER : 1; /*!< [13..13] Overrun error flag(It is same as SSR.ORER) */ + __IM uint16_t RDF : 1; /*!< [14..14] Receive FIFO data full flag(It is same as SSR.RDF) */ + uint16_t : 1; + } FRDRHL_b; + }; + + struct + { + union + { + __IM uint8_t FRDRH; /*!< (@ 0x00000010) Receive FIFO Data Register H */ + + struct + { + __IM uint8_t RDATH : 1; /*!< [0..0] Serial receive data(b8)(Valid only in asynchronous mode(including + * multi-processor) or clock synchronous mode, and FIFO selected) */ + __IM uint8_t MPB : 1; /*!< [1..1] Multi-processor bit flag(Valid only in asynchronous mode + * with SMR.MP=1 and FIFO selected) It can read multi-processor + * bit corresponded to serial receive data(RDATA[8:0]) */ + __IM uint8_t DR : 1; /*!< [2..2] Receive data ready flag(It is same as SSR.DR) */ + __IM uint8_t PER : 1; /*!< [3..3] Parity error flag */ + __IM uint8_t FER : 1; /*!< [4..4] Framing error flag */ + __IM uint8_t ORER : 1; /*!< [5..5] Overrun error flag(It is same as SSR.ORER) */ + __IM uint8_t RDF : 1; /*!< [6..6] Receive FIFO data full flag(It is same as SSR.RDF) */ + uint8_t : 1; + } FRDRH_b; + }; + + union + { + __IM uint8_t FRDRL; /*!< (@ 0x00000011) Receive FIFO Data Register L */ + + struct + { + __IM uint8_t RDATL : 8; /*!< [7..0] Serial receive data(Valid only in asynchronous mode(including + * multi-processor) or clock synchronous mode, and FIFO selected)NOTE: + * When reading both of FRDRH register and FRDRL register, + * please read by an order of the FRDRH register and the FRDRL + * register. */ + } FRDRL_b; + }; + }; + }; + + union + { + __IOM uint8_t MDDR; /*!< (@ 0x00000012) Modulation Duty Register */ + + struct + { + __IOM uint8_t MDDR : 8; /*!< [7..0] MDDR corrects the bit rate adjusted by the BRR register. */ + } MDDR_b; + }; + + union + { + __IOM uint8_t DCCR; /*!< (@ 0x00000013) Data Compare Match Control Register */ + + struct + { + __IOM uint8_t DCMF : 1; /*!< [0..0] Data Compare Match Flag */ + uint8_t : 2; + __IOM uint8_t DPER : 1; /*!< [3..3] Data Compare Match Parity Error Flag */ + __IOM uint8_t DFER : 1; /*!< [4..4] Data Compare Match Framing Error Flag */ + uint8_t : 1; + __IOM uint8_t IDSEL : 1; /*!< [6..6] ID frame select(Valid only in asynchronous mode(including + * multi-processor) */ + __IOM uint8_t DCME : 1; /*!< [7..7] Data Compare Match Enable(Valid only in asynchronous + * mode(including multi-processor) */ + } DCCR_b; + }; + + union + { + __IOM uint16_t FCR; /*!< (@ 0x00000014) FIFO Control Register */ + + struct + { + __IOM uint16_t FM : 1; /*!< [0..0] FIFO Mode Select(Valid only in asynchronous mode(including + * multi-processor) or clock synchronous mode) */ + __IOM uint16_t RFRST : 1; /*!< [1..1] Receive FIFO Data Register Reset(Valid only in FCR.FM=1) */ + __IOM uint16_t TFRST : 1; /*!< [2..2] Transmit FIFO Data Register Reset(Valid only in FCR.FM=1) */ + __IOM uint16_t DRES : 1; /*!< [3..3] Receive data ready error select bit(When detecting a + * reception data ready, the interrupt request is selected.) */ + __IOM uint16_t TTRG : 4; /*!< [7..4] Transmit FIFO data trigger number(Valid only in asynchronous + * mode(including multi-processor) or clock synchronous mode) */ + __IOM uint16_t RTRG : 4; /*!< [11..8] Receive FIFO data trigger number(Valid only in asynchronous + * mode(including multi-processor) or clock synchronous mode) */ + __IOM uint16_t RSTRG : 4; /*!< [15..12] RTS Output Active Trigger Number Select(Valid only + * in asynchronous mode(including multi-processor) or clock + * synchronous mode) */ + } FCR_b; + }; + + union + { + __IM uint16_t FDR; /*!< (@ 0x00000016) FIFO Data Count Register */ + + struct + { + __IM uint16_t R : 5; /*!< [4..0] Receive FIFO Data CountIndicate the quantity of receive + * data stored in FRDRH and FRDRL(Valid only in asynchronous + * mode(including multi-processor) or clock synchronous mode, + * while FCR.FM=1) */ + uint16_t : 3; + __IM uint16_t T : 5; /*!< [12..8] Transmit FIFO Data CountIndicate the quantity of non-transmit + * data stored in FTDRH and FTDRL(Valid only in asynchronous + * mode(including multi-processor) or clock synchronous mode, + * while FCR.FM=1) */ + uint16_t : 3; + } FDR_b; + }; + + union + { + __IM uint16_t LSR; /*!< (@ 0x00000018) Line Status Register */ + + struct + { + __IM uint16_t ORER : 1; /*!< [0..0] Overrun Error Flag (Valid only in asynchronous mode(including + * multi-processor) or clock synchronous mode, and FIFO selected) */ + uint16_t : 1; + __IM uint16_t FNUM : 5; /*!< [6..2] Framing Error CountIndicates the quantity of data with + * a framing error among the receive data stored in the receive + * FIFO data register (FRDRH and FRDRL). */ + uint16_t : 1; + __IM uint16_t PNUM : 5; /*!< [12..8] Parity Error CountIndicates the quantity of data with + * a parity error among the receive data stored in the receive + * FIFO data register (FRDRH and FRDRL). */ + uint16_t : 3; + } LSR_b; + }; + + union + { + __IOM uint16_t CDR; /*!< (@ 0x0000001A) Compare Match Data Register */ + + struct + { + __IOM uint16_t CMPD : 9; /*!< [8..0] Compare Match DataCompare data pattern for address match + * wake-up function */ + uint16_t : 7; + } CDR_b; + }; + + union + { + __IOM uint8_t SPTR; /*!< (@ 0x0000001C) Serial Port Register */ + + struct + { + __IM uint8_t RXDMON : 1; /*!< [0..0] Serial input data monitor bit(The state of the RXD terminal + * is shown.) */ + __IOM uint8_t SPB2DT : 1; /*!< [1..1] Serial port break data select bit(The output level of + * TxD terminal is selected when SCR.TE = 0.) */ + __IOM uint8_t SPB2IO : 1; /*!< [2..2] Serial port break I/O bit(It's selected whether the value + * of SPB2DT is output to TxD terminal.) */ + uint8_t : 1; + __IOM uint8_t RINV : 1; /*!< [4..4] RXD invert bit */ + __IOM uint8_t TINV : 1; /*!< [5..5] TXD invert bit */ + __IOM uint8_t ASEN : 1; /*!< [6..6] Adjust receive sampling timing enable */ + __IOM uint8_t ATEN : 1; /*!< [7..7] Adjust transmit timing enable */ + } SPTR_b; + }; + + union + { + __IOM uint8_t ACTR; /*!< (@ 0x0000001D) Adjustment Communication Timing Register */ + + struct + { + __IOM uint8_t AST : 3; /*!< [2..0] Adjustment value for receive Sampling Timing */ + __IOM uint8_t AJD : 1; /*!< [3..3] Adjustment Direction for receive sampling timing */ + __IOM uint8_t ATT : 3; /*!< [6..4] Adjustment value for Transmit timing */ + __IOM uint8_t AET : 1; /*!< [7..7] Adjustment edge for transmit timing */ + } ACTR_b; + }; + __IM uint16_t RESERVED; + + union + { + __IOM uint8_t ESMER; /*!< (@ 0x00000020) Extended Serial Module Enable Register */ + + struct + { + __IOM uint8_t ESME : 1; /*!< [0..0] Extended Serial Mode Enable */ + uint8_t : 7; + } ESMER_b; + }; + + union + { + __IOM uint8_t CR0; /*!< (@ 0x00000021) Control Register 0 */ + + struct + { + uint8_t : 1; + __IM uint8_t SFSF : 1; /*!< [1..1] Start Frame Status Flag */ + __IM uint8_t RXDSF : 1; /*!< [2..2] RXDXn Input Status Flag */ + __IOM uint8_t BRME : 1; /*!< [3..3] Bit Rate Measurement Enable */ + uint8_t : 4; + } CR0_b; + }; + + union + { + __IOM uint8_t CR1; /*!< (@ 0x00000022) Control Register 1 */ + + struct + { + __IOM uint8_t BFE : 1; /*!< [0..0] Break Field Enable */ + __IOM uint8_t CF0RE : 1; /*!< [1..1] Control Field 0 Reception Enable */ + __IOM uint8_t CF1DS : 2; /*!< [3..2] Control Field 1 Data Register Select */ + __IOM uint8_t PIBE : 1; /*!< [4..4] Priority Interrupt Bit Enable */ + __IOM uint8_t PIBS : 3; /*!< [7..5] Priority Interrupt Bit Select */ + } CR1_b; + }; + + union + { + __IOM uint8_t CR2; /*!< (@ 0x00000023) Control Register 2 */ + + struct + { + __IOM uint8_t DFCS : 3; /*!< [2..0] RXDXn Signal Digital Filter Clock Select */ + uint8_t : 1; + __IOM uint8_t BCCS : 2; /*!< [5..4] Bus Collision Detection Clock Select */ + __IOM uint8_t RTS : 2; /*!< [7..6] RXDXn Reception Sampling Timing Select */ + } CR2_b; + }; + + union + { + __IOM uint8_t CR3; /*!< (@ 0x00000024) Control Register 3 */ + + struct + { + __IOM uint8_t SDST : 1; /*!< [0..0] Start Frame Detection Start */ + uint8_t : 7; + } CR3_b; + }; + + union + { + __IOM uint8_t PCR; /*!< (@ 0x00000025) Port Control Register */ + + struct + { + __IOM uint8_t TXDXPS : 1; /*!< [0..0] TXDXn Signal Polarity Select */ + __IOM uint8_t RXDXPS : 1; /*!< [1..1] RXDXn Signal Polarity Select */ + uint8_t : 2; + __IOM uint8_t SHARPS : 1; /*!< [4..4] TXDXn/RXDXn Pin Multiplexing Select */ + uint8_t : 3; + } PCR_b; + }; + + union + { + __IOM uint8_t ICR; /*!< (@ 0x00000026) Interrupt Control Register */ + + struct + { + __IOM uint8_t BFDIE : 1; /*!< [0..0] Break Field Low Width Detected Interrupt Enable */ + __IOM uint8_t CF0MIE : 1; /*!< [1..1] Control Field 0 Match Detected Interrupt Enable */ + __IOM uint8_t CF1MIE : 1; /*!< [2..2] Control Field 1 Match Detected Interrupt Enable */ + __IOM uint8_t PIBDIE : 1; /*!< [3..3] Priority Interrupt Bit Detected Interrupt Enable */ + __IOM uint8_t BCDIE : 1; /*!< [4..4] Bus Collision Detected Interrupt Enable */ + __IOM uint8_t AEDIE : 1; /*!< [5..5] Valid Edge Detected Interrupt Enable */ + uint8_t : 2; + } ICR_b; + }; + + union + { + __IM uint8_t STR; /*!< (@ 0x00000027) Status Register */ + + struct + { + __IM uint8_t BFDF : 1; /*!< [0..0] Break Field Low Width Detection Flag */ + __IM uint8_t CF0MF : 1; /*!< [1..1] Control Field 0 Match Flag */ + __IM uint8_t CF1MF : 1; /*!< [2..2] Control Field 1 Match Flag */ + __IM uint8_t PIBDF : 1; /*!< [3..3] Priority Interrupt Bit Detection Flag */ + __IM uint8_t BCDF : 1; /*!< [4..4] Bus Collision Detected Flag */ + __IM uint8_t AEDF : 1; /*!< [5..5] Valid Edge Detection Flag */ + uint8_t : 2; + } STR_b; + }; + + union + { + __IOM uint8_t STCR; /*!< (@ 0x00000028) Status Clear Register */ + + struct + { + __IOM uint8_t BFDCL : 1; /*!< [0..0] BFDF Clear */ + __IOM uint8_t CF0MCL : 1; /*!< [1..1] CF0MF Clear */ + __IOM uint8_t CF1MCL : 1; /*!< [2..2] CF1MF Clear */ + __IOM uint8_t PIBDCL : 1; /*!< [3..3] PIBDF Clear */ + __IOM uint8_t BCDCL : 1; /*!< [4..4] BCDF Clear */ + __IOM uint8_t AEDCL : 1; /*!< [5..5] AEDF Clear */ + uint8_t : 2; + } STCR_b; + }; + __IOM uint8_t CF0DR; /*!< (@ 0x00000029) Control Field 0 Data Register */ + + union + { + __IOM uint8_t CF0CR; /*!< (@ 0x0000002A) Control Field 0 Compare Enable Register */ + + struct + { + __IOM uint8_t CF0CE0 : 1; /*!< [0..0] Control Field 0 Bit 0 Compare Enable */ + __IOM uint8_t CF0CE1 : 1; /*!< [1..1] Control Field 1 Bit 0 Compare Enable */ + __IOM uint8_t CF0CE2 : 1; /*!< [2..2] Control Field 2 Bit 0 Compare Enable */ + __IOM uint8_t CF0CE3 : 1; /*!< [3..3] Control Field 3 Bit 0 Compare Enable */ + __IOM uint8_t CF0CE4 : 1; /*!< [4..4] Control Field 4 Bit 0 Compare Enable */ + __IOM uint8_t CF0CE5 : 1; /*!< [5..5] Control Field 5 Bit 0 Compare Enable */ + __IOM uint8_t CF0CE6 : 1; /*!< [6..6] Control Field 6 Bit 0 Compare Enable */ + __IOM uint8_t CF0CE7 : 1; /*!< [7..7] Control Field 7 Bit 0 Compare Enable */ + } CF0CR_b; + }; + __IOM uint8_t CF0RR; /*!< (@ 0x0000002B) Control Field 0 Receive Data Register */ + __IOM uint8_t PCF1DR; /*!< (@ 0x0000002C) Primary Control Field 1 Data Register */ + __IOM uint8_t SCF1DR; /*!< (@ 0x0000002D) Secondary Control Field 1 Data Register */ + + union + { + __IOM uint8_t CF1CR; /*!< (@ 0x0000002E) Control Field 1 Compare Enable Register */ + + struct + { + __IOM uint8_t CF1CE0 : 1; /*!< [0..0] Control Field 1 Bit 0 Compare Enable */ + __IOM uint8_t CF1CE1 : 1; /*!< [1..1] Control Field 1 Bit 1 Compare Enable */ + __IOM uint8_t CF1CE2 : 1; /*!< [2..2] Control Field 1 Bit 2 Compare Enable */ + __IOM uint8_t CF1CE3 : 1; /*!< [3..3] Control Field 1 Bit 3 Compare Enable */ + __IOM uint8_t CF1CE4 : 1; /*!< [4..4] Control Field 1 Bit 4 Compare Enable */ + __IOM uint8_t CF1CE5 : 1; /*!< [5..5] Control Field 1 Bit 5 Compare Enable */ + __IOM uint8_t CF1CE6 : 1; /*!< [6..6] Control Field 1 Bit 6 Compare Enable */ + __IOM uint8_t CF1CE7 : 1; /*!< [7..7] Control Field 1 Bit 7 Compare Enable */ + } CF1CR_b; + }; + __IOM uint8_t CF1RR; /*!< (@ 0x0000002F) Control Field 1 Receive Data Register */ + + union + { + __IOM uint8_t TCR; /*!< (@ 0x00000030) Timer Control Register */ + + struct + { + __IOM uint8_t TCST : 1; /*!< [0..0] Timer Count Start */ + uint8_t : 7; + } TCR_b; + }; + + union + { + __IOM uint8_t TMR; /*!< (@ 0x00000031) Timer Mode Register */ + + struct + { + __IOM uint8_t TOMS : 2; /*!< [1..0] Timer Operating Mode Select */ + uint8_t : 1; + __IOM uint8_t TWRC : 1; /*!< [3..3] Counter Write Control */ + __IOM uint8_t TCSS : 3; /*!< [6..4] Timer Count Clock Source Select */ + uint8_t : 1; + } TMR_b; + }; + __IOM uint8_t TPRE; /*!< (@ 0x00000032) Timer Prescaler Register */ + __IOM uint8_t TCNT; /*!< (@ 0x00000033) Timer Count Register */ +} R_SCI0_Type; /*!< Size = 52 (0x34) */ + +/* =========================================================================================================================== */ +/* ================ R_SDHI0 ================ */ +/* =========================================================================================================================== */ + +/** + * @brief SD/MMC Host Interface (R_SDHI0) + */ + +typedef struct /*!< (@ 0x40252000) R_SDHI0 Structure */ +{ + union + { + __IOM uint32_t SD_CMD; /*!< (@ 0x00000000) Command Type Register */ + + struct + { + __IOM uint32_t CMDIDX : 6; /*!< [5..0] Command IndexThese bits specify Command Format[45:40] + * (command index).[Examples]CMD6: SD_CMD[7:0] = 8'b00_000110CMD18: + * SD_CMD[7:0] = 8'b00_010010ACMD13: SD_CMD[7:0] = 8'b01_001101 */ + __IOM uint32_t ACMD : 2; /*!< [7..6] Command Type Select */ + __IOM uint32_t RSPTP : 3; /*!< [10..8] Mode/Response TypeNOTE: As some commands cannot be used + * in normal mode, see section 1.4.10, Example of SD_CMD Register + * Setting to select mode/response type. */ + __IOM uint32_t CMDTP : 1; /*!< [11..11] Data Mode (Command Type) */ + __IOM uint32_t CMDRW : 1; /*!< [12..12] Write/Read Mode (enabled when the command with data + * is handled) */ + __IOM uint32_t TRSTP : 1; /*!< [13..13] Single/Multiple Block Transfer (enabled when the command + * with data is handled) */ + __IOM uint32_t CMD12AT : 2; /*!< [15..14] Multiple Block Transfer Mode (enabled at multiple block + * transfer) */ + uint32_t : 16; + } SD_CMD_b; + }; + __IM uint32_t RESERVED; + + union + { + __IOM uint32_t SD_ARG; /*!< (@ 0x00000008) SD Command Argument Register */ + + struct + { + __IOM uint32_t SD_ARG : 32; /*!< [31..0] Argument RegisterSet command format[39:8] (argument) */ + } SD_ARG_b; + }; + + union + { + __IOM uint32_t SD_ARG1; /*!< (@ 0x0000000C) SD Command Argument Register 1 */ + + struct + { + __IOM uint32_t SD_ARG1 : 16; /*!< [15..0] Argument Register 1Set command format[39:24] (argument) */ + uint32_t : 16; + } SD_ARG1_b; + }; + + union + { + __IOM uint32_t SD_STOP; /*!< (@ 0x00000010) Data Stop Register */ + + struct + { + __IOM uint32_t STP : 1; /*!< [0..0] Stop- When STP is set to 1 during multiple block transfer, + * CMD12 is issued to halt the transfer through the SD host + * interface.However, if a command sequence is halted because + * of a communications error or timeout, CMD12 is not issued. + * Although continued buffer access is possible even after + * STP has been set to 1, the buffer access error bit (ERR5 + * or ERR4) in SD_INFO2 will be set accordingly.- When STP + * has been set to 1 during transfer for single block write, + * the access end flag is set when SD_BUF becomes emp */ + uint32_t : 7; + __IOM uint32_t SEC : 1; /*!< [8..8] Block Count EnableSet SEC to 1 at multiple block transfer.When + * SD_CMD is set as follows to start the command sequence + * while SEC is set to 1, CMD12 is automatically issued to + * stop multi-block transfer with the number of blocks which + * is set to SD_SECCNT.1. CMD18 or CMD25 in normal mode (SD_CMD[10:8] + * = 000)2. SD_CMD[15:13] = 001 in extended mode (CMD12 is + * automatically issued, multiple block transfer)When the + * command sequence is halted because of a communications + * error or timeout, CMD12 is not automatically i */ + uint32_t : 23; + } SD_STOP_b; + }; + + union + { + __IOM uint32_t SD_SECCNT; /*!< (@ 0x00000014) Block Count Register */ + + struct + { + __IOM uint32_t SD_SECCNT : 32; /*!< [31..0] Number of Transfer BlocksNOTE: Do not change the value + * of this bit when the CBSY bit in SD_INFO2 is set to 1. */ + } SD_SECCNT_b; + }; + + union + { + __IM uint32_t SD_RSP10; /*!< (@ 0x00000018) SD Card Response Register 10 */ + + struct + { + __IM uint32_t SD_RSP10 : 32; /*!< [31..0] Store the response from the SD card/MMC */ + } SD_RSP10_b; + }; + + union + { + __IM uint32_t SD_RSP1; /*!< (@ 0x0000001C) SD Card Response Register 1 */ + + struct + { + __IM uint32_t SD_RSP1 : 16; /*!< [15..0] Store the response from the SD card/MMC */ + uint32_t : 16; + } SD_RSP1_b; + }; + + union + { + __IM uint32_t SD_RSP32; /*!< (@ 0x00000020) SD Card Response Register 32 */ + + struct + { + __IM uint32_t SD_RSP32 : 32; /*!< [31..0] Store the response from the SD card/MMC */ + } SD_RSP32_b; + }; + + union + { + __IM uint32_t SD_RSP3; /*!< (@ 0x00000024) SD Card Response Register 3 */ + + struct + { + __IM uint32_t SD_RSP3 : 16; /*!< [15..0] Store the response from the SD card/MMC */ + uint32_t : 16; + } SD_RSP3_b; + }; + + union + { + __IM uint32_t SD_RSP54; /*!< (@ 0x00000028) SD Card Response Register 54 */ + + struct + { + __IM uint32_t SD_RSP54 : 32; /*!< [31..0] Store the response from the SD card/MMC */ + } SD_RSP54_b; + }; + + union + { + __IM uint32_t SD_RSP5; /*!< (@ 0x0000002C) SD Card Response Register 5 */ + + struct + { + __IM uint32_t SD_RSP5 : 16; /*!< [15..0] Store the response from the SD card/MMC */ + uint32_t : 16; + } SD_RSP5_b; + }; + + union + { + __IM uint32_t SD_RSP76; /*!< (@ 0x00000030) SD Card Response Register 76 */ + + struct + { + __IM uint32_t SD_RSP76 : 24; /*!< [23..0] Store the response from the SD card/MMC */ + uint32_t : 8; + } SD_RSP76_b; + }; + + union + { + __IM uint32_t SD_RSP7; /*!< (@ 0x00000034) SD Card Response Register 7 */ + + struct + { + __IM uint32_t SD_RSP7 : 8; /*!< [7..0] Store the response from the SD card/MMC */ + uint32_t : 24; + } SD_RSP7_b; + }; + + union + { + __IOM uint32_t SD_INFO1; /*!< (@ 0x00000038) SD Card Interrupt Flag Register 1 */ + + struct + { + __IOM uint32_t RSPEND : 1; /*!< [0..0] Response End Detection */ + uint32_t : 1; + __IOM uint32_t ACEND : 1; /*!< [2..2] Access End */ + __IOM uint32_t SDCDRM : 1; /*!< [3..3] SDnCD Card Removal */ + __IOM uint32_t SDCDIN : 1; /*!< [4..4] SDnCD Card Insertion */ + __IM uint32_t SDCDMON : 1; /*!< [5..5] Indicates the SDnCD state */ + uint32_t : 1; + __IM uint32_t SDWPMON : 1; /*!< [7..7] Indicates the SDnWP state */ + __IOM uint32_t SDD3RM : 1; /*!< [8..8] SDnDAT3 Card Removal */ + __IOM uint32_t SDD3IN : 1; /*!< [9..9] SDnDAT3 Card Insertion */ + __IM uint32_t SDD3MON : 1; /*!< [10..10] Inticates the SDnDAT3 State */ + uint32_t : 21; + } SD_INFO1_b; + }; + + union + { + __IOM uint32_t SD_INFO2; /*!< (@ 0x0000003C) SD Card Interrupt Flag Register 2 */ + + struct + { + __IOM uint32_t CMDE : 1; /*!< [0..0] Command Error */ + __IOM uint32_t CRCE : 1; /*!< [1..1] CRC Error */ + __IOM uint32_t ENDE : 1; /*!< [2..2] END Error */ + __IOM uint32_t DTO : 1; /*!< [3..3] Data Timeout */ + __IOM uint32_t ILW : 1; /*!< [4..4] SD_BUF Illegal Write Access */ + __IOM uint32_t ILR : 1; /*!< [5..5] SD_BUF Illegal Read Access */ + __IOM uint32_t RSPTO : 1; /*!< [6..6] Response Timeout */ + __IM uint32_t SDD0MON : 1; /*!< [7..7] SDDAT0Indicates the SDDAT0 state of the port specified + * by SD_PORTSEL. */ + __IOM uint32_t BRE : 1; /*!< [8..8] SD_BUF Read Enable */ + __IOM uint32_t BWE : 1; /*!< [9..9] SD_BUF Write Enable */ + uint32_t : 3; + __IM uint32_t SD_CLK_CTRLEN : 1; /*!< [13..13] When a command sequence is started by writing to SD_CMD, + * the CBSY bit is set to 1 and, at the same time, the SCLKDIVEN + * bit is set to 0. The SCLKDIVEN bit is set to 1 after 8 + * cycles of SDCLK have elapsed after setting of the CBSY + * bit to 0 due to completion of the command sequence. */ + __IM uint32_t CBSY : 1; /*!< [14..14] Command Type Register Busy */ + __IOM uint32_t ILA : 1; /*!< [15..15] Illegal Access Error */ + uint32_t : 16; + } SD_INFO2_b; + }; + + union + { + __IOM uint32_t SD_INFO1_MASK; /*!< (@ 0x00000040) SD_INFO1 Interrupt Mask Register */ + + struct + { + __IOM uint32_t RSPENDM : 1; /*!< [0..0] Response End Interrupt Request Mask */ + uint32_t : 1; + __IOM uint32_t ACENDM : 1; /*!< [2..2] Access End Interrupt Request Mask */ + __IOM uint32_t SDCDRMM : 1; /*!< [3..3] SDnCD card Removal Interrupt Request Mask */ + __IOM uint32_t SDCDINM : 1; /*!< [4..4] SDnCD card Insertion Interrupt Request Mask */ + uint32_t : 3; + __IOM uint32_t SDD3RMM : 1; /*!< [8..8] SDnDAT3 Card Removal Interrupt Request Mask */ + __IOM uint32_t SDD3INM : 1; /*!< [9..9] SDnDAT3 Card Insertion Interrupt Request Mask */ + uint32_t : 22; + } SD_INFO1_MASK_b; + }; + + union + { + __IOM uint32_t SD_INFO2_MASK; /*!< (@ 0x00000044) SD_INFO2 Interrupt Mask Register */ + + struct + { + __IOM uint32_t CMDEM : 1; /*!< [0..0] Command Error Interrupt Request Mask */ + __IOM uint32_t CRCEM : 1; /*!< [1..1] CRC Error Interrupt Request Mask */ + __IOM uint32_t ENDEM : 1; /*!< [2..2] End Bit Error Interrupt Request Mask */ + __IOM uint32_t DTOM : 1; /*!< [3..3] Data Timeout Interrupt Request Mask */ + __IOM uint32_t ILWM : 1; /*!< [4..4] SD_BUF Register Illegal Write Interrupt Request Mask */ + __IOM uint32_t ILRM : 1; /*!< [5..5] SD_BUF Register Illegal Read Interrupt Request Mask */ + __IOM uint32_t RSPTOM : 1; /*!< [6..6] Response Timeout Interrupt Request Mask */ + uint32_t : 1; + __IOM uint32_t BREM : 1; /*!< [8..8] BRE Interrupt Request Mask */ + __IOM uint32_t BWEM : 1; /*!< [9..9] BWE Interrupt Request Mask */ + uint32_t : 5; + __IOM uint32_t ILAM : 1; /*!< [15..15] Illegal Access Error Interrupt Request Mask */ + uint32_t : 16; + } SD_INFO2_MASK_b; + }; + + union + { + __IOM uint32_t SD_CLK_CTRL; /*!< (@ 0x00000048) SD Clock Control Register */ + + struct + { + __IOM uint32_t CLKSEL : 8; /*!< [7..0] SDHI Clock Frequency Select */ + __IOM uint32_t CLKEN : 1; /*!< [8..8] SD/MMC Clock Output Control Enable */ + __IOM uint32_t CLKCTRLEN : 1; /*!< [9..9] SD/MMC Clock Output Automatic Control Enable */ + uint32_t : 22; + } SD_CLK_CTRL_b; + }; + + union + { + __IOM uint32_t SD_SIZE; /*!< (@ 0x0000004C) Transfer Data Length Register */ + + struct + { + __IOM uint32_t LEN : 10; /*!< [9..0] Transfer Data SizeThese bits specify a size between 1 + * and 512 bytes for the transfer of single blocks.In cases + * of multiple block transfer with automatic issuing of CMD12 + * (CMD18 and CMD25), the only specifiable transfer data size + * is 512 bytes. Furthermore, in cases of multiple block transfer + * without automatic issuing of CMD12, as well as 512 bytes, + * 32, 64, 128, and 256 bytes are specifiable. However, in + * the reading of 32, 64, 128, and 256 bytes for the transfer + * of multiple blocks, this is restricted to mult */ + uint32_t : 22; + } SD_SIZE_b; + }; + + union + { + __IOM uint32_t SD_OPTION; /*!< (@ 0x00000050) SD Card Access Control Option Register */ + + struct + { + __IOM uint32_t CTOP : 4; /*!< [3..0] Card Detect Time Counter */ + __IOM uint32_t TOP : 4; /*!< [7..4] Timeout Counter */ + __IOM uint32_t TOUTMASK : 1; /*!< [8..8] Timeout MASKWhen timeout occurs in case of inactivating + * timeout, software reset should be executed to terminate + * command sequence. */ + uint32_t : 4; + __IOM uint32_t WIDTH8 : 1; /*!< [13..13] Bus Widthsee b15, WIDTH bit */ + uint32_t : 1; + __IOM uint32_t WIDTH : 1; /*!< [15..15] Bus WidthNOTE: The initial value is applied at a reset + * and when the SOFT_RST.SDRST flag is 0. */ + uint32_t : 16; + } SD_OPTION_b; + }; + __IM uint32_t RESERVED1; + + union + { + __IM uint32_t SD_ERR_STS1; /*!< (@ 0x00000058) SD Error Status Register 1 */ + + struct + { + __IM uint32_t CMDE0 : 1; /*!< [0..0] Command Error 0NOTE: other than a response to a command + * issued within a command sequence */ + __IM uint32_t CMDE1 : 1; /*!< [1..1] Command Error 1NOTE: In cases where CMD12 is issued by + * setting a command index in SD_CMD, this is Indicated in + * CMDE0. */ + __IM uint32_t RSPLENE0 : 1; /*!< [2..2] Response Length Error 0NOTE: other than a response to + * a command issued within a command sequence */ + __IM uint32_t RSPLENE1 : 1; /*!< [3..3] Response Length Error 1NOTE: In cases where CMD12 is + * issued by setting a command index in SD_CMD, this is indicated + * in RSPLENE0. */ + __IM uint32_t RDLENE : 1; /*!< [4..4] Read Data Length Error */ + __IM uint32_t CRCLENE : 1; /*!< [5..5] CRC Status Token Length Error */ + uint32_t : 2; + __IM uint32_t RSPCRCE0 : 1; /*!< [8..8] Response CRC Error 0NOTE: other than a response to a + * command issued within a command sequence */ + __IM uint32_t RSPCRCE1 : 1; /*!< [9..9] Response CRC Error 1NOTE: In cases where CMD12 is issued + * by setting a command index in SD_CMD, this is indicated + * in RSPCRCE0. */ + __IM uint32_t RDCRCE : 1; /*!< [10..10] Read Data CRC Error */ + __IM uint32_t CRCTKE : 1; /*!< [11..11] CRC Status Token Error */ + __IM uint32_t CRCTK : 3; /*!< [14..12] CRC Status TokenStore the CRC status token value (normal + * value is 010b) */ + uint32_t : 17; + } SD_ERR_STS1_b; + }; + + union + { + __IM uint32_t SD_ERR_STS2; /*!< (@ 0x0000005C) SD Error Status Register 2 */ + + struct + { + __IM uint32_t RSPTO0 : 1; /*!< [0..0] Response Timeout 0 */ + __IM uint32_t RSPTO1 : 1; /*!< [1..1] Response Timeout 1 */ + __IM uint32_t BSYTO0 : 1; /*!< [2..2] Busy Timeout 0 */ + __IM uint32_t BSYTO1 : 1; /*!< [3..3] Busy Timeout 1 */ + __IM uint32_t RDTO : 1; /*!< [4..4] Read Data Timeout */ + __IM uint32_t CRCTO : 1; /*!< [5..5] CRC Status Token Timeout */ + __IM uint32_t CRCBSYTO : 1; /*!< [6..6] CRC Status Token Busy Timeout */ + uint32_t : 25; + } SD_ERR_STS2_b; + }; + + union + { + __IOM uint32_t SD_BUF0; /*!< (@ 0x00000060) SD Buffer Register */ + + struct + { + __IOM uint32_t SD_BUF : 32; /*!< [31..0] SD Buffer RegisterWhen writing to the SD card, the write + * data is written to this register. When reading from the + * SD card, the read data is read from this register. This + * register is internally connected to two 512-byte buffers.If + * both buffers are not empty when executing multiple block + * read, SD/MMC clock is stopped to suspend receiving data. + * When one of buffers is empty, SD/MMC clock is supplied + * to resume receiving data. */ + } SD_BUF0_b; + }; + __IM uint32_t RESERVED2; + + union + { + __IOM uint32_t SDIO_MODE; /*!< (@ 0x00000068) SDIO Mode Control Register */ + + struct + { + __IOM uint32_t INTEN : 1; /*!< [0..0] SDIO Mode */ + uint32_t : 1; + __IOM uint32_t RWREQ : 1; /*!< [2..2] Read Wait Request */ + uint32_t : 5; + __IOM uint32_t IOABT : 1; /*!< [8..8] SDIO AbortNOTE: See manual */ + __IOM uint32_t C52PUB : 1; /*!< [9..9] SDIO None AbortNOTE: See manual */ + uint32_t : 22; + } SDIO_MODE_b; + }; + + union + { + __IOM uint32_t SDIO_INFO1; /*!< (@ 0x0000006C) SDIO Interrupt Flag Register 1 */ + + struct + { + __IOM uint32_t IOIRQ : 1; /*!< [0..0] SDIO Interrupt Status */ + uint32_t : 13; + __IOM uint32_t EXPUB52 : 1; /*!< [14..14] EXPUB52 Status FlagNOTE: See manual */ + __IOM uint32_t EXWT : 1; /*!< [15..15] EXWT Status FlagNOTE: See manual */ + uint32_t : 16; + } SDIO_INFO1_b; + }; + + union + { + __IOM uint32_t SDIO_INFO1_MASK; /*!< (@ 0x00000070) SDIO_INFO1 Interrupt Mask Register */ + + struct + { + __IOM uint32_t IOIRQM : 1; /*!< [0..0] IOIRQ Interrupt Mask Control */ + uint32_t : 13; + __IOM uint32_t EXPUB52M : 1; /*!< [14..14] EXPUB52 Interrupt Request Mask Control */ + __IOM uint32_t EXWTM : 1; /*!< [15..15] EXWT Interrupt Request Mask Control */ + uint32_t : 16; + } SDIO_INFO1_MASK_b; + }; + __IM uint32_t RESERVED3[79]; + + union + { + __IOM uint32_t SD_DMAEN; /*!< (@ 0x000001B0) DMA Mode Enable Register */ + + struct + { + uint32_t : 1; + __IOM uint32_t DMAEN : 1; /*!< [1..1] SD_BUF Read/Write DMA Transfer */ + uint32_t : 30; + } SD_DMAEN_b; + }; + __IM uint32_t RESERVED4[3]; + + union + { + __IOM uint32_t SOFT_RST; /*!< (@ 0x000001C0) Software Reset Register */ + + struct + { + __IOM uint32_t SDRST : 1; /*!< [0..0] Software Reset of SD I/F Unit */ + uint32_t : 31; + } SOFT_RST_b; + }; + __IM uint32_t RESERVED5[2]; + + union + { + __IOM uint32_t SDIF_MODE; /*!< (@ 0x000001CC) SD Interface Mode Setting Register */ + + struct + { + uint32_t : 8; + __IOM uint32_t NOCHKCR : 1; /*!< [8..8] CRC Check Mask (for MMC test commands) */ + uint32_t : 23; + } SDIF_MODE_b; + }; + __IM uint32_t RESERVED6[4]; + + union + { + __IOM uint32_t EXT_SWAP; /*!< (@ 0x000001E0) Swap Control Register */ + + struct + { + uint32_t : 6; + __IOM uint32_t BWSWP : 1; /*!< [6..6] SD_BUF0 Swap Write */ + __IOM uint32_t BRSWP : 1; /*!< [7..7] SD_BUF0 Swap Read */ + uint32_t : 24; + } EXT_SWAP_b; + }; +} R_SDHI0_Type; /*!< Size = 484 (0x1e4) */ + +/* =========================================================================================================================== */ +/* ================ R_SPI0 ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Serial Peripheral Interface (R_SPI0) + */ + +typedef struct /*!< (@ 0x4035C000) R_SPI0 Structure */ +{ + union + { + __IOM uint8_t SPCR; /*!< (@ 0x00000000) SPI Control Register */ + + struct + { + __IOM uint8_t SPMS : 1; /*!< [0..0] SPI Mode Select */ + __IOM uint8_t TXMD : 1; /*!< [1..1] Communications Operating Mode Select */ + __IOM uint8_t MODFEN : 1; /*!< [2..2] Mode Fault Error Detection Enable */ + __IOM uint8_t MSTR : 1; /*!< [3..3] SPI Master/Slave Mode Select */ + __IOM uint8_t SPEIE : 1; /*!< [4..4] SPI Error Interrupt Enable */ + __IOM uint8_t SPTIE : 1; /*!< [5..5] Transmit Buffer Empty Interrupt Enable */ + __IOM uint8_t SPE : 1; /*!< [6..6] SPI Function Enable */ + __IOM uint8_t SPRIE : 1; /*!< [7..7] SPI Receive Buffer Full Interrupt Enable */ + } SPCR_b; + }; + + union + { + __IOM uint8_t SSLP; /*!< (@ 0x00000001) SPI Slave Select Polarity Register */ + + struct + { + __IOM uint8_t SSL0P : 1; /*!< [0..0] SSL0 Signal Polarity Setting */ + __IOM uint8_t SSL1P : 1; /*!< [1..1] SSL1 Signal Polarity Setting */ + __IOM uint8_t SSL2P : 1; /*!< [2..2] SSL2 Signal Polarity Setting */ + __IOM uint8_t SSL3P : 1; /*!< [3..3] SSL3 Signal Polarity Setting */ + __IOM uint8_t SSL4P : 1; /*!< [4..4] SSL4 Signal Polarity Setting */ + __IOM uint8_t SSL5P : 1; /*!< [5..5] SSL5 Signal Polarity Setting */ + __IOM uint8_t SSL6P : 1; /*!< [6..6] SSL6 Signal Polarity Setting */ + __IOM uint8_t SSL7P : 1; /*!< [7..7] SSL7 Signal Polarity Setting */ + } SSLP_b; + }; + + union + { + __IOM uint8_t SPPCR; /*!< (@ 0x00000002) SPI Pin Control Register */ + + struct + { + __IOM uint8_t SPLP : 1; /*!< [0..0] SPI Loopback */ + __IOM uint8_t SPLP2 : 1; /*!< [1..1] SPI Loopback 2 */ + uint8_t : 2; + __IOM uint8_t MOIFV : 1; /*!< [4..4] MOSI Idle Fixed Value */ + __IOM uint8_t MOIFE : 1; /*!< [5..5] MOSI Idle Value Fixing Enable */ + uint8_t : 2; + } SPPCR_b; + }; + + union + { + __IOM uint8_t SPSR; /*!< (@ 0x00000003) SPI Status Register */ + + struct + { + __IOM uint8_t OVRF : 1; /*!< [0..0] Overrun Error Flag */ + __IM uint8_t IDLNF : 1; /*!< [1..1] SPI Idle Flag */ + __IOM uint8_t MODF : 1; /*!< [2..2] Mode Fault Error Flag */ + __IOM uint8_t PERF : 1; /*!< [3..3] Parity Error Flag */ + __IOM uint8_t UDRF : 1; /*!< [4..4] Underrun Error Flag(When MODF is 0, This bit is invalid.) */ + __IOM uint8_t SPTEF : 1; /*!< [5..5] SPI Transmit Buffer Empty Flag */ + __IOM uint8_t CENDF : 1; /*!< [6..6] Communication End Flag */ + __IOM uint8_t SPRF : 1; /*!< [7..7] SPI Receive Buffer Full Flag */ + } SPSR_b; + }; + + union + { + __IOM uint32_t SPDR; /*!< (@ 0x00000004) SPI Data Register */ + __IOM uint16_t SPDR_HA; /*!< (@ 0x00000004) SPI Data Register ( halfword access ) */ + __IOM uint8_t SPDR_BY; /*!< (@ 0x00000004) SPI Data Register ( byte access ) */ + }; + + union + { + __IOM uint8_t SPSCR; /*!< (@ 0x00000008) SPI Sequence Control Register */ + + struct + { + __IOM uint8_t SPSLN : 3; /*!< [2..0] RSPI Sequence Length SpecificationThe order in which + * the SPCMD0 to SPCMD07 registers are to be referenced is + * changed in accordance with the sequence length that is + * set in these bits. The relationship among the setting of + * these bits, sequence length, and SPCMD0 to SPCMD7 registers + * referenced by the RSPI is shown above. However, the RSPI + * in slave mode always references SPCMD0. */ + uint8_t : 5; + } SPSCR_b; + }; + + union + { + __IM uint8_t SPSSR; /*!< (@ 0x00000009) SPI Sequence Status Register */ + + struct + { + __IM uint8_t SPCP : 3; /*!< [2..0] RSPI Command Pointer */ + uint8_t : 1; + __IM uint8_t SPECM : 3; /*!< [6..4] RSPI Error Command */ + uint8_t : 1; + } SPSSR_b; + }; + + union + { + __IOM uint8_t SPBR; /*!< (@ 0x0000000A) SPI Bit Rate Register */ + + struct + { + __IOM uint8_t SPR : 8; /*!< [7..0] SPBR sets the bit rate in master mode. */ + } SPBR_b; + }; + + union + { + __IOM uint8_t SPDCR; /*!< (@ 0x0000000B) SPI Data Control Register */ + + struct + { + __IOM uint8_t SPFC : 2; /*!< [1..0] Number of Frames Specification */ + __IOM uint8_t SLSEL : 2; /*!< [3..2] SSL Pin Output Select */ + __IOM uint8_t SPRDTD : 1; /*!< [4..4] SPI Receive/Transmit Data Selection */ + __IOM uint8_t SPLW : 1; /*!< [5..5] SPI Word Access/Halfword Access Specification */ + __IOM uint8_t SPBYT : 1; /*!< [6..6] SPI Byte Access Specification */ + uint8_t : 1; + } SPDCR_b; + }; + + union + { + __IOM uint8_t SPCKD; /*!< (@ 0x0000000C) SPI Clock Delay Register */ + + struct + { + __IOM uint8_t SCKDL : 3; /*!< [2..0] RSPCK Delay Setting */ + uint8_t : 5; + } SPCKD_b; + }; + + union + { + __IOM uint8_t SSLND; /*!< (@ 0x0000000D) SPI Slave Select Negation Delay Register */ + + struct + { + __IOM uint8_t SLNDL : 3; /*!< [2..0] SSL Negation Delay Setting */ + uint8_t : 5; + } SSLND_b; + }; + + union + { + __IOM uint8_t SPND; /*!< (@ 0x0000000E) SPI Next-Access Delay Register */ + + struct + { + __IOM uint8_t SPNDL : 3; /*!< [2..0] SPI Next-Access Delay Setting */ + uint8_t : 5; + } SPND_b; + }; + + union + { + __IOM uint8_t SPCR2; /*!< (@ 0x0000000F) SPI Control Register 2 */ + + struct + { + __IOM uint8_t SPPE : 1; /*!< [0..0] Parity Enable */ + __IOM uint8_t SPOE : 1; /*!< [1..1] Parity Mode */ + __IOM uint8_t SPIIE : 1; /*!< [2..2] SPI Idle Interrupt Enable */ + __IOM uint8_t PTE : 1; /*!< [3..3] Parity Self-Testing */ + __IOM uint8_t SCKASE : 1; /*!< [4..4] RSPCK Auto-Stop Function Enable */ + __IOM uint8_t SPTDDL : 3; /*!< [7..5] RSPI Transmit Data Delay */ + } SPCR2_b; + }; + + union + { + __IOM uint16_t SPCMD[8]; /*!< (@ 0x00000010) SPI Command Register [0..7] */ + + struct + { + __IOM uint16_t CPHA : 1; /*!< [0..0] RSPCK Phase Setting */ + __IOM uint16_t CPOL : 1; /*!< [1..1] RSPCK Polarity Setting */ + __IOM uint16_t BRDV : 2; /*!< [3..2] Bit Rate Division Setting */ + __IOM uint16_t SSLA : 3; /*!< [6..4] SSL Signal Assertion Setting */ + __IOM uint16_t SSLKP : 1; /*!< [7..7] SSL Signal Level Keeping */ + __IOM uint16_t SPB : 4; /*!< [11..8] SPI Data Length Setting */ + __IOM uint16_t LSBF : 1; /*!< [12..12] SPI LSB First */ + __IOM uint16_t SPNDEN : 1; /*!< [13..13] SPI Next-Access Delay Enable */ + __IOM uint16_t SLNDEN : 1; /*!< [14..14] SSL Negation Delay Setting Enable */ + __IOM uint16_t SCKDEN : 1; /*!< [15..15] RSPCK Delay Setting Enable */ + } SPCMD_b[8]; + }; + + union + { + __IOM uint8_t SPDCR2; /*!< (@ 0x00000020) SPI Data Control Register 2 */ + + struct + { + __IOM uint8_t BYSW : 1; /*!< [0..0] Byte Swap Operating Mode Select */ + __IOM uint8_t SINV : 1; /*!< [1..1] Serial data invert bit */ + uint8_t : 6; + } SPDCR2_b; + }; + + union + { + __IOM uint8_t SPCR3; /*!< (@ 0x00000021) RSPI Control Register 3 */ + + struct + { + __IOM uint8_t ETXMD : 1; /*!< [0..0] Extended Communication Mode Select */ + __IOM uint8_t BFDS : 1; /*!< [1..1] Between Burst Transfer Frames Delay Select */ + uint8_t : 2; + __IOM uint8_t CENDIE : 1; /*!< [4..4] RSPI Communication End Interrupt Enable */ + uint8_t : 3; + } SPCR3_b; + }; + __IM uint16_t RESERVED; + __IM uint32_t RESERVED1[6]; + __IM uint16_t RESERVED2; + + union + { + __IOM uint16_t SPPR; /*!< (@ 0x0000003E) RSPI Parameter Read Register */ + + struct + { + uint16_t : 4; + __IOM uint16_t BUFWID : 1; /*!< [4..4] Buffer Width check */ + uint16_t : 3; + __IOM uint16_t BUFNUM : 3; /*!< [10..8] Buffer Number check */ + uint16_t : 1; + __IOM uint16_t CMDNUM : 4; /*!< [15..12] Command Number check */ + } SPPR_b; + }; +} R_SPI0_Type; /*!< Size = 64 (0x40) */ + +/* =========================================================================================================================== */ +/* ================ R_SRAM ================ */ +/* =========================================================================================================================== */ + +/** + * @brief SRAM (R_SRAM) + */ + +typedef struct /*!< (@ 0x40002000) R_SRAM Structure */ +{ + union + { + __IOM uint16_t SRAMPRCR; /*!< (@ 0x00000000) SRAM Protection Control Register for Secure */ + + struct + { + __IOM uint16_t PR : 1; /*!< [0..0] Register Write Control */ + uint16_t : 7; + __OM uint16_t KW : 8; /*!< [15..8] Write Key Code */ + } SRAMPRCR_b; + }; + __IM uint16_t RESERVED; + + union + { + __IOM uint16_t SRAMPRCR_NS; /*!< (@ 0x00000004) SRAM Protection Control Register for Non-Secure */ + + struct + { + __IOM uint16_t PR : 1; /*!< [0..0] Register Write Control */ + uint16_t : 7; + __OM uint16_t KW : 8; /*!< [15..8] Write Key Code */ + } SRAMPRCR_NS_b; + }; + __IM uint16_t RESERVED1; + + union + { + __IOM uint8_t SRAMWTSC; /*!< (@ 0x00000008) SRAM Wait State Control Register */ + + struct + { + __IOM uint8_t WTEN : 1; /*!< [0..0] Wait enable */ + uint8_t : 7; + } SRAMWTSC_b; + }; + __IM uint8_t RESERVED2; + __IM uint16_t RESERVED3; + __IM uint32_t RESERVED4; + + union + { + __IOM uint8_t SRAMCR0; /*!< (@ 0x00000010) SRAM Control Register 0 */ + + struct + { + __IOM uint8_t OAD : 1; /*!< [0..0] Operation after detection for 1-bit ECC error detection */ + uint8_t : 1; + __IOM uint8_t ECCMOD : 2; /*!< [3..2] ECC Operating Mode Select */ + __IOM uint8_t E1STSEN : 1; /*!< [4..4] ECC 1-Bit Error Information Update Enable */ + uint8_t : 2; + __IOM uint8_t TSTBYP : 1; /*!< [7..7] ECC Test Enable / ECC Bypass Select */ + } SRAMCR0_b; + }; + __IM uint8_t RESERVED5; + __IM uint16_t RESERVED6; + + union + { + __IOM uint8_t SRAMCR1; /*!< (@ 0x00000014) SRAM Control Register 1 */ + + struct + { + __IOM uint8_t OAD : 1; /*!< [0..0] Operation after detection for parity error detection */ + uint8_t : 7; + } SRAMCR1_b; + }; + __IM uint8_t RESERVED7; + __IM uint16_t RESERVED8; + __IM uint32_t RESERVED9[6]; + + union + { + __IOM uint8_t SRAMECCRGN0; /*!< (@ 0x00000030) SRAM0 ECC Region Control Register */ + + struct + { + __IOM uint8_t ECCRGN : 2; /*!< [1..0] ECC Region */ + uint8_t : 6; + } SRAMECCRGN0_b; + }; + __IM uint8_t RESERVED10; + __IM uint16_t RESERVED11; + __IM uint32_t RESERVED12[3]; + + union + { + __IM uint16_t SRAMESR; /*!< (@ 0x00000040) SRAM Error Status Register */ + + struct + { + __IM uint16_t ERR00 : 1; /*!< [0..0] SRAM0 1-bit ECC Error Status */ + __IM uint16_t ERR01 : 1; /*!< [1..1] SRAM0 2-bit ECC Error Status */ + __IM uint16_t ERR1 : 1; /*!< [2..2] SRAM1 Parity Error Status */ + uint16_t : 11; + __IM uint16_t ERRS : 1; /*!< [14..14] Standby SRAM Parity Error status */ + uint16_t : 1; + } SRAMESR_b; + }; + __IM uint16_t RESERVED13; + __IM uint32_t RESERVED14; + + union + { + __IOM uint16_t SRAMESCLR; /*!< (@ 0x00000048) SRAM Error Status Clear Register */ + + struct + { + __IOM uint16_t CLR00 : 1; /*!< [0..0] SRAM0 1-bit ECC Error Status Clear */ + __IOM uint16_t CLR01 : 1; /*!< [1..1] SRAM0 2-bit ECC Error Status Clear */ + __IOM uint16_t CLR1 : 1; /*!< [2..2] SRAM1 Parity Error Status Clear */ + uint16_t : 11; + __IOM uint16_t CLRS : 1; /*!< [14..14] Standby SRAM Parity Error Status Clear */ + uint16_t : 1; + } SRAMESCLR_b; + }; + __IM uint16_t RESERVED15; + __IM uint32_t RESERVED16; + + union + { + __IM uint32_t SRAMEAR0; /*!< (@ 0x00000050) SRAM Error Address Register */ + + struct + { + uint32_t : 3; + __IM uint32_t EA : 17; /*!< [19..3] SRAM Error Address */ + uint32_t : 12; + } SRAMEAR0_b; + }; + + union + { + __IM uint32_t SRAMEAR1; /*!< (@ 0x00000054) SRAM Error Address Register */ + + struct + { + uint32_t : 3; + __IM uint32_t EA : 17; /*!< [19..3] SRAM Error Address */ + uint32_t : 12; + } SRAMEAR1_b; + }; + + union + { + __IM uint32_t SRAMEAR2; /*!< (@ 0x00000058) SRAM Error Address Register */ + + struct + { + uint32_t : 3; + __IM uint32_t EA : 17; /*!< [19..3] SRAM Error Address */ + uint32_t : 12; + } SRAMEAR2_b; + }; + __IM uint32_t RESERVED17[45]; + + union + { + __IOM uint8_t STBRAMCR; /*!< (@ 0x00000110) Standby SRAM Control Register */ + + struct + { + __IOM uint8_t OAD : 1; /*!< [0..0] Operation after detection */ + uint8_t : 7; + } STBRAMCR_b; + }; + __IM uint8_t RESERVED18; + __IM uint16_t RESERVED19; + __IM uint32_t RESERVED20[15]; + + union + { + __IM uint32_t STBRAMEAR; /*!< (@ 0x00000150) Standby SRAM Error Address Register */ + + struct + { + uint32_t : 2; + __IM uint32_t EA : 8; /*!< [9..2] SRAM Error Address */ + uint32_t : 22; + } STBRAMEAR_b; + }; +} R_SRAM_Type; /*!< Size = 340 (0x154) */ + +/* =========================================================================================================================== */ +/* ================ R_SSI0 ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Serial Sound Interface Enhanced (SSIE) (R_SSI0) + */ + +typedef struct /*!< (@ 0x4025D000) R_SSI0 Structure */ +{ + union + { + __IOM uint32_t SSICR; /*!< (@ 0x00000000) Control Register */ + + struct + { + __IOM uint32_t REN : 1; /*!< [0..0] Receive Enable */ + __IOM uint32_t TEN : 1; /*!< [1..1] Transmit Enable */ + uint32_t : 1; + __IOM uint32_t MUEN : 1; /*!< [3..3] Mute EnableNOTE: When this module is muted, the value + * of outputting serial data is rewritten to 0 but data transmission + * is not stopped. Write dummy data to the SSIFTDR not to + * generate a transmit underflow because the number of data + * in the transmit FIFO is decreasing. */ + __IOM uint32_t CKDV : 4; /*!< [7..4] Serial Oversampling Clock Division Ratio */ + __IOM uint32_t DEL : 1; /*!< [8..8] Serial Data Delay */ + __IOM uint32_t PDTA : 1; /*!< [9..9] Parallel Data Alignment */ + __IOM uint32_t SDTA : 1; /*!< [10..10] Serial Data Alignment */ + __IOM uint32_t SPDP : 1; /*!< [11..11] Serial Padding Polarity */ + __IOM uint32_t LRCKP : 1; /*!< [12..12] Serial WS Polarity */ + __IOM uint32_t BCKP : 1; /*!< [13..13] Serial Bit Clock Polarity */ + __IOM uint32_t MST : 1; /*!< [14..14] Serial WS Direction NOTE: Only the following settings + * are allowed: (SCKD, SWSD) = (0, 0) and (1, 1). Other settings + * are prohibited. */ + uint32_t : 1; + __IOM uint32_t SWL : 3; /*!< [18..16] System Word LengthSet the system word length to the + * bit clock frequency/2 fs. */ + __IOM uint32_t DWL : 3; /*!< [21..19] Data Word Length */ + __IOM uint32_t FRM : 2; /*!< [23..22] Channels */ + uint32_t : 1; + __IOM uint32_t IIEN : 1; /*!< [25..25] Idle Mode Interrupt Enable */ + __IOM uint32_t ROIEN : 1; /*!< [26..26] Receive Overflow Interrupt Enable */ + __IOM uint32_t RUIEN : 1; /*!< [27..27] Receive Underflow Interrupt Enable */ + __IOM uint32_t TOIEN : 1; /*!< [28..28] Transmit Overflow Interrupt Enable */ + __IOM uint32_t TUIEN : 1; /*!< [29..29] Transmit Underflow Interrupt Enable */ + __IOM uint32_t CKS : 1; /*!< [30..30] Oversampling Clock Select */ + uint32_t : 1; + } SSICR_b; + }; + + union + { + __IOM uint32_t SSISR; /*!< (@ 0x00000004) Status Register */ + + struct + { + __IM uint32_t IDST : 1; /*!< [0..0] Idle Mode Status Flag */ + __IM uint32_t RSWNO : 1; /*!< [1..1] Receive Serial Word Number */ + __IM uint32_t RCHNO : 2; /*!< [3..2] Receive Channel Number.These bits are read as 00b. */ + __IM uint32_t TSWNO : 1; /*!< [4..4] Transmit Serial Word Number */ + __IM uint32_t TCHNO : 2; /*!< [6..5] Transmit Channel Number */ + uint32_t : 18; + __IM uint32_t IIRQ : 1; /*!< [25..25] Idle Mode Interrupt Status Flag */ + __IOM uint32_t ROIRQ : 1; /*!< [26..26] Receive Overflow Error Interrupt Status Flag NOTE: + * Writable only to clear the flag. Confirm the value is 1 + * and then write 0. */ + __IOM uint32_t RUIRQ : 1; /*!< [27..27] Receive Underflow Error Interrupt Status Flag NOTE: + * Writable only to clear the flag. Confirm the value is 1 + * and then write 0. */ + __IOM uint32_t TOIRQ : 1; /*!< [28..28] Transmit Overflow Error Interrupt Status Flag NOTE: + * Writable only to clear the flag. Confirm the value is 1 + * and then write 0. */ + __IOM uint32_t TUIRQ : 1; /*!< [29..29] Transmit Underflow Error Interrupt Status Flag NOTE: + * Writable only to clear the flag. Confirm the value is 1 + * and then write 0. */ + uint32_t : 2; + } SSISR_b; + }; + __IM uint32_t RESERVED[2]; + + union + { + __IOM uint32_t SSIFCR; /*!< (@ 0x00000010) FIFO Control Register */ + + struct + { + __IOM uint32_t RFRST : 1; /*!< [0..0] Receive FIFO Data Register Reset */ + __IOM uint32_t TFRST : 1; /*!< [1..1] Transmit FIFO Data Register Reset */ + __IOM uint32_t RIE : 1; /*!< [2..2] Receive Interrupt Enable NOTE: RXI can be cleared by + * clearing either the RDF flag (see the description of the + * RDF bit for details) or RIE bit. */ + __IOM uint32_t TIE : 1; /*!< [3..3] Transmit Interrupt Enable NOTE: TXI can be cleared by + * clearing either the TDE flag (see the description of the + * TDE bit for details) or TIE bit. */ + __IOM uint32_t RTRG : 2; /*!< [5..4] Receive Data Trigger Number */ + __IOM uint32_t TTRG : 2; /*!< [7..6] Transmit Data Trigger Number NOTE: The values in parenthesis + * are the number of empty stages in SSIFTDR at which the + * TDE flag is set. */ + uint32_t : 3; + __IOM uint32_t BSW : 1; /*!< [11..11] Byte Swap Enable */ + uint32_t : 4; + __IOM uint32_t SSIRST : 1; /*!< [16..16] SSI soft ware reset */ + uint32_t : 14; + __IOM uint32_t AUCKE : 1; /*!< [31..31] Oversampling Clock Enable */ + } SSIFCR_b; + }; + + union + { + __IOM uint32_t SSIFSR; /*!< (@ 0x00000014) FIFO Status Register */ + + struct + { + __IOM uint32_t RDF : 1; /*!< [0..0] Receive Data Full Flag NOTE: Since the SSIFRDR register + * is a 32-byte FIFO register, the maximum number of data + * bytes that can be read from it while the RDF flag is 1 + * is indicated in the RDC[3:0] flags. If reading data from + * the SSIFRDR register is continued after all the data is + * read, undefined values will be read. */ + uint32_t : 7; + __IM uint32_t RDC : 6; /*!< [13..8] Receive Data Indicate Flag(Indicates the number of data + * units stored in SSIFRDR) */ + uint32_t : 2; + __IOM uint32_t TDE : 1; /*!< [16..16] Transmit Data Empty Flag NOTE: Since the SSIFTDR register + * is a 32-byte FIFO register, the maximum number of bytes + * that can be written to it while the TDE flag is 1 is 8 + * - TDC[3:0]. If writing data to the SSIFTDR register is + * continued after all the data is written, writing will be + * invalid and an overflow occurs. */ + uint32_t : 7; + __IM uint32_t TDC : 6; /*!< [29..24] Transmit Data Indicate Flag(Indicates the number of + * data units stored in SSIFTDR) */ + uint32_t : 2; + } SSIFSR_b; + }; + + union + { + union + { + __OM uint32_t SSIFTDR; /*!< (@ 0x00000018) Transmit FIFO Data Register */ + + struct + { + __OM uint32_t SSIFTDR : 32; /*!< [31..0] SSIFTDR is a write-only FIFO register consisting of + * eight stages of 32-bit registers for storing data to be + * serially transmitted. NOTE: that when the SSIFTDR register + * is full of data (32 bytes), the next data cannot be written + * to it. If writing is attempted, it will be ignored and + * an overflow occurs. */ + } SSIFTDR_b; + }; + __OM uint16_t SSIFTDR16; /*!< (@ 0x00000018) Transmit FIFO Data Register */ + __OM uint8_t SSIFTDR8; /*!< (@ 0x00000018) Transmit FIFO Data Register */ + }; + + union + { + union + { + __IM uint32_t SSIFRDR; /*!< (@ 0x0000001C) Receive FIFO Data Register */ + + struct + { + __IM uint32_t SSIFRDR : 32; /*!< [31..0] SSIFRDR is a read-only FIFO register consisting of eight + * stages of 32-bit registers for storing serially received + * data. */ + } SSIFRDR_b; + }; + __IM uint16_t SSIFRDR16; /*!< (@ 0x0000001C) Receive FIFO Data Register */ + __IM uint8_t SSIFRDR8; /*!< (@ 0x0000001C) Receive FIFO Data Register */ + }; + + union + { + __IOM uint32_t SSIOFR; /*!< (@ 0x00000020) Audio Format Register */ + + struct + { + __IOM uint32_t OMOD : 2; /*!< [1..0] Audio Format Select */ + uint32_t : 6; + __IOM uint32_t LRCONT : 1; /*!< [8..8] Whether to Enable LRCK/FS Continuation */ + __IOM uint32_t BCKASTP : 1; /*!< [9..9] Whether to Enable Stopping BCK Output When SSIE is in + * Idle Status */ + uint32_t : 22; + } SSIOFR_b; + }; + + union + { + __IOM uint32_t SSISCR; /*!< (@ 0x00000024) Status Control Register */ + + struct + { + __IOM uint32_t RDFS : 5; /*!< [4..0] RDF Setting Condition Select */ + uint32_t : 3; + __IOM uint32_t TDES : 5; /*!< [12..8] TDE Setting Condition Select */ + uint32_t : 19; + } SSISCR_b; + }; +} R_SSI0_Type; /*!< Size = 40 (0x28) */ + +/* =========================================================================================================================== */ +/* ================ R_SYSTEM ================ */ +/* =========================================================================================================================== */ + +/** + * @brief System Pins (R_SYSTEM) + */ + +typedef struct /*!< (@ 0x4001E000) R_SYSTEM Structure */ +{ + __IM uint32_t RESERVED[3]; + + union + { + __IOM uint8_t SBYCR; /*!< (@ 0x0000000C) Standby Control Register */ + + struct + { + uint8_t : 6; + __IOM uint8_t OPE : 1; /*!< [6..6] Output Port Enable */ + uint8_t : 1; + } SBYCR_b; + }; + __IM uint8_t RESERVED1; + + union + { + __IOM uint8_t SSCR2; /*!< (@ 0x0000000E) Software Standby Control Register 2 */ + + struct + { + __IM uint8_t SS1RSF : 1; /*!< [0..0] Software Standby 1 regulator status flag */ + uint8_t : 7; + } SSCR2_b; + }; + __IM uint8_t RESERVED2; + + union + { + __IOM uint8_t FLSCR; /*!< (@ 0x00000010) Flash Standby Control Register */ + + struct + { + __IOM uint8_t FLSWCF : 1; /*!< [0..0] Flash Stabilization wait completion flag */ + uint8_t : 7; + } FLSCR_b; + }; + __IM uint8_t RESERVED3; + __IM uint16_t RESERVED4; + __IM uint32_t RESERVED5[2]; + + union + { + __IOM uint32_t MSTPCRA; /*!< (@ 0x0000001C) Module Stop Control Register A */ + + struct + { + __IOM uint32_t MSTPA0 : 1; /*!< [0..0] Module stop bit 0. See device hardware manual for usage. */ + __IOM uint32_t MSTPA1 : 1; /*!< [1..1] Module stop bit 1. See device hardware manual for usage. */ + __IOM uint32_t MSTPA2 : 1; /*!< [2..2] Module stop bit 2. See device hardware manual for usage. */ + __IOM uint32_t MSTPA3 : 1; /*!< [3..3] Module stop bit 3. See device hardware manual for usage. */ + __IOM uint32_t MSTPA4 : 1; /*!< [4..4] Module stop bit 4. See device hardware manual for usage. */ + __IOM uint32_t MSTPA5 : 1; /*!< [5..5] Module stop bit 5. See device hardware manual for usage. */ + __IOM uint32_t MSTPA6 : 1; /*!< [6..6] Module stop bit 6. See device hardware manual for usage. */ + __IOM uint32_t MSTPA7 : 1; /*!< [7..7] Module stop bit 7. See device hardware manual for usage. */ + __IOM uint32_t MSTPA8 : 1; /*!< [8..8] Module stop bit 8. See device hardware manual for usage. */ + __IOM uint32_t MSTPA9 : 1; /*!< [9..9] Module stop bit 9. See device hardware manual for usage. */ + __IOM uint32_t MSTPA10 : 1; /*!< [10..10] Module stop bit 10. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPA11 : 1; /*!< [11..11] Module stop bit 11. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPA12 : 1; /*!< [12..12] Module stop bit 12. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPA13 : 1; /*!< [13..13] Module stop bit 13. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPA14 : 1; /*!< [14..14] Module stop bit 14. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPA15 : 1; /*!< [15..15] Module stop bit 15. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPA16 : 1; /*!< [16..16] Module stop bit 16. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPA17 : 1; /*!< [17..17] Module stop bit 17. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPA18 : 1; /*!< [18..18] Module stop bit 18. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPA19 : 1; /*!< [19..19] Module stop bit 19. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPA20 : 1; /*!< [20..20] Module stop bit 20. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPA21 : 1; /*!< [21..21] Module stop bit 21. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPA22 : 1; /*!< [22..22] Module stop bit 22. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPA23 : 1; /*!< [23..23] Module stop bit 23. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPA24 : 1; /*!< [24..24] Module stop bit 24. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPA25 : 1; /*!< [25..25] Module stop bit 25. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPA26 : 1; /*!< [26..26] Module stop bit 26. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPA27 : 1; /*!< [27..27] Module stop bit 27. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPA28 : 1; /*!< [28..28] Module stop bit 28. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPA29 : 1; /*!< [29..29] Module stop bit 29. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPA30 : 1; /*!< [30..30] Module stop bit 30. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPA31 : 1; /*!< [31..31] Module stop bit 31. See device hardware manual for + * usage. */ + } MSTPCRA_b; + }; + + union + { + __IOM uint32_t SCKDIVCR; /*!< (@ 0x00000020) System Clock Division Control Register */ + + struct + { + __IOM uint32_t PCKD : 4; /*!< [3..0] Peripheral Module Clock D (PCLKD) Select */ + __IOM uint32_t PCKC : 4; /*!< [7..4] Peripheral Module Clock C (PCLKC) Select */ + __IOM uint32_t PCKB : 4; /*!< [11..8] Peripheral Module Clock B (PCLKB) Select */ + __IOM uint32_t PCKA : 4; /*!< [15..12] Peripheral Module Clock A (PCLKA) Select */ + __IOM uint32_t BCK : 4; /*!< [19..16] External Bus Clock (BCLK) Select */ + __IOM uint32_t PCKE : 4; /*!< [23..20] Peripheral Module Clock E (PCLKE) Select */ + __IOM uint32_t ICK : 4; /*!< [27..24] System Clock (ICLK) Select */ + __IOM uint32_t FCK : 4; /*!< [31..28] Flash IF Clock (FCLK) Select */ + } SCKDIVCR_b; + }; + + union + { + __IOM uint8_t SCKDIVCR2; /*!< (@ 0x00000024) System Clock Division Control Register 2 */ + + struct + { + __IOM uint8_t CPUCK : 4; /*!< [3..0] CPU Clock (CPUCLK) Select */ + uint8_t : 4; + } SCKDIVCR2_b; + }; + __IM uint8_t RESERVED6; + + union + { + __IOM uint8_t SCKSCR; /*!< (@ 0x00000026) System Clock Source Control Register */ + + struct + { + __IOM uint8_t CKSEL : 3; /*!< [2..0] Clock Source Select */ + uint8_t : 5; + } SCKSCR_b; + }; + __IM uint8_t RESERVED7; + + union + { + __IOM uint16_t PLLCCR; /*!< (@ 0x00000028) PLL Clock Control Register */ + + struct + { + __IOM uint16_t PLIDIV : 2; /*!< [1..0] PLL1 Input Frequency Division Ratio Select */ + uint16_t : 2; + __IOM uint16_t PLSRCSEL : 1; /*!< [4..4] PLL1 Clock Source Select */ + uint16_t : 1; + __IOM uint16_t PLLMULNF : 2; /*!< [7..6] PLL1 Frequency Multiplication Fractional Factor Select */ + __IOM uint16_t PLLMUL : 8; /*!< [15..8] PLL1 Frequency Multiplication Factor Select */ + } PLLCCR_b; + }; + + union + { + __IOM uint8_t PLLCR; /*!< (@ 0x0000002A) PLL Control Register */ + + struct + { + __IOM uint8_t PLLSTP : 1; /*!< [0..0] PLL Stop Control */ + uint8_t : 7; + } PLLCR_b; + }; + __IM uint8_t RESERVED8; + __IM uint32_t RESERVED9; + + union + { + __IOM uint8_t BCKCR; /*!< (@ 0x00000030) External Bus Clock Control Register */ + + struct + { + __IOM uint8_t BCLKDIV : 1; /*!< [0..0] BCLK Pin Output Select */ + uint8_t : 7; + } BCKCR_b; + }; + __IM uint8_t RESERVED10; + + union + { + __IOM uint8_t MOSCCR; /*!< (@ 0x00000032) Main Clock Oscillator Control Register */ + + struct + { + __IOM uint8_t MOSTP : 1; /*!< [0..0] Main Clock Oscillator Stop */ + uint8_t : 7; + } MOSCCR_b; + }; + __IM uint8_t RESERVED11; + __IM uint16_t RESERVED12; + + union + { + __IOM uint8_t HOCOCR; /*!< (@ 0x00000036) High-Speed On-Chip Oscillator Control Register */ + + struct + { + __IOM uint8_t HCSTP : 1; /*!< [0..0] HOCO Stop */ + uint8_t : 7; + } HOCOCR_b; + }; + __IM uint8_t RESERVED13; + + union + { + __IOM uint8_t MOCOCR; /*!< (@ 0x00000038) Middle-Speed On-Chip Oscillator Control Register */ + + struct + { + __IOM uint8_t MCSTP : 1; /*!< [0..0] MOCO Stop */ + uint8_t : 7; + } MOCOCR_b; + }; + + union + { + __IOM uint8_t FLLCR1; /*!< (@ 0x00000039) FLL Control Register 1 */ + + struct + { + __IOM uint8_t FLLEN : 1; /*!< [0..0] FLL Enable */ + uint8_t : 7; + } FLLCR1_b; + }; + + union + { + __IOM uint16_t FLLCR2; /*!< (@ 0x0000003A) FLL Control Register 2 */ + + struct + { + __IOM uint16_t FLLCNTL : 11; /*!< [10..0] FLL Multiplication Control */ + uint16_t : 5; + } FLLCR2_b; + }; + + union + { + __IM uint8_t OSCSF; /*!< (@ 0x0000003C) Oscillation Stabilization Flag Register */ + + struct + { + __IM uint8_t HOCOSF : 1; /*!< [0..0] HOCO Clock Oscillation Stabilization FlagNOTE: The HOCOSF + * bit value after a reset is 1 when the OFS1.HOCOEN bit is + * 0. It is 0 when the OFS1.HOCOEN bit is 1. */ + uint8_t : 2; + __IM uint8_t MOSCSF : 1; /*!< [3..3] Main Clock Oscillation Stabilization Flag */ + uint8_t : 1; + __IM uint8_t PLLSF : 1; /*!< [5..5] PLL1 Clock Oscillation Stabilization Flag */ + __IM uint8_t PLL2SF : 1; /*!< [6..6] PLL2 Clock Oscillation Stabilization Flag */ + uint8_t : 1; + } OSCSF_b; + }; + __IM uint8_t RESERVED14; + + union + { + __IOM uint8_t CKOCR; /*!< (@ 0x0000003E) Clock Out Control Register */ + + struct + { + uint8_t : 4; + __IOM uint8_t CKODIV : 3; /*!< [6..4] Clock out input frequency Division Select */ + __IOM uint8_t CKOEN : 1; /*!< [7..7] Clock out enable */ + } CKOCR_b; + }; + + union + { + __IOM uint8_t TRCKCR; /*!< (@ 0x0000003F) Trace Clock Control Register */ + + struct + { + __IOM uint8_t TRCK : 4; /*!< [3..0] Trace Clock operating frequency select */ + __IOM uint8_t TRCKSEL : 1; /*!< [4..4] Trace Clock source select */ + uint8_t : 2; + __IOM uint8_t TRCKEN : 1; /*!< [7..7] Trace Clock operating Enable */ + } TRCKCR_b; + }; + + union + { + __IOM uint8_t OSTDCR; /*!< (@ 0x00000040) Oscillation Stop Detection Control Register */ + + struct + { + __IOM uint8_t OSTDIE : 1; /*!< [0..0] Oscillation Stop Detection Interrupt Enable */ + uint8_t : 6; + __IOM uint8_t OSTDE : 1; /*!< [7..7] Oscillation Stop Detection Function Enable */ + } OSTDCR_b; + }; + + union + { + __IOM uint8_t OSTDSR; /*!< (@ 0x00000041) Oscillation Stop Detection Status Register */ + + struct + { + __IOM uint8_t OSTDF : 1; /*!< [0..0] Oscillation Stop Detection Flag */ + uint8_t : 7; + } OSTDSR_b; + }; + __IM uint8_t RESERVED15; + + union + { + __IM uint8_t OSCMONR; /*!< (@ 0x00000043) Oscillator Monitor Register */ + + struct + { + uint8_t : 1; + __IM uint8_t MOCOMON : 1; /*!< [1..1] MOCO operation monitor */ + __IM uint8_t LOCOMON : 1; /*!< [2..2] LOCO operation monitor */ + uint8_t : 5; + } OSCMONR_b; + }; + __IM uint32_t RESERVED16; + + union + { + __IOM uint16_t PLL2CCR; /*!< (@ 0x00000048) PLL2 Clock Control Register */ + + struct + { + __IOM uint16_t PL2IDIV : 2; /*!< [1..0] PLL2 Input Frequency Division Ratio Select */ + uint16_t : 2; + __IOM uint16_t PL2SRCSEL : 1; /*!< [4..4] PLL Clock Source Select */ + uint16_t : 1; + __IOM uint16_t PLL2MULNF : 2; /*!< [7..6] PLL2 Frequency Multiplication Fractional Factor Select */ + __IOM uint16_t PLL2MUL : 8; /*!< [15..8] PLL2 Frequency Multiplication Factor Select */ + } PLL2CCR_b; + }; + + union + { + __IOM uint8_t PLL2CR; /*!< (@ 0x0000004A) PLL2 Control Register */ + + struct + { + __IOM uint8_t PLL2STP : 1; /*!< [0..0] PLL2 Stop Control */ + uint8_t : 7; + } PLL2CR_b; + }; + __IM uint8_t RESERVED17; + + union + { + __IOM uint16_t PLLCCR2; /*!< (@ 0x0000004C) PLL Clock Control Register 2 */ + + struct + { + __IOM uint16_t PLODIVP : 4; /*!< [3..0] PLL1 Output Frequency Division Ratio Select for output + * clock P */ + __IOM uint16_t PLODIVQ : 4; /*!< [7..4] PLL1 Output Frequency Division Ratio Select for output + * clock Q */ + __IOM uint16_t PLODIVR : 4; /*!< [11..8] PLL1 Output Frequency Division Ratio Select for output + * clock R */ + uint16_t : 4; + } PLLCCR2_b; + }; + + union + { + __IOM uint16_t PLL2CCR2; /*!< (@ 0x0000004E) PLL2 Clock Control Register 2 */ + + struct + { + __IOM uint16_t PL2ODIVP : 4; /*!< [3..0] PLL2 Output Frequency Division Ratio Select for output + * clock P */ + __IOM uint16_t PL2ODIVQ : 4; /*!< [7..4] PLL2 Output Frequency Division Ratio Select for output + * clock Q */ + __IOM uint16_t PL2ODIVR : 4; /*!< [11..8] PLL2 Output Frequency Division Ratio Select for output + * clock R */ + uint16_t : 4; + } PLL2CCR2_b; + }; + __IM uint16_t RESERVED18; + + union + { + __IOM uint8_t EBCKOCR; /*!< (@ 0x00000052) External Bus Clock Output Control Register */ + + struct + { + __IOM uint8_t EBCKOEN : 1; /*!< [0..0] BCLK Pin Output Control */ + uint8_t : 7; + } EBCKOCR_b; + }; + + union + { + __IOM uint8_t SDCKOCR; /*!< (@ 0x00000053) SDRAM Clock Output Control Register */ + + struct + { + __IOM uint8_t SDCKOEN : 1; /*!< [0..0] SDCLK Pin Output Control */ + uint8_t : 7; + } SDCKOCR_b; + }; + + union + { + __IOM uint8_t SCICKDIVCR; /*!< (@ 0x00000054) SCI clock Division control register */ + + struct + { + __IOM uint8_t CKDIV : 3; /*!< [2..0] Clock Division Select */ + uint8_t : 5; + } SCICKDIVCR_b; + }; + + union + { + __IOM uint8_t SCICKCR; /*!< (@ 0x00000055) SCI clock control register */ + + struct + { + __IOM uint8_t SCICKSEL : 4; /*!< [3..0] Clock Source Select */ + uint8_t : 2; + __IOM uint8_t CKSREQ : 1; /*!< [6..6] Clock Switching Request */ + __IM uint8_t CKSRDY : 1; /*!< [7..7] Clock Switching Ready state flag */ + } SCICKCR_b; + }; + + union + { + __IOM uint8_t SPICKDIVCR; /*!< (@ 0x00000056) SPI clock Division control register */ + + struct + { + __IOM uint8_t CKDIV : 3; /*!< [2..0] Clock Division Select */ + uint8_t : 5; + } SPICKDIVCR_b; + }; + + union + { + __IOM uint8_t SPICKCR; /*!< (@ 0x00000057) SPI clock control register */ + + struct + { + __IOM uint8_t CKSEL : 4; /*!< [3..0] Clock Source Select */ + uint8_t : 2; + __IOM uint8_t CKSREQ : 1; /*!< [6..6] Clock Switching Request */ + __IM uint8_t CKSRDY : 1; /*!< [7..7] Clock Switching Ready state flag */ + } SPICKCR_b; + }; + __IM uint16_t RESERVED19; + + union + { + __IOM uint8_t ADCCKDIVCR; /*!< (@ 0x0000005A) ADC clock Division control register */ + + struct + { + __IOM uint8_t CKDIV : 3; /*!< [2..0] Clock Division Select */ + uint8_t : 5; + } ADCCKDIVCR_b; + }; + + union + { + __IOM uint8_t ADCCKCR; /*!< (@ 0x0000005B) ADC clock control register */ + + struct + { + __IOM uint8_t CKSEL : 4; /*!< [3..0] Clock Source Select */ + uint8_t : 2; + __IOM uint8_t CKSREQ : 1; /*!< [6..6] Clock Switching Request */ + __IM uint8_t CKSRDY : 1; /*!< [7..7] Clock Switching Ready state flag */ + } ADCCKCR_b; + }; + + union + { + __IOM uint8_t GPTCKDIVCR; /*!< (@ 0x0000005C) GPT clock Division control register */ + + struct + { + __IOM uint8_t CKDIV : 3; /*!< [2..0] Clock Division Select */ + uint8_t : 5; + } GPTCKDIVCR_b; + }; + + union + { + __IOM uint8_t GPTCKCR; /*!< (@ 0x0000005D) GPT clock control register */ + + struct + { + __IOM uint8_t CKSEL : 4; /*!< [3..0] Clock Source Select */ + uint8_t : 2; + __IOM uint8_t CKSREQ : 1; /*!< [6..6] Clock Switching Request */ + __IM uint8_t CKSRDY : 1; /*!< [7..7] Clock Switching Ready state flag */ + } GPTCKCR_b; + }; + + union + { + __IOM uint8_t LCDCKDIVCR; /*!< (@ 0x0000005E) LCD clock Division control register */ + + struct + { + __IOM uint8_t CKDIV : 3; /*!< [2..0] Clock Division Select */ + uint8_t : 5; + } LCDCKDIVCR_b; + }; + + union + { + __IOM uint8_t LCDCKCR; /*!< (@ 0x0000005F) LCD clock control register */ + + struct + { + __IOM uint8_t CKSEL : 4; /*!< [3..0] Clock Source Select */ + uint8_t : 2; + __IOM uint8_t CKSREQ : 1; /*!< [6..6] Clock Switching Request */ + __IM uint8_t CKSRDY : 1; /*!< [7..7] Clock Switching Ready state flag */ + } LCDCKCR_b; + }; + __IM uint8_t RESERVED20; + + union + { + __IOM uint8_t MOCOUTCR; /*!< (@ 0x00000061) MOCO User Trimming Control Register */ + + struct + { + __IOM uint8_t MOCOUTRM : 8; /*!< [7..0] MOCO User Trimming 1000_0000 : -128 1000_0001 : -127 + * 1000_0010 : -126 . . . 1111_1111 : -1 0000_0000 : Center + * Code 0000_0001 : +1 . . . 0111_1101 : +125 0111_1110 : + +126 0111_1111 : +127These bits are added to original MOCO + * trimming bits */ + } MOCOUTCR_b; + }; + + union + { + __IOM uint8_t HOCOUTCR; /*!< (@ 0x00000062) HOCO User Trimming Control Register */ + + struct + { + __IOM uint8_t HOCOUTRM : 8; /*!< [7..0] HOCO User Trimming 1000_0000 : -128 1000_0001 : -127 + * 1000_0010 : -126 . . . 1111_1111 : -1 0000_0000 : Center + * Code 0000_0001 : +1 . . . 0111_1101 : +125 0111_1110 : + +126 0111_1111 : +127These bits are added to original HOCO + * trimming bits */ + } HOCOUTCR_b; + }; + __IM uint8_t RESERVED21; + __IM uint32_t RESERVED22[2]; + + union + { + __IOM uint8_t USBCKDIVCR; /*!< (@ 0x0000006C) USB clock Division control register */ + + struct + { + __IOM uint8_t USBCKDIV : 3; /*!< [2..0] USB clock (USBCLK) Division Select */ + uint8_t : 5; + } USBCKDIVCR_b; + }; + + union + { + __IOM uint8_t OCTACKDIVCR; /*!< (@ 0x0000006D) Octal-SPI clock Division control register */ + + struct + { + __IOM uint8_t OCTACKDIV : 3; /*!< [2..0] Octal-SPI clock (OCTACLK) Division Select */ + uint8_t : 5; + } OCTACKDIVCR_b; + }; + + union + { + __IOM uint8_t CANFDCKDIVCR; /*!< (@ 0x0000006E) CANFD Core clock Division control register */ + + struct + { + __IOM uint8_t CANFDCKDIV : 3; /*!< [2..0] CANFD Core clock (CANFDCLK) Division Select */ + uint8_t : 5; + } CANFDCKDIVCR_b; + }; + + union + { + __IOM uint8_t USB60CKDIVCR; /*!< (@ 0x0000006F) USB60 clock Division control register */ + + struct + { + __IOM uint8_t USB60CKDIV : 3; /*!< [2..0] USB clock (USB60CLK) Division Select */ + uint8_t : 5; + } USB60CKDIVCR_b; + }; + + union + { + __IOM uint8_t I3CCKDIVCR; /*!< (@ 0x00000070) I3C clock Division control register */ + + struct + { + __IOM uint8_t I3CCKDIV : 3; /*!< [2..0] I3C clock (I3CCLK) Division Select */ + uint8_t : 5; + } I3CCKDIVCR_b; + }; + __IM uint8_t RESERVED23; + __IM uint16_t RESERVED24; + + union + { + __IOM uint8_t USBCKCR; /*!< (@ 0x00000074) USB clock control register */ + + struct + { + __IOM uint8_t USBCKSEL : 4; /*!< [3..0] USB clock (USBCLK) Source Select */ + uint8_t : 2; + __IOM uint8_t USBCKSREQ : 1; /*!< [6..6] USB clock (USBCLK) Switching Request */ + __IOM uint8_t USBCKSRDY : 1; /*!< [7..7] USB clock (USBCLK) Switching Ready state flag */ + } USBCKCR_b; + }; + + union + { + __IOM uint8_t OCTACKCR; /*!< (@ 0x00000075) Octal-SPI clock control register */ + + struct + { + __IOM uint8_t OCTACKSEL : 4; /*!< [3..0] Octal-SPI clock (OCTACLK) Source Select */ + uint8_t : 2; + __IOM uint8_t OCTACKSREQ : 1; /*!< [6..6] Octal-SPI clock (OCTACLK) Switching Request */ + __IOM uint8_t OCTACKSRDY : 1; /*!< [7..7] Octal-SPI clock (OCTACLK) Switching Ready state flag */ + } OCTACKCR_b; + }; + + union + { + __IOM uint8_t CANFDCKCR; /*!< (@ 0x00000076) CANFD Core clock control register */ + + struct + { + __IOM uint8_t CANFDCKSEL : 4; /*!< [3..0] CANFD Core clock (CANFDCLK) Source Select */ + uint8_t : 2; + __IOM uint8_t CANFDCKSREQ : 1; /*!< [6..6] CANFD Core clock (CANFDCLK) Switching Request */ + __IOM uint8_t CANFDCKSRDY : 1; /*!< [7..7] CANFD Core clock (CANFDCLK) Switching Ready state flag */ + } CANFDCKCR_b; + }; + + union + { + __IOM uint8_t USB60CKCR; /*!< (@ 0x00000077) USB60 clock control register */ + + struct + { + __IOM uint8_t USB60CKSEL : 4; /*!< [3..0] USB clock (USB60CLK) Source Select */ + uint8_t : 2; + __IOM uint8_t USB60CKSREQ : 1; /*!< [6..6] USB clock (USB60CLK) Switching Request */ + __IOM uint8_t USB60CKSRDY : 1; /*!< [7..7] USB clock (USB60CLK) Switching Ready state flag */ + } USB60CKCR_b; + }; + + union + { + __IOM uint8_t I3CCKCR; /*!< (@ 0x00000078) I3C clock control register */ + + struct + { + __IOM uint8_t I3CCKSEL : 4; /*!< [3..0] I3C clock (I3CCLK) Source Select */ + uint8_t : 2; + __IOM uint8_t I3CCKREQ : 1; /*!< [6..6] I3C clock (I3CCLK) Switching Request */ + __IOM uint8_t I3CCKSRDY : 1; /*!< [7..7] I3C clock (I3CCLK) Switching Ready state flag */ + } I3CCKCR_b; + }; + __IM uint8_t RESERVED25; + __IM uint16_t RESERVED26; + + union + { + __IOM uint8_t MOSCSCR; /*!< (@ 0x0000007C) Main Clock Oscillator Standby Control Register */ + + struct + { + __IOM uint8_t MOSCSOKP : 1; /*!< [0..0] Main Clock Oscillator Standby Oscillation Keep select */ + uint8_t : 7; + } MOSCSCR_b; + }; + + union + { + __IOM uint8_t HOCOSCR; /*!< (@ 0x0000007D) High-Speed On-Chip Oscillator Standby Control + * Register */ + + struct + { + __IOM uint8_t HOCOSOKP : 1; /*!< [0..0] HOCO Standby Oscillation Keep select */ + uint8_t : 7; + } HOCOSCR_b; + }; + __IM uint16_t RESERVED27; + __IM uint32_t RESERVED28[2]; + + union + { + __IOM uint32_t SNZREQCR1; /*!< (@ 0x00000088) Snooze Request Control Register 1 */ + + struct + { + __IOM uint32_t SNZREQEN0 : 1; /*!< [0..0] Enable AGT0 underflow snooze request */ + __IOM uint32_t SNZREQEN1 : 1; /*!< [1..1] Enable AGT1 underflow snooze request */ + __IOM uint32_t SNZREQEN2 : 1; /*!< [2..2] Enable AGT2 underflow snooze request */ + uint32_t : 29; + } SNZREQCR1_b; + }; + __IM uint32_t RESERVED29; + __IM uint16_t RESERVED30; + + union + { + __IOM uint8_t SNZCR; /*!< (@ 0x00000092) Snooze Control Register */ + + struct + { + __IOM uint8_t RXDREQEN : 1; /*!< [0..0] RXD0 Snooze Request Enable NOTE: Do not set to 1 other + * than in asynchronous mode. */ + __IOM uint8_t SNZDTCEN : 1; /*!< [1..1] DTC Enable in Snooze Mode */ + uint8_t : 5; + __IOM uint8_t SNZE : 1; /*!< [7..7] Snooze Mode Enable */ + } SNZCR_b; + }; + __IM uint8_t RESERVED31; + + union + { + __IOM uint8_t SNZEDCR; /*!< (@ 0x00000094) Snooze End Control Register */ + + struct + { + __IOM uint8_t AGT1UNFED : 1; /*!< [0..0] AGT1 underflow Snooze End Enable */ + __IOM uint8_t DTCZRED : 1; /*!< [1..1] Last DTC transmission completion Snooze End Enable */ + __IOM uint8_t DTCNZRED : 1; /*!< [2..2] Not Last DTC transmission completion Snooze End Enable */ + __IOM uint8_t AD0MATED : 1; /*!< [3..3] AD compare match 0 Snooze End Enable */ + __IOM uint8_t AD0UMTED : 1; /*!< [4..4] AD compare mismatch 0 Snooze End Enable */ + __IOM uint8_t AD1MATED : 1; /*!< [5..5] AD compare match 1 Snooze End Enable */ + __IOM uint8_t AD1UMTED : 1; /*!< [6..6] AD compare mismatch 1 Snooze End Enable */ + __IOM uint8_t SCI0UMTED : 1; /*!< [7..7] SCI0 address unmatch Snooze End EnableNote: Do not set + * to 1 other than in asynchronous mode. */ + } SNZEDCR_b; + }; + + union + { + __IOM uint8_t SNZEDCR1; /*!< (@ 0x00000095) Snooze End Control Register 1 */ + + struct + { + __IOM uint8_t AGT3UNFED : 1; /*!< [0..0] AGT3 underflow Snooze End Enable */ + uint8_t : 7; + } SNZEDCR1_b; + }; + __IM uint16_t RESERVED32; + + union + { + __IOM uint32_t SNZREQCR; /*!< (@ 0x00000098) Snooze Request Control Register */ + + struct + { + __IOM uint32_t SNZREQEN0 : 1; /*!< [0..0] Snooze Request Enable 0. Enable IRQ pin snooze request */ + __IOM uint32_t SNZREQEN1 : 1; /*!< [1..1] Snooze Request Enable 1. Enable IRQ pin snooze request */ + __IOM uint32_t SNZREQEN2 : 1; /*!< [2..2] Snooze Request Enable 2. Enable IRQ pin snooze request */ + __IOM uint32_t SNZREQEN3 : 1; /*!< [3..3] Snooze Request Enable 3. Enable IRQ pin snooze request */ + __IOM uint32_t SNZREQEN4 : 1; /*!< [4..4] Snooze Request Enable 4. Enable IRQ pin snooze request */ + __IOM uint32_t SNZREQEN5 : 1; /*!< [5..5] Snooze Request Enable 5. Enable IRQ pin snooze request */ + __IOM uint32_t SNZREQEN6 : 1; /*!< [6..6] Snooze Request Enable 6. Enable IRQ pin snooze request */ + __IOM uint32_t SNZREQEN7 : 1; /*!< [7..7] Snooze Request Enable 7. Enable IRQ pin snooze request */ + __IOM uint32_t SNZREQEN8 : 1; /*!< [8..8] Snooze Request Enable 8. Enable IRQ pin snooze request */ + __IOM uint32_t SNZREQEN9 : 1; /*!< [9..9] Snooze Request Enable 9. Enable IRQ pin snooze request */ + __IOM uint32_t SNZREQEN10 : 1; /*!< [10..10] Snooze Request Enable 10. Enable IRQ pin snooze request */ + __IOM uint32_t SNZREQEN11 : 1; /*!< [11..11] Snooze Request Enable 11. Enable IRQ pin snooze request */ + __IOM uint32_t SNZREQEN12 : 1; /*!< [12..12] Snooze Request Enable 12. Enable IRQ pin snooze request */ + __IOM uint32_t SNZREQEN13 : 1; /*!< [13..13] Snooze Request Enable 13. Enable IRQ pin snooze request */ + __IOM uint32_t SNZREQEN14 : 1; /*!< [14..14] Snooze Request Enable 14. Enable IRQ pin snooze request */ + __IOM uint32_t SNZREQEN15 : 1; /*!< [15..15] Snooze Request Enable 15. Enable IRQ pin snooze request */ + uint32_t : 1; + __IOM uint32_t SNZREQEN17 : 1; /*!< [17..17] Snooze Request Enable 17 Enable KR snooze request */ + uint32_t : 4; + __IOM uint32_t SNZREQEN22 : 1; /*!< [22..22] Snooze Request Enable 22 Enable Comparator-HS0 snooze + * request */ + __IOM uint32_t SNZREQEN23 : 1; /*!< [23..23] Snooze Request Enable 23 Enable Comparator-LP0 snooze + * request */ + __IOM uint32_t SNZREQEN24 : 1; /*!< [24..24] Snooze Request Enable 24 Enable RTC alarm snooze request */ + __IOM uint32_t SNZREQEN25 : 1; /*!< [25..25] Snooze Request Enable 25 Enable RTC period snooze request */ + uint32_t : 2; + __IOM uint32_t SNZREQEN28 : 1; /*!< [28..28] Snooze Request Enable 28 Enable AGT1 underflow snooze + * request */ + __IOM uint32_t SNZREQEN29 : 1; /*!< [29..29] Snooze Request Enable 29 Enable AGT1 compare match + * A snooze request */ + __IOM uint32_t SNZREQEN30 : 1; /*!< [30..30] Snooze Request Enable 30 Enable AGT1 compare match + * B snooze request */ + uint32_t : 1; + } SNZREQCR_b; + }; + __IM uint32_t RESERVED33; + + union + { + __IOM uint8_t OPCCR; /*!< (@ 0x000000A0) Operating Power Control Register */ + + struct + { + __IOM uint8_t OPCM : 2; /*!< [1..0] Operating Power Control Mode Select */ + uint8_t : 2; + __IM uint8_t OPCMTSF : 1; /*!< [4..4] Operating Power Control Mode Transition Status Flag */ + uint8_t : 3; + } OPCCR_b; + }; + __IM uint8_t RESERVED34; + + union + { + __IOM uint8_t MOSCWTCR; /*!< (@ 0x000000A2) Main Clock Oscillator Wait Control Register */ + + struct + { + __IOM uint8_t MSTS : 4; /*!< [3..0] Main clock oscillator wait time setting */ + uint8_t : 4; + } MOSCWTCR_b; + }; + __IM uint8_t RESERVED35[2]; + + union + { + __IOM uint8_t HOCOWTCR; /*!< (@ 0x000000A5) High-speed on-chip oscillator wait control register */ + + struct + { + __IOM uint8_t HSTS : 3; /*!< [2..0] HOCO wait time settingWaiting time (sec) = setting of + * the HSTS[2:0] bits/fLOCO(Trimmed) + 3/fLOC(Untrimmed) */ + uint8_t : 5; + } HOCOWTCR_b; + }; + __IM uint16_t RESERVED36[2]; + + union + { + __IOM uint8_t SOPCCR; /*!< (@ 0x000000AA) Sub Operating Power Control Register */ + + struct + { + __IOM uint8_t SOPCM : 1; /*!< [0..0] Sub Operating Power Control Mode Select */ + uint8_t : 3; + __IM uint8_t SOPCMTSF : 1; /*!< [4..4] Sub Operating Power Control Mode Transition Status Flag */ + uint8_t : 3; + } SOPCCR_b; + }; + __IM uint8_t RESERVED37; + __IM uint32_t RESERVED38[5]; + + union + { + __IOM uint32_t RSTSR1; /*!< (@ 0x000000C0) Reset Status Register 1 */ + + struct + { + __IOM uint32_t IWDTRF : 1; /*!< [0..0] Independent Watchdog Timer Reset Detect Flag. NOTE: Writable + * only to clear the flag. Confirm the value is 1 and then + * write 0. */ + __IOM uint32_t WDTRF : 1; /*!< [1..1] Watchdog Timer0 Reset Detect Flag. NOTE: Writable only + * to clear the flag. Confirm the value is 1 and then write + * 0. */ + __IOM uint32_t SWRF : 1; /*!< [2..2] Software Reset Detect Flag. NOTE: Writable only to clear + * the flag. Confirm the value is 1 and then write 0. */ + uint32_t : 1; + __IOM uint32_t CLU0RF : 1; /*!< [4..4] CPU0 Lockup Reset Detect Flag. NOTE: Writable only to + * clear the flag. Confirm the value is 1 and then write 0. */ + __IOM uint32_t LM0RF : 1; /*!< [5..5] Local memory 0 error Reset Detect Flag. NOTE: Writable + * only to clear the flag. Confirm the value is 1 and then + * write 0. */ + uint32_t : 4; + __IOM uint32_t BUSRF : 1; /*!< [10..10] Bus error Reset Detect Flag. NOTE: Writable only to + * clear the flag. Confirm the value is 1 and then write 0. */ + uint32_t : 3; + __IOM uint32_t CMRF : 1; /*!< [14..14] Common memory error Reset Detect Flag. NOTE: Writable + * only to clear the flag. Confirm the value is 1 and then + * write 0. */ + uint32_t : 2; + __IOM uint32_t WDT1RF : 1; /*!< [17..17] Watchdog Timer1 Reset Detect Flag. NOTE: Writable only + * to clear the flag. Confirm the value is 1 and then write + * 0. */ + uint32_t : 2; + __IOM uint32_t CLU1RF : 1; /*!< [20..20] CPU1 Lockup Reset Detect Flag. NOTE: Writable only + * to clear the flag. Confirm the value is 1 and then write + * 0. */ + __IOM uint32_t LM1RF : 1; /*!< [21..21] Local memory 1 error Reset Detect Flag. NOTE: Writable + * only to clear the flag. Confirm the value is 1 and then + * write 0. */ + __IOM uint32_t NWRF : 1; /*!< [22..22] Network Reset Detect Flag. NOTE: Writable only to clear + * the flag. Confirm the value is 1 and then write 0. */ + uint32_t : 9; + } RSTSR1_b; + }; + __IM uint32_t RESERVED39[2]; + + union + { + __IOM uint8_t SYRACCR; /*!< (@ 0x000000CC) System Register Access Control Register */ + + struct + { + __IOM uint8_t BUSY : 1; /*!< [0..0] Access Ready monitor */ + uint8_t : 7; + } SYRACCR_b; + }; + __IM uint8_t RESERVED40; + __IM uint16_t RESERVED41; + __IM uint32_t RESERVED42[4]; + + union + { + __IOM uint8_t LVD1CR1; /*!< (@ 0x000000E0) Voltage Monitor 1 Circuit Control Register 1 */ + + struct + { + __IOM uint8_t IDTSEL : 2; /*!< [1..0] Voltage Monitor Interrupt Generation Condition Select */ + __IOM uint8_t IRQSEL : 1; /*!< [2..2] Voltage Monitor Interrupt Type Select */ + uint8_t : 5; + } LVD1CR1_b; + }; + + union + { + __IOM uint8_t LVD1SR; /*!< (@ 0x000000E1) Voltage Monitor 1 Circuit Status Register */ + + struct + { + __IOM uint8_t DET : 1; /*!< [0..0] Voltage Monitor Voltage Change Detection Flag NOTE: Only + * 0 can be written to this bit. After writing 0 to this bit, + * it takes 2 system clock cycles for the bit to be read as + * 0. */ + __IM uint8_t MON : 1; /*!< [1..1] Voltage Monitor Signal Monitor Flag */ + uint8_t : 6; + } LVD1SR_b; + }; + + union + { + __IOM uint8_t LVD2CR1; /*!< (@ 0x000000E2) Voltage Monitor 2 Circuit Control Register 1 */ + + struct + { + __IOM uint8_t IDTSEL : 2; /*!< [1..0] Voltage Monitor Interrupt Generation Condition Select */ + __IOM uint8_t IRQSEL : 1; /*!< [2..2] Voltage Monitor Interrupt Type Select */ + uint8_t : 5; + } LVD2CR1_b; + }; + + union + { + __IOM uint8_t LVD2SR; /*!< (@ 0x000000E3) Voltage Monitor 2 Circuit Status Register */ + + struct + { + __IOM uint8_t DET : 1; /*!< [0..0] Voltage Monitor Voltage Change Detection Flag NOTE: Only + * 0 can be written to this bit. After writing 0 to this bit, + * it takes 2 system clock cycles for the bit to be read as + * 0. */ + __IM uint8_t MON : 1; /*!< [1..1] Voltage Monitor Signal Monitor Flag */ + uint8_t : 6; + } LVD2SR_b; + }; + __IM uint32_t RESERVED43[3]; + + union + { + __IOM uint8_t CRVSYSCR; /*!< (@ 0x000000F0) Clock Recovery System Control Register */ + + struct + { + __IOM uint8_t CRVEN : 1; /*!< [0..0] Clock Recovery Enable */ + uint8_t : 7; + } CRVSYSCR_b; + }; + __IM uint8_t RESERVED44; + __IM uint16_t RESERVED45; + __IM uint32_t RESERVED46[7]; + + union + { + __IOM uint8_t PDCTRGD; /*!< (@ 0x00000110) Graphics Power Domain Control Register */ + + struct + { + __IOM uint8_t PDDE : 1; /*!< [0..0] Power control enable */ + uint8_t : 5; + __IM uint8_t PDCSF : 1; /*!< [6..6] Power control status flag */ + __IM uint8_t PDPGSF : 1; /*!< [7..7] Power gating status flag */ + } PDCTRGD_b; + }; + __IM uint8_t RESERVED47; + __IM uint16_t RESERVED48; + __IM uint32_t RESERVED49[11]; + __IOM uint16_t PDRAMSCR0; /*!< (@ 0x00000140) SRAM power domain Standby Control Register 0 */ + __IOM uint8_t PDRAMSCR1; /*!< (@ 0x00000142) SRAM power domain Standby Control Register 1 */ + __IM uint8_t RESERVED50; + __IM uint32_t RESERVED51[155]; + + union + { + __IOM uint16_t VBRSABAR; /*!< (@ 0x000003B0) VBATT Backup Register Security Attribute Boundary + * Address Register */ + + struct + { + __IOM uint16_t SABA : 16; /*!< [15..0] Security Attribute Boundary Address */ + } VBRSABAR_b; + }; + __IM uint16_t RESERVED52; + + union + { + __IOM uint16_t VBRPABARS; /*!< (@ 0x000003B4) VBATT Backup Register Privilege Attribute Boundary + * Address Register for Secure Region */ + + struct + { + __IOM uint16_t PABAS : 16; /*!< [15..0] Privilege Attribute Boundary Address for Secure Region */ + } VBRPABARS_b; + }; + __IM uint16_t RESERVED53; + + union + { + __IOM uint16_t VBRPABARNS; /*!< (@ 0x000003B8) VBATT Backup Register Privilege Attribute Boundary + * Address Register for Non-secure Region */ + + struct + { + __IOM uint16_t PABANS : 16; /*!< [15..0] Privilege Attribute Boundary Address for Non-secure + * Region */ + } VBRPABARNS_b; + }; + __IM uint16_t RESERVED54; + __IM uint32_t RESERVED55; + + union + { + __IOM uint32_t CGFSAR; /*!< (@ 0x000003C0) Clock Generation Function Security Attribute + * Register */ + + struct + { + __IOM uint32_t NONSEC00 : 1; /*!< [0..0] Non-secure Attribute bit 0 */ + uint32_t : 1; + __IOM uint32_t NONSEC02 : 1; /*!< [2..2] Non-secure Attribute bit 2 */ + __IOM uint32_t NONSEC03 : 1; /*!< [3..3] Non-secure Attribute bit 3 */ + __IOM uint32_t NONSEC04 : 1; /*!< [4..4] Non-secure Attribute bit 4 */ + __IOM uint32_t NONSEC05 : 1; /*!< [5..5] Non-secure Attribute bit 5 */ + __IOM uint32_t NONSEC06 : 1; /*!< [6..6] Non-secure Attribute bit 6 */ + __IOM uint32_t NONSEC07 : 1; /*!< [7..7] Non-secure Attribute bit 7 */ + __IOM uint32_t NONSEC08 : 1; /*!< [8..8] Non-secure Attribute bit 8 */ + __IOM uint32_t NONSEC09 : 1; /*!< [9..9] Non-secure Attribute bit 9 */ + uint32_t : 1; + __IOM uint32_t NONSEC11 : 1; /*!< [11..11] Non-secure Attribute bit 11 */ + __IOM uint32_t NONSEC12 : 1; /*!< [12..12] Non-secure Attribute bit 12 */ + __IOM uint32_t NONSEC13 : 1; /*!< [13..13] Non-secure Attribute bit 13 */ + uint32_t : 2; + __IOM uint32_t NONSEC16 : 1; /*!< [16..16] Non-secure Attribute bit 16 */ + __IOM uint32_t NONSEC17 : 1; /*!< [17..17] Non-secure Attribute bit 17 */ + __IOM uint32_t NONSEC18 : 1; /*!< [18..18] Non-secure Attribute bit 18 */ + __IOM uint32_t NONSEC19 : 1; /*!< [19..19] Non-secure Attribute bit 19 */ + __IOM uint32_t NONSEC20 : 1; /*!< [20..20] Non-secure Attribute bit 20 */ + __IOM uint32_t NONSEC21 : 1; /*!< [21..21] Non-secure Attribute bit 21 */ + __IOM uint32_t NONSEC22 : 1; /*!< [22..22] Non-secure Attribute bit 22 */ + uint32_t : 1; + __IOM uint32_t NONSEC24 : 1; /*!< [24..24] Non-secure Attribute bit 24 */ + __IOM uint32_t NONSEC25 : 1; /*!< [25..25] Non-secure Attribute bit 25 */ + __IOM uint32_t NONSEC26 : 1; /*!< [26..26] Non-secure Attribute bit 26 */ + uint32_t : 5; + } CGFSAR_b; + }; + + union + { + __IOM uint32_t RSTSAR; /*!< (@ 0x000003C4) Reset Security Attribution Register */ + + struct + { + __IOM uint32_t NONSEC0 : 1; /*!< [0..0] Non-secure Attribute bit 0 */ + __IOM uint32_t NONSEC1 : 1; /*!< [1..1] Non-secure Attribute bit 1 */ + __IOM uint32_t NONSEC2 : 1; /*!< [2..2] Non-secure Attribute bit 2 */ + __IOM uint32_t NONSEC3 : 1; /*!< [3..3] Non-secure Attribute bit 3 */ + uint32_t : 28; + } RSTSAR_b; + }; + + union + { + __IOM uint32_t LPMSAR; /*!< (@ 0x000003C8) Low Power Mode Security Attribution Register */ + + struct + { + __IOM uint32_t NONSEC0 : 1; /*!< [0..0] Non-secure Attribute bit 00 */ + __IOM uint32_t NONSEC1 : 1; /*!< [1..1] Non-secure Attribute bit 01 */ + __IOM uint32_t NONSEC2 : 1; /*!< [2..2] Non-secure Attribute bit 02 */ + __IOM uint32_t NONSEC3 : 1; /*!< [3..3] Non-secure Attribute bit 03 */ + uint32_t : 4; + __IOM uint32_t NONSEC8 : 1; /*!< [8..8] Non-secure Attribute bit 08 */ + uint32_t : 7; + __IOM uint32_t NONSEC16 : 1; /*!< [16..16] Non-secure Attribute bit 16 */ + __IOM uint32_t NONSEC17 : 1; /*!< [17..17] Non-secure Attribute bit 17 */ + __IOM uint32_t NONSEC18 : 1; /*!< [18..18] Non-secure Attribute bit 18 */ + __IOM uint32_t NONSEC19 : 1; /*!< [19..19] Non-secure Attribute bit 19 */ + uint32_t : 1; + __IOM uint32_t NONSEC21 : 1; /*!< [21..21] Non-secure Attribute bit 21 */ + uint32_t : 10; + } LPMSAR_b; + }; + + union + { + __IOM uint32_t LVDSAR; /*!< (@ 0x000003CC) Programable Voltage Detection Security Attribution + * Register */ + + struct + { + __IOM uint32_t NONSEC0 : 1; /*!< [0..0] Non-secure Attribute bit 0 */ + __IOM uint32_t NONSEC1 : 1; /*!< [1..1] Non-secure Attribute bit 1 */ + uint32_t : 30; + } LVDSAR_b; + }; + + union + { + __IOM uint32_t BBFSAR; /*!< (@ 0x000003D0) Battery Backup Function Security Attribute Register */ + + struct + { + __IOM uint32_t NONSEC0 : 1; /*!< [0..0] Non-secure Attribute bit 0 */ + __IOM uint32_t NONSEC1 : 1; /*!< [1..1] Non-secure Attribute bit 1 */ + __IOM uint32_t NONSEC2 : 1; /*!< [2..2] Non-secure Attribute bit 2 */ + __IOM uint32_t NONSEC3 : 1; /*!< [3..3] Non-secure Attribute bit 3 */ + __IOM uint32_t NONSEC4 : 1; /*!< [4..4] Non-secure Attribute bit 4 */ + uint32_t : 27; + } BBFSAR_b; + }; + __IM uint32_t RESERVED56; + + union + { + __IOM uint32_t PGCSAR; /*!< (@ 0x000003D8) Power Gating Control Security Attribution Register */ + + struct + { + uint32_t : 1; + __IOM uint32_t NONSEC1 : 1; /*!< [1..1] Non-secure Attribute bit 01 */ + __IOM uint32_t NONSEC2 : 1; /*!< [2..2] Non-secure Attribute bit 02 */ + uint32_t : 29; + } PGCSAR_b; + }; + __IM uint32_t RESERVED57; + + union + { + __IOM uint32_t DPFSAR; /*!< (@ 0x000003E0) Deep Standby Interrupt Factor Security Attribution + * Register */ + + struct + { + uint32_t : 16; + __IOM uint32_t DPFSA16 : 1; /*!< [16..16] Deep Standby Interrupt Factor Security Attribute bit + * 16 */ + __IOM uint32_t DPFSA17 : 1; /*!< [17..17] Deep Standby Interrupt Factor Security Attribute bit + * 17 */ + __IOM uint32_t DPFSA18 : 1; /*!< [18..18] Deep Standby Interrupt Factor Security Attribute bit + * 18 */ + __IOM uint32_t DPFSA19 : 1; /*!< [19..19] Deep Standby Interrupt Factor Security Attribute bit + * 19 */ + __IOM uint32_t DPFSA20 : 1; /*!< [20..20] Deep Standby Interrupt Factor Security Attribute bit + * 20 */ + uint32_t : 3; + __IOM uint32_t DPFSA24 : 1; /*!< [24..24] Deep Standby Interrupt Factor Security Attribute bit + * 24 */ + __IOM uint32_t DPFSA25 : 1; /*!< [25..25] Deep Standby Interrupt Factor Security Attribute bit + * 25 */ + __IOM uint32_t DPFSA26 : 1; /*!< [26..26] Deep Standby Interrupt Factor Security Attribute bit + * 26 */ + __IOM uint32_t DPFSA27 : 1; /*!< [27..27] Deep Standby Interrupt Factor Security Attribute bit + * 27 */ + uint32_t : 1; + __IOM uint32_t DPFSA29 : 1; /*!< [29..29] Deep Standby Interrupt Factor Security Attribute bit + * 29 */ + uint32_t : 1; + __IOM uint32_t DPFSA31 : 1; /*!< [31..31] Deep Standby Interrupt Factor Security Attribute bit + * 31 */ + } DPFSAR_b; + }; + + union + { + __IOM uint32_t RSCSAR; /*!< (@ 0x000003E4) RAM Standby Control Security Attribution Register */ + + struct + { + __IOM uint32_t RSCSA0 : 1; /*!< [0..0] RAM Standby Control Security Attribute bit 00 */ + __IOM uint32_t RSCSA1 : 1; /*!< [1..1] RAM Standby Control Security Attribute bit 01 */ + __IOM uint32_t RSCSA2 : 1; /*!< [2..2] RAM Standby Control Security Attribute bit 02 */ + __IOM uint32_t RSCSA3 : 1; /*!< [3..3] RAM Standby Control Security Attribute bit 03 */ + __IOM uint32_t RSCSA4 : 1; /*!< [4..4] RAM Standby Control Security Attribute bit 04 */ + __IOM uint32_t RSCSA5 : 1; /*!< [5..5] RAM Standby Control Security Attribute bit 05 */ + __IOM uint32_t RSCSA6 : 1; /*!< [6..6] RAM Standby Control Security Attribute bit 06 */ + __IOM uint32_t RSCSA7 : 1; /*!< [7..7] RAM Standby Control Security Attribute bit 07 */ + __IOM uint32_t RSCSA8 : 1; /*!< [8..8] RAM Standby Control Security Attribute bit 08 */ + __IOM uint32_t RSCSA9 : 1; /*!< [9..9] RAM Standby Control Security Attribute bit 09 */ + __IOM uint32_t RSCSA10 : 1; /*!< [10..10] RAM Standby Control Security Attribute bit 10 */ + __IOM uint32_t RSCSA11 : 1; /*!< [11..11] RAM Standby Control Security Attribute bit 11 */ + __IOM uint32_t RSCSA12 : 1; /*!< [12..12] RAM Standby Control Security Attribute bit 12 */ + __IOM uint32_t RSCSA13 : 1; /*!< [13..13] RAM Standby Control Security Attribute bit 13 */ + __IOM uint32_t RSCSA14 : 1; /*!< [14..14] RAM Standby Control Security Attribute bit 14 */ + uint32_t : 1; + __IOM uint32_t RSCSA16 : 1; /*!< [16..16] RAM Standby Control Security Attribute bit 16 */ + __IOM uint32_t RSCSA17 : 1; /*!< [17..17] RAM Standby Control Security Attribute bit 17 */ + uint32_t : 14; + } RSCSAR_b; + }; + __IM uint32_t RESERVED58[4]; + __IM uint16_t RESERVED59; + + union + { + __IOM uint16_t PRCR; /*!< (@ 0x000003FA) Protect Register for Secure Register */ + + struct + { + __IOM uint16_t PRC0 : 1; /*!< [0..0] Enables writing to the registers related to the clock + * generation circuit. */ + __IOM uint16_t PRC1 : 1; /*!< [1..1] Enables writing to the registers related to the operating + * modes, the low power modes, and the battery backup function. */ + uint16_t : 1; + __IOM uint16_t PRC3 : 1; /*!< [3..3] Enables writing to the registers related to the PVD. */ + __IOM uint16_t PRC4 : 1; /*!< [4..4] Enables writing to the registers related to the security + * and privilege setting registers. */ + __IOM uint16_t PRC5 : 1; /*!< [5..5] Enables writing to the registers related the reset control. */ + uint16_t : 2; + __OM uint16_t PRKEY : 8; /*!< [15..8] PRC Key Code */ + } PRCR_b; + }; + __IM uint16_t RESERVED60; + + union + { + __IOM uint16_t PRCR_NS; /*!< (@ 0x000003FE) Protect Register for Non-secure Register */ + + struct + { + __IOM uint16_t PRC0 : 1; /*!< [0..0] Enables writing to the registers related to the clock + * generation circuit. */ + __IOM uint16_t PRC1 : 1; /*!< [1..1] Enables writing to the registers related to the operating + * modes, the low power modes, and the battery backup function. */ + uint16_t : 1; + __IOM uint16_t PRC3 : 1; /*!< [3..3] Enables writing to the registers related to the PVD. */ + __IOM uint16_t PRC4 : 1; /*!< [4..4] Enables writing to the registers related to the privilege + * setting registers. */ + uint16_t : 3; + __OM uint16_t PRKEY : 8; /*!< [15..8] PRC Key Code */ + } PRCR_NS_b; + }; + + union + { + __IOM uint8_t LOCOCR; /*!< (@ 0x00000400) Low-Speed On-Chip Oscillator Control Register */ + + struct + { + __IOM uint8_t LCSTP : 1; /*!< [0..0] LOCO Stop */ + uint8_t : 7; + } LOCOCR_b; + }; + __IM uint8_t RESERVED61; + + union + { + __IOM uint8_t LOCOUTCR; /*!< (@ 0x00000402) LOCO User Trimming Control Register */ + + struct + { + __IOM uint8_t LOCOUTRM : 8; /*!< [7..0] LOCO User Trimming */ + } LOCOUTCR_b; + }; + __IM uint8_t RESERVED62; + __IM uint32_t RESERVED63[2]; + __IM uint16_t RESERVED64; + __IM uint8_t RESERVED65; + + union + { + __IOM uint8_t STCONR; /*!< (@ 0x0000040F) Standby Condition Register */ + + struct + { + __IOM uint8_t STCON : 2; /*!< [1..0] SSTBY condition bit */ + uint8_t : 6; + } STCONR_b; + }; + __IM uint32_t RESERVED66[380]; + + union + { + __IOM uint8_t DPSBYCR; /*!< (@ 0x00000A00) Deep Standby Control Register */ + + struct + { + uint8_t : 2; + __IOM uint8_t DCSSMODE : 1; /*!< [2..2] DCDC SSMODE */ + uint8_t : 1; + __IOM uint8_t SRKEEP : 1; /*!< [4..4] Standby RAM Retention */ + uint8_t : 1; + __IOM uint8_t IOKEEP : 1; /*!< [6..6] I/O Port Retention */ + __IOM uint8_t DPSBY : 1; /*!< [7..7] Deep Software Standby */ + } DPSBYCR_b; + }; + __IM uint8_t RESERVED67; + __IM uint16_t RESERVED68; + + union + { + __IOM uint8_t DPSWCR; /*!< (@ 0x00000A04) Deep Standby Wait Control Register */ + + struct + { + __IOM uint8_t WTSTS : 8; /*!< [7..0] Deep Software Wait Standby Time Setting Bit */ + } DPSWCR_b; + }; + __IM uint8_t RESERVED69; + __IM uint16_t RESERVED70; + + union + { + __IOM uint8_t DPSIER0; /*!< (@ 0x00000A08) Deep Standby Interrupt Enable Register 0 */ + + struct + { + __IOM uint8_t DIRQ0E : 1; /*!< [0..0] IRQ0-DS Pin Enable */ + __IOM uint8_t DIRQ1E : 1; /*!< [1..1] IRQ1-DS Pin Enable */ + __IOM uint8_t DIRQ2E : 1; /*!< [2..2] IRQ2-DS Pin Enable */ + __IOM uint8_t DIRQ3E : 1; /*!< [3..3] IRQ3-DS Pin Enable */ + __IOM uint8_t DIRQ4E : 1; /*!< [4..4] IRQ4-DS Pin Enable */ + __IOM uint8_t DIRQ5E : 1; /*!< [5..5] IRQ5-DS Pin Enable */ + __IOM uint8_t DIRQ6E : 1; /*!< [6..6] IRQ6-DS Pin Enable */ + __IOM uint8_t DIRQ7E : 1; /*!< [7..7] IRQ7-DS Pin Enable */ + } DPSIER0_b; + }; + __IM uint8_t RESERVED71; + __IM uint16_t RESERVED72; + + union + { + __IOM uint8_t DPSIER1; /*!< (@ 0x00000A0C) Deep Standby Interrupt Enable Register 1 */ + + struct + { + __IOM uint8_t DIRQ8E : 1; /*!< [0..0] IRQ8-DS Pin Enable */ + __IOM uint8_t DIRQ9E : 1; /*!< [1..1] IRQ9-DS Pin Enable */ + __IOM uint8_t DIRQ10E : 1; /*!< [2..2] IRQ10-DS Pin Enable */ + __IOM uint8_t DIRQ11E : 1; /*!< [3..3] IRQ11-DS Pin Enable */ + __IOM uint8_t DIRQ12E : 1; /*!< [4..4] IRQ12-DS Pin Enable */ + __IOM uint8_t DIRQ13E : 1; /*!< [5..5] IRQ13-DS Pin Enable */ + __IOM uint8_t DIRQ14E : 1; /*!< [6..6] IRQ14-DS Pin Enable */ + __IOM uint8_t DIRQ15E : 1; /*!< [7..7] IRQ15-DS Pin Enable */ + } DPSIER1_b; + }; + __IM uint8_t RESERVED73; + __IM uint16_t RESERVED74; + + union + { + __IOM uint8_t DPSIER2; /*!< (@ 0x00000A10) Deep Standby Interrupt Enable Register 2 */ + + struct + { + __IOM uint8_t DPVD1IE : 1; /*!< [0..0] PVD1 Deep Standby Cancel Signal Enable */ + __IOM uint8_t DPVD2IE : 1; /*!< [1..1] PVD2 Deep Standby Cancel Signal Enable */ + __IOM uint8_t DTRTCIIE : 1; /*!< [2..2] RTC Interval interrupt Deep Standby Cancel Signal Enable */ + __IOM uint8_t DRTCAIE : 1; /*!< [3..3] RTC Alarm interrupt Deep Standby Cancel Signal Enable */ + __IOM uint8_t DNMIE : 1; /*!< [4..4] NMI Pin Enable */ + uint8_t : 3; + } DPSIER2_b; + }; + __IM uint8_t RESERVED75; + __IM uint16_t RESERVED76; + + union + { + __IOM uint8_t DPSIER3; /*!< (@ 0x00000A14) Deep Standby Interrupt Enable Register 3 */ + + struct + { + __IOM uint8_t DUSBFSIE : 1; /*!< [0..0] USBFS Suspend/Resume Deep Standby Cancel Signal Enable */ + __IOM uint8_t DUSBHSIE : 1; /*!< [1..1] USBHS Suspend/Resume Deep Standby Cancel Signal Enable */ + __IOM uint8_t DULPT0IE : 1; /*!< [2..2] ULPT0 Overflow Deep Standby Cancel Signal Enable */ + __IOM uint8_t DULPT1IE : 1; /*!< [3..3] ULPT1 Overflow Deep Standby Cancel Signal Enable */ + uint8_t : 1; + __IOM uint8_t DIWDTIE : 1; /*!< [5..5] IWDT Overflow Deep Standby Cancel Signal Enable */ + uint8_t : 1; + __IOM uint8_t DVBATTADIE : 1; /*!< [7..7] VBATT Tamper Detection Deep Standby Cancel Signal Enable */ + } DPSIER3_b; + }; + __IM uint8_t RESERVED77; + __IM uint16_t RESERVED78; + + union + { + __IOM uint8_t DPSIFR0; /*!< (@ 0x00000A18) Deep Standby Interrupt Flag Register 0 */ + + struct + { + __IOM uint8_t DIRQ0F : 1; /*!< [0..0] IRQ0-DS Pin Deep Standby Cancel Flag */ + __IOM uint8_t DIRQ1F : 1; /*!< [1..1] IRQ1-DS Pin Deep Standby Cancel Flag */ + __IOM uint8_t DIRQ2F : 1; /*!< [2..2] IRQ2-DS Pin Deep Standby Cancel Flag */ + __IOM uint8_t DIRQ3F : 1; /*!< [3..3] IRQ3-DS Pin Deep Standby Cancel Flag */ + __IOM uint8_t DIRQ4F : 1; /*!< [4..4] IRQ4-DS Pin Deep Standby Cancel Flag */ + __IOM uint8_t DIRQ5F : 1; /*!< [5..5] IRQ5-DS Pin Deep Standby Cancel Flag */ + __IOM uint8_t DIRQ6F : 1; /*!< [6..6] IRQ6-DS Pin Deep Standby Cancel Flag */ + __IOM uint8_t DIRQ7F : 1; /*!< [7..7] IRQ7-DS Pin Deep Standby Cancel Flag */ + } DPSIFR0_b; + }; + __IM uint8_t RESERVED79; + __IM uint16_t RESERVED80; + + union + { + __IOM uint8_t DPSIFR1; /*!< (@ 0x00000A1C) Deep Standby Interrupt Flag Register 1 */ + + struct + { + __IOM uint8_t DIRQ8F : 1; /*!< [0..0] IRQ8-DS Pin Deep Standby Cancel Flag */ + __IOM uint8_t DIRQ9F : 1; /*!< [1..1] IRQ9-DS Pin Deep Standby Cancel Flag */ + __IOM uint8_t DIRQ10F : 1; /*!< [2..2] IRQ10-DS Pin Deep Standby Cancel Flag */ + __IOM uint8_t DIRQ11F : 1; /*!< [3..3] IRQ11-DS Pin Deep Standby Cancel Flag */ + __IOM uint8_t DIRQ12F : 1; /*!< [4..4] IRQ12-DS Pin Deep Standby Cancel Flag */ + __IOM uint8_t DIRQ13F : 1; /*!< [5..5] IRQ13-DS Pin Deep Standby Cancel Flag */ + __IOM uint8_t DIRQ14F : 1; /*!< [6..6] IRQ14-DS Pin Deep Standby Cancel Flag */ + __IOM uint8_t DIRQ15F : 1; /*!< [7..7] IRQ15-DS Pin Deep Standby Cancel Flag */ + } DPSIFR1_b; + }; + __IM uint8_t RESERVED81; + __IM uint16_t RESERVED82; + + union + { + __IOM uint8_t DPSIFR2; /*!< (@ 0x00000A20) Deep Standby Interrupt Flag Register 2 */ + + struct + { + __IOM uint8_t DPVD1IF : 1; /*!< [0..0] PVD1 Deep Standby Cancel Flag */ + __IOM uint8_t DPVD2IF : 1; /*!< [1..1] PVD2 Deep Standby Cancel Flag */ + __IOM uint8_t DTRTCIIF : 1; /*!< [2..2] RTC Interval interrupt Deep Standby Cancel Flag */ + __IOM uint8_t DRTCAIF : 1; /*!< [3..3] RTC Alarm interrupt Deep Standby Cancel Flag */ + __IOM uint8_t DNMIF : 1; /*!< [4..4] NMI Pin Deep Standby Cancel Flag */ + uint8_t : 3; + } DPSIFR2_b; + }; + __IM uint8_t RESERVED83; + __IM uint16_t RESERVED84; + + union + { + __IOM uint8_t DPSIFR3; /*!< (@ 0x00000A24) Deep Standby Interrupt Flag Register 3 */ + + struct + { + __IOM uint8_t DUSBFSIF : 1; /*!< [0..0] USBFS Suspend/Resume Deep Standby Cancel Flag */ + __IOM uint8_t DUSBHSIF : 1; /*!< [1..1] USBHS Suspend/Resume Deep Standby Cancel Flag */ + __IOM uint8_t DULPT0IF : 1; /*!< [2..2] ULPT0 Overflow Deep Standby Cancel Flag */ + __IOM uint8_t DULPT1IF : 1; /*!< [3..3] ULPT1 Overflow Deep Standby Cancel Flag */ + uint8_t : 1; + __IOM uint8_t DIWDTIF : 1; /*!< [5..5] IWDT Overflow Deep Standby Cancel Flag */ + uint8_t : 1; + __IOM uint8_t DVBATTADIF : 1; /*!< [7..7] VBATT Tamper Detection Deep Standby Cancel Flag */ + } DPSIFR3_b; + }; + __IM uint8_t RESERVED85; + __IM uint16_t RESERVED86; + + union + { + __IOM uint8_t DPSIEGR0; /*!< (@ 0x00000A28) Deep Standby Interrupt Edge Register 0 */ + + struct + { + __IOM uint8_t DIRQ0EG : 1; /*!< [0..0] IRQ0-DS Pin Edge Select */ + __IOM uint8_t DIRQ1EG : 1; /*!< [1..1] IRQ1-DS Pin Edge Select */ + __IOM uint8_t DIRQ2EG : 1; /*!< [2..2] IRQ2-DS Pin Edge Select */ + __IOM uint8_t DIRQ3EG : 1; /*!< [3..3] IRQ3-DS Pin Edge Select */ + __IOM uint8_t DIRQ4EG : 1; /*!< [4..4] IRQ4-DS Pin Edge Select */ + __IOM uint8_t DIRQ5EG : 1; /*!< [5..5] IRQ5-DS Pin Edge Select */ + __IOM uint8_t DIRQ6EG : 1; /*!< [6..6] IRQ6-DS Pin Edge Select */ + __IOM uint8_t DIRQ7EG : 1; /*!< [7..7] IRQ7-DS Pin Edge Select */ + } DPSIEGR0_b; + }; + __IM uint8_t RESERVED87; + __IM uint16_t RESERVED88; + + union + { + __IOM uint8_t DPSIEGR1; /*!< (@ 0x00000A2C) Deep Standby Interrupt Edge Register 1 */ + + struct + { + __IOM uint8_t DIRQ8EG : 1; /*!< [0..0] IRQ8-DS Pin Edge Select */ + __IOM uint8_t DIRQ9EG : 1; /*!< [1..1] IRQ9-DS Pin Edge Select */ + __IOM uint8_t DIRQ10EG : 1; /*!< [2..2] IRQ10-DS Pin Edge Select */ + __IOM uint8_t DIRQ11EG : 1; /*!< [3..3] IRQ11-DS Pin Edge Select */ + __IOM uint8_t DIRQ12EG : 1; /*!< [4..4] IRQ12-DS Pin Edge Select */ + __IOM uint8_t DIRQ13EG : 1; /*!< [5..5] IRQ13-DS Pin Edge Select */ + __IOM uint8_t DIRQ14EG : 1; /*!< [6..6] IRQ14-DS Pin Edge Select */ + __IOM uint8_t DIRQ15EG : 1; /*!< [7..7] IRQ15-DS Pin Edge Select */ + } DPSIEGR1_b; + }; + __IM uint8_t RESERVED89; + __IM uint16_t RESERVED90; + + union + { + __IOM uint8_t DPSIEGR2; /*!< (@ 0x00000A30) Deep Standby Interrupt Edge Register 2 */ + + struct + { + __IOM uint8_t DPVD1EG : 1; /*!< [0..0] PVD1 Edge Select */ + __IOM uint8_t DPVD2EG : 1; /*!< [1..1] PVD2 Edge Select */ + uint8_t : 2; + __IOM uint8_t DNMIEG : 1; /*!< [4..4] NMI Pin Edge Select */ + uint8_t : 3; + } DPSIEGR2_b; + }; + __IM uint8_t RESERVED91; + __IM uint16_t RESERVED92; + __IM uint32_t RESERVED93; + + union + { + __IOM uint8_t SYOCDCR; /*!< (@ 0x00000A38) System Control OCD Control Register */ + + struct + { + __IOM uint8_t DOCDF : 1; /*!< [0..0] Deep Standby OCD flag */ + uint8_t : 6; + __IOM uint8_t DBGEN : 1; /*!< [7..7] Debugger Enable bit */ + } SYOCDCR_b; + }; + __IM uint8_t RESERVED94; + __IM uint16_t RESERVED95; + __IM uint32_t RESERVED96; + + union + { + __IOM uint8_t RSTSR0; /*!< (@ 0x00000A40) Reset Status Register 0 */ + + struct + { + __IOM uint8_t PORF : 1; /*!< [0..0] Power-On Reset Detect Flag. NOTE: Writable only to clear + * the flag. Confirm the value is 1 and then write 0. */ + __IOM uint8_t LVD0RF : 1; /*!< [1..1] Voltage Monitor 0 Reset Detect Flag. NOTE: Writable only + * to clear the flag. Confirm the value is 1 and then write + * 0. */ + __IOM uint8_t LVD1RF : 1; /*!< [2..2] Voltage Monitor 1 Reset Detect Flag. NOTE: Writable only + * to clear the flag. Confirm the value is 1 and then write + * 0. */ + __IOM uint8_t LVD2RF : 1; /*!< [3..3] Voltage Monitor 2 Reset Detect Flag. NOTE: Writable only + * to clear the flag. Confirm the value is 1 and then write + * 0. */ + __IOM uint8_t LVD3RF : 1; /*!< [4..4] Voltage Monitor 3 Reset Detect Flag. NOTE: Writable only + * to clear the flag. Confirm the value is 1 and then write + * 0. */ + __IOM uint8_t LVD4RF : 1; /*!< [5..5] Voltage Monitor 4 Reset Detect Flag. NOTE: Writable only + * to clear the flag. Confirm the value is 1 and then write + * 0. */ + __IOM uint8_t LVD5RF : 1; /*!< [6..6] Voltage Monitor 5 Reset Detect Flag. NOTE: Writable only + * to clear the flag. Confirm the value is 1 and then write + * 0. */ + __IOM uint8_t DPSRSTF : 1; /*!< [7..7] Deep Software Standby Reset Flag. NOTE: Writable only + * to clear the flag. Confirm the value is 1 and then write + * 0. */ + } RSTSR0_b; + }; + __IM uint8_t RESERVED97; + __IM uint16_t RESERVED98; + + union + { + __IOM uint8_t RSTSR2; /*!< (@ 0x00000A44) Reset Status Register 2 */ + + struct + { + __IOM uint8_t CWSF : 1; /*!< [0..0] Cold/Warm Start Determination Flag */ + uint8_t : 7; + } RSTSR2_b; + }; + __IM uint8_t RESERVED99; + __IM uint16_t RESERVED100; + + union + { + __IOM uint8_t RSTSR3; /*!< (@ 0x00000A48) Reset Status Register 3 */ + + struct + { + uint8_t : 4; + __IOM uint8_t OCPRF : 1; /*!< [4..4] Overcurrent protection reset Detect Flag */ + uint8_t : 3; + } RSTSR3_b; + }; + __IM uint8_t RESERVED101; + __IM uint16_t RESERVED102; + __IM uint32_t RESERVED103; + + union + { + __IOM uint8_t MOMCR; /*!< (@ 0x00000A50) Main Clock Oscillator Mode Oscillation Control + * Register */ + + struct + { + uint8_t : 1; + __IOM uint8_t MODRV0 : 3; /*!< [3..1] Main Clock Oscillator Drive Capability 0 Switching */ + uint8_t : 2; + __IOM uint8_t MOSEL : 1; /*!< [6..6] Main Clock Oscillator Switching */ + uint8_t : 1; + } MOMCR_b; + }; + __IM uint8_t RESERVED104; + __IM uint16_t RESERVED105; + + union + { + __IOM uint8_t FWEPROR; /*!< (@ 0x00000A54) Flash Write Erase Protect Register */ + + struct + { + __IOM uint8_t FLWE : 2; /*!< [1..0] Flash Programing and Erasure */ + uint8_t : 6; + } FWEPROR_b; + }; + __IM uint8_t RESERVED106; + __IM uint16_t RESERVED107; + + union + { + union + { + __IOM uint8_t LVCMPCR; /*!< (@ 0x00000A58) Voltage Monitor Circuit Control Register */ + + struct + { + uint8_t : 5; + __IOM uint8_t LVD1E : 1; /*!< [5..5] Voltage Detection 1 Enable */ + __IOM uint8_t LVD2E : 1; /*!< [6..6] Voltage Detection 2 Enable */ + uint8_t : 1; + } LVCMPCR_b; + }; + + union + { + __IOM uint8_t LVD1CMPCR; /*!< (@ 0x00000A58) Voltage Monitor 1 Comparator Control Register */ + + struct + { + __IOM uint8_t LVD1LVL : 5; /*!< [4..0] Detection Voltage 1 Level Select(Standard voltage during + * drop in voltage) */ + uint8_t : 2; + __IOM uint8_t LVD1E : 1; /*!< [7..7] Voltage Detection 1 Enable */ + } LVD1CMPCR_b; + }; + }; + __IM uint8_t RESERVED108; + __IM uint16_t RESERVED109; + + union + { + __IOM uint8_t LVD2CMPCR; /*!< (@ 0x00000A5C) Voltage Monitor 2 Comparator Control Register */ + + struct + { + __IOM uint8_t LVD2LVL : 5; /*!< [4..0] Detection Voltage 2 Level Select(Standard voltage during + * drop in voltage) */ + uint8_t : 2; + __IOM uint8_t LVD2E : 1; /*!< [7..7] Voltage Detection 2 Enable */ + } LVD2CMPCR_b; + }; + __IM uint8_t RESERVED110; + __IM uint16_t RESERVED111; + __IM uint32_t RESERVED112[4]; + + union + { + __IOM uint8_t LVD1CR0; /*!< (@ 0x00000A70) Voltage Monitor 1 Circuit Control Register 0 */ + + struct + { + __IOM uint8_t RIE : 1; /*!< [0..0] Voltage Monitor Interrupt/Reset Enable */ + __IOM uint8_t DFDIS : 1; /*!< [1..1] Voltage Monitor Digital Filter Disable Mode Select */ + __IOM uint8_t CMPE : 1; /*!< [2..2] Voltage Monitor Circuit Comparison Result Output Enable */ + uint8_t : 1; + __IOM uint8_t FSAMP : 2; /*!< [5..4] Sampling Clock Select */ + __IOM uint8_t RI : 1; /*!< [6..6] Voltage Monitor Circuit Mode Select */ + __IOM uint8_t RN : 1; /*!< [7..7] Voltage Monitor Reset Negate Select */ + } LVD1CR0_b; + }; + __IM uint8_t RESERVED113; + __IM uint16_t RESERVED114; + + union + { + __IOM uint8_t LVD2CR0; /*!< (@ 0x00000A74) Voltage Monitor 2 Circuit Control Register 0 */ + + struct + { + __IOM uint8_t RIE : 1; /*!< [0..0] Voltage Monitor Interrupt/Reset Enable */ + __IOM uint8_t DFDIS : 1; /*!< [1..1] Voltage Monitor Digital Filter Disable Mode Select */ + __IOM uint8_t CMPE : 1; /*!< [2..2] Voltage Monitor Circuit Comparison Result Output Enable */ + uint8_t : 1; + __IOM uint8_t FSAMP : 2; /*!< [5..4] Sampling Clock Select */ + __IOM uint8_t RI : 1; /*!< [6..6] Voltage Monitor Circuit Mode Select */ + __IOM uint8_t RN : 1; /*!< [7..7] Voltage Monitor Reset Negate Select */ + } LVD2CR0_b; + }; + __IM uint8_t RESERVED115; + __IM uint16_t RESERVED116; + __IM uint32_t RESERVED117[3]; + + union + { + __IOM uint8_t VBATTMNSELR; /*!< (@ 0x00000A84) Battery Backup Voltage Monitor Function Select + * Register */ + + struct + { + __IOM uint8_t VBATTMNSEL : 1; /*!< [0..0] VBATT Voltage Monitor Function Select Bit */ + uint8_t : 7; + } VBATTMNSELR_b; + }; + __IM uint8_t RESERVED118; + __IM uint16_t RESERVED119; + + union + { + __IOM uint8_t VBTBPCR1; /*!< (@ 0x00000A88) VBATT Battery Power Supply Control Register 1 */ + + struct + { + __IOM uint8_t BPWSWSTP : 1; /*!< [0..0] Battery Power Supply Switch Stop */ + uint8_t : 7; + } VBTBPCR1_b; + }; + __IM uint8_t RESERVED120; + __IM uint16_t RESERVED121; + __IM uint32_t RESERVED122; + + union + { + __IOM uint8_t LPSCR; /*!< (@ 0x00000A90) Low Power State Control Register */ + + struct + { + __IOM uint8_t LPMD : 4; /*!< [3..0] Low power mode setting bit */ + uint8_t : 4; + } LPSCR_b; + }; + __IM uint8_t RESERVED123; + __IM uint16_t RESERVED124; + __IM uint32_t RESERVED125; + + union + { + __IOM uint8_t SSCR1; /*!< (@ 0x00000A98) Software Standby Control Register 1 */ + + struct + { + __IOM uint8_t SS1FR : 1; /*!< [0..0] Software Standby 1 Fast Return */ + uint8_t : 7; + } SSCR1_b; + }; + __IM uint8_t RESERVED126; + __IM uint16_t RESERVED127; + __IM uint32_t RESERVED128[5]; + + union + { + __IOM uint8_t LVOCR; /*!< (@ 0x00000AB0) Low Power State Control Register */ + + struct + { + __IOM uint8_t LVO0E : 1; /*!< [0..0] Low Voltage Operation 0 Enable */ + __IOM uint8_t LVO1E : 1; /*!< [1..1] Low Voltage Operation 1 Enable */ + uint8_t : 6; + } LVOCR_b; + }; + __IM uint8_t RESERVED129; + __IM uint16_t RESERVED130; + __IM uint32_t RESERVED131[7]; + + union + { + __IOM uint8_t SYRSTMSK0; /*!< (@ 0x00000AD0) System Reset Mask Control Register0 */ + + struct + { + __IOM uint8_t IWDTMASK : 1; /*!< [0..0] Independent watchdog timer Reset Mask */ + __IOM uint8_t WDT0MASK : 1; /*!< [1..1] CPU0 Watchdog timer Reset Mask */ + __IOM uint8_t SWMASK : 1; /*!< [2..2] Software Reset Mask */ + uint8_t : 1; + __IOM uint8_t CLUP0MASK : 1; /*!< [4..4] CPU0 Lockup Reset Mask */ + __IOM uint8_t LM0MASK : 1; /*!< [5..5] Local memory 0 error Reset Mask */ + __IOM uint8_t CMMASK : 1; /*!< [6..6] Common memory error Reset Mask */ + __IOM uint8_t BUSMASK : 1; /*!< [7..7] BUS error Reset Mask */ + } SYRSTMSK0_b; + }; + __IM uint8_t RESERVED132; + __IM uint16_t RESERVED133; + + union + { + __IOM uint8_t SYRSTMSK1; /*!< (@ 0x00000AD4) System Reset Mask Control Register1 */ + + struct + { + uint8_t : 1; + __IOM uint8_t WDT1MASK : 1; /*!< [1..1] CPU1 Watchdog timer Reset Mask */ + uint8_t : 2; + __IOM uint8_t CLUP1MASK : 1; /*!< [4..4] CPU1 Lockup Reset Mask */ + __IOM uint8_t LM1MASK : 1; /*!< [5..5] Local memory 1 error Reset Mask */ + uint8_t : 1; + __IOM uint8_t NWMASK : 1; /*!< [7..7] Network Reset Mask */ + } SYRSTMSK1_b; + }; + __IM uint8_t RESERVED134; + __IM uint16_t RESERVED135; + + union + { + __IOM uint8_t SYRSTMSK2; /*!< (@ 0x00000AD8) System Reset Mask Control Register2 */ + + struct + { + __IOM uint8_t LVD1MASK : 1; /*!< [0..0] Voltage Monitor 1 Reset Mask */ + __IOM uint8_t LVD2MASK : 1; /*!< [1..1] Voltage Monitor 2 Reset Mask */ + __IOM uint8_t LVD3MASK : 1; /*!< [2..2] Voltage Monitor 3 Reset Mask */ + __IOM uint8_t LVD4MASK : 1; /*!< [3..3] Voltage Monitor 4 Reset Mask */ + __IOM uint8_t LVD5MASK : 1; /*!< [4..4] Voltage Monitor 5 Reset Mask */ + uint8_t : 3; + } SYRSTMSK2_b; + }; + __IM uint8_t RESERVED136; + __IM uint16_t RESERVED137; + __IM uint32_t RESERVED138[10]; + + union + { + __IOM uint8_t PLL1LDOCR; /*!< (@ 0x00000B04) PLL1-LDO Control Register */ + + struct + { + __IOM uint8_t LDOSTP : 1; /*!< [0..0] LDO Stop */ + __IOM uint8_t SKEEP : 1; /*!< [1..1] STBY Keep */ + uint8_t : 6; + } PLL1LDOCR_b; + }; + __IM uint8_t RESERVED139; + __IM uint16_t RESERVED140; + + union + { + __IOM uint8_t PLL2LDOCR; /*!< (@ 0x00000B08) PLL2-LDO Control Register */ + + struct + { + __IOM uint8_t LDOSTP : 1; /*!< [0..0] LDO Stop */ + __IOM uint8_t SKEEP : 1; /*!< [1..1] STBY Keep */ + uint8_t : 6; + } PLL2LDOCR_b; + }; + __IM uint8_t RESERVED141; + __IM uint16_t RESERVED142; + + union + { + __IOM uint8_t HOCOLDOCR; /*!< (@ 0x00000B0C) HOCO-LDO Control Register */ + + struct + { + __IOM uint8_t LDOSTP : 1; /*!< [0..0] LDO Stop */ + __IOM uint8_t SKEEP : 1; /*!< [1..1] STBY Keep */ + uint8_t : 6; + } HOCOLDOCR_b; + }; + __IM uint8_t RESERVED143; + __IM uint16_t RESERVED144; + __IM uint32_t RESERVED145[4]; + + union + { + __IOM uint8_t LVD1FCR; /*!< (@ 0x00000B20) Voltage Monitor % Function Control Register */ + + struct + { + __IOM uint8_t RHSEL : 1; /*!< [0..0] Rise Hysteresis Select */ + uint8_t : 7; + } LVD1FCR_b; + }; + __IM uint8_t RESERVED146; + __IM uint16_t RESERVED147; + + union + { + __IOM uint8_t LVD2FCR; /*!< (@ 0x00000B24) Voltage Monitor % Function Control Register */ + + struct + { + __IOM uint8_t RHSEL : 1; /*!< [0..0] Rise Hysteresis Select */ + uint8_t : 7; + } LVD2FCR_b; + }; + __IM uint8_t RESERVED148; + __IM uint16_t RESERVED149; + __IM uint32_t RESERVED150[54]; + + union + { + __IOM uint8_t SOSCCR; /*!< (@ 0x00000C00) Sub-clock oscillator control register */ + + struct + { + __IOM uint8_t SOSTP : 1; /*!< [0..0] Sub-Clock Oscillator Stop */ + uint8_t : 7; + } SOSCCR_b; + }; + + union + { + __IOM uint8_t SOMCR; /*!< (@ 0x00000C01) Sub Clock Oscillator Mode Control Register */ + + struct + { + __IOM uint8_t SODRV : 2; /*!< [1..0] Sub Clock Oscillator Drive Capability Switching */ + uint8_t : 4; + __IOM uint8_t SOSEL : 1; /*!< [6..6] Sub Clock Oscillator Switching */ + uint8_t : 1; + } SOMCR_b; + }; + __IM uint16_t RESERVED151; + __IM uint32_t RESERVED152[15]; + + union + { + __IOM uint8_t VBTBER; /*!< (@ 0x00000C40) VBATT Backup Enable Register */ + + struct + { + uint8_t : 3; + __IOM uint8_t VBAE : 1; /*!< [3..3] VBATT backup register access enable bit */ + uint8_t : 4; + } VBTBER_b; + }; + __IM uint8_t RESERVED153; + __IM uint16_t RESERVED154; + __IM uint8_t RESERVED155; + + union + { + __IOM uint8_t VBTBPCR2; /*!< (@ 0x00000C45) VBATT Battery Power Supply Control Register 2 */ + + struct + { + __IOM uint8_t VDETLVL : 3; /*!< [2..0] VDETBAT Level Select */ + uint8_t : 1; + __IOM uint8_t VDETE : 1; /*!< [4..4] Voltage drop detection enable */ + uint8_t : 3; + } VBTBPCR2_b; + }; + + union + { + __IOM uint8_t VBTBPSR; /*!< (@ 0x00000C46) VBATT Battery Power Supply Status Register */ + + struct + { + __IOM uint8_t VBPORF : 1; /*!< [0..0] VBATT_POR Flag */ + uint8_t : 3; + __IOM uint8_t VBPORM : 1; /*!< [4..4] VBATT_POR Monitor */ + __IOM uint8_t BPWSWM : 1; /*!< [5..5] Battery Power Supply Switch Status Monitor */ + uint8_t : 2; + } VBTBPSR_b; + }; + __IM uint8_t RESERVED156; + + union + { + __IOM uint8_t VBTADSR; /*!< (@ 0x00000C48) VBATT Tamper detection Status Register */ + + struct + { + __IOM uint8_t VBTADF0 : 1; /*!< [0..0] VBATT Tamper Detection flag 0 */ + __IOM uint8_t VBTADF1 : 1; /*!< [1..1] VBATT Tamper Detection flag 1 */ + __IOM uint8_t VBTADF2 : 1; /*!< [2..2] VBATT Tamper Detection flag 2 */ + uint8_t : 5; + } VBTADSR_b; + }; + + union + { + __IOM uint8_t VBTADCR1; /*!< (@ 0x00000C49) VBATT Tamper detection Control Register 1 */ + + struct + { + __IOM uint8_t VBTADIE0 : 1; /*!< [0..0] VBATT Tamper Detection Interrupt Enable 0 */ + __IOM uint8_t VBTADIE1 : 1; /*!< [1..1] VBATT Tamper Detection Interrupt Enable 1 */ + __IOM uint8_t VBTADIE2 : 1; /*!< [2..2] VBATT Tamper Detection Interrupt Enable 2 */ + uint8_t : 1; + __IOM uint8_t VBTADCLE0 : 1; /*!< [4..4] VBATT Tamper Detection Backup Register Clear Enable 0 */ + __IOM uint8_t VBTADCLE1 : 1; /*!< [5..5] VBATT Tamper Detection Backup Register Clear Enable 1 */ + __IOM uint8_t VBTADCLE2 : 1; /*!< [6..6] VBATT Tamper Detection Backup Register Clear Enable 2 */ + uint8_t : 1; + } VBTADCR1_b; + }; + + union + { + __IOM uint8_t VBTADCR2; /*!< (@ 0x00000C4A) VBATT Tamper detection Control Register 2 */ + + struct + { + __IOM uint8_t VBRTCES0 : 1; /*!< [0..0] VBATT RTC Time Capture Event Source Select 0 */ + __IOM uint8_t VBRTCES1 : 1; /*!< [1..1] VBATT RTC Time Capture Event Source Select 1 */ + __IOM uint8_t VBRTCES2 : 1; /*!< [2..2] VBATT RTC Time Capture Event Source Select 2 */ + uint8_t : 5; + } VBTADCR2_b; + }; + __IM uint8_t RESERVED157; + + union + { + __IOM uint8_t VBTICTLR; /*!< (@ 0x00000C4C) VBATT Input Control Register */ + + struct + { + __IOM uint8_t VCH0INEN : 1; /*!< [0..0] RTCIC0 Input Enable */ + __IOM uint8_t VCH1INEN : 1; /*!< [1..1] RTCIC1 Input Enable */ + __IOM uint8_t VCH2INEN : 1; /*!< [2..2] RTCIC2 Input Enable */ + uint8_t : 5; + } VBTICTLR_b; + }; + + union + { + __IOM uint8_t VBTICTLR2; /*!< (@ 0x00000C4D) VBATT Input Control Register 2 */ + + struct + { + __IOM uint8_t VCH0NCE : 1; /*!< [0..0] VBATT CH0 Input Noise Canceler Enable */ + __IOM uint8_t VCH1NCE : 1; /*!< [1..1] VBATT CH1 Input Noise Canceler Enable */ + __IOM uint8_t VCH2NCE : 1; /*!< [2..2] VBATT CH2 Input Noise Canceler Enable */ + uint8_t : 1; + __IOM uint8_t VCH0EG : 1; /*!< [4..4] VBATT CH0 Input Edge Select */ + __IOM uint8_t VCH1EG : 1; /*!< [5..5] VBATT CH1 Input Edge Select */ + __IOM uint8_t VCH2EG : 1; /*!< [6..6] VBATT CH2 Input Edge Select */ + uint8_t : 1; + } VBTICTLR2_b; + }; + + union + { + __IOM uint8_t VBTIMONR; /*!< (@ 0x00000C4E) VBATT Input Monitor Register */ + + struct + { + __IOM uint8_t VCH0MON : 1; /*!< [0..0] VBATT CH0 Input monitor */ + __IOM uint8_t VCH1MON : 1; /*!< [1..1] VBATT CH1 Input monitor */ + __IOM uint8_t VCH2MON : 1; /*!< [2..2] VBATT CH2 Input monitor */ + uint8_t : 5; + } VBTIMONR_b; + }; + __IM uint8_t RESERVED158; + __IM uint32_t RESERVED159[44]; + + union + { + __IOM uint8_t VBTBKR0; /*!< (@ 0x00000D00) VBATT Backup Register 0 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR0_b; + }; + + union + { + __IOM uint8_t VBTBKR1; /*!< (@ 0x00000D01) VBATT Backup Register 1 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR1_b; + }; + + union + { + __IOM uint8_t VBTBKR2; /*!< (@ 0x00000D02) VBATT Backup Register 2 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR2_b; + }; + + union + { + __IOM uint8_t VBTBKR3; /*!< (@ 0x00000D03) VBATT Backup Register 3 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR3_b; + }; + + union + { + __IOM uint8_t VBTBKR4; /*!< (@ 0x00000D04) VBATT Backup Register 4 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR4_b; + }; + + union + { + __IOM uint8_t VBTBKR5; /*!< (@ 0x00000D05) VBATT Backup Register 5 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR5_b; + }; + + union + { + __IOM uint8_t VBTBKR6; /*!< (@ 0x00000D06) VBATT Backup Register 6 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR6_b; + }; + + union + { + __IOM uint8_t VBTBKR7; /*!< (@ 0x00000D07) VBATT Backup Register 7 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR7_b; + }; + + union + { + __IOM uint8_t VBTBKR8; /*!< (@ 0x00000D08) VBATT Backup Register 8 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR8_b; + }; + + union + { + __IOM uint8_t VBTBKR9; /*!< (@ 0x00000D09) VBATT Backup Register 9 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR9_b; + }; + + union + { + __IOM uint8_t VBTBKR10; /*!< (@ 0x00000D0A) VBATT Backup Register 10 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR10_b; + }; + + union + { + __IOM uint8_t VBTBKR11; /*!< (@ 0x00000D0B) VBATT Backup Register 11 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR11_b; + }; + + union + { + __IOM uint8_t VBTBKR12; /*!< (@ 0x00000D0C) VBATT Backup Register 12 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR12_b; + }; + + union + { + __IOM uint8_t VBTBKR13; /*!< (@ 0x00000D0D) VBATT Backup Register 13 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR13_b; + }; + + union + { + __IOM uint8_t VBTBKR14; /*!< (@ 0x00000D0E) VBATT Backup Register 14 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR14_b; + }; + + union + { + __IOM uint8_t VBTBKR15; /*!< (@ 0x00000D0F) VBATT Backup Register 15 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR15_b; + }; + + union + { + __IOM uint8_t VBTBKR16; /*!< (@ 0x00000D10) VBATT Backup Register 16 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR16_b; + }; + + union + { + __IOM uint8_t VBTBKR17; /*!< (@ 0x00000D11) VBATT Backup Register 17 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR17_b; + }; + + union + { + __IOM uint8_t VBTBKR18; /*!< (@ 0x00000D12) VBATT Backup Register 18 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR18_b; + }; + + union + { + __IOM uint8_t VBTBKR19; /*!< (@ 0x00000D13) VBATT Backup Register 19 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR19_b; + }; + + union + { + __IOM uint8_t VBTBKR20; /*!< (@ 0x00000D14) VBATT Backup Register 20 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR20_b; + }; + + union + { + __IOM uint8_t VBTBKR21; /*!< (@ 0x00000D15) VBATT Backup Register 21 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR21_b; + }; + + union + { + __IOM uint8_t VBTBKR22; /*!< (@ 0x00000D16) VBATT Backup Register 22 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR22_b; + }; + + union + { + __IOM uint8_t VBTBKR23; /*!< (@ 0x00000D17) VBATT Backup Register 23 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR23_b; + }; + + union + { + __IOM uint8_t VBTBKR24; /*!< (@ 0x00000D18) VBATT Backup Register 24 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR24_b; + }; + + union + { + __IOM uint8_t VBTBKR25; /*!< (@ 0x00000D19) VBATT Backup Register 25 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR25_b; + }; + + union + { + __IOM uint8_t VBTBKR26; /*!< (@ 0x00000D1A) VBATT Backup Register 26 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR26_b; + }; + + union + { + __IOM uint8_t VBTBKR27; /*!< (@ 0x00000D1B) VBATT Backup Register 27 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR27_b; + }; + + union + { + __IOM uint8_t VBTBKR28; /*!< (@ 0x00000D1C) VBATT Backup Register 28 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR28_b; + }; + + union + { + __IOM uint8_t VBTBKR29; /*!< (@ 0x00000D1D) VBATT Backup Register 29 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR29_b; + }; + + union + { + __IOM uint8_t VBTBKR30; /*!< (@ 0x00000D1E) VBATT Backup Register 30 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR30_b; + }; + + union + { + __IOM uint8_t VBTBKR31; /*!< (@ 0x00000D1F) VBATT Backup Register 31 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR31_b; + }; + + union + { + __IOM uint8_t VBTBKR32; /*!< (@ 0x00000D20) VBATT Backup Register 32 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR32_b; + }; + + union + { + __IOM uint8_t VBTBKR33; /*!< (@ 0x00000D21) VBATT Backup Register 33 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR33_b; + }; + + union + { + __IOM uint8_t VBTBKR34; /*!< (@ 0x00000D22) VBATT Backup Register 34 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR34_b; + }; + + union + { + __IOM uint8_t VBTBKR35; /*!< (@ 0x00000D23) VBATT Backup Register 35 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR35_b; + }; + + union + { + __IOM uint8_t VBTBKR36; /*!< (@ 0x00000D24) VBATT Backup Register 36 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR36_b; + }; + + union + { + __IOM uint8_t VBTBKR37; /*!< (@ 0x00000D25) VBATT Backup Register 37 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR37_b; + }; + + union + { + __IOM uint8_t VBTBKR38; /*!< (@ 0x00000D26) VBATT Backup Register 38 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR38_b; + }; + + union + { + __IOM uint8_t VBTBKR39; /*!< (@ 0x00000D27) VBATT Backup Register 39 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR39_b; + }; + + union + { + __IOM uint8_t VBTBKR40; /*!< (@ 0x00000D28) VBATT Backup Register 40 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR40_b; + }; + + union + { + __IOM uint8_t VBTBKR41; /*!< (@ 0x00000D29) VBATT Backup Register 41 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR41_b; + }; + + union + { + __IOM uint8_t VBTBKR42; /*!< (@ 0x00000D2A) VBATT Backup Register 42 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR42_b; + }; + + union + { + __IOM uint8_t VBTBKR43; /*!< (@ 0x00000D2B) VBATT Backup Register 43 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR43_b; + }; + + union + { + __IOM uint8_t VBTBKR44; /*!< (@ 0x00000D2C) VBATT Backup Register 44 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR44_b; + }; + + union + { + __IOM uint8_t VBTBKR45; /*!< (@ 0x00000D2D) VBATT Backup Register 45 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR45_b; + }; + + union + { + __IOM uint8_t VBTBKR46; /*!< (@ 0x00000D2E) VBATT Backup Register 46 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR46_b; + }; + + union + { + __IOM uint8_t VBTBKR47; /*!< (@ 0x00000D2F) VBATT Backup Register 47 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR47_b; + }; + + union + { + __IOM uint8_t VBTBKR48; /*!< (@ 0x00000D30) VBATT Backup Register 48 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR48_b; + }; + + union + { + __IOM uint8_t VBTBKR49; /*!< (@ 0x00000D31) VBATT Backup Register 49 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR49_b; + }; + + union + { + __IOM uint8_t VBTBKR50; /*!< (@ 0x00000D32) VBATT Backup Register 50 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR50_b; + }; + + union + { + __IOM uint8_t VBTBKR51; /*!< (@ 0x00000D33) VBATT Backup Register 51 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR51_b; + }; + + union + { + __IOM uint8_t VBTBKR52; /*!< (@ 0x00000D34) VBATT Backup Register 52 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR52_b; + }; + + union + { + __IOM uint8_t VBTBKR53; /*!< (@ 0x00000D35) VBATT Backup Register 53 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR53_b; + }; + + union + { + __IOM uint8_t VBTBKR54; /*!< (@ 0x00000D36) VBATT Backup Register 54 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR54_b; + }; + + union + { + __IOM uint8_t VBTBKR55; /*!< (@ 0x00000D37) VBATT Backup Register 55 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR55_b; + }; + + union + { + __IOM uint8_t VBTBKR56; /*!< (@ 0x00000D38) VBATT Backup Register 56 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR56_b; + }; + + union + { + __IOM uint8_t VBTBKR57; /*!< (@ 0x00000D39) VBATT Backup Register 57 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR57_b; + }; + + union + { + __IOM uint8_t VBTBKR58; /*!< (@ 0x00000D3A) VBATT Backup Register 58 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR58_b; + }; + + union + { + __IOM uint8_t VBTBKR59; /*!< (@ 0x00000D3B) VBATT Backup Register 59 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR59_b; + }; + + union + { + __IOM uint8_t VBTBKR60; /*!< (@ 0x00000D3C) VBATT Backup Register 60 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR60_b; + }; + + union + { + __IOM uint8_t VBTBKR61; /*!< (@ 0x00000D3D) VBATT Backup Register 61 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR61_b; + }; + + union + { + __IOM uint8_t VBTBKR62; /*!< (@ 0x00000D3E) VBATT Backup Register 62 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR62_b; + }; + + union + { + __IOM uint8_t VBTBKR63; /*!< (@ 0x00000D3F) VBATT Backup Register 63 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR63_b; + }; + + union + { + __IOM uint8_t VBTBKR64; /*!< (@ 0x00000D40) VBATT Backup Register 64 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR64_b; + }; + + union + { + __IOM uint8_t VBTBKR65; /*!< (@ 0x00000D41) VBATT Backup Register 65 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR65_b; + }; + + union + { + __IOM uint8_t VBTBKR66; /*!< (@ 0x00000D42) VBATT Backup Register 66 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR66_b; + }; + + union + { + __IOM uint8_t VBTBKR67; /*!< (@ 0x00000D43) VBATT Backup Register 67 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR67_b; + }; + + union + { + __IOM uint8_t VBTBKR68; /*!< (@ 0x00000D44) VBATT Backup Register 68 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR68_b; + }; + + union + { + __IOM uint8_t VBTBKR69; /*!< (@ 0x00000D45) VBATT Backup Register 69 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR69_b; + }; + + union + { + __IOM uint8_t VBTBKR70; /*!< (@ 0x00000D46) VBATT Backup Register 70 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR70_b; + }; + + union + { + __IOM uint8_t VBTBKR71; /*!< (@ 0x00000D47) VBATT Backup Register 71 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR71_b; + }; + + union + { + __IOM uint8_t VBTBKR72; /*!< (@ 0x00000D48) VBATT Backup Register 72 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR72_b; + }; + + union + { + __IOM uint8_t VBTBKR73; /*!< (@ 0x00000D49) VBATT Backup Register 73 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR73_b; + }; + + union + { + __IOM uint8_t VBTBKR74; /*!< (@ 0x00000D4A) VBATT Backup Register 74 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR74_b; + }; + + union + { + __IOM uint8_t VBTBKR75; /*!< (@ 0x00000D4B) VBATT Backup Register 75 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR75_b; + }; + + union + { + __IOM uint8_t VBTBKR76; /*!< (@ 0x00000D4C) VBATT Backup Register 76 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR76_b; + }; + + union + { + __IOM uint8_t VBTBKR77; /*!< (@ 0x00000D4D) VBATT Backup Register 77 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR77_b; + }; + + union + { + __IOM uint8_t VBTBKR78; /*!< (@ 0x00000D4E) VBATT Backup Register 78 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR78_b; + }; + + union + { + __IOM uint8_t VBTBKR79; /*!< (@ 0x00000D4F) VBATT Backup Register 79 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR79_b; + }; + + union + { + __IOM uint8_t VBTBKR80; /*!< (@ 0x00000D50) VBATT Backup Register 80 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR80_b; + }; + + union + { + __IOM uint8_t VBTBKR81; /*!< (@ 0x00000D51) VBATT Backup Register 81 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR81_b; + }; + + union + { + __IOM uint8_t VBTBKR82; /*!< (@ 0x00000D52) VBATT Backup Register 82 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR82_b; + }; + + union + { + __IOM uint8_t VBTBKR83; /*!< (@ 0x00000D53) VBATT Backup Register 83 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR83_b; + }; + + union + { + __IOM uint8_t VBTBKR84; /*!< (@ 0x00000D54) VBATT Backup Register 84 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR84_b; + }; + + union + { + __IOM uint8_t VBTBKR85; /*!< (@ 0x00000D55) VBATT Backup Register 85 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR85_b; + }; + + union + { + __IOM uint8_t VBTBKR86; /*!< (@ 0x00000D56) VBATT Backup Register 86 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR86_b; + }; + + union + { + __IOM uint8_t VBTBKR87; /*!< (@ 0x00000D57) VBATT Backup Register 87 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR87_b; + }; + + union + { + __IOM uint8_t VBTBKR88; /*!< (@ 0x00000D58) VBATT Backup Register 88 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR88_b; + }; + + union + { + __IOM uint8_t VBTBKR89; /*!< (@ 0x00000D59) VBATT Backup Register 89 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR89_b; + }; + + union + { + __IOM uint8_t VBTBKR90; /*!< (@ 0x00000D5A) VBATT Backup Register 90 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR90_b; + }; + + union + { + __IOM uint8_t VBTBKR91; /*!< (@ 0x00000D5B) VBATT Backup Register 91 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR91_b; + }; + + union + { + __IOM uint8_t VBTBKR92; /*!< (@ 0x00000D5C) VBATT Backup Register 92 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR92_b; + }; + + union + { + __IOM uint8_t VBTBKR93; /*!< (@ 0x00000D5D) VBATT Backup Register 93 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR93_b; + }; + + union + { + __IOM uint8_t VBTBKR94; /*!< (@ 0x00000D5E) VBATT Backup Register 94 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR94_b; + }; + + union + { + __IOM uint8_t VBTBKR95; /*!< (@ 0x00000D5F) VBATT Backup Register 95 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR95_b; + }; + + union + { + __IOM uint8_t VBTBKR96; /*!< (@ 0x00000D60) VBATT Backup Register 96 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR96_b; + }; + + union + { + __IOM uint8_t VBTBKR97; /*!< (@ 0x00000D61) VBATT Backup Register 97 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR97_b; + }; + + union + { + __IOM uint8_t VBTBKR98; /*!< (@ 0x00000D62) VBATT Backup Register 98 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR98_b; + }; + + union + { + __IOM uint8_t VBTBKR99; /*!< (@ 0x00000D63) VBATT Backup Register 99 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR99_b; + }; + + union + { + __IOM uint8_t VBTBKR100; /*!< (@ 0x00000D64) VBATT Backup Register 100 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR100_b; + }; + + union + { + __IOM uint8_t VBTBKR101; /*!< (@ 0x00000D65) VBATT Backup Register 101 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR101_b; + }; + + union + { + __IOM uint8_t VBTBKR102; /*!< (@ 0x00000D66) VBATT Backup Register 102 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR102_b; + }; + + union + { + __IOM uint8_t VBTBKR103; /*!< (@ 0x00000D67) VBATT Backup Register 103 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR103_b; + }; + + union + { + __IOM uint8_t VBTBKR104; /*!< (@ 0x00000D68) VBATT Backup Register 104 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR104_b; + }; + + union + { + __IOM uint8_t VBTBKR105; /*!< (@ 0x00000D69) VBATT Backup Register 105 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR105_b; + }; + + union + { + __IOM uint8_t VBTBKR106; /*!< (@ 0x00000D6A) VBATT Backup Register 106 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR106_b; + }; + + union + { + __IOM uint8_t VBTBKR107; /*!< (@ 0x00000D6B) VBATT Backup Register 107 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR107_b; + }; + + union + { + __IOM uint8_t VBTBKR108; /*!< (@ 0x00000D6C) VBATT Backup Register 108 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR108_b; + }; + + union + { + __IOM uint8_t VBTBKR109; /*!< (@ 0x00000D6D) VBATT Backup Register 109 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR109_b; + }; + + union + { + __IOM uint8_t VBTBKR110; /*!< (@ 0x00000D6E) VBATT Backup Register 110 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR110_b; + }; + + union + { + __IOM uint8_t VBTBKR111; /*!< (@ 0x00000D6F) VBATT Backup Register 111 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR111_b; + }; + + union + { + __IOM uint8_t VBTBKR112; /*!< (@ 0x00000D70) VBATT Backup Register 112 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR112_b; + }; + + union + { + __IOM uint8_t VBTBKR113; /*!< (@ 0x00000D71) VBATT Backup Register 113 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR113_b; + }; + + union + { + __IOM uint8_t VBTBKR114; /*!< (@ 0x00000D72) VBATT Backup Register 114 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR114_b; + }; + + union + { + __IOM uint8_t VBTBKR115; /*!< (@ 0x00000D73) VBATT Backup Register 115 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR115_b; + }; + + union + { + __IOM uint8_t VBTBKR116; /*!< (@ 0x00000D74) VBATT Backup Register 116 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR116_b; + }; + + union + { + __IOM uint8_t VBTBKR117; /*!< (@ 0x00000D75) VBATT Backup Register 117 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR117_b; + }; + + union + { + __IOM uint8_t VBTBKR118; /*!< (@ 0x00000D76) VBATT Backup Register 118 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR118_b; + }; + + union + { + __IOM uint8_t VBTBKR119; /*!< (@ 0x00000D77) VBATT Backup Register 119 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR119_b; + }; + + union + { + __IOM uint8_t VBTBKR120; /*!< (@ 0x00000D78) VBATT Backup Register 120 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR120_b; + }; + + union + { + __IOM uint8_t VBTBKR121; /*!< (@ 0x00000D79) VBATT Backup Register 121 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR121_b; + }; + + union + { + __IOM uint8_t VBTBKR122; /*!< (@ 0x00000D7A) VBATT Backup Register 122 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR122_b; + }; + + union + { + __IOM uint8_t VBTBKR123; /*!< (@ 0x00000D7B) VBATT Backup Register 123 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR123_b; + }; + + union + { + __IOM uint8_t VBTBKR124; /*!< (@ 0x00000D7C) VBATT Backup Register 124 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR124_b; + }; + + union + { + __IOM uint8_t VBTBKR125; /*!< (@ 0x00000D7D) VBATT Backup Register 125 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR125_b; + }; + + union + { + __IOM uint8_t VBTBKR126; /*!< (@ 0x00000D7E) VBATT Backup Register 126 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR126_b; + }; + + union + { + __IOM uint8_t VBTBKR127; /*!< (@ 0x00000D7F) VBATT Backup Register 127 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR127_b; + }; +} R_SYSTEM_Type; /*!< Size = 3456 (0xd80) */ + +/* =========================================================================================================================== */ +/* ================ R_TSN_CAL ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Temperature Sensor (R_TSN_CAL) + */ + +typedef struct /*!< (@ 0x4011B17C) R_TSN_CAL Structure */ +{ + union + { + __IM uint32_t TSCDR; /*!< (@ 0x00000000) Temperature Sensor 32 bit Calibration Data Register */ + + struct + { + __IM uint32_t TSCDR : 32; /*!< [31..0] The 32 bit TSCDR register stores temperature sensor + * calibration converted value. */ + } TSCDR_b; + }; +} R_TSN_CAL_Type; /*!< Size = 4 (0x4) */ + +/* =========================================================================================================================== */ +/* ================ R_TSN_CTRL ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Temperature Sensor (R_TSN_CTRL) + */ + +typedef struct /*!< (@ 0x40235000) R_TSN_CTRL Structure */ +{ + union + { + __IOM uint8_t TSCR; /*!< (@ 0x00000000) Temperature Sensor Control Register */ + + struct + { + uint8_t : 4; + __IOM uint8_t TSOE : 1; /*!< [4..4] Temperature Sensor Enable */ + uint8_t : 2; + __IOM uint8_t TSEN : 1; /*!< [7..7] Temperature Sensor Output Enable */ + } TSCR_b; + }; +} R_TSN_CTRL_Type; /*!< Size = 1 (0x1) */ + +/* =========================================================================================================================== */ +/* ================ R_USB_FS0 ================ */ +/* =========================================================================================================================== */ + +/** + * @brief USB 2.0 Module (R_USB_FS0) + */ + +typedef struct /*!< (@ 0x40250000) R_USB_FS0 Structure */ +{ + union + { + __IOM uint16_t SYSCFG; /*!< (@ 0x00000000) System Configuration Control Register */ + + struct + { + __IOM uint16_t USBE : 1; /*!< [0..0] USB Operation Enable */ + uint16_t : 2; + __IOM uint16_t DMRPU : 1; /*!< [3..3] D- Line Resistor Control */ + __IOM uint16_t DPRPU : 1; /*!< [4..4] D+ Line Resistor Control */ + __IOM uint16_t DRPD : 1; /*!< [5..5] D+/D- Line Resistor Control */ + __IOM uint16_t DCFM : 1; /*!< [6..6] Controller Function Select */ + uint16_t : 1; + __IOM uint16_t CNEN : 1; /*!< [8..8] CNEN Single End Receiver Enable */ + uint16_t : 1; + __IOM uint16_t SCKE : 1; /*!< [10..10] USB Clock Enable */ + uint16_t : 5; + } SYSCFG_b; + }; + + union + { + __IOM uint16_t BUSWAIT; /*!< (@ 0x00000002) CPU Bus Wait Register */ + + struct + { + __IOM uint16_t BWAIT : 4; /*!< [3..0] CPU Bus Access Wait Specification BWAIT waits (BWAIT+2 + * access cycles) */ + uint16_t : 12; + } BUSWAIT_b; + }; + + union + { + __IM uint16_t SYSSTS0; /*!< (@ 0x00000004) System Configuration Status Register 0 */ + + struct + { + __IM uint16_t LNST : 2; /*!< [1..0] USB Data Line Status Monitor */ + __IM uint16_t IDMON : 1; /*!< [2..2] External ID0 Input Pin Monitor */ + uint16_t : 2; + __IM uint16_t SOFEA : 1; /*!< [5..5] SOF Active Monitor While Host Controller Function is + * Selected. */ + __IM uint16_t HTACT : 1; /*!< [6..6] USB Host Sequencer Status Monitor */ + uint16_t : 7; + __IM uint16_t OVCMON : 2; /*!< [15..14] External USB0_OVRCURA/ USB0_OVRCURB Input Pin MonitorThe + * OCVMON[1] bit indicates the status of the USBHS_OVRCURA + * pin. The OCVMON[0] bit indicates the status of the USBHS_OVRCURB + * pin. */ + } SYSSTS0_b; + }; + + union + { + __IM uint16_t PLLSTA; /*!< (@ 0x00000006) PLL Status Register */ + + struct + { + __IM uint16_t PLLLOCK : 1; /*!< [0..0] PLL Lock Flag */ + uint16_t : 15; + } PLLSTA_b; + }; + + union + { + __IOM uint16_t DVSTCTR0; /*!< (@ 0x00000008) Device State Control Register 0 */ + + struct + { + __IM uint16_t RHST : 3; /*!< [2..0] USB Bus Reset Status */ + uint16_t : 1; + __IOM uint16_t UACT : 1; /*!< [4..4] USB Bus Enable */ + __IOM uint16_t RESUME : 1; /*!< [5..5] Resume Output */ + __IOM uint16_t USBRST : 1; /*!< [6..6] USB Bus Reset Output */ + __IOM uint16_t RWUPE : 1; /*!< [7..7] Wakeup Detection Enable */ + __IOM uint16_t WKUP : 1; /*!< [8..8] Wakeup Output */ + __IOM uint16_t VBUSEN : 1; /*!< [9..9] USB_VBUSEN Output Pin Control */ + __IOM uint16_t EXICEN : 1; /*!< [10..10] USB_EXICEN Output Pin Control */ + __IOM uint16_t HNPBTOA : 1; /*!< [11..11] Host Negotiation Protocol (HNP) Control This bit is + * used when switching from device B to device A while in + * OTG mode. If the HNPBTOA bit is 1, the internal function + * control keeps the suspended state until the HNP processing + * ends even though SYSCFG.DPRPU = 0 or SYSCFG.DCFM = 1 is + * set. */ + uint16_t : 4; + } DVSTCTR0_b; + }; + __IM uint16_t RESERVED; + + union + { + __IOM uint16_t TESTMODE; /*!< (@ 0x0000000C) USB Test Mode Register */ + + struct + { + __IOM uint16_t UTST : 4; /*!< [3..0] Test Mode */ + uint16_t : 12; + } TESTMODE_b; + }; + __IM uint16_t RESERVED1; + __IM uint32_t RESERVED2; + + union + { + __IOM uint32_t CFIFO; /*!< (@ 0x00000014) CFIFO Port Register */ + + struct + { + union + { + __IOM uint16_t CFIFOL; /*!< (@ 0x00000014) CFIFO Port Register L */ + __IOM uint8_t CFIFOLL; /*!< (@ 0x00000014) CFIFO Port Register LL */ + }; + + union + { + __IOM uint16_t CFIFOH; /*!< (@ 0x00000016) CFIFO Port Register H */ + + struct + { + __IM uint8_t RESERVED3; + __IOM uint8_t CFIFOHH; /*!< (@ 0x00000017) CFIFO Port Register HH */ + }; + }; + }; + }; + + union + { + __IOM uint32_t D0FIFO; /*!< (@ 0x00000018) D0FIFO Port Register */ + + struct + { + union + { + __IOM uint16_t D0FIFOL; /*!< (@ 0x00000018) D0FIFO Port Register L */ + __IOM uint8_t D0FIFOLL; /*!< (@ 0x00000018) D0FIFO Port Register LL */ + }; + + union + { + __IOM uint16_t D0FIFOH; /*!< (@ 0x0000001A) D0FIFO Port Register H */ + + struct + { + __IM uint8_t RESERVED4; + __IOM uint8_t D0FIFOHH; /*!< (@ 0x0000001B) D0FIFO Port Register HH */ + }; + }; + }; + }; + + union + { + __IOM uint32_t D1FIFO; /*!< (@ 0x0000001C) D1FIFO Port Register */ + + struct + { + union + { + __IOM uint16_t D1FIFOL; /*!< (@ 0x0000001C) D1FIFO Port Register L */ + __IOM uint8_t D1FIFOLL; /*!< (@ 0x0000001C) D1FIFO Port Register LL */ + }; + + union + { + __IOM uint16_t D1FIFOH; /*!< (@ 0x0000001E) D1FIFO Port Register H */ + + struct + { + __IM uint8_t RESERVED5; + __IOM uint8_t D1FIFOHH; /*!< (@ 0x0000001F) D1FIFO Port Register HH */ + }; + }; + }; + }; + + union + { + __IOM uint16_t CFIFOSEL; /*!< (@ 0x00000020) CFIFO Port Select Register */ + + struct + { + __IOM uint16_t CURPIPE : 4; /*!< [3..0] CFIFO Port Access Pipe Specification */ + uint16_t : 1; + __IOM uint16_t ISEL : 1; /*!< [5..5] CFIFO Port Access Direction When DCP is Selected */ + uint16_t : 2; + __IOM uint16_t BIGEND : 1; /*!< [8..8] CFIFO Port Endian Control */ + uint16_t : 1; + __IOM uint16_t MBW : 2; /*!< [11..10] CFIFO Port Access Bit Width */ + uint16_t : 2; + __IOM uint16_t REW : 1; /*!< [14..14] Buffer Pointer Rewind */ + __IOM uint16_t RCNT : 1; /*!< [15..15] Read Count Mode */ + } CFIFOSEL_b; + }; + + union + { + __IOM uint16_t CFIFOCTR; /*!< (@ 0x00000022) CFIFO Port Control Register */ + + struct + { + __IM uint16_t DTLN : 12; /*!< [11..0] Receive Data LengthIndicates the length of the receive + * data. */ + uint16_t : 1; + __IM uint16_t FRDY : 1; /*!< [13..13] FIFO Port Ready */ + __IOM uint16_t BCLR : 1; /*!< [14..14] CPU Buffer ClearNote: Only 0 can be read. */ + __IOM uint16_t BVAL : 1; /*!< [15..15] Buffer Memory Valid Flag */ + } CFIFOCTR_b; + }; + __IM uint32_t RESERVED6; + + union + { + __IOM uint16_t D0FIFOSEL; /*!< (@ 0x00000028) D0FIFO Port Select Register */ + + struct + { + __IOM uint16_t CURPIPE : 4; /*!< [3..0] FIFO Port Access Pipe Specification */ + uint16_t : 4; + __IOM uint16_t BIGEND : 1; /*!< [8..8] FIFO Port Endian Control */ + uint16_t : 1; + __IOM uint16_t MBW : 2; /*!< [11..10] FIFO Port Access Bit Width */ + __IOM uint16_t DREQE : 1; /*!< [12..12] DMA/DTC Transfer Request Enable */ + __IOM uint16_t DCLRM : 1; /*!< [13..13] Auto Buffer Memory Clear Mode Accessed after Specified + * Pipe Data is Read */ + __IOM uint16_t REW : 1; /*!< [14..14] Buffer Pointer RewindNote: Only 0 can be read. */ + __IOM uint16_t RCNT : 1; /*!< [15..15] Read Count Mode */ + } D0FIFOSEL_b; + }; + + union + { + __IOM uint16_t D0FIFOCTR; /*!< (@ 0x0000002A) D0FIFO Port Control Register */ + + struct + { + __IM uint16_t DTLN : 12; /*!< [11..0] Receive Data LengthIndicates the length of the receive + * data. */ + uint16_t : 1; + __IM uint16_t FRDY : 1; /*!< [13..13] FIFO Port Ready */ + __IOM uint16_t BCLR : 1; /*!< [14..14] CPU Buffer ClearNote: Only 0 can be read. */ + __IOM uint16_t BVAL : 1; /*!< [15..15] Buffer Memory Valid Flag */ + } D0FIFOCTR_b; + }; + + union + { + __IOM uint16_t D1FIFOSEL; /*!< (@ 0x0000002C) D1FIFO Port Select Register */ + + struct + { + __IOM uint16_t CURPIPE : 4; /*!< [3..0] FIFO Port Access Pipe Specification */ + uint16_t : 4; + __IOM uint16_t BIGEND : 1; /*!< [8..8] FIFO Port Endian Control */ + uint16_t : 1; + __IOM uint16_t MBW : 2; /*!< [11..10] FIFO Port Access Bit Width */ + __IOM uint16_t DREQE : 1; /*!< [12..12] DMA/DTC Transfer Request Enable */ + __IOM uint16_t DCLRM : 1; /*!< [13..13] Auto Buffer Memory Clear Mode Accessed after Specified + * Pipe Data is Read */ + __IOM uint16_t REW : 1; /*!< [14..14] Buffer Pointer Rewind */ + __IOM uint16_t RCNT : 1; /*!< [15..15] Read Count Mode */ + } D1FIFOSEL_b; + }; + + union + { + __IOM uint16_t D1FIFOCTR; /*!< (@ 0x0000002E) D1FIFO Port Control Register */ + + struct + { + __IM uint16_t DTLN : 12; /*!< [11..0] Receive Data LengthIndicates the length of the receive + * data. */ + uint16_t : 1; + __IM uint16_t FRDY : 1; /*!< [13..13] FIFO Port Ready */ + __IOM uint16_t BCLR : 1; /*!< [14..14] CPU Buffer ClearNote: Only 0 can be read. */ + __IOM uint16_t BVAL : 1; /*!< [15..15] Buffer Memory Valid Flag */ + } D1FIFOCTR_b; + }; + + union + { + __IOM uint16_t INTENB0; /*!< (@ 0x00000030) Interrupt Enable Register 0 */ + + struct + { + uint16_t : 8; + __IOM uint16_t BRDYE : 1; /*!< [8..8] Buffer Ready Interrupt Enable */ + __IOM uint16_t NRDYE : 1; /*!< [9..9] Buffer Not Ready Response Interrupt Enable */ + __IOM uint16_t BEMPE : 1; /*!< [10..10] Buffer Empty Interrupt Enable */ + __IOM uint16_t CTRE : 1; /*!< [11..11] Control Transfer Stage Transition Interrupt Enable */ + __IOM uint16_t DVSE : 1; /*!< [12..12] Device State Transition Interrupt Enable */ + __IOM uint16_t SOFE : 1; /*!< [13..13] Frame Number Update Interrupt Enable */ + __IOM uint16_t RSME : 1; /*!< [14..14] Resume Interrupt Enable */ + __IOM uint16_t VBSE : 1; /*!< [15..15] VBUS Interrupt Enable */ + } INTENB0_b; + }; + + union + { + __IOM uint16_t INTENB1; /*!< (@ 0x00000032) Interrupt Enable Register 1 */ + + struct + { + __IOM uint16_t PDDETINTE0 : 1; /*!< [0..0] PDDETINT0 Detection Interrupt Enable */ + uint16_t : 3; + __IOM uint16_t SACKE : 1; /*!< [4..4] Setup Transaction Normal Response Interrupt Enable */ + __IOM uint16_t SIGNE : 1; /*!< [5..5] Setup Transaction Error Interrupt Enable */ + __IOM uint16_t EOFERRE : 1; /*!< [6..6] EOF Error Detection Interrupt Enable */ + uint16_t : 4; + __IOM uint16_t ATTCHE : 1; /*!< [11..11] Connection Detection Interrupt Enable */ + __IOM uint16_t DTCHE : 1; /*!< [12..12] Disconnection Detection Interrupt Enable */ + uint16_t : 1; + __IOM uint16_t BCHGE : 1; /*!< [14..14] USB Bus Change Interrupt Enable */ + __IOM uint16_t OVRCRE : 1; /*!< [15..15] Overcurrent Input Change Interrupt Enable */ + } INTENB1_b; + }; + __IM uint16_t RESERVED7; + + union + { + __IOM uint16_t BRDYENB; /*!< (@ 0x00000036) BRDY Interrupt Enable Register */ + + struct + { + __IOM uint16_t PIPE0BRDYE : 1; /*!< [0..0] BRDY Interrupt Enable for PIPE */ + __IOM uint16_t PIPE1BRDYE : 1; /*!< [1..1] BRDY Interrupt Enable for PIPE */ + __IOM uint16_t PIPE2BRDYE : 1; /*!< [2..2] BRDY Interrupt Enable for PIPE */ + __IOM uint16_t PIPE3BRDYE : 1; /*!< [3..3] BRDY Interrupt Enable for PIPE */ + __IOM uint16_t PIPE4BRDYE : 1; /*!< [4..4] BRDY Interrupt Enable for PIPE */ + __IOM uint16_t PIPE5BRDYE : 1; /*!< [5..5] BRDY Interrupt Enable for PIPE */ + __IOM uint16_t PIPE6BRDYE : 1; /*!< [6..6] BRDY Interrupt Enable for PIPE */ + __IOM uint16_t PIPE7BRDYE : 1; /*!< [7..7] BRDY Interrupt Enable for PIPE */ + __IOM uint16_t PIPE8BRDYE : 1; /*!< [8..8] BRDY Interrupt Enable for PIPE */ + __IOM uint16_t PIPE9BRDYE : 1; /*!< [9..9] BRDY Interrupt Enable for PIPE */ + uint16_t : 6; + } BRDYENB_b; + }; + + union + { + __IOM uint16_t NRDYENB; /*!< (@ 0x00000038) NRDY Interrupt Enable Register */ + + struct + { + __IOM uint16_t PIPE0NRDYE : 1; /*!< [0..0] NRDY Interrupt Enable for PIPE */ + __IOM uint16_t PIPE1NRDYE : 1; /*!< [1..1] NRDY Interrupt Enable for PIPE */ + __IOM uint16_t PIPE2NRDYE : 1; /*!< [2..2] NRDY Interrupt Enable for PIPE */ + __IOM uint16_t PIPE3NRDYE : 1; /*!< [3..3] NRDY Interrupt Enable for PIPE */ + __IOM uint16_t PIPE4NRDYE : 1; /*!< [4..4] NRDY Interrupt Enable for PIPE */ + __IOM uint16_t PIPE5NRDYE : 1; /*!< [5..5] NRDY Interrupt Enable for PIPE */ + __IOM uint16_t PIPE6NRDYE : 1; /*!< [6..6] NRDY Interrupt Enable for PIPE */ + __IOM uint16_t PIPE7NRDYE : 1; /*!< [7..7] NRDY Interrupt Enable for PIPE */ + __IOM uint16_t PIPE8NRDYE : 1; /*!< [8..8] NRDY Interrupt Enable for PIPE */ + __IOM uint16_t PIPE9NRDYE : 1; /*!< [9..9] NRDY Interrupt Enable for PIPE */ + uint16_t : 6; + } NRDYENB_b; + }; + + union + { + __IOM uint16_t BEMPENB; /*!< (@ 0x0000003A) BEMP Interrupt Enable Register */ + + struct + { + __IOM uint16_t PIPE0BEMPE : 1; /*!< [0..0] BEMP Interrupt Enable for PIPE */ + __IOM uint16_t PIPE1BEMPE : 1; /*!< [1..1] BEMP Interrupt Enable for PIPE */ + __IOM uint16_t PIPE2BEMPE : 1; /*!< [2..2] BEMP Interrupt Enable for PIPE */ + __IOM uint16_t PIPE3BEMPE : 1; /*!< [3..3] BEMP Interrupt Enable for PIPE */ + __IOM uint16_t PIPE4BEMPE : 1; /*!< [4..4] BEMP Interrupt Enable for PIPE */ + __IOM uint16_t PIPE5BEMPE : 1; /*!< [5..5] BEMP Interrupt Enable for PIPE */ + __IOM uint16_t PIPE6BEMPE : 1; /*!< [6..6] BEMP Interrupt Enable for PIPE */ + __IOM uint16_t PIPE7BEMPE : 1; /*!< [7..7] BEMP Interrupt Enable for PIPE */ + __IOM uint16_t PIPE8BEMPE : 1; /*!< [8..8] BEMP Interrupt Enable for PIPE */ + __IOM uint16_t PIPE9BEMPE : 1; /*!< [9..9] BEMP Interrupt Enable for PIPE */ + uint16_t : 6; + } BEMPENB_b; + }; + + union + { + __IOM uint16_t SOFCFG; /*!< (@ 0x0000003C) SOF Output Configuration Register */ + + struct + { + uint16_t : 4; + __IM uint16_t EDGESTS : 1; /*!< [4..4] Edge Interrupt Output Status Monitor */ + __IOM uint16_t INTL : 1; /*!< [5..5] Interrupt Output Sense Select */ + __IOM uint16_t BRDYM : 1; /*!< [6..6] BRDY Interrupt Status Clear Timing */ + uint16_t : 1; + __IOM uint16_t TRNENSEL : 1; /*!< [8..8] Transaction-Enabled Time Select */ + uint16_t : 7; + } SOFCFG_b; + }; + + union + { + __IOM uint16_t PHYSET; /*!< (@ 0x0000003E) PHY Setting Register */ + + struct + { + __IOM uint16_t DIRPD : 1; /*!< [0..0] Power-Down Control */ + __IOM uint16_t PLLRESET : 1; /*!< [1..1] PLL Reset Control */ + uint16_t : 1; + __IOM uint16_t CDPEN : 1; /*!< [3..3] Charging Downstream Port Enable */ + __IOM uint16_t CLKSEL : 2; /*!< [5..4] Input System Clock Frequency */ + uint16_t : 2; + __IOM uint16_t REPSEL : 2; /*!< [9..8] Terminating Resistance Adjustment Cycle */ + uint16_t : 1; + __IOM uint16_t REPSTART : 1; /*!< [11..11] Forcibly Start Terminating Resistance Adjustment */ + uint16_t : 3; + __IOM uint16_t HSEB : 1; /*!< [15..15] CL-Only Mode */ + } PHYSET_b; + }; + + union + { + __IOM uint16_t INTSTS0; /*!< (@ 0x00000040) Interrupt Status Register 0 */ + + struct + { + __IM uint16_t CTSQ : 3; /*!< [2..0] Control Transfer Stage */ + __IOM uint16_t VALID : 1; /*!< [3..3] USB Request Reception */ + __IM uint16_t DVSQ : 3; /*!< [6..4] Device State */ + __IM uint16_t VBSTS : 1; /*!< [7..7] VBUS Input Status */ + __IM uint16_t BRDY : 1; /*!< [8..8] Buffer Ready Interrupt Status */ + __IM uint16_t NRDY : 1; /*!< [9..9] Buffer Not Ready Interrupt Status */ + __IM uint16_t BEMP : 1; /*!< [10..10] Buffer Empty Interrupt Status */ + __IOM uint16_t CTRT : 1; /*!< [11..11] Control Transfer Stage Transition Interrupt Status */ + __IOM uint16_t DVST : 1; /*!< [12..12] Device State Transition Interrupt Status */ + __IOM uint16_t SOFR : 1; /*!< [13..13] Frame Number Refresh Interrupt Status */ + __IOM uint16_t RESM : 1; /*!< [14..14] Resume Interrupt Status */ + __IOM uint16_t VBINT : 1; /*!< [15..15] VBUS Interrupt Status */ + } INTSTS0_b; + }; + + union + { + __IOM uint16_t INTSTS1; /*!< (@ 0x00000042) Interrupt Status Register 1 */ + + struct + { + __IOM uint16_t PDDETINT0 : 1; /*!< [0..0] PDDET0 Detection Interrupt Status */ + uint16_t : 3; + __IOM uint16_t SACK : 1; /*!< [4..4] Setup Transaction Normal Response Interrupt Status */ + __IOM uint16_t SIGN : 1; /*!< [5..5] Setup Transaction Error Interrupt Status */ + __IOM uint16_t EOFERR : 1; /*!< [6..6] EOF Error Detection Interrupt Status */ + uint16_t : 1; + __IOM uint16_t LPMEND : 1; /*!< [8..8] LPM Transaction End Interrupt Status */ + __IOM uint16_t L1RSMEND : 1; /*!< [9..9] L1 Resume End Interrupt Status */ + uint16_t : 1; + __IOM uint16_t ATTCH : 1; /*!< [11..11] ATTCH Interrupt Status */ + __IOM uint16_t DTCH : 1; /*!< [12..12] USB Disconnection Detection Interrupt Status */ + uint16_t : 1; + __IOM uint16_t BCHG : 1; /*!< [14..14] USB Bus Change Interrupt Status */ + __IOM uint16_t OVRCR : 1; /*!< [15..15] Overcurrent Input Change Interrupt Status */ + } INTSTS1_b; + }; + __IM uint16_t RESERVED8; + + union + { + __IOM uint16_t BRDYSTS; /*!< (@ 0x00000046) BRDY Interrupt Status Register */ + + struct + { + __IOM uint16_t PIPE0BRDY : 1; /*!< [0..0] BRDY Interrupt Status for PIPE */ + __IOM uint16_t PIPE1BRDY : 1; /*!< [1..1] BRDY Interrupt Status for PIPE */ + __IOM uint16_t PIPE2BRDY : 1; /*!< [2..2] BRDY Interrupt Status for PIPE */ + __IOM uint16_t PIPE3BRDY : 1; /*!< [3..3] BRDY Interrupt Status for PIPE */ + __IOM uint16_t PIPE4BRDY : 1; /*!< [4..4] BRDY Interrupt Status for PIPE */ + __IOM uint16_t PIPE5BRDY : 1; /*!< [5..5] BRDY Interrupt Status for PIPE */ + __IOM uint16_t PIPE6BRDY : 1; /*!< [6..6] BRDY Interrupt Status for PIPE */ + __IOM uint16_t PIPE7BRDY : 1; /*!< [7..7] BRDY Interrupt Status for PIPE */ + __IOM uint16_t PIPE8BRDY : 1; /*!< [8..8] BRDY Interrupt Status for PIPE */ + __IOM uint16_t PIPE9BRDY : 1; /*!< [9..9] BRDY Interrupt Status for PIPE */ + uint16_t : 6; + } BRDYSTS_b; + }; + + union + { + __IOM uint16_t NRDYSTS; /*!< (@ 0x00000048) NRDY Interrupt Status Register */ + + struct + { + __IOM uint16_t PIPE0NRDY : 1; /*!< [0..0] NRDY Interrupt Status for PIPE */ + __IOM uint16_t PIPE1NRDY : 1; /*!< [1..1] NRDY Interrupt Status for PIPE */ + __IOM uint16_t PIPE2NRDY : 1; /*!< [2..2] NRDY Interrupt Status for PIPE */ + __IOM uint16_t PIPE3NRDY : 1; /*!< [3..3] NRDY Interrupt Status for PIPE */ + __IOM uint16_t PIPE4NRDY : 1; /*!< [4..4] NRDY Interrupt Status for PIPE */ + __IOM uint16_t PIPE5NRDY : 1; /*!< [5..5] NRDY Interrupt Status for PIPE */ + __IOM uint16_t PIPE6NRDY : 1; /*!< [6..6] NRDY Interrupt Status for PIPE */ + __IOM uint16_t PIPE7NRDY : 1; /*!< [7..7] NRDY Interrupt Status for PIPE */ + __IOM uint16_t PIPE8NRDY : 1; /*!< [8..8] NRDY Interrupt Status for PIPE */ + __IOM uint16_t PIPE9NRDY : 1; /*!< [9..9] NRDY Interrupt Status for PIPE */ + uint16_t : 6; + } NRDYSTS_b; + }; + + union + { + __IOM uint16_t BEMPSTS; /*!< (@ 0x0000004A) BEMP Interrupt Status Register */ + + struct + { + __IOM uint16_t PIPE0BEMP : 1; /*!< [0..0] BEMP Interrupt Status for PIPE */ + __IOM uint16_t PIPE1BEMP : 1; /*!< [1..1] BEMP Interrupt Status for PIPE */ + __IOM uint16_t PIPE2BEMP : 1; /*!< [2..2] BEMP Interrupt Status for PIPE */ + __IOM uint16_t PIPE3BEMP : 1; /*!< [3..3] BEMP Interrupt Status for PIPE */ + __IOM uint16_t PIPE4BEMP : 1; /*!< [4..4] BEMP Interrupt Status for PIPE */ + __IOM uint16_t PIPE5BEMP : 1; /*!< [5..5] BEMP Interrupt Status for PIPE */ + __IOM uint16_t PIPE6BEMP : 1; /*!< [6..6] BEMP Interrupt Status for PIPE */ + __IOM uint16_t PIPE7BEMP : 1; /*!< [7..7] BEMP Interrupt Status for PIPE */ + __IOM uint16_t PIPE8BEMP : 1; /*!< [8..8] BEMP Interrupt Status for PIPE */ + __IOM uint16_t PIPE9BEMP : 1; /*!< [9..9] BEMP Interrupt Status for PIPE */ + uint16_t : 6; + } BEMPSTS_b; + }; + + union + { + __IOM uint16_t FRMNUM; /*!< (@ 0x0000004C) Frame Number Register */ + + struct + { + __IM uint16_t FRNM : 11; /*!< [10..0] Frame NumberLatest frame number */ + uint16_t : 3; + __IOM uint16_t CRCE : 1; /*!< [14..14] Receive Data Error */ + __IOM uint16_t OVRN : 1; /*!< [15..15] Overrun/Underrun Detection Status */ + } FRMNUM_b; + }; + + union + { + __IOM uint16_t UFRMNUM; /*!< (@ 0x0000004E) uFrame Number Register */ + + struct + { + __IM uint16_t UFRNM : 3; /*!< [2..0] MicroframeIndicate the microframe number. */ + uint16_t : 12; + __IOM uint16_t DVCHG : 1; /*!< [15..15] Device State Change */ + } UFRMNUM_b; + }; + + union + { + __IOM uint16_t USBADDR; /*!< (@ 0x00000050) USB Address Register */ + + struct + { + __IM uint16_t USBADDR : 7; /*!< [6..0] USB Address In device controller mode, these flags indicate + * the USB address assigned by the host when the USBHS processed + * the SET_ADDRESS request successfully. */ + uint16_t : 1; + __IOM uint16_t STSRECOV0 : 3; /*!< [10..8] Status Recovery */ + uint16_t : 5; + } USBADDR_b; + }; + __IM uint16_t RESERVED9; + + union + { + __IOM uint16_t USBREQ; /*!< (@ 0x00000054) USB Request Type Register */ + + struct + { + __IOM uint16_t BMREQUESTTYPE : 8; /*!< [7..0] Request TypeThese bits store the USB request bmRequestType + * value. */ + __IOM uint16_t BREQUEST : 8; /*!< [15..8] RequestThese bits store the USB request bRequest value. */ + } USBREQ_b; + }; + + union + { + __IOM uint16_t USBVAL; /*!< (@ 0x00000056) USB Request Value Register */ + + struct + { + __IOM uint16_t WVALUE : 16; /*!< [15..0] ValueThese bits store the USB request Value value. */ + } USBVAL_b; + }; + + union + { + __IOM uint16_t USBINDX; /*!< (@ 0x00000058) USB Request Index Register */ + + struct + { + __IOM uint16_t WINDEX : 16; /*!< [15..0] IndexThese bits store the USB request wIndex value. */ + } USBINDX_b; + }; + + union + { + __IOM uint16_t USBLENG; /*!< (@ 0x0000005A) USB Request Length Register */ + + struct + { + __IOM uint16_t WLENGTH : 16; /*!< [15..0] LengthThese bits store the USB request wLength value. */ + } USBLENG_b; + }; + + union + { + __IOM uint16_t DCPCFG; /*!< (@ 0x0000005C) DCP Configuration Register */ + + struct + { + uint16_t : 4; + __IOM uint16_t DIR : 1; /*!< [4..4] Transfer Direction */ + uint16_t : 2; + __IOM uint16_t SHTNAK : 1; /*!< [7..7] Pipe Disabled at End of Transfer */ + __IOM uint16_t CNTMD : 1; /*!< [8..8] Continuous Transfer Mode */ + uint16_t : 7; + } DCPCFG_b; + }; + + union + { + __IOM uint16_t DCPMAXP; /*!< (@ 0x0000005E) DCP Maximum Packet Size Register */ + + struct + { + __IOM uint16_t MXPS : 7; /*!< [6..0] Maximum Packet SizeThese bits set the maximum amount + * of data (maximum packet size) in payloads for the DCP. */ + uint16_t : 5; + __IOM uint16_t DEVSEL : 4; /*!< [15..12] Device Select */ + } DCPMAXP_b; + }; + + union + { + __IOM uint16_t DCPCTR; /*!< (@ 0x00000060) DCP Control Register */ + + struct + { + __IOM uint16_t PID : 2; /*!< [1..0] Response PID */ + __IOM uint16_t CCPL : 1; /*!< [2..2] Control Transfer End Enable */ + uint16_t : 2; + __IM uint16_t PBUSY : 1; /*!< [5..5] Pipe Busy */ + __IM uint16_t SQMON : 1; /*!< [6..6] Sequence Toggle Bit Monitor */ + __IOM uint16_t SQSET : 1; /*!< [7..7] Sequence Toggle Bit Set */ + __IOM uint16_t SQCLR : 1; /*!< [8..8] Sequence Toggle Bit Clear */ + uint16_t : 2; + __IOM uint16_t SUREQCLR : 1; /*!< [11..11] SUREQ Bit Clear */ + uint16_t : 2; + __IOM uint16_t SUREQ : 1; /*!< [14..14] Setup Token Transmission */ + __IM uint16_t BSTS : 1; /*!< [15..15] Buffer Status */ + } DCPCTR_b; + }; + __IM uint16_t RESERVED10; + + union + { + __IOM uint16_t PIPESEL; /*!< (@ 0x00000064) Pipe Window Select Register */ + + struct + { + __IOM uint16_t PIPESEL : 4; /*!< [3..0] Pipe Window Select */ + uint16_t : 12; + } PIPESEL_b; + }; + __IM uint16_t RESERVED11; + + union + { + __IOM uint16_t PIPECFG; /*!< (@ 0x00000068) Pipe Configuration Register */ + + struct + { + __IOM uint16_t EPNUM : 4; /*!< [3..0] Endpoint NumberThese bits specify the endpoint number + * for the selected pipe.Setting 0000b means unused pipe. */ + __IOM uint16_t DIR : 1; /*!< [4..4] Transfer Direction */ + uint16_t : 2; + __IOM uint16_t SHTNAK : 1; /*!< [7..7] Pipe Disabled at End of Transfer */ + uint16_t : 1; + __IOM uint16_t DBLB : 1; /*!< [9..9] Double Buffer Mode */ + __IOM uint16_t BFRE : 1; /*!< [10..10] BRDY Interrupt Operation Specification */ + uint16_t : 3; + __IOM uint16_t TYPE : 2; /*!< [15..14] Transfer Type */ + } PIPECFG_b; + }; + __IM uint16_t RESERVED12; + + union + { + __IOM uint16_t PIPEMAXP; /*!< (@ 0x0000006C) Pipe Maximum Packet Size Register */ + + struct + { + __IOM uint16_t MXPS : 9; /*!< [8..0] Maximum Packet SizePIPE1 and PIPE2: 1 byte (001h) to + * 256 bytes (100h)PIPE3 to PIPE5: 8 bytes (008h), 16 bytes + * (010h), 32 bytes (020h), 64 bytes (040h) (Bits [8:7] and + * [2:0] are not provided.)PIPE6 to PIPE9: 1 byte (001h) to + * 64 bytes (040h) (Bits [8:7] are not provided.) */ + uint16_t : 3; + __IOM uint16_t DEVSEL : 4; /*!< [15..12] Device Select */ + } PIPEMAXP_b; + }; + + union + { + __IOM uint16_t PIPEPERI; /*!< (@ 0x0000006E) Pipe Cycle Control Register */ + + struct + { + __IOM uint16_t IITV : 3; /*!< [2..0] Interval Error Detection IntervalSpecifies the interval + * error detection timing for the selected pipe in terms of + * frames, which is expressed as nth power of 2. */ + uint16_t : 9; + __IOM uint16_t IFIS : 1; /*!< [12..12] Isochronous IN Buffer Flush */ + uint16_t : 3; + } PIPEPERI_b; + }; + + union + { + __IOM uint16_t PIPE_CTR[9]; /*!< (@ 0x00000070) Pipe [0..8] Control Register */ + + struct + { + __IOM uint16_t PID : 2; /*!< [1..0] Response PID */ + uint16_t : 3; + __IM uint16_t PBUSY : 1; /*!< [5..5] Pipe Busy */ + __IM uint16_t SQMON : 1; /*!< [6..6] Sequence Toggle Bit Confirmation */ + __IOM uint16_t SQSET : 1; /*!< [7..7] Sequence Toggle Bit Set */ + __IOM uint16_t SQCLR : 1; /*!< [8..8] Sequence Toggle Bit Clear */ + __IOM uint16_t ACLRM : 1; /*!< [9..9] Auto Buffer Clear Mode */ + __IOM uint16_t ATREPM : 1; /*!< [10..10] Auto Response Mode */ + uint16_t : 1; + __IM uint16_t CSSTS : 1; /*!< [12..12] CSSTS StatusThis bit indicates the CSPLIT status of + * Split Transaction of the relevant pipe */ + __IOM uint16_t CSCLR : 1; /*!< [13..13] CSPLIT Status ClearSet this bit to 1 when clearing + * the CSSTS bit of the relevant pipe */ + __IM uint16_t INBUFM : 1; /*!< [14..14] Transmit Buffer Monitor */ + __IM uint16_t BSTS : 1; /*!< [15..15] Buffer Status */ + } PIPE_CTR_b[9]; + }; + __IM uint16_t RESERVED13; + __IM uint32_t RESERVED14[3]; + __IOM R_USB_FS0_PIPE_TR_Type PIPE_TR[5]; /*!< (@ 0x00000090) Pipe Transaction Counter Registers */ + __IM uint32_t RESERVED15[3]; + + union + { + __IOM uint16_t USBBCCTRL0; /*!< (@ 0x000000B0) BC Control Register 0 */ + + struct + { + __IOM uint16_t RPDME0 : 1; /*!< [0..0] D- Pin Pull-Down Control */ + __IOM uint16_t IDPSRCE0 : 1; /*!< [1..1] D+ Pin IDPSRC Output Control */ + __IOM uint16_t IDMSINKE0 : 1; /*!< [2..2] D- Pin 0.6 V Input Detection (Comparator and Sink) Control */ + __IOM uint16_t VDPSRCE0 : 1; /*!< [3..3] D+ Pin VDPSRC (0.6 V) Output Control */ + __IOM uint16_t IDPSINKE0 : 1; /*!< [4..4] D+ Pin 0.6 V Input Detection (Comparator and Sink) Control */ + __IOM uint16_t VDMSRCE0 : 1; /*!< [5..5] D- Pin VDMSRC (0.6 V) Output Control */ + uint16_t : 1; + __IOM uint16_t BATCHGE0 : 1; /*!< [7..7] BC (Battery Charger) Function Ch0 General Enable Control */ + __IM uint16_t CHGDETSTS0 : 1; /*!< [8..8] D- Pin 0.6 V Input Detection Status */ + __IM uint16_t PDDETSTS0 : 1; /*!< [9..9] D+ Pin 0.6 V Input Detection Status */ + uint16_t : 6; + } USBBCCTRL0_b; + }; + __IM uint16_t RESERVED16; + __IM uint32_t RESERVED17[4]; + + union + { + __IOM uint16_t UCKSEL; /*!< (@ 0x000000C4) USB Clock Selection Register */ + + struct + { + __IOM uint16_t UCKSELC : 1; /*!< [0..0] USB Clock Selection */ + uint16_t : 15; + } UCKSEL_b; + }; + __IM uint16_t RESERVED18; + __IM uint32_t RESERVED19; + + union + { + __IOM uint16_t USBMC; /*!< (@ 0x000000CC) USB Module Control Register */ + + struct + { + __IOM uint16_t VDDUSBE : 1; /*!< [0..0] USB Reference Power Supply Circuit On/Off Control */ + uint16_t : 6; + __IOM uint16_t VDCEN : 1; /*!< [7..7] USB Regulator On/Off Control */ + uint16_t : 8; + } USBMC_b; + }; + __IM uint16_t RESERVED20; + + union + { + __IOM uint16_t DEVADD[10]; /*!< (@ 0x000000D0) Device Address Configuration Register */ + + struct + { + uint16_t : 6; + __IOM uint16_t USBSPD : 2; /*!< [7..6] Transfer Speed of Communication Target Device */ + __IOM uint16_t HUBPORT : 3; /*!< [10..8] Communication Target Connecting Hub Port */ + __IOM uint16_t UPPHUB : 4; /*!< [14..11] Communication Target Connecting Hub Register */ + uint16_t : 1; + } DEVADD_b[10]; + }; + __IM uint32_t RESERVED21[3]; + + union + { + __IOM uint32_t PHYSLEW; /*!< (@ 0x000000F0) PHY Cross Point Adjustment Register */ + + struct + { + __IOM uint32_t SLEWR00 : 1; /*!< [0..0] Receiver Cross Point Adjustment 00 */ + __IOM uint32_t SLEWR01 : 1; /*!< [1..1] Receiver Cross Point Adjustment 01 */ + __IOM uint32_t SLEWF00 : 1; /*!< [2..2] Receiver Cross Point Adjustment 00 */ + __IOM uint32_t SLEWF01 : 1; /*!< [3..3] Receiver Cross Point Adjustment 01 */ + uint32_t : 28; + } PHYSLEW_b; + }; + __IM uint32_t RESERVED22[3]; + + union + { + __IOM uint16_t LPCTRL; /*!< (@ 0x00000100) Low Power Control Register */ + + struct + { + uint16_t : 7; + __IOM uint16_t HWUPM : 1; /*!< [7..7] Resume Return Mode Setting */ + uint16_t : 8; + } LPCTRL_b; + }; + + union + { + __IOM uint16_t LPSTS; /*!< (@ 0x00000102) Low Power Status Register */ + + struct + { + uint16_t : 14; + __IOM uint16_t SUSPENDM : 1; /*!< [14..14] UTMI SuspendM Control */ + uint16_t : 1; + } LPSTS_b; + }; + __IM uint32_t RESERVED23[15]; + + union + { + __IOM uint16_t BCCTRL; /*!< (@ 0x00000140) Battery Charging Control Register */ + + struct + { + __IOM uint16_t IDPSRCE : 1; /*!< [0..0] IDPSRC Control */ + __IOM uint16_t IDMSINKE : 1; /*!< [1..1] IDMSINK Control */ + __IOM uint16_t VDPSRCE : 1; /*!< [2..2] VDPSRC Control */ + __IOM uint16_t IDPSINKE : 1; /*!< [3..3] IDPSINK Control */ + __IOM uint16_t VDMSRCE : 1; /*!< [4..4] VDMSRC Control */ + __IOM uint16_t DCPMODE : 1; /*!< [5..5] DCP Mode Control */ + uint16_t : 2; + __IM uint16_t CHGDETSTS : 1; /*!< [8..8] CHGDET Status */ + __IM uint16_t PDDETSTS : 1; /*!< [9..9] PDDET Status */ + uint16_t : 6; + } BCCTRL_b; + }; + __IM uint16_t RESERVED24; + + union + { + __IOM uint16_t PL1CTRL1; /*!< (@ 0x00000144) Function L1 Control Register 1 */ + + struct + { + __IOM uint16_t L1RESPEN : 1; /*!< [0..0] L1 Response Enable */ + __IOM uint16_t L1RESPMD : 2; /*!< [2..1] L1 Response Mode */ + __IOM uint16_t L1NEGOMD : 1; /*!< [3..3] L1 Response Negotiation Control.NOTE: This bit is valid + * only when the L1RESPMD[1:0] value is 2'b11. */ + __IM uint16_t DVSQ : 4; /*!< [7..4] DVSQ Extension.DVSQ[3] is Mirror of DVSQ[2:0] in INTSTS0.Indicates + * the L1 state together with the device state bits DVSQ[2:0]. */ + __IOM uint16_t HIRDTHR : 4; /*!< [11..8] L1 Response Negotiation Threshold ValueHIRD threshold + * value used for L1NEGOMD.The format is the same as the HIRD + * field in HL1CTRL. */ + uint16_t : 2; + __IOM uint16_t L1EXTMD : 1; /*!< [14..14] PHY Control Mode at L1 Return */ + uint16_t : 1; + } PL1CTRL1_b; + }; + + union + { + __IOM uint16_t PL1CTRL2; /*!< (@ 0x00000146) Function L1 Control Register 2 */ + + struct + { + uint16_t : 8; + __IOM uint16_t HIRDMON : 4; /*!< [11..8] HIRD Value Monitor */ + __IOM uint16_t RWEMON : 1; /*!< [12..12] RWE Value Monitor */ + uint16_t : 3; + } PL1CTRL2_b; + }; + + union + { + __IOM uint16_t HL1CTRL1; /*!< (@ 0x00000148) Host L1 Control Register 1 */ + + struct + { + __IOM uint16_t L1REQ : 1; /*!< [0..0] L1 Transition Request */ + __IM uint16_t L1STATUS : 2; /*!< [2..1] L1 Request Completion Status */ + uint16_t : 13; + } HL1CTRL1_b; + }; + + union + { + __IOM uint16_t HL1CTRL2; /*!< (@ 0x0000014A) Host L1 Control Register 2 */ + + struct + { + __IOM uint16_t L1ADDR : 4; /*!< [3..0] LPM Token DeviceAddressThese bits specify the value to + * be set in the ADDR field of LPM token. */ + uint16_t : 4; + __IOM uint16_t HIRD : 4; /*!< [11..8] LPM Token HIRD */ + __IOM uint16_t L1RWE : 1; /*!< [12..12] LPM Token L1 RemoteWake EnableThese bits specify the + * value to be set in the RWE field of LPM token. */ + uint16_t : 2; + __IOM uint16_t BESL : 1; /*!< [15..15] BESL & Alternate HIRDThis bit selects the K-State drive + * period at the time of L1 Resume. */ + } HL1CTRL2_b; + }; + __IM uint32_t RESERVED25[5]; + + union + { + __IM uint32_t DPUSR0R; /*!< (@ 0x00000160) Deep Standby USB Transceiver Control/Pin Monitor + * Register */ + + struct + { + uint32_t : 20; + __IM uint32_t DOVCAHM : 1; /*!< [20..20] OVRCURA InputIndicates OVRCURA input signal on the + * HS side of USB port. */ + __IM uint32_t DOVCBHM : 1; /*!< [21..21] OVRCURB InputIndicates OVRCURB input signal on the + * HS side of USB port. */ + uint32_t : 1; + __IM uint32_t DVBSTSHM : 1; /*!< [23..23] VBUS InputIndicates VBUS input signal on the HS side + * of USB port. */ + uint32_t : 8; + } DPUSR0R_b; + }; + + union + { + __IOM uint32_t DPUSR1R; /*!< (@ 0x00000164) Deep Standby USB Suspend/Resume Interrupt Register */ + + struct + { + uint32_t : 4; + __IOM uint32_t DOVCAHE : 1; /*!< [4..4] OVRCURA Interrupt Enable Clear */ + __IOM uint32_t DOVCBHE : 1; /*!< [5..5] OVRCURB Interrupt Enable Clear */ + uint32_t : 1; + __IOM uint32_t DVBSTSHE : 1; /*!< [7..7] VBUS Interrupt Enable/Clear */ + uint32_t : 12; + __IM uint32_t DOVCAH : 1; /*!< [20..20] Indication of Return from OVRCURA Interrupt Source */ + __IM uint32_t DOVCBH : 1; /*!< [21..21] Indication of Return from OVRCURB Interrupt Source */ + uint32_t : 1; + __IM uint32_t DVBSTSH : 1; /*!< [23..23] Indication of Return from VBUS Interrupt Source */ + uint32_t : 8; + } DPUSR1R_b; + }; + + union + { + __IOM uint16_t DPUSR2R; /*!< (@ 0x00000168) Deep Standby USB Suspend/Resume Interrupt Register */ + + struct + { + __IM uint16_t DPINT : 1; /*!< [0..0] Indication of Return from DP Interrupt Source */ + __IM uint16_t DMINT : 1; /*!< [1..1] Indication of Return from DM Interrupt Source */ + uint16_t : 2; + __IM uint16_t DPVAL : 1; /*!< [4..4] DP InputIndicates DP input signal on the HS side of USB + * port. */ + __IM uint16_t DMVAL : 1; /*!< [5..5] DM InputIndicates DM input signal on the HS side of USB + * port. */ + uint16_t : 2; + __IOM uint16_t DPINTE : 1; /*!< [8..8] DP Interrupt Enable Clear */ + __IOM uint16_t DMINTE : 1; /*!< [9..9] DM Interrupt Enable Clear */ + uint16_t : 6; + } DPUSR2R_b; + }; + + union + { + __IOM uint16_t DPUSRCR; /*!< (@ 0x0000016A) Deep Standby USB Suspend/Resume Command Register */ + + struct + { + __IOM uint16_t FIXPHY : 1; /*!< [0..0] USB Transceiver Control Fix */ + __IOM uint16_t FIXPHYPD : 1; /*!< [1..1] USB Transceiver Control Fix for PLL */ + uint16_t : 14; + } DPUSRCR_b; + }; + __IM uint32_t RESERVED26[165]; + + union + { + __IOM uint32_t DPUSR0R_FS; /*!< (@ 0x00000400) Deep Software Standby USB Transceiver Control/Pin + * Monitor Register */ + + struct + { + __IOM uint32_t SRPC0 : 1; /*!< [0..0] USB Single End Receiver Control */ + __IOM uint32_t RPUE0 : 1; /*!< [1..1] DP Pull-Up Resistor Control */ + uint32_t : 1; + __IOM uint32_t DRPD0 : 1; /*!< [3..3] D+/D- Pull-Down Resistor Control */ + __IOM uint32_t FIXPHY0 : 1; /*!< [4..4] USB Transceiver Output Fix */ + uint32_t : 11; + __IM uint32_t DP0 : 1; /*!< [16..16] USB0 D+ InputIndicates the D+ input signal of the USB. */ + __IM uint32_t DM0 : 1; /*!< [17..17] USB D-InputIndicates the D- input signal of the USB. */ + uint32_t : 2; + __IM uint32_t DOVCA0 : 1; /*!< [20..20] USB OVRCURA InputIndicates the OVRCURA input signal + * of the USB. */ + __IM uint32_t DOVCB0 : 1; /*!< [21..21] USB OVRCURB InputIndicates the OVRCURB input signal + * of the USB. */ + uint32_t : 1; + __IM uint32_t DVBSTS0 : 1; /*!< [23..23] USB VBUS InputIndicates the VBUS input signal of the + * USB. */ + uint32_t : 8; + } DPUSR0R_FS_b; + }; + + union + { + __IOM uint32_t DPUSR1R_FS; /*!< (@ 0x00000404) Deep Software Standby USB Suspend/Resume Interrupt + * Register */ + + struct + { + __IOM uint32_t DPINTE0 : 1; /*!< [0..0] USB DP Interrupt Enable/Clear */ + __IOM uint32_t DMINTE0 : 1; /*!< [1..1] USB DM Interrupt Enable/Clear */ + uint32_t : 2; + __IOM uint32_t DOVRCRAE0 : 1; /*!< [4..4] USB OVRCURA Interrupt Enable/Clear */ + __IOM uint32_t DOVRCRBE0 : 1; /*!< [5..5] USB OVRCURB Interrupt Enable/Clear */ + uint32_t : 1; + __IOM uint32_t DVBSE0 : 1; /*!< [7..7] USB VBUS Interrupt Enable/Clear */ + uint32_t : 8; + __IM uint32_t DPINT0 : 1; /*!< [16..16] USB DP Interrupt Source Recovery */ + __IM uint32_t DMINT0 : 1; /*!< [17..17] USB DM Interrupt Source Recovery */ + uint32_t : 2; + __IM uint32_t DOVRCRA0 : 1; /*!< [20..20] USB OVRCURA Interrupt Source Recovery */ + __IM uint32_t DOVRCRB0 : 1; /*!< [21..21] USB OVRCURB Interrupt Source Recovery */ + uint32_t : 1; + __IM uint32_t DVBINT0 : 1; /*!< [23..23] USB VBUS Interrupt Source Recovery */ + uint32_t : 8; + } DPUSR1R_FS_b; + }; +} R_USB_FS0_Type; /*!< Size = 1032 (0x408) */ + +/* =========================================================================================================================== */ +/* ================ R_WDT ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Watchdog Timer (R_WDT) + */ + +typedef struct /*!< (@ 0x40202600) R_WDT Structure */ +{ + union + { + __IOM uint8_t WDTRR; /*!< (@ 0x00000000) WDT Refresh Register */ + + struct + { + __IOM uint8_t WDTRR : 8; /*!< [7..0] WDTRR is an 8-bit register that refreshes the down-counter + * of the WDT. */ + } WDTRR_b; + }; + __IM uint8_t RESERVED; + + union + { + __IOM uint16_t WDTCR; /*!< (@ 0x00000002) WDT Control Register */ + + struct + { + __IOM uint16_t TOPS : 2; /*!< [1..0] Timeout Period Selection */ + uint16_t : 2; + __IOM uint16_t CKS : 4; /*!< [7..4] Clock Division Ratio Selection */ + __IOM uint16_t RPES : 2; /*!< [9..8] Window End Position Selection */ + uint16_t : 2; + __IOM uint16_t RPSS : 2; /*!< [13..12] Window Start Position Selection */ + uint16_t : 2; + } WDTCR_b; + }; + + union + { + __IOM uint16_t WDTSR; /*!< (@ 0x00000004) WDT Status Register */ + + struct + { + __IM uint16_t CNTVAL : 14; /*!< [13..0] Down-Counter Value */ + __IOM uint16_t UNDFF : 1; /*!< [14..14] Underflow Flag */ + __IOM uint16_t REFEF : 1; /*!< [15..15] Refresh Error Flag */ + } WDTSR_b; + }; + + union + { + __IOM uint8_t WDTRCR; /*!< (@ 0x00000006) WDT Reset Control Register */ + + struct + { + uint8_t : 7; + __IOM uint8_t RSTIRQS : 1; /*!< [7..7] Reset Interrupt Request Selection */ + } WDTRCR_b; + }; + __IM uint8_t RESERVED1; + + union + { + __IOM uint8_t WDTCSTPR; /*!< (@ 0x00000008) WDT Count Stop Control Register */ + + struct + { + uint8_t : 7; + __IOM uint8_t SLCSTP : 1; /*!< [7..7] Sleep-Mode Count Stop Control */ + } WDTCSTPR_b; + }; + __IM uint8_t RESERVED2; + __IM uint16_t RESERVED3; +} R_WDT_Type; /*!< Size = 12 (0xc) */ + +/* =========================================================================================================================== */ +/* ================ R_TZF ================ */ +/* =========================================================================================================================== */ + +/** + * @brief TrustZone Filter (R_TZF) + */ + +typedef struct /*!< (@ 0x40004000) R_TZF Structure */ +{ + __IM uint16_t RESERVED[8]; + + union + { + __IOM uint16_t TZFOAD; /*!< (@ 0x00000010) TrustZone Filter Operation After Detection register */ + + struct + { + __IOM uint16_t OAD : 1; /*!< [0..0] Operation after detection */ + uint16_t : 7; + __OM uint16_t KEY : 8; /*!< [15..8] Key Code */ + } TZFOAD_b; + }; + __IM uint16_t RESERVED1; + + union + { + __IOM uint16_t TZFPT; /*!< (@ 0x00000014) TrustZone Filter Protect register */ + + struct + { + __IOM uint16_t PROTECT : 1; /*!< [0..0] Protection of register */ + uint16_t : 7; + __OM uint16_t KEY : 8; /*!< [15..8] Key Code */ + } TZFPT_b; + }; +} R_TZF_Type; /*!< Size = 22 (0x16) */ + +/* =========================================================================================================================== */ +/* ================ R_CPSCU ================ */ +/* =========================================================================================================================== */ + +/** + * @brief CPU System Security Control Unit (R_CPSCU) + */ + +typedef struct /*!< (@ 0x40008000) R_CPSCU Structure */ +{ + union + { + __IOM uint32_t CSAR; /*!< (@ 0x00000000) Cache Security Attribution Register */ + + struct + { + __IOM uint32_t CACHESA : 1; /*!< [0..0] Security Attributes of Registers for Cache Control */ + __IOM uint32_t CACHELSA : 1; /*!< [1..1] Security Attributes of Registers for Cache Line Configuration */ + __IOM uint32_t CACHEESA : 1; /*!< [2..2] Security Attributes of Registers for Cache Error */ + uint32_t : 29; + } CSAR_b; + }; + __IM uint32_t RESERVED[3]; + + union + { + __IOM uint32_t SRAMSAR; /*!< (@ 0x00000010) SRAM Security Attribution Register */ + + struct + { + __IOM uint32_t SRAMSA0 : 1; /*!< [0..0] Security attributes of registers for SRAM Protection */ + __IOM uint32_t SRAMSA1 : 1; /*!< [1..1] Security attributes of registers for SRAM Protection + * 2 */ + __IOM uint32_t SRAMSA2 : 1; /*!< [2..2] Security attributes of registers for ECC Relation */ + uint32_t : 29; + } SRAMSAR_b; + }; + + union + { + __IOM uint32_t STBRAMSAR; /*!< (@ 0x00000014) Standby RAM memory Security Attribution Register */ + + struct + { + __IOM uint32_t NSBSTBR : 4; /*!< [3..0] Security attributes of each region for Standby RAM */ + uint32_t : 28; + } STBRAMSAR_b; + }; + __IM uint32_t RESERVED1[6]; + + union + { + __IOM uint32_t DTCSAR; /*!< (@ 0x00000030) DTC Controller Security Attribution Register */ + + struct + { + __IOM uint32_t DTCSTSA : 1; /*!< [0..0] DTC Security Attribution */ + uint32_t : 31; + } DTCSAR_b; + }; + + union + { + __IOM uint32_t DMACSAR; /*!< (@ 0x00000034) DMAC Controller Security Attribution Register */ + + struct + { + __IOM uint32_t DMASTSA : 1; /*!< [0..0] DMAST Security Attribution */ + uint32_t : 31; + } DMACSAR_b; + }; + __IM uint32_t RESERVED2[2]; + + union + { + __IOM uint32_t ICUSARA; /*!< (@ 0x00000040) ICU Security Attribution Register A */ + + struct + { + __IOM uint32_t SAIRQCRn : 16; /*!< [15..0] Security Attributes of registers for the IRQCRn registers */ + uint32_t : 16; + } ICUSARA_b; + }; + + union + { + __IOM uint32_t ICUSARB; /*!< (@ 0x00000044) ICU Security Attribution Register B */ + + struct + { + __IOM uint32_t SANMI : 1; /*!< [0..0] Security Attributes of nonmaskable interrupt */ + uint32_t : 31; + } ICUSARB_b; + }; + + union + { + __IOM uint32_t ICUSARC; /*!< (@ 0x00000048) ICU Security Attribution Register C */ + + struct + { + __IOM uint32_t SADMACn : 8; /*!< [7..0] Security Attributes of registers for DMAC channel */ + uint32_t : 24; + } ICUSARC_b; + }; + + union + { + __IOM uint32_t ICUSARD; /*!< (@ 0x0000004C) ICU Security Attribution Register D */ + + struct + { + __IOM uint32_t SASELSR0 : 1; /*!< [0..0] Security Attributes of registers for SELSR0 */ + uint32_t : 31; + } ICUSARD_b; + }; + + union + { + __IOM uint32_t ICUSARE; /*!< (@ 0x00000050) ICU Security Attribution Register E */ + + struct + { + uint32_t : 16; + __IOM uint32_t SAIWDTWUP : 1; /*!< [16..16] Security Attributes of registers for WUPEN0.b 16 */ + uint32_t : 1; + __IOM uint32_t SALVD1WUP : 1; /*!< [18..18] Security Attributes of registers for WUPEN0.b 18 */ + __IOM uint32_t SALVD2WUP : 1; /*!< [19..19] Security Attributes of registers for WUPEN0.b 19 */ + __IOM uint32_t SAVBATTWUP : 1; /*!< [20..20] Security Attributes of registers for WUPEN0.b 20 */ + uint32_t : 3; + __IOM uint32_t SARTCALMWUP : 1; /*!< [24..24] Security Attributes of registers for WUPEN0.b 24 */ + __IOM uint32_t SARTCPRDWUP : 1; /*!< [25..25] Security Attributes of registers for WUPEN0.b 25 */ + uint32_t : 1; + __IOM uint32_t SAUSBFS0WUP : 1; /*!< [27..27] Security Attributes of registers for WUPEN0.b 27 */ + __IOM uint32_t SAAGT1UDWUP : 1; /*!< [28..28] Security Attributes of registers for WUPEN0.b 28 */ + __IOM uint32_t SAAGT1CAWUP : 1; /*!< [29..29] Security Attributes of registers for WUPEN0.b 29 */ + __IOM uint32_t SAAGT1CBWUP : 1; /*!< [30..30] Security Attributes of registers for WUPEN0.b 30 */ + __IOM uint32_t SAIIC0WUP : 1; /*!< [31..31] Security Attributes of registers for WUPEN0.b 31 */ + } ICUSARE_b; + }; + + union + { + __IOM uint32_t ICUSARF; /*!< (@ 0x00000054) ICU Security Attribution Register F */ + + struct + { + __IOM uint32_t SAAGT3UDWUP : 1; /*!< [0..0] Security Attributes of registers for WUPEN1.b 0 */ + __IOM uint32_t SAAGT3CAWUP : 1; /*!< [1..1] Security Attributes of registers for WUPEN1.b 1 */ + __IOM uint32_t SAAGT3CBWUP : 1; /*!< [2..2] Security Attributes of registers for WUPEN1.b 2 */ + __IOM uint32_t SACOMPHS0WUP : 1; /*!< [3..3] Security attributes of registers for WUPEN1.b 3 */ + uint32_t : 4; + __IOM uint32_t SAULP0UWUP : 1; /*!< [8..8] Security attributes of registers for WUPEN1.b 8 */ + __IOM uint32_t SAULP0AWUP : 1; /*!< [9..9] Security attributes of registers for WUPEN1.b 9 */ + __IOM uint32_t SAULP0BWUP : 1; /*!< [10..10] Security Attributes of registers for WUPEN1.b 10 */ + __IOM uint32_t SAI3CWUP : 1; /*!< [11..11] Security Attributes of registers for WUPEN1.b 11 */ + __IOM uint32_t SAULP1UWUP : 1; /*!< [12..12] Security Attributes of registers for WUPEN1.b 12 */ + __IOM uint32_t SAULP1AWUP : 1; /*!< [13..13] Security Attributes of registers for WUPEN1.b 13 */ + __IOM uint32_t SAULP1BWUP : 1; /*!< [14..14] Security Attributes of registers for WUPEN1.b 14 */ + uint32_t : 17; + } ICUSARF_b; + }; + __IM uint32_t RESERVED3[6]; + + union + { + __IOM uint32_t ICUSARG; /*!< (@ 0x00000070) ICU Security Attribution Register G */ + + struct + { + __IOM uint32_t SAIELSRn : 32; /*!< [31..0] Security Attributes of registers for IELSR31 to IELSR0 */ + } ICUSARG_b; + }; + + union + { + __IOM uint32_t ICUSARH; /*!< (@ 0x00000074) ICU Security Attribution Register H */ + + struct + { + __IOM uint32_t SAIELSRn : 32; /*!< [31..0] Security Attributes of registers for IELSR63 to IELSR32 */ + } ICUSARH_b; + }; + + union + { + __IOM uint32_t ICUSARI; /*!< (@ 0x00000078) ICU Security Attribution Register I */ + + struct + { + __IOM uint32_t SAIELSRn : 32; /*!< [31..0] Security Attributes of registers for IELSR95 to IELSR64 */ + } ICUSARI_b; + }; + __IM uint32_t RESERVED4[33]; + + union + { + __IOM uint32_t BUSSARA; /*!< (@ 0x00000100) Bus Security Attribution Register A */ + + struct + { + __IOM uint32_t BUSSA0 : 1; /*!< [0..0] BUS Security Attribution A0 */ + uint32_t : 31; + } BUSSARA_b; + }; + + union + { + __IOM uint32_t BUSSARB; /*!< (@ 0x00000104) Bus Security Attribution Register B */ + + struct + { + __IOM uint32_t BUSSB0 : 1; /*!< [0..0] BUS Security Attribution B0 */ + uint32_t : 31; + } BUSSARB_b; + }; + __IM uint32_t RESERVED5[10]; + + union + { + __IOM uint32_t MMPUSARA; /*!< (@ 0x00000130) Master Memory Protection Unit Security Attribution + * Register A */ + + struct + { + __IOM uint32_t MMPUAnSA : 8; /*!< [7..0] MMPUAn Security Attribution (n = 0 to 7) */ + uint32_t : 24; + } MMPUSARA_b; + }; + + union + { + __IOM uint32_t MMPUSARB; /*!< (@ 0x00000134) Master Memory Protection Unit Security Attribution + * Register B */ + + struct + { + __IOM uint32_t MMPUB0SA : 1; /*!< [0..0] MMPUB0 Security Attribution */ + uint32_t : 31; + } MMPUSARB_b; + }; + __IM uint32_t RESERVED6[26]; + + union + { + __IOM uint32_t DMACCHSAR; /*!< (@ 0x000001A0) DMA channel Security Attribution Register */ + + struct + { + __IOM uint32_t DMACCHSARn : 8; /*!< [7..0] Security attributes of output and registers for DMAC + * channel */ + uint32_t : 24; + } DMACCHSAR_b; + }; + __IM uint32_t RESERVED7[3]; + + union + { + __IOM uint32_t CPUDSAR; /*!< (@ 0x000001B0) CPU Debug Security Attribution Register */ + + struct + { + __IOM uint32_t CPUDSA0 : 1; /*!< [0..0] CPU Debug Security Attribution 0 */ + uint32_t : 31; + } CPUDSAR_b; + }; + __IM uint32_t RESERVED8[147]; + + union + { + __IOM uint32_t SRAMSABAR0; /*!< (@ 0x00000400) SRAM Security Attribute Boundary Address Register + * 0 */ + + struct + { + uint32_t : 13; + __IOM uint32_t SRAMSABAR : 8; /*!< [20..13] Boundary address between secure and non-secure (Start + * address of non-secure region). */ + uint32_t : 11; + } SRAMSABAR0_b; + }; + + union + { + __IOM uint32_t SRAMSABAR1; /*!< (@ 0x00000404) SRAM Security Attribute Boundary Address Register + * 1 */ + + struct + { + uint32_t : 13; + __IOM uint32_t SRAMSABAR : 8; /*!< [20..13] Boundary address between secure and non-secure (Start + * address of non-secure region). */ + uint32_t : 11; + } SRAMSABAR1_b; + }; + __IM uint32_t RESERVED9[126]; + + union + { + __IOM uint32_t TEVTRCR; /*!< (@ 0x00000600) Trusted Event Route Control Register */ + + struct + { + __IOM uint32_t TEVTE : 1; /*!< [0..0] Trusted Event Route Control Register for IELSRn, DELSRn + * and ELCSRn */ + uint32_t : 31; + } TEVTRCR_b; + }; +} R_CPSCU_Type; /*!< Size = 1540 (0x604) */ + +/* =========================================================================================================================== */ +/* ================ R_DOC_B ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Data Operation Circuit (R_DOC_B) + */ + +typedef struct /*!< (@ 0x40311000) R_DOC_B Structure */ +{ + union + { + __IOM uint8_t DOCR; /*!< (@ 0x00000000) DOC Control Register */ + + struct + { + __IOM uint8_t OMS : 2; /*!< [1..0] Operating Mode Select */ + uint8_t : 1; + __IOM uint8_t DOBW : 1; /*!< [3..3] Data Operation Bit Width Select */ + __IOM uint8_t DCSEL : 3; /*!< [6..4] Detection Condition Select */ + uint8_t : 1; + } DOCR_b; + }; + __IM uint8_t RESERVED; + __IM uint16_t RESERVED1; + + union + { + __IOM uint8_t DOSR; /*!< (@ 0x00000004) DOC Flag Status Register */ + + struct + { + __IM uint8_t DOPCF : 1; /*!< [0..0] Data Operation Circuit Flag */ + uint8_t : 7; + } DOSR_b; + }; + __IM uint8_t RESERVED2; + __IM uint16_t RESERVED3; + + union + { + __IOM uint8_t DOSCR; /*!< (@ 0x00000008) DOC Flag Status Clear Register */ + + struct + { + __OM uint8_t DOPCFCL : 1; /*!< [0..0] DOPCF Clear */ + uint8_t : 7; + } DOSCR_b; + }; + __IM uint8_t RESERVED4; + __IM uint16_t RESERVED5; + __IOM uint32_t DODIR; /*!< (@ 0x0000000C) DOC Data Input Register */ + __IOM uint32_t DODSR0; /*!< (@ 0x00000010) DOC Data Setting Register 0 */ + __IOM uint32_t DODSR1; /*!< (@ 0x00000014) DOC Data Setting Register 1 */ +} R_DOC_B_Type; /*!< Size = 24 (0x18) */ + +/* =========================================================================================================================== */ +/* ================ R_SCI_B0 ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Serial Communication Interface 0 (R_SCI_B0) + */ + +typedef struct /*!< (@ 0x40358000) R_SCI_B0 Structure */ +{ + union + { + union + { + __IM uint32_t RDR; /*!< (@ 0x00000000) Receive Data Register */ + + struct + { + __IM uint32_t RDAT : 9; /*!< [8..0] Serial receive data */ + __IM uint32_t MPB : 1; /*!< [9..9] Multi-processor flag */ + __IM uint32_t DR : 1; /*!< [10..10] Receive data ready flag */ + __IM uint32_t FPER : 1; /*!< [11..11] FIFO parity error flag */ + __IM uint32_t FFER : 1; /*!< [12..12] FIFO framing error flag */ + uint32_t : 11; + __IM uint32_t ORER : 1; /*!< [24..24] Overrun Error flag */ + uint32_t : 2; + __IM uint32_t PER : 1; /*!< [27..27] Parity error flag */ + __IM uint32_t FER : 1; /*!< [28..28] Framing error flag */ + uint32_t : 3; + } RDR_b; + }; + + union + { + __IOM uint8_t RDR_BY; /*!< (@ 0x00000000) Receive Data Register (byte access) */ + + struct + { + __IOM uint8_t RDAT : 8; /*!< [7..0] Serial receive data */ + } RDR_BY_b; + }; + }; + + union + { + union + { + __IOM uint32_t TDR; /*!< (@ 0x00000004) Transmit Data Register */ + + struct + { + __IOM uint32_t TDAT : 9; /*!< [8..0] Serial transmit data */ + __IOM uint32_t MPBT : 1; /*!< [9..9] Multi-processor transfer bit flag */ + uint32_t : 2; + __IOM uint32_t TSYNC : 1; /*!< [12..12] Transmit SYNC data */ + uint32_t : 19; + } TDR_b; + }; + + union + { + __IOM uint8_t TDR_BY; /*!< (@ 0x00000004) Transmit Data Register (byte access) */ + + struct + { + __IOM uint8_t TDAT : 8; /*!< [7..0] Serial transmit data */ + } TDR_BY_b; + }; + }; + + union + { + __IOM uint32_t CCR0; /*!< (@ 0x00000008) Common Control Register 0 */ + + struct + { + __IOM uint32_t RE : 1; /*!< [0..0] Receive Enable */ + uint32_t : 3; + __IOM uint32_t TE : 1; /*!< [4..4] Transmit Enable */ + uint32_t : 3; + __IOM uint32_t MPIE : 1; /*!< [8..8] Multi-Processor Interrupt Enable */ + __IOM uint32_t DCME : 1; /*!< [9..9] Data Compare Match Enable */ + __IOM uint32_t IDSEL : 1; /*!< [10..10] ID frame select */ + uint32_t : 5; + __IOM uint32_t RIE : 1; /*!< [16..16] Receive Interrupt Enable */ + uint32_t : 3; + __IOM uint32_t TIE : 1; /*!< [20..20] Transmit Interrupt Enable */ + __IOM uint32_t TEIE : 1; /*!< [21..21] Transmit End Interrupt Enable */ + uint32_t : 2; + __IOM uint32_t SSE : 1; /*!< [24..24] SSn Pin Function Enable */ + uint32_t : 7; + } CCR0_b; + }; + + union + { + __IOM uint32_t CCR1; /*!< (@ 0x0000000C) Common Control Register 1 */ + + struct + { + __IOM uint32_t CTSE : 1; /*!< [0..0] CTS Enable */ + __IOM uint32_t CTSPEN : 1; /*!< [1..1] CTS external pin Enable */ + uint32_t : 2; + __IOM uint32_t SPB2DT : 1; /*!< [4..4] Serial port break data select */ + __IOM uint32_t SPB2IO : 1; /*!< [5..5] Serial port break I/O */ + uint32_t : 2; + __IOM uint32_t PE : 1; /*!< [8..8] Parity Enable */ + __IOM uint32_t PM : 1; /*!< [9..9] Parity Mode */ + uint32_t : 2; + __IOM uint32_t TINV : 1; /*!< [12..12] TXD invert */ + __IOM uint32_t RINV : 1; /*!< [13..13] RXD invert */ + uint32_t : 2; + __IOM uint32_t SPLP : 1; /*!< [16..16] Loopback Control */ + uint32_t : 3; + __IOM uint32_t SHARPS : 1; /*!< [20..20] Half-duplex communication select */ + uint32_t : 3; + __IOM uint32_t NFCS : 3; /*!< [26..24] Noise Filter Clock Select */ + uint32_t : 1; + __IOM uint32_t NFEN : 1; /*!< [28..28] Digital Noise Filter Function Enable */ + uint32_t : 3; + } CCR1_b; + }; + + union + { + __IOM uint32_t CCR2; /*!< (@ 0x00000010) Common Control Register 2 */ + + struct + { + __IOM uint32_t BCP : 3; /*!< [2..0] Base Clock Pulse */ + uint32_t : 1; + __IOM uint32_t BGDM : 1; /*!< [4..4] Baud Rate Generator Double-Speed Mode Select */ + __IOM uint32_t ABCS : 1; /*!< [5..5] Asynchronous Mode Base Clock Select */ + __IOM uint32_t ABCSE : 1; /*!< [6..6] Asynchronous Mode Extended Base Clock Select */ + uint32_t : 1; + __IOM uint32_t BRR : 8; /*!< [15..8] Bit rate setting */ + __IOM uint32_t BRME : 1; /*!< [16..16] Bit Modulation Enable */ + uint32_t : 3; + __IOM uint32_t CKS : 2; /*!< [21..20] Clock Select */ + uint32_t : 2; + __IOM uint32_t MDDR : 8; /*!< [31..24] Modulation Duty Setting */ + } CCR2_b; + }; + + union + { + __IOM uint32_t CCR3; /*!< (@ 0x00000014) Common Control Register 3 */ + + struct + { + __IOM uint32_t CPHA : 1; /*!< [0..0] Clock Phase Select */ + __IOM uint32_t CPOL : 1; /*!< [1..1] Clock Polarity Select */ + uint32_t : 5; + __IOM uint32_t BPEN : 1; /*!< [7..7] Synchronizer bypass enable */ + __IOM uint32_t CHR : 2; /*!< [9..8] Character Length */ + uint32_t : 2; + __IOM uint32_t LSBF : 1; /*!< [12..12] LSB First select */ + __IOM uint32_t SINV : 1; /*!< [13..13] Transmitted/Received Data Invert */ + __IOM uint32_t STP : 1; /*!< [14..14] Stop Bit Length */ + __IOM uint32_t RXDESEL : 1; /*!< [15..15] Asynchronous Start Bit Edge Detection Select */ + __IOM uint32_t MOD : 3; /*!< [18..16] Communication mode select */ + __IOM uint32_t MP : 1; /*!< [19..19] Multi-Processor Mode */ + __IOM uint32_t FM : 1; /*!< [20..20] FIFO Mode select */ + __IOM uint32_t DEN : 1; /*!< [21..21] Driver enable */ + uint32_t : 2; + __IOM uint32_t CKE : 2; /*!< [25..24] Clock enable */ + uint32_t : 2; + __IOM uint32_t GM : 1; /*!< [28..28] GSM Mode */ + __IOM uint32_t BLK : 1; /*!< [29..29] Block Transfer Mode */ + uint32_t : 2; + } CCR3_b; + }; + + union + { + __IOM uint32_t CCR4; /*!< (@ 0x00000018) Common Control Register 4 */ + + struct + { + __IOM uint32_t CMPD : 9; /*!< [8..0] Compare Match Data */ + uint32_t : 7; + __IOM uint32_t ASEN : 1; /*!< [16..16] Adjust receive sampling timing enable */ + __IOM uint32_t ATEN : 1; /*!< [17..17] Adjust transmit timing enable */ + uint32_t : 1; + __IOM uint32_t SCKSEL : 1; /*!< [19..19] Master receive clock selection bit. */ + uint32_t : 4; + __IOM uint32_t AST : 3; /*!< [26..24] Adjustment value for receive Sampling Timing */ + __IOM uint32_t AJD : 1; /*!< [27..27] Adjustment Direction for receive sampling timing */ + __IOM uint32_t ATT : 3; /*!< [30..28] Adjustment value for Transmit timing */ + __IOM uint32_t AET : 1; /*!< [31..31] Adjustment edge for transmit timing */ + } CCR4_b; + }; + + union + { + __IM uint8_t CESR; /*!< (@ 0x0000001C) Communication Enable Status Register */ + + struct + { + __IM uint8_t RIST : 1; /*!< [0..0] RE Internal status */ + uint8_t : 3; + __IM uint8_t TIST : 1; /*!< [4..4] TE Internal status */ + uint8_t : 3; + } CESR_b; + }; + __IM uint8_t RESERVED; + __IM uint16_t RESERVED1; + + union + { + __IOM uint32_t ICR; /*!< (@ 0x00000020) Simple I2C Control Register */ + + struct + { + __IOM uint32_t IICDL : 5; /*!< [4..0] SDA Delay Output Select */ + uint32_t : 3; + __IOM uint32_t IICINTM : 1; /*!< [8..8] IIC Interrupt Mode Select */ + __IOM uint32_t IICCSC : 1; /*!< [9..9] Clock Synchronization */ + uint32_t : 3; + __IOM uint32_t IICACKT : 1; /*!< [13..13] ACK Transmission Data */ + uint32_t : 2; + __IOM uint32_t IICSTAREQ : 1; /*!< [16..16] Start Condition Generation */ + __IOM uint32_t IICRSTAREQ : 1; /*!< [17..17] Restart Condition Generation */ + __IOM uint32_t IICSTPREQ : 1; /*!< [18..18] Stop Condition Generation */ + uint32_t : 1; + __IOM uint32_t IICSDAS : 2; /*!< [21..20] SDA Output Select */ + __IOM uint32_t IICSCLS : 2; /*!< [23..22] SCL Output Select */ + uint32_t : 8; + } ICR_b; + }; + + union + { + __IOM uint32_t FCR; /*!< (@ 0x00000024) FIFO Control Register */ + + struct + { + __IOM uint32_t DRES : 1; /*!< [0..0] Receive data ready error select bit */ + uint32_t : 7; + __IOM uint32_t TTRG : 5; /*!< [12..8] Transmit FIFO data trigger number */ + uint32_t : 2; + __OM uint32_t TFRST : 1; /*!< [15..15] Transmit FIFO Data Register Reset */ + __IOM uint32_t RTRG : 5; /*!< [20..16] Receive FIFO data trigger number */ + uint32_t : 2; + __OM uint32_t RFRST : 1; /*!< [23..23] Receive FIFO Data Register Reset */ + __IOM uint32_t RSTRG : 5; /*!< [28..24] RTS Output Active Trigger Number Select */ + uint32_t : 3; + } FCR_b; + }; + __IM uint32_t RESERVED2; + + union + { + __IOM uint32_t MCR; /*!< (@ 0x0000002C) Manchester Control Register */ + + struct + { + __IOM uint32_t RMPOL : 1; /*!< [0..0] Polarity of Received Manchester Code */ + __IOM uint32_t TMPOL : 1; /*!< [1..1] Polarity of Transmit Manchester Code */ + __IOM uint32_t ERTEN : 1; /*!< [2..2] Manchester Edge Retiming Enable */ + uint32_t : 1; + __IOM uint32_t SYNVAL : 1; /*!< [4..4] SYNC value Setting */ + __IOM uint32_t SYNSEL : 1; /*!< [5..5] SYNC Select */ + __IOM uint32_t SBSEL : 1; /*!< [6..6] Start Bit Select */ + uint32_t : 1; + __IOM uint32_t TPLEN : 4; /*!< [11..8] Transmit preface length */ + __IOM uint32_t TPPAT : 2; /*!< [13..12] Transmit preface pattern */ + uint32_t : 2; + __IOM uint32_t RPLEN : 4; /*!< [19..16] Receive Preface Length */ + __IOM uint32_t RPPAT : 2; /*!< [21..20] Receive Preface Pattern */ + uint32_t : 2; + __IOM uint32_t PFEREN : 1; /*!< [24..24] Preface Error Enable */ + __IOM uint32_t SYEREN : 1; /*!< [25..25] Receive SYNC Error Enable */ + __IOM uint32_t SBEREN : 1; /*!< [26..26] Start Bit Error Enable */ + uint32_t : 5; + } MCR_b; + }; + + union + { + __IOM uint32_t DCR; /*!< (@ 0x00000030) Driver Control Register */ + + struct + { + __IOM uint32_t DEPOL : 1; /*!< [0..0] Driver effective polarity select */ + uint32_t : 7; + __IOM uint32_t DEAST : 5; /*!< [12..8] Driver Assertion Time */ + uint32_t : 3; + __IOM uint32_t DENGT : 5; /*!< [20..16] Driver negate time */ + uint32_t : 11; + } DCR_b; + }; + + union + { + __IOM uint32_t XCR0; /*!< (@ 0x00000034) Simple LIN(SCIX) Control Register 0 */ + + struct + { + __IOM uint32_t TCSS : 2; /*!< [1..0] Timer count clock source selection */ + uint32_t : 6; + __IOM uint32_t BFE : 1; /*!< [8..8] Break Field enable */ + __IOM uint32_t CF0RE : 1; /*!< [9..9] Control Field 0 enable */ + __IOM uint32_t CF1DS : 2; /*!< [11..10] Control Field1 compare data select */ + __IOM uint32_t PIBE : 1; /*!< [12..12] Priority interrupt bit enable */ + __IOM uint32_t PIBS : 3; /*!< [15..13] Priority interrupt bit select */ + __IOM uint32_t BFOIE : 1; /*!< [16..16] Break Field output completion interrupt enable */ + __IOM uint32_t BCDIE : 1; /*!< [17..17] Bus conflict detection interrupt enable */ + uint32_t : 2; + __IOM uint32_t BFDIE : 1; /*!< [20..20] Break Field detection interrupt enable */ + __IOM uint32_t COFIE : 1; /*!< [21..21] Counter overflow interrupt enable */ + __IOM uint32_t AEDIE : 1; /*!< [22..22] Active edge detection interrupt enable */ + uint32_t : 1; + __IOM uint32_t BCCS : 2; /*!< [25..24] Bus conflict detection clock selection */ + uint32_t : 6; + } XCR0_b; + }; + + union + { + __IOM uint32_t XCR1; /*!< (@ 0x00000038) Simple LIN(SCIX) Control Register 1 */ + + struct + { + __IOM uint32_t TCST : 1; /*!< [0..0] Break Field output timer count start trigger */ + uint32_t : 3; + __IOM uint32_t SDST : 1; /*!< [4..4] Start Frame detection enable */ + __IOM uint32_t BMEN : 1; /*!< [5..5] Bit rate measurement enable */ + uint32_t : 2; + __IOM uint32_t PCF1D : 8; /*!< [15..8] Priority compare data for Control Field 1 */ + __IOM uint32_t SCF1D : 8; /*!< [23..16] Secondary compare data for Control Field 1 */ + __IOM uint32_t CF1CE : 8; /*!< [31..24] Control Field 1 compare bit enable */ + } XCR1_b; + }; + + union + { + __IOM uint32_t XCR2; /*!< (@ 0x0000003C) Simple LIN(SCIX) Control Register 2 */ + + struct + { + __IOM uint32_t CF0D : 8; /*!< [7..0] Control Field 0compare data */ + __IOM uint32_t CF0CE : 8; /*!< [15..8] Control Field 0 compare bit enable */ + __IOM uint32_t BFLW : 16; /*!< [31..16] Break Field length setting */ + } XCR2_b; + }; + __IM uint32_t RESERVED3[2]; + + union + { + __IM uint32_t CSR; /*!< (@ 0x00000048) Common Status Register */ + + struct + { + uint32_t : 4; + __IM uint32_t ERS : 1; /*!< [4..4] Error Signal Status Flag */ + uint32_t : 10; + __IM uint32_t RXDMON : 1; /*!< [15..15] Serial input data monitor bit */ + __IM uint32_t DCMF : 1; /*!< [16..16] Data Compare Match Flag */ + __IM uint32_t DPER : 1; /*!< [17..17] Data Compare Match Parity Error Flag */ + __IM uint32_t DFER : 1; /*!< [18..18] Data Compare Match Framing Error Flag */ + uint32_t : 5; + __IM uint32_t ORER : 1; /*!< [24..24] Overrun Error Flag */ + uint32_t : 1; + __IM uint32_t MFF : 1; /*!< [26..26] Mode Fault Flag */ + __IM uint32_t PER : 1; /*!< [27..27] Parity Error Flag */ + __IM uint32_t FER : 1; /*!< [28..28] Framing Error Flag */ + __IM uint32_t TDRE : 1; /*!< [29..29] Transmit Data Empty Flag */ + __IM uint32_t TEND : 1; /*!< [30..30] Transmit End Flag */ + __IM uint32_t RDRF : 1; /*!< [31..31] Receive Data Full Flag */ + } CSR_b; + }; + + union + { + __IM uint32_t ISR; /*!< (@ 0x0000004C) Simple I2C Status Register */ + + struct + { + __IM uint32_t IICACKR : 1; /*!< [0..0] ACK Reception Data Flag */ + uint32_t : 2; + __IM uint32_t IICSTIF : 1; /*!< [3..3] Issuing of Start, Restart, or Stop Condition Completed + * Flag */ + uint32_t : 28; + } ISR_b; + }; + + union + { + __IM uint32_t FRSR; /*!< (@ 0x00000050) FIFO Receive Status Register */ + + struct + { + __IM uint32_t DR : 1; /*!< [0..0] Receive Data Ready flag */ + uint32_t : 7; + __IM uint32_t R : 6; /*!< [13..8] Receive-FIFO Data Count */ + uint32_t : 2; + __IM uint32_t PNUM : 6; /*!< [21..16] Parity Error Count */ + uint32_t : 2; + __IM uint32_t FNUM : 6; /*!< [29..24] Framing Error Count */ + uint32_t : 2; + } FRSR_b; + }; + + union + { + __IM uint32_t FTSR; /*!< (@ 0x00000054) FIFO Transmit Status Register */ + + struct + { + __IM uint32_t T : 6; /*!< [5..0] Transmit-FIFO Data Count */ + uint32_t : 26; + } FTSR_b; + }; + + union + { + __IM uint32_t MSR; /*!< (@ 0x00000058) Manchester Status Register */ + + struct + { + __IM uint32_t PFER : 1; /*!< [0..0] Preface Error flag */ + __IM uint32_t SYER : 1; /*!< [1..1] SYNC Error flag */ + __IM uint32_t SBER : 1; /*!< [2..2] Start Bit Error flag */ + uint32_t : 1; + __IM uint32_t MER : 1; /*!< [4..4] Manchester Error Flag */ + uint32_t : 1; + __IM uint32_t RSYNC : 1; /*!< [6..6] Receive SYNC data bit */ + uint32_t : 25; + } MSR_b; + }; + + union + { + __IM uint32_t XSR0; /*!< (@ 0x0000005C) Simple LIN (SCIX) Status Register 0 */ + + struct + { + __IM uint32_t SFSF : 1; /*!< [0..0] Start Frame Status flag */ + __IM uint32_t RXDSF : 1; /*!< [1..1] RXDn input status flag */ + uint32_t : 6; + __IM uint32_t BFOF : 1; /*!< [8..8] Break Field Output completion flag */ + __IM uint32_t BCDF : 1; /*!< [9..9] Bus Conflict detection flag */ + __IM uint32_t BFDF : 1; /*!< [10..10] Break Field detection flag */ + __IM uint32_t CF0MF : 1; /*!< [11..11] Control Field 0 compare match flag */ + __IM uint32_t CF1MF : 1; /*!< [12..12] Control Field 1 compare match flag */ + __IM uint32_t PIBDF : 1; /*!< [13..13] Priority interrupt bit detection flag */ + __IM uint32_t COF : 1; /*!< [14..14] Counter Overflow flag */ + __IM uint32_t AEDF : 1; /*!< [15..15] Active Edge detection flag */ + __IM uint32_t CF0RD : 8; /*!< [23..16] Control Field 0 received data */ + __IM uint32_t CF1RD : 8; /*!< [31..24] Control Field 1 received data */ + } XSR0_b; + }; + + union + { + __IM uint32_t XSR1; /*!< (@ 0x00000060) Simple LIN(SCIX) Status Register 1 */ + + struct + { + __IM uint32_t TCNT : 16; /*!< [15..0] Timer Count Capture value */ + uint32_t : 16; + } XSR1_b; + }; + __IM uint32_t RESERVED4; + + union + { + __OM uint32_t CFCLR; /*!< (@ 0x00000068) Common Flag Clear Register */ + + struct + { + uint32_t : 4; + __OM uint32_t ERSC : 1; /*!< [4..4] ERS clear bit */ + uint32_t : 11; + __OM uint32_t DCMFC : 1; /*!< [16..16] DCMF clear bit */ + __OM uint32_t DPERC : 1; /*!< [17..17] DPER clear bit */ + __OM uint32_t DFERC : 1; /*!< [18..18] DFER clear bit */ + uint32_t : 5; + __OM uint32_t ORERC : 1; /*!< [24..24] ORER clear bit */ + uint32_t : 1; + __OM uint32_t MFFC : 1; /*!< [26..26] MFF clear bit */ + __OM uint32_t PERC : 1; /*!< [27..27] PER clear bit */ + __OM uint32_t FERC : 1; /*!< [28..28] FER clear bit */ + __OM uint32_t TDREC : 1; /*!< [29..29] TDRE clear bit */ + uint32_t : 1; + __OM uint32_t RDRFC : 1; /*!< [31..31] RDRF clear bit */ + } CFCLR_b; + }; + + union + { + __OM uint32_t ICFCLR; /*!< (@ 0x0000006C) Simple I2C Flag Clear Register */ + + struct + { + uint32_t : 3; + __OM uint32_t IICSTIFC : 1; /*!< [3..3] IICSTIF clear bit */ + uint32_t : 28; + } ICFCLR_b; + }; + + union + { + __OM uint32_t FFCLR; /*!< (@ 0x00000070) FIFO Flag Clear Register */ + + struct + { + __OM uint32_t DRC : 1; /*!< [0..0] DR clear bit */ + uint32_t : 31; + } FFCLR_b; + }; + + union + { + __OM uint32_t MFCLR; /*!< (@ 0x00000074) Manchester Flag Clear Register */ + + struct + { + __OM uint32_t PFERC : 1; /*!< [0..0] PFER clear bit */ + __OM uint32_t SYERC : 1; /*!< [1..1] SYER clear bit */ + __OM uint32_t SBERC : 1; /*!< [2..2] SBER clear bit */ + uint32_t : 1; + __OM uint32_t MERC : 1; /*!< [4..4] MER clear bit */ + uint32_t : 27; + } MFCLR_b; + }; + + union + { + __OM uint32_t XFCLR; /*!< (@ 0x00000078) Simple LIN(SCIX) Flag Clear Register */ + + struct + { + uint32_t : 8; + __OM uint32_t BFOC : 1; /*!< [8..8] BFOF clear bit */ + __OM uint32_t BCDC : 1; /*!< [9..9] BCDF clear bit */ + __OM uint32_t BFDC : 1; /*!< [10..10] BFDF clear bit */ + __OM uint32_t CF0MC : 1; /*!< [11..11] CF0MF clear bit */ + __OM uint32_t CF1MC : 1; /*!< [12..12] CF1MF clear bit */ + __OM uint32_t PIBDC : 1; /*!< [13..13] PIBDF clear bit */ + __OM uint32_t COFC : 1; /*!< [14..14] COFF clear bit */ + __OM uint32_t AEDC : 1; /*!< [15..15] AEDF clear bit */ + uint32_t : 16; + } XFCLR_b; + }; +} R_SCI_B0_Type; /*!< Size = 124 (0x7c) */ + +/* =========================================================================================================================== */ +/* ================ R_SPI_B0 ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Serial Peripheral Interface 0 (R_SPI_B0) + */ + +typedef struct /*!< (@ 0x4035C000) R_SPI_B0 Structure */ +{ + __IOM uint32_t SPDR; /*!< (@ 0x00000000) RSPI Data Register */ + + union + { + __IOM uint32_t SPDECR; /*!< (@ 0x00000004) RSPI Delay Control Register */ + + struct + { + __IOM uint32_t SCKDL : 3; /*!< [2..0] RSPCK Delay */ + uint32_t : 5; + __IOM uint32_t SLNDL : 3; /*!< [10..8] SSL Negation Delay */ + uint32_t : 5; + __IOM uint32_t SPNDL : 3; /*!< [18..16] RSPI Next-Access Delay */ + uint32_t : 5; + __IOM uint32_t ARST : 3; /*!< [26..24] Receive Sampling Timing Adjustment bits */ + uint32_t : 5; + } SPDECR_b; + }; + + union + { + __IOM uint32_t SPCR; /*!< (@ 0x00000008) RSPI Control Register */ + + struct + { + __IOM uint32_t SPE : 1; /*!< [0..0] RSPI Function Enable */ + uint32_t : 6; + __IOM uint32_t SPSCKSEL : 1; /*!< [7..7] RSPI Master Receive Clock Select */ + __IOM uint32_t SPPE : 1; /*!< [8..8] Parity Enable */ + __IOM uint32_t SPOE : 1; /*!< [9..9] Parity Mode */ + uint32_t : 1; + __IOM uint32_t PTE : 1; /*!< [11..11] Parity Self-Diagnosis Enable */ + __IOM uint32_t SCKASE : 1; /*!< [12..12] RSPCK Auto-Stop Function Enable */ + __IOM uint32_t BFDS : 1; /*!< [13..13] Between Burst Transfer Frames Delay Select */ + __IOM uint32_t MODFEN : 1; /*!< [14..14] Mode Fault Error Detection Enable */ + uint32_t : 1; + __IOM uint32_t SPEIE : 1; /*!< [16..16] RSPI Error Interrupt Enable */ + __IOM uint32_t SPRIE : 1; /*!< [17..17] RSPI Receive Buffer Full Interrupt Enable */ + __IOM uint32_t SPIIE : 1; /*!< [18..18] RSPI Idle Interrupt Enable */ + __IOM uint32_t SPDRES : 1; /*!< [19..19] RSPI receive data ready error select */ + __IOM uint32_t SPTIE : 1; /*!< [20..20] RSPI Transmit Buffer Empty Interrupt Enable */ + __IOM uint32_t CENDIE : 1; /*!< [21..21] RSPI Communication End Interrupt Enable */ + uint32_t : 2; + __IOM uint32_t SPMS : 1; /*!< [24..24] RSPI Mode Select */ + __IOM uint32_t SPFRF : 1; /*!< [25..25] RSPI Frame Format Select */ + uint32_t : 2; + __IOM uint32_t TXMD : 2; /*!< [29..28] Communication Mode Select */ + __IOM uint32_t MSTR : 1; /*!< [30..30] RSPI Master/Slave Mode Select */ + __IOM uint32_t BPEN : 1; /*!< [31..31] Synchronization Circuit Bypass Enable */ + } SPCR_b; + }; + + union + { + __IOM uint32_t SPCR2; /*!< (@ 0x0000000C) RSPI Control Register 2 */ + + struct + { + __IOM uint32_t RMFM : 5; /*!< [4..0] Frame processing count setting in Master Receive only */ + uint32_t : 1; + __OM uint32_t RMEDTG : 1; /*!< [6..6] End Trigger in Master Receive only */ + __OM uint32_t RMSTTG : 1; /*!< [7..7] Start Trigger in Master Receive only */ + __IOM uint32_t SPDRC : 8; /*!< [15..8] RSPI received data ready detect adjustment */ + __IOM uint32_t SPLP : 1; /*!< [16..16] RSPI Loopback */ + __IOM uint32_t SPLP2 : 1; /*!< [17..17] RSPI Loopback 2 */ + uint32_t : 2; + __IOM uint32_t MOIFV : 1; /*!< [20..20] MOSI Idle Fixed Value */ + __IOM uint32_t MOIFE : 1; /*!< [21..21] MOSI Idle Fixed Value Enable */ + uint32_t : 10; + } SPCR2_b; + }; + + union + { + __IOM uint32_t SPCR3; /*!< (@ 0x00000010) RSPI Control Register 3 */ + + struct + { + __IOM uint32_t SSL0P : 1; /*!< [0..0] SSL0 Signal Polarity */ + __IOM uint32_t SSL1P : 1; /*!< [1..1] SSL1 Signal Polarity */ + __IOM uint32_t SSL2P : 1; /*!< [2..2] SSL2 Signal Polarity */ + __IOM uint32_t SSL3P : 1; /*!< [3..3] SSL3 Signal Polarity */ + uint32_t : 4; + __IOM uint32_t SPBR : 8; /*!< [15..8] SPI Bit Rate */ + uint32_t : 8; + __IOM uint32_t SPSLN : 3; /*!< [26..24] RSPI Sequence Length */ + uint32_t : 5; + } SPCR3_b; + }; + + union + { + __IOM uint32_t SPCMD0; /*!< (@ 0x00000014) RSPI Command Register */ + + struct + { + __IOM uint32_t CPHA : 1; /*!< [0..0] RSPCK Phase */ + __IOM uint32_t CPOL : 1; /*!< [1..1] RSPCK Polarity */ + __IOM uint32_t BRDV : 2; /*!< [3..2] Bit Rate Division */ + uint32_t : 3; + __IOM uint32_t SSLKP : 1; /*!< [7..7] SSL Signal Level Hold */ + uint32_t : 4; + __IOM uint32_t LSBF : 1; /*!< [12..12] RSPI LSB First */ + __IOM uint32_t SPNDEN : 1; /*!< [13..13] RSPI Next-Access Delay Enable */ + __IOM uint32_t SLNDEN : 1; /*!< [14..14] SSL Negation Delay Setting Enable */ + __IOM uint32_t SCKDEN : 1; /*!< [15..15] RSPCK Delay Setting Enable */ + __IOM uint32_t SPB : 5; /*!< [20..16] RSPI Data Length */ + uint32_t : 3; + __IOM uint32_t SSLA : 3; /*!< [26..24] SSL Signal Assertion */ + uint32_t : 5; + } SPCMD0_b; + }; + + union + { + __IOM uint32_t SPCMD1; /*!< (@ 0x00000018) RSPI Command Register */ + + struct + { + __IOM uint32_t CPHA : 1; /*!< [0..0] RSPCK Phase */ + __IOM uint32_t CPOL : 1; /*!< [1..1] RSPCK Polarity */ + __IOM uint32_t BRDV : 2; /*!< [3..2] Bit Rate Division */ + uint32_t : 3; + __IOM uint32_t SSLKP : 1; /*!< [7..7] SSL Signal Level Hold */ + uint32_t : 4; + __IOM uint32_t LSBF : 1; /*!< [12..12] RSPI LSB First */ + __IOM uint32_t SPNDEN : 1; /*!< [13..13] RSPI Next-Access Delay Enable */ + __IOM uint32_t SLNDEN : 1; /*!< [14..14] SSL Negation Delay Setting Enable */ + __IOM uint32_t SCKDEN : 1; /*!< [15..15] RSPCK Delay Setting Enable */ + __IOM uint32_t SPB : 5; /*!< [20..16] RSPI Data Length */ + uint32_t : 3; + __IOM uint32_t SSLA : 3; /*!< [26..24] SSL Signal Assertion */ + uint32_t : 5; + } SPCMD1_b; + }; + + union + { + __IOM uint32_t SPCMD2; /*!< (@ 0x0000001C) RSPI Command Register */ + + struct + { + __IOM uint32_t CPHA : 1; /*!< [0..0] RSPCK Phase */ + __IOM uint32_t CPOL : 1; /*!< [1..1] RSPCK Polarity */ + __IOM uint32_t BRDV : 2; /*!< [3..2] Bit Rate Division */ + uint32_t : 3; + __IOM uint32_t SSLKP : 1; /*!< [7..7] SSL Signal Level Hold */ + uint32_t : 4; + __IOM uint32_t LSBF : 1; /*!< [12..12] RSPI LSB First */ + __IOM uint32_t SPNDEN : 1; /*!< [13..13] RSPI Next-Access Delay Enable */ + __IOM uint32_t SLNDEN : 1; /*!< [14..14] SSL Negation Delay Setting Enable */ + __IOM uint32_t SCKDEN : 1; /*!< [15..15] RSPCK Delay Setting Enable */ + __IOM uint32_t SPB : 5; /*!< [20..16] RSPI Data Length */ + uint32_t : 3; + __IOM uint32_t SSLA : 3; /*!< [26..24] SSL Signal Assertion */ + uint32_t : 5; + } SPCMD2_b; + }; + + union + { + __IOM uint32_t SPCMD3; /*!< (@ 0x00000020) RSPI Command Register */ + + struct + { + __IOM uint32_t CPHA : 1; /*!< [0..0] RSPCK Phase */ + __IOM uint32_t CPOL : 1; /*!< [1..1] RSPCK Polarity */ + __IOM uint32_t BRDV : 2; /*!< [3..2] Bit Rate Division */ + uint32_t : 3; + __IOM uint32_t SSLKP : 1; /*!< [7..7] SSL Signal Level Hold */ + uint32_t : 4; + __IOM uint32_t LSBF : 1; /*!< [12..12] RSPI LSB First */ + __IOM uint32_t SPNDEN : 1; /*!< [13..13] RSPI Next-Access Delay Enable */ + __IOM uint32_t SLNDEN : 1; /*!< [14..14] SSL Negation Delay Setting Enable */ + __IOM uint32_t SCKDEN : 1; /*!< [15..15] RSPCK Delay Setting Enable */ + __IOM uint32_t SPB : 5; /*!< [20..16] RSPI Data Length */ + uint32_t : 3; + __IOM uint32_t SSLA : 3; /*!< [26..24] SSL Signal Assertion */ + uint32_t : 5; + } SPCMD3_b; + }; + + union + { + __IOM uint32_t SPCMD4; /*!< (@ 0x00000024) RSPI Command Register */ + + struct + { + __IOM uint32_t CPHA : 1; /*!< [0..0] RSPCK Phase */ + __IOM uint32_t CPOL : 1; /*!< [1..1] RSPCK Polarity */ + __IOM uint32_t BRDV : 2; /*!< [3..2] Bit Rate Division */ + uint32_t : 3; + __IOM uint32_t SSLKP : 1; /*!< [7..7] SSL Signal Level Hold */ + uint32_t : 4; + __IOM uint32_t LSBF : 1; /*!< [12..12] RSPI LSB First */ + __IOM uint32_t SPNDEN : 1; /*!< [13..13] RSPI Next-Access Delay Enable */ + __IOM uint32_t SLNDEN : 1; /*!< [14..14] SSL Negation Delay Setting Enable */ + __IOM uint32_t SCKDEN : 1; /*!< [15..15] RSPCK Delay Setting Enable */ + __IOM uint32_t SPB : 5; /*!< [20..16] RSPI Data Length */ + uint32_t : 3; + __IOM uint32_t SSLA : 3; /*!< [26..24] SSL Signal Assertion */ + uint32_t : 5; + } SPCMD4_b; + }; + + union + { + __IOM uint32_t SPCMD5; /*!< (@ 0x00000028) RSPI Command Register */ + + struct + { + __IOM uint32_t CPHA : 1; /*!< [0..0] RSPCK Phase */ + __IOM uint32_t CPOL : 1; /*!< [1..1] RSPCK Polarity */ + __IOM uint32_t BRDV : 2; /*!< [3..2] Bit Rate Division */ + uint32_t : 3; + __IOM uint32_t SSLKP : 1; /*!< [7..7] SSL Signal Level Hold */ + uint32_t : 4; + __IOM uint32_t LSBF : 1; /*!< [12..12] RSPI LSB First */ + __IOM uint32_t SPNDEN : 1; /*!< [13..13] RSPI Next-Access Delay Enable */ + __IOM uint32_t SLNDEN : 1; /*!< [14..14] SSL Negation Delay Setting Enable */ + __IOM uint32_t SCKDEN : 1; /*!< [15..15] RSPCK Delay Setting Enable */ + __IOM uint32_t SPB : 5; /*!< [20..16] RSPI Data Length */ + uint32_t : 3; + __IOM uint32_t SSLA : 3; /*!< [26..24] SSL Signal Assertion */ + uint32_t : 5; + } SPCMD5_b; + }; + + union + { + __IOM uint32_t SPCMD6; /*!< (@ 0x0000002C) RSPI Command Register */ + + struct + { + __IOM uint32_t CPHA : 1; /*!< [0..0] RSPCK Phase */ + __IOM uint32_t CPOL : 1; /*!< [1..1] RSPCK Polarity */ + __IOM uint32_t BRDV : 2; /*!< [3..2] Bit Rate Division */ + uint32_t : 3; + __IOM uint32_t SSLKP : 1; /*!< [7..7] SSL Signal Level Hold */ + uint32_t : 4; + __IOM uint32_t LSBF : 1; /*!< [12..12] RSPI LSB First */ + __IOM uint32_t SPNDEN : 1; /*!< [13..13] RSPI Next-Access Delay Enable */ + __IOM uint32_t SLNDEN : 1; /*!< [14..14] SSL Negation Delay Setting Enable */ + __IOM uint32_t SCKDEN : 1; /*!< [15..15] RSPCK Delay Setting Enable */ + __IOM uint32_t SPB : 5; /*!< [20..16] RSPI Data Length */ + uint32_t : 3; + __IOM uint32_t SSLA : 3; /*!< [26..24] SSL Signal Assertion */ + uint32_t : 5; + } SPCMD6_b; + }; + + union + { + __IOM uint32_t SPCMD7; /*!< (@ 0x00000030) RSPI Command Register */ + + struct + { + __IOM uint32_t CPHA : 1; /*!< [0..0] RSPCK Phase */ + __IOM uint32_t CPOL : 1; /*!< [1..1] RSPCK Polarity */ + __IOM uint32_t BRDV : 2; /*!< [3..2] Bit Rate Division */ + uint32_t : 3; + __IOM uint32_t SSLKP : 1; /*!< [7..7] SSL Signal Level Hold */ + uint32_t : 4; + __IOM uint32_t LSBF : 1; /*!< [12..12] RSPI LSB First */ + __IOM uint32_t SPNDEN : 1; /*!< [13..13] RSPI Next-Access Delay Enable */ + __IOM uint32_t SLNDEN : 1; /*!< [14..14] SSL Negation Delay Setting Enable */ + __IOM uint32_t SCKDEN : 1; /*!< [15..15] RSPCK Delay Setting Enable */ + __IOM uint32_t SPB : 5; /*!< [20..16] RSPI Data Length */ + uint32_t : 3; + __IOM uint32_t SSLA : 3; /*!< [26..24] SSL Signal Assertion */ + uint32_t : 5; + } SPCMD7_b; + }; + __IM uint32_t RESERVED[3]; + + union + { + __IOM uint32_t SPDCR; /*!< (@ 0x00000040) RSPI Data Control Register */ + + struct + { + __IOM uint32_t BYSW : 1; /*!< [0..0] Byte Swap Operating Mode Select */ + uint32_t : 2; + __IOM uint32_t SPRDTD : 1; /*!< [3..3] RSPI Receive Data or Transmit Data Select */ + __IOM uint32_t SINV : 1; /*!< [4..4] Serial data invert bit */ + uint32_t : 3; + __IOM uint32_t SPFC : 2; /*!< [9..8] Frame Count */ + uint32_t : 22; + } SPDCR_b; + }; + + union + { + __IOM uint32_t SPDCR2; /*!< (@ 0x00000044) RSPI Data Control Register 2 */ + + struct + { + __IOM uint32_t RTRG : 2; /*!< [1..0] Receive FIFO threshold setting */ + uint32_t : 6; + __IOM uint32_t TTRG : 2; /*!< [9..8] Transmission FIFO threshold setting */ + uint32_t : 22; + } SPDCR2_b; + }; + __IM uint32_t RESERVED1[2]; + + union + { + __IM uint32_t SPSR; /*!< (@ 0x00000050) SPI Status Register */ + + struct + { + uint32_t : 8; + __IM uint32_t SPCP : 3; /*!< [10..8] RSPI Command Pointer */ + uint32_t : 1; + __IM uint32_t SPECM : 3; /*!< [14..12] RSPI Error Command */ + uint32_t : 8; + __IM uint32_t SPDRF : 1; /*!< [23..23] RSPI Receive Data Ready Flag */ + __IM uint32_t OVRF : 1; /*!< [24..24] Overrun Error Flag */ + __IM uint32_t IDLNF : 1; /*!< [25..25] RSPI Idle Flag */ + __IM uint32_t MODF : 1; /*!< [26..26] Mode Fault Error Flag */ + __IM uint32_t PERF : 1; /*!< [27..27] Parity Error Flag */ + __IM uint32_t UDRF : 1; /*!< [28..28] Underrun Error Flag */ + __IM uint32_t SPTEF : 1; /*!< [29..29] RSPI Transmit Buffer Empty Flag */ + __IM uint32_t CENDF : 1; /*!< [30..30] Communication End Flag */ + __IM uint32_t SPRF : 1; /*!< [31..31] RSPI Receive Buffer Full Flag */ + } SPSR_b; + }; + __IM uint32_t RESERVED2; + + union + { + __IM uint32_t SPTFSR; /*!< (@ 0x00000058) RSPI Transfer FIFO Status Register */ + + struct + { + __IM uint32_t TFDN : 3; /*!< [2..0] Transmit FIFO data empty stage number */ + uint32_t : 29; + } SPTFSR_b; + }; + + union + { + __IM uint32_t SPRFSR; /*!< (@ 0x0000005C) RSPI Receive FIFO Status Register */ + + struct + { + __IM uint32_t RFDN : 3; /*!< [2..0] Receive FIFO data store stage number */ + uint32_t : 29; + } SPRFSR_b; + }; + + union + { + __IM uint32_t SPPSR; /*!< (@ 0x00000060) RSPI Poling Register */ + + struct + { + __IM uint32_t SPEPS : 1; /*!< [0..0] RSPI Poling Status */ + uint32_t : 31; + } SPPSR_b; + }; + __IM uint32_t RESERVED3; + + union + { + __IOM uint32_t SPSRC; /*!< (@ 0x00000068) RSPI Status Clear Register */ + + struct + { + uint32_t : 23; + __OM uint32_t SPDRFC : 1; /*!< [23..23] RSPI Receive Data Ready Flag Clear */ + __OM uint32_t OVRFC : 1; /*!< [24..24] Overrun Error Flag Clear */ + uint32_t : 1; + __OM uint32_t MODFC : 1; /*!< [26..26] Mode Fault Error Flag Clear */ + __OM uint32_t PERFC : 1; /*!< [27..27] Parity Error Flag Clear */ + __OM uint32_t UDRFC : 1; /*!< [28..28] Underrun Error Flag Clear */ + __OM uint32_t SPTEFC : 1; /*!< [29..29] RSPI Transmit Buffer Empty Flag Clear */ + __OM uint32_t CENDFC : 1; /*!< [30..30] Communication End Flag Clear */ + __OM uint32_t SPRFC : 1; /*!< [31..31] RSPI Receive Buffer Full Flag Clear */ + } SPSRC_b; + }; + + union + { + __IOM uint32_t SPFCR; /*!< (@ 0x0000006C) RSPI FIFO Clear Register */ + + struct + { + __OM uint32_t SPFRST : 1; /*!< [0..0] RSPI FIFO clear */ + uint32_t : 31; + } SPFCR_b; + }; +} R_SPI_B0_Type; /*!< Size = 112 (0x70) */ + +/* =========================================================================================================================== */ +/* ================ R_USB_HS0 ================ */ +/* =========================================================================================================================== */ + +/** + * @brief USB 2.0 High-Speed Module (R_USB_HS0) + */ + +typedef struct /*!< (@ 0x40351000) R_USB_HS0 Structure */ +{ + union + { + __IOM uint16_t SYSCFG; /*!< (@ 0x00000000) System Configuration Control Register */ + + struct + { + __IOM uint16_t USBE : 1; /*!< [0..0] USB Operation Enable */ + uint16_t : 3; + __IOM uint16_t DPRPU : 1; /*!< [4..4] D+ Line Resistor Control */ + __IOM uint16_t DRPD : 1; /*!< [5..5] D+/D- Line Resistor Control */ + __IOM uint16_t DCFM : 1; /*!< [6..6] Controller Function Select */ + __IOM uint16_t HSE : 1; /*!< [7..7] High-Speed Operation Enable */ + __IOM uint16_t CNEN : 1; /*!< [8..8] Single End Receiver Enable */ + uint16_t : 7; + } SYSCFG_b; + }; + + union + { + __IOM uint16_t BUSWAIT; /*!< (@ 0x00000002) CPU Bus Wait Register */ + + struct + { + __IOM uint16_t BWAIT : 4; /*!< [3..0] CPU Bus Access Wait Specification BWAIT waits (BWAIT+2 + * access cycles) */ + uint16_t : 12; + } BUSWAIT_b; + }; + + union + { + __IM uint16_t SYSSTS0; /*!< (@ 0x00000004) System Configuration Status Register */ + + struct + { + __IM uint16_t LNST : 2; /*!< [1..0] USB Data Line Status Monitor */ + __IM uint16_t IDMON : 1; /*!< [2..2] ID0 Pin Monitor */ + uint16_t : 2; + __IM uint16_t SOFEA : 1; /*!< [5..5] SOF Active Monitor While Host Controller Function is + * Selected. */ + __IM uint16_t HTACT : 1; /*!< [6..6] Host Sequencer Status Monitor */ + uint16_t : 7; + __IM uint16_t OVCMON : 2; /*!< [15..14] External USB1_OVRCURA/USB1_OVRCURB Input Pin MonitorThe + * OCVMON[1] bit indicates the status of the USBHS_OVRCURA + * pin. The OCVMON[0] bit indicates the status of the USBHS_OVRCURB + * pin. */ + } SYSSTS0_b; + }; + + union + { + __IM uint16_t PLLSTA; /*!< (@ 0x00000006) PLL Status Register */ + + struct + { + __IM uint16_t PLLLOCK : 1; /*!< [0..0] PLL Lock Flag */ + uint16_t : 15; + } PLLSTA_b; + }; + + union + { + __IOM uint16_t DVSTCTR0; /*!< (@ 0x00000008) Device State Control Register 0 */ + + struct + { + __IM uint16_t RHST : 3; /*!< [2..0] USB Bus Reset Status */ + uint16_t : 1; + __IOM uint16_t UACT : 1; /*!< [4..4] USB Bus Operation Enable for the Host Controller Operation */ + __IOM uint16_t RESUME : 1; /*!< [5..5] Resume Signal Output for the Host Controller Operation */ + __IOM uint16_t USBRST : 1; /*!< [6..6] USB Bus Reset Output for the Host Controller Operation */ + __IOM uint16_t RWUPE : 1; /*!< [7..7] Remote Wakeup Detection Enable for the Host Controller + * Operation */ + __IOM uint16_t WKUP : 1; /*!< [8..8] Remote Wakeup Output for the Device Controller Operation */ + __IOM uint16_t VBUSEN : 1; /*!< [9..9] USBHS_VBUSEN Output Pin Control */ + __IOM uint16_t EXICEN : 1; /*!< [10..10] USBHS_EXICEN Output Pin Control */ + __IOM uint16_t HNPBTOA : 1; /*!< [11..11] Host Negotiation Protocol (HNP) Control Use this bit + * when switching from device B to device A in OTGmode. If + * the HNPBTOA bit is 1, the internal function controlremains + * in the Suspend state until the HNP processing endseven + * if SYSCFG.DPRPU = 0 or SYSCFG.DCFM = 1 is set. */ + uint16_t : 4; + } DVSTCTR0_b; + }; + __IM uint16_t RESERVED; + + union + { + __IOM uint16_t TESTMODE; /*!< (@ 0x0000000C) USB Test Mode Register */ + + struct + { + __IOM uint16_t UTST : 4; /*!< [3..0] Test Mode */ + uint16_t : 12; + } TESTMODE_b; + }; + __IM uint16_t RESERVED1; + __IM uint32_t RESERVED2; + + union + { + union + { + __IOM uint32_t CFIFO; /*!< (@ 0x00000014) CFIFO Port Register */ + + struct + { + __IOM uint32_t FIFOPORT : 32; /*!< [31..0] FIFO Port.Read receive data from the FIFO buffer or + * write transmit data to the FIFO buffer by accessing these + * bits. */ + } CFIFO_b; + }; + + struct + { + union + { + __IOM uint16_t CFIFOL; /*!< (@ 0x00000014) CFIFO Port Register L */ + __IOM uint8_t CFIFOLL; /*!< (@ 0x00000014) CFIFO Port Register LL */ + }; + + union + { + __IOM uint16_t CFIFOH; /*!< (@ 0x00000016) CFIFO Port Register H */ + + struct + { + __IM uint8_t RESERVED3; + __IOM uint8_t CFIFOHH; /*!< (@ 0x00000017) CFIFO Port Register HH */ + }; + }; + }; + }; + + union + { + union + { + __IOM uint32_t D0FIFO; /*!< (@ 0x00000018) D0FIFO Port Register */ + + struct + { + __IOM uint32_t FIFOPORT : 32; /*!< [31..0] FIFO Port Read receive data from the FIFO buffer or + * write transmit data to the FIFO buffer by accessing these + * bits. */ + } D0FIFO_b; + }; + + struct + { + union + { + __IOM uint16_t D0FIFOL; /*!< (@ 0x00000018) D0FIFO Port Register L */ + __IOM uint8_t D0FIFOLL; /*!< (@ 0x00000018) D0FIFO Port Register LL */ + }; + + union + { + __IOM uint16_t D0FIFOH; /*!< (@ 0x0000001A) D0FIFO Port Register H */ + + struct + { + __IM uint8_t RESERVED4; + __IOM uint8_t D0FIFOHH; /*!< (@ 0x0000001B) D0FIFO Port Register HH */ + }; + }; + }; + }; + + union + { + union + { + __IOM uint32_t D1FIFO; /*!< (@ 0x0000001C) D1FIFO Port Register */ + + struct + { + __IOM uint32_t FIFOPORT : 32; /*!< [31..0] FIFO PortRead receive data from the FIFO buffer or write + * transmit data to the FIFO buffer by accessing these bits. */ + } D1FIFO_b; + }; + + struct + { + union + { + __IOM uint16_t D1FIFOL; /*!< (@ 0x0000001C) D1FIFO Port Register L */ + __IOM uint8_t D1FIFOLL; /*!< (@ 0x0000001C) D1FIFO Port Register LL */ + }; + + union + { + __IOM uint16_t D1FIFOH; /*!< (@ 0x0000001E) D1FIFO Port Register H */ + + struct + { + __IM uint8_t RESERVED5; + __IOM uint8_t D1FIFOHH; /*!< (@ 0x0000001F) D1FIFO Port Register HH */ + }; + }; + }; + }; + + union + { + __IOM uint16_t CFIFOSEL; /*!< (@ 0x00000020) CFIFO Port Select Register */ + + struct + { + __IOM uint16_t CURPIPE : 4; /*!< [3..0] FIFO Port Access Pipe Specification */ + uint16_t : 1; + __IOM uint16_t ISEL : 1; /*!< [5..5] FIFO Port Access Direction when DCP is Selected */ + uint16_t : 2; + __IOM uint16_t BIGEND : 1; /*!< [8..8] FIFO Port Endian Control */ + uint16_t : 1; + __IOM uint16_t MBW : 2; /*!< [11..10] CFIFO Port Access Bit Width */ + uint16_t : 2; + __OM uint16_t REW : 1; /*!< [14..14] Buffer Pointer Rewind */ + __IOM uint16_t RCNT : 1; /*!< [15..15] Read Count Mode */ + } CFIFOSEL_b; + }; + + union + { + __IOM uint16_t CFIFOCTR; /*!< (@ 0x00000022) CFIFO Port Control Register */ + + struct + { + __IM uint16_t DTLN : 12; /*!< [11..0] Receive Data Length.Indicates the length of the receive + * data. */ + uint16_t : 1; + __IM uint16_t FRDY : 1; /*!< [13..13] FIFO Port ReadyIndicates whether the FIFO port can + * be accessed. */ + __OM uint16_t BCLR : 1; /*!< [14..14] CPU Buffer Clear */ + __IOM uint16_t BVAL : 1; /*!< [15..15] Buffer Memory Valid Flag */ + } CFIFOCTR_b; + }; + __IM uint32_t RESERVED6; + + union + { + __IOM uint16_t D0FIFOSEL; /*!< (@ 0x00000028) D0FIFO Port Select Register */ + + struct + { + __IOM uint16_t CURPIPE : 4; /*!< [3..0] FIFO Port Access Pipe Specification */ + uint16_t : 4; + __IOM uint16_t BIGEND : 1; /*!< [8..8] FIFO Port Endian Control */ + uint16_t : 1; + __IOM uint16_t MBW : 2; /*!< [11..10] FIFO Port Access Bit Width */ + __IOM uint16_t DREQE : 1; /*!< [12..12] UCL_Dx_DREQ Signal Output Enable */ + __IOM uint16_t DCLRM : 1; /*!< [13..13] Auto Buffer Memory Clear Mode Accessed after Specified + * Pipe Data is Read */ + __OM uint16_t REW : 1; /*!< [14..14] Buffer Pointer Rewind */ + __IOM uint16_t RCNT : 1; /*!< [15..15] Read Count Mode */ + } D0FIFOSEL_b; + }; + + union + { + __IOM uint16_t D0FIFOCTR; /*!< (@ 0x0000002A) D0FIFO Port Control Register */ + + struct + { + __IM uint16_t DTLN : 12; /*!< [11..0] Receive Data Length.Indicates the length of the receive + * data. */ + uint16_t : 1; + __IM uint16_t FRDY : 1; /*!< [13..13] FIFO Port ReadyIndicates whether the FIFO port can + * be accessed. */ + __OM uint16_t BCLR : 1; /*!< [14..14] CPU Buffer Clear */ + __IOM uint16_t BVAL : 1; /*!< [15..15] Buffer Memory Valid Flag */ + } D0FIFOCTR_b; + }; + + union + { + __IOM uint16_t D1FIFOSEL; /*!< (@ 0x0000002C) D1FIFO Port Select Register */ + + struct + { + __IOM uint16_t CURPIPE : 4; /*!< [3..0] FIFO Port Access Pipe Specification */ + uint16_t : 4; + __IOM uint16_t BIGEND : 1; /*!< [8..8] FIFO Port Endian Control */ + uint16_t : 1; + __IOM uint16_t MBW : 2; /*!< [11..10] FIFO Port Access Bit Width */ + __IOM uint16_t DREQE : 1; /*!< [12..12] UCL_Dx_DREQ Signal Output Enable */ + __IOM uint16_t DCLRM : 1; /*!< [13..13] Auto Buffer Memory Clear Mode Accessed after Specified + * Pipe Data is Read */ + __OM uint16_t REW : 1; /*!< [14..14] Buffer Pointer Rewind */ + __IOM uint16_t RCNT : 1; /*!< [15..15] Read Count Mode */ + } D1FIFOSEL_b; + }; + + union + { + __IOM uint16_t D1FIFOCTR; /*!< (@ 0x0000002E) D1FIFO Port Control Register */ + + struct + { + __IM uint16_t DTLN : 12; /*!< [11..0] Receive Data Length.Indicates the length of the receive + * data. */ + uint16_t : 1; + __IM uint16_t FRDY : 1; /*!< [13..13] FIFO Port ReadyIndicates whether the FIFO port can + * be accessed. */ + __OM uint16_t BCLR : 1; /*!< [14..14] CPU Buffer Clear */ + __IOM uint16_t BVAL : 1; /*!< [15..15] Buffer Memory Valid Flag */ + } D1FIFOCTR_b; + }; + + union + { + __IOM uint16_t INTENB0; /*!< (@ 0x00000030) Interrupt Enable Register 0 */ + + struct + { + uint16_t : 8; + __IOM uint16_t BRDYE : 1; /*!< [8..8] Buffer Ready Interrupt Enable */ + __IOM uint16_t NRDYE : 1; /*!< [9..9] Buffer Not Ready Response Interrupt Enable */ + __IOM uint16_t BEMPE : 1; /*!< [10..10] Buffer Empty Interrupt Enable */ + __IOM uint16_t CTRE : 1; /*!< [11..11] Control Transfer Stage Transition Interrupt Enable */ + __IOM uint16_t DVSE : 1; /*!< [12..12] Device State Transition Interrupt Enable */ + __IOM uint16_t SOFE : 1; /*!< [13..13] Frame Number Update Interrupt Enable */ + __IOM uint16_t RSME : 1; /*!< [14..14] Resume Interrupt Enable */ + __IOM uint16_t VBSE : 1; /*!< [15..15] VBUS Interrupt Enable */ + } INTENB0_b; + }; + + union + { + __IOM uint16_t INTENB1; /*!< (@ 0x00000032) Interrupt Enable Register 1 */ + + struct + { + __IOM uint16_t PDDETINTE0 : 1; /*!< [0..0] PDDETINT0 Detection Interrupt Enable */ + uint16_t : 3; + __IOM uint16_t SACKE : 1; /*!< [4..4] Setup Transaction Normal Response Interrupt Enable */ + __IOM uint16_t SIGNE : 1; /*!< [5..5] Setup Transaction Error Interrupt Enable */ + __IOM uint16_t EOFERRE : 1; /*!< [6..6] EOF Error Detection Interrupt Enable */ + uint16_t : 1; + __IOM uint16_t LPMENDE : 1; /*!< [8..8] LPM Transaction End Interrupt Enable */ + __IOM uint16_t L1RSMENDE : 1; /*!< [9..9] L1 Resume End Interrupt Enable */ + uint16_t : 1; + __IOM uint16_t ATTCHE : 1; /*!< [11..11] Connection Detection Interrupt Enable */ + __IOM uint16_t DTCHE : 1; /*!< [12..12] Disconnection Detection Interrupt Enable */ + uint16_t : 1; + __IOM uint16_t BCHGE : 1; /*!< [14..14] USB Bus Change Interrupt Enable */ + __IOM uint16_t OVRCRE : 1; /*!< [15..15] OVRCRE Interrupt Enable */ + } INTENB1_b; + }; + __IM uint16_t RESERVED7; + + union + { + __IOM uint16_t BRDYENB; /*!< (@ 0x00000036) BRDY Interrupt Enable Register */ + + struct + { + __IOM uint16_t PIPEBRDYE : 10; /*!< [9..0] BRDY Interrupt Enable for Each Pipe */ + uint16_t : 6; + } BRDYENB_b; + }; + + union + { + __IOM uint16_t NRDYENB; /*!< (@ 0x00000038) NRDY Interrupt Enable Register */ + + struct + { + __IOM uint16_t PIPENRDYE : 10; /*!< [9..0] NRDY Interrupt Enable for Each Pipe */ + uint16_t : 6; + } NRDYENB_b; + }; + + union + { + __IOM uint16_t BEMPENB; /*!< (@ 0x0000003A) BEMP Interrupt Enable Register */ + + struct + { + __IOM uint16_t PIPEBEMPE : 10; /*!< [9..0] BEMP Interrupt Enable for Each Pipe */ + uint16_t : 6; + } BEMPENB_b; + }; + + union + { + __IOM uint16_t SOFCFG; /*!< (@ 0x0000003C) SOF Pin Configuration Register */ + + struct + { + uint16_t : 4; + __IM uint16_t EDGESTS : 1; /*!< [4..4] Interrupt Edge Processing Status Monitor */ + __IOM uint16_t INTL : 1; /*!< [5..5] Interrupt Output Sense Select */ + __IOM uint16_t BRDYM : 1; /*!< [6..6] PIPEBRDY Interrupt Status Clear Timing.This bit can be + * set only in the initial setting (before communications).The + * setting cannot be changed once communication starts. */ + uint16_t : 1; + __IOM uint16_t TRNENSEL : 1; /*!< [8..8] Transaction-Enabled Time Select.The transfer efficiency + * can be improved by setting this bit to 1 if no low-speed + * device is connected directly or via FS-HUB to the USB port. */ + uint16_t : 7; + } SOFCFG_b; + }; + + union + { + __IOM uint16_t PHYSET; /*!< (@ 0x0000003E) PHY Setting Register */ + + struct + { + __IOM uint16_t DIRPD : 1; /*!< [0..0] Power-Down Control */ + __IOM uint16_t PLLRESET : 1; /*!< [1..1] PLL Reset Control */ + uint16_t : 1; + __IOM uint16_t CDPEN : 1; /*!< [3..3] Charging Downstream Port Enable */ + __IOM uint16_t CLKSEL : 2; /*!< [5..4] Input System Clock Frequency */ + uint16_t : 2; + __IOM uint16_t REPSEL : 2; /*!< [9..8] Terminating Resistance Adjustment Cycle */ + uint16_t : 1; + __IOM uint16_t REPSTART : 1; /*!< [11..11] Forcibly Start Terminating Resistance Adjustment */ + uint16_t : 3; + __IOM uint16_t HSEB : 1; /*!< [15..15] CL-Only Mode */ + } PHYSET_b; + }; + + union + { + __IOM uint16_t INTSTS0; /*!< (@ 0x00000040) Interrupt Status Register 0 */ + + struct + { + __IM uint16_t CTSQ : 3; /*!< [2..0] Control Transfer Stage */ + __IOM uint16_t VALID : 1; /*!< [3..3] USB Request Reception */ + __IM uint16_t DVSQ : 3; /*!< [6..4] Device State */ + __IM uint16_t VBSTS : 1; /*!< [7..7] VBUS Input Status */ + __IM uint16_t BRDY : 1; /*!< [8..8] Buffer Ready Interrupt Status */ + __IM uint16_t NRDY : 1; /*!< [9..9] Buffer Not Ready Interrupt Status */ + __IM uint16_t BEMP : 1; /*!< [10..10] Buffer Empty Interrupt Status */ + __IOM uint16_t CTRT : 1; /*!< [11..11] Control Transfer Stage Transition Interrupt Status */ + __IOM uint16_t DVST : 1; /*!< [12..12] Device State Transition Interrupt Status */ + __IOM uint16_t SOFR : 1; /*!< [13..13] Frame Number Refresh Interrupt Status */ + __IOM uint16_t RESM : 1; /*!< [14..14] Resume Interrupt Status */ + __IOM uint16_t VBINT : 1; /*!< [15..15] VBUS Interrupt Status */ + } INTSTS0_b; + }; + + union + { + __IOM uint16_t INTSTS1; /*!< (@ 0x00000042) Interrupt Status Register 1 */ + + struct + { + __IOM uint16_t PDDETINT0 : 1; /*!< [0..0] PDDET Detection Interrupt Status */ + uint16_t : 3; + __IOM uint16_t SACK : 1; /*!< [4..4] Setup Transaction Normal Response Interrupt Status */ + __IOM uint16_t SIGN : 1; /*!< [5..5] Setup Transaction Error Interrupt Status */ + __IOM uint16_t EOFERR : 1; /*!< [6..6] EOF Error Detection Interrupt Status */ + uint16_t : 1; + __IOM uint16_t LPMEND : 1; /*!< [8..8] LPM Transaction End Interrupt Status */ + __IOM uint16_t L1RSMEND : 1; /*!< [9..9] L1 Resume End Interrupt Status */ + uint16_t : 1; + __IOM uint16_t ATTCH : 1; /*!< [11..11] USB Connection Detection Interrupt Status */ + __IOM uint16_t DTCH : 1; /*!< [12..12] USB Disconnection Detection Interrupt Status */ + uint16_t : 1; + __IOM uint16_t BCHG : 1; /*!< [14..14] USB Bus Change Interrupt Status */ + __IOM uint16_t OVRCR : 1; /*!< [15..15] Overcurrent Interrupt Status */ + } INTSTS1_b; + }; + __IM uint16_t RESERVED8; + + union + { + __IOM uint16_t BRDYSTS; /*!< (@ 0x00000046) BRDY Interrupt Status Register */ + + struct + { + __IOM uint16_t PIPEBRDY : 10; /*!< [9..0] BRDY Interrupt Status for Each Pipe */ + uint16_t : 6; + } BRDYSTS_b; + }; + + union + { + __IOM uint16_t NRDYSTS; /*!< (@ 0x00000048) NRDY Interrupt Status Register */ + + struct + { + __IOM uint16_t PIPENRDY : 10; /*!< [9..0] NRDY Interrupt Status for Each Pipe */ + uint16_t : 6; + } NRDYSTS_b; + }; + + union + { + __IOM uint16_t BEMPSTS; /*!< (@ 0x0000004A) BEMP Interrupt Status Register */ + + struct + { + __IOM uint16_t PIPEBEMP : 10; /*!< [9..0] BEMP Interrupt Status for Each Pipe */ + uint16_t : 6; + } BEMPSTS_b; + }; + + union + { + __IOM uint16_t FRMNUM; /*!< (@ 0x0000004C) Frame Number Register */ + + struct + { + __IM uint16_t FRNM : 11; /*!< [10..0] Frame Number.Indicate the latest frame number. */ + uint16_t : 3; + __IOM uint16_t CRCE : 1; /*!< [14..14] CRC Error Detection Status */ + __IOM uint16_t OVRN : 1; /*!< [15..15] Overrun/Underrun Detection Status */ + } FRMNUM_b; + }; + + union + { + __IOM uint16_t UFRMNUM; /*!< (@ 0x0000004E) uFrame Number Register */ + + struct + { + __IM uint16_t UFRNM : 3; /*!< [2..0] MicroframeIndicate the microframe number. */ + uint16_t : 12; + __IOM uint16_t DVCHG : 1; /*!< [15..15] Device State Change */ + } UFRMNUM_b; + }; + + union + { + __IOM uint16_t USBADDR; /*!< (@ 0x00000050) USB Address Register */ + + struct + { + uint16_t : 8; + __IOM uint16_t STSRECOV0 : 3; /*!< [10..8] Status Recovery */ + uint16_t : 5; + } USBADDR_b; + }; + __IM uint16_t RESERVED9; + + union + { + __IOM uint16_t USBREQ; /*!< (@ 0x00000054) USB Request Type Register */ + + struct + { + __IOM uint16_t BMREQUESTTYPE : 8; /*!< [7..0] USB request bmRequestType value Finction controller selected + * : read-only Host controller selected : read-write */ + __IOM uint16_t BREQUEST : 8; /*!< [15..8] USB request bRequest value Finction controller selected + * : read-only Host controller selected : read-write */ + } USBREQ_b; + }; + + union + { + __IOM uint16_t USBVAL; /*!< (@ 0x00000056) USB Request Value Register */ + + struct + { + __IOM uint16_t WVALUE : 16; /*!< [15..0] Value of USB request wValue Finction controller selected + * : read-only Host controller selected : read-write */ + } USBVAL_b; + }; + + union + { + __IOM uint16_t USBINDX; /*!< (@ 0x00000058) USB Request Index Register */ + + struct + { + __IOM uint16_t WINDEX : 16; /*!< [15..0] Value of USB request wIndex Finction controller selected + * : read-only Host controller selected : read-write */ + } USBINDX_b; + }; + + union + { + __IOM uint16_t USBLENG; /*!< (@ 0x0000005A) USB Request Length Register */ + + struct + { + __IOM uint16_t WLENGTH : 16; /*!< [15..0] Value of USB request wLength Finction controller selected + * : read-only Host controller selected : read-write */ + } USBLENG_b; + }; + + union + { + __IOM uint16_t DCPCFG; /*!< (@ 0x0000005C) DCP Configuration Register */ + + struct + { + uint16_t : 4; + __IOM uint16_t DIR : 1; /*!< [4..4] Transfer Direction */ + uint16_t : 2; + __IOM uint16_t SHTNAK : 1; /*!< [7..7] Pipe Blocking on End of Transfer */ + __IOM uint16_t CNTMD : 1; /*!< [8..8] Continuous Transfer Mode */ + uint16_t : 7; + } DCPCFG_b; + }; + + union + { + __IOM uint16_t DCPMAXP; /*!< (@ 0x0000005E) DCP Maximum Packet Size Register */ + + struct + { + __IOM uint16_t MXPS : 7; /*!< [6..0] Maximum Packet SizeThese bits specify the maximum data + * payload (maximum packet size) for the DCP. */ + uint16_t : 5; + __IOM uint16_t DEVSEL : 4; /*!< [15..12] Device SelectThese bits specify the address of the + * destination function device for control transfer when the + * host controller function is selected. */ + } DCPMAXP_b; + }; + + union + { + __IOM uint16_t DCPCTR; /*!< (@ 0x00000060) DCP Control Register */ + + struct + { + __IOM uint16_t PID : 2; /*!< [1..0] Response PID */ + __IOM uint16_t CCPL : 1; /*!< [2..2] Control Transfer End Enable */ + uint16_t : 1; + __IOM uint16_t PINGE : 1; /*!< [4..4] PING Token Issue Enable */ + __IM uint16_t PBUSY : 1; /*!< [5..5] Pipe Busy */ + __IM uint16_t SQMON : 1; /*!< [6..6] Sequence Toggle Bit Monitor */ + __IOM uint16_t SQSET : 1; /*!< [7..7] Toggle Bit Set */ + __IOM uint16_t SQCLR : 1; /*!< [8..8] Toggle Bit Clear */ + uint16_t : 2; + __IOM uint16_t SUREQCLR : 1; /*!< [11..11] SUREQ Bit Clear */ + __IM uint16_t CSSTS : 1; /*!< [12..12] Split Transaction COMPLETE SPLIT(CSPLIT) Status */ + __IOM uint16_t CSCLR : 1; /*!< [13..13] Split Transaction CSPLIT Status Clear */ + __IOM uint16_t SUREQ : 1; /*!< [14..14] SETUP Token Transmission */ + __IM uint16_t BSTS : 1; /*!< [15..15] Buffer Status */ + } DCPCTR_b; + }; + __IM uint16_t RESERVED10; + __IOM uint16_t PIPESEL; /*!< (@ 0x00000064) Pipe Window Select Register */ + __IM uint16_t RESERVED11; + + union + { + __IOM uint16_t PIPECFG; /*!< (@ 0x00000068) Pipe Configuration Register */ + + struct + { + __IOM uint16_t EPNUM : 4; /*!< [3..0] Endpoint Number */ + __IOM uint16_t DIR : 1; /*!< [4..4] Transfer Direction */ + uint16_t : 2; + __IOM uint16_t SHTNAK : 1; /*!< [7..7] Pipe Disabled at End of Transfer */ + __IOM uint16_t CNTMD : 1; /*!< [8..8] Continuous Transfer Mode */ + __IOM uint16_t DBLB : 1; /*!< [9..9] Double Buffer Mode */ + __IOM uint16_t BFRE : 1; /*!< [10..10] BRDY Interrupt Operation Specification */ + uint16_t : 3; + __IOM uint16_t TYPE : 2; /*!< [15..14] Transfer Type */ + } PIPECFG_b; + }; + + union + { + __IOM uint16_t PIPEBUF; /*!< (@ 0x0000006A) Pipe Buffer Register */ + + struct + { + __IOM uint16_t BUFNMB : 8; /*!< [7..0] Buffer NumberThese bits specify the FIFO buffer number + * of the selected pipe (04h to 87h). */ + uint16_t : 2; + __IOM uint16_t BUFSIZE : 5; /*!< [14..10] Buffer Size 00h: 64 bytes 01h: 128 bytes : 1Fh: 2 Kbytes */ + uint16_t : 1; + } PIPEBUF_b; + }; + + union + { + __IOM uint16_t PIPEMAXP; /*!< (@ 0x0000006C) Pipe Maximum Packet Size Register */ + + struct + { + __IOM uint16_t MXPS : 11; /*!< [10..0] Maximum Packet SizeThese bits specify the maximum data + * payload (maximum packet size) for the selected pipe.A size + * of 1h to 40h bytes can be set for PIPE6 to PIPE9. */ + uint16_t : 1; + __IOM uint16_t DEVSEL : 4; /*!< [15..12] Device SelectThese bits specify the address of the + * peripheral device when the host controller function is + * selected. */ + } PIPEMAXP_b; + }; + + union + { + __IOM uint16_t PIPEPERI; /*!< (@ 0x0000006E) Pipe Cycle Control Register */ + + struct + { + __IOM uint16_t IITV : 3; /*!< [2..0] Interval Error Detection IntervalThese bits specify the + * transfer interval timing for the selected pipe as n-th + * power of 2 of the frame timing. */ + uint16_t : 9; + __IOM uint16_t IFIS : 1; /*!< [12..12] Isochronous IN Buffer Flush */ + uint16_t : 3; + } PIPEPERI_b; + }; + + union + { + __IOM uint16_t PIPE_CTR[9]; /*!< (@ 0x00000070) PIPE Control Register */ + + struct + { + __IOM uint16_t PID : 2; /*!< [1..0] Response PIDThese bits specify the response type for + * the next transaction of the relevant pipe. */ + uint16_t : 3; + __IM uint16_t PBUSY : 1; /*!< [5..5] Pipe BusyThis bit indicates whether the relevant pipe + * is being used for the USB bus */ + __IM uint16_t SQMON : 1; /*!< [6..6] Toggle Bit ConfirmationThis bit indicates the expected + * value of the sequence toggle bit for the next transaction + * of the relevant pipe */ + __IOM uint16_t SQSET : 1; /*!< [7..7] Toggle Bit SetThis bit is set to 1 when the expected + * value of the sequence toggle bit for the next transaction + * of the relevant pipe is set for DATA1 */ + __IOM uint16_t SQCLR : 1; /*!< [8..8] Toggle Bit ClearThis bit is set to 1 when the expected + * value of the sequence toggle bit for the next transaction + * of the relevant pipe is cleared to DATA0 */ + __IOM uint16_t ACLRM : 1; /*!< [9..9] Auto Buffer Clear ModeThis bit enables or disables auto + * buffer clear mode for the relevant pipe */ + __IOM uint16_t ATREPM : 1; /*!< [10..10] Auto Response ModeThis bit enables or disables auto + * response mode for the relevant pipe. */ + uint16_t : 1; + __IM uint16_t CSSTS : 1; /*!< [12..12] CSSTS StatusThis bit indicates the CSPLIT status of + * Split Transaction of the relevant pipe */ + __IOM uint16_t CSCLR : 1; /*!< [13..13] CSPLIT Status ClearSet this bit to 1 when clearing + * the CSSTS bit of the relevant pipe */ + __IM uint16_t INBUFM : 1; /*!< [14..14] Transmit Buffer MonitorThis bit indicates the FIFO + * buffer status for the relevant pipe in the transmitting + * direction. */ + __IM uint16_t BSTS : 1; /*!< [15..15] Buffer StatusThis bit indicates the FIFO buffer status + * for the relevant pipe. */ + } PIPE_CTR_b[9]; + }; + __IM uint16_t RESERVED12; + __IM uint32_t RESERVED13[3]; + __IOM R_USB_HS0_PIPE_TR_Type PIPE_TR[5]; /*!< (@ 0x00000090) Pipe Transaction Counter Registers */ + __IM uint32_t RESERVED14[11]; + + union + { + __IOM uint16_t DEVADD[10]; /*!< (@ 0x000000D0) Device Address Configuration Register */ + + struct + { + uint16_t : 6; + __IOM uint16_t USBSPD : 2; /*!< [7..6] Transfer Speed of Communication Target Device */ + __IOM uint16_t HUBPORT : 3; /*!< [10..8] Communication Target Connecting Hub Port */ + __IOM uint16_t UPPHUB : 4; /*!< [14..11] Communication Target Connecting Hub Register */ + uint16_t : 1; + } DEVADD_b[10]; + }; + __IM uint32_t RESERVED15[7]; + + union + { + __IOM uint16_t LPCTRL; /*!< (@ 0x00000100) Low Power Control Register */ + + struct + { + uint16_t : 7; + __IOM uint16_t HWUPM : 1; /*!< [7..7] Resume Return Mode Setting */ + uint16_t : 8; + } LPCTRL_b; + }; + + union + { + __IOM uint16_t LPSTS; /*!< (@ 0x00000102) Low Power Status Register */ + + struct + { + uint16_t : 14; + __IOM uint16_t SUSPENDM : 1; /*!< [14..14] UTMI SuspendM Control */ + uint16_t : 1; + } LPSTS_b; + }; + __IM uint32_t RESERVED16[15]; + + union + { + __IOM uint16_t BCCTRL; /*!< (@ 0x00000140) Battery Charging Control Register */ + + struct + { + __IOM uint16_t IDPSRCE : 1; /*!< [0..0] IDPSRC Control */ + __IOM uint16_t IDMSINKE : 1; /*!< [1..1] IDMSINK Control */ + __IOM uint16_t VDPSRCE : 1; /*!< [2..2] VDPSRC Control */ + __IOM uint16_t IDPSINKE : 1; /*!< [3..3] IDPSINK Control */ + __IOM uint16_t VDMSRCE : 1; /*!< [4..4] VDMSRC Control */ + __IOM uint16_t DCPMODE : 1; /*!< [5..5] DCP Mode Control */ + uint16_t : 2; + __IM uint16_t CHGDETSTS : 1; /*!< [8..8] CHGDET Status */ + __IM uint16_t PDDETSTS : 1; /*!< [9..9] PDDET Status */ + uint16_t : 6; + } BCCTRL_b; + }; + __IM uint16_t RESERVED17; + + union + { + __IOM uint16_t PL1CTRL1; /*!< (@ 0x00000144) Function L1 Control Register 1 */ + + struct + { + __IOM uint16_t L1RESPEN : 1; /*!< [0..0] L1 Response Enable */ + __IOM uint16_t L1RESPMD : 2; /*!< [2..1] L1 Response Mode */ + __IOM uint16_t L1NEGOMD : 1; /*!< [3..3] L1 Response Negotiation Control.NOTE: This bit is valid + * only when the L1RESPMD[1:0] value is 2'b11. */ + __IM uint16_t DVSQ : 4; /*!< [7..4] DVSQ Extension.DVSQ[3] is Mirror of DVSQ[2:0] in INTSTS0.Indicates + * the L1 state together with the device state bits DVSQ[2:0]. */ + __IOM uint16_t HIRDTHR : 4; /*!< [11..8] L1 Response Negotiation Threshold ValueHIRD threshold + * value used for L1NEGOMD.The format is the same as the HIRD + * field in HL1CTRL. */ + uint16_t : 2; + __IOM uint16_t L1EXTMD : 1; /*!< [14..14] PHY Control Mode at L1 Return */ + uint16_t : 1; + } PL1CTRL1_b; + }; + + union + { + __IOM uint16_t PL1CTRL2; /*!< (@ 0x00000146) Function L1 Control Register 2 */ + + struct + { + uint16_t : 8; + __IOM uint16_t HIRDMON : 4; /*!< [11..8] HIRD Value Monitor */ + __IOM uint16_t RWEMON : 1; /*!< [12..12] RWE Value Monitor */ + uint16_t : 3; + } PL1CTRL2_b; + }; + + union + { + __IOM uint16_t HL1CTRL1; /*!< (@ 0x00000148) Host L1 Control Register 1 */ + + struct + { + __IOM uint16_t L1REQ : 1; /*!< [0..0] L1 Transition Request */ + __IM uint16_t L1STATUS : 2; /*!< [2..1] L1 Request Completion Status */ + uint16_t : 13; + } HL1CTRL1_b; + }; + + union + { + __IOM uint16_t HL1CTRL2; /*!< (@ 0x0000014A) Host L1 Control Register 2 */ + + struct + { + __IOM uint16_t L1ADDR : 4; /*!< [3..0] LPM Token DeviceAddressThese bits specify the value to + * be set in the ADDR field of LPM token. */ + uint16_t : 4; + __IOM uint16_t HIRD : 4; /*!< [11..8] LPM Token HIRD */ + __IOM uint16_t L1RWE : 1; /*!< [12..12] LPM Token L1 RemoteWake EnableThese bits specify the + * value to be set in the RWE field of LPM token. */ + uint16_t : 2; + __IOM uint16_t BESL : 1; /*!< [15..15] BESL & Alternate HIRDThis bit selects the K-State drive + * period at the time of L1 Resume. */ + } HL1CTRL2_b; + }; + __IM uint32_t RESERVED18; + + union + { + __IOM uint16_t PHYTRIM1; /*!< (@ 0x00000150) PHY Timing Register 1 */ + + struct + { + __IOM uint16_t DRISE : 2; /*!< [1..0] FS/LS Rising-Edge Output Waveform Adjustment Function */ + __IOM uint16_t DFALL : 2; /*!< [3..2] FS/LS Falling-Edge Output Waveform Adjustment Function */ + uint16_t : 3; + __IOM uint16_t PCOMPENB : 1; /*!< [7..7] PVDD Start-up Detection */ + __IOM uint16_t HSIUP : 4; /*!< [11..8] HS Output Level Setting */ + __IOM uint16_t IMPOFFSET : 3; /*!< [14..12] terminating resistance offset value setting.Offset + * value for adjusting the terminating resistance. */ + uint16_t : 1; + } PHYTRIM1_b; + }; + + union + { + __IOM uint16_t PHYTRIM2; /*!< (@ 0x00000152) PHY Timing Register 2 */ + + struct + { + __IOM uint16_t SQU : 4; /*!< [3..0] Squelch Detection Level */ + uint16_t : 3; + __IOM uint16_t HSRXENMO : 1; /*!< [7..7] HS Receive Enable Control Mode */ + __IOM uint16_t PDR : 2; /*!< [9..8] HS Output Adjustment Function */ + uint16_t : 2; + __IOM uint16_t DIS : 3; /*!< [14..12] Disconnect Detection Level */ + uint16_t : 1; + } PHYTRIM2_b; + }; + __IM uint32_t RESERVED19[3]; + + union + { + __IM uint32_t DPUSR0R; /*!< (@ 0x00000160) Deep Standby USB Transceiver Control/Pin Monitor + * Register */ + + struct + { + uint32_t : 20; + __IM uint32_t DOVCAHM : 1; /*!< [20..20] OVRCURA InputIndicates OVRCURA input signal on the + * HS side of USB port. */ + __IM uint32_t DOVCBHM : 1; /*!< [21..21] OVRCURB InputIndicates OVRCURB input signal on the + * HS side of USB port. */ + uint32_t : 1; + __IM uint32_t DVBSTSHM : 1; /*!< [23..23] VBUS InputIndicates VBUS input signal on the HS side + * of USB port. */ + uint32_t : 8; + } DPUSR0R_b; + }; + + union + { + __IOM uint32_t DPUSR1R; /*!< (@ 0x00000164) Deep Standby USB Suspend/Resume Interrupt Register */ + + struct + { + uint32_t : 4; + __IOM uint32_t DOVCAHE : 1; /*!< [4..4] OVRCURA Interrupt Enable Clear */ + __IOM uint32_t DOVCBHE : 1; /*!< [5..5] OVRCURB Interrupt Enable Clear */ + uint32_t : 1; + __IOM uint32_t DVBSTSHE : 1; /*!< [7..7] VBUS Interrupt Enable/Clear */ + uint32_t : 12; + __IM uint32_t DOVCAH : 1; /*!< [20..20] Indication of Return from OVRCURA Interrupt Source */ + __IM uint32_t DOVCBH : 1; /*!< [21..21] Indication of Return from OVRCURB Interrupt Source */ + uint32_t : 1; + __IM uint32_t DVBSTSH : 1; /*!< [23..23] Indication of Return from VBUS Interrupt Source */ + uint32_t : 8; + } DPUSR1R_b; + }; + + union + { + __IOM uint16_t DPUSR2R; /*!< (@ 0x00000168) Deep Standby USB Suspend/Resume Interrupt Register */ + + struct + { + __IM uint16_t DPINT : 1; /*!< [0..0] Indication of Return from DP Interrupt Source */ + __IM uint16_t DMINT : 1; /*!< [1..1] Indication of Return from DM Interrupt Source */ + uint16_t : 2; + __IM uint16_t DPVAL : 1; /*!< [4..4] DP InputIndicates DP input signal on the HS side of USB + * port. */ + __IM uint16_t DMVAL : 1; /*!< [5..5] DM InputIndicates DM input signal on the HS side of USB + * port. */ + uint16_t : 2; + __IOM uint16_t DPINTE : 1; /*!< [8..8] DP Interrupt Enable Clear */ + __IOM uint16_t DMINTE : 1; /*!< [9..9] DM Interrupt Enable Clear */ + uint16_t : 6; + } DPUSR2R_b; + }; + + union + { + __IOM uint16_t DPUSRCR; /*!< (@ 0x0000016A) Deep Standby USB Suspend/Resume Command Register */ + + struct + { + __IOM uint16_t FIXPHY : 1; /*!< [0..0] USB Transceiver Control Fix */ + __IOM uint16_t FIXPHYPD : 1; /*!< [1..1] USB Transceiver Control Fix for PLL */ + uint16_t : 14; + } DPUSRCR_b; + }; +} R_USB_HS0_Type; /*!< Size = 364 (0x16c) */ + +/* =========================================================================================================================== */ +/* ================ R_XSPI ================ */ +/* =========================================================================================================================== */ + +/** + * @brief eXpanded SPI (R_XSPI) + */ + +typedef struct /*!< (@ 0x40268000) R_XSPI Structure */ +{ + union + { + __IOM uint32_t WRAPCFG; /*!< (@ 0x00000000) xSPI Wrapper Configuration register */ + + struct + { + __IOM uint32_t CKSFTCS0 : 5; /*!< [4..0] CK shift for slave0 */ + uint32_t : 3; + __IOM uint32_t DSSFTCS0 : 5; /*!< [12..8] DS shift for slave0 */ + uint32_t : 3; + __IOM uint32_t CKSFTCS1 : 5; /*!< [20..16] CK shift for slave1 */ + uint32_t : 3; + __IOM uint32_t DSSFTCS1 : 5; /*!< [28..24] DS shift for slave1 */ + uint32_t : 3; + } WRAPCFG_b; + }; + + union + { + __IOM uint32_t COMCFG; /*!< (@ 0x00000004) xSPI Common Configuration register */ + + struct + { + __IOM uint32_t ARBMD : 2; /*!< [1..0] Channel arbitration mode */ + uint32_t : 2; + __IOM uint32_t ECSINTOUTEN : 2; /*!< [5..4] ECS/INT Output Enable */ + uint32_t : 10; + __IOM uint32_t OEASTEX : 1; /*!< [16..16] Output Enable Asserting extension */ + __IOM uint32_t OENEGEX : 1; /*!< [17..17] Output Enable Negating extension */ + uint32_t : 14; + } COMCFG_b; + }; + + union + { + __IOM uint32_t BMCFGCH[2]; /*!< (@ 0x00000008) xSPI Bridge Map Configuration register */ + + struct + { + __IOM uint32_t WRMD : 1; /*!< [0..0] AHB Write Response mode */ + uint32_t : 6; + __IOM uint32_t MWRCOMB : 1; /*!< [7..7] Memory Write Combination mode */ + __IOM uint32_t MWRSIZE : 8; /*!< [15..8] Memory Write Size */ + __IOM uint32_t PREEN : 1; /*!< [16..16] Prefetch enable */ + uint32_t : 7; + __IOM uint32_t CMBTIM : 8; /*!< [31..24] Combination timer */ + } BMCFGCH_b[2]; + }; + __IOM R_XSPI_CMCFGCS_Type CMCFGCS[2]; /*!< (@ 0x00000010) xSPI Command Map Configuration registers */ + __IM uint32_t RESERVED[8]; + + union + { + __IOM uint32_t LIOCFGCS[2]; /*!< (@ 0x00000050) xSPI Link I/O Configuration register CS[0..1] */ + + struct + { + __IOM uint32_t PRTMD : 10; /*!< [9..0] Protocol mode */ + __IOM uint32_t LATEMD : 1; /*!< [10..10] Latency mode */ + __IOM uint32_t WRMSKMD : 1; /*!< [11..11] Write mask mode */ + uint32_t : 4; + __IOM uint32_t CSMIN : 4; /*!< [19..16] CS minimum idle term */ + __IOM uint32_t CSASTEX : 1; /*!< [20..20] CS asserting extension */ + __IOM uint32_t CSNEGEX : 1; /*!< [21..21] CS negating extension */ + __IOM uint32_t SDRDRV : 1; /*!< [22..22] SDR driving timing */ + __IOM uint32_t SDRSMPMD : 1; /*!< [23..23] SDR Sampling mode */ + __IOM uint32_t SDRSMPSFT : 4; /*!< [27..24] SDR Sampling window shift */ + __IOM uint32_t DDRSMPEX : 4; /*!< [31..28] DDR sampling window extend */ + } LIOCFGCS_b[2]; + }; + + union + { + __IOM uint32_t ABMCFG; /*!< (@ 0x00000058) xSPI AXI Bridge Map Config */ + + struct + { + __IOM uint32_t ODRMD : 2; /*!< [1..0] AXI Transfer Ordering Mode */ + uint32_t : 14; + __IOM uint32_t CHSEL : 16; /*!< [31..16] AXI ID to Bridge Channel Select */ + } ABMCFG_b; + }; + __IM uint32_t RESERVED1; + + union + { + __IOM uint32_t BMCTL0; /*!< (@ 0x00000060) xSPI Bridge Map Control register 0 */ + + struct + { + __IOM uint32_t CH0CS0ACC : 2; /*!< [1..0] System bus ch0 to slave0 memory area access enable */ + __IOM uint32_t CH0CS1ACC : 2; /*!< [3..2] System bus ch0 to slave1 memory area access enable */ + __IOM uint32_t CH1CS0ACC : 2; /*!< [5..4] System bus ch1 to slave0 memory area access enable */ + __IOM uint32_t CH1CS1ACC : 2; /*!< [7..6] System bus ch1 to slave1 memory area access enable */ + uint32_t : 24; + } BMCTL0_b; + }; + + union + { + __OM uint32_t BMCTL1; /*!< (@ 0x00000064) xSPI Bridge Map Control register 1 */ + + struct + { + uint32_t : 8; + __OM uint32_t MWRPUSHCH0 : 1; /*!< [8..8] Memory Write Data Push for ch0 */ + __OM uint32_t MWRPUSHCH1 : 1; /*!< [9..9] Memory Write Data Push for ch1 */ + __OM uint32_t PBUFCLRCH0 : 1; /*!< [10..10] Prefetch Buffer clear for ch0 */ + __OM uint32_t PBUFCLRCH1 : 1; /*!< [11..11] Prefetch Buffer clear for ch1 */ + uint32_t : 20; + } BMCTL1_b; + }; + + union + { + __IOM uint32_t CMCTLCH[2]; /*!< (@ 0x00000068) xSPI Command Map Control register */ + + struct + { + __IOM uint32_t XIPENCODE : 8; /*!< [7..0] XiP mode enter code */ + __IOM uint32_t XIPEXCODE : 8; /*!< [15..8] XiP mode exit code */ + __IOM uint32_t XIPEN : 1; /*!< [16..16] XiP mode enable */ + uint32_t : 15; + } CMCTLCH_b[2]; + }; + + union + { + __IOM uint32_t CDCTL0; /*!< (@ 0x00000070) xSPI Command Manual Control register 0 */ + + struct + { + __IOM uint32_t TRREQ : 1; /*!< [0..0] Transaction request */ + __IOM uint32_t PERMD : 1; /*!< [1..1] Periodic mode */ + uint32_t : 1; + __IOM uint32_t CSSEL : 1; /*!< [3..3] Chip select */ + __IOM uint32_t TRNUM : 2; /*!< [5..4] Transaction number */ + uint32_t : 10; + __IOM uint32_t PERITV : 5; /*!< [20..16] Periodic transaction interval */ + uint32_t : 3; + __IOM uint32_t PERREP : 4; /*!< [27..24] Periodic transaction repeat */ + uint32_t : 4; + } CDCTL0_b; + }; + + union + { + __IOM uint32_t CDCTL1; /*!< (@ 0x00000074) xSPI Command Manual Control register 1 */ + + struct + { + __IOM uint32_t PEREXP : 32; /*!< [31..0] Periodic transaction expected value */ + } CDCTL1_b; + }; + + union + { + __IOM uint32_t CDCTL2; /*!< (@ 0x00000078) xSPI Command Manual Control register 2 */ + + struct + { + __IOM uint32_t PERMSK : 32; /*!< [31..0] Periodic transaction masked value */ + } CDCTL2_b; + }; + __IM uint32_t RESERVED2; + __IOM R_XSPI_CDBUF_Type CDBUF[4]; /*!< (@ 0x00000080) xSPI BUF register */ + __IM uint32_t RESERVED3[16]; + + union + { + __IOM uint32_t LPCTL0; /*!< (@ 0x00000100) xSPI Link Pattern Control register 0 */ + + struct + { + __IOM uint32_t PATREQ : 1; /*!< [0..0] Pattern request */ + uint32_t : 2; + __IOM uint32_t CSSEL : 1; /*!< [3..3] Chip select */ + __IOM uint32_t XDPIN : 2; /*!< [5..4] XiP Disable pattern pin */ + uint32_t : 10; + __IOM uint32_t XD1LEN : 5; /*!< [20..16] XiP Disable pattern 1st phase length */ + uint32_t : 2; + __IOM uint32_t XD1VAL : 1; /*!< [23..23] XiP Disable pattern 1st phase value */ + __IOM uint32_t XD2LEN : 5; /*!< [28..24] XiP Disable pattern 2nd phase length */ + uint32_t : 2; + __IOM uint32_t XD2VAL : 1; /*!< [31..31] XiP Disable pattern 2nd phase value */ + } LPCTL0_b; + }; + + union + { + __IOM uint32_t LPCTL1; /*!< (@ 0x00000104) xSPI Link Pattern Control register 1 */ + + struct + { + __IOM uint32_t PATREQ : 2; /*!< [1..0] Pattern request */ + uint32_t : 1; + __IOM uint32_t CSSEL : 1; /*!< [3..3] Chip select */ + __IOM uint32_t RSTREP : 2; /*!< [5..4] Reset pattern repeat */ + uint32_t : 2; + __IOM uint32_t RSTWID : 3; /*!< [10..8] Reset pattern width */ + uint32_t : 1; + __IOM uint32_t RSTSU : 3; /*!< [14..12] Reset pattern data output setup time */ + uint32_t : 17; + } LPCTL1_b; + }; + + union + { + __IOM uint32_t LIOCTL; /*!< (@ 0x00000108) xSPI Link I/O Control register */ + + struct + { + __IOM uint32_t WPCS0 : 1; /*!< [0..0] WP drive for slave 0 */ + __IOM uint32_t WPCS1 : 1; /*!< [1..1] WP drive for slave 1 */ + uint32_t : 14; + __IOM uint32_t RSTCS0 : 1; /*!< [16..16] Reset drive for slave 0 */ + __IOM uint32_t RSTCS1 : 1; /*!< [17..17] Reset drive for slave 1 */ + uint32_t : 14; + } LIOCTL_b; + }; + __IM uint32_t RESERVED4[9]; + __IOM R_XSPI_CCCTLCS_Type CCCTLCS[2]; /*!< (@ 0x00000130) xSPI CS register */ + __IM uint32_t RESERVED5[4]; + + union + { + __IM uint32_t VERSTT; /*!< (@ 0x00000180) xSPI Version register */ + + struct + { + __IM uint32_t VER : 32; /*!< [31..0] Version */ + } VERSTT_b; + }; + + union + { + __IM uint32_t COMSTT; /*!< (@ 0x00000184) xSPI Common Status register */ + + struct + { + __IM uint32_t MEMACCCH0 : 1; /*!< [0..0] Memory access ongoing from ch0 */ + __IM uint32_t MEMACCCH1 : 1; /*!< [1..1] Memory access ongoing from ch1 */ + uint32_t : 2; + __IM uint32_t PBUFNECH0 : 1; /*!< [4..4] Prefetch Buffer Not Empty for ch0 */ + __IM uint32_t PBUFNECH1 : 1; /*!< [5..5] Prefetch Buffer Not Empty for ch1 */ + __IM uint32_t WRBUFNECH0 : 1; /*!< [6..6] Write Buffer Not Empty for ch0 */ + __IM uint32_t WRBUFNECH1 : 1; /*!< [7..7] Write Buffer Not Empty for ch1 */ + uint32_t : 8; + __IM uint32_t ECSCS0 : 1; /*!< [16..16] ECS monitor for slave0 */ + __IM uint32_t INTCS0 : 1; /*!< [17..17] INT monitor for slave0 */ + __IM uint32_t RSTOCS0 : 1; /*!< [18..18] RSTO monitor for slave0 */ + uint32_t : 1; + __IM uint32_t ECSCS1 : 1; /*!< [20..20] ECS monitor for slave1 */ + __IM uint32_t INTCS1 : 1; /*!< [21..21] INT monitor for slave1 */ + __IM uint32_t RSTOCS1 : 1; /*!< [22..22] RSTO monitor for slave1 */ + uint32_t : 9; + } COMSTT_b; + }; + + union + { + __IM uint32_t CASTTCS[2]; /*!< (@ 0x00000188) xSPI Calibration Status register */ + + struct + { + __IM uint32_t CASUC : 32; /*!< [31..0] Calibration Success */ + } CASTTCS_b[2]; + }; + + union + { + __IM uint32_t INTS; /*!< (@ 0x00000190) xSPI Interrupt Status register */ + + struct + { + __IM uint32_t CMDCMP : 1; /*!< [0..0] Command Completed */ + __IM uint32_t PATCMP : 1; /*!< [1..1] Pattern Completed */ + __IM uint32_t INICMP : 1; /*!< [2..2] Initial Sequence Completed */ + __IM uint32_t PERTO : 1; /*!< [3..3] Periodic transaction timeout */ + __IM uint32_t DSTOCS0 : 1; /*!< [4..4] DS timeout for slave0 */ + __IM uint32_t DSTOCS1 : 1; /*!< [5..5] DS timeout for slave1 */ + uint32_t : 2; + __IM uint32_t ECSCS0 : 1; /*!< [8..8] ECC error detection for slave0 */ + __IM uint32_t ECSCS1 : 1; /*!< [9..9] ECC error detection for slave1 */ + uint32_t : 2; + __IM uint32_t INTCS0 : 1; /*!< [12..12] Interrupt detection for slave0 */ + __IM uint32_t INTCS1 : 1; /*!< [13..13] Interrupt detection for slave1 */ + uint32_t : 2; + __IM uint32_t BRGOFCH0 : 1; /*!< [16..16] Bridge Buffer overflow for CH0 */ + __IM uint32_t BRGOFCH1 : 1; /*!< [17..17] Bridge Buffer overflow for CH1 */ + __IM uint32_t BRGUFCH0 : 1; /*!< [18..18] Bridge Buffer underflow for CH0 */ + __IM uint32_t BRGUFCH1 : 1; /*!< [19..19] Bridge Buffer underflow for CH1 */ + __IM uint32_t BUSERRCH0 : 1; /*!< [20..20] AHB bus error for CH0 */ + __IM uint32_t BUSERRCH1 : 1; /*!< [21..21] AHB bus error for CH1 */ + uint32_t : 6; + __IM uint32_t CAFAILCS0 : 1; /*!< [28..28] Calibration failed for slave0 */ + __IM uint32_t CAFAILCS1 : 1; /*!< [29..29] Calibration failed for slave1 */ + __IM uint32_t CASUCCS0 : 1; /*!< [30..30] Calibration success for slave0 */ + __IM uint32_t CASUCCS1 : 1; /*!< [31..31] Calibration success for slave1 */ + } INTS_b; + }; + + union + { + __OM uint32_t INTC; /*!< (@ 0x00000194) xSPI Interrupt Clear register */ + + struct + { + __OM uint32_t CMDCMPC : 1; /*!< [0..0] Command Completed interrupt clear */ + __OM uint32_t PATCMPC : 1; /*!< [1..1] Pattern Completed interrupt clear */ + __OM uint32_t INICMPC : 1; /*!< [2..2] Initial Sequence Completed interrupt clear */ + __OM uint32_t PERTOC : 1; /*!< [3..3] Periodic transaction timeout interrupt clear */ + __OM uint32_t DSTOCS0C : 1; /*!< [4..4] DS timeout for slave0 interrupt clear */ + __OM uint32_t DSTOCS1C : 1; /*!< [5..5] DS timeout for slave1 interrupt clear */ + uint32_t : 2; + __OM uint32_t ECSCS0C : 1; /*!< [8..8] ECC error detection for slave0 interrupt clear */ + __OM uint32_t ECSCS1C : 1; /*!< [9..9] ECC error detection for slave1 interrupt clear */ + uint32_t : 2; + __OM uint32_t INTCS0C : 1; /*!< [12..12] Interrupt detection for slave0 interrupt clear */ + __OM uint32_t INTCS1C : 1; /*!< [13..13] Interrupt detection for slave1 interrupt clear */ + uint32_t : 2; + __OM uint32_t BRGOFCH0C : 1; /*!< [16..16] Bridge Buffer overflow for CH0 interrupt clear */ + __OM uint32_t BRGOFCH1C : 1; /*!< [17..17] Bridge Buffer overflow for CH1 interrupt clear */ + __OM uint32_t BRGUFCH0C : 1; /*!< [18..18] Bridge Buffer underflow for CH0 interrupt clear */ + __OM uint32_t BRGUFCH1C : 1; /*!< [19..19] Bridge Buffer underflow for CH1 interrupt clear */ + __OM uint32_t BUSERRCH0C : 1; /*!< [20..20] AHB bus error for CH0 interrupt clear */ + __OM uint32_t BUSERRCH1C : 1; /*!< [21..21] AHB bus error for CH1 interrupt clear */ + uint32_t : 6; + __OM uint32_t CAFAILCS0C : 1; /*!< [28..28] Calibration failed for slave0 interrupt clear */ + __OM uint32_t CAFAILCS1C : 1; /*!< [29..29] Calibration failed for slave1 interrupt clear */ + __OM uint32_t CASUCCS0C : 1; /*!< [30..30] Calibration success for slave0 interrupt clear */ + __OM uint32_t CASUCCS1C : 1; /*!< [31..31] Calibration success for slave1 interrupt clear */ + } INTC_b; + }; + + union + { + __IOM uint32_t INTE; /*!< (@ 0x00000198) xSPI Interrupt Enable register */ + + struct + { + __IOM uint32_t CMDCMPE : 1; /*!< [0..0] Command Completed interrupt enable */ + __IOM uint32_t PATCMPE : 1; /*!< [1..1] Pattern Completed interrupt enable */ + __IOM uint32_t INICMPE : 1; /*!< [2..2] Initial Sequence Completed interrupt enable */ + __IOM uint32_t PERTOE : 1; /*!< [3..3] Periodic transaction timeout interrupt enable */ + __IOM uint32_t DSTOCS0E : 1; /*!< [4..4] DS timeout for slave0 interrupt enable */ + __IOM uint32_t DSTOCS1E : 1; /*!< [5..5] DS timeout for slave1 interrupt enable */ + uint32_t : 2; + __IOM uint32_t ECSCS0E : 1; /*!< [8..8] ECC error detection for slave0 interrupt enable */ + __IOM uint32_t ECSCS1E : 1; /*!< [9..9] ECC error detection for slave1 interrupt enable */ + uint32_t : 2; + __IOM uint32_t INTCS0E : 1; /*!< [12..12] Interrupt detection for slave0 interrupt enable */ + __IOM uint32_t INTCS1E : 1; /*!< [13..13] Interrupt detection for slave1 interrupt enable */ + uint32_t : 2; + __IOM uint32_t BRGOFCH0E : 1; /*!< [16..16] Bridge Buffer overflow for CH0 interrupt enable */ + __IOM uint32_t BRGOFCH1E : 1; /*!< [17..17] Bridge Buffer overflow for CH1 interrupt enable */ + __IOM uint32_t BRGUFCH0E : 1; /*!< [18..18] Bridge Buffer underflow for CH0 interrupt enable */ + __IOM uint32_t BRGUFCH1E : 1; /*!< [19..19] Bridge Buffer underflow for CH1 interrupt enable */ + __IOM uint32_t BUSERRCH0E : 1; /*!< [20..20] AHB bus error for CH0 interrupt enable */ + __IOM uint32_t BUSERRCH1E : 1; /*!< [21..21] AHB bus error for CH1 interrupt enable */ + uint32_t : 6; + __IOM uint32_t CAFAILCS0E : 1; /*!< [28..28] Calibration failed for slave0 interrupt enable */ + __IOM uint32_t CAFAILCS1E : 1; /*!< [29..29] Calibration failed for slave1 interrupt enable */ + __IOM uint32_t CASUCCS0E : 1; /*!< [30..30] Calibration success for slave0 interrupt enable */ + __IOM uint32_t CASUCCS1E : 1; /*!< [31..31] Calibration success for slave1 interrupt enable */ + } INTE_b; + }; +} R_XSPI_Type; /*!< Size = 412 (0x19c) */ + +/* =========================================================================================================================== */ +/* ================ R_CEU ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Capture Engine Unit (R_CEU) + */ + +typedef struct /*!< (@ 0x40348000) R_CEU Structure */ +{ + union + { + __IOM uint32_t CAPSR; /*!< (@ 0x00000000) Capture Start Register */ + + struct + { + __IOM uint32_t CE : 1; /*!< [0..0] Capture enable */ + uint32_t : 15; + __IOM uint32_t CPKIL : 1; /*!< [16..16] Write 1 to this bit to perform a software reset of + * capturing. */ + uint32_t : 15; + } CAPSR_b; + }; + + union + { + __IOM uint32_t CAPCR; /*!< (@ 0x00000004) Capture Control Register */ + + struct + { + uint32_t : 16; + __IOM uint32_t CTNCP : 1; /*!< [16..16] When capturing is started with this bit set to 1, capturing + * continues until the CE bit in CAPSR is cleared to 0 or + * a software reset is initiated by the CPKIL bit in CAPSR + * (see ). Continuous capture must be set before capturing + * is started. */ + uint32_t : 3; + __IOM uint32_t MTCM : 2; /*!< [21..20] Specify the unit for transferring data to a bus bridge + * module. */ + uint32_t : 2; + __IOM uint32_t FDRP : 8; /*!< [31..24] Set the frame drop interval in continuous-frame capture. */ + } CAPCR_b; + }; + + union + { + __IOM uint32_t CAMCR; /*!< (@ 0x00000008) Capture interface control register */ + + struct + { + __IOM uint32_t HDPOL : 1; /*!< [0..0] Sets the polarity for detection of the horizontal sync + * signal input from an external module. */ + __IOM uint32_t VDPOL : 1; /*!< [1..1] Sets the polarity for detection of the vertical sync + * signal input from an external module. */ + uint32_t : 2; + __IOM uint32_t JPG : 2; /*!< [5..4] These bits select the fetched data type. */ + uint32_t : 2; + __IOM uint32_t DTARY : 2; /*!< [9..8] Set the input order of the luminance component and chrominance + * component. */ + uint32_t : 2; + __IOM uint32_t DTIF : 1; /*!< [12..12] Sets the digital image input pins from which data is + * to be captured. */ + uint32_t : 3; + __IOM uint32_t FLDPOL : 1; /*!< [16..16] Sets the polarity of the field identification signal + * (FLD) from an external module. */ + uint32_t : 7; + __IOM uint32_t DSEL : 1; /*!< [24..24] Sets the edge for fetching the image data (D7 to D0) + * from an external module. */ + __IOM uint32_t FLDSEL : 1; /*!< [25..25] Sets the edge for capturing the field identification + * signal (FLD) from an external module. */ + __IOM uint32_t HDSEL : 1; /*!< [26..26] Sets the edge for capturing the horizontal sync signal + * (HD) from an external module. */ + __IOM uint32_t VDSEL : 1; /*!< [27..27] Sets the edge for capturing the vertical sync signal + * (VD) from an external module. */ + uint32_t : 4; + } CAMCR_b; + }; + + union + { + __IOM uint32_t CMCYR; /*!< (@ 0x0000000C) Capture Interface Cycle Register */ + + struct + { + __IOM uint32_t HCYL : 14; /*!< [13..0] Horizontal Cycle Count of External Module */ + uint32_t : 2; + __IOM uint32_t VCYL : 14; /*!< [29..16] Vertical HD Count of External Module */ + uint32_t : 2; + } CMCYR_b; + }; + + union + { + __IOM uint32_t CAMOR; /*!< (@ 0x00000010) Capture Interface Offset Register */ + + struct + { + __IOM uint32_t HOFST : 13; /*!< [12..0] Specify the capture start location in terms of the number + * of clock cycles from a horizontal sync signal (1-cycle + * units). */ + uint32_t : 3; + __IOM uint32_t VOFST : 12; /*!< [27..16] Specify the capture start location in terms of the + * HD count from a vertical sync signal (1-HD units). */ + uint32_t : 4; + } CAMOR_b; + }; + + union + { + __IOM uint32_t CAPWR; /*!< (@ 0x00000014) Capture Interface Width Register */ + + struct + { + __IOM uint32_t HWDTH : 13; /*!< [12..0] Specify the horizontal capture period. */ + uint32_t : 3; + __IOM uint32_t VWDTH : 12; /*!< [27..16] Specify the vertical capture period (4-HD units). */ + uint32_t : 4; + } CAPWR_b; + }; + + union + { + __IOM uint32_t CAIFR; /*!< (@ 0x00000018) Capture Interface Input Format Register */ + + struct + { + __IOM uint32_t FCI : 2; /*!< [1..0] Set the timing to start capturing. */ + uint32_t : 2; + __IOM uint32_t CIM : 1; /*!< [4..4] Sets the images to be captured. */ + uint32_t : 3; + __IOM uint32_t IFS : 1; /*!< [8..8] Sets the input mode for capturing images. */ + uint32_t : 23; + } CAIFR_b; + }; + __IM uint32_t RESERVED[3]; + + union + { + __IOM uint32_t CRCNTR; /*!< (@ 0x00000028) CEU Register Control Register */ + + struct + { + __IOM uint32_t RC : 1; /*!< [0..0] Specifies switching of the register plane used by the + * CEU in synchronization with VD. */ + __IOM uint32_t RS : 1; /*!< [1..1] Specifies which register plane is used by the CEU in + * synchronization with VD. */ + uint32_t : 2; + __IOM uint32_t RVS : 1; /*!< [4..4] Sets the timing to switch the register plane in both-field + * capture. */ + uint32_t : 27; + } CRCNTR_b; + }; + + union + { + __IOM uint32_t CRCMPR; /*!< (@ 0x0000002C) CEU Register Forcible Control Register */ + + struct + { + __IOM uint32_t RA : 1; /*!< [0..0] Indicates the register plane currently specified. */ + uint32_t : 31; + } CRCMPR_b; + }; + + union + { + __IOM uint32_t CFLCR; /*!< (@ 0x00000030) Capture Filter Control Register */ + + struct + { + __IOM uint32_t HFRAC : 12; /*!< [11..0] Fraction Part of Horizontal Scale-Down Factor */ + __IOM uint32_t HMANT : 4; /*!< [15..12] Mantissa Part of Horizontal Scale-Down Factor */ + __IOM uint32_t VFRAC : 12; /*!< [27..16] Fraction Part of Vertical Scale-Down Factor */ + __IOM uint32_t VMANT : 4; /*!< [31..28] Mantissa Part of Vertical Scale-Down Factor */ + } CFLCR_b; + }; + + union + { + __IOM uint32_t CFSZR; /*!< (@ 0x00000034) Capture Filter Size Clip Register */ + + struct + { + __IOM uint32_t HFCLP : 12; /*!< [11..0] Specify the horizontal clipping value of the filter + * output size (4-pixel units). */ + uint32_t : 4; + __IOM uint32_t VFCLP : 12; /*!< [27..16] Set the vertical clipping value of the filter output + * size (4-pixel units). */ + uint32_t : 4; + } CFSZR_b; + }; + + union + { + __IOM uint32_t CDWDR; /*!< (@ 0x00000038) Capture Destination Width Register */ + + struct + { + __IOM uint32_t CHDW : 13; /*!< [12..0] Specify the horizontal image size in the memory area + * where the captured image is to be stored (4-byte units). */ + uint32_t : 19; + } CDWDR_b; + }; + + union + { + __IOM uint32_t CDAYR; /*!< (@ 0x0000003C) Capture Data Address Y Register */ + + struct + { + __IOM uint32_t CAYR : 32; /*!< [31..0] Capture Data Address Y */ + } CDAYR_b; + }; + + union + { + __IOM uint32_t CDACR; /*!< (@ 0x00000040) Capture Data Address C Register */ + + struct + { + __IOM uint32_t CACR : 32; /*!< [31..0] Capture Data Address C */ + } CDACR_b; + }; + + union + { + __IOM uint32_t CDBYR; /*!< (@ 0x00000044) Capture Data Bottom-Field Address Y Register */ + + struct + { + __IOM uint32_t CBYR : 32; /*!< [31..0] Set the address for storing the Y (luminance) component + * data of the captured bottom-field data (4-pixel units). */ + } CDBYR_b; + }; + + union + { + __IOM uint32_t CDBCR; /*!< (@ 0x00000048) Capture Data Bottom-Field Address C Register */ + + struct + { + __IOM uint32_t CBCR : 32; /*!< [31..0] Set the address for storing the C (chrominance) component + * data of the captured bottom-field data (4-pixel units). */ + } CDBCR_b; + }; + + union + { + __IOM uint32_t CBDSR; /*!< (@ 0x0000004C) Capture Bundle Destination Size Register */ + + struct + { + __IOM uint32_t CBVS : 23; /*!< [22..0] Select the number of lines or number of bytes for output + * to the memory in a bundle write. */ + uint32_t : 9; + } CBDSR_b; + }; + __IM uint32_t RESERVED1[3]; + + union + { + __IOM uint32_t CFWCR; /*!< (@ 0x0000005C) Firewall Operation Control Register */ + + struct + { + __IOM uint32_t FWE : 1; /*!< [0..0] With the setting of FWE = 1, when an address exceeds + * the value set with FWV, the address is retained and an + * interrupt source FWF is set. After this, the address is + * not incremented and data is overwritten on the upper limit + * address. */ + uint32_t : 4; + __IOM uint32_t FWV : 27; /*!< [31..5] Specify the upper limit of a write address. */ + } CFWCR_b; + }; + + union + { + __IOM uint32_t CLFCR; /*!< (@ 0x00000060) Capture Low-Pass Filter Control Register */ + + struct + { + __IOM uint32_t LPF : 1; /*!< [0..0] Enables or disables operation of the low-pass filter. */ + uint32_t : 31; + } CLFCR_b; + }; + + union + { + __IOM uint32_t CDOCR; /*!< (@ 0x00000064) Capture Data Output Control Register */ + + struct + { + __IOM uint32_t COBS : 1; /*!< [0..0] Controls swapping in 8-bit units for data output from + * the CEU. */ + __IOM uint32_t COWS : 1; /*!< [1..1] Controls swapping in 16-bit units for data output from + * the CEU. */ + __IOM uint32_t COLS : 1; /*!< [2..2] Controls swapping in 32-bit units for data output from + * the CEU. */ + uint32_t : 1; + __IOM uint32_t CDS : 1; /*!< [4..4] Sets the image format when outputting the image data + * captured in the YCbCr422 format to the memory. */ + uint32_t : 11; + __IOM uint32_t CBE : 1; /*!< [16..16] Controls the number of lines of captured data to be + * written to the memory. */ + uint32_t : 15; + } CDOCR_b; + }; + __IM uint32_t RESERVED2[2]; + + union + { + __IOM uint32_t CEIER; /*!< (@ 0x00000070) Capture Event Interrupt Enable Register */ + + struct + { + __IOM uint32_t CPEIE : 1; /*!< [0..0] One-Frame Capture End Interrupt Enable */ + __IOM uint32_t CFEIE : 1; /*!< [1..1] CFE Interrupt Enable */ + uint32_t : 2; + __IOM uint32_t IGRWIE : 1; /*!< [4..4] Register-Access-During-Capture Interrupt Enable */ + uint32_t : 3; + __IOM uint32_t HDIE : 1; /*!< [8..8] HD Interrupt Enable */ + __IOM uint32_t VDIE : 1; /*!< [9..9] VD Interrupt Enable */ + uint32_t : 2; + __IOM uint32_t CPBE1IE : 1; /*!< [12..12] CPBE1 Interrupt Enable */ + __IOM uint32_t CPBE2IE : 1; /*!< [13..13] CPBE2 Interrupt Enable */ + __IOM uint32_t CPBE3IE : 1; /*!< [14..14] CPBE3 Interrupt Enable */ + __IOM uint32_t CPBE4IE : 1; /*!< [15..15] CPBE4 Interrupt Enable */ + __IOM uint32_t CDTOFIE : 1; /*!< [16..16] CDTOF Interrupt Enable */ + __IOM uint32_t IGHSIE : 1; /*!< [17..17] IGHS Interrupt Enable */ + __IOM uint32_t IGVSIE : 1; /*!< [18..18] IGVS Interrupt Enable */ + uint32_t : 1; + __IOM uint32_t VBPIE : 1; /*!< [20..20] VBP Interrupt Enable */ + uint32_t : 2; + __IOM uint32_t FWFIE : 1; /*!< [23..23] FWF Interrupt Enable */ + __IOM uint32_t NHDIE : 1; /*!< [24..24] Non-HD Interrupt Enable */ + __IOM uint32_t NVDIE : 1; /*!< [25..25] Non-VD Interrupt Enable */ + uint32_t : 6; + } CEIER_b; + }; + + union + { + __IOM uint32_t CETCR; /*!< (@ 0x00000074) Capture Event Flag Clear Register */ + + struct + { + __IOM uint32_t CPE : 1; /*!< [0..0] An interrupt indicating that capturing of one frame from + * an external module has finished. */ + __IOM uint32_t CFE : 1; /*!< [1..1] An interrupt indicating that capturing of one field from + * an external module has finished. */ + uint32_t : 2; + __IOM uint32_t IGRW : 1; /*!< [4..4] An interrupt indicating that during capturing, access + * was attempted to a register to which writing during operation + * is prohibited. */ + uint32_t : 3; + __IOM uint32_t HD : 1; /*!< [8..8] An interrupt indicating that HD (horizontal sync signal) + * was input from an external module. */ + __IOM uint32_t VD : 1; /*!< [9..9] An interrupt indicating that VD (vertical sync signal) + * was input from an external module. */ + uint32_t : 2; + __IOM uint32_t CPBE1 : 1; /*!< [12..12] An interrupt indicating that writing to CDAYR and CDACR + * in a bundle write has finished. */ + __IOM uint32_t CPBE2 : 1; /*!< [13..13] An interrupt indicating that writing to CDAYR2 and + * CDACR2 in a bundle write has finished. */ + __IOM uint32_t CPBE3 : 1; /*!< [14..14] An interrupt indicating that writing to CDBYR and CDBCR + * in a bundle write has finished. */ + __IOM uint32_t CPBE4 : 1; /*!< [15..15] An interrupt indicating that writing to CDBYR2 and + * CDBCR2 in a bundle write has finished. */ + __IOM uint32_t CDTOF : 1; /*!< [16..16] An interrupt indicating that data overflowed in the + * CRAM of the write buffer */ + __IOM uint32_t IGHS : 1; /*!< [17..17] An interrupt generated when the number of HD cycles + * set in CMCYR differ from the number of HD cycles input + * from an external module. */ + __IOM uint32_t IGVS : 1; /*!< [18..18] An interrupt generated when the number of VD cycles + * set in CMCYR differ from the number of VD cycles input + * from an external module. */ + uint32_t : 1; + __IOM uint32_t VBP : 1; /*!< [20..20] An interrupt indicating that VD has been input while + * the CEU holds data (insufficient vertical-sync front porch). */ + uint32_t : 2; + __IOM uint32_t FWF : 1; /*!< [23..23] The interrupt is generated when data is written to + * the address that exceeds the value specified with CFWCR.FMV. */ + __IOM uint32_t NHD : 1; /*!< [24..24] An interrupt indicating that no HD was input. */ + __IOM uint32_t NVD : 1; /*!< [25..25] An interrupt indicating that no VD was input. */ + uint32_t : 6; + } CETCR_b; + }; + __IM uint32_t RESERVED3; + + union + { + __IM uint32_t CSTSR; /*!< (@ 0x0000007C) Capture Status Register */ + + struct + { + __IM uint32_t CPTON : 1; /*!< [0..0] Indicates that the CEU is operating. */ + uint32_t : 15; + __IM uint32_t CPFLD : 1; /*!< [16..16] Indicates which field is being captured. */ + uint32_t : 7; + __IM uint32_t CRST : 1; /*!< [24..24] Indicates which register plane is currently used. */ + uint32_t : 7; + } CSTSR_b; + }; + __IM uint32_t RESERVED4; + + union + { + __IM uint32_t CDSSR; /*!< (@ 0x00000084) Capture Data Size Register */ + + struct + { + __IM uint32_t CDSS : 32; /*!< [31..0] Indicate the size of data written to the memory in data + * enable fetch. */ + } CDSSR_b; + }; + __IM uint32_t RESERVED5[2]; + + union + { + __IOM uint32_t CDAYR2; /*!< (@ 0x00000090) Capture Data Address Y Register 2 */ + + struct + { + __IOM uint32_t CAYR2 : 32; /*!< [31..0] Capture Data Address Y */ + } CDAYR2_b; + }; + + union + { + __IOM uint32_t CDACR2; /*!< (@ 0x00000094) Capture Data Address C Register 2 */ + + struct + { + __IOM uint32_t CACR2 : 32; /*!< [31..0] Capture Data Address C2 */ + } CDACR2_b; + }; + + union + { + __IOM uint32_t CDBYR2; /*!< (@ 0x00000098) Capture Data Bottom-Field Address Y Register + * 2 */ + + struct + { + __IOM uint32_t CBYR2 : 32; /*!< [31..0] Set the address for storing the Y component data of + * the captured bottom-field data (4-pixel units). */ + } CDBYR2_b; + }; + + union + { + __IOM uint32_t CDBCR2; /*!< (@ 0x0000009C) Capture Data Bottom-Field Address C Register + * 2 */ + + struct + { + __IOM uint32_t CBCR2 : 32; /*!< [31..0] Set the address for storing the C component data of + * the captured bottom-field data (4-pixel units). */ + } CDBCR2_b; + }; + + union + { + __IOM uint32_t AXIBUSCTL2; /*!< (@ 0x000000A0) AXI Bus Control Register 2 */ + + struct + { + __IOM uint32_t AWCACHE : 4; /*!< [3..0] AWCACHE[3:0] Signals for Capture Engine Unit */ + uint32_t : 28; + } AXIBUSCTL2_b; + }; + __IM uint32_t RESERVED6[987]; + + union + { + __IOM uint32_t CAMOR_B; /*!< (@ 0x00001010) Capture Interface Offset Register */ + + struct + { + __IOM uint32_t HOFST : 13; /*!< [12..0] Specify the capture start location in terms of the number + * of clock cycles from a horizontal sync signal (1-cycle + * units). */ + uint32_t : 3; + __IOM uint32_t VOFST : 12; /*!< [27..16] Specify the capture start location in terms of the + * HD count from a vertical sync signal (1-HD units). */ + uint32_t : 4; + } CAMOR_B_b; + }; + + union + { + __IOM uint32_t CAPWR_B; /*!< (@ 0x00001014) Capture Interface Width Register */ + + struct + { + __IOM uint32_t HWDTH : 13; /*!< [12..0] Specify the horizontal capture period. */ + uint32_t : 3; + __IOM uint32_t VWDTH : 12; /*!< [27..16] Specify the vertical capture period (4-HD units). */ + uint32_t : 4; + } CAPWR_B_b; + }; + __IM uint32_t RESERVED7[6]; + + union + { + __IOM uint32_t CFLCR_B; /*!< (@ 0x00001030) Capture Filter Control Register */ + + struct + { + __IOM uint32_t HFRAC : 12; /*!< [11..0] Fraction Part of Horizontal Scale-Down Factor */ + __IOM uint32_t HMANT : 4; /*!< [15..12] Mantissa Part of Horizontal Scale-Down Factor */ + __IOM uint32_t VFRAC : 12; /*!< [27..16] Fraction Part of Vertical Scale-Down Factor */ + __IOM uint32_t VMANT : 4; /*!< [31..28] Mantissa Part of Vertical Scale-Down Factor */ + } CFLCR_B_b; + }; + + union + { + __IOM uint32_t CFSZR_B; /*!< (@ 0x00001034) Capture Filter Size Clip Register */ + + struct + { + __IOM uint32_t HFCLP : 12; /*!< [11..0] Specify the horizontal clipping value of the filter + * output size (4-pixel units). */ + uint32_t : 4; + __IOM uint32_t VFCLP : 12; /*!< [27..16] Set the vertical clipping value of the filter output + * size (4-pixel units). */ + uint32_t : 4; + } CFSZR_B_b; + }; + + union + { + __IOM uint32_t CDWDR_B; /*!< (@ 0x00001038) Capture Destination Width Register */ + + struct + { + __IOM uint32_t CHDW : 13; /*!< [12..0] Specify the horizontal image size in the memory area + * where the captured image is to be stored (4-byte units). */ + uint32_t : 19; + } CDWDR_B_b; + }; + + union + { + __IOM uint32_t CDAYR_B; /*!< (@ 0x0000103C) Capture Data Address Y Register */ + + struct + { + __IOM uint32_t CAYR : 32; /*!< [31..0] Capture Data Address Y */ + } CDAYR_B_b; + }; + + union + { + __IOM uint32_t CDACR_B; /*!< (@ 0x00001040) Capture Data Address C Register */ + + struct + { + __IOM uint32_t CACR : 32; /*!< [31..0] Capture Data Address C */ + } CDACR_B_b; + }; + + union + { + __IOM uint32_t CDBYR_B; /*!< (@ 0x00001044) Capture Data Bottom-Field Address Y Register */ + + struct + { + __IOM uint32_t CBYR : 32; /*!< [31..0] Set the address for storing the Y (luminance) component + * data of the captured bottom-field data (4-pixel units). */ + } CDBYR_B_b; + }; + + union + { + __IOM uint32_t CDBCR_B; /*!< (@ 0x00001048) Capture Data Bottom-Field Address C Register */ + + struct + { + __IOM uint32_t CBCR : 32; /*!< [31..0] Set the address for storing the C (chrominance) component + * data of the captured bottom-field data (4-pixel units). */ + } CDBCR_B_b; + }; + + union + { + __IOM uint32_t CBDSR_B; /*!< (@ 0x0000104C) Capture Bundle Destination Size Register */ + + struct + { + __IOM uint32_t CBVS : 23; /*!< [22..0] Select the number of lines or number of bytes for output + * to the memory in a bundle write. */ + uint32_t : 9; + } CBDSR_B_b; + }; + __IM uint32_t RESERVED8[4]; + + union + { + __IOM uint32_t CLFCR_B; /*!< (@ 0x00001060) Capture Low-Pass Filter Control Register */ + + struct + { + __IOM uint32_t LPF : 1; /*!< [0..0] Enables or disables operation of the low-pass filter. */ + uint32_t : 31; + } CLFCR_B_b; + }; + + union + { + __IOM uint32_t CDOCR_B; /*!< (@ 0x00001064) Capture Data Output Control Register */ + + struct + { + __IOM uint32_t COBS : 1; /*!< [0..0] Controls swapping in 8-bit units for data output from + * the CEU. */ + __IOM uint32_t COWS : 1; /*!< [1..1] Controls swapping in 16-bit units for data output from + * the CEU. */ + __IOM uint32_t COLS : 1; /*!< [2..2] Controls swapping in 32-bit units for data output from + * the CEU. */ + uint32_t : 1; + __IOM uint32_t CDS : 1; /*!< [4..4] Sets the image format when outputting the image data + * captured in the YCbCr422 format to the memory. */ + uint32_t : 11; + __IOM uint32_t CBE : 1; /*!< [16..16] Controls the number of lines of captured data to be + * written to the memory. */ + uint32_t : 15; + } CDOCR_B_b; + }; + __IM uint32_t RESERVED9[10]; + + union + { + __IOM uint32_t CDAYR2_B; /*!< (@ 0x00001090) Capture Data Address Y Register 2 */ + + struct + { + __IOM uint32_t CAYR2 : 32; /*!< [31..0] Capture Data Address Y */ + } CDAYR2_B_b; + }; + + union + { + __IOM uint32_t CDACR2_B; /*!< (@ 0x00001094) Capture Data Address C Register 2 */ + + struct + { + __IOM uint32_t CACR2 : 32; /*!< [31..0] Capture Data Address C2 */ + } CDACR2_B_b; + }; + + union + { + __IOM uint32_t CDBYR2_B; /*!< (@ 0x00001098) Capture Data Bottom-Field Address Y Register + * 2 */ + + struct + { + __IOM uint32_t CBYR2 : 32; /*!< [31..0] Set the address for storing the Y component data of + * the captured bottom-field data (4-pixel units). */ + } CDBYR2_B_b; + }; + + union + { + __IOM uint32_t CDBCR2_B; /*!< (@ 0x0000109C) Capture Data Bottom-Field Address C Register + * 2 */ + + struct + { + __IOM uint32_t CBCR2 : 32; /*!< [31..0] Set the address for storing the C component data of + * the captured bottom-field data (4-pixel units). */ + } CDBCR2_B_b; + }; + __IM uint32_t RESERVED10[988]; + + union + { + __IOM uint32_t CAMOR_M; /*!< (@ 0x00002010) Capture Interface Offset Register */ + + struct + { + __IOM uint32_t HOFST : 13; /*!< [12..0] Specify the capture start location in terms of the number + * of clock cycles from a horizontal sync signal (1-cycle + * units). */ + uint32_t : 3; + __IOM uint32_t VOFST : 12; /*!< [27..16] Specify the capture start location in terms of the + * HD count from a vertical sync signal (1-HD units). */ + uint32_t : 4; + } CAMOR_M_b; + }; + + union + { + __IOM uint32_t CAPWR_M; /*!< (@ 0x00002014) Capture Interface Width Register */ + + struct + { + __IOM uint32_t HWDTH : 13; /*!< [12..0] Specify the horizontal capture period. */ + uint32_t : 3; + __IOM uint32_t VWDTH : 12; /*!< [27..16] Specify the vertical capture period (4-HD units). */ + uint32_t : 4; + } CAPWR_M_b; + }; + __IM uint32_t RESERVED11[6]; + + union + { + __IOM uint32_t CFLCR_M; /*!< (@ 0x00002030) Capture Filter Control Register */ + + struct + { + __IOM uint32_t HFRAC : 12; /*!< [11..0] Fraction Part of Horizontal Scale-Down Factor */ + __IOM uint32_t HMANT : 4; /*!< [15..12] Mantissa Part of Horizontal Scale-Down Factor */ + __IOM uint32_t VFRAC : 12; /*!< [27..16] Fraction Part of Vertical Scale-Down Factor */ + __IOM uint32_t VMANT : 4; /*!< [31..28] Mantissa Part of Vertical Scale-Down Factor */ + } CFLCR_M_b; + }; + + union + { + __IOM uint32_t CFSZR_M; /*!< (@ 0x00002034) Capture Filter Size Clip Register */ + + struct + { + __IOM uint32_t HFCLP : 12; /*!< [11..0] Specify the horizontal clipping value of the filter + * output size (4-pixel units). */ + uint32_t : 4; + __IOM uint32_t VFCLP : 12; /*!< [27..16] Set the vertical clipping value of the filter output + * size (4-pixel units). */ + uint32_t : 4; + } CFSZR_M_b; + }; + + union + { + __IOM uint32_t CDWDR_M; /*!< (@ 0x00002038) Capture Destination Width Register */ + + struct + { + __IOM uint32_t CHDW : 13; /*!< [12..0] Specify the horizontal image size in the memory area + * where the captured image is to be stored (4-byte units). */ + uint32_t : 19; + } CDWDR_M_b; + }; + + union + { + __IOM uint32_t CDAYR_M; /*!< (@ 0x0000203C) Capture Data Address Y Register */ + + struct + { + __IOM uint32_t CAYR : 32; /*!< [31..0] Capture Data Address Y */ + } CDAYR_M_b; + }; + + union + { + __IOM uint32_t CDACR_M; /*!< (@ 0x00002040) Capture Data Address C Register */ + + struct + { + __IOM uint32_t CACR : 32; /*!< [31..0] Capture Data Address C */ + } CDACR_M_b; + }; + + union + { + __IOM uint32_t CDBYR_M; /*!< (@ 0x00002044) Capture Data Bottom-Field Address Y Register */ + + struct + { + __IOM uint32_t CBYR : 32; /*!< [31..0] Set the address for storing the Y (luminance) component + * data of the captured bottom-field data (4-pixel units). */ + } CDBYR_M_b; + }; + + union + { + __IOM uint32_t CDBCR_M; /*!< (@ 0x00002048) Capture Data Bottom-Field Address C Register */ + + struct + { + __IOM uint32_t CBCR : 32; /*!< [31..0] Set the address for storing the C (chrominance) component + * data of the captured bottom-field data (4-pixel units). */ + } CDBCR_M_b; + }; + + union + { + __IOM uint32_t CBDSR_M; /*!< (@ 0x0000204C) Capture Bundle Destination Size Register */ + + struct + { + __IOM uint32_t CBVS : 23; /*!< [22..0] Select the number of lines or number of bytes for output + * to the memory in a bundle write. */ + uint32_t : 9; + } CBDSR_M_b; + }; + __IM uint32_t RESERVED12[4]; + + union + { + __IOM uint32_t CLFCR_M; /*!< (@ 0x00002060) Capture Low-Pass Filter Control Register */ + + struct + { + __IOM uint32_t LPF : 1; /*!< [0..0] Enables or disables operation of the low-pass filter. */ + uint32_t : 31; + } CLFCR_M_b; + }; + + union + { + __IOM uint32_t CDOCR_M; /*!< (@ 0x00002064) Capture Data Output Control Register */ + + struct + { + __IOM uint32_t COBS : 1; /*!< [0..0] Controls swapping in 8-bit units for data output from + * the CEU. */ + __IOM uint32_t COWS : 1; /*!< [1..1] Controls swapping in 16-bit units for data output from + * the CEU. */ + __IOM uint32_t COLS : 1; /*!< [2..2] Controls swapping in 32-bit units for data output from + * the CEU. */ + uint32_t : 1; + __IOM uint32_t CDS : 1; /*!< [4..4] Sets the image format when outputting the image data + * captured in the YCbCr422 format to the memory. */ + uint32_t : 11; + __IOM uint32_t CBE : 1; /*!< [16..16] Controls the number of lines of captured data to be + * written to the memory. */ + uint32_t : 15; + } CDOCR_M_b; + }; + __IM uint32_t RESERVED13[10]; + + union + { + __IOM uint32_t CDAYR2_M; /*!< (@ 0x00002090) Capture Data Address Y Register 2 */ + + struct + { + __IOM uint32_t CAYR2 : 32; /*!< [31..0] Capture Data Address Y */ + } CDAYR2_M_b; + }; + + union + { + __IOM uint32_t CDACR2_M; /*!< (@ 0x00002094) Capture Data Address C Register 2 */ + + struct + { + __IOM uint32_t CACR2 : 32; /*!< [31..0] Capture Data Address C2 */ + } CDACR2_M_b; + }; + + union + { + __IOM uint32_t CDBYR2_M; /*!< (@ 0x00002098) Capture Data Bottom-Field Address Y Register + * 2 */ + + struct + { + __IOM uint32_t CBYR2 : 32; /*!< [31..0] Set the address for storing the Y component data of + * the captured bottom-field data (4-pixel units). */ + } CDBYR2_M_b; + }; + + union + { + __IOM uint32_t CDBCR2_M; /*!< (@ 0x0000209C) Capture Data Bottom-Field Address C Register + * 2 */ + + struct + { + __IOM uint32_t CBCR2 : 32; /*!< [31..0] Set the address for storing the C component data of + * the captured bottom-field data (4-pixel units). */ + } CDBCR2_M_b; + }; +} R_CEU_Type; /*!< Size = 8352 (0x20a0) */ + +/* =========================================================================================================================== */ +/* ================ R_ULPT0 ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Ultra-Low Power Timer 0 (R_ULPT0) + */ + +typedef struct /*!< (@ 0x40220000) R_ULPT0 Structure */ +{ + union + { + __IOM uint32_t ULPTCNT; /*!< (@ 0x00000000) ULPT Counter Register */ + + struct + { + __IOM uint32_t ULPTCNT : 32; /*!< [31..0] 32bit counter and reload registerNOTE : When 1 is written + * to the TSTOP bit in the ULPTCR register, the 32-bit counter + * is forcibly stopped and set to FFFFFFFFH. */ + } ULPTCNT_b; + }; + + union + { + __IOM uint32_t ULPTCMA; /*!< (@ 0x00000004) ULPT Compare Match A Register */ + + struct + { + __IOM uint32_t ULPTCMA : 32; /*!< [31..0] ULPT Compare Match A RegisterNOTE : When 1 is written + * to the TSTOP bit in the ULPTCR register, set to FFFFFFFFH */ + } ULPTCMA_b; + }; + + union + { + __IOM uint32_t ULPTCMB; /*!< (@ 0x00000008) ULPT Compare Match B Register */ + + struct + { + __IOM uint32_t ULPTCMB : 32; /*!< [31..0] AGT Compare Match B RegisterNOTE : When 1 is written + * to the TSTOP bit in the ULPTCR register, set to FFFFFFFFH */ + } ULPTCMB_b; + }; + + union + { + __IOM uint8_t ULPTCR; /*!< (@ 0x0000000C) ULPT Control Register */ + + struct + { + __IOM uint8_t TSTART : 1; /*!< [0..0] ULPT count start */ + __IM uint8_t TCSTF : 1; /*!< [1..1] ULPT count status flag */ + __OM uint8_t TSTOP : 1; /*!< [2..2] ULPT count forced stop */ + uint8_t : 2; + __IOM uint8_t TUNDF : 1; /*!< [5..5] ULPT underflow flag */ + __IOM uint8_t TCMAF : 1; /*!< [6..6] ULPT compare match A flag */ + __IOM uint8_t TCMBF : 1; /*!< [7..7] ULPT compare match B flag */ + } ULPTCR_b; + }; + + union + { + __IOM uint8_t ULPTMR1; /*!< (@ 0x0000000D) ULPT Mode Register 1 */ + + struct + { + uint8_t : 1; + __IOM uint8_t TMOD1 : 1; /*!< [1..1] ULPT operating mode select */ + uint8_t : 1; + __IOM uint8_t TEDGPL : 1; /*!< [3..3] ULPTEVI edge polarity select */ + uint8_t : 1; + __IOM uint8_t TCK1 : 1; /*!< [5..5] ULPT count source select */ + uint8_t : 2; + } ULPTMR1_b; + }; + + union + { + __IOM uint8_t ULPTMR2; /*!< (@ 0x0000000E) ULPT Mode Register 2 */ + + struct + { + __IOM uint8_t CKS : 3; /*!< [2..0] fsub/LOCO count source clock frequency division ratio + * select */ + uint8_t : 4; + __IOM uint8_t LPM : 1; /*!< [7..7] ULPT Low Power Mode */ + } ULPTMR2_b; + }; + + union + { + __IOM uint8_t ULPTMR3; /*!< (@ 0x0000000F) ULPT Mode Register 3 */ + + struct + { + __IOM uint8_t TCNTCTL : 1; /*!< [0..0] ULPT count function select */ + __IOM uint8_t TEVPOL : 1; /*!< [1..1] ULPTEVI polarity switch */ + __IOM uint8_t TOPOL : 1; /*!< [2..2] ULPTO polarity select */ + uint8_t : 1; + __IOM uint8_t TEECTL : 2; /*!< [5..4] ULPTEE function select */ + __IOM uint8_t TEEPOL : 2; /*!< [7..6] ULPTEE edge polarity select */ + } ULPTMR3_b; + }; + + union + { + __IOM uint8_t ULPTIOC; /*!< (@ 0x00000010) ULPT I/O Control Register */ + + struct + { + uint8_t : 2; + __IOM uint8_t TOE : 1; /*!< [2..2] ULPTO output enable */ + uint8_t : 1; + __IOM uint8_t TIPF : 2; /*!< [5..4] ULPTEVI input filter select */ + __IOM uint8_t TIOGT0 : 1; /*!< [6..6] ULPTEVI count control */ + uint8_t : 1; + } ULPTIOC_b; + }; + + union + { + __IOM uint8_t ULPTISR; /*!< (@ 0x00000011) ULPT Event Pin Select Register */ + + struct + { + uint8_t : 2; + __IOM uint8_t RCCPSEL2 : 1; /*!< [2..2] ULPTEE polarty selection */ + uint8_t : 5; + } ULPTISR_b; + }; + + union + { + __IOM uint8_t ULPTCMSR; /*!< (@ 0x00000012) ULPT Compare Match Function Select Register */ + + struct + { + __IOM uint8_t TCMEA : 1; /*!< [0..0] Compare match A register enable */ + __IOM uint8_t TOEA : 1; /*!< [1..1] ULPTOA output enable */ + __IOM uint8_t TOPOLA : 1; /*!< [2..2] ULPTOA polarity select */ + uint8_t : 1; + __IOM uint8_t TCMEB : 1; /*!< [4..4] Compare match B register enable */ + __IOM uint8_t TOEB : 1; /*!< [5..5] ULPTOB output enable */ + __IOM uint8_t TOPOLB : 1; /*!< [6..6] ULPTOB polarity select */ + uint8_t : 1; + } ULPTCMSR_b; + }; + __IM uint8_t RESERVED; +} R_ULPT0_Type; /*!< Size = 20 (0x14) */ + +/* =========================================================================================================================== */ +/* ================ R_DEBUG_OCD ================ */ +/* =========================================================================================================================== */ + +/** + * @brief On-Chip Debug Function (R_DEBUG_OCD) + */ + +typedef struct /*!< (@ 0x40011000) R_DEBUG_OCD Structure */ +{ + __IM uint32_t RESERVED[192]; + + union + { + __IM uint32_t FSBLSTATM; /*!< (@ 0x00000300) First Stage Boot Loader Status Monitor Register */ + + struct + { + __IM uint32_t CS : 1; /*!< [0..0] FSBL completion status. */ + __IM uint32_t RS : 1; /*!< [1..1] FSBL result status. */ + uint32_t : 30; + } FSBLSTATM_b; + }; +} R_DEBUG_OCD_Type; /*!< Size = 772 (0x304) */ + +/* =========================================================================================================================== */ +/* ================ R_DOTF ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Decryption On The Fly (R_DOTF) + */ + +typedef struct /*!< (@ 0x40268800) R_DOTF Structure */ +{ + union + { + __IOM uint32_t CONVAREAST; /*!< (@ 0x00000000) DOTF Conversion Area Start Address Register */ + + struct + { + uint32_t : 12; + __IOM uint32_t CONVAREAST : 20; /*!< [31..12] First address of decryption processing area */ + } CONVAREAST_b; + }; + + union + { + __IOM uint32_t CONVAREAD; /*!< (@ 0x00000004) DOTF Conversion Area End Address Register */ + + struct + { + uint32_t : 12; + __IOM uint32_t CONVAREAD : 20; /*!< [31..12] End address of decryption processing area */ + } CONVAREAD_b; + }; + __IM uint32_t RESERVED[30]; + + union + { + __IOM uint32_t REG00; /*!< (@ 0x00000080) Register 0 */ + + struct + { + uint32_t : 9; + __IOM uint32_t B09 : 1; /*!< [9..9] Bit 09 */ + uint32_t : 6; + __IOM uint32_t B16 : 1; /*!< [16..16] Bit 09 */ + __IOM uint32_t B17 : 1; /*!< [17..17] Bit 17 */ + uint32_t : 2; + __IOM uint32_t B20 : 1; /*!< [20..20] Bit 20 */ + uint32_t : 3; + __IOM uint32_t B24 : 2; /*!< [25..24] Bit24-25 */ + uint32_t : 2; + __IOM uint32_t B28 : 2; /*!< [29..28] Bit28-29 */ + uint32_t : 2; + } REG00_b; + }; + __IM uint32_t RESERVED1[2]; + + union + { + __IOM uint32_t REG03; /*!< (@ 0x0000008C) Register 03 */ + + struct + { + __IOM uint32_t B00 : 32; /*!< [31..0] Bit 0 */ + } REG03_b; + }; +} R_DOTF_Type; /*!< Size = 144 (0x90) */ + +/* =========================================================================================================================== */ +/* ================ R_AGTX0 ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Asynchronous General Purpose Timer (R_AGTX0) + */ + +typedef struct /*!< (@ 0x40221000) R_AGTX0 Structure */ +{ + union + { + __IOM R_AGTX0_AGT32_Type AGT32; /*!< (@ 0x00000000) AGTW (32-bit) peripheral registers */ + __IOM R_AGTX0_AGT16_Type AGT16; /*!< (@ 0x00000000) AGT (16-bit) peripheral registers */ + }; +} R_AGTX0_Type; /*!< Size = 20 (0x14) */ + +/* =========================================================================================================================== */ +/* ================ R_FLAD ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Data Flash (R_FLAD) + */ + +typedef struct /*!< (@ 0x4011C000) R_FLAD Structure */ +{ + __IM uint8_t RESERVED[64]; + + union + { + __IOM uint8_t FCKMHZ; /*!< (@ 0x00000040) Data Flash Access Frequency Register */ + + struct + { + __IOM uint8_t FCKMHZ : 8; /*!< [7..0] Data Flash Access Frequency Register */ + } FCKMHZ_b; + }; +} R_FLAD_Type; /*!< Size = 65 (0x41) */ + +/* =========================================================================================================================== */ +/* ================ R_OFS_DATAFLASH ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Data Flash Option-Setting Memory (R_OFS_DATAFLASH) + */ + +typedef struct /*!< (@ 0x27030000) R_OFS_DATAFLASH Structure */ +{ + __IM uint32_t RESERVED[32]; + + union + { + __IM uint32_t FSBLCTRL0; /*!< (@ 0x00000080) FSBL Control Register 0 */ + + struct + { + __IM uint32_t FSBLEN : 3; /*!< [2..0] FSBL Enable */ + __IM uint32_t FSBLSKIPSW : 3; /*!< [5..3] FSBL Skip Enable for Software Reset */ + __IM uint32_t FSBLSKIPDS : 3; /*!< [8..6] FSBL Skip Enable for Deep Software Standby Reset */ + __IM uint32_t FSBLCLK : 3; /*!< [11..9] Clock Frequency Selection during FSBL Execution */ + uint32_t : 20; + } FSBLCTRL0_b; + }; + + union + { + __IM uint32_t FSBLCTRL1; /*!< (@ 0x00000084) FSBL Control Register 1 */ + + struct + { + __IM uint32_t FSBLEXMD : 2; /*!< [1..0] FSBL Execution Mode */ + uint32_t : 30; + } FSBLCTRL1_b; + }; + + union + { + __IM uint32_t FSBLCTRL2; /*!< (@ 0x00000088) FSBL Control Register 2 */ + + struct + { + __IM uint32_t PORTPN : 4; /*!< [3..0] FSBL Error Notification Port Pin Number */ + __IM uint32_t PORTGN : 5; /*!< [8..4] FSBL Error Notification Port Group Name */ + uint32_t : 23; + } FSBLCTRL2_b; + }; + __IOM uint32_t SACC0; /*!< (@ 0x0000008C) Start Address of Code Certification 0 */ + __IOM uint32_t SACC1; /*!< (@ 0x00000090) Start Address of Code Certification 1 */ + __IOM uint32_t SAMR; /*!< (@ 0x00000094) Start Address of Measurement Report */ + __IM uint32_t RESERVED1[178]; + __IM uint32_t HOEMRTPK; /*!< (@ 0x00000360) Hask of OEM_ROOT_PK */ + __IM uint32_t RESERVED2[7]; + __IOM R_OFS_DATAFLASH_CFGDLOCK_Type CFGDLOCK; /*!< (@ 0x00000380) Configuration Data Lock Bits */ + __IM uint32_t RESERVED3[11]; + + union + { + __IOM uint16_t ARCLS; /*!< (@ 0x000003C0) Anti-Rollback Counter Lock Setting */ + + struct + { + __IOM uint16_t ARCS_LK : 1; /*!< [0..0] ARC_SEC Lock */ + __IOM uint16_t ARCNS_LK : 4; /*!< [4..1] ARC_NSEC Lock */ + __IOM uint16_t ARCBL_LK : 1; /*!< [5..5] ARC_OEMBL Lock */ + uint16_t : 10; + } ARCLS_b; + }; + + union + { + __IOM uint16_t ARCCS; /*!< (@ 0x000003C2) ARCCS */ + + struct + { + __IOM uint16_t CNF_ARCNS : 2; /*!< [1..0] Configuation setting for ARC_NSEC */ + uint16_t : 14; + } ARCCS_b; + }; + __IM uint32_t RESERVED4[291]; + + union + { + __IOM uint32_t ARC_SEC[2]; /*!< (@ 0x00000850) Anti-Rollback Counter for Secure Application + * n */ + + struct + { + __IOM uint32_t ARC_SEC : 32; /*!< [31..0] ARC_SEC */ + } ARC_SEC_b[2]; + }; + + union + { + __IOM uint32_t ARC_NSEC[8]; /*!< (@ 0x00000858) Anti-Rollback Counter for Non-Secure Application */ + + struct + { + __IOM uint32_t ARC_NSEC : 32; /*!< [31..0] Anti-Rollback Counter for Non-secure Application */ + } ARC_NSEC_b[8]; + }; + + union + { + __IOM uint32_t ARC_OEMBL[2]; /*!< (@ 0x00000878) Anti-Rollback Counter for OEMBL */ + + struct + { + __IOM uint32_t ARC_OEMBL : 32; /*!< [31..0] Anti-Rollback Counter for OEM_BL Application */ + } ARC_OEMBL_b[2]; + }; +} R_OFS_DATAFLASH_Type; /*!< Size = 2176 (0x880) */ + +/** @} */ /* End of group Device_Peripheral_peripherals */ + +/* =========================================================================================================================== */ +/* ================ Device Specific Peripheral Address Map ================ */ +/* =========================================================================================================================== */ + +/** @addtogroup Device_Peripheral_peripheralAddr + * @{ + */ + + #if defined(_RA_TZ_NONSECURE) + #define BASE_NS_OFFSET (BSP_FEATURE_TZ_NS_OFFSET) + #else + #define BASE_NS_OFFSET 0U + #endif + + #define R_ACMPHS0_BASE (0x40236000UL + BASE_NS_OFFSET) + #define R_ACMPHS1_BASE (0x40236100UL + BASE_NS_OFFSET) + #define R_ACMPHS2_BASE (0x40236200UL + BASE_NS_OFFSET) + #define R_ACMPHS3_BASE (0x40236300UL + BASE_NS_OFFSET) + #define R_ACMPHS4_BASE (0x40236400UL + BASE_NS_OFFSET) + #define R_ACMPHS5_BASE (0x40236500UL + BASE_NS_OFFSET) + #define R_ADC0_BASE (0x40332000UL + BASE_NS_OFFSET) + #define R_ADC1_BASE (0x40332200UL + BASE_NS_OFFSET) + #define R_PSCU_BASE (0x40204000UL + BASE_NS_OFFSET) + #define R_BUS_BASE (0x40003000UL + BASE_NS_OFFSET) + #define R_CAC_BASE (0x40202400UL + BASE_NS_OFFSET) + #define R_CANFD_BASE (0x40380000UL + BASE_NS_OFFSET) + #define R_CANFD1_BASE (0x40382000UL + BASE_NS_OFFSET) + #define R_CRC_BASE (0x40310000UL + BASE_NS_OFFSET) + #define R_DAC_BASE (0x40333000UL + BASE_NS_OFFSET) + #define R_DAC1_BASE (0x40333100UL + BASE_NS_OFFSET) + #define R_DEBUG_BASE (0x4001B000UL + BASE_NS_OFFSET) + #define R_DMA_BASE (0x4000A800UL + BASE_NS_OFFSET) + #define R_DMAC0_BASE (0x4000A000UL + BASE_NS_OFFSET) + #define R_DMAC1_BASE (0x4000A040UL + BASE_NS_OFFSET) + #define R_DMAC2_BASE (0x4000A080UL + BASE_NS_OFFSET) + #define R_DMAC3_BASE (0x4000A0C0UL + BASE_NS_OFFSET) + #define R_DMAC4_BASE (0x4000A100UL + BASE_NS_OFFSET) + #define R_DMAC5_BASE (0x4000A140UL + BASE_NS_OFFSET) + #define R_DMAC6_BASE (0x4000A180UL + BASE_NS_OFFSET) + #define R_DMAC7_BASE (0x4000A1C0UL + BASE_NS_OFFSET) + #define R_DOC_BASE (0x40311000UL + BASE_NS_OFFSET) + #define R_DTC_BASE (0x4000AC00UL + BASE_NS_OFFSET) + #define R_ELC_BASE (0x40201000UL + BASE_NS_OFFSET) + #define R_ETHERC0_BASE (0x40354100UL + BASE_NS_OFFSET) + #define R_ETHERC_EDMAC_BASE (0x40354000UL + BASE_NS_OFFSET) + #define R_FACI_HP_CMD_BASE (0x40100000UL + BASE_NS_OFFSET) + #define R_FACI_HP_BASE (0x4011E000UL + BASE_NS_OFFSET) + #define R_FCACHE_BASE (0x4001C100UL + BASE_NS_OFFSET) + #define R_GPT0_BASE (0x40322000UL + BASE_NS_OFFSET) + #define R_GPT1_BASE (0x40322100UL + BASE_NS_OFFSET) + #define R_GPT2_BASE (0x40322200UL + BASE_NS_OFFSET) + #define R_GPT3_BASE (0x40322300UL + BASE_NS_OFFSET) + #define R_GPT4_BASE (0x40322400UL + BASE_NS_OFFSET) + #define R_GPT5_BASE (0x40322500UL + BASE_NS_OFFSET) + #define R_GPT6_BASE (0x40322600UL + BASE_NS_OFFSET) + #define R_GPT7_BASE (0x40322700UL + BASE_NS_OFFSET) + #define R_GPT8_BASE (0x40322800UL + BASE_NS_OFFSET) + #define R_GPT9_BASE (0x40322900UL + BASE_NS_OFFSET) + #define R_GPT10_BASE (0x40322A00UL + BASE_NS_OFFSET) + #define R_GPT11_BASE (0x40322B00UL + BASE_NS_OFFSET) + #define R_GPT12_BASE (0x40322C00UL + BASE_NS_OFFSET) + #define R_GPT13_BASE (0x40322D00UL + BASE_NS_OFFSET) + #define R_GPT_OPS_BASE (0x40323F00UL + BASE_NS_OFFSET) + #define R_GPT_POEG0_BASE (0x40212000UL + BASE_NS_OFFSET) + #define R_GPT_POEG1_BASE (0x40212100UL + BASE_NS_OFFSET) + #define R_GPT_POEG2_BASE (0x40212200UL + BASE_NS_OFFSET) + #define R_GPT_POEG3_BASE (0x40212300UL + BASE_NS_OFFSET) + #define R_ICU_BASE (0x40006000UL + BASE_NS_OFFSET) + #define R_IIC0_BASE (0x4025E000UL + BASE_NS_OFFSET) + #define R_IIC1_BASE (0x4025E100UL + BASE_NS_OFFSET) + #define R_IIC2_BASE (0x4025E200UL + BASE_NS_OFFSET) + #define R_IWDT_BASE (0x40202200UL + BASE_NS_OFFSET) + #define R_I3C0_BASE (0x4035F000UL + BASE_NS_OFFSET) + #define R_I3C1_BASE (0x4035F100UL + BASE_NS_OFFSET) + #define R_MPU_MMPU_BASE (0x40000000UL + BASE_NS_OFFSET) + #define R_MPU_SPMON_BASE (0x40000D00UL + BASE_NS_OFFSET) + #define R_MSTP_BASE (0x40203000UL + BASE_NS_OFFSET) + #define R_PORT0_BASE (0x40400000UL + BASE_NS_OFFSET) + #define R_PORT1_BASE (0x40400020UL + BASE_NS_OFFSET) + #define R_PORT2_BASE (0x40400040UL + BASE_NS_OFFSET) + #define R_PORT3_BASE (0x40400060UL + BASE_NS_OFFSET) + #define R_PORT4_BASE (0x40400080UL + BASE_NS_OFFSET) + #define R_PORT5_BASE (0x404000A0UL + BASE_NS_OFFSET) + #define R_PORT6_BASE (0x404000C0UL + BASE_NS_OFFSET) + #define R_PORT7_BASE (0x404000E0UL + BASE_NS_OFFSET) + #define R_PORT8_BASE (0x40400100UL + BASE_NS_OFFSET) + #define R_PORT9_BASE (0x40400120UL + BASE_NS_OFFSET) + #define R_PORT10_BASE (0x40400140UL + BASE_NS_OFFSET) + #define R_PORT11_BASE (0x40400160UL + BASE_NS_OFFSET) + #define R_PORT12_BASE (0x40400180UL + BASE_NS_OFFSET) + #define R_PORT13_BASE (0x404001A0UL + BASE_NS_OFFSET) + #define R_PORT14_BASE (0x404001C0UL + BASE_NS_OFFSET) + #define R_PFS_BASE (0x40400800UL + BASE_NS_OFFSET) + #define R_PMISC_BASE (0x40400D00UL + BASE_NS_OFFSET) + #define R_RTC_BASE (0x40202000UL + BASE_NS_OFFSET) + #define R_SCI0_BASE (0x40358000UL + BASE_NS_OFFSET) + #define R_SCI1_BASE (0x40358100UL + BASE_NS_OFFSET) + #define R_SCI2_BASE (0x40358200UL + BASE_NS_OFFSET) + #define R_SCI3_BASE (0x40358300UL + BASE_NS_OFFSET) + #define R_SCI4_BASE (0x40358400UL + BASE_NS_OFFSET) + #define R_SCI5_BASE (0x40358500UL + BASE_NS_OFFSET) + #define R_SCI6_BASE (0x40358600UL + BASE_NS_OFFSET) + #define R_SCI7_BASE (0x40358700UL + BASE_NS_OFFSET) + #define R_SCI8_BASE (0x40358800UL + BASE_NS_OFFSET) + #define R_SCI9_BASE (0x40358900UL + BASE_NS_OFFSET) + #define R_SDHI0_BASE (0x40252000UL + BASE_NS_OFFSET) + #define R_SDHI1_BASE (0x40252400UL + BASE_NS_OFFSET) + #define R_SPI0_BASE (0x4035C000UL + BASE_NS_OFFSET) + #define R_SPI1_BASE (0x4035C100UL + BASE_NS_OFFSET) + #define R_SRAM_BASE (0x40002000UL + BASE_NS_OFFSET) + #define R_SSI0_BASE (0x4025D000UL + BASE_NS_OFFSET) + #define R_SSI1_BASE (0x4025D100UL + BASE_NS_OFFSET) + #define R_SYSTEM_BASE (0x4001E000UL + BASE_NS_OFFSET) + #define R_TSN_CAL_BASE (0x4011B17CUL + BASE_NS_OFFSET) + #define R_TSN_CTRL_BASE (0x40235000UL + BASE_NS_OFFSET) + #define R_USB_FS0_BASE (0x40250000UL + BASE_NS_OFFSET) + #define R_WDT_BASE (0x40202600UL + BASE_NS_OFFSET) + #define R_TZF_BASE (0x40004000UL + BASE_NS_OFFSET) + #define R_CPSCU_BASE (0x40008000UL + BASE_NS_OFFSET) + #define R_DOC_B_BASE (0x40311000UL + BASE_NS_OFFSET) + #define R_SCI_B0_BASE (0x40358000UL + BASE_NS_OFFSET) + #define R_SCI_B1_BASE (0x40358100UL + BASE_NS_OFFSET) + #define R_SCI_B2_BASE (0x40358200UL + BASE_NS_OFFSET) + #define R_SCI_B3_BASE (0x40358300UL + BASE_NS_OFFSET) + #define R_SCI_B4_BASE (0x40358400UL + BASE_NS_OFFSET) + #define R_SCI_B9_BASE (0x40358900UL + BASE_NS_OFFSET) + #define R_SPI_B0_BASE (0x4035C000UL + BASE_NS_OFFSET) + #define R_SPI_B1_BASE (0x4035C100UL + BASE_NS_OFFSET) + #define R_USB_HS0_BASE (0x40351000UL + BASE_NS_OFFSET) + #define R_XSPI_BASE (0x40268000UL + BASE_NS_OFFSET) + #define R_CEU_BASE (0x40348000UL + BASE_NS_OFFSET) + #define R_ULPT0_BASE (0x40220000UL + BASE_NS_OFFSET) + #define R_ULPT1_BASE (0x40220100UL + BASE_NS_OFFSET) + #define R_DEBUG_OCD_BASE (0x40011000UL + BASE_NS_OFFSET) + #define R_DOTF_BASE (0x40268800UL + BASE_NS_OFFSET) + #define R_AGTX0_BASE (0x40221000UL + BASE_NS_OFFSET) + #define R_AGTX1_BASE (0x40221100UL + BASE_NS_OFFSET) + #define R_AGTX2_BASE (0x40221200UL + BASE_NS_OFFSET) + #define R_AGTX3_BASE (0x40221300UL + BASE_NS_OFFSET) + #define R_AGTX4_BASE (0x40221400UL + BASE_NS_OFFSET) + #define R_AGTX5_BASE (0x40221500UL + BASE_NS_OFFSET) + #define R_AGTX6_BASE (0x40221600UL + BASE_NS_OFFSET) + #define R_AGTX7_BASE (0x40221700UL + BASE_NS_OFFSET) + #define R_AGTX8_BASE (0x40221800UL + BASE_NS_OFFSET) + #define R_AGTX9_BASE (0x40221900UL + BASE_NS_OFFSET) + #define R_FLAD_BASE (0x4011C000UL + BASE_NS_OFFSET) + #define R_OFS_DATAFLASH_BASE (0x27030000UL + BASE_NS_OFFSET) + +/** @} */ /* End of group Device_Peripheral_peripheralAddr */ + +/* =========================================================================================================================== */ +/* ================ Peripheral declaration ================ */ +/* =========================================================================================================================== */ + +/** @addtogroup Device_Peripheral_declaration + * @{ + */ + + #define R_ACMPHS0 ((R_ACMPHS0_Type *) R_ACMPHS0_BASE) + #define R_ACMPHS1 ((R_ACMPHS0_Type *) R_ACMPHS1_BASE) + #define R_ACMPHS2 ((R_ACMPHS0_Type *) R_ACMPHS2_BASE) + #define R_ACMPHS3 ((R_ACMPHS0_Type *) R_ACMPHS3_BASE) + #define R_ACMPHS4 ((R_ACMPHS0_Type *) R_ACMPHS4_BASE) + #define R_ACMPHS5 ((R_ACMPHS0_Type *) R_ACMPHS5_BASE) + #define R_ADC0 ((R_ADC0_Type *) R_ADC0_BASE) + #define R_ADC1 ((R_ADC0_Type *) R_ADC1_BASE) + #define R_PSCU ((R_PSCU_Type *) R_PSCU_BASE) + #define R_BUS ((R_BUS_Type *) R_BUS_BASE) + #define R_CAC ((R_CAC_Type *) R_CAC_BASE) + #define R_CANFD ((R_CANFD_Type *) R_CANFD_BASE) + #define R_CANFD0 ((R_CANFD_Type *) R_CANFD_BASE) + #define R_CANFD1 ((R_CANFD_Type *) R_CANFD1_BASE) + #define R_CRC ((R_CRC_Type *) R_CRC_BASE) + #define R_DAC ((R_DAC_Type *) R_DAC_BASE) + #define R_DAC1 ((R_DAC_Type *) R_DAC1_BASE) + #define R_DEBUG ((R_DEBUG_Type *) R_DEBUG_BASE) + #define R_DMA ((R_DMA_Type *) R_DMA_BASE) + #define R_DMAC0 ((R_DMAC0_Type *) R_DMAC0_BASE) + #define R_DMAC1 ((R_DMAC0_Type *) R_DMAC1_BASE) + #define R_DMAC2 ((R_DMAC0_Type *) R_DMAC2_BASE) + #define R_DMAC3 ((R_DMAC0_Type *) R_DMAC3_BASE) + #define R_DMAC4 ((R_DMAC0_Type *) R_DMAC4_BASE) + #define R_DMAC5 ((R_DMAC0_Type *) R_DMAC5_BASE) + #define R_DMAC6 ((R_DMAC0_Type *) R_DMAC6_BASE) + #define R_DMAC7 ((R_DMAC0_Type *) R_DMAC7_BASE) + #define R_DOC ((R_DOC_Type *) R_DOC_BASE) + #define R_DTC ((R_DTC_Type *) R_DTC_BASE) + #define R_ELC ((R_ELC_Type *) R_ELC_BASE) + #define R_ETHERC0 ((R_ETHERC0_Type *) R_ETHERC0_BASE) + #define R_ETHERC_EDMAC ((R_ETHERC_EDMAC_Type *) R_ETHERC_EDMAC_BASE) + #define R_FACI_HP_CMD ((R_FACI_HP_CMD_Type *) R_FACI_HP_CMD_BASE) + #define R_FACI_HP ((R_FACI_HP_Type *) R_FACI_HP_BASE) + #define R_FCACHE ((R_FCACHE_Type *) R_FCACHE_BASE) + #define R_GPT0 ((R_GPT0_Type *) R_GPT0_BASE) + #define R_GPT1 ((R_GPT0_Type *) R_GPT1_BASE) + #define R_GPT2 ((R_GPT0_Type *) R_GPT2_BASE) + #define R_GPT3 ((R_GPT0_Type *) R_GPT3_BASE) + #define R_GPT4 ((R_GPT0_Type *) R_GPT4_BASE) + #define R_GPT5 ((R_GPT0_Type *) R_GPT5_BASE) + #define R_GPT6 ((R_GPT0_Type *) R_GPT6_BASE) + #define R_GPT7 ((R_GPT0_Type *) R_GPT7_BASE) + #define R_GPT8 ((R_GPT0_Type *) R_GPT8_BASE) + #define R_GPT9 ((R_GPT0_Type *) R_GPT9_BASE) + #define R_GPT10 ((R_GPT0_Type *) R_GPT10_BASE) + #define R_GPT11 ((R_GPT0_Type *) R_GPT11_BASE) + #define R_GPT12 ((R_GPT0_Type *) R_GPT12_BASE) + #define R_GPT13 ((R_GPT0_Type *) R_GPT13_BASE) + #define R_GPT_OPS ((R_GPT_OPS_Type *) R_GPT_OPS_BASE) + #define R_GPT_POEG0 ((R_GPT_POEG0_Type *) R_GPT_POEG0_BASE) + #define R_GPT_POEG1 ((R_GPT_POEG0_Type *) R_GPT_POEG1_BASE) + #define R_GPT_POEG2 ((R_GPT_POEG0_Type *) R_GPT_POEG2_BASE) + #define R_GPT_POEG3 ((R_GPT_POEG0_Type *) R_GPT_POEG3_BASE) + #define R_ICU ((R_ICU_Type *) R_ICU_BASE) + #define R_IIC0 ((R_IIC0_Type *) R_IIC0_BASE) + #define R_IIC1 ((R_IIC0_Type *) R_IIC1_BASE) + #define R_IIC2 ((R_IIC0_Type *) R_IIC2_BASE) + #define R_IWDT ((R_IWDT_Type *) R_IWDT_BASE) + #define R_I3C0 ((R_I3C0_Type *) R_I3C0_BASE) + #define R_I3C1 ((R_I3C0_Type *) R_I3C1_BASE) + #define R_MPU_MMPU ((R_MPU_MMPU_Type *) R_MPU_MMPU_BASE) + #define R_MPU_SPMON ((R_MPU_SPMON_Type *) R_MPU_SPMON_BASE) + #define R_MSTP ((R_MSTP_Type *) R_MSTP_BASE) + #define R_PORT0 ((R_PORT0_Type *) R_PORT0_BASE) + #define R_PORT1 ((R_PORT0_Type *) R_PORT1_BASE) + #define R_PORT2 ((R_PORT0_Type *) R_PORT2_BASE) + #define R_PORT3 ((R_PORT0_Type *) R_PORT3_BASE) + #define R_PORT4 ((R_PORT0_Type *) R_PORT4_BASE) + #define R_PORT5 ((R_PORT0_Type *) R_PORT5_BASE) + #define R_PORT6 ((R_PORT0_Type *) R_PORT6_BASE) + #define R_PORT7 ((R_PORT0_Type *) R_PORT7_BASE) + #define R_PORT8 ((R_PORT0_Type *) R_PORT8_BASE) + #define R_PORT9 ((R_PORT0_Type *) R_PORT9_BASE) + #define R_PORT10 ((R_PORT0_Type *) R_PORT10_BASE) + #define R_PORT11 ((R_PORT0_Type *) R_PORT11_BASE) + #define R_PORT12 ((R_PORT0_Type *) R_PORT12_BASE) + #define R_PORT13 ((R_PORT0_Type *) R_PORT13_BASE) + #define R_PORT14 ((R_PORT0_Type *) R_PORT14_BASE) + #define R_PFS ((R_PFS_Type *) R_PFS_BASE) + #define R_PMISC ((R_PMISC_Type *) R_PMISC_BASE) + #define R_RTC ((R_RTC_Type *) R_RTC_BASE) + #define R_SCI0 ((R_SCI0_Type *) R_SCI0_BASE) + #define R_SCI1 ((R_SCI0_Type *) R_SCI1_BASE) + #define R_SCI2 ((R_SCI0_Type *) R_SCI2_BASE) + #define R_SCI3 ((R_SCI0_Type *) R_SCI3_BASE) + #define R_SCI4 ((R_SCI0_Type *) R_SCI4_BASE) + #define R_SCI5 ((R_SCI0_Type *) R_SCI5_BASE) + #define R_SCI6 ((R_SCI0_Type *) R_SCI6_BASE) + #define R_SCI7 ((R_SCI0_Type *) R_SCI7_BASE) + #define R_SCI8 ((R_SCI0_Type *) R_SCI8_BASE) + #define R_SCI9 ((R_SCI0_Type *) R_SCI9_BASE) + #define R_SDHI0 ((R_SDHI0_Type *) R_SDHI0_BASE) + #define R_SDHI1 ((R_SDHI0_Type *) R_SDHI1_BASE) + #define R_SPI0 ((R_SPI0_Type *) R_SPI0_BASE) + #define R_SPI1 ((R_SPI0_Type *) R_SPI1_BASE) + #define R_SRAM ((R_SRAM_Type *) R_SRAM_BASE) + #define R_SSI0 ((R_SSI0_Type *) R_SSI0_BASE) + #define R_SSI1 ((R_SSI0_Type *) R_SSI1_BASE) + #define R_SYSTEM ((R_SYSTEM_Type *) R_SYSTEM_BASE) + #define R_TSN_CAL ((R_TSN_CAL_Type *) R_TSN_CAL_BASE) + #define R_TSN_CTRL ((R_TSN_CTRL_Type *) R_TSN_CTRL_BASE) + #define R_USB_FS0 ((R_USB_FS0_Type *) R_USB_FS0_BASE) + #define R_WDT ((R_WDT_Type *) R_WDT_BASE) + #define R_TZF ((R_TZF_Type *) R_TZF_BASE) + #define R_CPSCU ((R_CPSCU_Type *) R_CPSCU_BASE) + #define R_DOC_B ((R_DOC_B_Type *) R_DOC_B_BASE) + #define R_SCI_B0 ((R_SCI_B0_Type *) R_SCI_B0_BASE) + #define R_SCI_B1 ((R_SCI_B0_Type *) R_SCI_B1_BASE) + #define R_SCI_B2 ((R_SCI_B0_Type *) R_SCI_B2_BASE) + #define R_SCI_B3 ((R_SCI_B0_Type *) R_SCI_B3_BASE) + #define R_SCI_B4 ((R_SCI_B0_Type *) R_SCI_B4_BASE) + #define R_SCI_B9 ((R_SCI_B0_Type *) R_SCI_B9_BASE) + #define R_SPI_B0 ((R_SPI_B0_Type *) R_SPI_B0_BASE) + #define R_SPI_B1 ((R_SPI_B0_Type *) R_SPI_B1_BASE) + #define R_USB_HS0 ((R_USB_HS0_Type *) R_USB_HS0_BASE) + #define R_XSPI ((R_XSPI_Type *) R_XSPI_BASE) + #define R_CEU ((R_CEU_Type *) R_CEU_BASE) + #define R_ULPT0 ((R_ULPT0_Type *) R_ULPT0_BASE) + #define R_ULPT1 ((R_ULPT0_Type *) R_ULPT1_BASE) + #define R_DEBUG_OCD ((R_DEBUG_OCD_Type *) R_DEBUG_OCD_BASE) + #define R_DOTF ((R_DOTF_Type *) R_DOTF_BASE) + #define R_AGT0 ((R_AGTX0_Type *) R_AGTX0_BASE) + #define R_AGT1 ((R_AGTX0_Type *) R_AGTX1_BASE) + #define R_AGT2 ((R_AGTX0_Type *) R_AGTX2_BASE) + #define R_AGT3 ((R_AGTX0_Type *) R_AGTX3_BASE) + #define R_AGT4 ((R_AGTX0_Type *) R_AGTX4_BASE) + #define R_AGT5 ((R_AGTX0_Type *) R_AGTX5_BASE) + #define R_AGT6 ((R_AGTX0_Type *) R_AGTX6_BASE) + #define R_AGT7 ((R_AGTX0_Type *) R_AGTX7_BASE) + #define R_AGT8 ((R_AGTX0_Type *) R_AGTX8_BASE) + #define R_AGT9 ((R_AGTX0_Type *) R_AGTX9_BASE) + #define R_FLAD ((R_FLAD_Type *) R_FLAD_BASE) + #define R_OFS_DATAFLASH ((R_OFS_DATAFLASH_Type *) R_OFS_DATAFLASH_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 + +/* =========================================================================================================================== */ +/* ================ Pos/Mask Cluster Section ================ */ +/* =========================================================================================================================== */ + +/** @addtogroup PosMask_clusters + * @{ + */ + +/* =========================================================================================================================== */ +/* ================ CSa ================ */ +/* =========================================================================================================================== */ + +/* ========================================================== MOD ========================================================== */ + #define R_BUS_CSa_MOD_PRMOD_Pos (15UL) /*!< PRMOD (Bit 15) */ + #define R_BUS_CSa_MOD_PRMOD_Msk (0x8000UL) /*!< PRMOD (Bitfield-Mask: 0x01) */ + #define R_BUS_CSa_MOD_PWENB_Pos (9UL) /*!< PWENB (Bit 9) */ + #define R_BUS_CSa_MOD_PWENB_Msk (0x200UL) /*!< PWENB (Bitfield-Mask: 0x01) */ + #define R_BUS_CSa_MOD_PRENB_Pos (8UL) /*!< PRENB (Bit 8) */ + #define R_BUS_CSa_MOD_PRENB_Msk (0x100UL) /*!< PRENB (Bitfield-Mask: 0x01) */ + #define R_BUS_CSa_MOD_EWENB_Pos (3UL) /*!< EWENB (Bit 3) */ + #define R_BUS_CSa_MOD_EWENB_Msk (0x8UL) /*!< EWENB (Bitfield-Mask: 0x01) */ + #define R_BUS_CSa_MOD_WRMOD_Pos (0UL) /*!< WRMOD (Bit 0) */ + #define R_BUS_CSa_MOD_WRMOD_Msk (0x1UL) /*!< WRMOD (Bitfield-Mask: 0x01) */ +/* ========================================================= WCR1 ========================================================== */ + #define R_BUS_CSa_WCR1_CSRWAIT_Pos (24UL) /*!< CSRWAIT (Bit 24) */ + #define R_BUS_CSa_WCR1_CSRWAIT_Msk (0x1f000000UL) /*!< CSRWAIT (Bitfield-Mask: 0x1f) */ + #define R_BUS_CSa_WCR1_CSWWAIT_Pos (16UL) /*!< CSWWAIT (Bit 16) */ + #define R_BUS_CSa_WCR1_CSWWAIT_Msk (0x1f0000UL) /*!< CSWWAIT (Bitfield-Mask: 0x1f) */ + #define R_BUS_CSa_WCR1_CSPRWAIT_Pos (8UL) /*!< CSPRWAIT (Bit 8) */ + #define R_BUS_CSa_WCR1_CSPRWAIT_Msk (0x700UL) /*!< CSPRWAIT (Bitfield-Mask: 0x07) */ + #define R_BUS_CSa_WCR1_CSPWWAIT_Pos (0UL) /*!< CSPWWAIT (Bit 0) */ + #define R_BUS_CSa_WCR1_CSPWWAIT_Msk (0x7UL) /*!< CSPWWAIT (Bitfield-Mask: 0x07) */ +/* ========================================================= WCR2 ========================================================== */ + #define R_BUS_CSa_WCR2_CSON_Pos (28UL) /*!< CSON (Bit 28) */ + #define R_BUS_CSa_WCR2_CSON_Msk (0x70000000UL) /*!< CSON (Bitfield-Mask: 0x07) */ + #define R_BUS_CSa_WCR2_WDON_Pos (24UL) /*!< WDON (Bit 24) */ + #define R_BUS_CSa_WCR2_WDON_Msk (0x7000000UL) /*!< WDON (Bitfield-Mask: 0x07) */ + #define R_BUS_CSa_WCR2_WRON_Pos (20UL) /*!< WRON (Bit 20) */ + #define R_BUS_CSa_WCR2_WRON_Msk (0x700000UL) /*!< WRON (Bitfield-Mask: 0x07) */ + #define R_BUS_CSa_WCR2_RDON_Pos (16UL) /*!< RDON (Bit 16) */ + #define R_BUS_CSa_WCR2_RDON_Msk (0x70000UL) /*!< RDON (Bitfield-Mask: 0x07) */ + #define R_BUS_CSa_WCR2_AWAIT_Pos (12UL) /*!< AWAIT (Bit 12) */ + #define R_BUS_CSa_WCR2_AWAIT_Msk (0x3000UL) /*!< AWAIT (Bitfield-Mask: 0x03) */ + #define R_BUS_CSa_WCR2_WDOFF_Pos (8UL) /*!< WDOFF (Bit 8) */ + #define R_BUS_CSa_WCR2_WDOFF_Msk (0x700UL) /*!< WDOFF (Bitfield-Mask: 0x07) */ + #define R_BUS_CSa_WCR2_CSWOFF_Pos (4UL) /*!< CSWOFF (Bit 4) */ + #define R_BUS_CSa_WCR2_CSWOFF_Msk (0x70UL) /*!< CSWOFF (Bitfield-Mask: 0x07) */ + #define R_BUS_CSa_WCR2_CSROFF_Pos (0UL) /*!< CSROFF (Bit 0) */ + #define R_BUS_CSa_WCR2_CSROFF_Msk (0x7UL) /*!< CSROFF (Bitfield-Mask: 0x07) */ + +/* =========================================================================================================================== */ +/* ================ CSb ================ */ +/* =========================================================================================================================== */ + +/* ========================================================== CR =========================================================== */ + #define R_BUS_CSb_CR_MPXEN_Pos (12UL) /*!< MPXEN (Bit 12) */ + #define R_BUS_CSb_CR_MPXEN_Msk (0x1000UL) /*!< MPXEN (Bitfield-Mask: 0x01) */ + #define R_BUS_CSb_CR_EMODE_Pos (8UL) /*!< EMODE (Bit 8) */ + #define R_BUS_CSb_CR_EMODE_Msk (0x100UL) /*!< EMODE (Bitfield-Mask: 0x01) */ + #define R_BUS_CSb_CR_BSIZE_Pos (4UL) /*!< BSIZE (Bit 4) */ + #define R_BUS_CSb_CR_BSIZE_Msk (0x30UL) /*!< BSIZE (Bitfield-Mask: 0x03) */ + #define R_BUS_CSb_CR_EXENB_Pos (0UL) /*!< EXENB (Bit 0) */ + #define R_BUS_CSb_CR_EXENB_Msk (0x1UL) /*!< EXENB (Bitfield-Mask: 0x01) */ +/* ========================================================== REC ========================================================== */ + #define R_BUS_CSb_REC_WRCV_Pos (8UL) /*!< WRCV (Bit 8) */ + #define R_BUS_CSb_REC_WRCV_Msk (0xf00UL) /*!< WRCV (Bitfield-Mask: 0x0f) */ + #define R_BUS_CSb_REC_RRCV_Pos (0UL) /*!< RRCV (Bit 0) */ + #define R_BUS_CSb_REC_RRCV_Msk (0xfUL) /*!< RRCV (Bitfield-Mask: 0x0f) */ + +/* =========================================================================================================================== */ +/* ================ SDRAM ================ */ +/* =========================================================================================================================== */ + +/* ========================================================= SDCCR ========================================================= */ + #define R_BUS_SDRAM_SDCCR_BSIZE_Pos (4UL) /*!< BSIZE (Bit 4) */ + #define R_BUS_SDRAM_SDCCR_BSIZE_Msk (0x30UL) /*!< BSIZE (Bitfield-Mask: 0x03) */ + #define R_BUS_SDRAM_SDCCR_EXENB_Pos (0UL) /*!< EXENB (Bit 0) */ + #define R_BUS_SDRAM_SDCCR_EXENB_Msk (0x1UL) /*!< EXENB (Bitfield-Mask: 0x01) */ +/* ======================================================== SDCMOD ========================================================= */ + #define R_BUS_SDRAM_SDCMOD_EMODE_Pos (0UL) /*!< EMODE (Bit 0) */ + #define R_BUS_SDRAM_SDCMOD_EMODE_Msk (0x1UL) /*!< EMODE (Bitfield-Mask: 0x01) */ +/* ======================================================== SDAMOD ========================================================= */ + #define R_BUS_SDRAM_SDAMOD_BE_Pos (0UL) /*!< BE (Bit 0) */ + #define R_BUS_SDRAM_SDAMOD_BE_Msk (0x1UL) /*!< BE (Bitfield-Mask: 0x01) */ +/* ======================================================== SDSELF ========================================================= */ + #define R_BUS_SDRAM_SDSELF_SFEN_Pos (0UL) /*!< SFEN (Bit 0) */ + #define R_BUS_SDRAM_SDSELF_SFEN_Msk (0x1UL) /*!< SFEN (Bitfield-Mask: 0x01) */ +/* ======================================================== SDRFCR ========================================================= */ + #define R_BUS_SDRAM_SDRFCR_REFW_Pos (12UL) /*!< REFW (Bit 12) */ + #define R_BUS_SDRAM_SDRFCR_REFW_Msk (0xf000UL) /*!< REFW (Bitfield-Mask: 0x0f) */ + #define R_BUS_SDRAM_SDRFCR_RFC_Pos (0UL) /*!< RFC (Bit 0) */ + #define R_BUS_SDRAM_SDRFCR_RFC_Msk (0xfffUL) /*!< RFC (Bitfield-Mask: 0xfff) */ +/* ======================================================== SDRFEN ========================================================= */ + #define R_BUS_SDRAM_SDRFEN_RFEN_Pos (0UL) /*!< RFEN (Bit 0) */ + #define R_BUS_SDRAM_SDRFEN_RFEN_Msk (0x1UL) /*!< RFEN (Bitfield-Mask: 0x01) */ +/* ========================================================= SDICR ========================================================= */ + #define R_BUS_SDRAM_SDICR_INIRQ_Pos (0UL) /*!< INIRQ (Bit 0) */ + #define R_BUS_SDRAM_SDICR_INIRQ_Msk (0x1UL) /*!< INIRQ (Bitfield-Mask: 0x01) */ +/* ========================================================= SDIR ========================================================== */ + #define R_BUS_SDRAM_SDIR_PRC_Pos (8UL) /*!< PRC (Bit 8) */ + #define R_BUS_SDRAM_SDIR_PRC_Msk (0x700UL) /*!< PRC (Bitfield-Mask: 0x07) */ + #define R_BUS_SDRAM_SDIR_ARFC_Pos (4UL) /*!< ARFC (Bit 4) */ + #define R_BUS_SDRAM_SDIR_ARFC_Msk (0xf0UL) /*!< ARFC (Bitfield-Mask: 0x0f) */ + #define R_BUS_SDRAM_SDIR_ARFI_Pos (0UL) /*!< ARFI (Bit 0) */ + #define R_BUS_SDRAM_SDIR_ARFI_Msk (0xfUL) /*!< ARFI (Bitfield-Mask: 0x0f) */ +/* ========================================================= SDADR ========================================================= */ + #define R_BUS_SDRAM_SDADR_MXC_Pos (0UL) /*!< MXC (Bit 0) */ + #define R_BUS_SDRAM_SDADR_MXC_Msk (0x3UL) /*!< MXC (Bitfield-Mask: 0x03) */ +/* ========================================================= SDTR ========================================================== */ + #define R_BUS_SDRAM_SDTR_RAS_Pos (16UL) /*!< RAS (Bit 16) */ + #define R_BUS_SDRAM_SDTR_RAS_Msk (0x70000UL) /*!< RAS (Bitfield-Mask: 0x07) */ + #define R_BUS_SDRAM_SDTR_RCD_Pos (12UL) /*!< RCD (Bit 12) */ + #define R_BUS_SDRAM_SDTR_RCD_Msk (0x3000UL) /*!< RCD (Bitfield-Mask: 0x03) */ + #define R_BUS_SDRAM_SDTR_RP_Pos (9UL) /*!< RP (Bit 9) */ + #define R_BUS_SDRAM_SDTR_RP_Msk (0xe00UL) /*!< RP (Bitfield-Mask: 0x07) */ + #define R_BUS_SDRAM_SDTR_WR_Pos (8UL) /*!< WR (Bit 8) */ + #define R_BUS_SDRAM_SDTR_WR_Msk (0x100UL) /*!< WR (Bitfield-Mask: 0x01) */ + #define R_BUS_SDRAM_SDTR_CL_Pos (0UL) /*!< CL (Bit 0) */ + #define R_BUS_SDRAM_SDTR_CL_Msk (0x7UL) /*!< CL (Bitfield-Mask: 0x07) */ +/* ========================================================= SDMOD ========================================================= */ + #define R_BUS_SDRAM_SDMOD_MR_Pos (0UL) /*!< MR (Bit 0) */ + #define R_BUS_SDRAM_SDMOD_MR_Msk (0x7fffUL) /*!< MR (Bitfield-Mask: 0x7fff) */ +/* ========================================================= SDSR ========================================================== */ + #define R_BUS_SDRAM_SDSR_SRFST_Pos (4UL) /*!< SRFST (Bit 4) */ + #define R_BUS_SDRAM_SDSR_SRFST_Msk (0x10UL) /*!< SRFST (Bitfield-Mask: 0x01) */ + #define R_BUS_SDRAM_SDSR_INIST_Pos (3UL) /*!< INIST (Bit 3) */ + #define R_BUS_SDRAM_SDSR_INIST_Msk (0x8UL) /*!< INIST (Bitfield-Mask: 0x01) */ + #define R_BUS_SDRAM_SDSR_MRSST_Pos (0UL) /*!< MRSST (Bit 0) */ + #define R_BUS_SDRAM_SDSR_MRSST_Msk (0x1UL) /*!< MRSST (Bitfield-Mask: 0x01) */ + +/* =========================================================================================================================== */ +/* ================ BUSERRa ================ */ +/* =========================================================================================================================== */ + +/* ========================================================== ADD ========================================================== */ + #define R_BUS_BUSERRa_ADD_BERAD_Pos (0UL) /*!< BERAD (Bit 0) */ + #define R_BUS_BUSERRa_ADD_BERAD_Msk (0xffffffffUL) /*!< BERAD (Bitfield-Mask: 0xffffffff) */ +/* ========================================================= STAT ========================================================== */ + #define R_BUS_BUSERRa_STAT_ERRSTAT_Pos (7UL) /*!< ERRSTAT (Bit 7) */ + #define R_BUS_BUSERRa_STAT_ERRSTAT_Msk (0x80UL) /*!< ERRSTAT (Bitfield-Mask: 0x01) */ + #define R_BUS_BUSERRa_STAT_ACCSTAT_Pos (0UL) /*!< ACCSTAT (Bit 0) */ + #define R_BUS_BUSERRa_STAT_ACCSTAT_Msk (0x1UL) /*!< ACCSTAT (Bitfield-Mask: 0x01) */ +/* ========================================================== RW =========================================================== */ + #define R_BUS_BUSERRa_RW_RWSTAT_Pos (0UL) /*!< RWSTAT (Bit 0) */ + #define R_BUS_BUSERRa_RW_RWSTAT_Msk (0x1UL) /*!< RWSTAT (Bitfield-Mask: 0x01) */ + +/* =========================================================================================================================== */ +/* ================ BTZFERR ================ */ +/* =========================================================================================================================== */ + +/* ========================================================== ADD ========================================================== */ + #define R_BUS_BTZFERR_ADD_BTZFERAD_Pos (0UL) /*!< BTZFERAD (Bit 0) */ + #define R_BUS_BTZFERR_ADD_BTZFERAD_Msk (0xffffffffUL) /*!< BTZFERAD (Bitfield-Mask: 0xffffffff) */ +/* ========================================================== RW =========================================================== */ + #define R_BUS_BTZFERR_RW_TRWSTAT_Pos (0UL) /*!< TRWSTAT (Bit 0) */ + #define R_BUS_BTZFERR_RW_TRWSTAT_Msk (0x1UL) /*!< TRWSTAT (Bitfield-Mask: 0x01) */ + +/* =========================================================================================================================== */ +/* ================ BUSERRb ================ */ +/* =========================================================================================================================== */ + +/* ========================================================= STAT ========================================================== */ + #define R_BUS_BUSERRb_STAT_MSERRSTAT_Pos (5UL) /*!< MSERRSTAT (Bit 5) */ + #define R_BUS_BUSERRb_STAT_MSERRSTAT_Msk (0x20UL) /*!< MSERRSTAT (Bitfield-Mask: 0x01) */ + #define R_BUS_BUSERRb_STAT_ILERRSTAT_Pos (4UL) /*!< ILERRSTAT (Bit 4) */ + #define R_BUS_BUSERRb_STAT_ILERRSTAT_Msk (0x10UL) /*!< ILERRSTAT (Bitfield-Mask: 0x01) */ + #define R_BUS_BUSERRb_STAT_MMERRSTAT_Pos (3UL) /*!< MMERRSTAT (Bit 3) */ + #define R_BUS_BUSERRb_STAT_MMERRSTAT_Msk (0x8UL) /*!< MMERRSTAT (Bitfield-Mask: 0x01) */ + #define R_BUS_BUSERRb_STAT_STERRSTAT_Pos (1UL) /*!< STERRSTAT (Bit 1) */ + #define R_BUS_BUSERRb_STAT_STERRSTAT_Msk (0x2UL) /*!< STERRSTAT (Bitfield-Mask: 0x01) */ + #define R_BUS_BUSERRb_STAT_SLERRSTAT_Pos (0UL) /*!< SLERRSTAT (Bit 0) */ + #define R_BUS_BUSERRb_STAT_SLERRSTAT_Msk (0x1UL) /*!< SLERRSTAT (Bitfield-Mask: 0x01) */ +/* ========================================================== CLR ========================================================== */ + #define R_BUS_BUSERRb_CLR_MSERRCLR_Pos (5UL) /*!< MSERRCLR (Bit 5) */ + #define R_BUS_BUSERRb_CLR_MSERRCLR_Msk (0x20UL) /*!< MSERRCLR (Bitfield-Mask: 0x01) */ + #define R_BUS_BUSERRb_CLR_ILERRCLR_Pos (4UL) /*!< ILERRCLR (Bit 4) */ + #define R_BUS_BUSERRb_CLR_ILERRCLR_Msk (0x10UL) /*!< ILERRCLR (Bitfield-Mask: 0x01) */ + #define R_BUS_BUSERRb_CLR_MMERRCLR_Pos (3UL) /*!< MMERRCLR (Bit 3) */ + #define R_BUS_BUSERRb_CLR_MMERRCLR_Msk (0x8UL) /*!< MMERRCLR (Bitfield-Mask: 0x01) */ + #define R_BUS_BUSERRb_CLR_STERRCLR_Pos (1UL) /*!< STERRCLR (Bit 1) */ + #define R_BUS_BUSERRb_CLR_STERRCLR_Msk (0x2UL) /*!< STERRCLR (Bitfield-Mask: 0x01) */ + #define R_BUS_BUSERRb_CLR_SLERRCLR_Pos (0UL) /*!< SLERRCLR (Bit 0) */ + #define R_BUS_BUSERRb_CLR_SLERRCLR_Msk (0x1UL) /*!< SLERRCLR (Bitfield-Mask: 0x01) */ + +/* =========================================================================================================================== */ +/* ================ DMACDTCERR ================ */ +/* =========================================================================================================================== */ + +/* ========================================================= STAT ========================================================== */ + #define R_BUS_DMACDTCERR_STAT_MTERRSTAT_Pos (0UL) /*!< MTERRSTAT (Bit 0) */ + #define R_BUS_DMACDTCERR_STAT_MTERRSTAT_Msk (0x1UL) /*!< MTERRSTAT (Bitfield-Mask: 0x01) */ +/* ========================================================== CLR ========================================================== */ + #define R_BUS_DMACDTCERR_CLR_MTERRCLR_Pos (0UL) /*!< MTERRCLR (Bit 0) */ + #define R_BUS_DMACDTCERR_CLR_MTERRCLR_Msk (0x1UL) /*!< MTERRCLR (Bitfield-Mask: 0x01) */ + +/* =========================================================================================================================== */ +/* ================ BUSSABT0 ================ */ +/* =========================================================================================================================== */ + +/* ========================================================= FLBI ========================================================== */ + #define R_BUS_BUSSABT0_FLBI_ARBS_Pos (0UL) /*!< ARBS (Bit 0) */ + #define R_BUS_BUSSABT0_FLBI_ARBS_Msk (0x1UL) /*!< ARBS (Bitfield-Mask: 0x01) */ +/* ======================================================== MRE0BI ========================================================= */ + #define R_BUS_BUSSABT0_MRE0BI_ARBS_Pos (0UL) /*!< ARBS (Bit 0) */ + #define R_BUS_BUSSABT0_MRE0BI_ARBS_Msk (0x1UL) /*!< ARBS (Bitfield-Mask: 0x01) */ +/* ========================================================= S0BI ========================================================== */ + #define R_BUS_BUSSABT0_S0BI_ARBS_Pos (0UL) /*!< ARBS (Bit 0) */ + #define R_BUS_BUSSABT0_S0BI_ARBS_Msk (0x1UL) /*!< ARBS (Bitfield-Mask: 0x01) */ +/* ========================================================= S1BI ========================================================== */ + #define R_BUS_BUSSABT0_S1BI_ARBS_Pos (0UL) /*!< ARBS (Bit 0) */ + #define R_BUS_BUSSABT0_S1BI_ARBS_Msk (0x1UL) /*!< ARBS (Bitfield-Mask: 0x01) */ +/* ========================================================= S2BI ========================================================== */ + #define R_BUS_BUSSABT0_S2BI_ARBS_Pos (0UL) /*!< ARBS (Bit 0) */ + #define R_BUS_BUSSABT0_S2BI_ARBS_Msk (0x1UL) /*!< ARBS (Bitfield-Mask: 0x01) */ +/* ========================================================= S3BI ========================================================== */ + #define R_BUS_BUSSABT0_S3BI_ARBS_Pos (0UL) /*!< ARBS (Bit 0) */ + #define R_BUS_BUSSABT0_S3BI_ARBS_Msk (0x1UL) /*!< ARBS (Bitfield-Mask: 0x01) */ +/* ======================================================== STBYSBI ======================================================== */ + #define R_BUS_BUSSABT0_STBYSBI_ARBS_Pos (0UL) /*!< ARBS (Bit 0) */ + #define R_BUS_BUSSABT0_STBYSBI_ARBS_Msk (0x1UL) /*!< ARBS (Bitfield-Mask: 0x01) */ +/* ========================================================= ECBI ========================================================== */ + #define R_BUS_BUSSABT0_ECBI_ARBS_Pos (0UL) /*!< ARBS (Bit 0) */ + #define R_BUS_BUSSABT0_ECBI_ARBS_Msk (0x1UL) /*!< ARBS (Bitfield-Mask: 0x01) */ +/* ========================================================= EOBI ========================================================== */ + #define R_BUS_BUSSABT0_EOBI_ARBS_Pos (0UL) /*!< ARBS (Bit 0) */ + #define R_BUS_BUSSABT0_EOBI_ARBS_Msk (0x1UL) /*!< ARBS (Bitfield-Mask: 0x01) */ +/* ======================================================== SPI0BI ========================================================= */ + #define R_BUS_BUSSABT0_SPI0BI_ARBS_Pos (0UL) /*!< ARBS (Bit 0) */ + #define R_BUS_BUSSABT0_SPI0BI_ARBS_Msk (0x1UL) /*!< ARBS (Bitfield-Mask: 0x01) */ +/* ======================================================== SPI1BI ========================================================= */ + #define R_BUS_BUSSABT0_SPI1BI_ARBS_Pos (0UL) /*!< ARBS (Bit 0) */ + #define R_BUS_BUSSABT0_SPI1BI_ARBS_Msk (0x1UL) /*!< ARBS (Bitfield-Mask: 0x01) */ +/* ========================================================= PBBI ========================================================== */ + #define R_BUS_BUSSABT0_PBBI_ARBS_Pos (0UL) /*!< ARBS (Bit 0) */ + #define R_BUS_BUSSABT0_PBBI_ARBS_Msk (0x1UL) /*!< ARBS (Bitfield-Mask: 0x01) */ +/* ========================================================= PABI ========================================================== */ + #define R_BUS_BUSSABT0_PABI_ARBS_Pos (0UL) /*!< ARBS (Bit 0) */ + #define R_BUS_BUSSABT0_PABI_ARBS_Msk (0x1UL) /*!< ARBS (Bitfield-Mask: 0x01) */ +/* ========================================================= PIBI ========================================================== */ + #define R_BUS_BUSSABT0_PIBI_ARBS_Pos (0UL) /*!< ARBS (Bit 0) */ + #define R_BUS_BUSSABT0_PIBI_ARBS_Msk (0x1UL) /*!< ARBS (Bitfield-Mask: 0x01) */ +/* ========================================================= PSBI ========================================================== */ + #define R_BUS_BUSSABT0_PSBI_ARBS_Pos (0UL) /*!< ARBS (Bit 0) */ + #define R_BUS_BUSSABT0_PSBI_ARBS_Msk (0x1UL) /*!< ARBS (Bitfield-Mask: 0x01) */ +/* ======================================================= CPU0SAHBI ======================================================= */ + #define R_BUS_BUSSABT0_CPU0SAHBI_ARBS_Pos (0UL) /*!< ARBS (Bit 0) */ + #define R_BUS_BUSSABT0_CPU0SAHBI_ARBS_Msk (0x1UL) /*!< ARBS (Bitfield-Mask: 0x01) */ +/* ======================================================= CPU1TCMBI ======================================================= */ + #define R_BUS_BUSSABT0_CPU1TCMBI_ARBS_Pos (0UL) /*!< ARBS (Bit 0) */ + #define R_BUS_BUSSABT0_CPU1TCMBI_ARBS_Msk (0x1UL) /*!< ARBS (Bitfield-Mask: 0x01) */ + +/* =========================================================================================================================== */ +/* ================ BUSSABT1 ================ */ +/* =========================================================================================================================== */ + +/* ========================================================= FHBI ========================================================== */ + #define R_BUS_BUSSABT1_FHBI_ARBS_Pos (0UL) /*!< ARBS (Bit 0) */ + #define R_BUS_BUSSABT1_FHBI_ARBS_Msk (0x3UL) /*!< ARBS (Bitfield-Mask: 0x03) */ +/* ======================================================== MRC0BI ========================================================= */ + #define R_BUS_BUSSABT1_MRC0BI_ARBS_Pos (0UL) /*!< ARBS (Bit 0) */ + #define R_BUS_BUSSABT1_MRC0BI_ARBS_Msk (0x3UL) /*!< ARBS (Bitfield-Mask: 0x03) */ +/* ========================================================= S0BI ========================================================== */ + #define R_BUS_BUSSABT1_S0BI_ARBS_Pos (0UL) /*!< ARBS (Bit 0) */ + #define R_BUS_BUSSABT1_S0BI_ARBS_Msk (0x3UL) /*!< ARBS (Bitfield-Mask: 0x03) */ +/* ========================================================= S1BI ========================================================== */ + #define R_BUS_BUSSABT1_S1BI_ARBS_Pos (0UL) /*!< ARBS (Bit 0) */ + #define R_BUS_BUSSABT1_S1BI_ARBS_Msk (0x3UL) /*!< ARBS (Bitfield-Mask: 0x03) */ + +/* =========================================================================================================================== */ +/* ================ BMSAERR ================ */ +/* =========================================================================================================================== */ + +/* ========================================================== ADD ========================================================== */ + #define R_BUS_BMSAERR_ADD_MSERAD_Pos (0UL) /*!< MSERAD (Bit 0) */ + #define R_BUS_BMSAERR_ADD_MSERAD_Msk (0xffffffffUL) /*!< MSERAD (Bitfield-Mask: 0xffffffff) */ +/* ========================================================== RW =========================================================== */ + #define R_BUS_BMSAERR_RW_MSARWSTAT_Pos (0UL) /*!< MSARWSTAT (Bit 0) */ + #define R_BUS_BMSAERR_RW_MSARWSTAT_Msk (0x1UL) /*!< MSARWSTAT (Bitfield-Mask: 0x01) */ + +/* =========================================================================================================================== */ +/* ================ OAD ================ */ +/* =========================================================================================================================== */ + +/* ======================================================== BUSOAD ========================================================= */ + #define R_BUS_OAD_BUSOAD_BWERROAD_Pos (2UL) /*!< BWERROAD (Bit 2) */ + #define R_BUS_OAD_BUSOAD_BWERROAD_Msk (0x4UL) /*!< BWERROAD (Bitfield-Mask: 0x01) */ + #define R_BUS_OAD_BUSOAD_SLERROAD_Pos (1UL) /*!< SLERROAD (Bit 1) */ + #define R_BUS_OAD_BUSOAD_SLERROAD_Msk (0x2UL) /*!< SLERROAD (Bitfield-Mask: 0x01) */ + #define R_BUS_OAD_BUSOAD_ILERROAD_Pos (0UL) /*!< ILERROAD (Bit 0) */ + #define R_BUS_OAD_BUSOAD_ILERROAD_Msk (0x1UL) /*!< ILERROAD (Bitfield-Mask: 0x01) */ +/* ======================================================= BUSOADPT ======================================================== */ + #define R_BUS_OAD_BUSOADPT_KEY_Pos (8UL) /*!< KEY (Bit 8) */ + #define R_BUS_OAD_BUSOADPT_KEY_Msk (0xff00UL) /*!< KEY (Bitfield-Mask: 0xff) */ + #define R_BUS_OAD_BUSOADPT_PROTECT_Pos (0UL) /*!< PROTECT (Bit 0) */ + #define R_BUS_OAD_BUSOADPT_PROTECT_Msk (0x1UL) /*!< PROTECT (Bitfield-Mask: 0x01) */ +/* ======================================================== MSAOAD ========================================================= */ + #define R_BUS_OAD_MSAOAD_KEY_Pos (8UL) /*!< KEY (Bit 8) */ + #define R_BUS_OAD_MSAOAD_KEY_Msk (0xff00UL) /*!< KEY (Bitfield-Mask: 0xff) */ + #define R_BUS_OAD_MSAOAD_OAD_Pos (0UL) /*!< OAD (Bit 0) */ + #define R_BUS_OAD_MSAOAD_OAD_Msk (0x1UL) /*!< OAD (Bitfield-Mask: 0x01) */ +/* ========================================================= MSAPT ========================================================= */ + #define R_BUS_OAD_MSAPT_KEY_Pos (8UL) /*!< KEY (Bit 8) */ + #define R_BUS_OAD_MSAPT_KEY_Msk (0xff00UL) /*!< KEY (Bitfield-Mask: 0xff) */ + #define R_BUS_OAD_MSAPT_PROTECT_Pos (0UL) /*!< PROTECT (Bit 0) */ + #define R_BUS_OAD_MSAPT_PROTECT_Msk (0x1UL) /*!< PROTECT (Bitfield-Mask: 0x01) */ + +/* =========================================================================================================================== */ +/* ================ MBWERR ================ */ +/* =========================================================================================================================== */ + +/* ========================================================= STAT ========================================================== */ + #define R_BUS_MBWERR_STAT_BWERR_Pos (0UL) /*!< BWERR (Bit 0) */ + #define R_BUS_MBWERR_STAT_BWERR_Msk (0x1UL) /*!< BWERR (Bitfield-Mask: 0x01) */ +/* ========================================================== CLR ========================================================== */ + #define R_BUS_MBWERR_CLR_BWERR_Pos (0UL) /*!< BWERR (Bit 0) */ + #define R_BUS_MBWERR_CLR_BWERR_Msk (0x1UL) /*!< BWERR (Bitfield-Mask: 0x01) */ + +/* =========================================================================================================================== */ +/* ================ BUSM ================ */ +/* =========================================================================================================================== */ + +/* ========================================================== CNT ========================================================== */ + #define R_BUS_BUSM_CNT_IERES_Pos (15UL) /*!< IERES (Bit 15) */ + #define R_BUS_BUSM_CNT_IERES_Msk (0x8000UL) /*!< IERES (Bitfield-Mask: 0x01) */ + +/* =========================================================================================================================== */ +/* ================ BUSS ================ */ +/* =========================================================================================================================== */ + +/* ========================================================== CNT ========================================================== */ + #define R_BUS_BUSS_CNT_ARBMET_Pos (4UL) /*!< ARBMET (Bit 4) */ + #define R_BUS_BUSS_CNT_ARBMET_Msk (0x30UL) /*!< ARBMET (Bitfield-Mask: 0x03) */ + #define R_BUS_BUSS_CNT_ARBS_Pos (0UL) /*!< ARBS (Bit 0) */ + #define R_BUS_BUSS_CNT_ARBS_Msk (0x3UL) /*!< ARBS (Bitfield-Mask: 0x03) */ + +/* =========================================================================================================================== */ +/* ================ CFDC ================ */ +/* =========================================================================================================================== */ + +/* ========================================================= NCFG ========================================================== */ + #define R_CANFD_CFDC_NCFG_NBRP_Pos (0UL) /*!< NBRP (Bit 0) */ + #define R_CANFD_CFDC_NCFG_NBRP_Msk (0x3ffUL) /*!< NBRP (Bitfield-Mask: 0x3ff) */ + #define R_CANFD_CFDC_NCFG_NSJW_Pos (10UL) /*!< NSJW (Bit 10) */ + #define R_CANFD_CFDC_NCFG_NSJW_Msk (0x1fc00UL) /*!< NSJW (Bitfield-Mask: 0x7f) */ + #define R_CANFD_CFDC_NCFG_NTSEG1_Pos (17UL) /*!< NTSEG1 (Bit 17) */ + #define R_CANFD_CFDC_NCFG_NTSEG1_Msk (0x1fe0000UL) /*!< NTSEG1 (Bitfield-Mask: 0xff) */ + #define R_CANFD_CFDC_NCFG_NTSEG2_Pos (25UL) /*!< NTSEG2 (Bit 25) */ + #define R_CANFD_CFDC_NCFG_NTSEG2_Msk (0xfe000000UL) /*!< NTSEG2 (Bitfield-Mask: 0x7f) */ +/* ========================================================== CTR ========================================================== */ + #define R_CANFD_CFDC_CTR_CHMDC_Pos (0UL) /*!< CHMDC (Bit 0) */ + #define R_CANFD_CFDC_CTR_CHMDC_Msk (0x3UL) /*!< CHMDC (Bitfield-Mask: 0x03) */ + #define R_CANFD_CFDC_CTR_CSLPR_Pos (2UL) /*!< CSLPR (Bit 2) */ + #define R_CANFD_CFDC_CTR_CSLPR_Msk (0x4UL) /*!< CSLPR (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDC_CTR_RTBO_Pos (3UL) /*!< RTBO (Bit 3) */ + #define R_CANFD_CFDC_CTR_RTBO_Msk (0x8UL) /*!< RTBO (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDC_CTR_BEIE_Pos (8UL) /*!< BEIE (Bit 8) */ + #define R_CANFD_CFDC_CTR_BEIE_Msk (0x100UL) /*!< BEIE (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDC_CTR_EWIE_Pos (9UL) /*!< EWIE (Bit 9) */ + #define R_CANFD_CFDC_CTR_EWIE_Msk (0x200UL) /*!< EWIE (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDC_CTR_EPIE_Pos (10UL) /*!< EPIE (Bit 10) */ + #define R_CANFD_CFDC_CTR_EPIE_Msk (0x400UL) /*!< EPIE (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDC_CTR_BOEIE_Pos (11UL) /*!< BOEIE (Bit 11) */ + #define R_CANFD_CFDC_CTR_BOEIE_Msk (0x800UL) /*!< BOEIE (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDC_CTR_BORIE_Pos (12UL) /*!< BORIE (Bit 12) */ + #define R_CANFD_CFDC_CTR_BORIE_Msk (0x1000UL) /*!< BORIE (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDC_CTR_OLIE_Pos (13UL) /*!< OLIE (Bit 13) */ + #define R_CANFD_CFDC_CTR_OLIE_Msk (0x2000UL) /*!< OLIE (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDC_CTR_BLIE_Pos (14UL) /*!< BLIE (Bit 14) */ + #define R_CANFD_CFDC_CTR_BLIE_Msk (0x4000UL) /*!< BLIE (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDC_CTR_ALIE_Pos (15UL) /*!< ALIE (Bit 15) */ + #define R_CANFD_CFDC_CTR_ALIE_Msk (0x8000UL) /*!< ALIE (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDC_CTR_TAIE_Pos (16UL) /*!< TAIE (Bit 16) */ + #define R_CANFD_CFDC_CTR_TAIE_Msk (0x10000UL) /*!< TAIE (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDC_CTR_EOCOIE_Pos (17UL) /*!< EOCOIE (Bit 17) */ + #define R_CANFD_CFDC_CTR_EOCOIE_Msk (0x20000UL) /*!< EOCOIE (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDC_CTR_SOCOIE_Pos (18UL) /*!< SOCOIE (Bit 18) */ + #define R_CANFD_CFDC_CTR_SOCOIE_Msk (0x40000UL) /*!< SOCOIE (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDC_CTR_TDCVFIE_Pos (19UL) /*!< TDCVFIE (Bit 19) */ + #define R_CANFD_CFDC_CTR_TDCVFIE_Msk (0x80000UL) /*!< TDCVFIE (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDC_CTR_BOM_Pos (21UL) /*!< BOM (Bit 21) */ + #define R_CANFD_CFDC_CTR_BOM_Msk (0x600000UL) /*!< BOM (Bitfield-Mask: 0x03) */ + #define R_CANFD_CFDC_CTR_ERRD_Pos (23UL) /*!< ERRD (Bit 23) */ + #define R_CANFD_CFDC_CTR_ERRD_Msk (0x800000UL) /*!< ERRD (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDC_CTR_CTME_Pos (24UL) /*!< CTME (Bit 24) */ + #define R_CANFD_CFDC_CTR_CTME_Msk (0x1000000UL) /*!< CTME (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDC_CTR_CTMS_Pos (25UL) /*!< CTMS (Bit 25) */ + #define R_CANFD_CFDC_CTR_CTMS_Msk (0x6000000UL) /*!< CTMS (Bitfield-Mask: 0x03) */ + #define R_CANFD_CFDC_CTR_CRCT_Pos (30UL) /*!< CRCT (Bit 30) */ + #define R_CANFD_CFDC_CTR_CRCT_Msk (0x40000000UL) /*!< CRCT (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDC_CTR_ROM_Pos (31UL) /*!< ROM (Bit 31) */ + #define R_CANFD_CFDC_CTR_ROM_Msk (0x80000000UL) /*!< ROM (Bitfield-Mask: 0x01) */ +/* ========================================================== STS ========================================================== */ + #define R_CANFD_CFDC_STS_CRSTSTS_Pos (0UL) /*!< CRSTSTS (Bit 0) */ + #define R_CANFD_CFDC_STS_CRSTSTS_Msk (0x1UL) /*!< CRSTSTS (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDC_STS_CHLTSTS_Pos (1UL) /*!< CHLTSTS (Bit 1) */ + #define R_CANFD_CFDC_STS_CHLTSTS_Msk (0x2UL) /*!< CHLTSTS (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDC_STS_CSLPSTS_Pos (2UL) /*!< CSLPSTS (Bit 2) */ + #define R_CANFD_CFDC_STS_CSLPSTS_Msk (0x4UL) /*!< CSLPSTS (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDC_STS_EPSTS_Pos (3UL) /*!< EPSTS (Bit 3) */ + #define R_CANFD_CFDC_STS_EPSTS_Msk (0x8UL) /*!< EPSTS (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDC_STS_BOSTS_Pos (4UL) /*!< BOSTS (Bit 4) */ + #define R_CANFD_CFDC_STS_BOSTS_Msk (0x10UL) /*!< BOSTS (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDC_STS_TRMSTS_Pos (5UL) /*!< TRMSTS (Bit 5) */ + #define R_CANFD_CFDC_STS_TRMSTS_Msk (0x20UL) /*!< TRMSTS (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDC_STS_RECSTS_Pos (6UL) /*!< RECSTS (Bit 6) */ + #define R_CANFD_CFDC_STS_RECSTS_Msk (0x40UL) /*!< RECSTS (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDC_STS_COMSTS_Pos (7UL) /*!< COMSTS (Bit 7) */ + #define R_CANFD_CFDC_STS_COMSTS_Msk (0x80UL) /*!< COMSTS (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDC_STS_ESIF_Pos (8UL) /*!< ESIF (Bit 8) */ + #define R_CANFD_CFDC_STS_ESIF_Msk (0x100UL) /*!< ESIF (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDC_STS_REC_Pos (16UL) /*!< REC (Bit 16) */ + #define R_CANFD_CFDC_STS_REC_Msk (0xff0000UL) /*!< REC (Bitfield-Mask: 0xff) */ + #define R_CANFD_CFDC_STS_TEC_Pos (24UL) /*!< TEC (Bit 24) */ + #define R_CANFD_CFDC_STS_TEC_Msk (0xff000000UL) /*!< TEC (Bitfield-Mask: 0xff) */ +/* ========================================================= ERFL ========================================================== */ + #define R_CANFD_CFDC_ERFL_BEF_Pos (0UL) /*!< BEF (Bit 0) */ + #define R_CANFD_CFDC_ERFL_BEF_Msk (0x1UL) /*!< BEF (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDC_ERFL_EWF_Pos (1UL) /*!< EWF (Bit 1) */ + #define R_CANFD_CFDC_ERFL_EWF_Msk (0x2UL) /*!< EWF (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDC_ERFL_EPF_Pos (2UL) /*!< EPF (Bit 2) */ + #define R_CANFD_CFDC_ERFL_EPF_Msk (0x4UL) /*!< EPF (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDC_ERFL_BOEF_Pos (3UL) /*!< BOEF (Bit 3) */ + #define R_CANFD_CFDC_ERFL_BOEF_Msk (0x8UL) /*!< BOEF (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDC_ERFL_BORF_Pos (4UL) /*!< BORF (Bit 4) */ + #define R_CANFD_CFDC_ERFL_BORF_Msk (0x10UL) /*!< BORF (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDC_ERFL_OVLF_Pos (5UL) /*!< OVLF (Bit 5) */ + #define R_CANFD_CFDC_ERFL_OVLF_Msk (0x20UL) /*!< OVLF (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDC_ERFL_BLF_Pos (6UL) /*!< BLF (Bit 6) */ + #define R_CANFD_CFDC_ERFL_BLF_Msk (0x40UL) /*!< BLF (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDC_ERFL_ALF_Pos (7UL) /*!< ALF (Bit 7) */ + #define R_CANFD_CFDC_ERFL_ALF_Msk (0x80UL) /*!< ALF (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDC_ERFL_SERR_Pos (8UL) /*!< SERR (Bit 8) */ + #define R_CANFD_CFDC_ERFL_SERR_Msk (0x100UL) /*!< SERR (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDC_ERFL_FERR_Pos (9UL) /*!< FERR (Bit 9) */ + #define R_CANFD_CFDC_ERFL_FERR_Msk (0x200UL) /*!< FERR (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDC_ERFL_AERR_Pos (10UL) /*!< AERR (Bit 10) */ + #define R_CANFD_CFDC_ERFL_AERR_Msk (0x400UL) /*!< AERR (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDC_ERFL_CERR_Pos (11UL) /*!< CERR (Bit 11) */ + #define R_CANFD_CFDC_ERFL_CERR_Msk (0x800UL) /*!< CERR (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDC_ERFL_B1ERR_Pos (12UL) /*!< B1ERR (Bit 12) */ + #define R_CANFD_CFDC_ERFL_B1ERR_Msk (0x1000UL) /*!< B1ERR (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDC_ERFL_B0ERR_Pos (13UL) /*!< B0ERR (Bit 13) */ + #define R_CANFD_CFDC_ERFL_B0ERR_Msk (0x2000UL) /*!< B0ERR (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDC_ERFL_ADERR_Pos (14UL) /*!< ADERR (Bit 14) */ + #define R_CANFD_CFDC_ERFL_ADERR_Msk (0x4000UL) /*!< ADERR (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDC_ERFL_CRCREG_Pos (16UL) /*!< CRCREG (Bit 16) */ + #define R_CANFD_CFDC_ERFL_CRCREG_Msk (0x7fff0000UL) /*!< CRCREG (Bitfield-Mask: 0x7fff) */ + +/* =========================================================================================================================== */ +/* ================ CFDC2 ================ */ +/* =========================================================================================================================== */ + +/* ========================================================= DCFG ========================================================== */ + #define R_CANFD_CFDC2_DCFG_DBRP_Pos (0UL) /*!< DBRP (Bit 0) */ + #define R_CANFD_CFDC2_DCFG_DBRP_Msk (0xffUL) /*!< DBRP (Bitfield-Mask: 0xff) */ + #define R_CANFD_CFDC2_DCFG_DTSEG1_Pos (8UL) /*!< DTSEG1 (Bit 8) */ + #define R_CANFD_CFDC2_DCFG_DTSEG1_Msk (0x1f00UL) /*!< DTSEG1 (Bitfield-Mask: 0x1f) */ + #define R_CANFD_CFDC2_DCFG_DTSEG2_Pos (16UL) /*!< DTSEG2 (Bit 16) */ + #define R_CANFD_CFDC2_DCFG_DTSEG2_Msk (0xf0000UL) /*!< DTSEG2 (Bitfield-Mask: 0x0f) */ + #define R_CANFD_CFDC2_DCFG_DSJW_Pos (24UL) /*!< DSJW (Bit 24) */ + #define R_CANFD_CFDC2_DCFG_DSJW_Msk (0xf000000UL) /*!< DSJW (Bitfield-Mask: 0x0f) */ +/* ========================================================= FDCFG ========================================================= */ + #define R_CANFD_CFDC2_FDCFG_EOCCFG_Pos (0UL) /*!< EOCCFG (Bit 0) */ + #define R_CANFD_CFDC2_FDCFG_EOCCFG_Msk (0x7UL) /*!< EOCCFG (Bitfield-Mask: 0x07) */ + #define R_CANFD_CFDC2_FDCFG_TDCOC_Pos (8UL) /*!< TDCOC (Bit 8) */ + #define R_CANFD_CFDC2_FDCFG_TDCOC_Msk (0x100UL) /*!< TDCOC (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDC2_FDCFG_TDCE_Pos (9UL) /*!< TDCE (Bit 9) */ + #define R_CANFD_CFDC2_FDCFG_TDCE_Msk (0x200UL) /*!< TDCE (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDC2_FDCFG_ESIC_Pos (10UL) /*!< ESIC (Bit 10) */ + #define R_CANFD_CFDC2_FDCFG_ESIC_Msk (0x400UL) /*!< ESIC (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDC2_FDCFG_TDCO_Pos (16UL) /*!< TDCO (Bit 16) */ + #define R_CANFD_CFDC2_FDCFG_TDCO_Msk (0xff0000UL) /*!< TDCO (Bitfield-Mask: 0xff) */ + #define R_CANFD_CFDC2_FDCFG_FDOE_Pos (28UL) /*!< FDOE (Bit 28) */ + #define R_CANFD_CFDC2_FDCFG_FDOE_Msk (0x10000000UL) /*!< FDOE (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDC2_FDCFG_REFE_Pos (29UL) /*!< REFE (Bit 29) */ + #define R_CANFD_CFDC2_FDCFG_REFE_Msk (0x20000000UL) /*!< REFE (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDC2_FDCFG_CLOE_Pos (30UL) /*!< CLOE (Bit 30) */ + #define R_CANFD_CFDC2_FDCFG_CLOE_Msk (0x40000000UL) /*!< CLOE (Bitfield-Mask: 0x01) */ +/* ========================================================= FDCTR ========================================================= */ + #define R_CANFD_CFDC2_FDCTR_EOCCLR_Pos (0UL) /*!< EOCCLR (Bit 0) */ + #define R_CANFD_CFDC2_FDCTR_EOCCLR_Msk (0x1UL) /*!< EOCCLR (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDC2_FDCTR_SOCCLR_Pos (1UL) /*!< SOCCLR (Bit 1) */ + #define R_CANFD_CFDC2_FDCTR_SOCCLR_Msk (0x2UL) /*!< SOCCLR (Bitfield-Mask: 0x01) */ +/* ========================================================= FDSTS ========================================================= */ + #define R_CANFD_CFDC2_FDSTS_TDCR_Pos (0UL) /*!< TDCR (Bit 0) */ + #define R_CANFD_CFDC2_FDSTS_TDCR_Msk (0xffUL) /*!< TDCR (Bitfield-Mask: 0xff) */ + #define R_CANFD_CFDC2_FDSTS_EOCO_Pos (8UL) /*!< EOCO (Bit 8) */ + #define R_CANFD_CFDC2_FDSTS_EOCO_Msk (0x100UL) /*!< EOCO (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDC2_FDSTS_SOCO_Pos (9UL) /*!< SOCO (Bit 9) */ + #define R_CANFD_CFDC2_FDSTS_SOCO_Msk (0x200UL) /*!< SOCO (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDC2_FDSTS_TDCVF_Pos (15UL) /*!< TDCVF (Bit 15) */ + #define R_CANFD_CFDC2_FDSTS_TDCVF_Msk (0x8000UL) /*!< TDCVF (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDC2_FDSTS_EOC_Pos (16UL) /*!< EOC (Bit 16) */ + #define R_CANFD_CFDC2_FDSTS_EOC_Msk (0xff0000UL) /*!< EOC (Bitfield-Mask: 0xff) */ + #define R_CANFD_CFDC2_FDSTS_SOC_Pos (24UL) /*!< SOC (Bit 24) */ + #define R_CANFD_CFDC2_FDSTS_SOC_Msk (0xff000000UL) /*!< SOC (Bitfield-Mask: 0xff) */ +/* ========================================================= FDCRC ========================================================= */ + #define R_CANFD_CFDC2_FDCRC_CRCREG_Pos (0UL) /*!< CRCREG (Bit 0) */ + #define R_CANFD_CFDC2_FDCRC_CRCREG_Msk (0x1fffffUL) /*!< CRCREG (Bitfield-Mask: 0x1fffff) */ + #define R_CANFD_CFDC2_FDCRC_SCNT_Pos (24UL) /*!< SCNT (Bit 24) */ + #define R_CANFD_CFDC2_FDCRC_SCNT_Msk (0xf000000UL) /*!< SCNT (Bitfield-Mask: 0x0f) */ + +/* =========================================================================================================================== */ +/* ================ CFDGAFL ================ */ +/* =========================================================================================================================== */ + +/* ========================================================== ID =========================================================== */ + #define R_CANFD_CFDGAFL_ID_GAFLID_Pos (0UL) /*!< GAFLID (Bit 0) */ + #define R_CANFD_CFDGAFL_ID_GAFLID_Msk (0x1fffffffUL) /*!< GAFLID (Bitfield-Mask: 0x1fffffff) */ + #define R_CANFD_CFDGAFL_ID_GAFLLB_Pos (29UL) /*!< GAFLLB (Bit 29) */ + #define R_CANFD_CFDGAFL_ID_GAFLLB_Msk (0x20000000UL) /*!< GAFLLB (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDGAFL_ID_GAFLRTR_Pos (30UL) /*!< GAFLRTR (Bit 30) */ + #define R_CANFD_CFDGAFL_ID_GAFLRTR_Msk (0x40000000UL) /*!< GAFLRTR (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDGAFL_ID_GAFLIDE_Pos (31UL) /*!< GAFLIDE (Bit 31) */ + #define R_CANFD_CFDGAFL_ID_GAFLIDE_Msk (0x80000000UL) /*!< GAFLIDE (Bitfield-Mask: 0x01) */ +/* =========================================================== M =========================================================== */ + #define R_CANFD_CFDGAFL_M_GAFLIDM_Pos (0UL) /*!< GAFLIDM (Bit 0) */ + #define R_CANFD_CFDGAFL_M_GAFLIDM_Msk (0x1fffffffUL) /*!< GAFLIDM (Bitfield-Mask: 0x1fffffff) */ + #define R_CANFD_CFDGAFL_M_GAFLIFL1_Pos (29UL) /*!< GAFLIFL1 (Bit 29) */ + #define R_CANFD_CFDGAFL_M_GAFLIFL1_Msk (0x20000000UL) /*!< GAFLIFL1 (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDGAFL_M_GAFLRTRM_Pos (30UL) /*!< GAFLRTRM (Bit 30) */ + #define R_CANFD_CFDGAFL_M_GAFLRTRM_Msk (0x40000000UL) /*!< GAFLRTRM (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDGAFL_M_GAFLIDEM_Pos (31UL) /*!< GAFLIDEM (Bit 31) */ + #define R_CANFD_CFDGAFL_M_GAFLIDEM_Msk (0x80000000UL) /*!< GAFLIDEM (Bitfield-Mask: 0x01) */ +/* ========================================================== P0 =========================================================== */ + #define R_CANFD_CFDGAFL_P0_GAFLDLC_Pos (0UL) /*!< GAFLDLC (Bit 0) */ + #define R_CANFD_CFDGAFL_P0_GAFLDLC_Msk (0xfUL) /*!< GAFLDLC (Bitfield-Mask: 0x0f) */ + #define R_CANFD_CFDGAFL_P0_GAFLIFL0_Pos (7UL) /*!< GAFLIFL0 (Bit 7) */ + #define R_CANFD_CFDGAFL_P0_GAFLIFL0_Msk (0x80UL) /*!< GAFLIFL0 (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDGAFL_P0_GAFLRMDP_Pos (8UL) /*!< GAFLRMDP (Bit 8) */ + #define R_CANFD_CFDGAFL_P0_GAFLRMDP_Msk (0x1f00UL) /*!< GAFLRMDP (Bitfield-Mask: 0x1f) */ + #define R_CANFD_CFDGAFL_P0_GAFLRMV_Pos (15UL) /*!< GAFLRMV (Bit 15) */ + #define R_CANFD_CFDGAFL_P0_GAFLRMV_Msk (0x8000UL) /*!< GAFLRMV (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDGAFL_P0_GAFLPTR_Pos (16UL) /*!< GAFLPTR (Bit 16) */ + #define R_CANFD_CFDGAFL_P0_GAFLPTR_Msk (0xffff0000UL) /*!< GAFLPTR (Bitfield-Mask: 0xffff) */ +/* ========================================================== P1 =========================================================== */ + #define R_CANFD_CFDGAFL_P1_GAFLFDP_Pos (0UL) /*!< GAFLFDP (Bit 0) */ + #define R_CANFD_CFDGAFL_P1_GAFLFDP_Msk (0x1ffUL) /*!< GAFLFDP (Bitfield-Mask: 0x1ff) */ + +/* =========================================================================================================================== */ +/* ================ CFDTHL ================ */ +/* =========================================================================================================================== */ + +/* ========================================================= ACC0 ========================================================== */ + #define R_CANFD_CFDTHL_ACC0_BT_Pos (0UL) /*!< BT (Bit 0) */ + #define R_CANFD_CFDTHL_ACC0_BT_Msk (0x7UL) /*!< BT (Bitfield-Mask: 0x07) */ + #define R_CANFD_CFDTHL_ACC0_BN_Pos (3UL) /*!< BN (Bit 3) */ + #define R_CANFD_CFDTHL_ACC0_BN_Msk (0x3f8UL) /*!< BN (Bitfield-Mask: 0x7f) */ + #define R_CANFD_CFDTHL_ACC0_TMTS_Pos (16UL) /*!< TMTS (Bit 16) */ + #define R_CANFD_CFDTHL_ACC0_TMTS_Msk (0xffff0000UL) /*!< TMTS (Bitfield-Mask: 0xffff) */ +/* ========================================================= ACC1 ========================================================== */ + #define R_CANFD_CFDTHL_ACC1_TID_Pos (0UL) /*!< TID (Bit 0) */ + #define R_CANFD_CFDTHL_ACC1_TID_Msk (0xffffUL) /*!< TID (Bitfield-Mask: 0xffff) */ + #define R_CANFD_CFDTHL_ACC1_TIFL_Pos (16UL) /*!< TIFL (Bit 16) */ + #define R_CANFD_CFDTHL_ACC1_TIFL_Msk (0x30000UL) /*!< TIFL (Bitfield-Mask: 0x03) */ + +/* =========================================================================================================================== */ +/* ================ CFDRF ================ */ +/* =========================================================================================================================== */ + +/* ========================================================== ID =========================================================== */ + #define R_CANFD_CFDRF_ID_RFID_Pos (0UL) /*!< RFID (Bit 0) */ + #define R_CANFD_CFDRF_ID_RFID_Msk (0x1fffffffUL) /*!< RFID (Bitfield-Mask: 0x1fffffff) */ + #define R_CANFD_CFDRF_ID_RFRTR_Pos (30UL) /*!< RFRTR (Bit 30) */ + #define R_CANFD_CFDRF_ID_RFRTR_Msk (0x40000000UL) /*!< RFRTR (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDRF_ID_RFIDE_Pos (31UL) /*!< RFIDE (Bit 31) */ + #define R_CANFD_CFDRF_ID_RFIDE_Msk (0x80000000UL) /*!< RFIDE (Bitfield-Mask: 0x01) */ +/* ========================================================== PTR ========================================================== */ + #define R_CANFD_CFDRF_PTR_RFTS_Pos (0UL) /*!< RFTS (Bit 0) */ + #define R_CANFD_CFDRF_PTR_RFTS_Msk (0xffffUL) /*!< RFTS (Bitfield-Mask: 0xffff) */ + #define R_CANFD_CFDRF_PTR_RFDLC_Pos (28UL) /*!< RFDLC (Bit 28) */ + #define R_CANFD_CFDRF_PTR_RFDLC_Msk (0xf0000000UL) /*!< RFDLC (Bitfield-Mask: 0x0f) */ +/* ========================================================= FDSTS ========================================================= */ + #define R_CANFD_CFDRF_FDSTS_RFESI_Pos (0UL) /*!< RFESI (Bit 0) */ + #define R_CANFD_CFDRF_FDSTS_RFESI_Msk (0x1UL) /*!< RFESI (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDRF_FDSTS_RFBRS_Pos (1UL) /*!< RFBRS (Bit 1) */ + #define R_CANFD_CFDRF_FDSTS_RFBRS_Msk (0x2UL) /*!< RFBRS (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDRF_FDSTS_RFFDF_Pos (2UL) /*!< RFFDF (Bit 2) */ + #define R_CANFD_CFDRF_FDSTS_RFFDF_Msk (0x4UL) /*!< RFFDF (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDRF_FDSTS_RFIFL_Pos (8UL) /*!< RFIFL (Bit 8) */ + #define R_CANFD_CFDRF_FDSTS_RFIFL_Msk (0x300UL) /*!< RFIFL (Bitfield-Mask: 0x03) */ + #define R_CANFD_CFDRF_FDSTS_RFPTR_Pos (16UL) /*!< RFPTR (Bit 16) */ + #define R_CANFD_CFDRF_FDSTS_RFPTR_Msk (0xffff0000UL) /*!< RFPTR (Bitfield-Mask: 0xffff) */ +/* ========================================================== DF =========================================================== */ + #define R_CANFD_CFDRF_DF_RFDB_Pos (0UL) /*!< RFDB (Bit 0) */ + #define R_CANFD_CFDRF_DF_RFDB_Msk (0xffUL) /*!< RFDB (Bitfield-Mask: 0xff) */ + +/* =========================================================================================================================== */ +/* ================ CFDCF ================ */ +/* =========================================================================================================================== */ + +/* ========================================================== ID =========================================================== */ + #define R_CANFD_CFDCF_ID_CFID_Pos (0UL) /*!< CFID (Bit 0) */ + #define R_CANFD_CFDCF_ID_CFID_Msk (0x1fffffffUL) /*!< CFID (Bitfield-Mask: 0x1fffffff) */ + #define R_CANFD_CFDCF_ID_CFRTR_Pos (30UL) /*!< CFRTR (Bit 30) */ + #define R_CANFD_CFDCF_ID_CFRTR_Msk (0x40000000UL) /*!< CFRTR (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDCF_ID_CFIDE_Pos (31UL) /*!< CFIDE (Bit 31) */ + #define R_CANFD_CFDCF_ID_CFIDE_Msk (0x80000000UL) /*!< CFIDE (Bitfield-Mask: 0x01) */ +/* ========================================================== PTR ========================================================== */ + #define R_CANFD_CFDCF_PTR_CFTS_Pos (0UL) /*!< CFTS (Bit 0) */ + #define R_CANFD_CFDCF_PTR_CFTS_Msk (0xffffUL) /*!< CFTS (Bitfield-Mask: 0xffff) */ + #define R_CANFD_CFDCF_PTR_CFDLC_Pos (28UL) /*!< CFDLC (Bit 28) */ + #define R_CANFD_CFDCF_PTR_CFDLC_Msk (0xf0000000UL) /*!< CFDLC (Bitfield-Mask: 0x0f) */ +/* ========================================================= FDSTS ========================================================= */ + #define R_CANFD_CFDCF_FDSTS_CFESI_Pos (0UL) /*!< CFESI (Bit 0) */ + #define R_CANFD_CFDCF_FDSTS_CFESI_Msk (0x1UL) /*!< CFESI (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDCF_FDSTS_CFBRS_Pos (1UL) /*!< CFBRS (Bit 1) */ + #define R_CANFD_CFDCF_FDSTS_CFBRS_Msk (0x2UL) /*!< CFBRS (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDCF_FDSTS_CFFDF_Pos (2UL) /*!< CFFDF (Bit 2) */ + #define R_CANFD_CFDCF_FDSTS_CFFDF_Msk (0x4UL) /*!< CFFDF (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDCF_FDSTS_CFIFL_Pos (8UL) /*!< CFIFL (Bit 8) */ + #define R_CANFD_CFDCF_FDSTS_CFIFL_Msk (0x300UL) /*!< CFIFL (Bitfield-Mask: 0x03) */ + #define R_CANFD_CFDCF_FDSTS_CFPTR_Pos (16UL) /*!< CFPTR (Bit 16) */ + #define R_CANFD_CFDCF_FDSTS_CFPTR_Msk (0xffff0000UL) /*!< CFPTR (Bitfield-Mask: 0xffff) */ +/* ========================================================== DF =========================================================== */ + #define R_CANFD_CFDCF_DF_CFDB_Pos (0UL) /*!< CFDB (Bit 0) */ + #define R_CANFD_CFDCF_DF_CFDB_Msk (0xffUL) /*!< CFDB (Bitfield-Mask: 0xff) */ + +/* =========================================================================================================================== */ +/* ================ CFDTM ================ */ +/* =========================================================================================================================== */ + +/* ========================================================== ID =========================================================== */ + #define R_CANFD_CFDTM_ID_TMID_Pos (0UL) /*!< TMID (Bit 0) */ + #define R_CANFD_CFDTM_ID_TMID_Msk (0x1fffffffUL) /*!< TMID (Bitfield-Mask: 0x1fffffff) */ + #define R_CANFD_CFDTM_ID_TMRTR_Pos (30UL) /*!< TMRTR (Bit 30) */ + #define R_CANFD_CFDTM_ID_TMRTR_Msk (0x40000000UL) /*!< TMRTR (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDTM_ID_TMIDE_Pos (31UL) /*!< TMIDE (Bit 31) */ + #define R_CANFD_CFDTM_ID_TMIDE_Msk (0x80000000UL) /*!< TMIDE (Bitfield-Mask: 0x01) */ +/* ========================================================== PTR ========================================================== */ + #define R_CANFD_CFDTM_PTR_TMTS_Pos (0UL) /*!< TMTS (Bit 0) */ + #define R_CANFD_CFDTM_PTR_TMTS_Msk (0xffffUL) /*!< TMTS (Bitfield-Mask: 0xffff) */ + #define R_CANFD_CFDTM_PTR_TMDLC_Pos (28UL) /*!< TMDLC (Bit 28) */ + #define R_CANFD_CFDTM_PTR_TMDLC_Msk (0xf0000000UL) /*!< TMDLC (Bitfield-Mask: 0x0f) */ +/* ========================================================= FDCTR ========================================================= */ + #define R_CANFD_CFDTM_FDCTR_TMESI_Pos (0UL) /*!< TMESI (Bit 0) */ + #define R_CANFD_CFDTM_FDCTR_TMESI_Msk (0x1UL) /*!< TMESI (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDTM_FDCTR_TMBRS_Pos (1UL) /*!< TMBRS (Bit 1) */ + #define R_CANFD_CFDTM_FDCTR_TMBRS_Msk (0x2UL) /*!< TMBRS (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDTM_FDCTR_TMFDF_Pos (2UL) /*!< TMFDF (Bit 2) */ + #define R_CANFD_CFDTM_FDCTR_TMFDF_Msk (0x4UL) /*!< TMFDF (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDTM_FDCTR_TMIFL_Pos (8UL) /*!< TMIFL (Bit 8) */ + #define R_CANFD_CFDTM_FDCTR_TMIFL_Msk (0x300UL) /*!< TMIFL (Bitfield-Mask: 0x03) */ + #define R_CANFD_CFDTM_FDCTR_TMPTR_Pos (16UL) /*!< TMPTR (Bit 16) */ + #define R_CANFD_CFDTM_FDCTR_TMPTR_Msk (0xffff0000UL) /*!< TMPTR (Bitfield-Mask: 0xffff) */ +/* ========================================================== DF =========================================================== */ + #define R_CANFD_CFDTM_DF_TMDB_Pos (0UL) /*!< TMDB (Bit 0) */ + #define R_CANFD_CFDTM_DF_TMDB_Msk (0xffUL) /*!< TMDB (Bitfield-Mask: 0xff) */ + +/* =========================================================================================================================== */ +/* ================ RM ================ */ +/* =========================================================================================================================== */ + +/* ========================================================== ID =========================================================== */ + #define R_CANFD_CFDRM_RM_ID_RMID_Pos (0UL) /*!< RMID (Bit 0) */ + #define R_CANFD_CFDRM_RM_ID_RMID_Msk (0x1fffffffUL) /*!< RMID (Bitfield-Mask: 0x1fffffff) */ + #define R_CANFD_CFDRM_RM_ID_RMRTR_Pos (30UL) /*!< RMRTR (Bit 30) */ + #define R_CANFD_CFDRM_RM_ID_RMRTR_Msk (0x40000000UL) /*!< RMRTR (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDRM_RM_ID_RMIDE_Pos (31UL) /*!< RMIDE (Bit 31) */ + #define R_CANFD_CFDRM_RM_ID_RMIDE_Msk (0x80000000UL) /*!< RMIDE (Bitfield-Mask: 0x01) */ +/* ========================================================== PTR ========================================================== */ + #define R_CANFD_CFDRM_RM_PTR_RMTS_Pos (0UL) /*!< RMTS (Bit 0) */ + #define R_CANFD_CFDRM_RM_PTR_RMTS_Msk (0xffffUL) /*!< RMTS (Bitfield-Mask: 0xffff) */ + #define R_CANFD_CFDRM_RM_PTR_RMDLC_Pos (28UL) /*!< RMDLC (Bit 28) */ + #define R_CANFD_CFDRM_RM_PTR_RMDLC_Msk (0xf0000000UL) /*!< RMDLC (Bitfield-Mask: 0x0f) */ +/* ========================================================= FDSTS ========================================================= */ + #define R_CANFD_CFDRM_RM_FDSTS_RMESI_Pos (0UL) /*!< RMESI (Bit 0) */ + #define R_CANFD_CFDRM_RM_FDSTS_RMESI_Msk (0x1UL) /*!< RMESI (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDRM_RM_FDSTS_RMBRS_Pos (1UL) /*!< RMBRS (Bit 1) */ + #define R_CANFD_CFDRM_RM_FDSTS_RMBRS_Msk (0x2UL) /*!< RMBRS (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDRM_RM_FDSTS_RMFDF_Pos (2UL) /*!< RMFDF (Bit 2) */ + #define R_CANFD_CFDRM_RM_FDSTS_RMFDF_Msk (0x4UL) /*!< RMFDF (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDRM_RM_FDSTS_RMIFL_Pos (8UL) /*!< RMIFL (Bit 8) */ + #define R_CANFD_CFDRM_RM_FDSTS_RMIFL_Msk (0x300UL) /*!< RMIFL (Bitfield-Mask: 0x03) */ + #define R_CANFD_CFDRM_RM_FDSTS_RMPTR_Pos (16UL) /*!< RMPTR (Bit 16) */ + #define R_CANFD_CFDRM_RM_FDSTS_RMPTR_Msk (0xffff0000UL) /*!< RMPTR (Bitfield-Mask: 0xffff) */ +/* ========================================================== DF =========================================================== */ + #define R_CANFD_CFDRM_RM_DF_RMDB_Pos (0UL) /*!< RMDB (Bit 0) */ + #define R_CANFD_CFDRM_RM_DF_RMDB_Msk (0xffUL) /*!< RMDB (Bitfield-Mask: 0xff) */ + +/* =========================================================================================================================== */ +/* ================ CFDRM ================ */ +/* =========================================================================================================================== */ + +/* =========================================================================================================================== */ +/* ================ ELSEGR ================ */ +/* =========================================================================================================================== */ + +/* ========================================================== BY =========================================================== */ + #define R_ELC_ELSEGR_BY_WI_Pos (7UL) /*!< WI (Bit 7) */ + #define R_ELC_ELSEGR_BY_WI_Msk (0x80UL) /*!< WI (Bitfield-Mask: 0x01) */ + #define R_ELC_ELSEGR_BY_WE_Pos (6UL) /*!< WE (Bit 6) */ + #define R_ELC_ELSEGR_BY_WE_Msk (0x40UL) /*!< WE (Bitfield-Mask: 0x01) */ + #define R_ELC_ELSEGR_BY_SEG_Pos (0UL) /*!< SEG (Bit 0) */ + #define R_ELC_ELSEGR_BY_SEG_Msk (0x1UL) /*!< SEG (Bitfield-Mask: 0x01) */ + +/* =========================================================================================================================== */ +/* ================ ELSR ================ */ +/* =========================================================================================================================== */ + +/* ========================================================== HA =========================================================== */ + #define R_ELC_ELSR_HA_ELS_Pos (0UL) /*!< ELS (Bit 0) */ + #define R_ELC_ELSR_HA_ELS_Msk (0x1ffUL) /*!< ELS (Bitfield-Mask: 0x1ff) */ + +/* =========================================================================================================================== */ +/* ================ SAR ================ */ +/* =========================================================================================================================== */ + +/* =========================================================== L =========================================================== */ + #define R_IIC0_SAR_L_SVA_Pos (0UL) /*!< SVA (Bit 0) */ + #define R_IIC0_SAR_L_SVA_Msk (0xffUL) /*!< SVA (Bitfield-Mask: 0xff) */ +/* =========================================================== U =========================================================== */ + #define R_IIC0_SAR_U_SVA9_Pos (2UL) /*!< SVA9 (Bit 2) */ + #define R_IIC0_SAR_U_SVA9_Msk (0x4UL) /*!< SVA9 (Bitfield-Mask: 0x01) */ + #define R_IIC0_SAR_U_SVA8_Pos (1UL) /*!< SVA8 (Bit 1) */ + #define R_IIC0_SAR_U_SVA8_Msk (0x2UL) /*!< SVA8 (Bitfield-Mask: 0x01) */ + #define R_IIC0_SAR_U_FS_Pos (0UL) /*!< FS (Bit 0) */ + #define R_IIC0_SAR_U_FS_Msk (0x1UL) /*!< FS (Bitfield-Mask: 0x01) */ + +/* =========================================================================================================================== */ +/* ================ REGION ================ */ +/* =========================================================================================================================== */ + +/* ========================================================== AC =========================================================== */ + #define R_MPU_MMPU_GROUP_REGION_AC_PP_Pos (3UL) /*!< PP (Bit 3) */ + #define R_MPU_MMPU_GROUP_REGION_AC_PP_Msk (0x8UL) /*!< PP (Bitfield-Mask: 0x01) */ + #define R_MPU_MMPU_GROUP_REGION_AC_WP_Pos (2UL) /*!< WP (Bit 2) */ + #define R_MPU_MMPU_GROUP_REGION_AC_WP_Msk (0x4UL) /*!< WP (Bitfield-Mask: 0x01) */ + #define R_MPU_MMPU_GROUP_REGION_AC_RP_Pos (1UL) /*!< RP (Bit 1) */ + #define R_MPU_MMPU_GROUP_REGION_AC_RP_Msk (0x2UL) /*!< RP (Bitfield-Mask: 0x01) */ + #define R_MPU_MMPU_GROUP_REGION_AC_ENABLE_Pos (0UL) /*!< ENABLE (Bit 0) */ + #define R_MPU_MMPU_GROUP_REGION_AC_ENABLE_Msk (0x1UL) /*!< ENABLE (Bitfield-Mask: 0x01) */ +/* =========================================================== S =========================================================== */ + #define R_MPU_MMPU_GROUP_REGION_S_MMPUS_Pos (0UL) /*!< MMPUS (Bit 0) */ + #define R_MPU_MMPU_GROUP_REGION_S_MMPUS_Msk (0xffffffffUL) /*!< MMPUS (Bitfield-Mask: 0xffffffff) */ +/* =========================================================== E =========================================================== */ + #define R_MPU_MMPU_GROUP_REGION_E_MMPUE_Pos (0UL) /*!< MMPUE (Bit 0) */ + #define R_MPU_MMPU_GROUP_REGION_E_MMPUE_Msk (0xffffffffUL) /*!< MMPUE (Bitfield-Mask: 0xffffffff) */ + +/* =========================================================================================================================== */ +/* ================ GROUP ================ */ +/* =========================================================================================================================== */ + +/* ========================================================== EN =========================================================== */ + #define R_MPU_MMPU_GROUP_EN_KEY_Pos (8UL) /*!< KEY (Bit 8) */ + #define R_MPU_MMPU_GROUP_EN_KEY_Msk (0xff00UL) /*!< KEY (Bitfield-Mask: 0xff) */ + #define R_MPU_MMPU_GROUP_EN_ENABLE_Pos (0UL) /*!< ENABLE (Bit 0) */ + #define R_MPU_MMPU_GROUP_EN_ENABLE_Msk (0x1UL) /*!< ENABLE (Bitfield-Mask: 0x01) */ +/* ========================================================= ENPT ========================================================== */ + #define R_MPU_MMPU_GROUP_ENPT_KEY_Pos (8UL) /*!< KEY (Bit 8) */ + #define R_MPU_MMPU_GROUP_ENPT_KEY_Msk (0xff00UL) /*!< KEY (Bitfield-Mask: 0xff) */ + #define R_MPU_MMPU_GROUP_ENPT_PROTECT_Pos (0UL) /*!< PROTECT (Bit 0) */ + #define R_MPU_MMPU_GROUP_ENPT_PROTECT_Msk (0x1UL) /*!< PROTECT (Bitfield-Mask: 0x01) */ +/* ========================================================== RPT ========================================================== */ + #define R_MPU_MMPU_GROUP_RPT_KEY_Pos (8UL) /*!< KEY (Bit 8) */ + #define R_MPU_MMPU_GROUP_RPT_KEY_Msk (0xff00UL) /*!< KEY (Bitfield-Mask: 0xff) */ + #define R_MPU_MMPU_GROUP_RPT_PROTECT_Pos (0UL) /*!< PROTECT (Bit 0) */ + #define R_MPU_MMPU_GROUP_RPT_PROTECT_Msk (0x1UL) /*!< PROTECT (Bitfield-Mask: 0x01) */ +/* ======================================================== RPT_SEC ======================================================== */ + #define R_MPU_MMPU_GROUP_RPT_SEC_KEY_Pos (8UL) /*!< KEY (Bit 8) */ + #define R_MPU_MMPU_GROUP_RPT_SEC_KEY_Msk (0xff00UL) /*!< KEY (Bitfield-Mask: 0xff) */ + #define R_MPU_MMPU_GROUP_RPT_SEC_PROTECT_Pos (0UL) /*!< PROTECT (Bit 0) */ + #define R_MPU_MMPU_GROUP_RPT_SEC_PROTECT_Msk (0x1UL) /*!< PROTECT (Bitfield-Mask: 0x01) */ + +/* =========================================================================================================================== */ +/* ================ SP ================ */ +/* =========================================================================================================================== */ + +/* ========================================================== OAD ========================================================== */ + #define R_MPU_SPMON_SP_OAD_KEY_Pos (8UL) /*!< KEY (Bit 8) */ + #define R_MPU_SPMON_SP_OAD_KEY_Msk (0xff00UL) /*!< KEY (Bitfield-Mask: 0xff) */ + #define R_MPU_SPMON_SP_OAD_OAD_Pos (0UL) /*!< OAD (Bit 0) */ + #define R_MPU_SPMON_SP_OAD_OAD_Msk (0x1UL) /*!< OAD (Bitfield-Mask: 0x01) */ +/* ========================================================== CTL ========================================================== */ + #define R_MPU_SPMON_SP_CTL_ERROR_Pos (8UL) /*!< ERROR (Bit 8) */ + #define R_MPU_SPMON_SP_CTL_ERROR_Msk (0x100UL) /*!< ERROR (Bitfield-Mask: 0x01) */ + #define R_MPU_SPMON_SP_CTL_ENABLE_Pos (0UL) /*!< ENABLE (Bit 0) */ + #define R_MPU_SPMON_SP_CTL_ENABLE_Msk (0x1UL) /*!< ENABLE (Bitfield-Mask: 0x01) */ +/* ========================================================== PT =========================================================== */ + #define R_MPU_SPMON_SP_PT_KEY_Pos (8UL) /*!< KEY (Bit 8) */ + #define R_MPU_SPMON_SP_PT_KEY_Msk (0xff00UL) /*!< KEY (Bitfield-Mask: 0xff) */ + #define R_MPU_SPMON_SP_PT_PROTECT_Pos (0UL) /*!< PROTECT (Bit 0) */ + #define R_MPU_SPMON_SP_PT_PROTECT_Msk (0x1UL) /*!< PROTECT (Bitfield-Mask: 0x01) */ +/* ========================================================== SA =========================================================== */ + #define R_MPU_SPMON_SP_SA_MSPMPUSA_Pos (0UL) /*!< MSPMPUSA (Bit 0) */ + #define R_MPU_SPMON_SP_SA_MSPMPUSA_Msk (0xffffffffUL) /*!< MSPMPUSA (Bitfield-Mask: 0xffffffff) */ +/* ========================================================== EA =========================================================== */ + #define R_MPU_SPMON_SP_EA_MSPMPUEA_Pos (0UL) /*!< MSPMPUEA (Bit 0) */ + #define R_MPU_SPMON_SP_EA_MSPMPUEA_Msk (0xffffffffUL) /*!< MSPMPUEA (Bitfield-Mask: 0xffffffff) */ + +/* =========================================================================================================================== */ +/* ================ PIN ================ */ +/* =========================================================================================================================== */ + +/* ======================================================= PmnPFS_BY ======================================================= */ + #define R_PFS_PORT_PIN_PmnPFS_BY_PODR_Pos (0UL) /*!< PODR (Bit 0) */ + #define R_PFS_PORT_PIN_PmnPFS_BY_PODR_Msk (0x1UL) /*!< PODR (Bitfield-Mask: 0x01) */ + #define R_PFS_PORT_PIN_PmnPFS_BY_PIDR_Pos (1UL) /*!< PIDR (Bit 1) */ + #define R_PFS_PORT_PIN_PmnPFS_BY_PIDR_Msk (0x2UL) /*!< PIDR (Bitfield-Mask: 0x01) */ + #define R_PFS_PORT_PIN_PmnPFS_BY_PDR_Pos (2UL) /*!< PDR (Bit 2) */ + #define R_PFS_PORT_PIN_PmnPFS_BY_PDR_Msk (0x4UL) /*!< PDR (Bitfield-Mask: 0x01) */ + #define R_PFS_PORT_PIN_PmnPFS_BY_PCR_Pos (4UL) /*!< PCR (Bit 4) */ + #define R_PFS_PORT_PIN_PmnPFS_BY_PCR_Msk (0x10UL) /*!< PCR (Bitfield-Mask: 0x01) */ + #define R_PFS_PORT_PIN_PmnPFS_BY_NCODR_Pos (6UL) /*!< NCODR (Bit 6) */ + #define R_PFS_PORT_PIN_PmnPFS_BY_NCODR_Msk (0x40UL) /*!< NCODR (Bitfield-Mask: 0x01) */ +/* ======================================================= PmnPFS_HA ======================================================= */ + #define R_PFS_PORT_PIN_PmnPFS_HA_PODR_Pos (0UL) /*!< PODR (Bit 0) */ + #define R_PFS_PORT_PIN_PmnPFS_HA_PODR_Msk (0x1UL) /*!< PODR (Bitfield-Mask: 0x01) */ + #define R_PFS_PORT_PIN_PmnPFS_HA_PIDR_Pos (1UL) /*!< PIDR (Bit 1) */ + #define R_PFS_PORT_PIN_PmnPFS_HA_PIDR_Msk (0x2UL) /*!< PIDR (Bitfield-Mask: 0x01) */ + #define R_PFS_PORT_PIN_PmnPFS_HA_PDR_Pos (2UL) /*!< PDR (Bit 2) */ + #define R_PFS_PORT_PIN_PmnPFS_HA_PDR_Msk (0x4UL) /*!< PDR (Bitfield-Mask: 0x01) */ + #define R_PFS_PORT_PIN_PmnPFS_HA_PCR_Pos (4UL) /*!< PCR (Bit 4) */ + #define R_PFS_PORT_PIN_PmnPFS_HA_PCR_Msk (0x10UL) /*!< PCR (Bitfield-Mask: 0x01) */ + #define R_PFS_PORT_PIN_PmnPFS_HA_NCODR_Pos (6UL) /*!< NCODR (Bit 6) */ + #define R_PFS_PORT_PIN_PmnPFS_HA_NCODR_Msk (0x40UL) /*!< NCODR (Bitfield-Mask: 0x01) */ + #define R_PFS_PORT_PIN_PmnPFS_HA_DSCR_Pos (10UL) /*!< DSCR (Bit 10) */ + #define R_PFS_PORT_PIN_PmnPFS_HA_DSCR_Msk (0xc00UL) /*!< DSCR (Bitfield-Mask: 0x03) */ + #define R_PFS_PORT_PIN_PmnPFS_HA_EOFR_Pos (12UL) /*!< EOFR (Bit 12) */ + #define R_PFS_PORT_PIN_PmnPFS_HA_EOFR_Msk (0x3000UL) /*!< EOFR (Bitfield-Mask: 0x03) */ + #define R_PFS_PORT_PIN_PmnPFS_HA_ISEL_Pos (14UL) /*!< ISEL (Bit 14) */ + #define R_PFS_PORT_PIN_PmnPFS_HA_ISEL_Msk (0x4000UL) /*!< ISEL (Bitfield-Mask: 0x01) */ + #define R_PFS_PORT_PIN_PmnPFS_HA_ASEL_Pos (15UL) /*!< ASEL (Bit 15) */ + #define R_PFS_PORT_PIN_PmnPFS_HA_ASEL_Msk (0x8000UL) /*!< ASEL (Bitfield-Mask: 0x01) */ +/* ======================================================== PmnPFS ========================================================= */ + #define R_PFS_PORT_PIN_PmnPFS_PODR_Pos (0UL) /*!< PODR (Bit 0) */ + #define R_PFS_PORT_PIN_PmnPFS_PODR_Msk (0x1UL) /*!< PODR (Bitfield-Mask: 0x01) */ + #define R_PFS_PORT_PIN_PmnPFS_PIDR_Pos (1UL) /*!< PIDR (Bit 1) */ + #define R_PFS_PORT_PIN_PmnPFS_PIDR_Msk (0x2UL) /*!< PIDR (Bitfield-Mask: 0x01) */ + #define R_PFS_PORT_PIN_PmnPFS_PDR_Pos (2UL) /*!< PDR (Bit 2) */ + #define R_PFS_PORT_PIN_PmnPFS_PDR_Msk (0x4UL) /*!< PDR (Bitfield-Mask: 0x01) */ + #define R_PFS_PORT_PIN_PmnPFS_PCR_Pos (4UL) /*!< PCR (Bit 4) */ + #define R_PFS_PORT_PIN_PmnPFS_PCR_Msk (0x10UL) /*!< PCR (Bitfield-Mask: 0x01) */ + #define R_PFS_PORT_PIN_PmnPFS_NCODR_Pos (6UL) /*!< NCODR (Bit 6) */ + #define R_PFS_PORT_PIN_PmnPFS_NCODR_Msk (0x40UL) /*!< NCODR (Bitfield-Mask: 0x01) */ + #define R_PFS_PORT_PIN_PmnPFS_DSCR_Pos (10UL) /*!< DSCR (Bit 10) */ + #define R_PFS_PORT_PIN_PmnPFS_DSCR_Msk (0xc00UL) /*!< DSCR (Bitfield-Mask: 0x03) */ + #define R_PFS_PORT_PIN_PmnPFS_EOFR_Pos (12UL) /*!< EOFR (Bit 12) */ + #define R_PFS_PORT_PIN_PmnPFS_EOFR_Msk (0x3000UL) /*!< EOFR (Bitfield-Mask: 0x03) */ + #define R_PFS_PORT_PIN_PmnPFS_ISEL_Pos (14UL) /*!< ISEL (Bit 14) */ + #define R_PFS_PORT_PIN_PmnPFS_ISEL_Msk (0x4000UL) /*!< ISEL (Bitfield-Mask: 0x01) */ + #define R_PFS_PORT_PIN_PmnPFS_ASEL_Pos (15UL) /*!< ASEL (Bit 15) */ + #define R_PFS_PORT_PIN_PmnPFS_ASEL_Msk (0x8000UL) /*!< ASEL (Bitfield-Mask: 0x01) */ + #define R_PFS_PORT_PIN_PmnPFS_PMR_Pos (16UL) /*!< PMR (Bit 16) */ + #define R_PFS_PORT_PIN_PmnPFS_PMR_Msk (0x10000UL) /*!< PMR (Bitfield-Mask: 0x01) */ + #define R_PFS_PORT_PIN_PmnPFS_PSEL_Pos (24UL) /*!< PSEL (Bit 24) */ + #define R_PFS_PORT_PIN_PmnPFS_PSEL_Msk (0x1f000000UL) /*!< PSEL (Bitfield-Mask: 0x1f) */ + +/* =========================================================================================================================== */ +/* ================ PORT ================ */ +/* =========================================================================================================================== */ + +/* =========================================================================================================================== */ +/* ================ PMSAR ================ */ +/* =========================================================================================================================== */ + +/* ========================================================= PMSAR ========================================================= */ + +/* =========================================================================================================================== */ +/* ================ RTCCR ================ */ +/* =========================================================================================================================== */ + +/* ========================================================= RTCCR ========================================================= */ + #define R_RTC_RTCCR_RTCCR_TCEN_Pos (7UL) /*!< TCEN (Bit 7) */ + #define R_RTC_RTCCR_RTCCR_TCEN_Msk (0x80UL) /*!< TCEN (Bitfield-Mask: 0x01) */ + #define R_RTC_RTCCR_RTCCR_TCNF_Pos (4UL) /*!< TCNF (Bit 4) */ + #define R_RTC_RTCCR_RTCCR_TCNF_Msk (0x30UL) /*!< TCNF (Bitfield-Mask: 0x03) */ + #define R_RTC_RTCCR_RTCCR_TCST_Pos (2UL) /*!< TCST (Bit 2) */ + #define R_RTC_RTCCR_RTCCR_TCST_Msk (0x4UL) /*!< TCST (Bitfield-Mask: 0x01) */ + #define R_RTC_RTCCR_RTCCR_TCCT_Pos (0UL) /*!< TCCT (Bit 0) */ + #define R_RTC_RTCCR_RTCCR_TCCT_Msk (0x3UL) /*!< TCCT (Bitfield-Mask: 0x03) */ + +/* =========================================================================================================================== */ +/* ================ CP ================ */ +/* =========================================================================================================================== */ + +/* ========================================================= RSEC ========================================================== */ + #define R_RTC_CP_RSEC_SEC10_Pos (4UL) /*!< SEC10 (Bit 4) */ + #define R_RTC_CP_RSEC_SEC10_Msk (0x70UL) /*!< SEC10 (Bitfield-Mask: 0x07) */ + #define R_RTC_CP_RSEC_SEC1_Pos (0UL) /*!< SEC1 (Bit 0) */ + #define R_RTC_CP_RSEC_SEC1_Msk (0xfUL) /*!< SEC1 (Bitfield-Mask: 0x0f) */ +/* ========================================================= BCNT0 ========================================================= */ + #define R_RTC_CP_BCNT0_BCNT0CP_Pos (0UL) /*!< BCNT0CP (Bit 0) */ + #define R_RTC_CP_BCNT0_BCNT0CP_Msk (0xffUL) /*!< BCNT0CP (Bitfield-Mask: 0xff) */ +/* ========================================================= RMIN ========================================================== */ + #define R_RTC_CP_RMIN_MIN10_Pos (4UL) /*!< MIN10 (Bit 4) */ + #define R_RTC_CP_RMIN_MIN10_Msk (0x70UL) /*!< MIN10 (Bitfield-Mask: 0x07) */ + #define R_RTC_CP_RMIN_MIN1_Pos (0UL) /*!< MIN1 (Bit 0) */ + #define R_RTC_CP_RMIN_MIN1_Msk (0xfUL) /*!< MIN1 (Bitfield-Mask: 0x0f) */ +/* ========================================================= BCNT1 ========================================================= */ + #define R_RTC_CP_BCNT1_BCNT1CP_Pos (0UL) /*!< BCNT1CP (Bit 0) */ + #define R_RTC_CP_BCNT1_BCNT1CP_Msk (0xffUL) /*!< BCNT1CP (Bitfield-Mask: 0xff) */ +/* ========================================================== RHR ========================================================== */ + #define R_RTC_CP_RHR_PM_Pos (6UL) /*!< PM (Bit 6) */ + #define R_RTC_CP_RHR_PM_Msk (0x40UL) /*!< PM (Bitfield-Mask: 0x01) */ + #define R_RTC_CP_RHR_HR10_Pos (4UL) /*!< HR10 (Bit 4) */ + #define R_RTC_CP_RHR_HR10_Msk (0x30UL) /*!< HR10 (Bitfield-Mask: 0x03) */ + #define R_RTC_CP_RHR_HR1_Pos (0UL) /*!< HR1 (Bit 0) */ + #define R_RTC_CP_RHR_HR1_Msk (0xfUL) /*!< HR1 (Bitfield-Mask: 0x0f) */ +/* ========================================================= BCNT2 ========================================================= */ + #define R_RTC_CP_BCNT2_BCNT2CP_Pos (0UL) /*!< BCNT2CP (Bit 0) */ + #define R_RTC_CP_BCNT2_BCNT2CP_Msk (0xffUL) /*!< BCNT2CP (Bitfield-Mask: 0xff) */ +/* ========================================================= RDAY ========================================================== */ + #define R_RTC_CP_RDAY_DATE10_Pos (4UL) /*!< DATE10 (Bit 4) */ + #define R_RTC_CP_RDAY_DATE10_Msk (0x30UL) /*!< DATE10 (Bitfield-Mask: 0x03) */ + #define R_RTC_CP_RDAY_DATE1_Pos (0UL) /*!< DATE1 (Bit 0) */ + #define R_RTC_CP_RDAY_DATE1_Msk (0xfUL) /*!< DATE1 (Bitfield-Mask: 0x0f) */ +/* ========================================================= BCNT3 ========================================================= */ + #define R_RTC_CP_BCNT3_BCNT3CP_Pos (0UL) /*!< BCNT3CP (Bit 0) */ + #define R_RTC_CP_BCNT3_BCNT3CP_Msk (0xffUL) /*!< BCNT3CP (Bitfield-Mask: 0xff) */ +/* ========================================================= RMON ========================================================== */ + #define R_RTC_CP_RMON_MON10_Pos (4UL) /*!< MON10 (Bit 4) */ + #define R_RTC_CP_RMON_MON10_Msk (0x10UL) /*!< MON10 (Bitfield-Mask: 0x01) */ + #define R_RTC_CP_RMON_MON1_Pos (0UL) /*!< MON1 (Bit 0) */ + #define R_RTC_CP_RMON_MON1_Msk (0xfUL) /*!< MON1 (Bitfield-Mask: 0x0f) */ + +/* =========================================================================================================================== */ +/* ================ PIPE_TR ================ */ +/* =========================================================================================================================== */ + +/* =========================================================== E =========================================================== */ + #define R_USB_FS0_PIPE_TR_E_TRENB_Pos (9UL) /*!< TRENB (Bit 9) */ + #define R_USB_FS0_PIPE_TR_E_TRENB_Msk (0x200UL) /*!< TRENB (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_PIPE_TR_E_TRCLR_Pos (8UL) /*!< TRCLR (Bit 8) */ + #define R_USB_FS0_PIPE_TR_E_TRCLR_Msk (0x100UL) /*!< TRCLR (Bitfield-Mask: 0x01) */ +/* =========================================================== N =========================================================== */ + #define R_USB_FS0_PIPE_TR_N_TRNCNT_Pos (0UL) /*!< TRNCNT (Bit 0) */ + #define R_USB_FS0_PIPE_TR_N_TRNCNT_Msk (0xffffUL) /*!< TRNCNT (Bitfield-Mask: 0xffff) */ + +/* =========================================================================================================================== */ +/* ================ PIPE_TR ================ */ +/* =========================================================================================================================== */ + +/* =========================================================== E =========================================================== */ + #define R_USB_HS0_PIPE_TR_E_TRENB_Pos (9UL) /*!< TRENB (Bit 9) */ + #define R_USB_HS0_PIPE_TR_E_TRENB_Msk (0x200UL) /*!< TRENB (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_PIPE_TR_E_TRCLR_Pos (8UL) /*!< TRCLR (Bit 8) */ + #define R_USB_HS0_PIPE_TR_E_TRCLR_Msk (0x100UL) /*!< TRCLR (Bitfield-Mask: 0x01) */ +/* =========================================================== N =========================================================== */ + #define R_USB_HS0_PIPE_TR_N_TRNCNT_Pos (0UL) /*!< TRNCNT (Bit 0) */ + #define R_USB_HS0_PIPE_TR_N_TRNCNT_Msk (0xffffUL) /*!< TRNCNT (Bitfield-Mask: 0xffff) */ + +/* =========================================================================================================================== */ +/* ================ CMCFGCS ================ */ +/* =========================================================================================================================== */ + +/* ======================================================== CMCFG0 ========================================================= */ + #define R_XSPI_CMCFGCS_CMCFG0_FFMT_Pos (0UL) /*!< FFMT (Bit 0) */ + #define R_XSPI_CMCFGCS_CMCFG0_FFMT_Msk (0x3UL) /*!< FFMT (Bitfield-Mask: 0x03) */ + #define R_XSPI_CMCFGCS_CMCFG0_ADDSIZE_Pos (2UL) /*!< ADDSIZE (Bit 2) */ + #define R_XSPI_CMCFGCS_CMCFG0_ADDSIZE_Msk (0xcUL) /*!< ADDSIZE (Bitfield-Mask: 0x03) */ + #define R_XSPI_CMCFGCS_CMCFG0_WPBSTMD_Pos (4UL) /*!< WPBSTMD (Bit 4) */ + #define R_XSPI_CMCFGCS_CMCFG0_WPBSTMD_Msk (0x10UL) /*!< WPBSTMD (Bitfield-Mask: 0x01) */ + #define R_XSPI_CMCFGCS_CMCFG0_ARYAMD_Pos (5UL) /*!< ARYAMD (Bit 5) */ + #define R_XSPI_CMCFGCS_CMCFG0_ARYAMD_Msk (0x20UL) /*!< ARYAMD (Bitfield-Mask: 0x01) */ + #define R_XSPI_CMCFGCS_CMCFG0_ADDRPEN_Pos (16UL) /*!< ADDRPEN (Bit 16) */ + #define R_XSPI_CMCFGCS_CMCFG0_ADDRPEN_Msk (0xff0000UL) /*!< ADDRPEN (Bitfield-Mask: 0xff) */ + #define R_XSPI_CMCFGCS_CMCFG0_ADDRPCD_Pos (24UL) /*!< ADDRPCD (Bit 24) */ + #define R_XSPI_CMCFGCS_CMCFG0_ADDRPCD_Msk (0xff000000UL) /*!< ADDRPCD (Bitfield-Mask: 0xff) */ +/* ======================================================== CMCFG1 ========================================================= */ + #define R_XSPI_CMCFGCS_CMCFG1_RDCMD_Pos (0UL) /*!< RDCMD (Bit 0) */ + #define R_XSPI_CMCFGCS_CMCFG1_RDCMD_Msk (0xffffUL) /*!< RDCMD (Bitfield-Mask: 0xffff) */ + #define R_XSPI_CMCFGCS_CMCFG1_RDLATE_Pos (16UL) /*!< RDLATE (Bit 16) */ + #define R_XSPI_CMCFGCS_CMCFG1_RDLATE_Msk (0x1f0000UL) /*!< RDLATE (Bitfield-Mask: 0x1f) */ +/* ======================================================== CMCFG2 ========================================================= */ + #define R_XSPI_CMCFGCS_CMCFG2_WRCMD_Pos (0UL) /*!< WRCMD (Bit 0) */ + #define R_XSPI_CMCFGCS_CMCFG2_WRCMD_Msk (0xffffUL) /*!< WRCMD (Bitfield-Mask: 0xffff) */ + #define R_XSPI_CMCFGCS_CMCFG2_WRLATE_Pos (16UL) /*!< WRLATE (Bit 16) */ + #define R_XSPI_CMCFGCS_CMCFG2_WRLATE_Msk (0x1f0000UL) /*!< WRLATE (Bitfield-Mask: 0x1f) */ + +/* =========================================================================================================================== */ +/* ================ CDBUF ================ */ +/* =========================================================================================================================== */ + +/* ========================================================== CDT ========================================================== */ + #define R_XSPI_CDBUF_CDT_CMDSIZE_Pos (0UL) /*!< CMDSIZE (Bit 0) */ + #define R_XSPI_CDBUF_CDT_CMDSIZE_Msk (0x3UL) /*!< CMDSIZE (Bitfield-Mask: 0x03) */ + #define R_XSPI_CDBUF_CDT_ADDSIZE_Pos (2UL) /*!< ADDSIZE (Bit 2) */ + #define R_XSPI_CDBUF_CDT_ADDSIZE_Msk (0x1cUL) /*!< ADDSIZE (Bitfield-Mask: 0x07) */ + #define R_XSPI_CDBUF_CDT_DATASIZE_Pos (5UL) /*!< DATASIZE (Bit 5) */ + #define R_XSPI_CDBUF_CDT_DATASIZE_Msk (0x1e0UL) /*!< DATASIZE (Bitfield-Mask: 0x0f) */ + #define R_XSPI_CDBUF_CDT_LATE_Pos (9UL) /*!< LATE (Bit 9) */ + #define R_XSPI_CDBUF_CDT_LATE_Msk (0x3e00UL) /*!< LATE (Bitfield-Mask: 0x1f) */ + #define R_XSPI_CDBUF_CDT_TRTYPE_Pos (15UL) /*!< TRTYPE (Bit 15) */ + #define R_XSPI_CDBUF_CDT_TRTYPE_Msk (0x8000UL) /*!< TRTYPE (Bitfield-Mask: 0x01) */ + #define R_XSPI_CDBUF_CDT_CMD_Pos (16UL) /*!< CMD (Bit 16) */ + #define R_XSPI_CDBUF_CDT_CMD_Msk (0xffff0000UL) /*!< CMD (Bitfield-Mask: 0xffff) */ +/* ========================================================== CDA ========================================================== */ + #define R_XSPI_CDBUF_CDA_ADD_Pos (0UL) /*!< ADD (Bit 0) */ + #define R_XSPI_CDBUF_CDA_ADD_Msk (0xffffffffUL) /*!< ADD (Bitfield-Mask: 0xffffffff) */ +/* ========================================================= CDD0 ========================================================== */ + #define R_XSPI_CDBUF_CDD0_DATA_Pos (0UL) /*!< DATA (Bit 0) */ + #define R_XSPI_CDBUF_CDD0_DATA_Msk (0xffffffffUL) /*!< DATA (Bitfield-Mask: 0xffffffff) */ +/* ========================================================= CDD1 ========================================================== */ + #define R_XSPI_CDBUF_CDD1_DATA_Pos (0UL) /*!< DATA (Bit 0) */ + #define R_XSPI_CDBUF_CDD1_DATA_Msk (0xffffffffUL) /*!< DATA (Bitfield-Mask: 0xffffffff) */ + +/* =========================================================================================================================== */ +/* ================ CCCTLCS ================ */ +/* =========================================================================================================================== */ + +/* ======================================================== CCCTL0 ========================================================= */ + #define R_XSPI_CCCTLCS_CCCTL0_CAEN_Pos (0UL) /*!< CAEN (Bit 0) */ + #define R_XSPI_CCCTLCS_CCCTL0_CAEN_Msk (0x1UL) /*!< CAEN (Bitfield-Mask: 0x01) */ + #define R_XSPI_CCCTLCS_CCCTL0_CANOWR_Pos (1UL) /*!< CANOWR (Bit 1) */ + #define R_XSPI_CCCTLCS_CCCTL0_CANOWR_Msk (0x2UL) /*!< CANOWR (Bitfield-Mask: 0x01) */ + #define R_XSPI_CCCTLCS_CCCTL0_CAITV_Pos (8UL) /*!< CAITV (Bit 8) */ + #define R_XSPI_CCCTLCS_CCCTL0_CAITV_Msk (0x1f00UL) /*!< CAITV (Bitfield-Mask: 0x1f) */ + #define R_XSPI_CCCTLCS_CCCTL0_CASFTSTA_Pos (16UL) /*!< CASFTSTA (Bit 16) */ + #define R_XSPI_CCCTLCS_CCCTL0_CASFTSTA_Msk (0x1f0000UL) /*!< CASFTSTA (Bitfield-Mask: 0x1f) */ + #define R_XSPI_CCCTLCS_CCCTL0_CASFTEND_Pos (24UL) /*!< CASFTEND (Bit 24) */ + #define R_XSPI_CCCTLCS_CCCTL0_CASFTEND_Msk (0x1f000000UL) /*!< CASFTEND (Bitfield-Mask: 0x1f) */ +/* ======================================================== CCCTL1 ========================================================= */ + #define R_XSPI_CCCTLCS_CCCTL1_CACMDSIZE_Pos (0UL) /*!< CACMDSIZE (Bit 0) */ + #define R_XSPI_CCCTLCS_CCCTL1_CACMDSIZE_Msk (0x3UL) /*!< CACMDSIZE (Bitfield-Mask: 0x03) */ + #define R_XSPI_CCCTLCS_CCCTL1_CAADDSIZE_Pos (2UL) /*!< CAADDSIZE (Bit 2) */ + #define R_XSPI_CCCTLCS_CCCTL1_CAADDSIZE_Msk (0x1cUL) /*!< CAADDSIZE (Bitfield-Mask: 0x07) */ + #define R_XSPI_CCCTLCS_CCCTL1_CADATASIZE_Pos (5UL) /*!< CADATASIZE (Bit 5) */ + #define R_XSPI_CCCTLCS_CCCTL1_CADATASIZE_Msk (0x1e0UL) /*!< CADATASIZE (Bitfield-Mask: 0x0f) */ + #define R_XSPI_CCCTLCS_CCCTL1_CAWRLATE_Pos (16UL) /*!< CAWRLATE (Bit 16) */ + #define R_XSPI_CCCTLCS_CCCTL1_CAWRLATE_Msk (0x1f0000UL) /*!< CAWRLATE (Bitfield-Mask: 0x1f) */ + #define R_XSPI_CCCTLCS_CCCTL1_CARDLATE_Pos (24UL) /*!< CARDLATE (Bit 24) */ + #define R_XSPI_CCCTLCS_CCCTL1_CARDLATE_Msk (0x1f000000UL) /*!< CARDLATE (Bitfield-Mask: 0x1f) */ +/* ======================================================== CCCTL2 ========================================================= */ + #define R_XSPI_CCCTLCS_CCCTL2_CAWRCMD_Pos (0UL) /*!< CAWRCMD (Bit 0) */ + #define R_XSPI_CCCTLCS_CCCTL2_CAWRCMD_Msk (0xffffUL) /*!< CAWRCMD (Bitfield-Mask: 0xffff) */ + #define R_XSPI_CCCTLCS_CCCTL2_CARDCMD_Pos (16UL) /*!< CARDCMD (Bit 16) */ + #define R_XSPI_CCCTLCS_CCCTL2_CARDCMD_Msk (0xffff0000UL) /*!< CARDCMD (Bitfield-Mask: 0xffff) */ +/* ======================================================== CCCTL3 ========================================================= */ + #define R_XSPI_CCCTLCS_CCCTL3_CAADD_Pos (0UL) /*!< CAADD (Bit 0) */ + #define R_XSPI_CCCTLCS_CCCTL3_CAADD_Msk (0xffffffffUL) /*!< CAADD (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== CCCTL4 ========================================================= */ + #define R_XSPI_CCCTLCS_CCCTL4_CADATA_Pos (0UL) /*!< CADATA (Bit 0) */ + #define R_XSPI_CCCTLCS_CCCTL4_CADATA_Msk (0xffffffffUL) /*!< CADATA (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== CCCTL5 ========================================================= */ + #define R_XSPI_CCCTLCS_CCCTL5_CADATA_Pos (0UL) /*!< CADATA (Bit 0) */ + #define R_XSPI_CCCTLCS_CCCTL5_CADATA_Msk (0xffffffffUL) /*!< CADATA (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== CCCTL6 ========================================================= */ + #define R_XSPI_CCCTLCS_CCCTL6_CADATA_Pos (0UL) /*!< CADATA (Bit 0) */ + #define R_XSPI_CCCTLCS_CCCTL6_CADATA_Msk (0xffffffffUL) /*!< CADATA (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== CCCTL7 ========================================================= */ + #define R_XSPI_CCCTLCS_CCCTL7_CADATA_Pos (0UL) /*!< CADATA (Bit 0) */ + #define R_XSPI_CCCTLCS_CCCTL7_CADATA_Msk (0xffffffffUL) /*!< CADATA (Bitfield-Mask: 0xffffffff) */ + +/* =========================================================================================================================== */ +/* ================ CTRL ================ */ +/* =========================================================================================================================== */ + +/* ========================================================= AGTCR ========================================================= */ + #define R_AGTX0_AGT16_CTRL_AGTCR_TCMBF_Pos (7UL) /*!< TCMBF (Bit 7) */ + #define R_AGTX0_AGT16_CTRL_AGTCR_TCMBF_Msk (0x80UL) /*!< TCMBF (Bitfield-Mask: 0x01) */ + #define R_AGTX0_AGT16_CTRL_AGTCR_TCMAF_Pos (6UL) /*!< TCMAF (Bit 6) */ + #define R_AGTX0_AGT16_CTRL_AGTCR_TCMAF_Msk (0x40UL) /*!< TCMAF (Bitfield-Mask: 0x01) */ + #define R_AGTX0_AGT16_CTRL_AGTCR_TUNDF_Pos (5UL) /*!< TUNDF (Bit 5) */ + #define R_AGTX0_AGT16_CTRL_AGTCR_TUNDF_Msk (0x20UL) /*!< TUNDF (Bitfield-Mask: 0x01) */ + #define R_AGTX0_AGT16_CTRL_AGTCR_TEDGF_Pos (4UL) /*!< TEDGF (Bit 4) */ + #define R_AGTX0_AGT16_CTRL_AGTCR_TEDGF_Msk (0x10UL) /*!< TEDGF (Bitfield-Mask: 0x01) */ + #define R_AGTX0_AGT16_CTRL_AGTCR_TSTOP_Pos (2UL) /*!< TSTOP (Bit 2) */ + #define R_AGTX0_AGT16_CTRL_AGTCR_TSTOP_Msk (0x4UL) /*!< TSTOP (Bitfield-Mask: 0x01) */ + #define R_AGTX0_AGT16_CTRL_AGTCR_TCSTF_Pos (1UL) /*!< TCSTF (Bit 1) */ + #define R_AGTX0_AGT16_CTRL_AGTCR_TCSTF_Msk (0x2UL) /*!< TCSTF (Bitfield-Mask: 0x01) */ + #define R_AGTX0_AGT16_CTRL_AGTCR_TSTART_Pos (0UL) /*!< TSTART (Bit 0) */ + #define R_AGTX0_AGT16_CTRL_AGTCR_TSTART_Msk (0x1UL) /*!< TSTART (Bitfield-Mask: 0x01) */ +/* ======================================================== AGTMR1 ========================================================= */ + #define R_AGTX0_AGT16_CTRL_AGTMR1_TCK_Pos (4UL) /*!< TCK (Bit 4) */ + #define R_AGTX0_AGT16_CTRL_AGTMR1_TCK_Msk (0x70UL) /*!< TCK (Bitfield-Mask: 0x07) */ + #define R_AGTX0_AGT16_CTRL_AGTMR1_TEDGPL_Pos (3UL) /*!< TEDGPL (Bit 3) */ + #define R_AGTX0_AGT16_CTRL_AGTMR1_TEDGPL_Msk (0x8UL) /*!< TEDGPL (Bitfield-Mask: 0x01) */ + #define R_AGTX0_AGT16_CTRL_AGTMR1_TMOD_Pos (0UL) /*!< TMOD (Bit 0) */ + #define R_AGTX0_AGT16_CTRL_AGTMR1_TMOD_Msk (0x7UL) /*!< TMOD (Bitfield-Mask: 0x07) */ +/* ======================================================== AGTMR2 ========================================================= */ + #define R_AGTX0_AGT16_CTRL_AGTMR2_LPM_Pos (7UL) /*!< LPM (Bit 7) */ + #define R_AGTX0_AGT16_CTRL_AGTMR2_LPM_Msk (0x80UL) /*!< LPM (Bitfield-Mask: 0x01) */ + #define R_AGTX0_AGT16_CTRL_AGTMR2_CKS_Pos (0UL) /*!< CKS (Bit 0) */ + #define R_AGTX0_AGT16_CTRL_AGTMR2_CKS_Msk (0x7UL) /*!< CKS (Bitfield-Mask: 0x07) */ +/* ===================================================== AGTIOSEL_ALT ====================================================== */ + #define R_AGTX0_AGT16_CTRL_AGTIOSEL_ALT_TIES_Pos (4UL) /*!< TIES (Bit 4) */ + #define R_AGTX0_AGT16_CTRL_AGTIOSEL_ALT_TIES_Msk (0x10UL) /*!< TIES (Bitfield-Mask: 0x01) */ + #define R_AGTX0_AGT16_CTRL_AGTIOSEL_ALT_SEL_Pos (0UL) /*!< SEL (Bit 0) */ + #define R_AGTX0_AGT16_CTRL_AGTIOSEL_ALT_SEL_Msk (0x3UL) /*!< SEL (Bitfield-Mask: 0x03) */ +/* ======================================================== AGTIOC ========================================================= */ + #define R_AGTX0_AGT16_CTRL_AGTIOC_TIOGT_Pos (6UL) /*!< TIOGT (Bit 6) */ + #define R_AGTX0_AGT16_CTRL_AGTIOC_TIOGT_Msk (0xc0UL) /*!< TIOGT (Bitfield-Mask: 0x03) */ + #define R_AGTX0_AGT16_CTRL_AGTIOC_TIPF_Pos (4UL) /*!< TIPF (Bit 4) */ + #define R_AGTX0_AGT16_CTRL_AGTIOC_TIPF_Msk (0x30UL) /*!< TIPF (Bitfield-Mask: 0x03) */ + #define R_AGTX0_AGT16_CTRL_AGTIOC_TOE_Pos (2UL) /*!< TOE (Bit 2) */ + #define R_AGTX0_AGT16_CTRL_AGTIOC_TOE_Msk (0x4UL) /*!< TOE (Bitfield-Mask: 0x01) */ + #define R_AGTX0_AGT16_CTRL_AGTIOC_TEDGSEL_Pos (0UL) /*!< TEDGSEL (Bit 0) */ + #define R_AGTX0_AGT16_CTRL_AGTIOC_TEDGSEL_Msk (0x1UL) /*!< TEDGSEL (Bitfield-Mask: 0x01) */ +/* ======================================================== AGTISR ========================================================= */ + #define R_AGTX0_AGT16_CTRL_AGTISR_EEPS_Pos (2UL) /*!< EEPS (Bit 2) */ + #define R_AGTX0_AGT16_CTRL_AGTISR_EEPS_Msk (0x4UL) /*!< EEPS (Bitfield-Mask: 0x01) */ +/* ======================================================== AGTCMSR ======================================================== */ + #define R_AGTX0_AGT16_CTRL_AGTCMSR_TOPOLB_Pos (6UL) /*!< TOPOLB (Bit 6) */ + #define R_AGTX0_AGT16_CTRL_AGTCMSR_TOPOLB_Msk (0x40UL) /*!< TOPOLB (Bitfield-Mask: 0x01) */ + #define R_AGTX0_AGT16_CTRL_AGTCMSR_TOEB_Pos (5UL) /*!< TOEB (Bit 5) */ + #define R_AGTX0_AGT16_CTRL_AGTCMSR_TOEB_Msk (0x20UL) /*!< TOEB (Bitfield-Mask: 0x01) */ + #define R_AGTX0_AGT16_CTRL_AGTCMSR_TCMEB_Pos (4UL) /*!< TCMEB (Bit 4) */ + #define R_AGTX0_AGT16_CTRL_AGTCMSR_TCMEB_Msk (0x10UL) /*!< TCMEB (Bitfield-Mask: 0x01) */ + #define R_AGTX0_AGT16_CTRL_AGTCMSR_TOPOLA_Pos (2UL) /*!< TOPOLA (Bit 2) */ + #define R_AGTX0_AGT16_CTRL_AGTCMSR_TOPOLA_Msk (0x4UL) /*!< TOPOLA (Bitfield-Mask: 0x01) */ + #define R_AGTX0_AGT16_CTRL_AGTCMSR_TOEA_Pos (1UL) /*!< TOEA (Bit 1) */ + #define R_AGTX0_AGT16_CTRL_AGTCMSR_TOEA_Msk (0x2UL) /*!< TOEA (Bitfield-Mask: 0x01) */ + #define R_AGTX0_AGT16_CTRL_AGTCMSR_TCMEA_Pos (0UL) /*!< TCMEA (Bit 0) */ + #define R_AGTX0_AGT16_CTRL_AGTCMSR_TCMEA_Msk (0x1UL) /*!< TCMEA (Bitfield-Mask: 0x01) */ +/* ======================================================= AGTIOSEL ======================================================== */ + #define R_AGTX0_AGT16_CTRL_AGTIOSEL_TIES_Pos (4UL) /*!< TIES (Bit 4) */ + #define R_AGTX0_AGT16_CTRL_AGTIOSEL_TIES_Msk (0x10UL) /*!< TIES (Bitfield-Mask: 0x01) */ + #define R_AGTX0_AGT16_CTRL_AGTIOSEL_SEL_Pos (0UL) /*!< SEL (Bit 0) */ + #define R_AGTX0_AGT16_CTRL_AGTIOSEL_SEL_Msk (0x3UL) /*!< SEL (Bitfield-Mask: 0x03) */ + +/* =========================================================================================================================== */ +/* ================ AGT16 ================ */ +/* =========================================================================================================================== */ + +/* ========================================================== AGT ========================================================== */ + #define R_AGTX0_AGT16_AGT_AGT_Pos (0UL) /*!< AGT (Bit 0) */ + #define R_AGTX0_AGT16_AGT_AGT_Msk (0xffffUL) /*!< AGT (Bitfield-Mask: 0xffff) */ +/* ======================================================== AGTCMA ========================================================= */ + #define R_AGTX0_AGT16_AGTCMA_AGTCMA_Pos (0UL) /*!< AGTCMA (Bit 0) */ + #define R_AGTX0_AGT16_AGTCMA_AGTCMA_Msk (0xffffUL) /*!< AGTCMA (Bitfield-Mask: 0xffff) */ +/* ======================================================== AGTCMB ========================================================= */ + #define R_AGTX0_AGT16_AGTCMB_AGTCMB_Pos (0UL) /*!< AGTCMB (Bit 0) */ + #define R_AGTX0_AGT16_AGTCMB_AGTCMB_Msk (0xffffUL) /*!< AGTCMB (Bitfield-Mask: 0xffff) */ + +/* =========================================================================================================================== */ +/* ================ AGT32 ================ */ +/* =========================================================================================================================== */ + +/* ========================================================== AGT ========================================================== */ + #define R_AGTX0_AGT32_AGT_AGT_Pos (0UL) /*!< AGT (Bit 0) */ + #define R_AGTX0_AGT32_AGT_AGT_Msk (0xffffffffUL) /*!< AGT (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== AGTCMA ========================================================= */ + #define R_AGTX0_AGT32_AGTCMA_AGTCMA_Pos (0UL) /*!< AGTCMA (Bit 0) */ + #define R_AGTX0_AGT32_AGTCMA_AGTCMA_Msk (0xffffffffUL) /*!< AGTCMA (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== AGTCMB ========================================================= */ + #define R_AGTX0_AGT32_AGTCMB_AGTCMB_Pos (0UL) /*!< AGTCMB (Bit 0) */ + #define R_AGTX0_AGT32_AGTCMB_AGTCMB_Msk (0xffffffffUL) /*!< AGTCMB (Bitfield-Mask: 0xffffffff) */ + +/* =========================================================================================================================== */ +/* ================ CFGD ================ */ +/* =========================================================================================================================== */ + +/* ======================================================== CFGD_L ========================================================= */ + #define R_OFS_DATAFLASH_CFGDLOCK_CFGD_CFGD_L_CDLK_Pos (0UL) /*!< CDLK (Bit 0) */ + #define R_OFS_DATAFLASH_CFGDLOCK_CFGD_CFGD_L_CDLK_Msk (0x1UL) /*!< CDLK (Bitfield-Mask: 0x01) */ +/* ======================================================== CFGD_H ========================================================= */ + #define R_OFS_DATAFLASH_CFGDLOCK_CFGD_CFGD_H_CDLK_Pos (0UL) /*!< CDLK (Bit 0) */ + #define R_OFS_DATAFLASH_CFGDLOCK_CFGD_CFGD_H_CDLK_Msk (0x1UL) /*!< CDLK (Bitfield-Mask: 0x01) */ + +/* =========================================================================================================================== */ +/* ================ CFGDLOCK ================ */ +/* =========================================================================================================================== */ + +/* ========================================================= CFGD2 ========================================================= */ + #define R_OFS_DATAFLASH_CFGDLOCK_CFGD2_CDLK_Pos (0UL) /*!< CDLK (Bit 0) */ + #define R_OFS_DATAFLASH_CFGDLOCK_CFGD2_CDLK_Msk (0x1UL) /*!< CDLK (Bitfield-Mask: 0x01) */ + +/** @} */ /* End of group PosMask_clusters */ + +/* =========================================================================================================================== */ +/* ================ Pos/Mask Peripheral Section ================ */ +/* =========================================================================================================================== */ + +/** @addtogroup PosMask_peripherals + * @{ + */ + +/* =========================================================================================================================== */ +/* ================ R_ACMPHS0 ================ */ +/* =========================================================================================================================== */ + +/* ======================================================== CMPCTL ========================================================= */ + #define R_ACMPHS0_CMPCTL_HCMPON_Pos (7UL) /*!< HCMPON (Bit 7) */ + #define R_ACMPHS0_CMPCTL_HCMPON_Msk (0x80UL) /*!< HCMPON (Bitfield-Mask: 0x01) */ + #define R_ACMPHS0_CMPCTL_CDFS_Pos (5UL) /*!< CDFS (Bit 5) */ + #define R_ACMPHS0_CMPCTL_CDFS_Msk (0x60UL) /*!< CDFS (Bitfield-Mask: 0x03) */ + #define R_ACMPHS0_CMPCTL_CEG_Pos (3UL) /*!< CEG (Bit 3) */ + #define R_ACMPHS0_CMPCTL_CEG_Msk (0x18UL) /*!< CEG (Bitfield-Mask: 0x03) */ + #define R_ACMPHS0_CMPCTL_CSTEN_Pos (2UL) /*!< CSTEN (Bit 2) */ + #define R_ACMPHS0_CMPCTL_CSTEN_Msk (0x4UL) /*!< CSTEN (Bitfield-Mask: 0x01) */ + #define R_ACMPHS0_CMPCTL_COE_Pos (1UL) /*!< COE (Bit 1) */ + #define R_ACMPHS0_CMPCTL_COE_Msk (0x2UL) /*!< COE (Bitfield-Mask: 0x01) */ + #define R_ACMPHS0_CMPCTL_CINV_Pos (0UL) /*!< CINV (Bit 0) */ + #define R_ACMPHS0_CMPCTL_CINV_Msk (0x1UL) /*!< CINV (Bitfield-Mask: 0x01) */ +/* ======================================================== CMPSEL0 ======================================================== */ + #define R_ACMPHS0_CMPSEL0_CMPSEL_Pos (0UL) /*!< CMPSEL (Bit 0) */ + #define R_ACMPHS0_CMPSEL0_CMPSEL_Msk (0xfUL) /*!< CMPSEL (Bitfield-Mask: 0x0f) */ +/* ======================================================== CMPSEL1 ======================================================== */ + #define R_ACMPHS0_CMPSEL1_CRVS_Pos (0UL) /*!< CRVS (Bit 0) */ + #define R_ACMPHS0_CMPSEL1_CRVS_Msk (0x3fUL) /*!< CRVS (Bitfield-Mask: 0x3f) */ +/* ======================================================== CMPMON ========================================================= */ + #define R_ACMPHS0_CMPMON_CMPMON_Pos (0UL) /*!< CMPMON (Bit 0) */ + #define R_ACMPHS0_CMPMON_CMPMON_Msk (0x1UL) /*!< CMPMON (Bitfield-Mask: 0x01) */ +/* ========================================================= CPIOC ========================================================= */ + #define R_ACMPHS0_CPIOC_VREFEN_Pos (7UL) /*!< VREFEN (Bit 7) */ + #define R_ACMPHS0_CPIOC_VREFEN_Msk (0x80UL) /*!< VREFEN (Bitfield-Mask: 0x01) */ + #define R_ACMPHS0_CPIOC_CPOE_Pos (0UL) /*!< CPOE (Bit 0) */ + #define R_ACMPHS0_CPIOC_CPOE_Msk (0x1UL) /*!< CPOE (Bitfield-Mask: 0x01) */ + +/* =========================================================================================================================== */ +/* ================ R_ADC0 ================ */ +/* =========================================================================================================================== */ + +/* ========================================================= ADCSR ========================================================= */ + #define R_ADC0_ADCSR_ADST_Pos (15UL) /*!< ADST (Bit 15) */ + #define R_ADC0_ADCSR_ADST_Msk (0x8000UL) /*!< ADST (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADCSR_ADCS_Pos (13UL) /*!< ADCS (Bit 13) */ + #define R_ADC0_ADCSR_ADCS_Msk (0x6000UL) /*!< ADCS (Bitfield-Mask: 0x03) */ + #define R_ADC0_ADCSR_ADHSC_Pos (10UL) /*!< ADHSC (Bit 10) */ + #define R_ADC0_ADCSR_ADHSC_Msk (0x400UL) /*!< ADHSC (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADCSR_TRGE_Pos (9UL) /*!< TRGE (Bit 9) */ + #define R_ADC0_ADCSR_TRGE_Msk (0x200UL) /*!< TRGE (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADCSR_EXTRG_Pos (8UL) /*!< EXTRG (Bit 8) */ + #define R_ADC0_ADCSR_EXTRG_Msk (0x100UL) /*!< EXTRG (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADCSR_DBLE_Pos (7UL) /*!< DBLE (Bit 7) */ + #define R_ADC0_ADCSR_DBLE_Msk (0x80UL) /*!< DBLE (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADCSR_GBADIE_Pos (6UL) /*!< GBADIE (Bit 6) */ + #define R_ADC0_ADCSR_GBADIE_Msk (0x40UL) /*!< GBADIE (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADCSR_DBLANS_Pos (0UL) /*!< DBLANS (Bit 0) */ + #define R_ADC0_ADCSR_DBLANS_Msk (0x1fUL) /*!< DBLANS (Bitfield-Mask: 0x1f) */ + #define R_ADC0_ADCSR_ADIE_Pos (12UL) /*!< ADIE (Bit 12) */ + #define R_ADC0_ADCSR_ADIE_Msk (0x1000UL) /*!< ADIE (Bitfield-Mask: 0x01) */ +/* ======================================================== ADANSA ========================================================= */ + #define R_ADC0_ADANSA_ANSA_Pos (0UL) /*!< ANSA (Bit 0) */ + #define R_ADC0_ADANSA_ANSA_Msk (0x1UL) /*!< ANSA (Bitfield-Mask: 0x01) */ +/* ========================================================= ADADS ========================================================= */ + #define R_ADC0_ADADS_ADS_Pos (0UL) /*!< ADS (Bit 0) */ + #define R_ADC0_ADADS_ADS_Msk (0x1UL) /*!< ADS (Bitfield-Mask: 0x01) */ +/* ========================================================= ADADC ========================================================= */ + #define R_ADC0_ADADC_ADC_Pos (0UL) /*!< ADC (Bit 0) */ + #define R_ADC0_ADADC_ADC_Msk (0x7UL) /*!< ADC (Bitfield-Mask: 0x07) */ + #define R_ADC0_ADADC_AVEE_Pos (7UL) /*!< AVEE (Bit 7) */ + #define R_ADC0_ADADC_AVEE_Msk (0x80UL) /*!< AVEE (Bitfield-Mask: 0x01) */ +/* ========================================================= ADCER ========================================================= */ + #define R_ADC0_ADCER_ADRFMT_Pos (15UL) /*!< ADRFMT (Bit 15) */ + #define R_ADC0_ADCER_ADRFMT_Msk (0x8000UL) /*!< ADRFMT (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADCER_ADINV_Pos (14UL) /*!< ADINV (Bit 14) */ + #define R_ADC0_ADCER_ADINV_Msk (0x4000UL) /*!< ADINV (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADCER_DIAGM_Pos (11UL) /*!< DIAGM (Bit 11) */ + #define R_ADC0_ADCER_DIAGM_Msk (0x800UL) /*!< DIAGM (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADCER_DIAGLD_Pos (10UL) /*!< DIAGLD (Bit 10) */ + #define R_ADC0_ADCER_DIAGLD_Msk (0x400UL) /*!< DIAGLD (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADCER_DIAGVAL_Pos (8UL) /*!< DIAGVAL (Bit 8) */ + #define R_ADC0_ADCER_DIAGVAL_Msk (0x300UL) /*!< DIAGVAL (Bitfield-Mask: 0x03) */ + #define R_ADC0_ADCER_ACE_Pos (5UL) /*!< ACE (Bit 5) */ + #define R_ADC0_ADCER_ACE_Msk (0x20UL) /*!< ACE (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADCER_ADPRC_Pos (1UL) /*!< ADPRC (Bit 1) */ + #define R_ADC0_ADCER_ADPRC_Msk (0x6UL) /*!< ADPRC (Bitfield-Mask: 0x03) */ + #define R_ADC0_ADCER_DCE_Pos (4UL) /*!< DCE (Bit 4) */ + #define R_ADC0_ADCER_DCE_Msk (0x10UL) /*!< DCE (Bitfield-Mask: 0x01) */ +/* ======================================================== ADSTRGR ======================================================== */ + #define R_ADC0_ADSTRGR_TRSA_Pos (8UL) /*!< TRSA (Bit 8) */ + #define R_ADC0_ADSTRGR_TRSA_Msk (0x3f00UL) /*!< TRSA (Bitfield-Mask: 0x3f) */ + #define R_ADC0_ADSTRGR_TRSB_Pos (0UL) /*!< TRSB (Bit 0) */ + #define R_ADC0_ADSTRGR_TRSB_Msk (0x3fUL) /*!< TRSB (Bitfield-Mask: 0x3f) */ +/* ======================================================== ADEXICR ======================================================== */ + #define R_ADC0_ADEXICR_OCSB_Pos (11UL) /*!< OCSB (Bit 11) */ + #define R_ADC0_ADEXICR_OCSB_Msk (0x800UL) /*!< OCSB (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADEXICR_TSSB_Pos (10UL) /*!< TSSB (Bit 10) */ + #define R_ADC0_ADEXICR_TSSB_Msk (0x400UL) /*!< TSSB (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADEXICR_OCSA_Pos (9UL) /*!< OCSA (Bit 9) */ + #define R_ADC0_ADEXICR_OCSA_Msk (0x200UL) /*!< OCSA (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADEXICR_TSSA_Pos (8UL) /*!< TSSA (Bit 8) */ + #define R_ADC0_ADEXICR_TSSA_Msk (0x100UL) /*!< TSSA (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADEXICR_OCSAD_Pos (1UL) /*!< OCSAD (Bit 1) */ + #define R_ADC0_ADEXICR_OCSAD_Msk (0x2UL) /*!< OCSAD (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADEXICR_TSSAD_Pos (0UL) /*!< TSSAD (Bit 0) */ + #define R_ADC0_ADEXICR_TSSAD_Msk (0x1UL) /*!< TSSAD (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADEXICR_EXSEL_Pos (14UL) /*!< EXSEL (Bit 14) */ + #define R_ADC0_ADEXICR_EXSEL_Msk (0x4000UL) /*!< EXSEL (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADEXICR_EXOEN_Pos (15UL) /*!< EXOEN (Bit 15) */ + #define R_ADC0_ADEXICR_EXOEN_Msk (0x8000UL) /*!< EXOEN (Bitfield-Mask: 0x01) */ +/* ======================================================== ADANSB ========================================================= */ + #define R_ADC0_ADANSB_ANSB_Pos (0UL) /*!< ANSB (Bit 0) */ + #define R_ADC0_ADANSB_ANSB_Msk (0x1UL) /*!< ANSB (Bitfield-Mask: 0x01) */ +/* ======================================================== ADDBLDR ======================================================== */ + #define R_ADC0_ADDBLDR_ADDBLDR_Pos (0UL) /*!< ADDBLDR (Bit 0) */ + #define R_ADC0_ADDBLDR_ADDBLDR_Msk (0xffffUL) /*!< ADDBLDR (Bitfield-Mask: 0xffff) */ +/* ======================================================== ADTSDR ========================================================= */ + #define R_ADC0_ADTSDR_ADTSDR_Pos (0UL) /*!< ADTSDR (Bit 0) */ + #define R_ADC0_ADTSDR_ADTSDR_Msk (0xffffUL) /*!< ADTSDR (Bitfield-Mask: 0xffff) */ +/* ======================================================== ADOCDR ========================================================= */ + #define R_ADC0_ADOCDR_ADOCDR_Pos (0UL) /*!< ADOCDR (Bit 0) */ + #define R_ADC0_ADOCDR_ADOCDR_Msk (0xffffUL) /*!< ADOCDR (Bitfield-Mask: 0xffff) */ +/* ====================================================== ADRD_RIGHT ======================================================= */ + #define R_ADC0_ADRD_RIGHT_DIAGST_Pos (14UL) /*!< DIAGST (Bit 14) */ + #define R_ADC0_ADRD_RIGHT_DIAGST_Msk (0xc000UL) /*!< DIAGST (Bitfield-Mask: 0x03) */ + #define R_ADC0_ADRD_RIGHT_AD_Pos (0UL) /*!< AD (Bit 0) */ + #define R_ADC0_ADRD_RIGHT_AD_Msk (0x3fffUL) /*!< AD (Bitfield-Mask: 0x3fff) */ +/* ======================================================= ADRD_LEFT ======================================================= */ + #define R_ADC0_ADRD_LEFT_AD_Pos (2UL) /*!< AD (Bit 2) */ + #define R_ADC0_ADRD_LEFT_AD_Msk (0xfffcUL) /*!< AD (Bitfield-Mask: 0x3fff) */ + #define R_ADC0_ADRD_LEFT_DIAGST_Pos (0UL) /*!< DIAGST (Bit 0) */ + #define R_ADC0_ADRD_LEFT_DIAGST_Msk (0x3UL) /*!< DIAGST (Bitfield-Mask: 0x03) */ +/* ========================================================= ADDR ========================================================== */ + #define R_ADC0_ADDR_ADDR_Pos (0UL) /*!< ADDR (Bit 0) */ + #define R_ADC0_ADDR_ADDR_Msk (0xffffUL) /*!< ADDR (Bitfield-Mask: 0xffff) */ +/* ======================================================== ADSHCR ========================================================= */ + #define R_ADC0_ADSHCR_SHANS2_Pos (10UL) /*!< SHANS2 (Bit 10) */ + #define R_ADC0_ADSHCR_SHANS2_Msk (0x400UL) /*!< SHANS2 (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADSHCR_SHANS1_Pos (9UL) /*!< SHANS1 (Bit 9) */ + #define R_ADC0_ADSHCR_SHANS1_Msk (0x200UL) /*!< SHANS1 (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADSHCR_SHANS0_Pos (8UL) /*!< SHANS0 (Bit 8) */ + #define R_ADC0_ADSHCR_SHANS0_Msk (0x100UL) /*!< SHANS0 (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADSHCR_SSTSH_Pos (0UL) /*!< SSTSH (Bit 0) */ + #define R_ADC0_ADSHCR_SSTSH_Msk (0xffUL) /*!< SSTSH (Bitfield-Mask: 0xff) */ +/* ======================================================== ADDISCR ======================================================== */ + #define R_ADC0_ADDISCR_CHARGE_Pos (4UL) /*!< CHARGE (Bit 4) */ + #define R_ADC0_ADDISCR_CHARGE_Msk (0x10UL) /*!< CHARGE (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADDISCR_ADNDIS_Pos (0UL) /*!< ADNDIS (Bit 0) */ + #define R_ADC0_ADDISCR_ADNDIS_Msk (0xfUL) /*!< ADNDIS (Bitfield-Mask: 0x0f) */ +/* ======================================================== ADSHMSR ======================================================== */ + #define R_ADC0_ADSHMSR_SHMD_Pos (0UL) /*!< SHMD (Bit 0) */ + #define R_ADC0_ADSHMSR_SHMD_Msk (0x1UL) /*!< SHMD (Bitfield-Mask: 0x01) */ +/* ======================================================== ADACSR ========================================================= */ + #define R_ADC0_ADACSR_ADSAC_Pos (1UL) /*!< ADSAC (Bit 1) */ + #define R_ADC0_ADACSR_ADSAC_Msk (0x2UL) /*!< ADSAC (Bitfield-Mask: 0x01) */ +/* ======================================================== ADGSPCR ======================================================== */ + #define R_ADC0_ADGSPCR_GBRP_Pos (15UL) /*!< GBRP (Bit 15) */ + #define R_ADC0_ADGSPCR_GBRP_Msk (0x8000UL) /*!< GBRP (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADGSPCR_GBRSCN_Pos (1UL) /*!< GBRSCN (Bit 1) */ + #define R_ADC0_ADGSPCR_GBRSCN_Msk (0x2UL) /*!< GBRSCN (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADGSPCR_PGS_Pos (0UL) /*!< PGS (Bit 0) */ + #define R_ADC0_ADGSPCR_PGS_Msk (0x1UL) /*!< PGS (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADGSPCR_GBEXTRG_Pos (8UL) /*!< GBEXTRG (Bit 8) */ + #define R_ADC0_ADGSPCR_GBEXTRG_Msk (0x100UL) /*!< GBEXTRG (Bitfield-Mask: 0x01) */ +/* ========================================================= ADICR ========================================================= */ + #define R_ADC0_ADICR_ADIC_Pos (0UL) /*!< ADIC (Bit 0) */ + #define R_ADC0_ADICR_ADIC_Msk (0x3UL) /*!< ADIC (Bitfield-Mask: 0x03) */ +/* ======================================================= ADDBLDRA ======================================================== */ + #define R_ADC0_ADDBLDRA_ADDBLDRA_Pos (0UL) /*!< ADDBLDRA (Bit 0) */ + #define R_ADC0_ADDBLDRA_ADDBLDRA_Msk (0xffffUL) /*!< ADDBLDRA (Bitfield-Mask: 0xffff) */ +/* ======================================================= ADDBLDRB ======================================================== */ + #define R_ADC0_ADDBLDRB_ADDBLDRB_Pos (0UL) /*!< ADDBLDRB (Bit 0) */ + #define R_ADC0_ADDBLDRB_ADDBLDRB_Msk (0xffffUL) /*!< ADDBLDRB (Bitfield-Mask: 0xffff) */ +/* ====================================================== ADHVREFCNT ======================================================= */ + #define R_ADC0_ADHVREFCNT_ADSLP_Pos (7UL) /*!< ADSLP (Bit 7) */ + #define R_ADC0_ADHVREFCNT_ADSLP_Msk (0x80UL) /*!< ADSLP (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADHVREFCNT_LVSEL_Pos (4UL) /*!< LVSEL (Bit 4) */ + #define R_ADC0_ADHVREFCNT_LVSEL_Msk (0x10UL) /*!< LVSEL (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADHVREFCNT_HVSEL_Pos (0UL) /*!< HVSEL (Bit 0) */ + #define R_ADC0_ADHVREFCNT_HVSEL_Msk (0x3UL) /*!< HVSEL (Bitfield-Mask: 0x03) */ +/* ======================================================= ADWINMON ======================================================== */ + #define R_ADC0_ADWINMON_MONCMPB_Pos (5UL) /*!< MONCMPB (Bit 5) */ + #define R_ADC0_ADWINMON_MONCMPB_Msk (0x20UL) /*!< MONCMPB (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADWINMON_MONCMPA_Pos (4UL) /*!< MONCMPA (Bit 4) */ + #define R_ADC0_ADWINMON_MONCMPA_Msk (0x10UL) /*!< MONCMPA (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADWINMON_MONCOMB_Pos (0UL) /*!< MONCOMB (Bit 0) */ + #define R_ADC0_ADWINMON_MONCOMB_Msk (0x1UL) /*!< MONCOMB (Bitfield-Mask: 0x01) */ +/* ======================================================== ADCMPCR ======================================================== */ + #define R_ADC0_ADCMPCR_CMPAIE_Pos (15UL) /*!< CMPAIE (Bit 15) */ + #define R_ADC0_ADCMPCR_CMPAIE_Msk (0x8000UL) /*!< CMPAIE (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADCMPCR_WCMPE_Pos (14UL) /*!< WCMPE (Bit 14) */ + #define R_ADC0_ADCMPCR_WCMPE_Msk (0x4000UL) /*!< WCMPE (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADCMPCR_CMPBIE_Pos (13UL) /*!< CMPBIE (Bit 13) */ + #define R_ADC0_ADCMPCR_CMPBIE_Msk (0x2000UL) /*!< CMPBIE (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADCMPCR_CMPAE_Pos (11UL) /*!< CMPAE (Bit 11) */ + #define R_ADC0_ADCMPCR_CMPAE_Msk (0x800UL) /*!< CMPAE (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADCMPCR_CMPBE_Pos (9UL) /*!< CMPBE (Bit 9) */ + #define R_ADC0_ADCMPCR_CMPBE_Msk (0x200UL) /*!< CMPBE (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADCMPCR_CMPAB_Pos (0UL) /*!< CMPAB (Bit 0) */ + #define R_ADC0_ADCMPCR_CMPAB_Msk (0x3UL) /*!< CMPAB (Bitfield-Mask: 0x03) */ +/* ====================================================== ADCMPANSER ======================================================= */ + #define R_ADC0_ADCMPANSER_CMPOCA_Pos (1UL) /*!< CMPOCA (Bit 1) */ + #define R_ADC0_ADCMPANSER_CMPOCA_Msk (0x2UL) /*!< CMPOCA (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADCMPANSER_CMPTSA_Pos (0UL) /*!< CMPTSA (Bit 0) */ + #define R_ADC0_ADCMPANSER_CMPTSA_Msk (0x1UL) /*!< CMPTSA (Bitfield-Mask: 0x01) */ +/* ======================================================= ADCMPLER ======================================================== */ + #define R_ADC0_ADCMPLER_CMPLOCA_Pos (1UL) /*!< CMPLOCA (Bit 1) */ + #define R_ADC0_ADCMPLER_CMPLOCA_Msk (0x2UL) /*!< CMPLOCA (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADCMPLER_CMPLTSA_Pos (0UL) /*!< CMPLTSA (Bit 0) */ + #define R_ADC0_ADCMPLER_CMPLTSA_Msk (0x1UL) /*!< CMPLTSA (Bitfield-Mask: 0x01) */ +/* ======================================================= ADCMPANSR ======================================================= */ + #define R_ADC0_ADCMPANSR_CMPCHA_Pos (0UL) /*!< CMPCHA (Bit 0) */ + #define R_ADC0_ADCMPANSR_CMPCHA_Msk (0x1UL) /*!< CMPCHA (Bitfield-Mask: 0x01) */ +/* ======================================================== ADCMPLR ======================================================== */ + #define R_ADC0_ADCMPLR_CMPLCHA_Pos (0UL) /*!< CMPLCHA (Bit 0) */ + #define R_ADC0_ADCMPLR_CMPLCHA_Msk (0x1UL) /*!< CMPLCHA (Bitfield-Mask: 0x01) */ +/* ======================================================= ADCMPDR0 ======================================================== */ + #define R_ADC0_ADCMPDR0_ADCMPDR0_Pos (0UL) /*!< ADCMPDR0 (Bit 0) */ + #define R_ADC0_ADCMPDR0_ADCMPDR0_Msk (0xffffUL) /*!< ADCMPDR0 (Bitfield-Mask: 0xffff) */ +/* ======================================================= ADCMPDR1 ======================================================== */ + #define R_ADC0_ADCMPDR1_ADCMPDR1_Pos (0UL) /*!< ADCMPDR1 (Bit 0) */ + #define R_ADC0_ADCMPDR1_ADCMPDR1_Msk (0xffffUL) /*!< ADCMPDR1 (Bitfield-Mask: 0xffff) */ +/* ======================================================== ADCMPSR ======================================================== */ + #define R_ADC0_ADCMPSR_CMPSTCHA_Pos (0UL) /*!< CMPSTCHA (Bit 0) */ + #define R_ADC0_ADCMPSR_CMPSTCHA_Msk (0x1UL) /*!< CMPSTCHA (Bitfield-Mask: 0x01) */ +/* ======================================================= ADCMPSER ======================================================== */ + #define R_ADC0_ADCMPSER_CMPSTOCA_Pos (1UL) /*!< CMPSTOCA (Bit 1) */ + #define R_ADC0_ADCMPSER_CMPSTOCA_Msk (0x2UL) /*!< CMPSTOCA (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADCMPSER_CMPSTTSA_Pos (0UL) /*!< CMPSTTSA (Bit 0) */ + #define R_ADC0_ADCMPSER_CMPSTTSA_Msk (0x1UL) /*!< CMPSTTSA (Bitfield-Mask: 0x01) */ +/* ======================================================= ADCMPBNSR ======================================================= */ + #define R_ADC0_ADCMPBNSR_CMPLB_Pos (7UL) /*!< CMPLB (Bit 7) */ + #define R_ADC0_ADCMPBNSR_CMPLB_Msk (0x80UL) /*!< CMPLB (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADCMPBNSR_CMPCHB_Pos (0UL) /*!< CMPCHB (Bit 0) */ + #define R_ADC0_ADCMPBNSR_CMPCHB_Msk (0x3fUL) /*!< CMPCHB (Bitfield-Mask: 0x3f) */ +/* ======================================================= ADWINLLB ======================================================== */ + #define R_ADC0_ADWINLLB_ADWINLLB_Pos (0UL) /*!< ADWINLLB (Bit 0) */ + #define R_ADC0_ADWINLLB_ADWINLLB_Msk (0xffffUL) /*!< ADWINLLB (Bitfield-Mask: 0xffff) */ +/* ======================================================= ADWINULB ======================================================== */ + #define R_ADC0_ADWINULB_ADWINULB_Pos (0UL) /*!< ADWINULB (Bit 0) */ + #define R_ADC0_ADWINULB_ADWINULB_Msk (0xffffUL) /*!< ADWINULB (Bitfield-Mask: 0xffff) */ +/* ======================================================= ADCMPBSR ======================================================== */ + #define R_ADC0_ADCMPBSR_CMPSTB_Pos (0UL) /*!< CMPSTB (Bit 0) */ + #define R_ADC0_ADCMPBSR_CMPSTB_Msk (0x1UL) /*!< CMPSTB (Bitfield-Mask: 0x01) */ +/* ======================================================== ADSSTRL ======================================================== */ + #define R_ADC0_ADSSTRL_SST_Pos (0UL) /*!< SST (Bit 0) */ + #define R_ADC0_ADSSTRL_SST_Msk (0xffUL) /*!< SST (Bitfield-Mask: 0xff) */ +/* ======================================================== ADSSTRT ======================================================== */ + #define R_ADC0_ADSSTRT_SST_Pos (0UL) /*!< SST (Bit 0) */ + #define R_ADC0_ADSSTRT_SST_Msk (0xffUL) /*!< SST (Bitfield-Mask: 0xff) */ +/* ======================================================== ADSSTRO ======================================================== */ + #define R_ADC0_ADSSTRO_SST_Pos (0UL) /*!< SST (Bit 0) */ + #define R_ADC0_ADSSTRO_SST_Msk (0xffUL) /*!< SST (Bitfield-Mask: 0xff) */ +/* ======================================================== ADSSTR ========================================================= */ + #define R_ADC0_ADSSTR_SST_Pos (0UL) /*!< SST (Bit 0) */ + #define R_ADC0_ADSSTR_SST_Msk (0xffUL) /*!< SST (Bitfield-Mask: 0xff) */ +/* ======================================================== ADPGACR ======================================================== */ + #define R_ADC0_ADPGACR_P002GEN_Pos (11UL) /*!< P002GEN (Bit 11) */ + #define R_ADC0_ADPGACR_P002GEN_Msk (0x800UL) /*!< P002GEN (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADPGACR_P002ENAMP_Pos (10UL) /*!< P002ENAMP (Bit 10) */ + #define R_ADC0_ADPGACR_P002ENAMP_Msk (0x400UL) /*!< P002ENAMP (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADPGACR_P002SEL1_Pos (9UL) /*!< P002SEL1 (Bit 9) */ + #define R_ADC0_ADPGACR_P002SEL1_Msk (0x200UL) /*!< P002SEL1 (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADPGACR_P002SEL0_Pos (8UL) /*!< P002SEL0 (Bit 8) */ + #define R_ADC0_ADPGACR_P002SEL0_Msk (0x100UL) /*!< P002SEL0 (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADPGACR_P001GEN_Pos (7UL) /*!< P001GEN (Bit 7) */ + #define R_ADC0_ADPGACR_P001GEN_Msk (0x80UL) /*!< P001GEN (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADPGACR_P001ENAMP_Pos (6UL) /*!< P001ENAMP (Bit 6) */ + #define R_ADC0_ADPGACR_P001ENAMP_Msk (0x40UL) /*!< P001ENAMP (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADPGACR_P001SEL1_Pos (5UL) /*!< P001SEL1 (Bit 5) */ + #define R_ADC0_ADPGACR_P001SEL1_Msk (0x20UL) /*!< P001SEL1 (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADPGACR_P001SEL0_Pos (4UL) /*!< P001SEL0 (Bit 4) */ + #define R_ADC0_ADPGACR_P001SEL0_Msk (0x10UL) /*!< P001SEL0 (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADPGACR_P000GEN_Pos (3UL) /*!< P000GEN (Bit 3) */ + #define R_ADC0_ADPGACR_P000GEN_Msk (0x8UL) /*!< P000GEN (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADPGACR_P000ENAMP_Pos (2UL) /*!< P000ENAMP (Bit 2) */ + #define R_ADC0_ADPGACR_P000ENAMP_Msk (0x4UL) /*!< P000ENAMP (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADPGACR_P000SEL1_Pos (1UL) /*!< P000SEL1 (Bit 1) */ + #define R_ADC0_ADPGACR_P000SEL1_Msk (0x2UL) /*!< P000SEL1 (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADPGACR_P000SEL0_Pos (0UL) /*!< P000SEL0 (Bit 0) */ + #define R_ADC0_ADPGACR_P000SEL0_Msk (0x1UL) /*!< P000SEL0 (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADPGACR_P003SEL0_Pos (12UL) /*!< P003SEL0 (Bit 12) */ + #define R_ADC0_ADPGACR_P003SEL0_Msk (0x1000UL) /*!< P003SEL0 (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADPGACR_P003SEL1_Pos (13UL) /*!< P003SEL1 (Bit 13) */ + #define R_ADC0_ADPGACR_P003SEL1_Msk (0x2000UL) /*!< P003SEL1 (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADPGACR_P003ENAMP_Pos (14UL) /*!< P003ENAMP (Bit 14) */ + #define R_ADC0_ADPGACR_P003ENAMP_Msk (0x4000UL) /*!< P003ENAMP (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADPGACR_P003GEN_Pos (15UL) /*!< P003GEN (Bit 15) */ + #define R_ADC0_ADPGACR_P003GEN_Msk (0x8000UL) /*!< P003GEN (Bitfield-Mask: 0x01) */ +/* ========================================================= ADRD ========================================================== */ + #define R_ADC0_ADRD_AD_Pos (0UL) /*!< AD (Bit 0) */ + #define R_ADC0_ADRD_AD_Msk (0xffffUL) /*!< AD (Bitfield-Mask: 0xffff) */ +/* ========================================================= ADRST ========================================================= */ + #define R_ADC0_ADRST_DIAGST_Pos (0UL) /*!< DIAGST (Bit 0) */ + #define R_ADC0_ADRST_DIAGST_Msk (0x3UL) /*!< DIAGST (Bitfield-Mask: 0x03) */ +/* ====================================================== VREFAMPCNT ======================================================= */ + #define R_ADC0_VREFAMPCNT_VREFADCG_Pos (1UL) /*!< VREFADCG (Bit 1) */ + #define R_ADC0_VREFAMPCNT_VREFADCG_Msk (0x6UL) /*!< VREFADCG (Bitfield-Mask: 0x03) */ + #define R_ADC0_VREFAMPCNT_VREFADCEN_Pos (3UL) /*!< VREFADCEN (Bit 3) */ + #define R_ADC0_VREFAMPCNT_VREFADCEN_Msk (0x8UL) /*!< VREFADCEN (Bitfield-Mask: 0x01) */ + #define R_ADC0_VREFAMPCNT_ADSLP_Pos (7UL) /*!< ADSLP (Bit 7) */ + #define R_ADC0_VREFAMPCNT_ADSLP_Msk (0x80UL) /*!< ADSLP (Bitfield-Mask: 0x01) */ + #define R_ADC0_VREFAMPCNT_OLDETEN_Pos (0UL) /*!< OLDETEN (Bit 0) */ + #define R_ADC0_VREFAMPCNT_OLDETEN_Msk (0x1UL) /*!< OLDETEN (Bitfield-Mask: 0x01) */ + #define R_ADC0_VREFAMPCNT_BGREN_Pos (4UL) /*!< BGREN (Bit 4) */ + #define R_ADC0_VREFAMPCNT_BGREN_Msk (0x10UL) /*!< BGREN (Bitfield-Mask: 0x01) */ +/* ======================================================= ADCALEXE ======================================================== */ + #define R_ADC0_ADCALEXE_CALEXE_Pos (7UL) /*!< CALEXE (Bit 7) */ + #define R_ADC0_ADCALEXE_CALEXE_Msk (0x80UL) /*!< CALEXE (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADCALEXE_CALMON_Pos (6UL) /*!< CALMON (Bit 6) */ + #define R_ADC0_ADCALEXE_CALMON_Msk (0x40UL) /*!< CALMON (Bitfield-Mask: 0x01) */ +/* ======================================================== ADANIM ========================================================= */ + #define R_ADC0_ADANIM_ANIM_Pos (0UL) /*!< ANIM (Bit 0) */ + #define R_ADC0_ADANIM_ANIM_Msk (0x1UL) /*!< ANIM (Bitfield-Mask: 0x01) */ +/* ======================================================= ADPGAGS0 ======================================================== */ + #define R_ADC0_ADPGAGS0_P002GAIN_Pos (8UL) /*!< P002GAIN (Bit 8) */ + #define R_ADC0_ADPGAGS0_P002GAIN_Msk (0xf00UL) /*!< P002GAIN (Bitfield-Mask: 0x0f) */ + #define R_ADC0_ADPGAGS0_P001GAIN_Pos (4UL) /*!< P001GAIN (Bit 4) */ + #define R_ADC0_ADPGAGS0_P001GAIN_Msk (0xf0UL) /*!< P001GAIN (Bitfield-Mask: 0x0f) */ + #define R_ADC0_ADPGAGS0_P000GAIN_Pos (0UL) /*!< P000GAIN (Bit 0) */ + #define R_ADC0_ADPGAGS0_P000GAIN_Msk (0xfUL) /*!< P000GAIN (Bitfield-Mask: 0x0f) */ + #define R_ADC0_ADPGAGS0_P003GAIN_Pos (12UL) /*!< P003GAIN (Bit 12) */ + #define R_ADC0_ADPGAGS0_P003GAIN_Msk (0xf000UL) /*!< P003GAIN (Bitfield-Mask: 0x0f) */ +/* ======================================================= ADPGADCR0 ======================================================= */ + #define R_ADC0_ADPGADCR0_P003DG_Pos (12UL) /*!< P003DG (Bit 12) */ + #define R_ADC0_ADPGADCR0_P003DG_Msk (0x3000UL) /*!< P003DG (Bitfield-Mask: 0x03) */ + #define R_ADC0_ADPGADCR0_P002DEN_Pos (11UL) /*!< P002DEN (Bit 11) */ + #define R_ADC0_ADPGADCR0_P002DEN_Msk (0x800UL) /*!< P002DEN (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADPGADCR0_P002DG_Pos (8UL) /*!< P002DG (Bit 8) */ + #define R_ADC0_ADPGADCR0_P002DG_Msk (0x300UL) /*!< P002DG (Bitfield-Mask: 0x03) */ + #define R_ADC0_ADPGADCR0_P001DEN_Pos (7UL) /*!< P001DEN (Bit 7) */ + #define R_ADC0_ADPGADCR0_P001DEN_Msk (0x80UL) /*!< P001DEN (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADPGADCR0_P001DG_Pos (4UL) /*!< P001DG (Bit 4) */ + #define R_ADC0_ADPGADCR0_P001DG_Msk (0x30UL) /*!< P001DG (Bitfield-Mask: 0x03) */ + #define R_ADC0_ADPGADCR0_P000DEN_Pos (3UL) /*!< P000DEN (Bit 3) */ + #define R_ADC0_ADPGADCR0_P000DEN_Msk (0x8UL) /*!< P000DEN (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADPGADCR0_P000DG_Pos (0UL) /*!< P000DG (Bit 0) */ + #define R_ADC0_ADPGADCR0_P000DG_Msk (0x3UL) /*!< P000DG (Bitfield-Mask: 0x03) */ + #define R_ADC0_ADPGADCR0_P003DEN_Pos (15UL) /*!< P003DEN (Bit 15) */ + #define R_ADC0_ADPGADCR0_P003DEN_Msk (0x8000UL) /*!< P003DEN (Bitfield-Mask: 0x01) */ +/* ========================================================= ADREF ========================================================= */ + #define R_ADC0_ADREF_ADF_Pos (0UL) /*!< ADF (Bit 0) */ + #define R_ADC0_ADREF_ADF_Msk (0x1UL) /*!< ADF (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADREF_ADSCACT_Pos (7UL) /*!< ADSCACT (Bit 7) */ + #define R_ADC0_ADREF_ADSCACT_Msk (0x80UL) /*!< ADSCACT (Bitfield-Mask: 0x01) */ +/* ======================================================== ADEXREF ======================================================== */ + #define R_ADC0_ADEXREF_GBADF_Pos (0UL) /*!< GBADF (Bit 0) */ + #define R_ADC0_ADEXREF_GBADF_Msk (0x1UL) /*!< GBADF (Bitfield-Mask: 0x01) */ +/* ======================================================= ADAMPOFF ======================================================== */ + #define R_ADC0_ADAMPOFF_OPOFF_Pos (0UL) /*!< OPOFF (Bit 0) */ + #define R_ADC0_ADAMPOFF_OPOFF_Msk (0xffUL) /*!< OPOFF (Bitfield-Mask: 0xff) */ +/* ======================================================== ADTSTPR ======================================================== */ + #define R_ADC0_ADTSTPR_PRO_Pos (0UL) /*!< PRO (Bit 0) */ + #define R_ADC0_ADTSTPR_PRO_Msk (0x1UL) /*!< PRO (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADTSTPR_B0WI_Pos (1UL) /*!< B0WI (Bit 1) */ + #define R_ADC0_ADTSTPR_B0WI_Msk (0x2UL) /*!< B0WI (Bitfield-Mask: 0x01) */ +/* ======================================================= ADDDACER ======================================================== */ + #define R_ADC0_ADDDACER_WRION_Pos (0UL) /*!< WRION (Bit 0) */ + #define R_ADC0_ADDDACER_WRION_Msk (0x1fUL) /*!< WRION (Bitfield-Mask: 0x1f) */ + #define R_ADC0_ADDDACER_WRIOFF_Pos (8UL) /*!< WRIOFF (Bit 8) */ + #define R_ADC0_ADDDACER_WRIOFF_Msk (0x1f00UL) /*!< WRIOFF (Bitfield-Mask: 0x1f) */ + #define R_ADC0_ADDDACER_ADHS_Pos (15UL) /*!< ADHS (Bit 15) */ + #define R_ADC0_ADDDACER_ADHS_Msk (0x8000UL) /*!< ADHS (Bitfield-Mask: 0x01) */ +/* ======================================================= ADEXTSTR ======================================================== */ + #define R_ADC0_ADEXTSTR_SHTEST_Pos (0UL) /*!< SHTEST (Bit 0) */ + #define R_ADC0_ADEXTSTR_SHTEST_Msk (0x7UL) /*!< SHTEST (Bitfield-Mask: 0x07) */ + #define R_ADC0_ADEXTSTR_SWTST_Pos (4UL) /*!< SWTST (Bit 4) */ + #define R_ADC0_ADEXTSTR_SWTST_Msk (0x30UL) /*!< SWTST (Bitfield-Mask: 0x03) */ + #define R_ADC0_ADEXTSTR_SHTRM_Pos (8UL) /*!< SHTRM (Bit 8) */ + #define R_ADC0_ADEXTSTR_SHTRM_Msk (0x300UL) /*!< SHTRM (Bitfield-Mask: 0x03) */ + #define R_ADC0_ADEXTSTR_ADTRM3_Pos (11UL) /*!< ADTRM3 (Bit 11) */ + #define R_ADC0_ADEXTSTR_ADTRM3_Msk (0x800UL) /*!< ADTRM3 (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADEXTSTR_ADTRM2_Pos (12UL) /*!< ADTRM2 (Bit 12) */ + #define R_ADC0_ADEXTSTR_ADTRM2_Msk (0x3000UL) /*!< ADTRM2 (Bitfield-Mask: 0x03) */ + #define R_ADC0_ADEXTSTR_ADTRM1_Pos (14UL) /*!< ADTRM1 (Bit 14) */ + #define R_ADC0_ADEXTSTR_ADTRM1_Msk (0xc000UL) /*!< ADTRM1 (Bitfield-Mask: 0x03) */ +/* ======================================================== ADTSTRA ======================================================== */ + #define R_ADC0_ADTSTRA_ATBUSSEL_Pos (0UL) /*!< ATBUSSEL (Bit 0) */ + #define R_ADC0_ADTSTRA_ATBUSSEL_Msk (0x1UL) /*!< ATBUSSEL (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADTSTRA_TSTSWREF_Pos (1UL) /*!< TSTSWREF (Bit 1) */ + #define R_ADC0_ADTSTRA_TSTSWREF_Msk (0xeUL) /*!< TSTSWREF (Bitfield-Mask: 0x07) */ + #define R_ADC0_ADTSTRA_OCSW_Pos (5UL) /*!< OCSW (Bit 5) */ + #define R_ADC0_ADTSTRA_OCSW_Msk (0x20UL) /*!< OCSW (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADTSTRA_TSSW_Pos (6UL) /*!< TSSW (Bit 6) */ + #define R_ADC0_ADTSTRA_TSSW_Msk (0x40UL) /*!< TSSW (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADTSTRA_ADTEST_AD_Pos (8UL) /*!< ADTEST_AD (Bit 8) */ + #define R_ADC0_ADTSTRA_ADTEST_AD_Msk (0xf00UL) /*!< ADTEST_AD (Bitfield-Mask: 0x0f) */ + #define R_ADC0_ADTSTRA_ADTEST_IO_Pos (12UL) /*!< ADTEST_IO (Bit 12) */ + #define R_ADC0_ADTSTRA_ADTEST_IO_Msk (0xf000UL) /*!< ADTEST_IO (Bitfield-Mask: 0x0f) */ +/* ======================================================== ADTSTRB ======================================================== */ + #define R_ADC0_ADTSTRB_ADVAL_Pos (0UL) /*!< ADVAL (Bit 0) */ + #define R_ADC0_ADTSTRB_ADVAL_Msk (0x7fffUL) /*!< ADVAL (Bitfield-Mask: 0x7fff) */ +/* ======================================================== ADTSTRC ======================================================== */ + #define R_ADC0_ADTSTRC_ADMD_Pos (0UL) /*!< ADMD (Bit 0) */ + #define R_ADC0_ADTSTRC_ADMD_Msk (0xffUL) /*!< ADMD (Bitfield-Mask: 0xff) */ + #define R_ADC0_ADTSTRC_SYNCERR_Pos (12UL) /*!< SYNCERR (Bit 12) */ + #define R_ADC0_ADTSTRC_SYNCERR_Msk (0x1000UL) /*!< SYNCERR (Bitfield-Mask: 0x01) */ +/* ======================================================== ADTSTRD ======================================================== */ + #define R_ADC0_ADTSTRD_ADVAL16_Pos (0UL) /*!< ADVAL16 (Bit 0) */ + #define R_ADC0_ADTSTRD_ADVAL16_Msk (0x1UL) /*!< ADVAL16 (Bitfield-Mask: 0x01) */ +/* ======================================================= ADSWTSTR0 ======================================================= */ + #define R_ADC0_ADSWTSTR0_CHSW00_Pos (0UL) /*!< CHSW00 (Bit 0) */ + #define R_ADC0_ADSWTSTR0_CHSW00_Msk (0x1UL) /*!< CHSW00 (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADSWTSTR0_CHSW01_Pos (1UL) /*!< CHSW01 (Bit 1) */ + #define R_ADC0_ADSWTSTR0_CHSW01_Msk (0x2UL) /*!< CHSW01 (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADSWTSTR0_CHSW02_Pos (2UL) /*!< CHSW02 (Bit 2) */ + #define R_ADC0_ADSWTSTR0_CHSW02_Msk (0x4UL) /*!< CHSW02 (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADSWTSTR0_CHSW03_Pos (3UL) /*!< CHSW03 (Bit 3) */ + #define R_ADC0_ADSWTSTR0_CHSW03_Msk (0x8UL) /*!< CHSW03 (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADSWTSTR0_CHSW04_Pos (4UL) /*!< CHSW04 (Bit 4) */ + #define R_ADC0_ADSWTSTR0_CHSW04_Msk (0x10UL) /*!< CHSW04 (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADSWTSTR0_CHSW05_Pos (5UL) /*!< CHSW05 (Bit 5) */ + #define R_ADC0_ADSWTSTR0_CHSW05_Msk (0x20UL) /*!< CHSW05 (Bitfield-Mask: 0x01) */ +/* ======================================================= ADSWTSTR1 ======================================================= */ + #define R_ADC0_ADSWTSTR1_CHSW16_Pos (0UL) /*!< CHSW16 (Bit 0) */ + #define R_ADC0_ADSWTSTR1_CHSW16_Msk (0x1UL) /*!< CHSW16 (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADSWTSTR1_CHSW17_Pos (1UL) /*!< CHSW17 (Bit 1) */ + #define R_ADC0_ADSWTSTR1_CHSW17_Msk (0x2UL) /*!< CHSW17 (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADSWTSTR1_CHSW18_Pos (2UL) /*!< CHSW18 (Bit 2) */ + #define R_ADC0_ADSWTSTR1_CHSW18_Msk (0x4UL) /*!< CHSW18 (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADSWTSTR1_CHSW19_Pos (3UL) /*!< CHSW19 (Bit 3) */ + #define R_ADC0_ADSWTSTR1_CHSW19_Msk (0x8UL) /*!< CHSW19 (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADSWTSTR1_CHSW20_Pos (4UL) /*!< CHSW20 (Bit 4) */ + #define R_ADC0_ADSWTSTR1_CHSW20_Msk (0x10UL) /*!< CHSW20 (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADSWTSTR1_CHSW21_Pos (5UL) /*!< CHSW21 (Bit 5) */ + #define R_ADC0_ADSWTSTR1_CHSW21_Msk (0x20UL) /*!< CHSW21 (Bitfield-Mask: 0x01) */ +/* ======================================================= ADSWTSTR2 ======================================================= */ + #define R_ADC0_ADSWTSTR2_EX0SW_Pos (0UL) /*!< EX0SW (Bit 0) */ + #define R_ADC0_ADSWTSTR2_EX0SW_Msk (0x1UL) /*!< EX0SW (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADSWTSTR2_EX1SW_Pos (1UL) /*!< EX1SW (Bit 1) */ + #define R_ADC0_ADSWTSTR2_EX1SW_Msk (0x2UL) /*!< EX1SW (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADSWTSTR2_SHBYPS0_Pos (4UL) /*!< SHBYPS0 (Bit 4) */ + #define R_ADC0_ADSWTSTR2_SHBYPS0_Msk (0x10UL) /*!< SHBYPS0 (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADSWTSTR2_SHBYPS1_Pos (5UL) /*!< SHBYPS1 (Bit 5) */ + #define R_ADC0_ADSWTSTR2_SHBYPS1_Msk (0x20UL) /*!< SHBYPS1 (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADSWTSTR2_SHBYPS2_Pos (6UL) /*!< SHBYPS2 (Bit 6) */ + #define R_ADC0_ADSWTSTR2_SHBYPS2_Msk (0x40UL) /*!< SHBYPS2 (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADSWTSTR2_GRP0SW_Pos (8UL) /*!< GRP0SW (Bit 8) */ + #define R_ADC0_ADSWTSTR2_GRP0SW_Msk (0x100UL) /*!< GRP0SW (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADSWTSTR2_GRP1SW_Pos (9UL) /*!< GRP1SW (Bit 9) */ + #define R_ADC0_ADSWTSTR2_GRP1SW_Msk (0x200UL) /*!< GRP1SW (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADSWTSTR2_GRP2SW_Pos (10UL) /*!< GRP2SW (Bit 10) */ + #define R_ADC0_ADSWTSTR2_GRP2SW_Msk (0x400UL) /*!< GRP2SW (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADSWTSTR2_GRP3SW_Pos (11UL) /*!< GRP3SW (Bit 11) */ + #define R_ADC0_ADSWTSTR2_GRP3SW_Msk (0x800UL) /*!< GRP3SW (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADSWTSTR2_GRPEX1SW_Pos (12UL) /*!< GRPEX1SW (Bit 12) */ + #define R_ADC0_ADSWTSTR2_GRPEX1SW_Msk (0x1000UL) /*!< GRPEX1SW (Bitfield-Mask: 0x01) */ +/* ======================================================== ADSWCR ========================================================= */ + #define R_ADC0_ADSWCR_ADSWREF_Pos (0UL) /*!< ADSWREF (Bit 0) */ + #define R_ADC0_ADSWCR_ADSWREF_Msk (0x7UL) /*!< ADSWREF (Bitfield-Mask: 0x07) */ + #define R_ADC0_ADSWCR_SHSWREF_Pos (4UL) /*!< SHSWREF (Bit 4) */ + #define R_ADC0_ADSWCR_SHSWREF_Msk (0x70UL) /*!< SHSWREF (Bitfield-Mask: 0x07) */ +/* ======================================================== ADGSCS ========================================================= */ + #define R_ADC0_ADGSCS_CHSELGB_Pos (0UL) /*!< CHSELGB (Bit 0) */ + #define R_ADC0_ADGSCS_CHSELGB_Msk (0xffUL) /*!< CHSELGB (Bitfield-Mask: 0xff) */ + #define R_ADC0_ADGSCS_CHSELGA_Pos (8UL) /*!< CHSELGA (Bit 8) */ + #define R_ADC0_ADGSCS_CHSELGA_Msk (0xff00UL) /*!< CHSELGA (Bitfield-Mask: 0xff) */ +/* ========================================================= ADSER ========================================================= */ + #define R_ADC0_ADSER_SMPEX_Pos (7UL) /*!< SMPEX (Bit 7) */ + #define R_ADC0_ADSER_SMPEX_Msk (0x80UL) /*!< SMPEX (Bitfield-Mask: 0x01) */ +/* ======================================================== ADBUF0 ========================================================= */ + #define R_ADC0_ADBUF0_ADBUF_Pos (0UL) /*!< ADBUF (Bit 0) */ + #define R_ADC0_ADBUF0_ADBUF_Msk (0xffffUL) /*!< ADBUF (Bitfield-Mask: 0xffff) */ +/* ======================================================== ADBUF1 ========================================================= */ + #define R_ADC0_ADBUF1_ADBUF_Pos (0UL) /*!< ADBUF (Bit 0) */ + #define R_ADC0_ADBUF1_ADBUF_Msk (0xffffUL) /*!< ADBUF (Bitfield-Mask: 0xffff) */ +/* ======================================================== ADBUF2 ========================================================= */ + #define R_ADC0_ADBUF2_ADBUF_Pos (0UL) /*!< ADBUF (Bit 0) */ + #define R_ADC0_ADBUF2_ADBUF_Msk (0xffffUL) /*!< ADBUF (Bitfield-Mask: 0xffff) */ +/* ======================================================== ADBUF3 ========================================================= */ + #define R_ADC0_ADBUF3_ADBUF_Pos (0UL) /*!< ADBUF (Bit 0) */ + #define R_ADC0_ADBUF3_ADBUF_Msk (0xffffUL) /*!< ADBUF (Bitfield-Mask: 0xffff) */ +/* ======================================================== ADBUF4 ========================================================= */ + #define R_ADC0_ADBUF4_ADBUF_Pos (0UL) /*!< ADBUF (Bit 0) */ + #define R_ADC0_ADBUF4_ADBUF_Msk (0xffffUL) /*!< ADBUF (Bitfield-Mask: 0xffff) */ +/* ======================================================== ADBUF5 ========================================================= */ + #define R_ADC0_ADBUF5_ADBUF_Pos (0UL) /*!< ADBUF (Bit 0) */ + #define R_ADC0_ADBUF5_ADBUF_Msk (0xffffUL) /*!< ADBUF (Bitfield-Mask: 0xffff) */ +/* ======================================================== ADBUF6 ========================================================= */ + #define R_ADC0_ADBUF6_ADBUF_Pos (0UL) /*!< ADBUF (Bit 0) */ + #define R_ADC0_ADBUF6_ADBUF_Msk (0xffffUL) /*!< ADBUF (Bitfield-Mask: 0xffff) */ +/* ======================================================== ADBUF7 ========================================================= */ + #define R_ADC0_ADBUF7_ADBUF_Pos (0UL) /*!< ADBUF (Bit 0) */ + #define R_ADC0_ADBUF7_ADBUF_Msk (0xffffUL) /*!< ADBUF (Bitfield-Mask: 0xffff) */ +/* ======================================================== ADBUF8 ========================================================= */ + #define R_ADC0_ADBUF8_ADBUF_Pos (0UL) /*!< ADBUF (Bit 0) */ + #define R_ADC0_ADBUF8_ADBUF_Msk (0xffffUL) /*!< ADBUF (Bitfield-Mask: 0xffff) */ +/* ======================================================== ADBUF9 ========================================================= */ + #define R_ADC0_ADBUF9_ADBUF_Pos (0UL) /*!< ADBUF (Bit 0) */ + #define R_ADC0_ADBUF9_ADBUF_Msk (0xffffUL) /*!< ADBUF (Bitfield-Mask: 0xffff) */ +/* ======================================================== ADBUF10 ======================================================== */ + #define R_ADC0_ADBUF10_ADBUF_Pos (0UL) /*!< ADBUF (Bit 0) */ + #define R_ADC0_ADBUF10_ADBUF_Msk (0xffffUL) /*!< ADBUF (Bitfield-Mask: 0xffff) */ +/* ======================================================== ADBUF11 ======================================================== */ + #define R_ADC0_ADBUF11_ADBUF_Pos (0UL) /*!< ADBUF (Bit 0) */ + #define R_ADC0_ADBUF11_ADBUF_Msk (0xffffUL) /*!< ADBUF (Bitfield-Mask: 0xffff) */ +/* ======================================================== ADBUF12 ======================================================== */ + #define R_ADC0_ADBUF12_ADBUF_Pos (0UL) /*!< ADBUF (Bit 0) */ + #define R_ADC0_ADBUF12_ADBUF_Msk (0xffffUL) /*!< ADBUF (Bitfield-Mask: 0xffff) */ +/* ======================================================== ADBUF13 ======================================================== */ + #define R_ADC0_ADBUF13_ADBUF_Pos (0UL) /*!< ADBUF (Bit 0) */ + #define R_ADC0_ADBUF13_ADBUF_Msk (0xffffUL) /*!< ADBUF (Bitfield-Mask: 0xffff) */ +/* ======================================================== ADBUF14 ======================================================== */ + #define R_ADC0_ADBUF14_ADBUF_Pos (0UL) /*!< ADBUF (Bit 0) */ + #define R_ADC0_ADBUF14_ADBUF_Msk (0xffffUL) /*!< ADBUF (Bitfield-Mask: 0xffff) */ +/* ======================================================== ADBUF15 ======================================================== */ + #define R_ADC0_ADBUF15_ADBUF_Pos (0UL) /*!< ADBUF (Bit 0) */ + #define R_ADC0_ADBUF15_ADBUF_Msk (0xffffUL) /*!< ADBUF (Bitfield-Mask: 0xffff) */ +/* ======================================================== ADBUFEN ======================================================== */ + #define R_ADC0_ADBUFEN_BUFEN_Pos (0UL) /*!< BUFEN (Bit 0) */ + #define R_ADC0_ADBUFEN_BUFEN_Msk (0x1UL) /*!< BUFEN (Bitfield-Mask: 0x01) */ +/* ======================================================= ADBUFPTR ======================================================== */ + #define R_ADC0_ADBUFPTR_BUFPTR_Pos (0UL) /*!< BUFPTR (Bit 0) */ + #define R_ADC0_ADBUFPTR_BUFPTR_Msk (0xfUL) /*!< BUFPTR (Bitfield-Mask: 0x0f) */ + #define R_ADC0_ADBUFPTR_PTROVF_Pos (4UL) /*!< PTROVF (Bit 4) */ + #define R_ADC0_ADBUFPTR_PTROVF_Msk (0x10UL) /*!< PTROVF (Bitfield-Mask: 0x01) */ +/* ======================================================= ADPGADBS0 ======================================================= */ + #define R_ADC0_ADPGADBS0_P0BIAS_Pos (0UL) /*!< P0BIAS (Bit 0) */ + #define R_ADC0_ADPGADBS0_P0BIAS_Msk (0x1UL) /*!< P0BIAS (Bitfield-Mask: 0x01) */ +/* ======================================================= ADPGADBS1 ======================================================= */ + #define R_ADC0_ADPGADBS1_P3BIAS_Pos (0UL) /*!< P3BIAS (Bit 0) */ + #define R_ADC0_ADPGADBS1_P3BIAS_Msk (0x1UL) /*!< P3BIAS (Bitfield-Mask: 0x01) */ +/* ======================================================= ADREFMON ======================================================== */ + #define R_ADC0_ADREFMON_PGAMON_Pos (0UL) /*!< PGAMON (Bit 0) */ + #define R_ADC0_ADREFMON_PGAMON_Msk (0x7UL) /*!< PGAMON (Bitfield-Mask: 0x07) */ + #define R_ADC0_ADREFMON_MONSEL_Pos (16UL) /*!< MONSEL (Bit 16) */ + #define R_ADC0_ADREFMON_MONSEL_Msk (0xf0000UL) /*!< MONSEL (Bitfield-Mask: 0x0f) */ + +/* =========================================================================================================================== */ +/* ================ R_PSCU ================ */ +/* =========================================================================================================================== */ + +/* ========================================================= PSARB ========================================================= */ + #define R_PSCU_PSARB_PSARB4_Pos (4UL) /*!< PSARB4 (Bit 4) */ + #define R_PSCU_PSARB_PSARB4_Msk (0x10UL) /*!< PSARB4 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PSARB_PSARB8_Pos (8UL) /*!< PSARB8 (Bit 8) */ + #define R_PSCU_PSARB_PSARB8_Msk (0x100UL) /*!< PSARB8 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PSARB_PSARB9_Pos (9UL) /*!< PSARB9 (Bit 9) */ + #define R_PSCU_PSARB_PSARB9_Msk (0x200UL) /*!< PSARB9 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PSARB_PSARB11_Pos (11UL) /*!< PSARB11 (Bit 11) */ + #define R_PSCU_PSARB_PSARB11_Msk (0x800UL) /*!< PSARB11 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PSARB_PSARB12_Pos (12UL) /*!< PSARB12 (Bit 12) */ + #define R_PSCU_PSARB_PSARB12_Msk (0x1000UL) /*!< PSARB12 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PSARB_PSARB15_Pos (15UL) /*!< PSARB15 (Bit 15) */ + #define R_PSCU_PSARB_PSARB15_Msk (0x8000UL) /*!< PSARB15 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PSARB_PSARB16_Pos (16UL) /*!< PSARB16 (Bit 16) */ + #define R_PSCU_PSARB_PSARB16_Msk (0x10000UL) /*!< PSARB16 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PSARB_PSARB18_Pos (18UL) /*!< PSARB18 (Bit 18) */ + #define R_PSCU_PSARB_PSARB18_Msk (0x40000UL) /*!< PSARB18 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PSARB_PSARB19_Pos (19UL) /*!< PSARB19 (Bit 19) */ + #define R_PSCU_PSARB_PSARB19_Msk (0x80000UL) /*!< PSARB19 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PSARB_PSARB22_Pos (22UL) /*!< PSARB22 (Bit 22) */ + #define R_PSCU_PSARB_PSARB22_Msk (0x400000UL) /*!< PSARB22 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PSARB_PSARB27_Pos (27UL) /*!< PSARB27 (Bit 27) */ + #define R_PSCU_PSARB_PSARB27_Msk (0x8000000UL) /*!< PSARB27 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PSARB_PSARB28_Pos (28UL) /*!< PSARB28 (Bit 28) */ + #define R_PSCU_PSARB_PSARB28_Msk (0x10000000UL) /*!< PSARB28 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PSARB_PSARB29_Pos (29UL) /*!< PSARB29 (Bit 29) */ + #define R_PSCU_PSARB_PSARB29_Msk (0x20000000UL) /*!< PSARB29 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PSARB_PSARB30_Pos (30UL) /*!< PSARB30 (Bit 30) */ + #define R_PSCU_PSARB_PSARB30_Msk (0x40000000UL) /*!< PSARB30 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PSARB_PSARB31_Pos (31UL) /*!< PSARB31 (Bit 31) */ + #define R_PSCU_PSARB_PSARB31_Msk (0x80000000UL) /*!< PSARB31 (Bitfield-Mask: 0x01) */ +/* ========================================================= PSARC ========================================================= */ + #define R_PSCU_PSARC_PSARC0_Pos (0UL) /*!< PSARC0 (Bit 0) */ + #define R_PSCU_PSARC_PSARC0_Msk (0x1UL) /*!< PSARC0 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PSARC_PSARC1_Pos (1UL) /*!< PSARC1 (Bit 1) */ + #define R_PSCU_PSARC_PSARC1_Msk (0x2UL) /*!< PSARC1 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PSARC_PSARC7_Pos (7UL) /*!< PSARC7 (Bit 7) */ + #define R_PSCU_PSARC_PSARC7_Msk (0x80UL) /*!< PSARC7 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PSARC_PSARC8_Pos (8UL) /*!< PSARC8 (Bit 8) */ + #define R_PSCU_PSARC_PSARC8_Msk (0x100UL) /*!< PSARC8 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PSARC_PSARC11_Pos (11UL) /*!< PSARC11 (Bit 11) */ + #define R_PSCU_PSARC_PSARC11_Msk (0x800UL) /*!< PSARC11 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PSARC_PSARC12_Pos (12UL) /*!< PSARC12 (Bit 12) */ + #define R_PSCU_PSARC_PSARC12_Msk (0x1000UL) /*!< PSARC12 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PSARC_PSARC13_Pos (13UL) /*!< PSARC13 (Bit 13) */ + #define R_PSCU_PSARC_PSARC13_Msk (0x2000UL) /*!< PSARC13 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PSARC_PSARC15_Pos (15UL) /*!< PSARC15 (Bit 15) */ + #define R_PSCU_PSARC_PSARC15_Msk (0x8000UL) /*!< PSARC15 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PSARC_PSARC16_Pos (16UL) /*!< PSARC16 (Bit 16) */ + #define R_PSCU_PSARC_PSARC16_Msk (0x10000UL) /*!< PSARC16 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PSARC_PSARC26_Pos (26UL) /*!< PSARC26 (Bit 26) */ + #define R_PSCU_PSARC_PSARC26_Msk (0x4000000UL) /*!< PSARC26 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PSARC_PSARC27_Pos (27UL) /*!< PSARC27 (Bit 27) */ + #define R_PSCU_PSARC_PSARC27_Msk (0x8000000UL) /*!< PSARC27 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PSARC_PSARC31_Pos (31UL) /*!< PSARC31 (Bit 31) */ + #define R_PSCU_PSARC_PSARC31_Msk (0x80000000UL) /*!< PSARC31 (Bitfield-Mask: 0x01) */ +/* ========================================================= PSARD ========================================================= */ + #define R_PSCU_PSARD_PSARD4_Pos (4UL) /*!< PSARD4 (Bit 4) */ + #define R_PSCU_PSARD_PSARD4_Msk (0x10UL) /*!< PSARD4 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PSARD_PSARD5_Pos (5UL) /*!< PSARD5 (Bit 5) */ + #define R_PSCU_PSARD_PSARD5_Msk (0x20UL) /*!< PSARD5 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PSARD_PSARD11_Pos (11UL) /*!< PSARD11 (Bit 11) */ + #define R_PSCU_PSARD_PSARD11_Msk (0x800UL) /*!< PSARD11 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PSARD_PSARD12_Pos (12UL) /*!< PSARD12 (Bit 12) */ + #define R_PSCU_PSARD_PSARD12_Msk (0x1000UL) /*!< PSARD12 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PSARD_PSARD13_Pos (13UL) /*!< PSARD13 (Bit 13) */ + #define R_PSCU_PSARD_PSARD13_Msk (0x2000UL) /*!< PSARD13 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PSARD_PSARD14_Pos (14UL) /*!< PSARD14 (Bit 14) */ + #define R_PSCU_PSARD_PSARD14_Msk (0x4000UL) /*!< PSARD14 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PSARD_PSARD15_Pos (15UL) /*!< PSARD15 (Bit 15) */ + #define R_PSCU_PSARD_PSARD15_Msk (0x8000UL) /*!< PSARD15 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PSARD_PSARD16_Pos (16UL) /*!< PSARD16 (Bit 16) */ + #define R_PSCU_PSARD_PSARD16_Msk (0x10000UL) /*!< PSARD16 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PSARD_PSARD20_Pos (20UL) /*!< PSARD20 (Bit 20) */ + #define R_PSCU_PSARD_PSARD20_Msk (0x100000UL) /*!< PSARD20 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PSARD_PSARD22_Pos (22UL) /*!< PSARD22 (Bit 22) */ + #define R_PSCU_PSARD_PSARD22_Msk (0x400000UL) /*!< PSARD22 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PSARD_PSARD27_Pos (27UL) /*!< PSARD27 (Bit 27) */ + #define R_PSCU_PSARD_PSARD27_Msk (0x8000000UL) /*!< PSARD27 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PSARD_PSARD28_Pos (28UL) /*!< PSARD28 (Bit 28) */ + #define R_PSCU_PSARD_PSARD28_Msk (0x10000000UL) /*!< PSARD28 (Bitfield-Mask: 0x01) */ +/* ========================================================= PSARE ========================================================= */ + #define R_PSCU_PSARE_PSARE1_Pos (1UL) /*!< PSARE1 (Bit 1) */ + #define R_PSCU_PSARE_PSARE1_Msk (0x2UL) /*!< PSARE1 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PSARE_PSARE2_Pos (2UL) /*!< PSARE2 (Bit 2) */ + #define R_PSCU_PSARE_PSARE2_Msk (0x4UL) /*!< PSARE2 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PSARE_PSARE3_Pos (3UL) /*!< PSARE3 (Bit 3) */ + #define R_PSCU_PSARE_PSARE3_Msk (0x8UL) /*!< PSARE3 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PSARE_PSARE8_Pos (8UL) /*!< PSARE8 (Bit 8) */ + #define R_PSCU_PSARE_PSARE8_Msk (0x100UL) /*!< PSARE8 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PSARE_PSARE9_Pos (9UL) /*!< PSARE9 (Bit 9) */ + #define R_PSCU_PSARE_PSARE9_Msk (0x200UL) /*!< PSARE9 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PSARE_PSARE18_Pos (18UL) /*!< PSARE18 (Bit 18) */ + #define R_PSCU_PSARE_PSARE18_Msk (0x40000UL) /*!< PSARE18 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PSARE_PSARE19_Pos (19UL) /*!< PSARE19 (Bit 19) */ + #define R_PSCU_PSARE_PSARE19_Msk (0x80000UL) /*!< PSARE19 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PSARE_PSARE20_Pos (20UL) /*!< PSARE20 (Bit 20) */ + #define R_PSCU_PSARE_PSARE20_Msk (0x100000UL) /*!< PSARE20 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PSARE_PSARE21_Pos (21UL) /*!< PSARE21 (Bit 21) */ + #define R_PSCU_PSARE_PSARE21_Msk (0x200000UL) /*!< PSARE21 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PSARE_PSARE22_Pos (22UL) /*!< PSARE22 (Bit 22) */ + #define R_PSCU_PSARE_PSARE22_Msk (0x400000UL) /*!< PSARE22 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PSARE_PSARE23_Pos (23UL) /*!< PSARE23 (Bit 23) */ + #define R_PSCU_PSARE_PSARE23_Msk (0x800000UL) /*!< PSARE23 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PSARE_PSARE24_Pos (24UL) /*!< PSARE24 (Bit 24) */ + #define R_PSCU_PSARE_PSARE24_Msk (0x1000000UL) /*!< PSARE24 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PSARE_PSARE25_Pos (25UL) /*!< PSARE25 (Bit 25) */ + #define R_PSCU_PSARE_PSARE25_Msk (0x2000000UL) /*!< PSARE25 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PSARE_PSARE26_Pos (26UL) /*!< PSARE26 (Bit 26) */ + #define R_PSCU_PSARE_PSARE26_Msk (0x4000000UL) /*!< PSARE26 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PSARE_PSARE27_Pos (27UL) /*!< PSARE27 (Bit 27) */ + #define R_PSCU_PSARE_PSARE27_Msk (0x8000000UL) /*!< PSARE27 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PSARE_PSARE28_Pos (28UL) /*!< PSARE28 (Bit 28) */ + #define R_PSCU_PSARE_PSARE28_Msk (0x10000000UL) /*!< PSARE28 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PSARE_PSARE29_Pos (29UL) /*!< PSARE29 (Bit 29) */ + #define R_PSCU_PSARE_PSARE29_Msk (0x20000000UL) /*!< PSARE29 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PSARE_PSARE30_Pos (30UL) /*!< PSARE30 (Bit 30) */ + #define R_PSCU_PSARE_PSARE30_Msk (0x40000000UL) /*!< PSARE30 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PSARE_PSARE31_Pos (31UL) /*!< PSARE31 (Bit 31) */ + #define R_PSCU_PSARE_PSARE31_Msk (0x80000000UL) /*!< PSARE31 (Bitfield-Mask: 0x01) */ +/* ========================================================= MSSAR ========================================================= */ + #define R_PSCU_MSSAR_MSSAR0_Pos (0UL) /*!< MSSAR0 (Bit 0) */ + #define R_PSCU_MSSAR_MSSAR0_Msk (0x1UL) /*!< MSSAR0 (Bitfield-Mask: 0x01) */ + #define R_PSCU_MSSAR_MSSAR1_Pos (1UL) /*!< MSSAR1 (Bit 1) */ + #define R_PSCU_MSSAR_MSSAR1_Msk (0x2UL) /*!< MSSAR1 (Bitfield-Mask: 0x01) */ + #define R_PSCU_MSSAR_MSSAR11_Pos (11UL) /*!< MSSAR11 (Bit 11) */ + #define R_PSCU_MSSAR_MSSAR11_Msk (0x800UL) /*!< MSSAR11 (Bitfield-Mask: 0x01) */ + #define R_PSCU_MSSAR_MSSAR13_Pos (13UL) /*!< MSSAR13 (Bit 13) */ + #define R_PSCU_MSSAR_MSSAR13_Msk (0x2000UL) /*!< MSSAR13 (Bitfield-Mask: 0x01) */ + #define R_PSCU_MSSAR_MSSAR15_Pos (15UL) /*!< MSSAR15 (Bit 15) */ + #define R_PSCU_MSSAR_MSSAR15_Msk (0x8000UL) /*!< MSSAR15 (Bitfield-Mask: 0x01) */ + #define R_PSCU_MSSAR_MSSAR22_Pos (22UL) /*!< MSSAR22 (Bit 22) */ + #define R_PSCU_MSSAR_MSSAR22_Msk (0x400000UL) /*!< MSSAR22 (Bitfield-Mask: 0x01) */ + #define R_PSCU_MSSAR_MSSAR31_Pos (31UL) /*!< MSSAR31 (Bit 31) */ + #define R_PSCU_MSSAR_MSSAR31_Msk (0x80000000UL) /*!< MSSAR31 (Bitfield-Mask: 0x01) */ +/* ========================================================= PPARB ========================================================= */ + #define R_PSCU_PPARB_PPARB4_Pos (4UL) /*!< PPARB4 (Bit 4) */ + #define R_PSCU_PPARB_PPARB4_Msk (0x10UL) /*!< PPARB4 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PPARB_PPARB8_Pos (8UL) /*!< PPARB8 (Bit 8) */ + #define R_PSCU_PPARB_PPARB8_Msk (0x100UL) /*!< PPARB8 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PPARB_PPARB9_Pos (9UL) /*!< PPARB9 (Bit 9) */ + #define R_PSCU_PPARB_PPARB9_Msk (0x200UL) /*!< PPARB9 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PPARB_PPARB11_Pos (11UL) /*!< PPARB11 (Bit 11) */ + #define R_PSCU_PPARB_PPARB11_Msk (0x800UL) /*!< PPARB11 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PPARB_PPARB12_Pos (12UL) /*!< PPARB12 (Bit 12) */ + #define R_PSCU_PPARB_PPARB12_Msk (0x1000UL) /*!< PPARB12 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PPARB_PPARB15_Pos (15UL) /*!< PPARB15 (Bit 15) */ + #define R_PSCU_PPARB_PPARB15_Msk (0x8000UL) /*!< PPARB15 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PPARB_PPARB16_Pos (16UL) /*!< PPARB16 (Bit 16) */ + #define R_PSCU_PPARB_PPARB16_Msk (0x10000UL) /*!< PPARB16 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PPARB_PPARB18_Pos (18UL) /*!< PPARB18 (Bit 18) */ + #define R_PSCU_PPARB_PPARB18_Msk (0x40000UL) /*!< PPARB18 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PPARB_PPARB19_Pos (19UL) /*!< PPARB19 (Bit 19) */ + #define R_PSCU_PPARB_PPARB19_Msk (0x80000UL) /*!< PPARB19 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PPARB_PPARB22_Pos (22UL) /*!< PPARB22 (Bit 22) */ + #define R_PSCU_PPARB_PPARB22_Msk (0x400000UL) /*!< PPARB22 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PPARB_PPARB27_Pos (27UL) /*!< PPARB27 (Bit 27) */ + #define R_PSCU_PPARB_PPARB27_Msk (0x8000000UL) /*!< PPARB27 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PPARB_PPARB28_Pos (28UL) /*!< PPARB28 (Bit 28) */ + #define R_PSCU_PPARB_PPARB28_Msk (0x10000000UL) /*!< PPARB28 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PPARB_PPARB29_Pos (29UL) /*!< PPARB29 (Bit 29) */ + #define R_PSCU_PPARB_PPARB29_Msk (0x20000000UL) /*!< PPARB29 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PPARB_PPARB30_Pos (30UL) /*!< PPARB30 (Bit 30) */ + #define R_PSCU_PPARB_PPARB30_Msk (0x40000000UL) /*!< PPARB30 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PPARB_PPARB31_Pos (31UL) /*!< PPARB31 (Bit 31) */ + #define R_PSCU_PPARB_PPARB31_Msk (0x80000000UL) /*!< PPARB31 (Bitfield-Mask: 0x01) */ +/* ========================================================= PPARC ========================================================= */ + #define R_PSCU_PPARC_PPARC0_Pos (0UL) /*!< PPARC0 (Bit 0) */ + #define R_PSCU_PPARC_PPARC0_Msk (0x1UL) /*!< PPARC0 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PPARC_PPARC1_Pos (1UL) /*!< PPARC1 (Bit 1) */ + #define R_PSCU_PPARC_PPARC1_Msk (0x2UL) /*!< PPARC1 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PPARC_PPARC7_Pos (7UL) /*!< PPARC7 (Bit 7) */ + #define R_PSCU_PPARC_PPARC7_Msk (0x80UL) /*!< PPARC7 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PPARC_PPARC8_Pos (8UL) /*!< PPARC8 (Bit 8) */ + #define R_PSCU_PPARC_PPARC8_Msk (0x100UL) /*!< PPARC8 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PPARC_PPARC11_Pos (11UL) /*!< PPARC11 (Bit 11) */ + #define R_PSCU_PPARC_PPARC11_Msk (0x800UL) /*!< PPARC11 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PPARC_PPARC12_Pos (12UL) /*!< PPARC12 (Bit 12) */ + #define R_PSCU_PPARC_PPARC12_Msk (0x1000UL) /*!< PPARC12 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PPARC_PPARC13_Pos (13UL) /*!< PPARC13 (Bit 13) */ + #define R_PSCU_PPARC_PPARC13_Msk (0x2000UL) /*!< PPARC13 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PPARC_PPARC15_Pos (15UL) /*!< PPARC15 (Bit 15) */ + #define R_PSCU_PPARC_PPARC15_Msk (0x8000UL) /*!< PPARC15 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PPARC_PPARC16_Pos (16UL) /*!< PPARC16 (Bit 16) */ + #define R_PSCU_PPARC_PPARC16_Msk (0x10000UL) /*!< PPARC16 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PPARC_PPARC26_Pos (26UL) /*!< PPARC26 (Bit 26) */ + #define R_PSCU_PPARC_PPARC26_Msk (0x4000000UL) /*!< PPARC26 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PPARC_PPARC27_Pos (27UL) /*!< PPARC27 (Bit 27) */ + #define R_PSCU_PPARC_PPARC27_Msk (0x8000000UL) /*!< PPARC27 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PPARC_PPARC31_Pos (31UL) /*!< PPARC31 (Bit 31) */ + #define R_PSCU_PPARC_PPARC31_Msk (0x80000000UL) /*!< PPARC31 (Bitfield-Mask: 0x01) */ +/* ========================================================= PPARD ========================================================= */ + #define R_PSCU_PPARD_PPARD4_Pos (4UL) /*!< PPARD4 (Bit 4) */ + #define R_PSCU_PPARD_PPARD4_Msk (0x10UL) /*!< PPARD4 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PPARD_PPARD5_Pos (5UL) /*!< PPARD5 (Bit 5) */ + #define R_PSCU_PPARD_PPARD5_Msk (0x20UL) /*!< PPARD5 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PPARD_PPARD11_Pos (11UL) /*!< PPARD11 (Bit 11) */ + #define R_PSCU_PPARD_PPARD11_Msk (0x800UL) /*!< PPARD11 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PPARD_PPARD12_Pos (12UL) /*!< PPARD12 (Bit 12) */ + #define R_PSCU_PPARD_PPARD12_Msk (0x1000UL) /*!< PPARD12 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PPARD_PPARD13_Pos (13UL) /*!< PPARD13 (Bit 13) */ + #define R_PSCU_PPARD_PPARD13_Msk (0x2000UL) /*!< PPARD13 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PPARD_PPARD14_Pos (14UL) /*!< PPARD14 (Bit 14) */ + #define R_PSCU_PPARD_PPARD14_Msk (0x4000UL) /*!< PPARD14 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PPARD_PPARD15_Pos (15UL) /*!< PPARD15 (Bit 15) */ + #define R_PSCU_PPARD_PPARD15_Msk (0x8000UL) /*!< PPARD15 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PPARD_PPARD16_Pos (16UL) /*!< PPARD16 (Bit 16) */ + #define R_PSCU_PPARD_PPARD16_Msk (0x10000UL) /*!< PPARD16 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PPARD_PPARD20_Pos (20UL) /*!< PPARD20 (Bit 20) */ + #define R_PSCU_PPARD_PPARD20_Msk (0x100000UL) /*!< PPARD20 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PPARD_PPARD22_Pos (22UL) /*!< PPARD22 (Bit 22) */ + #define R_PSCU_PPARD_PPARD22_Msk (0x400000UL) /*!< PPARD22 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PPARD_PPARD27_Pos (27UL) /*!< PPARD27 (Bit 27) */ + #define R_PSCU_PPARD_PPARD27_Msk (0x8000000UL) /*!< PPARD27 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PPARD_PPARD28_Pos (28UL) /*!< PPARD28 (Bit 28) */ + #define R_PSCU_PPARD_PPARD28_Msk (0x10000000UL) /*!< PPARD28 (Bitfield-Mask: 0x01) */ +/* ========================================================= PPARE ========================================================= */ + #define R_PSCU_PPARE_PPARE1_Pos (1UL) /*!< PPARE1 (Bit 1) */ + #define R_PSCU_PPARE_PPARE1_Msk (0x2UL) /*!< PPARE1 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PPARE_PPARE2_Pos (2UL) /*!< PPARE2 (Bit 2) */ + #define R_PSCU_PPARE_PPARE2_Msk (0x4UL) /*!< PPARE2 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PPARE_PPARE3_Pos (3UL) /*!< PPARE3 (Bit 3) */ + #define R_PSCU_PPARE_PPARE3_Msk (0x8UL) /*!< PPARE3 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PPARE_PPARE8_Pos (8UL) /*!< PPARE8 (Bit 8) */ + #define R_PSCU_PPARE_PPARE8_Msk (0x100UL) /*!< PPARE8 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PPARE_PPARE9_Pos (9UL) /*!< PPARE9 (Bit 9) */ + #define R_PSCU_PPARE_PPARE9_Msk (0x200UL) /*!< PPARE9 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PPARE_PPARE18_Pos (18UL) /*!< PPARE18 (Bit 18) */ + #define R_PSCU_PPARE_PPARE18_Msk (0x40000UL) /*!< PPARE18 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PPARE_PPARE19_Pos (19UL) /*!< PPARE19 (Bit 19) */ + #define R_PSCU_PPARE_PPARE19_Msk (0x80000UL) /*!< PPARE19 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PPARE_PPARE20_Pos (20UL) /*!< PPARE20 (Bit 20) */ + #define R_PSCU_PPARE_PPARE20_Msk (0x100000UL) /*!< PPARE20 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PPARE_PPARE21_Pos (21UL) /*!< PPARE21 (Bit 21) */ + #define R_PSCU_PPARE_PPARE21_Msk (0x200000UL) /*!< PPARE21 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PPARE_PPARE22_Pos (22UL) /*!< PPARE22 (Bit 22) */ + #define R_PSCU_PPARE_PPARE22_Msk (0x400000UL) /*!< PPARE22 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PPARE_PPARE23_Pos (23UL) /*!< PPARE23 (Bit 23) */ + #define R_PSCU_PPARE_PPARE23_Msk (0x800000UL) /*!< PPARE23 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PPARE_PPARE24_Pos (24UL) /*!< PPARE24 (Bit 24) */ + #define R_PSCU_PPARE_PPARE24_Msk (0x1000000UL) /*!< PPARE24 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PPARE_PPARE25_Pos (25UL) /*!< PPARE25 (Bit 25) */ + #define R_PSCU_PPARE_PPARE25_Msk (0x2000000UL) /*!< PPARE25 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PPARE_PPARE26_Pos (26UL) /*!< PPARE26 (Bit 26) */ + #define R_PSCU_PPARE_PPARE26_Msk (0x4000000UL) /*!< PPARE26 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PPARE_PPARE27_Pos (27UL) /*!< PPARE27 (Bit 27) */ + #define R_PSCU_PPARE_PPARE27_Msk (0x8000000UL) /*!< PPARE27 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PPARE_PPARE28_Pos (28UL) /*!< PPARE28 (Bit 28) */ + #define R_PSCU_PPARE_PPARE28_Msk (0x10000000UL) /*!< PPARE28 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PPARE_PPARE29_Pos (29UL) /*!< PPARE29 (Bit 29) */ + #define R_PSCU_PPARE_PPARE29_Msk (0x20000000UL) /*!< PPARE29 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PPARE_PPARE30_Pos (30UL) /*!< PPARE30 (Bit 30) */ + #define R_PSCU_PPARE_PPARE30_Msk (0x40000000UL) /*!< PPARE30 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PPARE_PPARE31_Pos (31UL) /*!< PPARE31 (Bit 31) */ + #define R_PSCU_PPARE_PPARE31_Msk (0x80000000UL) /*!< PPARE31 (Bitfield-Mask: 0x01) */ +/* ========================================================= MSPAR ========================================================= */ + #define R_PSCU_MSPAR_MSPAR31_Pos (31UL) /*!< MSPAR31 (Bit 31) */ + #define R_PSCU_MSPAR_MSPAR31_Msk (0x80000000UL) /*!< MSPAR31 (Bitfield-Mask: 0x01) */ +/* ======================================================= CFSAMONA ======================================================== */ + #define R_PSCU_CFSAMONA_CFS2_Pos (15UL) /*!< CFS2 (Bit 15) */ + #define R_PSCU_CFSAMONA_CFS2_Msk (0xff8000UL) /*!< CFS2 (Bitfield-Mask: 0x1ff) */ +/* ======================================================== DFSAMON ======================================================== */ + #define R_PSCU_DFSAMON_DFS_Pos (10UL) /*!< DFS (Bit 10) */ + #define R_PSCU_DFSAMON_DFS_Msk (0xfc00UL) /*!< DFS (Bitfield-Mask: 0x3f) */ +/* ======================================================== DLMMON ========================================================= */ + #define R_PSCU_DLMMON_DLMMON_Pos (0UL) /*!< DLMMON (Bit 0) */ + #define R_PSCU_DLMMON_DLMMON_Msk (0xfUL) /*!< DLMMON (Bitfield-Mask: 0x0f) */ + +/* =========================================================================================================================== */ +/* ================ R_BUS ================ */ +/* =========================================================================================================================== */ + +/* ======================================================== CSRECEN ======================================================== */ + #define R_BUS_CSRECEN_RCVENM_Pos (8UL) /*!< RCVENM (Bit 8) */ + #define R_BUS_CSRECEN_RCVENM_Msk (0x100UL) /*!< RCVENM (Bitfield-Mask: 0x01) */ + #define R_BUS_CSRECEN_RCVEN_Pos (0UL) /*!< RCVEN (Bit 0) */ + #define R_BUS_CSRECEN_RCVEN_Msk (0x1UL) /*!< RCVEN (Bitfield-Mask: 0x01) */ +/* ======================================================== BUSMABT ======================================================== */ + #define R_BUS_BUSMABT_ARBS_Pos (0UL) /*!< ARBS (Bit 0) */ + #define R_BUS_BUSMABT_ARBS_Msk (0x1UL) /*!< ARBS (Bitfield-Mask: 0x01) */ +/* ======================================================= BUSDIVBYP ======================================================= */ + #define R_BUS_BUSDIVBYP_CPU0SBPE_Pos (16UL) /*!< CPU0SBPE (Bit 16) */ + #define R_BUS_BUSDIVBYP_CPU0SBPE_Msk (0x10000UL) /*!< CPU0SBPE (Bitfield-Mask: 0x01) */ + #define R_BUS_BUSDIVBYP_GDSSBPE_Pos (3UL) /*!< GDSSBPE (Bit 3) */ + #define R_BUS_BUSDIVBYP_GDSSBPE_Msk (0x8UL) /*!< GDSSBPE (Bitfield-Mask: 0x01) */ + #define R_BUS_BUSDIVBYP_EDMABPE_Pos (0UL) /*!< EDMABPE (Bit 0) */ + #define R_BUS_BUSDIVBYP_EDMABPE_Msk (0x1UL) /*!< EDMABPE (Bitfield-Mask: 0x01) */ + +/* =========================================================================================================================== */ +/* ================ R_CAC ================ */ +/* =========================================================================================================================== */ + +/* ========================================================= CACR0 ========================================================= */ + #define R_CAC_CACR0_CFME_Pos (0UL) /*!< CFME (Bit 0) */ + #define R_CAC_CACR0_CFME_Msk (0x1UL) /*!< CFME (Bitfield-Mask: 0x01) */ +/* ========================================================= CACR1 ========================================================= */ + #define R_CAC_CACR1_EDGES_Pos (6UL) /*!< EDGES (Bit 6) */ + #define R_CAC_CACR1_EDGES_Msk (0xc0UL) /*!< EDGES (Bitfield-Mask: 0x03) */ + #define R_CAC_CACR1_TCSS_Pos (4UL) /*!< TCSS (Bit 4) */ + #define R_CAC_CACR1_TCSS_Msk (0x30UL) /*!< TCSS (Bitfield-Mask: 0x03) */ + #define R_CAC_CACR1_FMCS_Pos (1UL) /*!< FMCS (Bit 1) */ + #define R_CAC_CACR1_FMCS_Msk (0xeUL) /*!< FMCS (Bitfield-Mask: 0x07) */ + #define R_CAC_CACR1_CACREFE_Pos (0UL) /*!< CACREFE (Bit 0) */ + #define R_CAC_CACR1_CACREFE_Msk (0x1UL) /*!< CACREFE (Bitfield-Mask: 0x01) */ +/* ========================================================= CACR2 ========================================================= */ + #define R_CAC_CACR2_DFS_Pos (6UL) /*!< DFS (Bit 6) */ + #define R_CAC_CACR2_DFS_Msk (0xc0UL) /*!< DFS (Bitfield-Mask: 0x03) */ + #define R_CAC_CACR2_RCDS_Pos (4UL) /*!< RCDS (Bit 4) */ + #define R_CAC_CACR2_RCDS_Msk (0x30UL) /*!< RCDS (Bitfield-Mask: 0x03) */ + #define R_CAC_CACR2_RSCS_Pos (1UL) /*!< RSCS (Bit 1) */ + #define R_CAC_CACR2_RSCS_Msk (0xeUL) /*!< RSCS (Bitfield-Mask: 0x07) */ + #define R_CAC_CACR2_RPS_Pos (0UL) /*!< RPS (Bit 0) */ + #define R_CAC_CACR2_RPS_Msk (0x1UL) /*!< RPS (Bitfield-Mask: 0x01) */ +/* ========================================================= CAICR ========================================================= */ + #define R_CAC_CAICR_OVFFCL_Pos (6UL) /*!< OVFFCL (Bit 6) */ + #define R_CAC_CAICR_OVFFCL_Msk (0x40UL) /*!< OVFFCL (Bitfield-Mask: 0x01) */ + #define R_CAC_CAICR_MENDFCL_Pos (5UL) /*!< MENDFCL (Bit 5) */ + #define R_CAC_CAICR_MENDFCL_Msk (0x20UL) /*!< MENDFCL (Bitfield-Mask: 0x01) */ + #define R_CAC_CAICR_FERRFCL_Pos (4UL) /*!< FERRFCL (Bit 4) */ + #define R_CAC_CAICR_FERRFCL_Msk (0x10UL) /*!< FERRFCL (Bitfield-Mask: 0x01) */ + #define R_CAC_CAICR_OVFIE_Pos (2UL) /*!< OVFIE (Bit 2) */ + #define R_CAC_CAICR_OVFIE_Msk (0x4UL) /*!< OVFIE (Bitfield-Mask: 0x01) */ + #define R_CAC_CAICR_MENDIE_Pos (1UL) /*!< MENDIE (Bit 1) */ + #define R_CAC_CAICR_MENDIE_Msk (0x2UL) /*!< MENDIE (Bitfield-Mask: 0x01) */ + #define R_CAC_CAICR_FERRIE_Pos (0UL) /*!< FERRIE (Bit 0) */ + #define R_CAC_CAICR_FERRIE_Msk (0x1UL) /*!< FERRIE (Bitfield-Mask: 0x01) */ +/* ========================================================= CASTR ========================================================= */ + #define R_CAC_CASTR_OVFF_Pos (2UL) /*!< OVFF (Bit 2) */ + #define R_CAC_CASTR_OVFF_Msk (0x4UL) /*!< OVFF (Bitfield-Mask: 0x01) */ + #define R_CAC_CASTR_MENDF_Pos (1UL) /*!< MENDF (Bit 1) */ + #define R_CAC_CASTR_MENDF_Msk (0x2UL) /*!< MENDF (Bitfield-Mask: 0x01) */ + #define R_CAC_CASTR_FERRF_Pos (0UL) /*!< FERRF (Bit 0) */ + #define R_CAC_CASTR_FERRF_Msk (0x1UL) /*!< FERRF (Bitfield-Mask: 0x01) */ +/* ======================================================== CAULVR ========================================================= */ + #define R_CAC_CAULVR_CAULVR_Pos (0UL) /*!< CAULVR (Bit 0) */ + #define R_CAC_CAULVR_CAULVR_Msk (0xffffUL) /*!< CAULVR (Bitfield-Mask: 0xffff) */ +/* ======================================================== CALLVR ========================================================= */ + #define R_CAC_CALLVR_CALLVR_Pos (0UL) /*!< CALLVR (Bit 0) */ + #define R_CAC_CALLVR_CALLVR_Msk (0xffffUL) /*!< CALLVR (Bitfield-Mask: 0xffff) */ +/* ======================================================== CACNTBR ======================================================== */ + #define R_CAC_CACNTBR_CACNTBR_Pos (0UL) /*!< CACNTBR (Bit 0) */ + #define R_CAC_CACNTBR_CACNTBR_Msk (0xffffUL) /*!< CACNTBR (Bitfield-Mask: 0xffff) */ + +/* =========================================================================================================================== */ +/* ================ R_CANFD0 ================ */ +/* =========================================================================================================================== */ + +/* ======================================================== CFDGCFG ======================================================== */ + #define R_CANFD_CFDGCFG_TPRI_Pos (0UL) /*!< TPRI (Bit 0) */ + #define R_CANFD_CFDGCFG_TPRI_Msk (0x1UL) /*!< TPRI (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDGCFG_DCE_Pos (1UL) /*!< DCE (Bit 1) */ + #define R_CANFD_CFDGCFG_DCE_Msk (0x2UL) /*!< DCE (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDGCFG_DRE_Pos (2UL) /*!< DRE (Bit 2) */ + #define R_CANFD_CFDGCFG_DRE_Msk (0x4UL) /*!< DRE (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDGCFG_MME_Pos (3UL) /*!< MME (Bit 3) */ + #define R_CANFD_CFDGCFG_MME_Msk (0x8UL) /*!< MME (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDGCFG_DCS_Pos (4UL) /*!< DCS (Bit 4) */ + #define R_CANFD_CFDGCFG_DCS_Msk (0x10UL) /*!< DCS (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDGCFG_CMPOC_Pos (5UL) /*!< CMPOC (Bit 5) */ + #define R_CANFD_CFDGCFG_CMPOC_Msk (0x20UL) /*!< CMPOC (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDGCFG_TSP_Pos (8UL) /*!< TSP (Bit 8) */ + #define R_CANFD_CFDGCFG_TSP_Msk (0xf00UL) /*!< TSP (Bitfield-Mask: 0x0f) */ + #define R_CANFD_CFDGCFG_TSSS_Pos (12UL) /*!< TSSS (Bit 12) */ + #define R_CANFD_CFDGCFG_TSSS_Msk (0x1000UL) /*!< TSSS (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDGCFG_ITRCP_Pos (16UL) /*!< ITRCP (Bit 16) */ + #define R_CANFD_CFDGCFG_ITRCP_Msk (0xffff0000UL) /*!< ITRCP (Bitfield-Mask: 0xffff) */ +/* ======================================================== CFDGCTR ======================================================== */ + #define R_CANFD_CFDGCTR_GMDC_Pos (0UL) /*!< GMDC (Bit 0) */ + #define R_CANFD_CFDGCTR_GMDC_Msk (0x3UL) /*!< GMDC (Bitfield-Mask: 0x03) */ + #define R_CANFD_CFDGCTR_GSLPR_Pos (2UL) /*!< GSLPR (Bit 2) */ + #define R_CANFD_CFDGCTR_GSLPR_Msk (0x4UL) /*!< GSLPR (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDGCTR_DEIE_Pos (8UL) /*!< DEIE (Bit 8) */ + #define R_CANFD_CFDGCTR_DEIE_Msk (0x100UL) /*!< DEIE (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDGCTR_MEIE_Pos (9UL) /*!< MEIE (Bit 9) */ + #define R_CANFD_CFDGCTR_MEIE_Msk (0x200UL) /*!< MEIE (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDGCTR_THLEIE_Pos (10UL) /*!< THLEIE (Bit 10) */ + #define R_CANFD_CFDGCTR_THLEIE_Msk (0x400UL) /*!< THLEIE (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDGCTR_CMPOFIE_Pos (11UL) /*!< CMPOFIE (Bit 11) */ + #define R_CANFD_CFDGCTR_CMPOFIE_Msk (0x800UL) /*!< CMPOFIE (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDGCTR_TSRST_Pos (16UL) /*!< TSRST (Bit 16) */ + #define R_CANFD_CFDGCTR_TSRST_Msk (0x10000UL) /*!< TSRST (Bitfield-Mask: 0x01) */ +/* ======================================================== CFDGSTS ======================================================== */ + #define R_CANFD_CFDGSTS_GRSTSTS_Pos (0UL) /*!< GRSTSTS (Bit 0) */ + #define R_CANFD_CFDGSTS_GRSTSTS_Msk (0x1UL) /*!< GRSTSTS (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDGSTS_GHLTSTS_Pos (1UL) /*!< GHLTSTS (Bit 1) */ + #define R_CANFD_CFDGSTS_GHLTSTS_Msk (0x2UL) /*!< GHLTSTS (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDGSTS_GSLPSTS_Pos (2UL) /*!< GSLPSTS (Bit 2) */ + #define R_CANFD_CFDGSTS_GSLPSTS_Msk (0x4UL) /*!< GSLPSTS (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDGSTS_GRAMINIT_Pos (3UL) /*!< GRAMINIT (Bit 3) */ + #define R_CANFD_CFDGSTS_GRAMINIT_Msk (0x8UL) /*!< GRAMINIT (Bitfield-Mask: 0x01) */ +/* ======================================================= CFDGERFL ======================================================== */ + #define R_CANFD_CFDGERFL_DEF_Pos (0UL) /*!< DEF (Bit 0) */ + #define R_CANFD_CFDGERFL_DEF_Msk (0x1UL) /*!< DEF (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDGERFL_MES_Pos (1UL) /*!< MES (Bit 1) */ + #define R_CANFD_CFDGERFL_MES_Msk (0x2UL) /*!< MES (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDGERFL_THLES_Pos (2UL) /*!< THLES (Bit 2) */ + #define R_CANFD_CFDGERFL_THLES_Msk (0x4UL) /*!< THLES (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDGERFL_CMPOF_Pos (3UL) /*!< CMPOF (Bit 3) */ + #define R_CANFD_CFDGERFL_CMPOF_Msk (0x8UL) /*!< CMPOF (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDGERFL_EEF0_Pos (16UL) /*!< EEF0 (Bit 16) */ + #define R_CANFD_CFDGERFL_EEF0_Msk (0x10000UL) /*!< EEF0 (Bitfield-Mask: 0x01) */ +/* ======================================================== CFDGTSC ======================================================== */ + #define R_CANFD_CFDGTSC_TS_Pos (0UL) /*!< TS (Bit 0) */ + #define R_CANFD_CFDGTSC_TS_Msk (0xffffUL) /*!< TS (Bitfield-Mask: 0xffff) */ +/* ====================================================== CFDGAFLECTR ====================================================== */ + #define R_CANFD_CFDGAFLECTR_AFLPN_Pos (0UL) /*!< AFLPN (Bit 0) */ + #define R_CANFD_CFDGAFLECTR_AFLPN_Msk (0xfUL) /*!< AFLPN (Bitfield-Mask: 0x0f) */ + #define R_CANFD_CFDGAFLECTR_AFLDAE_Pos (8UL) /*!< AFLDAE (Bit 8) */ + #define R_CANFD_CFDGAFLECTR_AFLDAE_Msk (0x100UL) /*!< AFLDAE (Bitfield-Mask: 0x01) */ +/* ====================================================== CFDGAFLCFG0 ====================================================== */ + #define R_CANFD_CFDGAFLCFG0_RNC1_Pos (0UL) /*!< RNC1 (Bit 0) */ + #define R_CANFD_CFDGAFLCFG0_RNC1_Msk (0x1ffUL) /*!< RNC1 (Bitfield-Mask: 0x1ff) */ + #define R_CANFD_CFDGAFLCFG0_RNC0_Pos (16UL) /*!< RNC0 (Bit 16) */ + #define R_CANFD_CFDGAFLCFG0_RNC0_Msk (0x1ff0000UL) /*!< RNC0 (Bitfield-Mask: 0x1ff) */ +/* ======================================================== CFDRMNB ======================================================== */ + #define R_CANFD_CFDRMNB_NRXMB_Pos (0UL) /*!< NRXMB (Bit 0) */ + #define R_CANFD_CFDRMNB_NRXMB_Msk (0xffUL) /*!< NRXMB (Bitfield-Mask: 0xff) */ + #define R_CANFD_CFDRMNB_RMPLS_Pos (8UL) /*!< RMPLS (Bit 8) */ + #define R_CANFD_CFDRMNB_RMPLS_Msk (0x700UL) /*!< RMPLS (Bitfield-Mask: 0x07) */ +/* ======================================================= CFDRMND0 ======================================================== */ + #define R_CANFD_CFDRMND0_RMNSu_Pos (0UL) /*!< RMNSu (Bit 0) */ + #define R_CANFD_CFDRMND0_RMNSu_Msk (0xffffffffUL) /*!< RMNSu (Bitfield-Mask: 0xffffffff) */ +/* ======================================================= CFDRMIEC ======================================================== */ + #define R_CANFD_CFDRMIEC_RMIE_Pos (0UL) /*!< RMIE (Bit 0) */ + #define R_CANFD_CFDRMIEC_RMIE_Msk (0xffffffffUL) /*!< RMIE (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== CFDRFCC ======================================================== */ + #define R_CANFD_CFDRFCC_RFE_Pos (0UL) /*!< RFE (Bit 0) */ + #define R_CANFD_CFDRFCC_RFE_Msk (0x1UL) /*!< RFE (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDRFCC_RFIE_Pos (1UL) /*!< RFIE (Bit 1) */ + #define R_CANFD_CFDRFCC_RFIE_Msk (0x2UL) /*!< RFIE (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDRFCC_RFPLS_Pos (4UL) /*!< RFPLS (Bit 4) */ + #define R_CANFD_CFDRFCC_RFPLS_Msk (0x70UL) /*!< RFPLS (Bitfield-Mask: 0x07) */ + #define R_CANFD_CFDRFCC_RFDC_Pos (8UL) /*!< RFDC (Bit 8) */ + #define R_CANFD_CFDRFCC_RFDC_Msk (0x700UL) /*!< RFDC (Bitfield-Mask: 0x07) */ + #define R_CANFD_CFDRFCC_RFIM_Pos (12UL) /*!< RFIM (Bit 12) */ + #define R_CANFD_CFDRFCC_RFIM_Msk (0x1000UL) /*!< RFIM (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDRFCC_RFIGCV_Pos (13UL) /*!< RFIGCV (Bit 13) */ + #define R_CANFD_CFDRFCC_RFIGCV_Msk (0xe000UL) /*!< RFIGCV (Bitfield-Mask: 0x07) */ +/* ======================================================= CFDRFSTS ======================================================== */ + #define R_CANFD_CFDRFSTS_RFEMP_Pos (0UL) /*!< RFEMP (Bit 0) */ + #define R_CANFD_CFDRFSTS_RFEMP_Msk (0x1UL) /*!< RFEMP (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDRFSTS_RFFLL_Pos (1UL) /*!< RFFLL (Bit 1) */ + #define R_CANFD_CFDRFSTS_RFFLL_Msk (0x2UL) /*!< RFFLL (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDRFSTS_RFMLT_Pos (2UL) /*!< RFMLT (Bit 2) */ + #define R_CANFD_CFDRFSTS_RFMLT_Msk (0x4UL) /*!< RFMLT (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDRFSTS_RFIF_Pos (3UL) /*!< RFIF (Bit 3) */ + #define R_CANFD_CFDRFSTS_RFIF_Msk (0x8UL) /*!< RFIF (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDRFSTS_RFMC_Pos (8UL) /*!< RFMC (Bit 8) */ + #define R_CANFD_CFDRFSTS_RFMC_Msk (0xff00UL) /*!< RFMC (Bitfield-Mask: 0xff) */ +/* ======================================================= CFDRFPCTR ======================================================= */ + #define R_CANFD_CFDRFPCTR_RFPC_Pos (0UL) /*!< RFPC (Bit 0) */ + #define R_CANFD_CFDRFPCTR_RFPC_Msk (0xffUL) /*!< RFPC (Bitfield-Mask: 0xff) */ +/* ======================================================== CFDCFCC ======================================================== */ + #define R_CANFD_CFDCFCC_CFE_Pos (0UL) /*!< CFE (Bit 0) */ + #define R_CANFD_CFDCFCC_CFE_Msk (0x1UL) /*!< CFE (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDCFCC_CFRXIE_Pos (1UL) /*!< CFRXIE (Bit 1) */ + #define R_CANFD_CFDCFCC_CFRXIE_Msk (0x2UL) /*!< CFRXIE (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDCFCC_CFTXIE_Pos (2UL) /*!< CFTXIE (Bit 2) */ + #define R_CANFD_CFDCFCC_CFTXIE_Msk (0x4UL) /*!< CFTXIE (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDCFCC_CFPLS_Pos (4UL) /*!< CFPLS (Bit 4) */ + #define R_CANFD_CFDCFCC_CFPLS_Msk (0x70UL) /*!< CFPLS (Bitfield-Mask: 0x07) */ + #define R_CANFD_CFDCFCC_CFM_Pos (8UL) /*!< CFM (Bit 8) */ + #define R_CANFD_CFDCFCC_CFM_Msk (0x300UL) /*!< CFM (Bitfield-Mask: 0x03) */ + #define R_CANFD_CFDCFCC_CFITSS_Pos (10UL) /*!< CFITSS (Bit 10) */ + #define R_CANFD_CFDCFCC_CFITSS_Msk (0x400UL) /*!< CFITSS (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDCFCC_CFITR_Pos (11UL) /*!< CFITR (Bit 11) */ + #define R_CANFD_CFDCFCC_CFITR_Msk (0x800UL) /*!< CFITR (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDCFCC_CFIM_Pos (12UL) /*!< CFIM (Bit 12) */ + #define R_CANFD_CFDCFCC_CFIM_Msk (0x1000UL) /*!< CFIM (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDCFCC_CFIGCV_Pos (13UL) /*!< CFIGCV (Bit 13) */ + #define R_CANFD_CFDCFCC_CFIGCV_Msk (0xe000UL) /*!< CFIGCV (Bitfield-Mask: 0x07) */ + #define R_CANFD_CFDCFCC_CFTML_Pos (16UL) /*!< CFTML (Bit 16) */ + #define R_CANFD_CFDCFCC_CFTML_Msk (0x1f0000UL) /*!< CFTML (Bitfield-Mask: 0x1f) */ + #define R_CANFD_CFDCFCC_CFDC_Pos (21UL) /*!< CFDC (Bit 21) */ + #define R_CANFD_CFDCFCC_CFDC_Msk (0xe00000UL) /*!< CFDC (Bitfield-Mask: 0x07) */ + #define R_CANFD_CFDCFCC_CFITT_Pos (24UL) /*!< CFITT (Bit 24) */ + #define R_CANFD_CFDCFCC_CFITT_Msk (0xff000000UL) /*!< CFITT (Bitfield-Mask: 0xff) */ +/* ======================================================= CFDCFSTS ======================================================== */ + #define R_CANFD_CFDCFSTS_CFEMP_Pos (0UL) /*!< CFEMP (Bit 0) */ + #define R_CANFD_CFDCFSTS_CFEMP_Msk (0x1UL) /*!< CFEMP (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDCFSTS_CFFLL_Pos (1UL) /*!< CFFLL (Bit 1) */ + #define R_CANFD_CFDCFSTS_CFFLL_Msk (0x2UL) /*!< CFFLL (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDCFSTS_CFMLT_Pos (2UL) /*!< CFMLT (Bit 2) */ + #define R_CANFD_CFDCFSTS_CFMLT_Msk (0x4UL) /*!< CFMLT (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDCFSTS_CFRXIF_Pos (3UL) /*!< CFRXIF (Bit 3) */ + #define R_CANFD_CFDCFSTS_CFRXIF_Msk (0x8UL) /*!< CFRXIF (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDCFSTS_CFTXIF_Pos (4UL) /*!< CFTXIF (Bit 4) */ + #define R_CANFD_CFDCFSTS_CFTXIF_Msk (0x10UL) /*!< CFTXIF (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDCFSTS_CFMC_Pos (8UL) /*!< CFMC (Bit 8) */ + #define R_CANFD_CFDCFSTS_CFMC_Msk (0xff00UL) /*!< CFMC (Bitfield-Mask: 0xff) */ +/* ======================================================= CFDCFPCTR ======================================================= */ + #define R_CANFD_CFDCFPCTR_CFPC_Pos (0UL) /*!< CFPC (Bit 0) */ + #define R_CANFD_CFDCFPCTR_CFPC_Msk (0xffUL) /*!< CFPC (Bitfield-Mask: 0xff) */ +/* ======================================================= CFDFESTS ======================================================== */ + #define R_CANFD_CFDFESTS_RFXEMP_Pos (0UL) /*!< RFXEMP (Bit 0) */ + #define R_CANFD_CFDFESTS_RFXEMP_Msk (0x3UL) /*!< RFXEMP (Bitfield-Mask: 0x03) */ + #define R_CANFD_CFDFESTS_CFXEMP_Pos (8UL) /*!< CFXEMP (Bit 8) */ + #define R_CANFD_CFDFESTS_CFXEMP_Msk (0x100UL) /*!< CFXEMP (Bitfield-Mask: 0x01) */ +/* ======================================================= CFDFFSTS ======================================================== */ + #define R_CANFD_CFDFFSTS_RFXFLL_Pos (0UL) /*!< RFXFLL (Bit 0) */ + #define R_CANFD_CFDFFSTS_RFXFLL_Msk (0x3UL) /*!< RFXFLL (Bitfield-Mask: 0x03) */ + #define R_CANFD_CFDFFSTS_CFXFLL_Pos (8UL) /*!< CFXFLL (Bit 8) */ + #define R_CANFD_CFDFFSTS_CFXFLL_Msk (0x100UL) /*!< CFXFLL (Bitfield-Mask: 0x01) */ +/* ======================================================= CFDFMSTS ======================================================== */ + #define R_CANFD_CFDFMSTS_RFXMLT_Pos (0UL) /*!< RFXMLT (Bit 0) */ + #define R_CANFD_CFDFMSTS_RFXMLT_Msk (0x3UL) /*!< RFXMLT (Bitfield-Mask: 0x03) */ + #define R_CANFD_CFDFMSTS_CFXMLT_Pos (8UL) /*!< CFXMLT (Bit 8) */ + #define R_CANFD_CFDFMSTS_CFXMLT_Msk (0x100UL) /*!< CFXMLT (Bitfield-Mask: 0x01) */ +/* ======================================================= CFDRFISTS ======================================================= */ + #define R_CANFD_CFDRFISTS_RFXIF_Pos (0UL) /*!< RFXIF (Bit 0) */ + #define R_CANFD_CFDRFISTS_RFXIF_Msk (0x1UL) /*!< RFXIF (Bitfield-Mask: 0x01) */ +/* ======================================================== CFDTMC ========================================================= */ + #define R_CANFD_CFDTMC_TMTR_Pos (0UL) /*!< TMTR (Bit 0) */ + #define R_CANFD_CFDTMC_TMTR_Msk (0x1UL) /*!< TMTR (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDTMC_TMTAR_Pos (1UL) /*!< TMTAR (Bit 1) */ + #define R_CANFD_CFDTMC_TMTAR_Msk (0x2UL) /*!< TMTAR (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDTMC_TMOM_Pos (2UL) /*!< TMOM (Bit 2) */ + #define R_CANFD_CFDTMC_TMOM_Msk (0x4UL) /*!< TMOM (Bitfield-Mask: 0x01) */ +/* ======================================================= CFDTMSTS ======================================================== */ + #define R_CANFD_CFDTMSTS_TMTSTS_Pos (0UL) /*!< TMTSTS (Bit 0) */ + #define R_CANFD_CFDTMSTS_TMTSTS_Msk (0x1UL) /*!< TMTSTS (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDTMSTS_TMTRF_Pos (1UL) /*!< TMTRF (Bit 1) */ + #define R_CANFD_CFDTMSTS_TMTRF_Msk (0x6UL) /*!< TMTRF (Bitfield-Mask: 0x03) */ + #define R_CANFD_CFDTMSTS_TMTRM_Pos (3UL) /*!< TMTRM (Bit 3) */ + #define R_CANFD_CFDTMSTS_TMTRM_Msk (0x8UL) /*!< TMTRM (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDTMSTS_TMTARM_Pos (4UL) /*!< TMTARM (Bit 4) */ + #define R_CANFD_CFDTMSTS_TMTARM_Msk (0x10UL) /*!< TMTARM (Bitfield-Mask: 0x01) */ +/* ====================================================== CFDTMTRSTS ======================================================= */ + #define R_CANFD_CFDTMTRSTS_CFDTMTRSTSg_Pos (0UL) /*!< CFDTMTRSTSg (Bit 0) */ + #define R_CANFD_CFDTMTRSTS_CFDTMTRSTSg_Msk (0xfUL) /*!< CFDTMTRSTSg (Bitfield-Mask: 0x0f) */ +/* ====================================================== CFDTMTARSTS ====================================================== */ + #define R_CANFD_CFDTMTARSTS_CFDTMTARSTSg_Pos (0UL) /*!< CFDTMTARSTSg (Bit 0) */ + #define R_CANFD_CFDTMTARSTS_CFDTMTARSTSg_Msk (0xfUL) /*!< CFDTMTARSTSg (Bitfield-Mask: 0x0f) */ +/* ====================================================== CFDTMTCSTS ======================================================= */ + #define R_CANFD_CFDTMTCSTS_CFDTMTCSTSg_Pos (0UL) /*!< CFDTMTCSTSg (Bit 0) */ + #define R_CANFD_CFDTMTCSTS_CFDTMTCSTSg_Msk (0xfUL) /*!< CFDTMTCSTSg (Bitfield-Mask: 0x0f) */ +/* ====================================================== CFDTMTASTS ======================================================= */ + #define R_CANFD_CFDTMTASTS_CFDTMTASTSg_Pos (0UL) /*!< CFDTMTASTSg (Bit 0) */ + #define R_CANFD_CFDTMTASTS_CFDTMTASTSg_Msk (0xfUL) /*!< CFDTMTASTSg (Bitfield-Mask: 0x0f) */ +/* ======================================================= CFDTMIEC ======================================================== */ + #define R_CANFD_CFDTMIEC_TMIEg_Pos (0UL) /*!< TMIEg (Bit 0) */ + #define R_CANFD_CFDTMIEC_TMIEg_Msk (0xfUL) /*!< TMIEg (Bitfield-Mask: 0x0f) */ +/* ======================================================= CFDTXQCC0 ======================================================= */ + #define R_CANFD_CFDTXQCC0_TXQE_Pos (0UL) /*!< TXQE (Bit 0) */ + #define R_CANFD_CFDTXQCC0_TXQE_Msk (0x1UL) /*!< TXQE (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDTXQCC0_TXQTXIE_Pos (5UL) /*!< TXQTXIE (Bit 5) */ + #define R_CANFD_CFDTXQCC0_TXQTXIE_Msk (0x20UL) /*!< TXQTXIE (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDTXQCC0_TXQIM_Pos (7UL) /*!< TXQIM (Bit 7) */ + #define R_CANFD_CFDTXQCC0_TXQIM_Msk (0x80UL) /*!< TXQIM (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDTXQCC0_TXQDC_Pos (8UL) /*!< TXQDC (Bit 8) */ + #define R_CANFD_CFDTXQCC0_TXQDC_Msk (0x300UL) /*!< TXQDC (Bitfield-Mask: 0x03) */ +/* ====================================================== CFDTXQSTS0 ======================================================= */ + #define R_CANFD_CFDTXQSTS0_TXQEMP_Pos (0UL) /*!< TXQEMP (Bit 0) */ + #define R_CANFD_CFDTXQSTS0_TXQEMP_Msk (0x1UL) /*!< TXQEMP (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDTXQSTS0_TXQFLL_Pos (1UL) /*!< TXQFLL (Bit 1) */ + #define R_CANFD_CFDTXQSTS0_TXQFLL_Msk (0x2UL) /*!< TXQFLL (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDTXQSTS0_TXQTXIF_Pos (2UL) /*!< TXQTXIF (Bit 2) */ + #define R_CANFD_CFDTXQSTS0_TXQTXIF_Msk (0x4UL) /*!< TXQTXIF (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDTXQSTS0_TXQMC_Pos (8UL) /*!< TXQMC (Bit 8) */ + #define R_CANFD_CFDTXQSTS0_TXQMC_Msk (0x3f00UL) /*!< TXQMC (Bitfield-Mask: 0x3f) */ +/* ====================================================== CFDTXQPCTR0 ====================================================== */ + #define R_CANFD_CFDTXQPCTR0_TXQPC_Pos (0UL) /*!< TXQPC (Bit 0) */ + #define R_CANFD_CFDTXQPCTR0_TXQPC_Msk (0xffUL) /*!< TXQPC (Bitfield-Mask: 0xff) */ +/* ======================================================= CFDTHLCC ======================================================== */ + #define R_CANFD_CFDTHLCC_THLE_Pos (0UL) /*!< THLE (Bit 0) */ + #define R_CANFD_CFDTHLCC_THLE_Msk (0x1UL) /*!< THLE (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDTHLCC_THLIE_Pos (8UL) /*!< THLIE (Bit 8) */ + #define R_CANFD_CFDTHLCC_THLIE_Msk (0x100UL) /*!< THLIE (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDTHLCC_THLIM_Pos (9UL) /*!< THLIM (Bit 9) */ + #define R_CANFD_CFDTHLCC_THLIM_Msk (0x200UL) /*!< THLIM (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDTHLCC_THLDTE_Pos (10UL) /*!< THLDTE (Bit 10) */ + #define R_CANFD_CFDTHLCC_THLDTE_Msk (0x400UL) /*!< THLDTE (Bitfield-Mask: 0x01) */ +/* ======================================================= CFDTHLSTS ======================================================= */ + #define R_CANFD_CFDTHLSTS_THLEMP_Pos (0UL) /*!< THLEMP (Bit 0) */ + #define R_CANFD_CFDTHLSTS_THLEMP_Msk (0x1UL) /*!< THLEMP (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDTHLSTS_THLFLL_Pos (1UL) /*!< THLFLL (Bit 1) */ + #define R_CANFD_CFDTHLSTS_THLFLL_Msk (0x2UL) /*!< THLFLL (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDTHLSTS_THLELT_Pos (2UL) /*!< THLELT (Bit 2) */ + #define R_CANFD_CFDTHLSTS_THLELT_Msk (0x4UL) /*!< THLELT (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDTHLSTS_THLIF_Pos (3UL) /*!< THLIF (Bit 3) */ + #define R_CANFD_CFDTHLSTS_THLIF_Msk (0x8UL) /*!< THLIF (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDTHLSTS_THLMC_Pos (8UL) /*!< THLMC (Bit 8) */ + #define R_CANFD_CFDTHLSTS_THLMC_Msk (0x3f00UL) /*!< THLMC (Bitfield-Mask: 0x3f) */ +/* ====================================================== CFDTHLPCTR ======================================================= */ + #define R_CANFD_CFDTHLPCTR_THLPC_Pos (0UL) /*!< THLPC (Bit 0) */ + #define R_CANFD_CFDTHLPCTR_THLPC_Msk (0xffUL) /*!< THLPC (Bitfield-Mask: 0xff) */ +/* ===================================================== CFDGTINTSTS0 ====================================================== */ + #define R_CANFD_CFDGTINTSTS0_TSIF0_Pos (0UL) /*!< TSIF0 (Bit 0) */ + #define R_CANFD_CFDGTINTSTS0_TSIF0_Msk (0x1UL) /*!< TSIF0 (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDGTINTSTS0_TAIF0_Pos (1UL) /*!< TAIF0 (Bit 1) */ + #define R_CANFD_CFDGTINTSTS0_TAIF0_Msk (0x2UL) /*!< TAIF0 (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDGTINTSTS0_TQIF0_Pos (2UL) /*!< TQIF0 (Bit 2) */ + #define R_CANFD_CFDGTINTSTS0_TQIF0_Msk (0x4UL) /*!< TQIF0 (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDGTINTSTS0_CFTIF0_Pos (3UL) /*!< CFTIF0 (Bit 3) */ + #define R_CANFD_CFDGTINTSTS0_CFTIF0_Msk (0x8UL) /*!< CFTIF0 (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDGTINTSTS0_THIF0_Pos (4UL) /*!< THIF0 (Bit 4) */ + #define R_CANFD_CFDGTINTSTS0_THIF0_Msk (0x10UL) /*!< THIF0 (Bitfield-Mask: 0x01) */ +/* ====================================================== CFDGTSTCFG ======================================================= */ + #define R_CANFD_CFDGTSTCFG_RTMPS_Pos (16UL) /*!< RTMPS (Bit 16) */ + #define R_CANFD_CFDGTSTCFG_RTMPS_Msk (0x3ff0000UL) /*!< RTMPS (Bitfield-Mask: 0x3ff) */ +/* ====================================================== CFDGTSTCTR ======================================================= */ + #define R_CANFD_CFDGTSTCTR_RTME_Pos (2UL) /*!< RTME (Bit 2) */ + #define R_CANFD_CFDGTSTCTR_RTME_Msk (0x4UL) /*!< RTME (Bitfield-Mask: 0x01) */ +/* ======================================================= CFDGFDCFG ======================================================= */ + #define R_CANFD_CFDGFDCFG_RPED_Pos (0UL) /*!< RPED (Bit 0) */ + #define R_CANFD_CFDGFDCFG_RPED_Msk (0x1UL) /*!< RPED (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDGFDCFG_TSCCFG_Pos (8UL) /*!< TSCCFG (Bit 8) */ + #define R_CANFD_CFDGFDCFG_TSCCFG_Msk (0x300UL) /*!< TSCCFG (Bitfield-Mask: 0x03) */ +/* ======================================================= CFDGLOCKK ======================================================= */ + #define R_CANFD_CFDGLOCKK_LOCK_Pos (0UL) /*!< LOCK (Bit 0) */ + #define R_CANFD_CFDGLOCKK_LOCK_Msk (0xffffUL) /*!< LOCK (Bitfield-Mask: 0xffff) */ +/* ===================================================== CFDGAFLIGNENT ===================================================== */ + #define R_CANFD_CFDGAFLIGNENT_IRN_Pos (0UL) /*!< IRN (Bit 0) */ + #define R_CANFD_CFDGAFLIGNENT_IRN_Msk (0x1fUL) /*!< IRN (Bitfield-Mask: 0x1f) */ +/* ===================================================== CFDGAFLIGNCTR ===================================================== */ + #define R_CANFD_CFDGAFLIGNCTR_IREN_Pos (0UL) /*!< IREN (Bit 0) */ + #define R_CANFD_CFDGAFLIGNCTR_IREN_Msk (0x1UL) /*!< IREN (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDGAFLIGNCTR_KEY_Pos (8UL) /*!< KEY (Bit 8) */ + #define R_CANFD_CFDGAFLIGNCTR_KEY_Msk (0xff00UL) /*!< KEY (Bitfield-Mask: 0xff) */ +/* ======================================================= CFDCDTCT ======================================================== */ + #define R_CANFD_CFDCDTCT_RFDMAE0_Pos (0UL) /*!< RFDMAE0 (Bit 0) */ + #define R_CANFD_CFDCDTCT_RFDMAE0_Msk (0x1UL) /*!< RFDMAE0 (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDCDTCT_RFDMAE1_Pos (1UL) /*!< RFDMAE1 (Bit 1) */ + #define R_CANFD_CFDCDTCT_RFDMAE1_Msk (0x2UL) /*!< RFDMAE1 (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDCDTCT_CFDMAE0_Pos (8UL) /*!< CFDMAE0 (Bit 8) */ + #define R_CANFD_CFDCDTCT_CFDMAE0_Msk (0x100UL) /*!< CFDMAE0 (Bitfield-Mask: 0x01) */ +/* ======================================================= CFDCDTSTS ======================================================= */ + #define R_CANFD_CFDCDTSTS_RFDMASTS0_Pos (0UL) /*!< RFDMASTS0 (Bit 0) */ + #define R_CANFD_CFDCDTSTS_RFDMASTS0_Msk (0x1UL) /*!< RFDMASTS0 (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDCDTSTS_RFDMASTS1_Pos (1UL) /*!< RFDMASTS1 (Bit 1) */ + #define R_CANFD_CFDCDTSTS_RFDMASTS1_Msk (0x2UL) /*!< RFDMASTS1 (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDCDTSTS_CFDMASTS0_Pos (8UL) /*!< CFDMASTS0 (Bit 8) */ + #define R_CANFD_CFDCDTSTS_CFDMASTS0_Msk (0x100UL) /*!< CFDMASTS0 (Bitfield-Mask: 0x01) */ +/* ======================================================= CFDGRSTC ======================================================== */ + #define R_CANFD_CFDGRSTC_SRST_Pos (0UL) /*!< SRST (Bit 0) */ + #define R_CANFD_CFDGRSTC_SRST_Msk (0x1UL) /*!< SRST (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDGRSTC_KEY_Pos (8UL) /*!< KEY (Bit 8) */ + #define R_CANFD_CFDGRSTC_KEY_Msk (0xff00UL) /*!< KEY (Bitfield-Mask: 0xff) */ +/* ======================================================= CFDRPGACC ======================================================= */ + #define R_CANFD_CFDRPGACC_RDTA_Pos (0UL) /*!< RDTA (Bit 0) */ + #define R_CANFD_CFDRPGACC_RDTA_Msk (0xffffffffUL) /*!< RDTA (Bitfield-Mask: 0xffffffff) */ + +/* =========================================================================================================================== */ +/* ================ R_CRC ================ */ +/* =========================================================================================================================== */ + +/* ======================================================== CRCCR0 ========================================================= */ + #define R_CRC_CRCCR0_DORCLR_Pos (7UL) /*!< DORCLR (Bit 7) */ + #define R_CRC_CRCCR0_DORCLR_Msk (0x80UL) /*!< DORCLR (Bitfield-Mask: 0x01) */ + #define R_CRC_CRCCR0_LMS_Pos (6UL) /*!< LMS (Bit 6) */ + #define R_CRC_CRCCR0_LMS_Msk (0x40UL) /*!< LMS (Bitfield-Mask: 0x01) */ + #define R_CRC_CRCCR0_GPS_Pos (0UL) /*!< GPS (Bit 0) */ + #define R_CRC_CRCCR0_GPS_Msk (0x7UL) /*!< GPS (Bitfield-Mask: 0x07) */ +/* ======================================================== CRCCR1 ========================================================= */ + #define R_CRC_CRCCR1_CRCSEN_Pos (7UL) /*!< CRCSEN (Bit 7) */ + #define R_CRC_CRCCR1_CRCSEN_Msk (0x80UL) /*!< CRCSEN (Bitfield-Mask: 0x01) */ + #define R_CRC_CRCCR1_CRCSWR_Pos (6UL) /*!< CRCSWR (Bit 6) */ + #define R_CRC_CRCCR1_CRCSWR_Msk (0x40UL) /*!< CRCSWR (Bitfield-Mask: 0x01) */ +/* ======================================================== CRCDIR ========================================================= */ + #define R_CRC_CRCDIR_CRCDIR_Pos (0UL) /*!< CRCDIR (Bit 0) */ + #define R_CRC_CRCDIR_CRCDIR_Msk (0xffffffffUL) /*!< CRCDIR (Bitfield-Mask: 0xffffffff) */ +/* ======================================================= CRCDIR_BY ======================================================= */ + #define R_CRC_CRCDIR_BY_CRCDIR_BY_Pos (0UL) /*!< CRCDIR_BY (Bit 0) */ + #define R_CRC_CRCDIR_BY_CRCDIR_BY_Msk (0xffUL) /*!< CRCDIR_BY (Bitfield-Mask: 0xff) */ +/* ======================================================== CRCDOR ========================================================= */ + #define R_CRC_CRCDOR_CRCDOR_Pos (0UL) /*!< CRCDOR (Bit 0) */ + #define R_CRC_CRCDOR_CRCDOR_Msk (0xffffffffUL) /*!< CRCDOR (Bitfield-Mask: 0xffffffff) */ +/* ======================================================= CRCDOR_HA ======================================================= */ + #define R_CRC_CRCDOR_HA_CRCDOR_HA_Pos (0UL) /*!< CRCDOR_HA (Bit 0) */ + #define R_CRC_CRCDOR_HA_CRCDOR_HA_Msk (0xffffUL) /*!< CRCDOR_HA (Bitfield-Mask: 0xffff) */ +/* ======================================================= CRCDOR_BY ======================================================= */ + #define R_CRC_CRCDOR_BY_CRCDOR_BY_Pos (0UL) /*!< CRCDOR_BY (Bit 0) */ + #define R_CRC_CRCDOR_BY_CRCDOR_BY_Msk (0xffUL) /*!< CRCDOR_BY (Bitfield-Mask: 0xff) */ +/* ======================================================== CRCSAR ========================================================= */ + #define R_CRC_CRCSAR_CRCSA_Pos (0UL) /*!< CRCSA (Bit 0) */ + #define R_CRC_CRCSAR_CRCSA_Msk (0x3fffUL) /*!< CRCSA (Bitfield-Mask: 0x3fff) */ + +/* =========================================================================================================================== */ +/* ================ R_DAC ================ */ +/* =========================================================================================================================== */ + +/* ========================================================= DACR ========================================================== */ + #define R_DAC_DACR_DAE_Pos (5UL) /*!< DAE (Bit 5) */ + #define R_DAC_DACR_DAE_Msk (0x20UL) /*!< DAE (Bitfield-Mask: 0x01) */ + #define R_DAC_DACR_DAOE_Pos (6UL) /*!< DAOE (Bit 6) */ + #define R_DAC_DACR_DAOE_Msk (0x40UL) /*!< DAOE (Bitfield-Mask: 0x01) */ +/* ========================================================= DADR ========================================================== */ + #define R_DAC_DADR_DADR_Pos (0UL) /*!< DADR (Bit 0) */ + #define R_DAC_DADR_DADR_Msk (0xffffUL) /*!< DADR (Bitfield-Mask: 0xffff) */ +/* ========================================================= DADPR ========================================================= */ + #define R_DAC_DADPR_DPSEL_Pos (7UL) /*!< DPSEL (Bit 7) */ + #define R_DAC_DADPR_DPSEL_Msk (0x80UL) /*!< DPSEL (Bitfield-Mask: 0x01) */ +/* ======================================================== DAADSCR ======================================================== */ + #define R_DAC_DAADSCR_DAADST_Pos (7UL) /*!< DAADST (Bit 7) */ + #define R_DAC_DAADSCR_DAADST_Msk (0x80UL) /*!< DAADST (Bitfield-Mask: 0x01) */ +/* ======================================================= DAVREFCR ======================================================== */ + #define R_DAC_DAVREFCR_REF_Pos (0UL) /*!< REF (Bit 0) */ + #define R_DAC_DAVREFCR_REF_Msk (0x7UL) /*!< REF (Bitfield-Mask: 0x07) */ +/* ========================================================= DAPC ========================================================== */ + #define R_DAC_DAPC_PUMPEN_Pos (0UL) /*!< PUMPEN (Bit 0) */ + #define R_DAC_DAPC_PUMPEN_Msk (0x1UL) /*!< PUMPEN (Bitfield-Mask: 0x01) */ +/* ======================================================== DAAMPCR ======================================================== */ + #define R_DAC_DAAMPCR_DAAMP_Pos (6UL) /*!< DAAMP (Bit 6) */ + #define R_DAC_DAAMPCR_DAAMP_Msk (0x40UL) /*!< DAAMP (Bitfield-Mask: 0x01) */ +/* ======================================================== DAASWCR ======================================================== */ + #define R_DAC_DAASWCR_DAASW1_Pos (7UL) /*!< DAASW1 (Bit 7) */ + #define R_DAC_DAASWCR_DAASW1_Msk (0x80UL) /*!< DAASW1 (Bitfield-Mask: 0x01) */ + #define R_DAC_DAASWCR_DAASW0_Pos (6UL) /*!< DAASW0 (Bit 6) */ + #define R_DAC_DAASWCR_DAASW0_Msk (0x40UL) /*!< DAASW0 (Bitfield-Mask: 0x01) */ +/* ======================================================== DAADUSR ======================================================== */ + #define R_DAC_DAADUSR_AMADSEL0_Pos (0UL) /*!< AMADSEL0 (Bit 0) */ + #define R_DAC_DAADUSR_AMADSEL0_Msk (0x1UL) /*!< AMADSEL0 (Bitfield-Mask: 0x01) */ + #define R_DAC_DAADUSR_AMADSEL1_Pos (1UL) /*!< AMADSEL1 (Bit 1) */ + #define R_DAC_DAADUSR_AMADSEL1_Msk (0x2UL) /*!< AMADSEL1 (Bitfield-Mask: 0x01) */ + +/* =========================================================================================================================== */ +/* ================ R_DEBUG ================ */ +/* =========================================================================================================================== */ + +/* ======================================================== DBGSTR ========================================================= */ + #define R_DEBUG_DBGSTR_CDBGPWRUPREQ_Pos (28UL) /*!< CDBGPWRUPREQ (Bit 28) */ + #define R_DEBUG_DBGSTR_CDBGPWRUPREQ_Msk (0x10000000UL) /*!< CDBGPWRUPREQ (Bitfield-Mask: 0x01) */ + #define R_DEBUG_DBGSTR_CDBGPWRUPACK_Pos (29UL) /*!< CDBGPWRUPACK (Bit 29) */ + #define R_DEBUG_DBGSTR_CDBGPWRUPACK_Msk (0x20000000UL) /*!< CDBGPWRUPACK (Bitfield-Mask: 0x01) */ +/* ======================================================= DBGSTOPCR ======================================================= */ + #define R_DEBUG_DBGSTOPCR_DBGSTOP_RPER_Pos (24UL) /*!< DBGSTOP_RPER (Bit 24) */ + #define R_DEBUG_DBGSTOPCR_DBGSTOP_RPER_Msk (0x1000000UL) /*!< DBGSTOP_RPER (Bitfield-Mask: 0x01) */ + #define R_DEBUG_DBGSTOPCR_DBGSTOP_LVD_Pos (16UL) /*!< DBGSTOP_LVD (Bit 16) */ + #define R_DEBUG_DBGSTOPCR_DBGSTOP_LVD_Msk (0x10000UL) /*!< DBGSTOP_LVD (Bitfield-Mask: 0x01) */ + #define R_DEBUG_DBGSTOPCR_DBGSTOP_RECCR_Pos (25UL) /*!< DBGSTOP_RECCR (Bit 25) */ + #define R_DEBUG_DBGSTOPCR_DBGSTOP_RECCR_Msk (0x2000000UL) /*!< DBGSTOP_RECCR (Bitfield-Mask: 0x01) */ + #define R_DEBUG_DBGSTOPCR_DBGSTOP_IWDT_Pos (0UL) /*!< DBGSTOP_IWDT (Bit 0) */ + #define R_DEBUG_DBGSTOPCR_DBGSTOP_IWDT_Msk (0x1UL) /*!< DBGSTOP_IWDT (Bitfield-Mask: 0x01) */ + #define R_DEBUG_DBGSTOPCR_DBGSTOP_WDT_Pos (1UL) /*!< DBGSTOP_WDT (Bit 1) */ + #define R_DEBUG_DBGSTOPCR_DBGSTOP_WDT_Msk (0x2UL) /*!< DBGSTOP_WDT (Bitfield-Mask: 0x01) */ + #define R_DEBUG_DBGSTOPCR_DBGSTOP_CPER_Pos (31UL) /*!< DBGSTOP_CPER (Bit 31) */ + #define R_DEBUG_DBGSTOPCR_DBGSTOP_CPER_Msk (0x80000000UL) /*!< DBGSTOP_CPER (Bitfield-Mask: 0x01) */ +/* ======================================================= FSBLSTAT ======================================================== */ + #define R_DEBUG_FSBLSTAT_CS_Pos (0UL) /*!< CS (Bit 0) */ + #define R_DEBUG_FSBLSTAT_CS_Msk (0x1UL) /*!< CS (Bitfield-Mask: 0x01) */ + #define R_DEBUG_FSBLSTAT_RS_Pos (1UL) /*!< RS (Bit 1) */ + #define R_DEBUG_FSBLSTAT_RS_Msk (0x2UL) /*!< RS (Bitfield-Mask: 0x01) */ + #define R_DEBUG_FSBLSTAT_FSBLCLK_Pos (8UL) /*!< FSBLCLK (Bit 8) */ + #define R_DEBUG_FSBLSTAT_FSBLCLK_Msk (0x700UL) /*!< FSBLCLK (Bitfield-Mask: 0x07) */ + +/* =========================================================================================================================== */ +/* ================ R_DMA ================ */ +/* =========================================================================================================================== */ + +/* ========================================================= DMAST ========================================================= */ + #define R_DMA_DMAST_DMST_Pos (0UL) /*!< DMST (Bit 0) */ + #define R_DMA_DMAST_DMST_Msk (0x1UL) /*!< DMST (Bitfield-Mask: 0x01) */ +/* ======================================================== DMECHR ========================================================= */ + #define R_DMA_DMECHR_DMECH_Pos (0UL) /*!< DMECH (Bit 0) */ + #define R_DMA_DMECHR_DMECH_Msk (0x7UL) /*!< DMECH (Bitfield-Mask: 0x07) */ + #define R_DMA_DMECHR_DMECHSAM_Pos (8UL) /*!< DMECHSAM (Bit 8) */ + #define R_DMA_DMECHR_DMECHSAM_Msk (0x100UL) /*!< DMECHSAM (Bitfield-Mask: 0x01) */ + #define R_DMA_DMECHR_DMESTA_Pos (16UL) /*!< DMESTA (Bit 16) */ + #define R_DMA_DMECHR_DMESTA_Msk (0x10000UL) /*!< DMESTA (Bitfield-Mask: 0x01) */ +/* ========================================================= DELSR ========================================================= */ + #define R_DMA_DELSR_IR_Pos (16UL) /*!< IR (Bit 16) */ + #define R_DMA_DELSR_IR_Msk (0x10000UL) /*!< IR (Bitfield-Mask: 0x01) */ + #define R_DMA_DELSR_DELS_Pos (0UL) /*!< DELS (Bit 0) */ + #define R_DMA_DELSR_DELS_Msk (0x1ffUL) /*!< DELS (Bitfield-Mask: 0x1ff) */ + +/* =========================================================================================================================== */ +/* ================ R_DMAC0 ================ */ +/* =========================================================================================================================== */ + +/* ========================================================= DMSAR ========================================================= */ + #define R_DMAC0_DMSAR_DMSAR_Pos (0UL) /*!< DMSAR (Bit 0) */ + #define R_DMAC0_DMSAR_DMSAR_Msk (0xffffffffUL) /*!< DMSAR (Bitfield-Mask: 0xffffffff) */ +/* ========================================================= DMDAR ========================================================= */ + #define R_DMAC0_DMDAR_DMDAR_Pos (0UL) /*!< DMDAR (Bit 0) */ + #define R_DMAC0_DMDAR_DMDAR_Msk (0xffffffffUL) /*!< DMDAR (Bitfield-Mask: 0xffffffff) */ +/* ========================================================= DMCRA ========================================================= */ + #define R_DMAC0_DMCRA_DMCRAH_Pos (16UL) /*!< DMCRAH (Bit 16) */ + #define R_DMAC0_DMCRA_DMCRAH_Msk (0x3ff0000UL) /*!< DMCRAH (Bitfield-Mask: 0x3ff) */ + #define R_DMAC0_DMCRA_DMCRAL_Pos (0UL) /*!< DMCRAL (Bit 0) */ + #define R_DMAC0_DMCRA_DMCRAL_Msk (0xffffUL) /*!< DMCRAL (Bitfield-Mask: 0xffff) */ +/* ========================================================= DMCRB ========================================================= */ + #define R_DMAC0_DMCRB_DMCRBL_Pos (0UL) /*!< DMCRBL (Bit 0) */ + #define R_DMAC0_DMCRB_DMCRBL_Msk (0xffffUL) /*!< DMCRBL (Bitfield-Mask: 0xffff) */ + #define R_DMAC0_DMCRB_DMCRBH_Pos (16UL) /*!< DMCRBH (Bit 16) */ + #define R_DMAC0_DMCRB_DMCRBH_Msk (0xffff0000UL) /*!< DMCRBH (Bitfield-Mask: 0xffff) */ +/* ========================================================= DMTMD ========================================================= */ + #define R_DMAC0_DMTMD_MD_Pos (14UL) /*!< MD (Bit 14) */ + #define R_DMAC0_DMTMD_MD_Msk (0xc000UL) /*!< MD (Bitfield-Mask: 0x03) */ + #define R_DMAC0_DMTMD_DTS_Pos (12UL) /*!< DTS (Bit 12) */ + #define R_DMAC0_DMTMD_DTS_Msk (0x3000UL) /*!< DTS (Bitfield-Mask: 0x03) */ + #define R_DMAC0_DMTMD_SZ_Pos (8UL) /*!< SZ (Bit 8) */ + #define R_DMAC0_DMTMD_SZ_Msk (0x300UL) /*!< SZ (Bitfield-Mask: 0x03) */ + #define R_DMAC0_DMTMD_DCTG_Pos (0UL) /*!< DCTG (Bit 0) */ + #define R_DMAC0_DMTMD_DCTG_Msk (0x3UL) /*!< DCTG (Bitfield-Mask: 0x03) */ + #define R_DMAC0_DMTMD_TKP_Pos (10UL) /*!< TKP (Bit 10) */ + #define R_DMAC0_DMTMD_TKP_Msk (0x400UL) /*!< TKP (Bitfield-Mask: 0x01) */ +/* ========================================================= DMINT ========================================================= */ + #define R_DMAC0_DMINT_DTIE_Pos (4UL) /*!< DTIE (Bit 4) */ + #define R_DMAC0_DMINT_DTIE_Msk (0x10UL) /*!< DTIE (Bitfield-Mask: 0x01) */ + #define R_DMAC0_DMINT_ESIE_Pos (3UL) /*!< ESIE (Bit 3) */ + #define R_DMAC0_DMINT_ESIE_Msk (0x8UL) /*!< ESIE (Bitfield-Mask: 0x01) */ + #define R_DMAC0_DMINT_RPTIE_Pos (2UL) /*!< RPTIE (Bit 2) */ + #define R_DMAC0_DMINT_RPTIE_Msk (0x4UL) /*!< RPTIE (Bitfield-Mask: 0x01) */ + #define R_DMAC0_DMINT_SARIE_Pos (1UL) /*!< SARIE (Bit 1) */ + #define R_DMAC0_DMINT_SARIE_Msk (0x2UL) /*!< SARIE (Bitfield-Mask: 0x01) */ + #define R_DMAC0_DMINT_DARIE_Pos (0UL) /*!< DARIE (Bit 0) */ + #define R_DMAC0_DMINT_DARIE_Msk (0x1UL) /*!< DARIE (Bitfield-Mask: 0x01) */ +/* ========================================================= DMAMD ========================================================= */ + #define R_DMAC0_DMAMD_SM_Pos (14UL) /*!< SM (Bit 14) */ + #define R_DMAC0_DMAMD_SM_Msk (0xc000UL) /*!< SM (Bitfield-Mask: 0x03) */ + #define R_DMAC0_DMAMD_SARA_Pos (8UL) /*!< SARA (Bit 8) */ + #define R_DMAC0_DMAMD_SARA_Msk (0x1f00UL) /*!< SARA (Bitfield-Mask: 0x1f) */ + #define R_DMAC0_DMAMD_DM_Pos (6UL) /*!< DM (Bit 6) */ + #define R_DMAC0_DMAMD_DM_Msk (0xc0UL) /*!< DM (Bitfield-Mask: 0x03) */ + #define R_DMAC0_DMAMD_DARA_Pos (0UL) /*!< DARA (Bit 0) */ + #define R_DMAC0_DMAMD_DARA_Msk (0x1fUL) /*!< DARA (Bitfield-Mask: 0x1f) */ + #define R_DMAC0_DMAMD_DADR_Pos (5UL) /*!< DADR (Bit 5) */ + #define R_DMAC0_DMAMD_DADR_Msk (0x20UL) /*!< DADR (Bitfield-Mask: 0x01) */ + #define R_DMAC0_DMAMD_SADR_Pos (13UL) /*!< SADR (Bit 13) */ + #define R_DMAC0_DMAMD_SADR_Msk (0x2000UL) /*!< SADR (Bitfield-Mask: 0x01) */ +/* ========================================================= DMOFR ========================================================= */ + #define R_DMAC0_DMOFR_DMOFR_Pos (0UL) /*!< DMOFR (Bit 0) */ + #define R_DMAC0_DMOFR_DMOFR_Msk (0xffffffffUL) /*!< DMOFR (Bitfield-Mask: 0xffffffff) */ +/* ========================================================= DMCNT ========================================================= */ + #define R_DMAC0_DMCNT_DTE_Pos (0UL) /*!< DTE (Bit 0) */ + #define R_DMAC0_DMCNT_DTE_Msk (0x1UL) /*!< DTE (Bitfield-Mask: 0x01) */ +/* ========================================================= DMREQ ========================================================= */ + #define R_DMAC0_DMREQ_CLRS_Pos (4UL) /*!< CLRS (Bit 4) */ + #define R_DMAC0_DMREQ_CLRS_Msk (0x10UL) /*!< CLRS (Bitfield-Mask: 0x01) */ + #define R_DMAC0_DMREQ_SWREQ_Pos (0UL) /*!< SWREQ (Bit 0) */ + #define R_DMAC0_DMREQ_SWREQ_Msk (0x1UL) /*!< SWREQ (Bitfield-Mask: 0x01) */ +/* ========================================================= DMSTS ========================================================= */ + #define R_DMAC0_DMSTS_ACT_Pos (7UL) /*!< ACT (Bit 7) */ + #define R_DMAC0_DMSTS_ACT_Msk (0x80UL) /*!< ACT (Bitfield-Mask: 0x01) */ + #define R_DMAC0_DMSTS_DTIF_Pos (4UL) /*!< DTIF (Bit 4) */ + #define R_DMAC0_DMSTS_DTIF_Msk (0x10UL) /*!< DTIF (Bitfield-Mask: 0x01) */ + #define R_DMAC0_DMSTS_ESIF_Pos (0UL) /*!< ESIF (Bit 0) */ + #define R_DMAC0_DMSTS_ESIF_Msk (0x1UL) /*!< ESIF (Bitfield-Mask: 0x01) */ +/* ========================================================= DMSRR ========================================================= */ +/* ========================================================= DMDRR ========================================================= */ +/* ========================================================= DMSBS ========================================================= */ + #define R_DMAC0_DMSBS_DMSBSL_Pos (0UL) /*!< DMSBSL (Bit 0) */ + #define R_DMAC0_DMSBS_DMSBSL_Msk (0xffffUL) /*!< DMSBSL (Bitfield-Mask: 0xffff) */ + #define R_DMAC0_DMSBS_DMSBSH_Pos (16UL) /*!< DMSBSH (Bit 16) */ + #define R_DMAC0_DMSBS_DMSBSH_Msk (0xffff0000UL) /*!< DMSBSH (Bitfield-Mask: 0xffff) */ +/* ========================================================= DMDBS ========================================================= */ + #define R_DMAC0_DMDBS_DMDBSL_Pos (0UL) /*!< DMDBSL (Bit 0) */ + #define R_DMAC0_DMDBS_DMDBSL_Msk (0xffffUL) /*!< DMDBSL (Bitfield-Mask: 0xffff) */ + #define R_DMAC0_DMDBS_DMDBSH_Pos (16UL) /*!< DMDBSH (Bit 16) */ + #define R_DMAC0_DMDBS_DMDBSH_Msk (0xffff0000UL) /*!< DMDBSH (Bitfield-Mask: 0xffff) */ +/* ========================================================= DMBWR ========================================================= */ + #define R_DMAC0_DMBWR_BWE_Pos (0UL) /*!< BWE (Bit 0) */ + #define R_DMAC0_DMBWR_BWE_Msk (0x1UL) /*!< BWE (Bitfield-Mask: 0x01) */ + +/* =========================================================================================================================== */ +/* ================ R_DOC ================ */ +/* =========================================================================================================================== */ + +/* ========================================================= DOCR ========================================================== */ + #define R_DOC_DOCR_DOPCFCL_Pos (6UL) /*!< DOPCFCL (Bit 6) */ + #define R_DOC_DOCR_DOPCFCL_Msk (0x40UL) /*!< DOPCFCL (Bitfield-Mask: 0x01) */ + #define R_DOC_DOCR_DOPCF_Pos (5UL) /*!< DOPCF (Bit 5) */ + #define R_DOC_DOCR_DOPCF_Msk (0x20UL) /*!< DOPCF (Bitfield-Mask: 0x01) */ + #define R_DOC_DOCR_DCSEL_Pos (2UL) /*!< DCSEL (Bit 2) */ + #define R_DOC_DOCR_DCSEL_Msk (0x4UL) /*!< DCSEL (Bitfield-Mask: 0x01) */ + #define R_DOC_DOCR_OMS_Pos (0UL) /*!< OMS (Bit 0) */ + #define R_DOC_DOCR_OMS_Msk (0x3UL) /*!< OMS (Bitfield-Mask: 0x03) */ +/* ========================================================= DODIR ========================================================= */ + #define R_DOC_DODIR_DODIR_Pos (0UL) /*!< DODIR (Bit 0) */ + #define R_DOC_DODIR_DODIR_Msk (0xffffUL) /*!< DODIR (Bitfield-Mask: 0xffff) */ +/* ========================================================= DODSR ========================================================= */ + #define R_DOC_DODSR_DODSR_Pos (0UL) /*!< DODSR (Bit 0) */ + #define R_DOC_DODSR_DODSR_Msk (0xffffUL) /*!< DODSR (Bitfield-Mask: 0xffff) */ + +/* =========================================================================================================================== */ +/* ================ R_DTC ================ */ +/* =========================================================================================================================== */ + +/* ========================================================= DTCCR ========================================================= */ + #define R_DTC_DTCCR_RRS_Pos (4UL) /*!< RRS (Bit 4) */ + #define R_DTC_DTCCR_RRS_Msk (0x10UL) /*!< RRS (Bitfield-Mask: 0x01) */ +/* ======================================================== DTCVBR ========================================================= */ + #define R_DTC_DTCVBR_DTCVBR_Pos (0UL) /*!< DTCVBR (Bit 0) */ + #define R_DTC_DTCVBR_DTCVBR_Msk (0xffffffffUL) /*!< DTCVBR (Bitfield-Mask: 0xffffffff) */ +/* ========================================================= DTCST ========================================================= */ + #define R_DTC_DTCST_DTCST_Pos (0UL) /*!< DTCST (Bit 0) */ + #define R_DTC_DTCST_DTCST_Msk (0x1UL) /*!< DTCST (Bitfield-Mask: 0x01) */ +/* ======================================================== DTCSTS ========================================================= */ + #define R_DTC_DTCSTS_ACT_Pos (15UL) /*!< ACT (Bit 15) */ + #define R_DTC_DTCSTS_ACT_Msk (0x8000UL) /*!< ACT (Bitfield-Mask: 0x01) */ + #define R_DTC_DTCSTS_VECN_Pos (0UL) /*!< VECN (Bit 0) */ + #define R_DTC_DTCSTS_VECN_Msk (0xffUL) /*!< VECN (Bitfield-Mask: 0xff) */ +/* ======================================================= DTCCR_SEC ======================================================= */ + #define R_DTC_DTCCR_SEC_RRSS_Pos (4UL) /*!< RRSS (Bit 4) */ + #define R_DTC_DTCCR_SEC_RRSS_Msk (0x10UL) /*!< RRSS (Bitfield-Mask: 0x01) */ +/* ====================================================== DTCVBR_SEC ======================================================= */ +/* ========================================================= DTEVR ========================================================= */ + #define R_DTC_DTEVR_DTEV_Pos (0UL) /*!< DTEV (Bit 0) */ + #define R_DTC_DTEVR_DTEV_Msk (0xffUL) /*!< DTEV (Bitfield-Mask: 0xff) */ + #define R_DTC_DTEVR_DTEVSAM_Pos (8UL) /*!< DTEVSAM (Bit 8) */ + #define R_DTC_DTEVR_DTEVSAM_Msk (0x100UL) /*!< DTEVSAM (Bitfield-Mask: 0x01) */ + #define R_DTC_DTEVR_DTESTA_Pos (16UL) /*!< DTESTA (Bit 16) */ + #define R_DTC_DTEVR_DTESTA_Msk (0x10000UL) /*!< DTESTA (Bitfield-Mask: 0x01) */ + +/* =========================================================================================================================== */ +/* ================ R_ELC ================ */ +/* =========================================================================================================================== */ + +/* ========================================================= ELCR ========================================================== */ + #define R_ELC_ELCR_ELCON_Pos (7UL) /*!< ELCON (Bit 7) */ + #define R_ELC_ELCR_ELCON_Msk (0x80UL) /*!< ELCON (Bitfield-Mask: 0x01) */ +/* ======================================================== ELCSARA ======================================================== */ + #define R_ELC_ELCSARA_ELCR_Pos (0UL) /*!< ELCR (Bit 0) */ + #define R_ELC_ELCSARA_ELCR_Msk (0x1UL) /*!< ELCR (Bitfield-Mask: 0x01) */ + #define R_ELC_ELCSARA_ELSEGR0_Pos (1UL) /*!< ELSEGR0 (Bit 1) */ + #define R_ELC_ELCSARA_ELSEGR0_Msk (0x2UL) /*!< ELSEGR0 (Bitfield-Mask: 0x01) */ + #define R_ELC_ELCSARA_ELSEGR1_Pos (2UL) /*!< ELSEGR1 (Bit 2) */ + #define R_ELC_ELCSARA_ELSEGR1_Msk (0x4UL) /*!< ELSEGR1 (Bitfield-Mask: 0x01) */ +/* ======================================================== ELCSARB ======================================================== */ + #define R_ELC_ELCSARB_ELSR_Pos (0UL) /*!< ELSR (Bit 0) */ + #define R_ELC_ELCSARB_ELSR_Msk (0x1UL) /*!< ELSR (Bitfield-Mask: 0x01) */ + #define R_ELC_ELCSARB_ELSR30_Pos (30UL) /*!< ELSR30 (Bit 30) */ + #define R_ELC_ELCSARB_ELSR30_Msk (0x40000000UL) /*!< ELSR30 (Bitfield-Mask: 0x01) */ +/* ======================================================== ELCPARA ======================================================== */ + #define R_ELC_ELCPARA_ELCR_Pos (0UL) /*!< ELCR (Bit 0) */ + #define R_ELC_ELCPARA_ELCR_Msk (0x1UL) /*!< ELCR (Bitfield-Mask: 0x01) */ + #define R_ELC_ELCPARA_ELSEGR0_Pos (1UL) /*!< ELSEGR0 (Bit 1) */ + #define R_ELC_ELCPARA_ELSEGR0_Msk (0x2UL) /*!< ELSEGR0 (Bitfield-Mask: 0x01) */ + #define R_ELC_ELCPARA_ELSEGR1_Pos (2UL) /*!< ELSEGR1 (Bit 2) */ + #define R_ELC_ELCPARA_ELSEGR1_Msk (0x4UL) /*!< ELSEGR1 (Bitfield-Mask: 0x01) */ +/* ======================================================== ELCPARB ======================================================== */ + #define R_ELC_ELCPARB_ELSR_Pos (0UL) /*!< ELSR (Bit 0) */ + #define R_ELC_ELCPARB_ELSR_Msk (0x1UL) /*!< ELSR (Bitfield-Mask: 0x01) */ + #define R_ELC_ELCPARB_ELSR30_Pos (30UL) /*!< ELSR30 (Bit 30) */ + #define R_ELC_ELCPARB_ELSR30_Msk (0x40000000UL) /*!< ELSR30 (Bitfield-Mask: 0x01) */ + +/* =========================================================================================================================== */ +/* ================ R_ETHERC0 ================ */ +/* =========================================================================================================================== */ + +/* ========================================================= ECMR ========================================================== */ + #define R_ETHERC0_ECMR_TPC_Pos (20UL) /*!< TPC (Bit 20) */ + #define R_ETHERC0_ECMR_TPC_Msk (0x100000UL) /*!< TPC (Bitfield-Mask: 0x01) */ + #define R_ETHERC0_ECMR_ZPF_Pos (19UL) /*!< ZPF (Bit 19) */ + #define R_ETHERC0_ECMR_ZPF_Msk (0x80000UL) /*!< ZPF (Bitfield-Mask: 0x01) */ + #define R_ETHERC0_ECMR_PFR_Pos (18UL) /*!< PFR (Bit 18) */ + #define R_ETHERC0_ECMR_PFR_Msk (0x40000UL) /*!< PFR (Bitfield-Mask: 0x01) */ + #define R_ETHERC0_ECMR_RXF_Pos (17UL) /*!< RXF (Bit 17) */ + #define R_ETHERC0_ECMR_RXF_Msk (0x20000UL) /*!< RXF (Bitfield-Mask: 0x01) */ + #define R_ETHERC0_ECMR_TXF_Pos (16UL) /*!< TXF (Bit 16) */ + #define R_ETHERC0_ECMR_TXF_Msk (0x10000UL) /*!< TXF (Bitfield-Mask: 0x01) */ + #define R_ETHERC0_ECMR_PRCEF_Pos (12UL) /*!< PRCEF (Bit 12) */ + #define R_ETHERC0_ECMR_PRCEF_Msk (0x1000UL) /*!< PRCEF (Bitfield-Mask: 0x01) */ + #define R_ETHERC0_ECMR_MPDE_Pos (9UL) /*!< MPDE (Bit 9) */ + #define R_ETHERC0_ECMR_MPDE_Msk (0x200UL) /*!< MPDE (Bitfield-Mask: 0x01) */ + #define R_ETHERC0_ECMR_RE_Pos (6UL) /*!< RE (Bit 6) */ + #define R_ETHERC0_ECMR_RE_Msk (0x40UL) /*!< RE (Bitfield-Mask: 0x01) */ + #define R_ETHERC0_ECMR_TE_Pos (5UL) /*!< TE (Bit 5) */ + #define R_ETHERC0_ECMR_TE_Msk (0x20UL) /*!< TE (Bitfield-Mask: 0x01) */ + #define R_ETHERC0_ECMR_ILB_Pos (3UL) /*!< ILB (Bit 3) */ + #define R_ETHERC0_ECMR_ILB_Msk (0x8UL) /*!< ILB (Bitfield-Mask: 0x01) */ + #define R_ETHERC0_ECMR_RTM_Pos (2UL) /*!< RTM (Bit 2) */ + #define R_ETHERC0_ECMR_RTM_Msk (0x4UL) /*!< RTM (Bitfield-Mask: 0x01) */ + #define R_ETHERC0_ECMR_DM_Pos (1UL) /*!< DM (Bit 1) */ + #define R_ETHERC0_ECMR_DM_Msk (0x2UL) /*!< DM (Bitfield-Mask: 0x01) */ + #define R_ETHERC0_ECMR_PRM_Pos (0UL) /*!< PRM (Bit 0) */ + #define R_ETHERC0_ECMR_PRM_Msk (0x1UL) /*!< PRM (Bitfield-Mask: 0x01) */ +/* ========================================================= RFLR ========================================================== */ + #define R_ETHERC0_RFLR_RFL_Pos (0UL) /*!< RFL (Bit 0) */ + #define R_ETHERC0_RFLR_RFL_Msk (0xfffUL) /*!< RFL (Bitfield-Mask: 0xfff) */ +/* ========================================================= ECSR ========================================================== */ + #define R_ETHERC0_ECSR_BFR_Pos (5UL) /*!< BFR (Bit 5) */ + #define R_ETHERC0_ECSR_BFR_Msk (0x20UL) /*!< BFR (Bitfield-Mask: 0x01) */ + #define R_ETHERC0_ECSR_PSRTO_Pos (4UL) /*!< PSRTO (Bit 4) */ + #define R_ETHERC0_ECSR_PSRTO_Msk (0x10UL) /*!< PSRTO (Bitfield-Mask: 0x01) */ + #define R_ETHERC0_ECSR_LCHNG_Pos (2UL) /*!< LCHNG (Bit 2) */ + #define R_ETHERC0_ECSR_LCHNG_Msk (0x4UL) /*!< LCHNG (Bitfield-Mask: 0x01) */ + #define R_ETHERC0_ECSR_MPD_Pos (1UL) /*!< MPD (Bit 1) */ + #define R_ETHERC0_ECSR_MPD_Msk (0x2UL) /*!< MPD (Bitfield-Mask: 0x01) */ + #define R_ETHERC0_ECSR_ICD_Pos (0UL) /*!< ICD (Bit 0) */ + #define R_ETHERC0_ECSR_ICD_Msk (0x1UL) /*!< ICD (Bitfield-Mask: 0x01) */ +/* ======================================================== ECSIPR ========================================================= */ + #define R_ETHERC0_ECSIPR_BFSIPR_Pos (5UL) /*!< BFSIPR (Bit 5) */ + #define R_ETHERC0_ECSIPR_BFSIPR_Msk (0x20UL) /*!< BFSIPR (Bitfield-Mask: 0x01) */ + #define R_ETHERC0_ECSIPR_PSRTOIP_Pos (4UL) /*!< PSRTOIP (Bit 4) */ + #define R_ETHERC0_ECSIPR_PSRTOIP_Msk (0x10UL) /*!< PSRTOIP (Bitfield-Mask: 0x01) */ + #define R_ETHERC0_ECSIPR_LCHNGIP_Pos (2UL) /*!< LCHNGIP (Bit 2) */ + #define R_ETHERC0_ECSIPR_LCHNGIP_Msk (0x4UL) /*!< LCHNGIP (Bitfield-Mask: 0x01) */ + #define R_ETHERC0_ECSIPR_MPDIP_Pos (1UL) /*!< MPDIP (Bit 1) */ + #define R_ETHERC0_ECSIPR_MPDIP_Msk (0x2UL) /*!< MPDIP (Bitfield-Mask: 0x01) */ + #define R_ETHERC0_ECSIPR_ICDIP_Pos (0UL) /*!< ICDIP (Bit 0) */ + #define R_ETHERC0_ECSIPR_ICDIP_Msk (0x1UL) /*!< ICDIP (Bitfield-Mask: 0x01) */ +/* ========================================================== PIR ========================================================== */ + #define R_ETHERC0_PIR_MDI_Pos (3UL) /*!< MDI (Bit 3) */ + #define R_ETHERC0_PIR_MDI_Msk (0x8UL) /*!< MDI (Bitfield-Mask: 0x01) */ + #define R_ETHERC0_PIR_MDO_Pos (2UL) /*!< MDO (Bit 2) */ + #define R_ETHERC0_PIR_MDO_Msk (0x4UL) /*!< MDO (Bitfield-Mask: 0x01) */ + #define R_ETHERC0_PIR_MMD_Pos (1UL) /*!< MMD (Bit 1) */ + #define R_ETHERC0_PIR_MMD_Msk (0x2UL) /*!< MMD (Bitfield-Mask: 0x01) */ + #define R_ETHERC0_PIR_MDC_Pos (0UL) /*!< MDC (Bit 0) */ + #define R_ETHERC0_PIR_MDC_Msk (0x1UL) /*!< MDC (Bitfield-Mask: 0x01) */ +/* ========================================================== PSR ========================================================== */ + #define R_ETHERC0_PSR_LMON_Pos (0UL) /*!< LMON (Bit 0) */ + #define R_ETHERC0_PSR_LMON_Msk (0x1UL) /*!< LMON (Bitfield-Mask: 0x01) */ +/* ========================================================= RDMLR ========================================================= */ + #define R_ETHERC0_RDMLR_RMD_Pos (0UL) /*!< RMD (Bit 0) */ + #define R_ETHERC0_RDMLR_RMD_Msk (0xfffffUL) /*!< RMD (Bitfield-Mask: 0xfffff) */ +/* ========================================================= IPGR ========================================================== */ + #define R_ETHERC0_IPGR_IPG_Pos (0UL) /*!< IPG (Bit 0) */ + #define R_ETHERC0_IPGR_IPG_Msk (0x1fUL) /*!< IPG (Bitfield-Mask: 0x1f) */ +/* ========================================================== APR ========================================================== */ + #define R_ETHERC0_APR_AP_Pos (0UL) /*!< AP (Bit 0) */ + #define R_ETHERC0_APR_AP_Msk (0xffffUL) /*!< AP (Bitfield-Mask: 0xffff) */ +/* ========================================================== MPR ========================================================== */ + #define R_ETHERC0_MPR_MP_Pos (0UL) /*!< MP (Bit 0) */ + #define R_ETHERC0_MPR_MP_Msk (0xffffUL) /*!< MP (Bitfield-Mask: 0xffff) */ +/* ========================================================= RFCF ========================================================== */ + #define R_ETHERC0_RFCF_RPAUSE_Pos (0UL) /*!< RPAUSE (Bit 0) */ + #define R_ETHERC0_RFCF_RPAUSE_Msk (0xffUL) /*!< RPAUSE (Bitfield-Mask: 0xff) */ +/* ======================================================== TPAUSER ======================================================== */ + #define R_ETHERC0_TPAUSER_TPAUSE_Pos (0UL) /*!< TPAUSE (Bit 0) */ + #define R_ETHERC0_TPAUSER_TPAUSE_Msk (0xffffUL) /*!< TPAUSE (Bitfield-Mask: 0xffff) */ +/* ======================================================= TPAUSECR ======================================================== */ +/* ========================================================= BCFRR ========================================================= */ + #define R_ETHERC0_BCFRR_BCF_Pos (0UL) /*!< BCF (Bit 0) */ + #define R_ETHERC0_BCFRR_BCF_Msk (0xffffUL) /*!< BCF (Bitfield-Mask: 0xffff) */ +/* ========================================================= MAHR ========================================================== */ + #define R_ETHERC0_MAHR_MAHR_Pos (0UL) /*!< MAHR (Bit 0) */ + #define R_ETHERC0_MAHR_MAHR_Msk (0xffffffffUL) /*!< MAHR (Bitfield-Mask: 0xffffffff) */ +/* ========================================================= MALR ========================================================== */ + #define R_ETHERC0_MALR_MALR_Pos (0UL) /*!< MALR (Bit 0) */ + #define R_ETHERC0_MALR_MALR_Msk (0xffffUL) /*!< MALR (Bitfield-Mask: 0xffff) */ +/* ========================================================= TROCR ========================================================= */ + #define R_ETHERC0_TROCR_TROCR_Pos (0UL) /*!< TROCR (Bit 0) */ + #define R_ETHERC0_TROCR_TROCR_Msk (0xffffffffUL) /*!< TROCR (Bitfield-Mask: 0xffffffff) */ +/* ========================================================= CDCR ========================================================== */ +/* ========================================================= LCCR ========================================================== */ + #define R_ETHERC0_LCCR_LCCR_Pos (0UL) /*!< LCCR (Bit 0) */ + #define R_ETHERC0_LCCR_LCCR_Msk (0xffffffffUL) /*!< LCCR (Bitfield-Mask: 0xffffffff) */ +/* ========================================================= CNDCR ========================================================= */ + #define R_ETHERC0_CNDCR_CNDCR_Pos (0UL) /*!< CNDCR (Bit 0) */ + #define R_ETHERC0_CNDCR_CNDCR_Msk (0xffffffffUL) /*!< CNDCR (Bitfield-Mask: 0xffffffff) */ +/* ========================================================= CEFCR ========================================================= */ + #define R_ETHERC0_CEFCR_CEFCR_Pos (0UL) /*!< CEFCR (Bit 0) */ + #define R_ETHERC0_CEFCR_CEFCR_Msk (0xffffffffUL) /*!< CEFCR (Bitfield-Mask: 0xffffffff) */ +/* ========================================================= FRECR ========================================================= */ + #define R_ETHERC0_FRECR_FRECR_Pos (0UL) /*!< FRECR (Bit 0) */ + #define R_ETHERC0_FRECR_FRECR_Msk (0xffffffffUL) /*!< FRECR (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== TSFRCR ========================================================= */ + #define R_ETHERC0_TSFRCR_TSFRCR_Pos (0UL) /*!< TSFRCR (Bit 0) */ + #define R_ETHERC0_TSFRCR_TSFRCR_Msk (0xffffffffUL) /*!< TSFRCR (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== TLFRCR ========================================================= */ + #define R_ETHERC0_TLFRCR_TLFRCR_Pos (0UL) /*!< TLFRCR (Bit 0) */ + #define R_ETHERC0_TLFRCR_TLFRCR_Msk (0xffffffffUL) /*!< TLFRCR (Bitfield-Mask: 0xffffffff) */ +/* ========================================================= RFCR ========================================================== */ + #define R_ETHERC0_RFCR_RFCR_Pos (0UL) /*!< RFCR (Bit 0) */ + #define R_ETHERC0_RFCR_RFCR_Msk (0xffffffffUL) /*!< RFCR (Bitfield-Mask: 0xffffffff) */ +/* ========================================================= MAFCR ========================================================= */ + #define R_ETHERC0_MAFCR_MAFCR_Pos (0UL) /*!< MAFCR (Bit 0) */ + #define R_ETHERC0_MAFCR_MAFCR_Msk (0xffffffffUL) /*!< MAFCR (Bitfield-Mask: 0xffffffff) */ + +/* =========================================================================================================================== */ +/* ================ R_ETHERC_EDMAC ================ */ +/* =========================================================================================================================== */ + +/* ========================================================= EDMR ========================================================== */ + #define R_ETHERC_EDMAC_EDMR_DE_Pos (6UL) /*!< DE (Bit 6) */ + #define R_ETHERC_EDMAC_EDMR_DE_Msk (0x40UL) /*!< DE (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EDMAC_EDMR_DL_Pos (4UL) /*!< DL (Bit 4) */ + #define R_ETHERC_EDMAC_EDMR_DL_Msk (0x30UL) /*!< DL (Bitfield-Mask: 0x03) */ + #define R_ETHERC_EDMAC_EDMR_SWR_Pos (0UL) /*!< SWR (Bit 0) */ + #define R_ETHERC_EDMAC_EDMR_SWR_Msk (0x1UL) /*!< SWR (Bitfield-Mask: 0x01) */ +/* ========================================================= EDTRR ========================================================= */ + #define R_ETHERC_EDMAC_EDTRR_TR_Pos (0UL) /*!< TR (Bit 0) */ + #define R_ETHERC_EDMAC_EDTRR_TR_Msk (0x1UL) /*!< TR (Bitfield-Mask: 0x01) */ +/* ========================================================= EDRRR ========================================================= */ + #define R_ETHERC_EDMAC_EDRRR_RR_Pos (0UL) /*!< RR (Bit 0) */ + #define R_ETHERC_EDMAC_EDRRR_RR_Msk (0x1UL) /*!< RR (Bitfield-Mask: 0x01) */ +/* ========================================================= TDLAR ========================================================= */ + #define R_ETHERC_EDMAC_TDLAR_TDLAR_Pos (0UL) /*!< TDLAR (Bit 0) */ + #define R_ETHERC_EDMAC_TDLAR_TDLAR_Msk (0xffffffffUL) /*!< TDLAR (Bitfield-Mask: 0xffffffff) */ +/* ========================================================= RDLAR ========================================================= */ + #define R_ETHERC_EDMAC_RDLAR_RDLAR_Pos (0UL) /*!< RDLAR (Bit 0) */ + #define R_ETHERC_EDMAC_RDLAR_RDLAR_Msk (0xffffffffUL) /*!< RDLAR (Bitfield-Mask: 0xffffffff) */ +/* ========================================================= EESR ========================================================== */ + #define R_ETHERC_EDMAC_EESR_TWB_Pos (30UL) /*!< TWB (Bit 30) */ + #define R_ETHERC_EDMAC_EESR_TWB_Msk (0x40000000UL) /*!< TWB (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EDMAC_EESR_TABT_Pos (26UL) /*!< TABT (Bit 26) */ + #define R_ETHERC_EDMAC_EESR_TABT_Msk (0x4000000UL) /*!< TABT (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EDMAC_EESR_RABT_Pos (25UL) /*!< RABT (Bit 25) */ + #define R_ETHERC_EDMAC_EESR_RABT_Msk (0x2000000UL) /*!< RABT (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EDMAC_EESR_RFCOF_Pos (24UL) /*!< RFCOF (Bit 24) */ + #define R_ETHERC_EDMAC_EESR_RFCOF_Msk (0x1000000UL) /*!< RFCOF (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EDMAC_EESR_ADE_Pos (23UL) /*!< ADE (Bit 23) */ + #define R_ETHERC_EDMAC_EESR_ADE_Msk (0x800000UL) /*!< ADE (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EDMAC_EESR_ECI_Pos (22UL) /*!< ECI (Bit 22) */ + #define R_ETHERC_EDMAC_EESR_ECI_Msk (0x400000UL) /*!< ECI (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EDMAC_EESR_TC_Pos (21UL) /*!< TC (Bit 21) */ + #define R_ETHERC_EDMAC_EESR_TC_Msk (0x200000UL) /*!< TC (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EDMAC_EESR_TDE_Pos (20UL) /*!< TDE (Bit 20) */ + #define R_ETHERC_EDMAC_EESR_TDE_Msk (0x100000UL) /*!< TDE (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EDMAC_EESR_TFUF_Pos (19UL) /*!< TFUF (Bit 19) */ + #define R_ETHERC_EDMAC_EESR_TFUF_Msk (0x80000UL) /*!< TFUF (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EDMAC_EESR_FR_Pos (18UL) /*!< FR (Bit 18) */ + #define R_ETHERC_EDMAC_EESR_FR_Msk (0x40000UL) /*!< FR (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EDMAC_EESR_RDE_Pos (17UL) /*!< RDE (Bit 17) */ + #define R_ETHERC_EDMAC_EESR_RDE_Msk (0x20000UL) /*!< RDE (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EDMAC_EESR_RFOF_Pos (16UL) /*!< RFOF (Bit 16) */ + #define R_ETHERC_EDMAC_EESR_RFOF_Msk (0x10000UL) /*!< RFOF (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EDMAC_EESR_CND_Pos (11UL) /*!< CND (Bit 11) */ + #define R_ETHERC_EDMAC_EESR_CND_Msk (0x800UL) /*!< CND (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EDMAC_EESR_DLC_Pos (10UL) /*!< DLC (Bit 10) */ + #define R_ETHERC_EDMAC_EESR_DLC_Msk (0x400UL) /*!< DLC (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EDMAC_EESR_CD_Pos (9UL) /*!< CD (Bit 9) */ + #define R_ETHERC_EDMAC_EESR_CD_Msk (0x200UL) /*!< CD (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EDMAC_EESR_TRO_Pos (8UL) /*!< TRO (Bit 8) */ + #define R_ETHERC_EDMAC_EESR_TRO_Msk (0x100UL) /*!< TRO (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EDMAC_EESR_RMAF_Pos (7UL) /*!< RMAF (Bit 7) */ + #define R_ETHERC_EDMAC_EESR_RMAF_Msk (0x80UL) /*!< RMAF (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EDMAC_EESR_RRF_Pos (4UL) /*!< RRF (Bit 4) */ + #define R_ETHERC_EDMAC_EESR_RRF_Msk (0x10UL) /*!< RRF (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EDMAC_EESR_RTLF_Pos (3UL) /*!< RTLF (Bit 3) */ + #define R_ETHERC_EDMAC_EESR_RTLF_Msk (0x8UL) /*!< RTLF (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EDMAC_EESR_RTSF_Pos (2UL) /*!< RTSF (Bit 2) */ + #define R_ETHERC_EDMAC_EESR_RTSF_Msk (0x4UL) /*!< RTSF (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EDMAC_EESR_PRE_Pos (1UL) /*!< PRE (Bit 1) */ + #define R_ETHERC_EDMAC_EESR_PRE_Msk (0x2UL) /*!< PRE (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EDMAC_EESR_CERF_Pos (0UL) /*!< CERF (Bit 0) */ + #define R_ETHERC_EDMAC_EESR_CERF_Msk (0x1UL) /*!< CERF (Bitfield-Mask: 0x01) */ +/* ======================================================== EESIPR ========================================================= */ + #define R_ETHERC_EDMAC_EESIPR_TWBIP_Pos (30UL) /*!< TWBIP (Bit 30) */ + #define R_ETHERC_EDMAC_EESIPR_TWBIP_Msk (0x40000000UL) /*!< TWBIP (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EDMAC_EESIPR_TABTIP_Pos (26UL) /*!< TABTIP (Bit 26) */ + #define R_ETHERC_EDMAC_EESIPR_TABTIP_Msk (0x4000000UL) /*!< TABTIP (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EDMAC_EESIPR_RABTIP_Pos (25UL) /*!< RABTIP (Bit 25) */ + #define R_ETHERC_EDMAC_EESIPR_RABTIP_Msk (0x2000000UL) /*!< RABTIP (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EDMAC_EESIPR_RFCOFIP_Pos (24UL) /*!< RFCOFIP (Bit 24) */ + #define R_ETHERC_EDMAC_EESIPR_RFCOFIP_Msk (0x1000000UL) /*!< RFCOFIP (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EDMAC_EESIPR_ADEIP_Pos (23UL) /*!< ADEIP (Bit 23) */ + #define R_ETHERC_EDMAC_EESIPR_ADEIP_Msk (0x800000UL) /*!< ADEIP (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EDMAC_EESIPR_ECIIP_Pos (22UL) /*!< ECIIP (Bit 22) */ + #define R_ETHERC_EDMAC_EESIPR_ECIIP_Msk (0x400000UL) /*!< ECIIP (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EDMAC_EESIPR_TCIP_Pos (21UL) /*!< TCIP (Bit 21) */ + #define R_ETHERC_EDMAC_EESIPR_TCIP_Msk (0x200000UL) /*!< TCIP (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EDMAC_EESIPR_TDEIP_Pos (20UL) /*!< TDEIP (Bit 20) */ + #define R_ETHERC_EDMAC_EESIPR_TDEIP_Msk (0x100000UL) /*!< TDEIP (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EDMAC_EESIPR_TFUFIP_Pos (19UL) /*!< TFUFIP (Bit 19) */ + #define R_ETHERC_EDMAC_EESIPR_TFUFIP_Msk (0x80000UL) /*!< TFUFIP (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EDMAC_EESIPR_FRIP_Pos (18UL) /*!< FRIP (Bit 18) */ + #define R_ETHERC_EDMAC_EESIPR_FRIP_Msk (0x40000UL) /*!< FRIP (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EDMAC_EESIPR_RDEIP_Pos (17UL) /*!< RDEIP (Bit 17) */ + #define R_ETHERC_EDMAC_EESIPR_RDEIP_Msk (0x20000UL) /*!< RDEIP (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EDMAC_EESIPR_RFOFIP_Pos (16UL) /*!< RFOFIP (Bit 16) */ + #define R_ETHERC_EDMAC_EESIPR_RFOFIP_Msk (0x10000UL) /*!< RFOFIP (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EDMAC_EESIPR_CNDIP_Pos (11UL) /*!< CNDIP (Bit 11) */ + #define R_ETHERC_EDMAC_EESIPR_CNDIP_Msk (0x800UL) /*!< CNDIP (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EDMAC_EESIPR_DLCIP_Pos (10UL) /*!< DLCIP (Bit 10) */ + #define R_ETHERC_EDMAC_EESIPR_DLCIP_Msk (0x400UL) /*!< DLCIP (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EDMAC_EESIPR_CDIP_Pos (9UL) /*!< CDIP (Bit 9) */ + #define R_ETHERC_EDMAC_EESIPR_CDIP_Msk (0x200UL) /*!< CDIP (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EDMAC_EESIPR_TROIP_Pos (8UL) /*!< TROIP (Bit 8) */ + #define R_ETHERC_EDMAC_EESIPR_TROIP_Msk (0x100UL) /*!< TROIP (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EDMAC_EESIPR_RMAFIP_Pos (7UL) /*!< RMAFIP (Bit 7) */ + #define R_ETHERC_EDMAC_EESIPR_RMAFIP_Msk (0x80UL) /*!< RMAFIP (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EDMAC_EESIPR_RRFIP_Pos (4UL) /*!< RRFIP (Bit 4) */ + #define R_ETHERC_EDMAC_EESIPR_RRFIP_Msk (0x10UL) /*!< RRFIP (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EDMAC_EESIPR_RTLFIP_Pos (3UL) /*!< RTLFIP (Bit 3) */ + #define R_ETHERC_EDMAC_EESIPR_RTLFIP_Msk (0x8UL) /*!< RTLFIP (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EDMAC_EESIPR_RTSFIP_Pos (2UL) /*!< RTSFIP (Bit 2) */ + #define R_ETHERC_EDMAC_EESIPR_RTSFIP_Msk (0x4UL) /*!< RTSFIP (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EDMAC_EESIPR_PREIP_Pos (1UL) /*!< PREIP (Bit 1) */ + #define R_ETHERC_EDMAC_EESIPR_PREIP_Msk (0x2UL) /*!< PREIP (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EDMAC_EESIPR_CERFIP_Pos (0UL) /*!< CERFIP (Bit 0) */ + #define R_ETHERC_EDMAC_EESIPR_CERFIP_Msk (0x1UL) /*!< CERFIP (Bitfield-Mask: 0x01) */ +/* ======================================================== TRSCER ========================================================= */ + #define R_ETHERC_EDMAC_TRSCER_RMAFCE_Pos (7UL) /*!< RMAFCE (Bit 7) */ + #define R_ETHERC_EDMAC_TRSCER_RMAFCE_Msk (0x80UL) /*!< RMAFCE (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EDMAC_TRSCER_RRFCE_Pos (4UL) /*!< RRFCE (Bit 4) */ + #define R_ETHERC_EDMAC_TRSCER_RRFCE_Msk (0x10UL) /*!< RRFCE (Bitfield-Mask: 0x01) */ +/* ========================================================= RMFCR ========================================================= */ + #define R_ETHERC_EDMAC_RMFCR_MFC_Pos (0UL) /*!< MFC (Bit 0) */ + #define R_ETHERC_EDMAC_RMFCR_MFC_Msk (0xffffUL) /*!< MFC (Bitfield-Mask: 0xffff) */ +/* ========================================================= TFTR ========================================================== */ + #define R_ETHERC_EDMAC_TFTR_TFT_Pos (0UL) /*!< TFT (Bit 0) */ + #define R_ETHERC_EDMAC_TFTR_TFT_Msk (0x7ffUL) /*!< TFT (Bitfield-Mask: 0x7ff) */ +/* ========================================================== FDR ========================================================== */ + #define R_ETHERC_EDMAC_FDR_TFD_Pos (8UL) /*!< TFD (Bit 8) */ + #define R_ETHERC_EDMAC_FDR_TFD_Msk (0x1f00UL) /*!< TFD (Bitfield-Mask: 0x1f) */ + #define R_ETHERC_EDMAC_FDR_RFD_Pos (0UL) /*!< RFD (Bit 0) */ + #define R_ETHERC_EDMAC_FDR_RFD_Msk (0x1fUL) /*!< RFD (Bitfield-Mask: 0x1f) */ +/* ========================================================= RMCR ========================================================== */ + #define R_ETHERC_EDMAC_RMCR_RNR_Pos (0UL) /*!< RNR (Bit 0) */ + #define R_ETHERC_EDMAC_RMCR_RNR_Msk (0x1UL) /*!< RNR (Bitfield-Mask: 0x01) */ +/* ========================================================= TFUCR ========================================================= */ + #define R_ETHERC_EDMAC_TFUCR_UNDER_Pos (0UL) /*!< UNDER (Bit 0) */ + #define R_ETHERC_EDMAC_TFUCR_UNDER_Msk (0xffffUL) /*!< UNDER (Bitfield-Mask: 0xffff) */ +/* ========================================================= RFOCR ========================================================= */ + #define R_ETHERC_EDMAC_RFOCR_OVER_Pos (0UL) /*!< OVER (Bit 0) */ + #define R_ETHERC_EDMAC_RFOCR_OVER_Msk (0xffffUL) /*!< OVER (Bitfield-Mask: 0xffff) */ +/* ========================================================= IOSR ========================================================== */ + #define R_ETHERC_EDMAC_IOSR_ELB_Pos (0UL) /*!< ELB (Bit 0) */ + #define R_ETHERC_EDMAC_IOSR_ELB_Msk (0x1UL) /*!< ELB (Bitfield-Mask: 0x01) */ +/* ========================================================= FCFTR ========================================================= */ + #define R_ETHERC_EDMAC_FCFTR_RFFO_Pos (16UL) /*!< RFFO (Bit 16) */ + #define R_ETHERC_EDMAC_FCFTR_RFFO_Msk (0x70000UL) /*!< RFFO (Bitfield-Mask: 0x07) */ + #define R_ETHERC_EDMAC_FCFTR_RFDO_Pos (0UL) /*!< RFDO (Bit 0) */ + #define R_ETHERC_EDMAC_FCFTR_RFDO_Msk (0x7UL) /*!< RFDO (Bitfield-Mask: 0x07) */ +/* ======================================================== RPADIR ========================================================= */ + #define R_ETHERC_EDMAC_RPADIR_PADS_Pos (16UL) /*!< PADS (Bit 16) */ + #define R_ETHERC_EDMAC_RPADIR_PADS_Msk (0x30000UL) /*!< PADS (Bitfield-Mask: 0x03) */ + #define R_ETHERC_EDMAC_RPADIR_PADR_Pos (0UL) /*!< PADR (Bit 0) */ + #define R_ETHERC_EDMAC_RPADIR_PADR_Msk (0x3fUL) /*!< PADR (Bitfield-Mask: 0x3f) */ +/* ========================================================= TRIMD ========================================================= */ + #define R_ETHERC_EDMAC_TRIMD_TIM_Pos (4UL) /*!< TIM (Bit 4) */ + #define R_ETHERC_EDMAC_TRIMD_TIM_Msk (0x10UL) /*!< TIM (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EDMAC_TRIMD_TIS_Pos (0UL) /*!< TIS (Bit 0) */ + #define R_ETHERC_EDMAC_TRIMD_TIS_Msk (0x1UL) /*!< TIS (Bitfield-Mask: 0x01) */ +/* ========================================================= RBWAR ========================================================= */ + #define R_ETHERC_EDMAC_RBWAR_RBWAR_Pos (0UL) /*!< RBWAR (Bit 0) */ + #define R_ETHERC_EDMAC_RBWAR_RBWAR_Msk (0xffffffffUL) /*!< RBWAR (Bitfield-Mask: 0xffffffff) */ +/* ========================================================= RDFAR ========================================================= */ + #define R_ETHERC_EDMAC_RDFAR_RDFAR_Pos (0UL) /*!< RDFAR (Bit 0) */ + #define R_ETHERC_EDMAC_RDFAR_RDFAR_Msk (0xffffffffUL) /*!< RDFAR (Bitfield-Mask: 0xffffffff) */ +/* ========================================================= TBRAR ========================================================= */ + #define R_ETHERC_EDMAC_TBRAR_TBRAR_Pos (0UL) /*!< TBRAR (Bit 0) */ + #define R_ETHERC_EDMAC_TBRAR_TBRAR_Msk (0xffffffffUL) /*!< TBRAR (Bitfield-Mask: 0xffffffff) */ +/* ========================================================= TDFAR ========================================================= */ + #define R_ETHERC_EDMAC_TDFAR_TDFAR_Pos (0UL) /*!< TDFAR (Bit 0) */ + #define R_ETHERC_EDMAC_TDFAR_TDFAR_Msk (0xffffffffUL) /*!< TDFAR (Bitfield-Mask: 0xffffffff) */ + +/* =========================================================================================================================== */ +/* ================ R_FACI_HP_CMD ================ */ +/* =========================================================================================================================== */ + +/* ====================================================== FACI_CMD16 ======================================================= */ +/* ======================================================= FACI_CMD8 ======================================================= */ + +/* =========================================================================================================================== */ +/* ================ R_FACI_HP ================ */ +/* =========================================================================================================================== */ + +/* ======================================================== FASTAT ========================================================= */ + #define R_FACI_HP_FASTAT_CFAE_Pos (7UL) /*!< CFAE (Bit 7) */ + #define R_FACI_HP_FASTAT_CFAE_Msk (0x80UL) /*!< CFAE (Bitfield-Mask: 0x01) */ + #define R_FACI_HP_FASTAT_CMDLK_Pos (4UL) /*!< CMDLK (Bit 4) */ + #define R_FACI_HP_FASTAT_CMDLK_Msk (0x10UL) /*!< CMDLK (Bitfield-Mask: 0x01) */ + #define R_FACI_HP_FASTAT_DFAE_Pos (3UL) /*!< DFAE (Bit 3) */ + #define R_FACI_HP_FASTAT_DFAE_Msk (0x8UL) /*!< DFAE (Bitfield-Mask: 0x01) */ +/* ======================================================== FAEINT ========================================================= */ + #define R_FACI_HP_FAEINT_CFAEIE_Pos (7UL) /*!< CFAEIE (Bit 7) */ + #define R_FACI_HP_FAEINT_CFAEIE_Msk (0x80UL) /*!< CFAEIE (Bitfield-Mask: 0x01) */ + #define R_FACI_HP_FAEINT_CMDLKIE_Pos (4UL) /*!< CMDLKIE (Bit 4) */ + #define R_FACI_HP_FAEINT_CMDLKIE_Msk (0x10UL) /*!< CMDLKIE (Bitfield-Mask: 0x01) */ + #define R_FACI_HP_FAEINT_DFAEIE_Pos (3UL) /*!< DFAEIE (Bit 3) */ + #define R_FACI_HP_FAEINT_DFAEIE_Msk (0x8UL) /*!< DFAEIE (Bitfield-Mask: 0x01) */ +/* ======================================================== FRDYIE ========================================================= */ + #define R_FACI_HP_FRDYIE_FRDYIE_Pos (0UL) /*!< FRDYIE (Bit 0) */ + #define R_FACI_HP_FRDYIE_FRDYIE_Msk (0x1UL) /*!< FRDYIE (Bitfield-Mask: 0x01) */ +/* ======================================================== FSADDR ========================================================= */ + #define R_FACI_HP_FSADDR_FSA_Pos (0UL) /*!< FSA (Bit 0) */ + #define R_FACI_HP_FSADDR_FSA_Msk (0xffffffffUL) /*!< FSA (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== FEADDR ========================================================= */ + #define R_FACI_HP_FEADDR_FEA_Pos (0UL) /*!< FEA (Bit 0) */ + #define R_FACI_HP_FEADDR_FEA_Msk (0xffffffffUL) /*!< FEA (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== FMEPROT ======================================================== */ + #define R_FACI_HP_FMEPROT_KEY_Pos (8UL) /*!< KEY (Bit 8) */ + #define R_FACI_HP_FMEPROT_KEY_Msk (0xff00UL) /*!< KEY (Bitfield-Mask: 0xff) */ + #define R_FACI_HP_FMEPROT_CEPROT_Pos (0UL) /*!< CEPROT (Bit 0) */ + #define R_FACI_HP_FMEPROT_CEPROT_Msk (0x1UL) /*!< CEPROT (Bitfield-Mask: 0x01) */ +/* ======================================================== FBPROT0 ======================================================== */ + #define R_FACI_HP_FBPROT0_KEY_Pos (8UL) /*!< KEY (Bit 8) */ + #define R_FACI_HP_FBPROT0_KEY_Msk (0xff00UL) /*!< KEY (Bitfield-Mask: 0xff) */ + #define R_FACI_HP_FBPROT0_BPCN0_Pos (0UL) /*!< BPCN0 (Bit 0) */ + #define R_FACI_HP_FBPROT0_BPCN0_Msk (0x1UL) /*!< BPCN0 (Bitfield-Mask: 0x01) */ +/* ======================================================== FBPROT1 ======================================================== */ + #define R_FACI_HP_FBPROT1_KEY_Pos (8UL) /*!< KEY (Bit 8) */ + #define R_FACI_HP_FBPROT1_KEY_Msk (0xff00UL) /*!< KEY (Bitfield-Mask: 0xff) */ + #define R_FACI_HP_FBPROT1_BPCN1_Pos (0UL) /*!< BPCN1 (Bit 0) */ + #define R_FACI_HP_FBPROT1_BPCN1_Msk (0x1UL) /*!< BPCN1 (Bitfield-Mask: 0x01) */ +/* ======================================================== FSTATR ========================================================= */ + #define R_FACI_HP_FSTATR_ILGCOMERR_Pos (23UL) /*!< ILGCOMERR (Bit 23) */ + #define R_FACI_HP_FSTATR_ILGCOMERR_Msk (0x800000UL) /*!< ILGCOMERR (Bitfield-Mask: 0x01) */ + #define R_FACI_HP_FSTATR_FESETERR_Pos (22UL) /*!< FESETERR (Bit 22) */ + #define R_FACI_HP_FSTATR_FESETERR_Msk (0x400000UL) /*!< FESETERR (Bitfield-Mask: 0x01) */ + #define R_FACI_HP_FSTATR_SECERR_Pos (21UL) /*!< SECERR (Bit 21) */ + #define R_FACI_HP_FSTATR_SECERR_Msk (0x200000UL) /*!< SECERR (Bitfield-Mask: 0x01) */ + #define R_FACI_HP_FSTATR_OTERR_Pos (20UL) /*!< OTERR (Bit 20) */ + #define R_FACI_HP_FSTATR_OTERR_Msk (0x100000UL) /*!< OTERR (Bitfield-Mask: 0x01) */ + #define R_FACI_HP_FSTATR_FRDY_Pos (15UL) /*!< FRDY (Bit 15) */ + #define R_FACI_HP_FSTATR_FRDY_Msk (0x8000UL) /*!< FRDY (Bitfield-Mask: 0x01) */ + #define R_FACI_HP_FSTATR_ILGLERR_Pos (14UL) /*!< ILGLERR (Bit 14) */ + #define R_FACI_HP_FSTATR_ILGLERR_Msk (0x4000UL) /*!< ILGLERR (Bitfield-Mask: 0x01) */ + #define R_FACI_HP_FSTATR_ERSERR_Pos (13UL) /*!< ERSERR (Bit 13) */ + #define R_FACI_HP_FSTATR_ERSERR_Msk (0x2000UL) /*!< ERSERR (Bitfield-Mask: 0x01) */ + #define R_FACI_HP_FSTATR_PRGERR_Pos (12UL) /*!< PRGERR (Bit 12) */ + #define R_FACI_HP_FSTATR_PRGERR_Msk (0x1000UL) /*!< PRGERR (Bitfield-Mask: 0x01) */ + #define R_FACI_HP_FSTATR_SUSRDY_Pos (11UL) /*!< SUSRDY (Bit 11) */ + #define R_FACI_HP_FSTATR_SUSRDY_Msk (0x800UL) /*!< SUSRDY (Bitfield-Mask: 0x01) */ + #define R_FACI_HP_FSTATR_DBFULL_Pos (10UL) /*!< DBFULL (Bit 10) */ + #define R_FACI_HP_FSTATR_DBFULL_Msk (0x400UL) /*!< DBFULL (Bitfield-Mask: 0x01) */ + #define R_FACI_HP_FSTATR_ERSSPD_Pos (9UL) /*!< ERSSPD (Bit 9) */ + #define R_FACI_HP_FSTATR_ERSSPD_Msk (0x200UL) /*!< ERSSPD (Bitfield-Mask: 0x01) */ + #define R_FACI_HP_FSTATR_PRGSPD_Pos (8UL) /*!< PRGSPD (Bit 8) */ + #define R_FACI_HP_FSTATR_PRGSPD_Msk (0x100UL) /*!< PRGSPD (Bitfield-Mask: 0x01) */ + #define R_FACI_HP_FSTATR_FLWEERR_Pos (6UL) /*!< FLWEERR (Bit 6) */ + #define R_FACI_HP_FSTATR_FLWEERR_Msk (0x40UL) /*!< FLWEERR (Bitfield-Mask: 0x01) */ +/* ======================================================== FENTRYR ======================================================== */ + #define R_FACI_HP_FENTRYR_KEY_Pos (8UL) /*!< KEY (Bit 8) */ + #define R_FACI_HP_FENTRYR_KEY_Msk (0xff00UL) /*!< KEY (Bitfield-Mask: 0xff) */ + #define R_FACI_HP_FENTRYR_FENTRYD_Pos (7UL) /*!< FENTRYD (Bit 7) */ + #define R_FACI_HP_FENTRYR_FENTRYD_Msk (0x80UL) /*!< FENTRYD (Bitfield-Mask: 0x01) */ + #define R_FACI_HP_FENTRYR_FENTRYC_Pos (0UL) /*!< FENTRYC (Bit 0) */ + #define R_FACI_HP_FENTRYR_FENTRYC_Msk (0x1UL) /*!< FENTRYC (Bitfield-Mask: 0x01) */ +/* ======================================================= FSUINITR ======================================================== */ + #define R_FACI_HP_FSUINITR_KEY_Pos (8UL) /*!< KEY (Bit 8) */ + #define R_FACI_HP_FSUINITR_KEY_Msk (0xff00UL) /*!< KEY (Bitfield-Mask: 0xff) */ + #define R_FACI_HP_FSUINITR_SUINIT_Pos (0UL) /*!< SUINIT (Bit 0) */ + #define R_FACI_HP_FSUINITR_SUINIT_Msk (0x1UL) /*!< SUINIT (Bitfield-Mask: 0x01) */ +/* ========================================================= FCMDR ========================================================= */ + #define R_FACI_HP_FCMDR_CMDR_Pos (8UL) /*!< CMDR (Bit 8) */ + #define R_FACI_HP_FCMDR_CMDR_Msk (0xff00UL) /*!< CMDR (Bitfield-Mask: 0xff) */ + #define R_FACI_HP_FCMDR_PCMDR_Pos (0UL) /*!< PCMDR (Bit 0) */ + #define R_FACI_HP_FCMDR_PCMDR_Msk (0xffUL) /*!< PCMDR (Bitfield-Mask: 0xff) */ +/* ======================================================== FBCCNT ========================================================= */ + #define R_FACI_HP_FBCCNT_BCDIR_Pos (0UL) /*!< BCDIR (Bit 0) */ + #define R_FACI_HP_FBCCNT_BCDIR_Msk (0x1UL) /*!< BCDIR (Bitfield-Mask: 0x01) */ +/* ======================================================== FBCSTAT ======================================================== */ + #define R_FACI_HP_FBCSTAT_BCST_Pos (0UL) /*!< BCST (Bit 0) */ + #define R_FACI_HP_FBCSTAT_BCST_Msk (0x1UL) /*!< BCST (Bitfield-Mask: 0x01) */ +/* ======================================================== FPSADDR ======================================================== */ + #define R_FACI_HP_FPSADDR_PSADR_Pos (0UL) /*!< PSADR (Bit 0) */ + #define R_FACI_HP_FPSADDR_PSADR_Msk (0x7ffffUL) /*!< PSADR (Bitfield-Mask: 0x7ffff) */ +/* ======================================================== FAWMON ========================================================= */ + #define R_FACI_HP_FAWMON_BTFLG_Pos (31UL) /*!< BTFLG (Bit 31) */ + #define R_FACI_HP_FAWMON_BTFLG_Msk (0x80000000UL) /*!< BTFLG (Bitfield-Mask: 0x01) */ + #define R_FACI_HP_FAWMON_FAWE_Pos (16UL) /*!< FAWE (Bit 16) */ + #define R_FACI_HP_FAWMON_FAWE_Msk (0x7ff0000UL) /*!< FAWE (Bitfield-Mask: 0x7ff) */ + #define R_FACI_HP_FAWMON_FSPR_Pos (15UL) /*!< FSPR (Bit 15) */ + #define R_FACI_HP_FAWMON_FSPR_Msk (0x8000UL) /*!< FSPR (Bitfield-Mask: 0x01) */ + #define R_FACI_HP_FAWMON_FAWS_Pos (0UL) /*!< FAWS (Bit 0) */ + #define R_FACI_HP_FAWMON_FAWS_Msk (0x7ffUL) /*!< FAWS (Bitfield-Mask: 0x7ff) */ +/* ========================================================= FCPSR ========================================================= */ + #define R_FACI_HP_FCPSR_ESUSPMD_Pos (0UL) /*!< ESUSPMD (Bit 0) */ + #define R_FACI_HP_FCPSR_ESUSPMD_Msk (0x1UL) /*!< ESUSPMD (Bitfield-Mask: 0x01) */ +/* ======================================================== FPCKAR ========================================================= */ + #define R_FACI_HP_FPCKAR_KEY_Pos (8UL) /*!< KEY (Bit 8) */ + #define R_FACI_HP_FPCKAR_KEY_Msk (0xff00UL) /*!< KEY (Bitfield-Mask: 0xff) */ + #define R_FACI_HP_FPCKAR_PCKA_Pos (0UL) /*!< PCKA (Bit 0) */ + #define R_FACI_HP_FPCKAR_PCKA_Msk (0xffUL) /*!< PCKA (Bitfield-Mask: 0xff) */ +/* ======================================================== FSUACR ========================================================= */ + #define R_FACI_HP_FSUACR_KEY_Pos (8UL) /*!< KEY (Bit 8) */ + #define R_FACI_HP_FSUACR_KEY_Msk (0xff00UL) /*!< KEY (Bitfield-Mask: 0xff) */ + #define R_FACI_HP_FSUACR_SAS_Pos (0UL) /*!< SAS (Bit 0) */ + #define R_FACI_HP_FSUACR_SAS_Msk (0x3UL) /*!< SAS (Bitfield-Mask: 0x03) */ + +/* =========================================================================================================================== */ +/* ================ R_FCACHE ================ */ +/* =========================================================================================================================== */ + +/* ======================================================== FCACHEE ======================================================== */ + #define R_FCACHE_FCACHEE_FCACHEEN_Pos (0UL) /*!< FCACHEEN (Bit 0) */ + #define R_FCACHE_FCACHEE_FCACHEEN_Msk (0x1UL) /*!< FCACHEEN (Bitfield-Mask: 0x01) */ +/* ======================================================= FCACHEIV ======================================================== */ + #define R_FCACHE_FCACHEIV_FCACHEIV_Pos (0UL) /*!< FCACHEIV (Bit 0) */ + #define R_FCACHE_FCACHEIV_FCACHEIV_Msk (0x1UL) /*!< FCACHEIV (Bitfield-Mask: 0x01) */ +/* ========================================================= FLWT ========================================================== */ + #define R_FCACHE_FLWT_FLWT_Pos (0UL) /*!< FLWT (Bit 0) */ + #define R_FCACHE_FLWT_FLWT_Msk (0x7UL) /*!< FLWT (Bitfield-Mask: 0x07) */ +/* ========================================================= FSAR ========================================================== */ + #define R_FCACHE_FSAR_FLWTSA_Pos (0UL) /*!< FLWTSA (Bit 0) */ + #define R_FCACHE_FSAR_FLWTSA_Msk (0x1UL) /*!< FLWTSA (Bitfield-Mask: 0x01) */ + #define R_FCACHE_FSAR_FCACHEENSA_Pos (1UL) /*!< FCACHEENSA (Bit 1) */ + #define R_FCACHE_FSAR_FCACHEENSA_Msk (0x2UL) /*!< FCACHEENSA (Bitfield-Mask: 0x01) */ + #define R_FCACHE_FSAR_FCKMHZSA_Pos (8UL) /*!< FCKMHZSA (Bit 8) */ + #define R_FCACHE_FSAR_FCKMHZSA_Msk (0x100UL) /*!< FCKMHZSA (Bitfield-Mask: 0x01) */ + #define R_FCACHE_FSAR_FACICOMISA_Pos (9UL) /*!< FACICOMISA (Bit 9) */ + #define R_FCACHE_FSAR_FACICOMISA_Msk (0x200UL) /*!< FACICOMISA (Bitfield-Mask: 0x01) */ + #define R_FCACHE_FSAR_FACICOMRSA_Pos (10UL) /*!< FACICOMRSA (Bit 10) */ + #define R_FCACHE_FSAR_FACICOMRSA_Msk (0x400UL) /*!< FACICOMRSA (Bitfield-Mask: 0x01) */ + #define R_FCACHE_FSAR_FACITRSA_Pos (11UL) /*!< FACITRSA (Bit 11) */ + #define R_FCACHE_FSAR_FACITRSA_Msk (0x800UL) /*!< FACITRSA (Bitfield-Mask: 0x01) */ + +/* =========================================================================================================================== */ +/* ================ R_GPT0 ================ */ +/* =========================================================================================================================== */ + +/* ========================================================= GTWP ========================================================== */ + #define R_GPT0_GTWP_PRKEY_Pos (8UL) /*!< PRKEY (Bit 8) */ + #define R_GPT0_GTWP_PRKEY_Msk (0xff00UL) /*!< PRKEY (Bitfield-Mask: 0xff) */ + #define R_GPT0_GTWP_WP_Pos (0UL) /*!< WP (Bit 0) */ + #define R_GPT0_GTWP_WP_Msk (0x1UL) /*!< WP (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTWP_STRWP_Pos (1UL) /*!< STRWP (Bit 1) */ + #define R_GPT0_GTWP_STRWP_Msk (0x2UL) /*!< STRWP (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTWP_STPWP_Pos (2UL) /*!< STPWP (Bit 2) */ + #define R_GPT0_GTWP_STPWP_Msk (0x4UL) /*!< STPWP (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTWP_CLRWP_Pos (3UL) /*!< CLRWP (Bit 3) */ + #define R_GPT0_GTWP_CLRWP_Msk (0x8UL) /*!< CLRWP (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTWP_CMNWP_Pos (4UL) /*!< CMNWP (Bit 4) */ + #define R_GPT0_GTWP_CMNWP_Msk (0x10UL) /*!< CMNWP (Bitfield-Mask: 0x01) */ +/* ========================================================= GTSTR ========================================================= */ + #define R_GPT0_GTSTR_CSTRT_Pos (0UL) /*!< CSTRT (Bit 0) */ + #define R_GPT0_GTSTR_CSTRT_Msk (0x1UL) /*!< CSTRT (Bitfield-Mask: 0x01) */ +/* ========================================================= GTSTP ========================================================= */ + #define R_GPT0_GTSTP_CSTOP_Pos (0UL) /*!< CSTOP (Bit 0) */ + #define R_GPT0_GTSTP_CSTOP_Msk (0x1UL) /*!< CSTOP (Bitfield-Mask: 0x01) */ +/* ========================================================= GTCLR ========================================================= */ + #define R_GPT0_GTCLR_CCLR_Pos (0UL) /*!< CCLR (Bit 0) */ + #define R_GPT0_GTCLR_CCLR_Msk (0x1UL) /*!< CCLR (Bitfield-Mask: 0x01) */ +/* ========================================================= GTSSR ========================================================= */ + #define R_GPT0_GTSSR_CSTRT_Pos (31UL) /*!< CSTRT (Bit 31) */ + #define R_GPT0_GTSSR_CSTRT_Msk (0x80000000UL) /*!< CSTRT (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTSSR_SSELC_Pos (16UL) /*!< SSELC (Bit 16) */ + #define R_GPT0_GTSSR_SSELC_Msk (0x10000UL) /*!< SSELC (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTSSR_SSCBFAH_Pos (15UL) /*!< SSCBFAH (Bit 15) */ + #define R_GPT0_GTSSR_SSCBFAH_Msk (0x8000UL) /*!< SSCBFAH (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTSSR_SSCBFAL_Pos (14UL) /*!< SSCBFAL (Bit 14) */ + #define R_GPT0_GTSSR_SSCBFAL_Msk (0x4000UL) /*!< SSCBFAL (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTSSR_SSCBRAH_Pos (13UL) /*!< SSCBRAH (Bit 13) */ + #define R_GPT0_GTSSR_SSCBRAH_Msk (0x2000UL) /*!< SSCBRAH (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTSSR_SSCBRAL_Pos (12UL) /*!< SSCBRAL (Bit 12) */ + #define R_GPT0_GTSSR_SSCBRAL_Msk (0x1000UL) /*!< SSCBRAL (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTSSR_SSCAFBH_Pos (11UL) /*!< SSCAFBH (Bit 11) */ + #define R_GPT0_GTSSR_SSCAFBH_Msk (0x800UL) /*!< SSCAFBH (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTSSR_SSCAFBL_Pos (10UL) /*!< SSCAFBL (Bit 10) */ + #define R_GPT0_GTSSR_SSCAFBL_Msk (0x400UL) /*!< SSCAFBL (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTSSR_SSCARBH_Pos (9UL) /*!< SSCARBH (Bit 9) */ + #define R_GPT0_GTSSR_SSCARBH_Msk (0x200UL) /*!< SSCARBH (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTSSR_SSCARBL_Pos (8UL) /*!< SSCARBL (Bit 8) */ + #define R_GPT0_GTSSR_SSCARBL_Msk (0x100UL) /*!< SSCARBL (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTSSR_SSGTRGF_Pos (1UL) /*!< SSGTRGF (Bit 1) */ + #define R_GPT0_GTSSR_SSGTRGF_Msk (0x2UL) /*!< SSGTRGF (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTSSR_SSGTRGR_Pos (0UL) /*!< SSGTRGR (Bit 0) */ + #define R_GPT0_GTSSR_SSGTRGR_Msk (0x1UL) /*!< SSGTRGR (Bitfield-Mask: 0x01) */ +/* ========================================================= GTPSR ========================================================= */ + #define R_GPT0_GTPSR_CSTOP_Pos (31UL) /*!< CSTOP (Bit 31) */ + #define R_GPT0_GTPSR_CSTOP_Msk (0x80000000UL) /*!< CSTOP (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTPSR_PSELC_Pos (16UL) /*!< PSELC (Bit 16) */ + #define R_GPT0_GTPSR_PSELC_Msk (0x10000UL) /*!< PSELC (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTPSR_PSCBFAH_Pos (15UL) /*!< PSCBFAH (Bit 15) */ + #define R_GPT0_GTPSR_PSCBFAH_Msk (0x8000UL) /*!< PSCBFAH (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTPSR_PSCBFAL_Pos (14UL) /*!< PSCBFAL (Bit 14) */ + #define R_GPT0_GTPSR_PSCBFAL_Msk (0x4000UL) /*!< PSCBFAL (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTPSR_PSCBRAH_Pos (13UL) /*!< PSCBRAH (Bit 13) */ + #define R_GPT0_GTPSR_PSCBRAH_Msk (0x2000UL) /*!< PSCBRAH (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTPSR_PSCBRAL_Pos (12UL) /*!< PSCBRAL (Bit 12) */ + #define R_GPT0_GTPSR_PSCBRAL_Msk (0x1000UL) /*!< PSCBRAL (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTPSR_PSCAFBH_Pos (11UL) /*!< PSCAFBH (Bit 11) */ + #define R_GPT0_GTPSR_PSCAFBH_Msk (0x800UL) /*!< PSCAFBH (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTPSR_PSCAFBL_Pos (10UL) /*!< PSCAFBL (Bit 10) */ + #define R_GPT0_GTPSR_PSCAFBL_Msk (0x400UL) /*!< PSCAFBL (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTPSR_PSCARBH_Pos (9UL) /*!< PSCARBH (Bit 9) */ + #define R_GPT0_GTPSR_PSCARBH_Msk (0x200UL) /*!< PSCARBH (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTPSR_PSCARBL_Pos (8UL) /*!< PSCARBL (Bit 8) */ + #define R_GPT0_GTPSR_PSCARBL_Msk (0x100UL) /*!< PSCARBL (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTPSR_PSGTRGF_Pos (1UL) /*!< PSGTRGF (Bit 1) */ + #define R_GPT0_GTPSR_PSGTRGF_Msk (0x2UL) /*!< PSGTRGF (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTPSR_PSGTRGR_Pos (0UL) /*!< PSGTRGR (Bit 0) */ + #define R_GPT0_GTPSR_PSGTRGR_Msk (0x1UL) /*!< PSGTRGR (Bitfield-Mask: 0x01) */ +/* ========================================================= GTCSR ========================================================= */ + #define R_GPT0_GTCSR_CCLR_Pos (31UL) /*!< CCLR (Bit 31) */ + #define R_GPT0_GTCSR_CCLR_Msk (0x80000000UL) /*!< CCLR (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTCSR_CP1CCE_Pos (27UL) /*!< CP1CCE (Bit 27) */ + #define R_GPT0_GTCSR_CP1CCE_Msk (0x8000000UL) /*!< CP1CCE (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTCSR_CSCMSC_Pos (24UL) /*!< CSCMSC (Bit 24) */ + #define R_GPT0_GTCSR_CSCMSC_Msk (0x7000000UL) /*!< CSCMSC (Bitfield-Mask: 0x07) */ + #define R_GPT0_GTCSR_CSELC_Pos (16UL) /*!< CSELC (Bit 16) */ + #define R_GPT0_GTCSR_CSELC_Msk (0x10000UL) /*!< CSELC (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTCSR_CSCBFAH_Pos (15UL) /*!< CSCBFAH (Bit 15) */ + #define R_GPT0_GTCSR_CSCBFAH_Msk (0x8000UL) /*!< CSCBFAH (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTCSR_CSCBFAL_Pos (14UL) /*!< CSCBFAL (Bit 14) */ + #define R_GPT0_GTCSR_CSCBFAL_Msk (0x4000UL) /*!< CSCBFAL (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTCSR_CSCBRAH_Pos (13UL) /*!< CSCBRAH (Bit 13) */ + #define R_GPT0_GTCSR_CSCBRAH_Msk (0x2000UL) /*!< CSCBRAH (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTCSR_CSCBRAL_Pos (12UL) /*!< CSCBRAL (Bit 12) */ + #define R_GPT0_GTCSR_CSCBRAL_Msk (0x1000UL) /*!< CSCBRAL (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTCSR_CSCAFBH_Pos (11UL) /*!< CSCAFBH (Bit 11) */ + #define R_GPT0_GTCSR_CSCAFBH_Msk (0x800UL) /*!< CSCAFBH (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTCSR_CSCAFBL_Pos (10UL) /*!< CSCAFBL (Bit 10) */ + #define R_GPT0_GTCSR_CSCAFBL_Msk (0x400UL) /*!< CSCAFBL (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTCSR_CSCARBH_Pos (9UL) /*!< CSCARBH (Bit 9) */ + #define R_GPT0_GTCSR_CSCARBH_Msk (0x200UL) /*!< CSCARBH (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTCSR_CSCARBL_Pos (8UL) /*!< CSCARBL (Bit 8) */ + #define R_GPT0_GTCSR_CSCARBL_Msk (0x100UL) /*!< CSCARBL (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTCSR_CSGTRGF_Pos (1UL) /*!< CSGTRGF (Bit 1) */ + #define R_GPT0_GTCSR_CSGTRGF_Msk (0x2UL) /*!< CSGTRGF (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTCSR_CSGTRGR_Pos (0UL) /*!< CSGTRGR (Bit 0) */ + #define R_GPT0_GTCSR_CSGTRGR_Msk (0x1UL) /*!< CSGTRGR (Bitfield-Mask: 0x01) */ +/* ======================================================== GTUPSR ========================================================= */ + #define R_GPT0_GTUPSR_USILVL_Pos (24UL) /*!< USILVL (Bit 24) */ + #define R_GPT0_GTUPSR_USILVL_Msk (0xf000000UL) /*!< USILVL (Bitfield-Mask: 0x0f) */ + #define R_GPT0_GTUPSR_USELC_Pos (16UL) /*!< USELC (Bit 16) */ + #define R_GPT0_GTUPSR_USELC_Msk (0x10000UL) /*!< USELC (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTUPSR_USCBFAH_Pos (15UL) /*!< USCBFAH (Bit 15) */ + #define R_GPT0_GTUPSR_USCBFAH_Msk (0x8000UL) /*!< USCBFAH (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTUPSR_USCBFAL_Pos (14UL) /*!< USCBFAL (Bit 14) */ + #define R_GPT0_GTUPSR_USCBFAL_Msk (0x4000UL) /*!< USCBFAL (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTUPSR_USCBRAH_Pos (13UL) /*!< USCBRAH (Bit 13) */ + #define R_GPT0_GTUPSR_USCBRAH_Msk (0x2000UL) /*!< USCBRAH (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTUPSR_USCBRAL_Pos (12UL) /*!< USCBRAL (Bit 12) */ + #define R_GPT0_GTUPSR_USCBRAL_Msk (0x1000UL) /*!< USCBRAL (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTUPSR_USCAFBH_Pos (11UL) /*!< USCAFBH (Bit 11) */ + #define R_GPT0_GTUPSR_USCAFBH_Msk (0x800UL) /*!< USCAFBH (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTUPSR_USCAFBL_Pos (10UL) /*!< USCAFBL (Bit 10) */ + #define R_GPT0_GTUPSR_USCAFBL_Msk (0x400UL) /*!< USCAFBL (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTUPSR_USCARBH_Pos (9UL) /*!< USCARBH (Bit 9) */ + #define R_GPT0_GTUPSR_USCARBH_Msk (0x200UL) /*!< USCARBH (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTUPSR_USCARBL_Pos (8UL) /*!< USCARBL (Bit 8) */ + #define R_GPT0_GTUPSR_USCARBL_Msk (0x100UL) /*!< USCARBL (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTUPSR_USGTRGF_Pos (1UL) /*!< USGTRGF (Bit 1) */ + #define R_GPT0_GTUPSR_USGTRGF_Msk (0x2UL) /*!< USGTRGF (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTUPSR_USGTRGR_Pos (0UL) /*!< USGTRGR (Bit 0) */ + #define R_GPT0_GTUPSR_USGTRGR_Msk (0x1UL) /*!< USGTRGR (Bitfield-Mask: 0x01) */ +/* ======================================================== GTDNSR ========================================================= */ + #define R_GPT0_GTDNSR_DSILVL_Pos (24UL) /*!< DSILVL (Bit 24) */ + #define R_GPT0_GTDNSR_DSILVL_Msk (0xf000000UL) /*!< DSILVL (Bitfield-Mask: 0x0f) */ + #define R_GPT0_GTDNSR_DSELC_Pos (16UL) /*!< DSELC (Bit 16) */ + #define R_GPT0_GTDNSR_DSELC_Msk (0x10000UL) /*!< DSELC (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTDNSR_DSCBFAH_Pos (15UL) /*!< DSCBFAH (Bit 15) */ + #define R_GPT0_GTDNSR_DSCBFAH_Msk (0x8000UL) /*!< DSCBFAH (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTDNSR_DSCBFAL_Pos (14UL) /*!< DSCBFAL (Bit 14) */ + #define R_GPT0_GTDNSR_DSCBFAL_Msk (0x4000UL) /*!< DSCBFAL (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTDNSR_DSCBRAH_Pos (13UL) /*!< DSCBRAH (Bit 13) */ + #define R_GPT0_GTDNSR_DSCBRAH_Msk (0x2000UL) /*!< DSCBRAH (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTDNSR_DSCBRAL_Pos (12UL) /*!< DSCBRAL (Bit 12) */ + #define R_GPT0_GTDNSR_DSCBRAL_Msk (0x1000UL) /*!< DSCBRAL (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTDNSR_DSCAFBH_Pos (11UL) /*!< DSCAFBH (Bit 11) */ + #define R_GPT0_GTDNSR_DSCAFBH_Msk (0x800UL) /*!< DSCAFBH (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTDNSR_DSCAFBL_Pos (10UL) /*!< DSCAFBL (Bit 10) */ + #define R_GPT0_GTDNSR_DSCAFBL_Msk (0x400UL) /*!< DSCAFBL (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTDNSR_DSCARBH_Pos (9UL) /*!< DSCARBH (Bit 9) */ + #define R_GPT0_GTDNSR_DSCARBH_Msk (0x200UL) /*!< DSCARBH (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTDNSR_DSCARBL_Pos (8UL) /*!< DSCARBL (Bit 8) */ + #define R_GPT0_GTDNSR_DSCARBL_Msk (0x100UL) /*!< DSCARBL (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTDNSR_DSGTRGF_Pos (1UL) /*!< DSGTRGF (Bit 1) */ + #define R_GPT0_GTDNSR_DSGTRGF_Msk (0x2UL) /*!< DSGTRGF (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTDNSR_DSGTRGR_Pos (0UL) /*!< DSGTRGR (Bit 0) */ + #define R_GPT0_GTDNSR_DSGTRGR_Msk (0x1UL) /*!< DSGTRGR (Bitfield-Mask: 0x01) */ +/* ======================================================== GTICASR ======================================================== */ + #define R_GPT0_GTICASR_ASELC_Pos (16UL) /*!< ASELC (Bit 16) */ + #define R_GPT0_GTICASR_ASELC_Msk (0x10000UL) /*!< ASELC (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTICASR_ASCBFAH_Pos (15UL) /*!< ASCBFAH (Bit 15) */ + #define R_GPT0_GTICASR_ASCBFAH_Msk (0x8000UL) /*!< ASCBFAH (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTICASR_ASCBFAL_Pos (14UL) /*!< ASCBFAL (Bit 14) */ + #define R_GPT0_GTICASR_ASCBFAL_Msk (0x4000UL) /*!< ASCBFAL (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTICASR_ASCBRAH_Pos (13UL) /*!< ASCBRAH (Bit 13) */ + #define R_GPT0_GTICASR_ASCBRAH_Msk (0x2000UL) /*!< ASCBRAH (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTICASR_ASCBRAL_Pos (12UL) /*!< ASCBRAL (Bit 12) */ + #define R_GPT0_GTICASR_ASCBRAL_Msk (0x1000UL) /*!< ASCBRAL (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTICASR_ASCAFBH_Pos (11UL) /*!< ASCAFBH (Bit 11) */ + #define R_GPT0_GTICASR_ASCAFBH_Msk (0x800UL) /*!< ASCAFBH (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTICASR_ASCAFBL_Pos (10UL) /*!< ASCAFBL (Bit 10) */ + #define R_GPT0_GTICASR_ASCAFBL_Msk (0x400UL) /*!< ASCAFBL (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTICASR_ASCARBH_Pos (9UL) /*!< ASCARBH (Bit 9) */ + #define R_GPT0_GTICASR_ASCARBH_Msk (0x200UL) /*!< ASCARBH (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTICASR_ASCARBL_Pos (8UL) /*!< ASCARBL (Bit 8) */ + #define R_GPT0_GTICASR_ASCARBL_Msk (0x100UL) /*!< ASCARBL (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTICASR_ASGTRGF_Pos (1UL) /*!< ASGTRGF (Bit 1) */ + #define R_GPT0_GTICASR_ASGTRGF_Msk (0x2UL) /*!< ASGTRGF (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTICASR_ASGTRGR_Pos (0UL) /*!< ASGTRGR (Bit 0) */ + #define R_GPT0_GTICASR_ASGTRGR_Msk (0x1UL) /*!< ASGTRGR (Bitfield-Mask: 0x01) */ +/* ======================================================== GTICBSR ======================================================== */ + #define R_GPT0_GTICBSR_BSELC_Pos (16UL) /*!< BSELC (Bit 16) */ + #define R_GPT0_GTICBSR_BSELC_Msk (0x10000UL) /*!< BSELC (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTICBSR_BSCBFAH_Pos (15UL) /*!< BSCBFAH (Bit 15) */ + #define R_GPT0_GTICBSR_BSCBFAH_Msk (0x8000UL) /*!< BSCBFAH (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTICBSR_BSCBFAL_Pos (14UL) /*!< BSCBFAL (Bit 14) */ + #define R_GPT0_GTICBSR_BSCBFAL_Msk (0x4000UL) /*!< BSCBFAL (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTICBSR_BSCBRAH_Pos (13UL) /*!< BSCBRAH (Bit 13) */ + #define R_GPT0_GTICBSR_BSCBRAH_Msk (0x2000UL) /*!< BSCBRAH (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTICBSR_BSCBRAL_Pos (12UL) /*!< BSCBRAL (Bit 12) */ + #define R_GPT0_GTICBSR_BSCBRAL_Msk (0x1000UL) /*!< BSCBRAL (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTICBSR_BSCAFBH_Pos (11UL) /*!< BSCAFBH (Bit 11) */ + #define R_GPT0_GTICBSR_BSCAFBH_Msk (0x800UL) /*!< BSCAFBH (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTICBSR_BSCAFBL_Pos (10UL) /*!< BSCAFBL (Bit 10) */ + #define R_GPT0_GTICBSR_BSCAFBL_Msk (0x400UL) /*!< BSCAFBL (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTICBSR_BSCARBH_Pos (9UL) /*!< BSCARBH (Bit 9) */ + #define R_GPT0_GTICBSR_BSCARBH_Msk (0x200UL) /*!< BSCARBH (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTICBSR_BSCARBL_Pos (8UL) /*!< BSCARBL (Bit 8) */ + #define R_GPT0_GTICBSR_BSCARBL_Msk (0x100UL) /*!< BSCARBL (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTICBSR_BSGTRGF_Pos (1UL) /*!< BSGTRGF (Bit 1) */ + #define R_GPT0_GTICBSR_BSGTRGF_Msk (0x2UL) /*!< BSGTRGF (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTICBSR_BSGTRGR_Pos (0UL) /*!< BSGTRGR (Bit 0) */ + #define R_GPT0_GTICBSR_BSGTRGR_Msk (0x1UL) /*!< BSGTRGR (Bitfield-Mask: 0x01) */ +/* ========================================================= GTCR ========================================================== */ + #define R_GPT0_GTCR_CKEG_Pos (27UL) /*!< CKEG (Bit 27) */ + #define R_GPT0_GTCR_CKEG_Msk (0x18000000UL) /*!< CKEG (Bitfield-Mask: 0x03) */ + #define R_GPT0_GTCR_TPCS_Pos (23UL) /*!< TPCS (Bit 23) */ + #define R_GPT0_GTCR_TPCS_Msk (0x7800000UL) /*!< TPCS (Bitfield-Mask: 0x0f) */ + #define R_GPT0_GTCR_MD_Pos (16UL) /*!< MD (Bit 16) */ + #define R_GPT0_GTCR_MD_Msk (0xf0000UL) /*!< MD (Bitfield-Mask: 0x0f) */ + #define R_GPT0_GTCR_SSCEN_Pos (15UL) /*!< SSCEN (Bit 15) */ + #define R_GPT0_GTCR_SSCEN_Msk (0x8000UL) /*!< SSCEN (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTCR_CPSCD_Pos (12UL) /*!< CPSCD (Bit 12) */ + #define R_GPT0_GTCR_CPSCD_Msk (0x1000UL) /*!< CPSCD (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTCR_SSCGRP_Pos (10UL) /*!< SSCGRP (Bit 10) */ + #define R_GPT0_GTCR_SSCGRP_Msk (0xc00UL) /*!< SSCGRP (Bitfield-Mask: 0x03) */ + #define R_GPT0_GTCR_SCGTIOC_Pos (9UL) /*!< SCGTIOC (Bit 9) */ + #define R_GPT0_GTCR_SCGTIOC_Msk (0x200UL) /*!< SCGTIOC (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTCR_ICDS_Pos (8UL) /*!< ICDS (Bit 8) */ + #define R_GPT0_GTCR_ICDS_Msk (0x100UL) /*!< ICDS (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTCR_CST_Pos (0UL) /*!< CST (Bit 0) */ + #define R_GPT0_GTCR_CST_Msk (0x1UL) /*!< CST (Bitfield-Mask: 0x01) */ +/* ======================================================= GTUDDTYC ======================================================== */ + #define R_GPT0_GTUDDTYC_OBDTYR_Pos (27UL) /*!< OBDTYR (Bit 27) */ + #define R_GPT0_GTUDDTYC_OBDTYR_Msk (0x8000000UL) /*!< OBDTYR (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTUDDTYC_OBDTYF_Pos (26UL) /*!< OBDTYF (Bit 26) */ + #define R_GPT0_GTUDDTYC_OBDTYF_Msk (0x4000000UL) /*!< OBDTYF (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTUDDTYC_OBDTY_Pos (24UL) /*!< OBDTY (Bit 24) */ + #define R_GPT0_GTUDDTYC_OBDTY_Msk (0x3000000UL) /*!< OBDTY (Bitfield-Mask: 0x03) */ + #define R_GPT0_GTUDDTYC_OADTYR_Pos (19UL) /*!< OADTYR (Bit 19) */ + #define R_GPT0_GTUDDTYC_OADTYR_Msk (0x80000UL) /*!< OADTYR (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTUDDTYC_OADTYF_Pos (18UL) /*!< OADTYF (Bit 18) */ + #define R_GPT0_GTUDDTYC_OADTYF_Msk (0x40000UL) /*!< OADTYF (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTUDDTYC_OADTY_Pos (16UL) /*!< OADTY (Bit 16) */ + #define R_GPT0_GTUDDTYC_OADTY_Msk (0x30000UL) /*!< OADTY (Bitfield-Mask: 0x03) */ + #define R_GPT0_GTUDDTYC_UDF_Pos (1UL) /*!< UDF (Bit 1) */ + #define R_GPT0_GTUDDTYC_UDF_Msk (0x2UL) /*!< UDF (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTUDDTYC_UD_Pos (0UL) /*!< UD (Bit 0) */ + #define R_GPT0_GTUDDTYC_UD_Msk (0x1UL) /*!< UD (Bitfield-Mask: 0x01) */ +/* ========================================================= GTIOR ========================================================= */ + #define R_GPT0_GTIOR_NFCSB_Pos (30UL) /*!< NFCSB (Bit 30) */ + #define R_GPT0_GTIOR_NFCSB_Msk (0xc0000000UL) /*!< NFCSB (Bitfield-Mask: 0x03) */ + #define R_GPT0_GTIOR_NFBEN_Pos (29UL) /*!< NFBEN (Bit 29) */ + #define R_GPT0_GTIOR_NFBEN_Msk (0x20000000UL) /*!< NFBEN (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTIOR_OBEOCD_Pos (27UL) /*!< OBEOCD (Bit 27) */ + #define R_GPT0_GTIOR_OBEOCD_Msk (0x8000000UL) /*!< OBEOCD (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTIOR_OBDF_Pos (25UL) /*!< OBDF (Bit 25) */ + #define R_GPT0_GTIOR_OBDF_Msk (0x6000000UL) /*!< OBDF (Bitfield-Mask: 0x03) */ + #define R_GPT0_GTIOR_OBE_Pos (24UL) /*!< OBE (Bit 24) */ + #define R_GPT0_GTIOR_OBE_Msk (0x1000000UL) /*!< OBE (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTIOR_OBHLD_Pos (23UL) /*!< OBHLD (Bit 23) */ + #define R_GPT0_GTIOR_OBHLD_Msk (0x800000UL) /*!< OBHLD (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTIOR_OBDFLT_Pos (22UL) /*!< OBDFLT (Bit 22) */ + #define R_GPT0_GTIOR_OBDFLT_Msk (0x400000UL) /*!< OBDFLT (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTIOR_GTIOB_Pos (16UL) /*!< GTIOB (Bit 16) */ + #define R_GPT0_GTIOR_GTIOB_Msk (0x1f0000UL) /*!< GTIOB (Bitfield-Mask: 0x1f) */ + #define R_GPT0_GTIOR_NFCSA_Pos (14UL) /*!< NFCSA (Bit 14) */ + #define R_GPT0_GTIOR_NFCSA_Msk (0xc000UL) /*!< NFCSA (Bitfield-Mask: 0x03) */ + #define R_GPT0_GTIOR_NFAEN_Pos (13UL) /*!< NFAEN (Bit 13) */ + #define R_GPT0_GTIOR_NFAEN_Msk (0x2000UL) /*!< NFAEN (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTIOR_PSYE_Pos (12UL) /*!< PSYE (Bit 12) */ + #define R_GPT0_GTIOR_PSYE_Msk (0x1000UL) /*!< PSYE (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTIOR_OAEOCD_Pos (11UL) /*!< OAEOCD (Bit 11) */ + #define R_GPT0_GTIOR_OAEOCD_Msk (0x800UL) /*!< OAEOCD (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTIOR_OADF_Pos (9UL) /*!< OADF (Bit 9) */ + #define R_GPT0_GTIOR_OADF_Msk (0x600UL) /*!< OADF (Bitfield-Mask: 0x03) */ + #define R_GPT0_GTIOR_OAE_Pos (8UL) /*!< OAE (Bit 8) */ + #define R_GPT0_GTIOR_OAE_Msk (0x100UL) /*!< OAE (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTIOR_OAHLD_Pos (7UL) /*!< OAHLD (Bit 7) */ + #define R_GPT0_GTIOR_OAHLD_Msk (0x80UL) /*!< OAHLD (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTIOR_OADFLT_Pos (6UL) /*!< OADFLT (Bit 6) */ + #define R_GPT0_GTIOR_OADFLT_Msk (0x40UL) /*!< OADFLT (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTIOR_CPSCIR_Pos (5UL) /*!< CPSCIR (Bit 5) */ + #define R_GPT0_GTIOR_CPSCIR_Msk (0x20UL) /*!< CPSCIR (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTIOR_GTIOA_Pos (0UL) /*!< GTIOA (Bit 0) */ + #define R_GPT0_GTIOR_GTIOA_Msk (0x1fUL) /*!< GTIOA (Bitfield-Mask: 0x1f) */ +/* ======================================================== GTINTAD ======================================================== */ + #define R_GPT0_GTINTAD_GTINTPC_Pos (31UL) /*!< GTINTPC (Bit 31) */ + #define R_GPT0_GTINTAD_GTINTPC_Msk (0x80000000UL) /*!< GTINTPC (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTINTAD_GRPABL_Pos (30UL) /*!< GRPABL (Bit 30) */ + #define R_GPT0_GTINTAD_GRPABL_Msk (0x40000000UL) /*!< GRPABL (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTINTAD_GRPABH_Pos (29UL) /*!< GRPABH (Bit 29) */ + #define R_GPT0_GTINTAD_GRPABH_Msk (0x20000000UL) /*!< GRPABH (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTINTAD_GRPDTE_Pos (28UL) /*!< GRPDTE (Bit 28) */ + #define R_GPT0_GTINTAD_GRPDTE_Msk (0x10000000UL) /*!< GRPDTE (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTINTAD_GRP_Pos (24UL) /*!< GRP (Bit 24) */ + #define R_GPT0_GTINTAD_GRP_Msk (0x3000000UL) /*!< GRP (Bitfield-Mask: 0x03) */ + #define R_GPT0_GTINTAD_ADTRDEN_Pos (17UL) /*!< ADTRDEN (Bit 17) */ + #define R_GPT0_GTINTAD_ADTRDEN_Msk (0x20000UL) /*!< ADTRDEN (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTINTAD_ADTRUEN_Pos (16UL) /*!< ADTRUEN (Bit 16) */ + #define R_GPT0_GTINTAD_ADTRUEN_Msk (0x10000UL) /*!< ADTRUEN (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTINTAD_SCFPU_Pos (15UL) /*!< SCFPU (Bit 15) */ + #define R_GPT0_GTINTAD_SCFPU_Msk (0x8000UL) /*!< SCFPU (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTINTAD_SCFPO_Pos (14UL) /*!< SCFPO (Bit 14) */ + #define R_GPT0_GTINTAD_SCFPO_Msk (0x4000UL) /*!< SCFPO (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTINTAD_SCF_Pos (8UL) /*!< SCF (Bit 8) */ + #define R_GPT0_GTINTAD_SCF_Msk (0x100UL) /*!< SCF (Bitfield-Mask: 0x01) */ +/* ========================================================= GTST ========================================================== */ + #define R_GPT0_GTST_OABLF_Pos (30UL) /*!< OABLF (Bit 30) */ + #define R_GPT0_GTST_OABLF_Msk (0x40000000UL) /*!< OABLF (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTST_OABHF_Pos (29UL) /*!< OABHF (Bit 29) */ + #define R_GPT0_GTST_OABHF_Msk (0x20000000UL) /*!< OABHF (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTST_DTEF_Pos (28UL) /*!< DTEF (Bit 28) */ + #define R_GPT0_GTST_DTEF_Msk (0x10000000UL) /*!< DTEF (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTST_ODF_Pos (24UL) /*!< ODF (Bit 24) */ + #define R_GPT0_GTST_ODF_Msk (0x1000000UL) /*!< ODF (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTST_ADTRBDF_Pos (19UL) /*!< ADTRBDF (Bit 19) */ + #define R_GPT0_GTST_ADTRBDF_Msk (0x80000UL) /*!< ADTRBDF (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTST_ADTRBUF_Pos (18UL) /*!< ADTRBUF (Bit 18) */ + #define R_GPT0_GTST_ADTRBUF_Msk (0x40000UL) /*!< ADTRBUF (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTST_ADTRADF_Pos (17UL) /*!< ADTRADF (Bit 17) */ + #define R_GPT0_GTST_ADTRADF_Msk (0x20000UL) /*!< ADTRADF (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTST_ADTRAUF_Pos (16UL) /*!< ADTRAUF (Bit 16) */ + #define R_GPT0_GTST_ADTRAUF_Msk (0x10000UL) /*!< ADTRAUF (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTST_TUCF_Pos (15UL) /*!< TUCF (Bit 15) */ + #define R_GPT0_GTST_TUCF_Msk (0x8000UL) /*!< TUCF (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTST_ITCNT_Pos (8UL) /*!< ITCNT (Bit 8) */ + #define R_GPT0_GTST_ITCNT_Msk (0x700UL) /*!< ITCNT (Bitfield-Mask: 0x07) */ + #define R_GPT0_GTST_TCFPU_Pos (7UL) /*!< TCFPU (Bit 7) */ + #define R_GPT0_GTST_TCFPU_Msk (0x80UL) /*!< TCFPU (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTST_TCFPO_Pos (6UL) /*!< TCFPO (Bit 6) */ + #define R_GPT0_GTST_TCFPO_Msk (0x40UL) /*!< TCFPO (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTST_TCFF_Pos (5UL) /*!< TCFF (Bit 5) */ + #define R_GPT0_GTST_TCFF_Msk (0x20UL) /*!< TCFF (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTST_TCFE_Pos (4UL) /*!< TCFE (Bit 4) */ + #define R_GPT0_GTST_TCFE_Msk (0x10UL) /*!< TCFE (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTST_TCFD_Pos (3UL) /*!< TCFD (Bit 3) */ + #define R_GPT0_GTST_TCFD_Msk (0x8UL) /*!< TCFD (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTST_TCFC_Pos (2UL) /*!< TCFC (Bit 2) */ + #define R_GPT0_GTST_TCFC_Msk (0x4UL) /*!< TCFC (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTST_TCFB_Pos (1UL) /*!< TCFB (Bit 1) */ + #define R_GPT0_GTST_TCFB_Msk (0x2UL) /*!< TCFB (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTST_TCFA_Pos (0UL) /*!< TCFA (Bit 0) */ + #define R_GPT0_GTST_TCFA_Msk (0x1UL) /*!< TCFA (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTST_PCF_Pos (31UL) /*!< PCF (Bit 31) */ + #define R_GPT0_GTST_PCF_Msk (0x80000000UL) /*!< PCF (Bitfield-Mask: 0x01) */ +/* ========================================================= GTBER ========================================================= */ + #define R_GPT0_GTBER_ADTDB_Pos (30UL) /*!< ADTDB (Bit 30) */ + #define R_GPT0_GTBER_ADTDB_Msk (0x40000000UL) /*!< ADTDB (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTBER_ADTTB_Pos (28UL) /*!< ADTTB (Bit 28) */ + #define R_GPT0_GTBER_ADTTB_Msk (0x30000000UL) /*!< ADTTB (Bitfield-Mask: 0x03) */ + #define R_GPT0_GTBER_ADTDA_Pos (26UL) /*!< ADTDA (Bit 26) */ + #define R_GPT0_GTBER_ADTDA_Msk (0x4000000UL) /*!< ADTDA (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTBER_ADTTA_Pos (24UL) /*!< ADTTA (Bit 24) */ + #define R_GPT0_GTBER_ADTTA_Msk (0x3000000UL) /*!< ADTTA (Bitfield-Mask: 0x03) */ + #define R_GPT0_GTBER_CCRSWT_Pos (22UL) /*!< CCRSWT (Bit 22) */ + #define R_GPT0_GTBER_CCRSWT_Msk (0x400000UL) /*!< CCRSWT (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTBER_PR_Pos (20UL) /*!< PR (Bit 20) */ + #define R_GPT0_GTBER_PR_Msk (0x300000UL) /*!< PR (Bitfield-Mask: 0x03) */ + #define R_GPT0_GTBER_CCRB_Pos (18UL) /*!< CCRB (Bit 18) */ + #define R_GPT0_GTBER_CCRB_Msk (0xc0000UL) /*!< CCRB (Bitfield-Mask: 0x03) */ + #define R_GPT0_GTBER_CCRA_Pos (16UL) /*!< CCRA (Bit 16) */ + #define R_GPT0_GTBER_CCRA_Msk (0x30000UL) /*!< CCRA (Bitfield-Mask: 0x03) */ + #define R_GPT0_GTBER_DBRTEC_Pos (8UL) /*!< DBRTEC (Bit 8) */ + #define R_GPT0_GTBER_DBRTEC_Msk (0x100UL) /*!< DBRTEC (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTBER_BD3_Pos (3UL) /*!< BD3 (Bit 3) */ + #define R_GPT0_GTBER_BD3_Msk (0x8UL) /*!< BD3 (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTBER_BD2_Pos (2UL) /*!< BD2 (Bit 2) */ + #define R_GPT0_GTBER_BD2_Msk (0x4UL) /*!< BD2 (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTBER_BD1_Pos (1UL) /*!< BD1 (Bit 1) */ + #define R_GPT0_GTBER_BD1_Msk (0x2UL) /*!< BD1 (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTBER_BD0_Pos (0UL) /*!< BD0 (Bit 0) */ + #define R_GPT0_GTBER_BD0_Msk (0x1UL) /*!< BD0 (Bitfield-Mask: 0x01) */ +/* ========================================================= GTITC ========================================================= */ + #define R_GPT0_GTITC_ADTBL_Pos (14UL) /*!< ADTBL (Bit 14) */ + #define R_GPT0_GTITC_ADTBL_Msk (0x4000UL) /*!< ADTBL (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTITC_ADTAL_Pos (12UL) /*!< ADTAL (Bit 12) */ + #define R_GPT0_GTITC_ADTAL_Msk (0x1000UL) /*!< ADTAL (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTITC_IVTT_Pos (8UL) /*!< IVTT (Bit 8) */ + #define R_GPT0_GTITC_IVTT_Msk (0x700UL) /*!< IVTT (Bitfield-Mask: 0x07) */ + #define R_GPT0_GTITC_IVTC_Pos (6UL) /*!< IVTC (Bit 6) */ + #define R_GPT0_GTITC_IVTC_Msk (0xc0UL) /*!< IVTC (Bitfield-Mask: 0x03) */ + #define R_GPT0_GTITC_ITLF_Pos (5UL) /*!< ITLF (Bit 5) */ + #define R_GPT0_GTITC_ITLF_Msk (0x20UL) /*!< ITLF (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTITC_ITLE_Pos (4UL) /*!< ITLE (Bit 4) */ + #define R_GPT0_GTITC_ITLE_Msk (0x10UL) /*!< ITLE (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTITC_ITLD_Pos (3UL) /*!< ITLD (Bit 3) */ + #define R_GPT0_GTITC_ITLD_Msk (0x8UL) /*!< ITLD (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTITC_ITLC_Pos (2UL) /*!< ITLC (Bit 2) */ + #define R_GPT0_GTITC_ITLC_Msk (0x4UL) /*!< ITLC (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTITC_ITLB_Pos (1UL) /*!< ITLB (Bit 1) */ + #define R_GPT0_GTITC_ITLB_Msk (0x2UL) /*!< ITLB (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTITC_ITLA_Pos (0UL) /*!< ITLA (Bit 0) */ + #define R_GPT0_GTITC_ITLA_Msk (0x1UL) /*!< ITLA (Bitfield-Mask: 0x01) */ +/* ========================================================= GTCNT ========================================================= */ + #define R_GPT0_GTCNT_GTCNT_Pos (0UL) /*!< GTCNT (Bit 0) */ + #define R_GPT0_GTCNT_GTCNT_Msk (0xffffffffUL) /*!< GTCNT (Bitfield-Mask: 0xffffffff) */ +/* ========================================================= GTCCR ========================================================= */ + #define R_GPT0_GTCCR_GTCCR_Pos (0UL) /*!< GTCCR (Bit 0) */ + #define R_GPT0_GTCCR_GTCCR_Msk (0xffffffffUL) /*!< GTCCR (Bitfield-Mask: 0xffffffff) */ +/* ========================================================= GTPR ========================================================== */ + #define R_GPT0_GTPR_GTPR_Pos (0UL) /*!< GTPR (Bit 0) */ + #define R_GPT0_GTPR_GTPR_Msk (0xffffffffUL) /*!< GTPR (Bitfield-Mask: 0xffffffff) */ +/* ========================================================= GTPBR ========================================================= */ + #define R_GPT0_GTPBR_GTPBR_Pos (0UL) /*!< GTPBR (Bit 0) */ + #define R_GPT0_GTPBR_GTPBR_Msk (0xffffffffUL) /*!< GTPBR (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== GTPDBR ========================================================= */ + #define R_GPT0_GTPDBR_GTPDBR_Pos (0UL) /*!< GTPDBR (Bit 0) */ + #define R_GPT0_GTPDBR_GTPDBR_Msk (0xffffffffUL) /*!< GTPDBR (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== GTADTRA ======================================================== */ + #define R_GPT0_GTADTRA_GTADTRA_Pos (0UL) /*!< GTADTRA (Bit 0) */ + #define R_GPT0_GTADTRA_GTADTRA_Msk (0xffffffffUL) /*!< GTADTRA (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== GTADTRB ======================================================== */ + #define R_GPT0_GTADTRB_GTADTRB_Pos (0UL) /*!< GTADTRB (Bit 0) */ + #define R_GPT0_GTADTRB_GTADTRB_Msk (0xffffffffUL) /*!< GTADTRB (Bitfield-Mask: 0xffffffff) */ +/* ======================================================= GTADTBRA ======================================================== */ + #define R_GPT0_GTADTBRA_GTADTBRA_Pos (0UL) /*!< GTADTBRA (Bit 0) */ + #define R_GPT0_GTADTBRA_GTADTBRA_Msk (0xffffffffUL) /*!< GTADTBRA (Bitfield-Mask: 0xffffffff) */ +/* ======================================================= GTADTBRB ======================================================== */ + #define R_GPT0_GTADTBRB_GTADTBRB_Pos (0UL) /*!< GTADTBRB (Bit 0) */ + #define R_GPT0_GTADTBRB_GTADTBRB_Msk (0xffffffffUL) /*!< GTADTBRB (Bitfield-Mask: 0xffffffff) */ +/* ======================================================= GTADTDBRA ======================================================= */ + #define R_GPT0_GTADTDBRA_GTADTDBRA_Pos (0UL) /*!< GTADTDBRA (Bit 0) */ + #define R_GPT0_GTADTDBRA_GTADTDBRA_Msk (0xffffffffUL) /*!< GTADTDBRA (Bitfield-Mask: 0xffffffff) */ +/* ======================================================= GTADTDBRB ======================================================= */ + #define R_GPT0_GTADTDBRB_GTADTDBRB_Pos (0UL) /*!< GTADTDBRB (Bit 0) */ + #define R_GPT0_GTADTDBRB_GTADTDBRB_Msk (0xffffffffUL) /*!< GTADTDBRB (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== GTDTCR ========================================================= */ + #define R_GPT0_GTDTCR_TDFER_Pos (8UL) /*!< TDFER (Bit 8) */ + #define R_GPT0_GTDTCR_TDFER_Msk (0x100UL) /*!< TDFER (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTDTCR_TDBDE_Pos (5UL) /*!< TDBDE (Bit 5) */ + #define R_GPT0_GTDTCR_TDBDE_Msk (0x20UL) /*!< TDBDE (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTDTCR_TDBUE_Pos (4UL) /*!< TDBUE (Bit 4) */ + #define R_GPT0_GTDTCR_TDBUE_Msk (0x10UL) /*!< TDBUE (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTDTCR_TDE_Pos (0UL) /*!< TDE (Bit 0) */ + #define R_GPT0_GTDTCR_TDE_Msk (0x1UL) /*!< TDE (Bitfield-Mask: 0x01) */ +/* ========================================================= GTDVU ========================================================= */ + #define R_GPT0_GTDVU_GTDVU_Pos (0UL) /*!< GTDVU (Bit 0) */ + #define R_GPT0_GTDVU_GTDVU_Msk (0xffffffffUL) /*!< GTDVU (Bitfield-Mask: 0xffffffff) */ +/* ========================================================= GTDVD ========================================================= */ + #define R_GPT0_GTDVD_GTDVD_Pos (0UL) /*!< GTDVD (Bit 0) */ + #define R_GPT0_GTDVD_GTDVD_Msk (0xffffffffUL) /*!< GTDVD (Bitfield-Mask: 0xffffffff) */ +/* ========================================================= GTDBU ========================================================= */ + #define R_GPT0_GTDBU_GTDVU_Pos (0UL) /*!< GTDVU (Bit 0) */ + #define R_GPT0_GTDBU_GTDVU_Msk (0xffffffffUL) /*!< GTDVU (Bitfield-Mask: 0xffffffff) */ +/* ========================================================= GTDBD ========================================================= */ + #define R_GPT0_GTDBD_GTDBD_Pos (0UL) /*!< GTDBD (Bit 0) */ + #define R_GPT0_GTDBD_GTDBD_Msk (0xffffffffUL) /*!< GTDBD (Bitfield-Mask: 0xffffffff) */ +/* ========================================================= GTSOS ========================================================= */ + #define R_GPT0_GTSOS_SOS_Pos (0UL) /*!< SOS (Bit 0) */ + #define R_GPT0_GTSOS_SOS_Msk (0x3UL) /*!< SOS (Bitfield-Mask: 0x03) */ +/* ======================================================== GTSOTR ========================================================= */ + #define R_GPT0_GTSOTR_SOTR_Pos (0UL) /*!< SOTR (Bit 0) */ + #define R_GPT0_GTSOTR_SOTR_Msk (0x1UL) /*!< SOTR (Bitfield-Mask: 0x01) */ +/* ======================================================== GTADSMR ======================================================== */ + #define R_GPT0_GTADSMR_ADSMS0_Pos (0UL) /*!< ADSMS0 (Bit 0) */ + #define R_GPT0_GTADSMR_ADSMS0_Msk (0x3UL) /*!< ADSMS0 (Bitfield-Mask: 0x03) */ + #define R_GPT0_GTADSMR_ADSMEN0_Pos (8UL) /*!< ADSMEN0 (Bit 8) */ + #define R_GPT0_GTADSMR_ADSMEN0_Msk (0x100UL) /*!< ADSMEN0 (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTADSMR_ADSMS1_Pos (16UL) /*!< ADSMS1 (Bit 16) */ + #define R_GPT0_GTADSMR_ADSMS1_Msk (0x30000UL) /*!< ADSMS1 (Bitfield-Mask: 0x03) */ + #define R_GPT0_GTADSMR_ADSMEN1_Pos (24UL) /*!< ADSMEN1 (Bit 24) */ + #define R_GPT0_GTADSMR_ADSMEN1_Msk (0x1000000UL) /*!< ADSMEN1 (Bitfield-Mask: 0x01) */ +/* ======================================================== GTEITC ========================================================= */ + #define R_GPT0_GTEITC_EIVTC1_Pos (0UL) /*!< EIVTC1 (Bit 0) */ + #define R_GPT0_GTEITC_EIVTC1_Msk (0x3UL) /*!< EIVTC1 (Bitfield-Mask: 0x03) */ + #define R_GPT0_GTEITC_EIVTT1_Pos (4UL) /*!< EIVTT1 (Bit 4) */ + #define R_GPT0_GTEITC_EIVTT1_Msk (0xf0UL) /*!< EIVTT1 (Bitfield-Mask: 0x0f) */ + #define R_GPT0_GTEITC_EITCNT1_Pos (12UL) /*!< EITCNT1 (Bit 12) */ + #define R_GPT0_GTEITC_EITCNT1_Msk (0xf000UL) /*!< EITCNT1 (Bitfield-Mask: 0x0f) */ + #define R_GPT0_GTEITC_EIVTC2_Pos (16UL) /*!< EIVTC2 (Bit 16) */ + #define R_GPT0_GTEITC_EIVTC2_Msk (0x30000UL) /*!< EIVTC2 (Bitfield-Mask: 0x03) */ + #define R_GPT0_GTEITC_EIVTT2_Pos (20UL) /*!< EIVTT2 (Bit 20) */ + #define R_GPT0_GTEITC_EIVTT2_Msk (0xf00000UL) /*!< EIVTT2 (Bitfield-Mask: 0x0f) */ + #define R_GPT0_GTEITC_EITCNT2IV_Pos (24UL) /*!< EITCNT2IV (Bit 24) */ + #define R_GPT0_GTEITC_EITCNT2IV_Msk (0xf000000UL) /*!< EITCNT2IV (Bitfield-Mask: 0x0f) */ + #define R_GPT0_GTEITC_EITCNT2_Pos (28UL) /*!< EITCNT2 (Bit 28) */ + #define R_GPT0_GTEITC_EITCNT2_Msk (0xf0000000UL) /*!< EITCNT2 (Bitfield-Mask: 0x0f) */ +/* ======================================================= GTEITLI1 ======================================================== */ + #define R_GPT0_GTEITLI1_EITLA_Pos (0UL) /*!< EITLA (Bit 0) */ + #define R_GPT0_GTEITLI1_EITLA_Msk (0x7UL) /*!< EITLA (Bitfield-Mask: 0x07) */ + #define R_GPT0_GTEITLI1_EITLB_Pos (4UL) /*!< EITLB (Bit 4) */ + #define R_GPT0_GTEITLI1_EITLB_Msk (0x70UL) /*!< EITLB (Bitfield-Mask: 0x07) */ + #define R_GPT0_GTEITLI1_EITLC_Pos (8UL) /*!< EITLC (Bit 8) */ + #define R_GPT0_GTEITLI1_EITLC_Msk (0x700UL) /*!< EITLC (Bitfield-Mask: 0x07) */ + #define R_GPT0_GTEITLI1_EITLD_Pos (12UL) /*!< EITLD (Bit 12) */ + #define R_GPT0_GTEITLI1_EITLD_Msk (0x7000UL) /*!< EITLD (Bitfield-Mask: 0x07) */ + #define R_GPT0_GTEITLI1_EITLE_Pos (16UL) /*!< EITLE (Bit 16) */ + #define R_GPT0_GTEITLI1_EITLE_Msk (0x70000UL) /*!< EITLE (Bitfield-Mask: 0x07) */ + #define R_GPT0_GTEITLI1_EITLF_Pos (20UL) /*!< EITLF (Bit 20) */ + #define R_GPT0_GTEITLI1_EITLF_Msk (0x700000UL) /*!< EITLF (Bitfield-Mask: 0x07) */ + #define R_GPT0_GTEITLI1_EITLV_Pos (24UL) /*!< EITLV (Bit 24) */ + #define R_GPT0_GTEITLI1_EITLV_Msk (0x7000000UL) /*!< EITLV (Bitfield-Mask: 0x07) */ + #define R_GPT0_GTEITLI1_EITLU_Pos (28UL) /*!< EITLU (Bit 28) */ + #define R_GPT0_GTEITLI1_EITLU_Msk (0x70000000UL) /*!< EITLU (Bitfield-Mask: 0x07) */ +/* ======================================================= GTEITLI2 ======================================================== */ + #define R_GPT0_GTEITLI2_EADTAL_Pos (0UL) /*!< EADTAL (Bit 0) */ + #define R_GPT0_GTEITLI2_EADTAL_Msk (0x7UL) /*!< EADTAL (Bitfield-Mask: 0x07) */ + #define R_GPT0_GTEITLI2_EADTBL_Pos (4UL) /*!< EADTBL (Bit 4) */ + #define R_GPT0_GTEITLI2_EADTBL_Msk (0x70UL) /*!< EADTBL (Bitfield-Mask: 0x07) */ +/* ======================================================== GTEITLB ======================================================== */ + #define R_GPT0_GTEITLB_EBTLCA_Pos (0UL) /*!< EBTLCA (Bit 0) */ + #define R_GPT0_GTEITLB_EBTLCA_Msk (0x7UL) /*!< EBTLCA (Bitfield-Mask: 0x07) */ + #define R_GPT0_GTEITLB_EBTLCB_Pos (4UL) /*!< EBTLCB (Bit 4) */ + #define R_GPT0_GTEITLB_EBTLCB_Msk (0x70UL) /*!< EBTLCB (Bitfield-Mask: 0x07) */ + #define R_GPT0_GTEITLB_EBTLPR_Pos (8UL) /*!< EBTLPR (Bit 8) */ + #define R_GPT0_GTEITLB_EBTLPR_Msk (0x700UL) /*!< EBTLPR (Bitfield-Mask: 0x07) */ + #define R_GPT0_GTEITLB_EBTLADA_Pos (16UL) /*!< EBTLADA (Bit 16) */ + #define R_GPT0_GTEITLB_EBTLADA_Msk (0x70000UL) /*!< EBTLADA (Bitfield-Mask: 0x07) */ + #define R_GPT0_GTEITLB_EBTLADB_Pos (20UL) /*!< EBTLADB (Bit 20) */ + #define R_GPT0_GTEITLB_EBTLADB_Msk (0x700000UL) /*!< EBTLADB (Bitfield-Mask: 0x07) */ + #define R_GPT0_GTEITLB_EBTLDVU_Pos (24UL) /*!< EBTLDVU (Bit 24) */ + #define R_GPT0_GTEITLB_EBTLDVU_Msk (0x7000000UL) /*!< EBTLDVU (Bitfield-Mask: 0x07) */ + #define R_GPT0_GTEITLB_EBTLDVD_Pos (28UL) /*!< EBTLDVD (Bit 28) */ + #define R_GPT0_GTEITLB_EBTLDVD_Msk (0x70000000UL) /*!< EBTLDVD (Bitfield-Mask: 0x07) */ +/* ======================================================== GTICLF ========================================================= */ + #define R_GPT0_GTICLF_ICLFA_Pos (0UL) /*!< ICLFA (Bit 0) */ + #define R_GPT0_GTICLF_ICLFA_Msk (0x7UL) /*!< ICLFA (Bitfield-Mask: 0x07) */ + #define R_GPT0_GTICLF_ICLFSELC_Pos (4UL) /*!< ICLFSELC (Bit 4) */ + #define R_GPT0_GTICLF_ICLFSELC_Msk (0x3f0UL) /*!< ICLFSELC (Bitfield-Mask: 0x3f) */ + #define R_GPT0_GTICLF_ICLFB_Pos (16UL) /*!< ICLFB (Bit 16) */ + #define R_GPT0_GTICLF_ICLFB_Msk (0x70000UL) /*!< ICLFB (Bitfield-Mask: 0x07) */ + #define R_GPT0_GTICLF_ICLFSELD_Pos (20UL) /*!< ICLFSELD (Bit 20) */ + #define R_GPT0_GTICLF_ICLFSELD_Msk (0x3f00000UL) /*!< ICLFSELD (Bitfield-Mask: 0x3f) */ +/* ========================================================= GTPC ========================================================== */ + #define R_GPT0_GTPC_PCEN_Pos (0UL) /*!< PCEN (Bit 0) */ + #define R_GPT0_GTPC_PCEN_Msk (0x1UL) /*!< PCEN (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTPC_ASTP_Pos (8UL) /*!< ASTP (Bit 8) */ + #define R_GPT0_GTPC_ASTP_Msk (0x100UL) /*!< ASTP (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTPC_PCNT_Pos (16UL) /*!< PCNT (Bit 16) */ + #define R_GPT0_GTPC_PCNT_Msk (0xfff0000UL) /*!< PCNT (Bitfield-Mask: 0xfff) */ +/* ======================================================== GTSECSR ======================================================== */ + #define R_GPT0_GTSECSR_SECSEL0_Pos (0UL) /*!< SECSEL0 (Bit 0) */ + #define R_GPT0_GTSECSR_SECSEL0_Msk (0x1UL) /*!< SECSEL0 (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTSECSR_SECSEL1_Pos (1UL) /*!< SECSEL1 (Bit 1) */ + #define R_GPT0_GTSECSR_SECSEL1_Msk (0x2UL) /*!< SECSEL1 (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTSECSR_SECSEL2_Pos (2UL) /*!< SECSEL2 (Bit 2) */ + #define R_GPT0_GTSECSR_SECSEL2_Msk (0x4UL) /*!< SECSEL2 (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTSECSR_SECSEL3_Pos (3UL) /*!< SECSEL3 (Bit 3) */ + #define R_GPT0_GTSECSR_SECSEL3_Msk (0x8UL) /*!< SECSEL3 (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTSECSR_SECSEL4_Pos (4UL) /*!< SECSEL4 (Bit 4) */ + #define R_GPT0_GTSECSR_SECSEL4_Msk (0x10UL) /*!< SECSEL4 (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTSECSR_SECSEL5_Pos (5UL) /*!< SECSEL5 (Bit 5) */ + #define R_GPT0_GTSECSR_SECSEL5_Msk (0x20UL) /*!< SECSEL5 (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTSECSR_SECSEL6_Pos (6UL) /*!< SECSEL6 (Bit 6) */ + #define R_GPT0_GTSECSR_SECSEL6_Msk (0x40UL) /*!< SECSEL6 (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTSECSR_SECSEL7_Pos (7UL) /*!< SECSEL7 (Bit 7) */ + #define R_GPT0_GTSECSR_SECSEL7_Msk (0x80UL) /*!< SECSEL7 (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTSECSR_SECSEL8_Pos (8UL) /*!< SECSEL8 (Bit 8) */ + #define R_GPT0_GTSECSR_SECSEL8_Msk (0x100UL) /*!< SECSEL8 (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTSECSR_SECSEL9_Pos (9UL) /*!< SECSEL9 (Bit 9) */ + #define R_GPT0_GTSECSR_SECSEL9_Msk (0x200UL) /*!< SECSEL9 (Bitfield-Mask: 0x01) */ +/* ======================================================== GTSECR ========================================================= */ + #define R_GPT0_GTSECR_SBDCE_Pos (0UL) /*!< SBDCE (Bit 0) */ + #define R_GPT0_GTSECR_SBDCE_Msk (0x1UL) /*!< SBDCE (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTSECR_SBDPE_Pos (1UL) /*!< SBDPE (Bit 1) */ + #define R_GPT0_GTSECR_SBDPE_Msk (0x2UL) /*!< SBDPE (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTSECR_SBDAE_Pos (2UL) /*!< SBDAE (Bit 2) */ + #define R_GPT0_GTSECR_SBDAE_Msk (0x4UL) /*!< SBDAE (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTSECR_SBDDE_Pos (3UL) /*!< SBDDE (Bit 3) */ + #define R_GPT0_GTSECR_SBDDE_Msk (0x8UL) /*!< SBDDE (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTSECR_SBDCD_Pos (8UL) /*!< SBDCD (Bit 8) */ + #define R_GPT0_GTSECR_SBDCD_Msk (0x100UL) /*!< SBDCD (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTSECR_SBDPD_Pos (9UL) /*!< SBDPD (Bit 9) */ + #define R_GPT0_GTSECR_SBDPD_Msk (0x200UL) /*!< SBDPD (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTSECR_SBDAD_Pos (10UL) /*!< SBDAD (Bit 10) */ + #define R_GPT0_GTSECR_SBDAD_Msk (0x400UL) /*!< SBDAD (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTSECR_SBDDD_Pos (11UL) /*!< SBDDD (Bit 11) */ + #define R_GPT0_GTSECR_SBDDD_Msk (0x800UL) /*!< SBDDD (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTSECR_SPCE_Pos (16UL) /*!< SPCE (Bit 16) */ + #define R_GPT0_GTSECR_SPCE_Msk (0x10000UL) /*!< SPCE (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTSECR_SSCE_Pos (17UL) /*!< SSCE (Bit 17) */ + #define R_GPT0_GTSECR_SSCE_Msk (0x20000UL) /*!< SSCE (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTSECR_SPCD_Pos (24UL) /*!< SPCD (Bit 24) */ + #define R_GPT0_GTSECR_SPCD_Msk (0x1000000UL) /*!< SPCD (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTSECR_SSCD_Pos (25UL) /*!< SSCD (Bit 25) */ + #define R_GPT0_GTSECR_SSCD_Msk (0x2000000UL) /*!< SSCD (Bitfield-Mask: 0x01) */ +/* ======================================================== GTBER2 ========================================================= */ + #define R_GPT0_GTBER2_CCTCA_Pos (0UL) /*!< CCTCA (Bit 0) */ + #define R_GPT0_GTBER2_CCTCA_Msk (0x1UL) /*!< CCTCA (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTBER2_CCTCB_Pos (1UL) /*!< CCTCB (Bit 1) */ + #define R_GPT0_GTBER2_CCTCB_Msk (0x2UL) /*!< CCTCB (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTBER2_CCTPR_Pos (2UL) /*!< CCTPR (Bit 2) */ + #define R_GPT0_GTBER2_CCTPR_Msk (0x4UL) /*!< CCTPR (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTBER2_CCTADA_Pos (3UL) /*!< CCTADA (Bit 3) */ + #define R_GPT0_GTBER2_CCTADA_Msk (0x8UL) /*!< CCTADA (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTBER2_CCTADB_Pos (4UL) /*!< CCTADB (Bit 4) */ + #define R_GPT0_GTBER2_CCTADB_Msk (0x10UL) /*!< CCTADB (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTBER2_CCTDV_Pos (5UL) /*!< CCTDV (Bit 5) */ + #define R_GPT0_GTBER2_CCTDV_Msk (0x20UL) /*!< CCTDV (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTBER2_CMTCA_Pos (8UL) /*!< CMTCA (Bit 8) */ + #define R_GPT0_GTBER2_CMTCA_Msk (0x300UL) /*!< CMTCA (Bitfield-Mask: 0x03) */ + #define R_GPT0_GTBER2_CMTCB_Pos (10UL) /*!< CMTCB (Bit 10) */ + #define R_GPT0_GTBER2_CMTCB_Msk (0xc00UL) /*!< CMTCB (Bitfield-Mask: 0x03) */ + #define R_GPT0_GTBER2_CMTADA_Pos (13UL) /*!< CMTADA (Bit 13) */ + #define R_GPT0_GTBER2_CMTADA_Msk (0x2000UL) /*!< CMTADA (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTBER2_CMTADB_Pos (14UL) /*!< CMTADB (Bit 14) */ + #define R_GPT0_GTBER2_CMTADB_Msk (0x4000UL) /*!< CMTADB (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTBER2_CPTCA_Pos (16UL) /*!< CPTCA (Bit 16) */ + #define R_GPT0_GTBER2_CPTCA_Msk (0x10000UL) /*!< CPTCA (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTBER2_CPTCB_Pos (17UL) /*!< CPTCB (Bit 17) */ + #define R_GPT0_GTBER2_CPTCB_Msk (0x20000UL) /*!< CPTCB (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTBER2_CPTPR_Pos (18UL) /*!< CPTPR (Bit 18) */ + #define R_GPT0_GTBER2_CPTPR_Msk (0x40000UL) /*!< CPTPR (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTBER2_CPTADA_Pos (19UL) /*!< CPTADA (Bit 19) */ + #define R_GPT0_GTBER2_CPTADA_Msk (0x80000UL) /*!< CPTADA (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTBER2_CPTADB_Pos (20UL) /*!< CPTADB (Bit 20) */ + #define R_GPT0_GTBER2_CPTADB_Msk (0x100000UL) /*!< CPTADB (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTBER2_CPTDV_Pos (21UL) /*!< CPTDV (Bit 21) */ + #define R_GPT0_GTBER2_CPTDV_Msk (0x200000UL) /*!< CPTDV (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTBER2_CP3DB_Pos (24UL) /*!< CP3DB (Bit 24) */ + #define R_GPT0_GTBER2_CP3DB_Msk (0x1000000UL) /*!< CP3DB (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTBER2_CPBTD_Pos (25UL) /*!< CPBTD (Bit 25) */ + #define R_GPT0_GTBER2_CPBTD_Msk (0x2000000UL) /*!< CPBTD (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTBER2_OLTTA_Pos (26UL) /*!< OLTTA (Bit 26) */ + #define R_GPT0_GTBER2_OLTTA_Msk (0xc000000UL) /*!< OLTTA (Bitfield-Mask: 0x03) */ + #define R_GPT0_GTBER2_OLTTB_Pos (28UL) /*!< OLTTB (Bit 28) */ + #define R_GPT0_GTBER2_OLTTB_Msk (0x30000000UL) /*!< OLTTB (Bitfield-Mask: 0x03) */ +/* ======================================================== GTOLBR ========================================================= */ + #define R_GPT0_GTOLBR_GTIOAB_Pos (0UL) /*!< GTIOAB (Bit 0) */ + #define R_GPT0_GTOLBR_GTIOAB_Msk (0x1fUL) /*!< GTIOAB (Bitfield-Mask: 0x1f) */ + #define R_GPT0_GTOLBR_GTIOBB_Pos (16UL) /*!< GTIOBB (Bit 16) */ + #define R_GPT0_GTOLBR_GTIOBB_Msk (0x1f0000UL) /*!< GTIOBB (Bitfield-Mask: 0x1f) */ +/* ======================================================== GTICCR ========================================================= */ + #define R_GPT0_GTICCR_ICAFA_Pos (0UL) /*!< ICAFA (Bit 0) */ + #define R_GPT0_GTICCR_ICAFA_Msk (0x1UL) /*!< ICAFA (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTICCR_ICAFB_Pos (1UL) /*!< ICAFB (Bit 1) */ + #define R_GPT0_GTICCR_ICAFB_Msk (0x2UL) /*!< ICAFB (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTICCR_ICAFC_Pos (2UL) /*!< ICAFC (Bit 2) */ + #define R_GPT0_GTICCR_ICAFC_Msk (0x4UL) /*!< ICAFC (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTICCR_ICAFD_Pos (3UL) /*!< ICAFD (Bit 3) */ + #define R_GPT0_GTICCR_ICAFD_Msk (0x8UL) /*!< ICAFD (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTICCR_ICAFE_Pos (4UL) /*!< ICAFE (Bit 4) */ + #define R_GPT0_GTICCR_ICAFE_Msk (0x10UL) /*!< ICAFE (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTICCR_ICAFF_Pos (5UL) /*!< ICAFF (Bit 5) */ + #define R_GPT0_GTICCR_ICAFF_Msk (0x20UL) /*!< ICAFF (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTICCR_ICAFPO_Pos (6UL) /*!< ICAFPO (Bit 6) */ + #define R_GPT0_GTICCR_ICAFPO_Msk (0x40UL) /*!< ICAFPO (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTICCR_ICAFPU_Pos (7UL) /*!< ICAFPU (Bit 7) */ + #define R_GPT0_GTICCR_ICAFPU_Msk (0x80UL) /*!< ICAFPU (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTICCR_ICACLK_Pos (8UL) /*!< ICACLK (Bit 8) */ + #define R_GPT0_GTICCR_ICACLK_Msk (0x100UL) /*!< ICACLK (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTICCR_ICAGRP_Pos (14UL) /*!< ICAGRP (Bit 14) */ + #define R_GPT0_GTICCR_ICAGRP_Msk (0xc000UL) /*!< ICAGRP (Bitfield-Mask: 0x03) */ + #define R_GPT0_GTICCR_ICBFA_Pos (16UL) /*!< ICBFA (Bit 16) */ + #define R_GPT0_GTICCR_ICBFA_Msk (0x10000UL) /*!< ICBFA (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTICCR_ICBFB_Pos (17UL) /*!< ICBFB (Bit 17) */ + #define R_GPT0_GTICCR_ICBFB_Msk (0x20000UL) /*!< ICBFB (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTICCR_ICBFC_Pos (18UL) /*!< ICBFC (Bit 18) */ + #define R_GPT0_GTICCR_ICBFC_Msk (0x40000UL) /*!< ICBFC (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTICCR_ICBFD_Pos (19UL) /*!< ICBFD (Bit 19) */ + #define R_GPT0_GTICCR_ICBFD_Msk (0x80000UL) /*!< ICBFD (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTICCR_ICBFE_Pos (20UL) /*!< ICBFE (Bit 20) */ + #define R_GPT0_GTICCR_ICBFE_Msk (0x100000UL) /*!< ICBFE (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTICCR_ICBFF_Pos (21UL) /*!< ICBFF (Bit 21) */ + #define R_GPT0_GTICCR_ICBFF_Msk (0x200000UL) /*!< ICBFF (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTICCR_ICBFPO_Pos (22UL) /*!< ICBFPO (Bit 22) */ + #define R_GPT0_GTICCR_ICBFPO_Msk (0x400000UL) /*!< ICBFPO (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTICCR_ICBFPU_Pos (23UL) /*!< ICBFPU (Bit 23) */ + #define R_GPT0_GTICCR_ICBFPU_Msk (0x800000UL) /*!< ICBFPU (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTICCR_ICBCLK_Pos (24UL) /*!< ICBCLK (Bit 24) */ + #define R_GPT0_GTICCR_ICBCLK_Msk (0x1000000UL) /*!< ICBCLK (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTICCR_ICBGRP_Pos (30UL) /*!< ICBGRP (Bit 30) */ + #define R_GPT0_GTICCR_ICBGRP_Msk (0xc0000000UL) /*!< ICBGRP (Bitfield-Mask: 0x03) */ + +/* =========================================================================================================================== */ +/* ================ R_GPT_OPS ================ */ +/* =========================================================================================================================== */ + +/* ========================================================= OPSCR ========================================================= */ + #define R_GPT_OPS_OPSCR_NFCS_Pos (30UL) /*!< NFCS (Bit 30) */ + #define R_GPT_OPS_OPSCR_NFCS_Msk (0xc0000000UL) /*!< NFCS (Bitfield-Mask: 0x03) */ + #define R_GPT_OPS_OPSCR_NFEN_Pos (29UL) /*!< NFEN (Bit 29) */ + #define R_GPT_OPS_OPSCR_NFEN_Msk (0x20000000UL) /*!< NFEN (Bitfield-Mask: 0x01) */ + #define R_GPT_OPS_OPSCR_GODF_Pos (26UL) /*!< GODF (Bit 26) */ + #define R_GPT_OPS_OPSCR_GODF_Msk (0x4000000UL) /*!< GODF (Bitfield-Mask: 0x01) */ + #define R_GPT_OPS_OPSCR_GRP_Pos (24UL) /*!< GRP (Bit 24) */ + #define R_GPT_OPS_OPSCR_GRP_Msk (0x3000000UL) /*!< GRP (Bitfield-Mask: 0x03) */ + #define R_GPT_OPS_OPSCR_ALIGN_Pos (21UL) /*!< ALIGN (Bit 21) */ + #define R_GPT_OPS_OPSCR_ALIGN_Msk (0x200000UL) /*!< ALIGN (Bitfield-Mask: 0x01) */ + #define R_GPT_OPS_OPSCR_RV_Pos (20UL) /*!< RV (Bit 20) */ + #define R_GPT_OPS_OPSCR_RV_Msk (0x100000UL) /*!< RV (Bitfield-Mask: 0x01) */ + #define R_GPT_OPS_OPSCR_INV_Pos (19UL) /*!< INV (Bit 19) */ + #define R_GPT_OPS_OPSCR_INV_Msk (0x80000UL) /*!< INV (Bitfield-Mask: 0x01) */ + #define R_GPT_OPS_OPSCR_N_Pos (18UL) /*!< N (Bit 18) */ + #define R_GPT_OPS_OPSCR_N_Msk (0x40000UL) /*!< N (Bitfield-Mask: 0x01) */ + #define R_GPT_OPS_OPSCR_P_Pos (17UL) /*!< P (Bit 17) */ + #define R_GPT_OPS_OPSCR_P_Msk (0x20000UL) /*!< P (Bitfield-Mask: 0x01) */ + #define R_GPT_OPS_OPSCR_FB_Pos (16UL) /*!< FB (Bit 16) */ + #define R_GPT_OPS_OPSCR_FB_Msk (0x10000UL) /*!< FB (Bitfield-Mask: 0x01) */ + #define R_GPT_OPS_OPSCR_EN_Pos (8UL) /*!< EN (Bit 8) */ + #define R_GPT_OPS_OPSCR_EN_Msk (0x100UL) /*!< EN (Bitfield-Mask: 0x01) */ + #define R_GPT_OPS_OPSCR_W_Pos (6UL) /*!< W (Bit 6) */ + #define R_GPT_OPS_OPSCR_W_Msk (0x40UL) /*!< W (Bitfield-Mask: 0x01) */ + #define R_GPT_OPS_OPSCR_V_Pos (5UL) /*!< V (Bit 5) */ + #define R_GPT_OPS_OPSCR_V_Msk (0x20UL) /*!< V (Bitfield-Mask: 0x01) */ + #define R_GPT_OPS_OPSCR_U_Pos (4UL) /*!< U (Bit 4) */ + #define R_GPT_OPS_OPSCR_U_Msk (0x10UL) /*!< U (Bitfield-Mask: 0x01) */ + #define R_GPT_OPS_OPSCR_WF_Pos (2UL) /*!< WF (Bit 2) */ + #define R_GPT_OPS_OPSCR_WF_Msk (0x4UL) /*!< WF (Bitfield-Mask: 0x01) */ + #define R_GPT_OPS_OPSCR_VF_Pos (1UL) /*!< VF (Bit 1) */ + #define R_GPT_OPS_OPSCR_VF_Msk (0x2UL) /*!< VF (Bitfield-Mask: 0x01) */ + #define R_GPT_OPS_OPSCR_UF_Pos (0UL) /*!< UF (Bit 0) */ + #define R_GPT_OPS_OPSCR_UF_Msk (0x1UL) /*!< UF (Bitfield-Mask: 0x01) */ + +/* =========================================================================================================================== */ +/* ================ R_GPT_POEG0 ================ */ +/* =========================================================================================================================== */ + +/* ========================================================= POEGG ========================================================= */ + #define R_GPT_POEG0_POEGG_NFCS_Pos (30UL) /*!< NFCS (Bit 30) */ + #define R_GPT_POEG0_POEGG_NFCS_Msk (0xc0000000UL) /*!< NFCS (Bitfield-Mask: 0x03) */ + #define R_GPT_POEG0_POEGG_NFEN_Pos (29UL) /*!< NFEN (Bit 29) */ + #define R_GPT_POEG0_POEGG_NFEN_Msk (0x20000000UL) /*!< NFEN (Bitfield-Mask: 0x01) */ + #define R_GPT_POEG0_POEGG_INV_Pos (28UL) /*!< INV (Bit 28) */ + #define R_GPT_POEG0_POEGG_INV_Msk (0x10000000UL) /*!< INV (Bitfield-Mask: 0x01) */ + #define R_GPT_POEG0_POEGG_DERRE_Pos (26UL) /*!< DERRE (Bit 26) */ + #define R_GPT_POEG0_POEGG_DERRE_Msk (0x4000000UL) /*!< DERRE (Bitfield-Mask: 0x01) */ + #define R_GPT_POEG0_POEGG_DERRST_Pos (24UL) /*!< DERRST (Bit 24) */ + #define R_GPT_POEG0_POEGG_DERRST_Msk (0x1000000UL) /*!< DERRST (Bitfield-Mask: 0x01) */ + #define R_GPT_POEG0_POEGG_ST_Pos (16UL) /*!< ST (Bit 16) */ + #define R_GPT_POEG0_POEGG_ST_Msk (0x10000UL) /*!< ST (Bitfield-Mask: 0x01) */ + #define R_GPT_POEG0_POEGG_CDRE_Pos (8UL) /*!< CDRE (Bit 8) */ + #define R_GPT_POEG0_POEGG_CDRE_Msk (0x100UL) /*!< CDRE (Bitfield-Mask: 0x01) */ + #define R_GPT_POEG0_POEGG_OSTPE_Pos (6UL) /*!< OSTPE (Bit 6) */ + #define R_GPT_POEG0_POEGG_OSTPE_Msk (0x40UL) /*!< OSTPE (Bitfield-Mask: 0x01) */ + #define R_GPT_POEG0_POEGG_IOCE_Pos (5UL) /*!< IOCE (Bit 5) */ + #define R_GPT_POEG0_POEGG_IOCE_Msk (0x20UL) /*!< IOCE (Bitfield-Mask: 0x01) */ + #define R_GPT_POEG0_POEGG_PIDE_Pos (4UL) /*!< PIDE (Bit 4) */ + #define R_GPT_POEG0_POEGG_PIDE_Msk (0x10UL) /*!< PIDE (Bitfield-Mask: 0x01) */ + #define R_GPT_POEG0_POEGG_SSF_Pos (3UL) /*!< SSF (Bit 3) */ + #define R_GPT_POEG0_POEGG_SSF_Msk (0x8UL) /*!< SSF (Bitfield-Mask: 0x01) */ + #define R_GPT_POEG0_POEGG_OSTPF_Pos (2UL) /*!< OSTPF (Bit 2) */ + #define R_GPT_POEG0_POEGG_OSTPF_Msk (0x4UL) /*!< OSTPF (Bitfield-Mask: 0x01) */ + #define R_GPT_POEG0_POEGG_IOCF_Pos (1UL) /*!< IOCF (Bit 1) */ + #define R_GPT_POEG0_POEGG_IOCF_Msk (0x2UL) /*!< IOCF (Bitfield-Mask: 0x01) */ + #define R_GPT_POEG0_POEGG_PIDF_Pos (0UL) /*!< PIDF (Bit 0) */ + #define R_GPT_POEG0_POEGG_PIDF_Msk (0x1UL) /*!< PIDF (Bitfield-Mask: 0x01) */ +/* ======================================================== GTONCWP ======================================================== */ + #define R_GPT_POEG0_GTONCWP_WP_Pos (0UL) /*!< WP (Bit 0) */ + #define R_GPT_POEG0_GTONCWP_WP_Msk (0x1UL) /*!< WP (Bitfield-Mask: 0x01) */ + #define R_GPT_POEG0_GTONCWP_PRKEY_Pos (8UL) /*!< PRKEY (Bit 8) */ + #define R_GPT_POEG0_GTONCWP_PRKEY_Msk (0xff00UL) /*!< PRKEY (Bitfield-Mask: 0xff) */ +/* ======================================================== GTONCCR ======================================================== */ + #define R_GPT_POEG0_GTONCCR_NE_Pos (0UL) /*!< NE (Bit 0) */ + #define R_GPT_POEG0_GTONCCR_NE_Msk (0x1UL) /*!< NE (Bitfield-Mask: 0x01) */ + #define R_GPT_POEG0_GTONCCR_NFS_Pos (4UL) /*!< NFS (Bit 4) */ + #define R_GPT_POEG0_GTONCCR_NFS_Msk (0xf0UL) /*!< NFS (Bitfield-Mask: 0x0f) */ + #define R_GPT_POEG0_GTONCCR_NFV_Pos (8UL) /*!< NFV (Bit 8) */ + #define R_GPT_POEG0_GTONCCR_NFV_Msk (0x100UL) /*!< NFV (Bitfield-Mask: 0x01) */ + +/* =========================================================================================================================== */ +/* ================ R_ICU ================ */ +/* =========================================================================================================================== */ + +/* ========================================================= IRQCR ========================================================= */ + #define R_ICU_IRQCR_FLTEN_Pos (7UL) /*!< FLTEN (Bit 7) */ + #define R_ICU_IRQCR_FLTEN_Msk (0x80UL) /*!< FLTEN (Bitfield-Mask: 0x01) */ + #define R_ICU_IRQCR_FCLKSEL_Pos (4UL) /*!< FCLKSEL (Bit 4) */ + #define R_ICU_IRQCR_FCLKSEL_Msk (0x30UL) /*!< FCLKSEL (Bitfield-Mask: 0x03) */ + #define R_ICU_IRQCR_IRQMD_Pos (0UL) /*!< IRQMD (Bit 0) */ + #define R_ICU_IRQCR_IRQMD_Msk (0x3UL) /*!< IRQMD (Bitfield-Mask: 0x03) */ +/* ========================================================= NMICR ========================================================= */ + #define R_ICU_NMICR_NMIMD_Pos (0UL) /*!< NMIMD (Bit 0) */ + #define R_ICU_NMICR_NMIMD_Msk (0x1UL) /*!< NMIMD (Bitfield-Mask: 0x01) */ + #define R_ICU_NMICR_NFCLKSEL_Pos (4UL) /*!< NFCLKSEL (Bit 4) */ + #define R_ICU_NMICR_NFCLKSEL_Msk (0x30UL) /*!< NFCLKSEL (Bitfield-Mask: 0x03) */ + #define R_ICU_NMICR_NFLTEN_Pos (7UL) /*!< NFLTEN (Bit 7) */ + #define R_ICU_NMICR_NFLTEN_Msk (0x80UL) /*!< NFLTEN (Bitfield-Mask: 0x01) */ +/* ======================================================== SWIRQ_S ======================================================== */ + #define R_ICU_SWIRQ_S_SWIRQS_Pos (0UL) /*!< SWIRQS (Bit 0) */ + #define R_ICU_SWIRQ_S_SWIRQS_Msk (0x1UL) /*!< SWIRQS (Bitfield-Mask: 0x01) */ +/* ======================================================= SWIRQ_NS ======================================================== */ + #define R_ICU_SWIRQ_NS_SWIRQNS_Pos (0UL) /*!< SWIRQNS (Bit 0) */ + #define R_ICU_SWIRQ_NS_SWIRQNS_Msk (0x1UL) /*!< SWIRQNS (Bitfield-Mask: 0x01) */ +/* ======================================================== IENMIER ======================================================== */ + #define R_ICU_IENMIER_CMEN_Pos (0UL) /*!< CMEN (Bit 0) */ + #define R_ICU_IENMIER_CMEN_Msk (0x1UL) /*!< CMEN (Bitfield-Mask: 0x01) */ + #define R_ICU_IENMIER_LMEN_Pos (1UL) /*!< LMEN (Bit 1) */ + #define R_ICU_IENMIER_LMEN_Msk (0x2UL) /*!< LMEN (Bitfield-Mask: 0x01) */ + #define R_ICU_IENMIER_BUSEN_Pos (2UL) /*!< BUSEN (Bit 2) */ + #define R_ICU_IENMIER_BUSEN_Msk (0x4UL) /*!< BUSEN (Bitfield-Mask: 0x01) */ +/* ========================================================= NMIER ========================================================= */ + #define R_ICU_NMIER_IWDTEN_Pos (0UL) /*!< IWDTEN (Bit 0) */ + #define R_ICU_NMIER_IWDTEN_Msk (0x1UL) /*!< IWDTEN (Bitfield-Mask: 0x01) */ + #define R_ICU_NMIER_WDTEN_Pos (1UL) /*!< WDTEN (Bit 1) */ + #define R_ICU_NMIER_WDTEN_Msk (0x2UL) /*!< WDTEN (Bitfield-Mask: 0x01) */ + #define R_ICU_NMIER_LVD1EN_Pos (2UL) /*!< LVD1EN (Bit 2) */ + #define R_ICU_NMIER_LVD1EN_Msk (0x4UL) /*!< LVD1EN (Bitfield-Mask: 0x01) */ + #define R_ICU_NMIER_LVD2EN_Pos (3UL) /*!< LVD2EN (Bit 3) */ + #define R_ICU_NMIER_LVD2EN_Msk (0x8UL) /*!< LVD2EN (Bitfield-Mask: 0x01) */ + #define R_ICU_NMIER_OSTEN_Pos (6UL) /*!< OSTEN (Bit 6) */ + #define R_ICU_NMIER_OSTEN_Msk (0x40UL) /*!< OSTEN (Bitfield-Mask: 0x01) */ + #define R_ICU_NMIER_NMIEN_Pos (7UL) /*!< NMIEN (Bit 7) */ + #define R_ICU_NMIER_NMIEN_Msk (0x80UL) /*!< NMIEN (Bitfield-Mask: 0x01) */ + #define R_ICU_NMIER_BUSEN_Pos (12UL) /*!< BUSEN (Bit 12) */ + #define R_ICU_NMIER_BUSEN_Msk (0x1000UL) /*!< BUSEN (Bitfield-Mask: 0x01) */ + #define R_ICU_NMIER_CMEN_Pos (13UL) /*!< CMEN (Bit 13) */ + #define R_ICU_NMIER_CMEN_Msk (0x2000UL) /*!< CMEN (Bitfield-Mask: 0x01) */ + #define R_ICU_NMIER_LUEN_Pos (15UL) /*!< LUEN (Bit 15) */ + #define R_ICU_NMIER_LUEN_Msk (0x8000UL) /*!< LUEN (Bitfield-Mask: 0x01) */ +/* ======================================================== NMICLR ========================================================= */ + #define R_ICU_NMICLR_IWDTCLR_Pos (0UL) /*!< IWDTCLR (Bit 0) */ + #define R_ICU_NMICLR_IWDTCLR_Msk (0x1UL) /*!< IWDTCLR (Bitfield-Mask: 0x01) */ + #define R_ICU_NMICLR_WDTCLR_Pos (1UL) /*!< WDTCLR (Bit 1) */ + #define R_ICU_NMICLR_WDTCLR_Msk (0x2UL) /*!< WDTCLR (Bitfield-Mask: 0x01) */ + #define R_ICU_NMICLR_LVD1CLR_Pos (2UL) /*!< LVD1CLR (Bit 2) */ + #define R_ICU_NMICLR_LVD1CLR_Msk (0x4UL) /*!< LVD1CLR (Bitfield-Mask: 0x01) */ + #define R_ICU_NMICLR_LVD2CLR_Pos (3UL) /*!< LVD2CLR (Bit 3) */ + #define R_ICU_NMICLR_LVD2CLR_Msk (0x8UL) /*!< LVD2CLR (Bitfield-Mask: 0x01) */ + #define R_ICU_NMICLR_OSTCLR_Pos (6UL) /*!< OSTCLR (Bit 6) */ + #define R_ICU_NMICLR_OSTCLR_Msk (0x40UL) /*!< OSTCLR (Bitfield-Mask: 0x01) */ + #define R_ICU_NMICLR_NMICLR_Pos (7UL) /*!< NMICLR (Bit 7) */ + #define R_ICU_NMICLR_NMICLR_Msk (0x80UL) /*!< NMICLR (Bitfield-Mask: 0x01) */ + #define R_ICU_NMICLR_BUSCLR_Pos (12UL) /*!< BUSCLR (Bit 12) */ + #define R_ICU_NMICLR_BUSCLR_Msk (0x1000UL) /*!< BUSCLR (Bitfield-Mask: 0x01) */ + #define R_ICU_NMICLR_CMCLR_Pos (13UL) /*!< CMCLR (Bit 13) */ + #define R_ICU_NMICLR_CMCLR_Msk (0x2000UL) /*!< CMCLR (Bitfield-Mask: 0x01) */ + #define R_ICU_NMICLR_LUCLR_Pos (15UL) /*!< LUCLR (Bit 15) */ + #define R_ICU_NMICLR_LUCLR_Msk (0x8000UL) /*!< LUCLR (Bitfield-Mask: 0x01) */ +/* ========================================================= NMISR ========================================================= */ + #define R_ICU_NMISR_IWDTST_Pos (0UL) /*!< IWDTST (Bit 0) */ + #define R_ICU_NMISR_IWDTST_Msk (0x1UL) /*!< IWDTST (Bitfield-Mask: 0x01) */ + #define R_ICU_NMISR_WDTST_Pos (1UL) /*!< WDTST (Bit 1) */ + #define R_ICU_NMISR_WDTST_Msk (0x2UL) /*!< WDTST (Bitfield-Mask: 0x01) */ + #define R_ICU_NMISR_LVD1ST_Pos (2UL) /*!< LVD1ST (Bit 2) */ + #define R_ICU_NMISR_LVD1ST_Msk (0x4UL) /*!< LVD1ST (Bitfield-Mask: 0x01) */ + #define R_ICU_NMISR_LVD2ST_Pos (3UL) /*!< LVD2ST (Bit 3) */ + #define R_ICU_NMISR_LVD2ST_Msk (0x8UL) /*!< LVD2ST (Bitfield-Mask: 0x01) */ + #define R_ICU_NMISR_OSTST_Pos (6UL) /*!< OSTST (Bit 6) */ + #define R_ICU_NMISR_OSTST_Msk (0x40UL) /*!< OSTST (Bitfield-Mask: 0x01) */ + #define R_ICU_NMISR_NMIST_Pos (7UL) /*!< NMIST (Bit 7) */ + #define R_ICU_NMISR_NMIST_Msk (0x80UL) /*!< NMIST (Bitfield-Mask: 0x01) */ + #define R_ICU_NMISR_BUSST_Pos (12UL) /*!< BUSST (Bit 12) */ + #define R_ICU_NMISR_BUSST_Msk (0x1000UL) /*!< BUSST (Bitfield-Mask: 0x01) */ + #define R_ICU_NMISR_CMST_Pos (13UL) /*!< CMST (Bit 13) */ + #define R_ICU_NMISR_CMST_Msk (0x2000UL) /*!< CMST (Bitfield-Mask: 0x01) */ + #define R_ICU_NMISR_LUST_Pos (15UL) /*!< LUST (Bit 15) */ + #define R_ICU_NMISR_LUST_Msk (0x8000UL) /*!< LUST (Bitfield-Mask: 0x01) */ +/* ========================================================= WUPEN ========================================================= */ + #define R_ICU_WUPEN_IRQWUPEN0_Pos (0UL) /*!< IRQWUPEN0 (Bit 0) */ + #define R_ICU_WUPEN_IRQWUPEN0_Msk (0x1UL) /*!< IRQWUPEN0 (Bitfield-Mask: 0x01) */ + #define R_ICU_WUPEN_IRQWUPEN1_Pos (1UL) /*!< IRQWUPEN1 (Bit 1) */ + #define R_ICU_WUPEN_IRQWUPEN1_Msk (0x2UL) /*!< IRQWUPEN1 (Bitfield-Mask: 0x01) */ + #define R_ICU_WUPEN_IRQWUPEN2_Pos (2UL) /*!< IRQWUPEN2 (Bit 2) */ + #define R_ICU_WUPEN_IRQWUPEN2_Msk (0x4UL) /*!< IRQWUPEN2 (Bitfield-Mask: 0x01) */ + #define R_ICU_WUPEN_IRQWUPEN3_Pos (3UL) /*!< IRQWUPEN3 (Bit 3) */ + #define R_ICU_WUPEN_IRQWUPEN3_Msk (0x8UL) /*!< IRQWUPEN3 (Bitfield-Mask: 0x01) */ + #define R_ICU_WUPEN_IRQWUPEN4_Pos (4UL) /*!< IRQWUPEN4 (Bit 4) */ + #define R_ICU_WUPEN_IRQWUPEN4_Msk (0x10UL) /*!< IRQWUPEN4 (Bitfield-Mask: 0x01) */ + #define R_ICU_WUPEN_IRQWUPEN5_Pos (5UL) /*!< IRQWUPEN5 (Bit 5) */ + #define R_ICU_WUPEN_IRQWUPEN5_Msk (0x20UL) /*!< IRQWUPEN5 (Bitfield-Mask: 0x01) */ + #define R_ICU_WUPEN_IRQWUPEN6_Pos (6UL) /*!< IRQWUPEN6 (Bit 6) */ + #define R_ICU_WUPEN_IRQWUPEN6_Msk (0x40UL) /*!< IRQWUPEN6 (Bitfield-Mask: 0x01) */ + #define R_ICU_WUPEN_IRQWUPEN7_Pos (7UL) /*!< IRQWUPEN7 (Bit 7) */ + #define R_ICU_WUPEN_IRQWUPEN7_Msk (0x80UL) /*!< IRQWUPEN7 (Bitfield-Mask: 0x01) */ + #define R_ICU_WUPEN_IRQWUPEN8_Pos (8UL) /*!< IRQWUPEN8 (Bit 8) */ + #define R_ICU_WUPEN_IRQWUPEN8_Msk (0x100UL) /*!< IRQWUPEN8 (Bitfield-Mask: 0x01) */ + #define R_ICU_WUPEN_IRQWUPEN9_Pos (9UL) /*!< IRQWUPEN9 (Bit 9) */ + #define R_ICU_WUPEN_IRQWUPEN9_Msk (0x200UL) /*!< IRQWUPEN9 (Bitfield-Mask: 0x01) */ + #define R_ICU_WUPEN_IRQWUPEN10_Pos (10UL) /*!< IRQWUPEN10 (Bit 10) */ + #define R_ICU_WUPEN_IRQWUPEN10_Msk (0x400UL) /*!< IRQWUPEN10 (Bitfield-Mask: 0x01) */ + #define R_ICU_WUPEN_IRQWUPEN11_Pos (11UL) /*!< IRQWUPEN11 (Bit 11) */ + #define R_ICU_WUPEN_IRQWUPEN11_Msk (0x800UL) /*!< IRQWUPEN11 (Bitfield-Mask: 0x01) */ + #define R_ICU_WUPEN_IRQWUPEN12_Pos (12UL) /*!< IRQWUPEN12 (Bit 12) */ + #define R_ICU_WUPEN_IRQWUPEN12_Msk (0x1000UL) /*!< IRQWUPEN12 (Bitfield-Mask: 0x01) */ + #define R_ICU_WUPEN_IRQWUPEN13_Pos (13UL) /*!< IRQWUPEN13 (Bit 13) */ + #define R_ICU_WUPEN_IRQWUPEN13_Msk (0x2000UL) /*!< IRQWUPEN13 (Bitfield-Mask: 0x01) */ + #define R_ICU_WUPEN_IRQWUPEN14_Pos (14UL) /*!< IRQWUPEN14 (Bit 14) */ + #define R_ICU_WUPEN_IRQWUPEN14_Msk (0x4000UL) /*!< IRQWUPEN14 (Bitfield-Mask: 0x01) */ + #define R_ICU_WUPEN_IRQWUPEN15_Pos (15UL) /*!< IRQWUPEN15 (Bit 15) */ + #define R_ICU_WUPEN_IRQWUPEN15_Msk (0x8000UL) /*!< IRQWUPEN15 (Bitfield-Mask: 0x01) */ + #define R_ICU_WUPEN_IWDTWUPEN_Pos (16UL) /*!< IWDTWUPEN (Bit 16) */ + #define R_ICU_WUPEN_IWDTWUPEN_Msk (0x10000UL) /*!< IWDTWUPEN (Bitfield-Mask: 0x01) */ + #define R_ICU_WUPEN_LVD1WUPEN_Pos (18UL) /*!< LVD1WUPEN (Bit 18) */ + #define R_ICU_WUPEN_LVD1WUPEN_Msk (0x40000UL) /*!< LVD1WUPEN (Bitfield-Mask: 0x01) */ + #define R_ICU_WUPEN_LVD2WUPEN_Pos (19UL) /*!< LVD2WUPEN (Bit 19) */ + #define R_ICU_WUPEN_LVD2WUPEN_Msk (0x80000UL) /*!< LVD2WUPEN (Bitfield-Mask: 0x01) */ + #define R_ICU_WUPEN_VBATTWUPEN_Pos (20UL) /*!< VBATTWUPEN (Bit 20) */ + #define R_ICU_WUPEN_VBATTWUPEN_Msk (0x100000UL) /*!< VBATTWUPEN (Bitfield-Mask: 0x01) */ + #define R_ICU_WUPEN_RTCALMWUPEN_Pos (24UL) /*!< RTCALMWUPEN (Bit 24) */ + #define R_ICU_WUPEN_RTCALMWUPEN_Msk (0x1000000UL) /*!< RTCALMWUPEN (Bitfield-Mask: 0x01) */ + #define R_ICU_WUPEN_RTCPRDWUPEN_Pos (25UL) /*!< RTCPRDWUPEN (Bit 25) */ + #define R_ICU_WUPEN_RTCPRDWUPEN_Msk (0x2000000UL) /*!< RTCPRDWUPEN (Bitfield-Mask: 0x01) */ + #define R_ICU_WUPEN_USBHSWUPEN_Pos (26UL) /*!< USBHSWUPEN (Bit 26) */ + #define R_ICU_WUPEN_USBHSWUPEN_Msk (0x4000000UL) /*!< USBHSWUPEN (Bitfield-Mask: 0x01) */ + #define R_ICU_WUPEN_USBFSWUPEN_Pos (27UL) /*!< USBFSWUPEN (Bit 27) */ + #define R_ICU_WUPEN_USBFSWUPEN_Msk (0x8000000UL) /*!< USBFSWUPEN (Bitfield-Mask: 0x01) */ + #define R_ICU_WUPEN_AGT1UDWUPEN_Pos (28UL) /*!< AGT1UDWUPEN (Bit 28) */ + #define R_ICU_WUPEN_AGT1UDWUPEN_Msk (0x10000000UL) /*!< AGT1UDWUPEN (Bitfield-Mask: 0x01) */ + #define R_ICU_WUPEN_AGT1CAWUPEN_Pos (29UL) /*!< AGT1CAWUPEN (Bit 29) */ + #define R_ICU_WUPEN_AGT1CAWUPEN_Msk (0x20000000UL) /*!< AGT1CAWUPEN (Bitfield-Mask: 0x01) */ + #define R_ICU_WUPEN_AGT1CBWUPEN_Pos (30UL) /*!< AGT1CBWUPEN (Bit 30) */ + #define R_ICU_WUPEN_AGT1CBWUPEN_Msk (0x40000000UL) /*!< AGT1CBWUPEN (Bitfield-Mask: 0x01) */ + #define R_ICU_WUPEN_RIIC0WUPEN_Pos (31UL) /*!< RIIC0WUPEN (Bit 31) */ + #define R_ICU_WUPEN_RIIC0WUPEN_Msk (0x80000000UL) /*!< RIIC0WUPEN (Bitfield-Mask: 0x01) */ +/* ======================================================== WUPEN1 ========================================================= */ + #define R_ICU_WUPEN1_COMPHS0WUPEN_Pos (3UL) /*!< COMPHS0WUPEN (Bit 3) */ + #define R_ICU_WUPEN1_COMPHS0WUPEN_Msk (0x8UL) /*!< COMPHS0WUPEN (Bitfield-Mask: 0x01) */ + #define R_ICU_WUPEN1_ULP0UWUPEN_Pos (8UL) /*!< ULP0UWUPEN (Bit 8) */ + #define R_ICU_WUPEN1_ULP0UWUPEN_Msk (0x100UL) /*!< ULP0UWUPEN (Bitfield-Mask: 0x01) */ + #define R_ICU_WUPEN1_ULP0AWUPEN_Pos (9UL) /*!< ULP0AWUPEN (Bit 9) */ + #define R_ICU_WUPEN1_ULP0AWUPEN_Msk (0x200UL) /*!< ULP0AWUPEN (Bitfield-Mask: 0x01) */ + #define R_ICU_WUPEN1_ULP0BWUPEN_Pos (10UL) /*!< ULP0BWUPEN (Bit 10) */ + #define R_ICU_WUPEN1_ULP0BWUPEN_Msk (0x400UL) /*!< ULP0BWUPEN (Bitfield-Mask: 0x01) */ + #define R_ICU_WUPEN1_I3CWUPEN_Pos (11UL) /*!< I3CWUPEN (Bit 11) */ + #define R_ICU_WUPEN1_I3CWUPEN_Msk (0x800UL) /*!< I3CWUPEN (Bitfield-Mask: 0x01) */ + #define R_ICU_WUPEN1_ULP1UWUPEN_Pos (12UL) /*!< ULP1UWUPEN (Bit 12) */ + #define R_ICU_WUPEN1_ULP1UWUPEN_Msk (0x1000UL) /*!< ULP1UWUPEN (Bitfield-Mask: 0x01) */ + #define R_ICU_WUPEN1_ULP1AWUPEN_Pos (13UL) /*!< ULP1AWUPEN (Bit 13) */ + #define R_ICU_WUPEN1_ULP1AWUPEN_Msk (0x2000UL) /*!< ULP1AWUPEN (Bitfield-Mask: 0x01) */ + #define R_ICU_WUPEN1_ULP1BWUPEN_Pos (14UL) /*!< ULP1BWUPEN (Bit 14) */ + #define R_ICU_WUPEN1_ULP1BWUPEN_Msk (0x4000UL) /*!< ULP1BWUPEN (Bitfield-Mask: 0x01) */ +/* ========================================================= IELSR ========================================================= */ + #define R_ICU_IELSR_DTCE_Pos (24UL) /*!< DTCE (Bit 24) */ + #define R_ICU_IELSR_DTCE_Msk (0x1000000UL) /*!< DTCE (Bitfield-Mask: 0x01) */ + #define R_ICU_IELSR_IR_Pos (16UL) /*!< IR (Bit 16) */ + #define R_ICU_IELSR_IR_Msk (0x10000UL) /*!< IR (Bitfield-Mask: 0x01) */ + #define R_ICU_IELSR_IELS_Pos (0UL) /*!< IELS (Bit 0) */ + #define R_ICU_IELSR_IELS_Msk (0x1ffUL) /*!< IELS (Bitfield-Mask: 0x1ff) */ + +/* =========================================================================================================================== */ +/* ================ R_IIC0 ================ */ +/* =========================================================================================================================== */ + +/* ========================================================= ICCR1 ========================================================= */ + #define R_IIC0_ICCR1_ICE_Pos (7UL) /*!< ICE (Bit 7) */ + #define R_IIC0_ICCR1_ICE_Msk (0x80UL) /*!< ICE (Bitfield-Mask: 0x01) */ + #define R_IIC0_ICCR1_IICRST_Pos (6UL) /*!< IICRST (Bit 6) */ + #define R_IIC0_ICCR1_IICRST_Msk (0x40UL) /*!< IICRST (Bitfield-Mask: 0x01) */ + #define R_IIC0_ICCR1_CLO_Pos (5UL) /*!< CLO (Bit 5) */ + #define R_IIC0_ICCR1_CLO_Msk (0x20UL) /*!< CLO (Bitfield-Mask: 0x01) */ + #define R_IIC0_ICCR1_SOWP_Pos (4UL) /*!< SOWP (Bit 4) */ + #define R_IIC0_ICCR1_SOWP_Msk (0x10UL) /*!< SOWP (Bitfield-Mask: 0x01) */ + #define R_IIC0_ICCR1_SCLO_Pos (3UL) /*!< SCLO (Bit 3) */ + #define R_IIC0_ICCR1_SCLO_Msk (0x8UL) /*!< SCLO (Bitfield-Mask: 0x01) */ + #define R_IIC0_ICCR1_SDAO_Pos (2UL) /*!< SDAO (Bit 2) */ + #define R_IIC0_ICCR1_SDAO_Msk (0x4UL) /*!< SDAO (Bitfield-Mask: 0x01) */ + #define R_IIC0_ICCR1_SCLI_Pos (1UL) /*!< SCLI (Bit 1) */ + #define R_IIC0_ICCR1_SCLI_Msk (0x2UL) /*!< SCLI (Bitfield-Mask: 0x01) */ + #define R_IIC0_ICCR1_SDAI_Pos (0UL) /*!< SDAI (Bit 0) */ + #define R_IIC0_ICCR1_SDAI_Msk (0x1UL) /*!< SDAI (Bitfield-Mask: 0x01) */ +/* ========================================================= ICCR2 ========================================================= */ + #define R_IIC0_ICCR2_BBSY_Pos (7UL) /*!< BBSY (Bit 7) */ + #define R_IIC0_ICCR2_BBSY_Msk (0x80UL) /*!< BBSY (Bitfield-Mask: 0x01) */ + #define R_IIC0_ICCR2_MST_Pos (6UL) /*!< MST (Bit 6) */ + #define R_IIC0_ICCR2_MST_Msk (0x40UL) /*!< MST (Bitfield-Mask: 0x01) */ + #define R_IIC0_ICCR2_TRS_Pos (5UL) /*!< TRS (Bit 5) */ + #define R_IIC0_ICCR2_TRS_Msk (0x20UL) /*!< TRS (Bitfield-Mask: 0x01) */ + #define R_IIC0_ICCR2_SP_Pos (3UL) /*!< SP (Bit 3) */ + #define R_IIC0_ICCR2_SP_Msk (0x8UL) /*!< SP (Bitfield-Mask: 0x01) */ + #define R_IIC0_ICCR2_RS_Pos (2UL) /*!< RS (Bit 2) */ + #define R_IIC0_ICCR2_RS_Msk (0x4UL) /*!< RS (Bitfield-Mask: 0x01) */ + #define R_IIC0_ICCR2_ST_Pos (1UL) /*!< ST (Bit 1) */ + #define R_IIC0_ICCR2_ST_Msk (0x2UL) /*!< ST (Bitfield-Mask: 0x01) */ +/* ========================================================= ICMR1 ========================================================= */ + #define R_IIC0_ICMR1_MTWP_Pos (7UL) /*!< MTWP (Bit 7) */ + #define R_IIC0_ICMR1_MTWP_Msk (0x80UL) /*!< MTWP (Bitfield-Mask: 0x01) */ + #define R_IIC0_ICMR1_CKS_Pos (4UL) /*!< CKS (Bit 4) */ + #define R_IIC0_ICMR1_CKS_Msk (0x70UL) /*!< CKS (Bitfield-Mask: 0x07) */ + #define R_IIC0_ICMR1_BCWP_Pos (3UL) /*!< BCWP (Bit 3) */ + #define R_IIC0_ICMR1_BCWP_Msk (0x8UL) /*!< BCWP (Bitfield-Mask: 0x01) */ + #define R_IIC0_ICMR1_BC_Pos (0UL) /*!< BC (Bit 0) */ + #define R_IIC0_ICMR1_BC_Msk (0x7UL) /*!< BC (Bitfield-Mask: 0x07) */ +/* ========================================================= ICMR2 ========================================================= */ + #define R_IIC0_ICMR2_DLCS_Pos (7UL) /*!< DLCS (Bit 7) */ + #define R_IIC0_ICMR2_DLCS_Msk (0x80UL) /*!< DLCS (Bitfield-Mask: 0x01) */ + #define R_IIC0_ICMR2_SDDL_Pos (4UL) /*!< SDDL (Bit 4) */ + #define R_IIC0_ICMR2_SDDL_Msk (0x70UL) /*!< SDDL (Bitfield-Mask: 0x07) */ + #define R_IIC0_ICMR2_TMOH_Pos (2UL) /*!< TMOH (Bit 2) */ + #define R_IIC0_ICMR2_TMOH_Msk (0x4UL) /*!< TMOH (Bitfield-Mask: 0x01) */ + #define R_IIC0_ICMR2_TMOL_Pos (1UL) /*!< TMOL (Bit 1) */ + #define R_IIC0_ICMR2_TMOL_Msk (0x2UL) /*!< TMOL (Bitfield-Mask: 0x01) */ + #define R_IIC0_ICMR2_TMOS_Pos (0UL) /*!< TMOS (Bit 0) */ + #define R_IIC0_ICMR2_TMOS_Msk (0x1UL) /*!< TMOS (Bitfield-Mask: 0x01) */ +/* ========================================================= ICMR3 ========================================================= */ + #define R_IIC0_ICMR3_SMBS_Pos (7UL) /*!< SMBS (Bit 7) */ + #define R_IIC0_ICMR3_SMBS_Msk (0x80UL) /*!< SMBS (Bitfield-Mask: 0x01) */ + #define R_IIC0_ICMR3_WAIT_Pos (6UL) /*!< WAIT (Bit 6) */ + #define R_IIC0_ICMR3_WAIT_Msk (0x40UL) /*!< WAIT (Bitfield-Mask: 0x01) */ + #define R_IIC0_ICMR3_RDRFS_Pos (5UL) /*!< RDRFS (Bit 5) */ + #define R_IIC0_ICMR3_RDRFS_Msk (0x20UL) /*!< RDRFS (Bitfield-Mask: 0x01) */ + #define R_IIC0_ICMR3_ACKWP_Pos (4UL) /*!< ACKWP (Bit 4) */ + #define R_IIC0_ICMR3_ACKWP_Msk (0x10UL) /*!< ACKWP (Bitfield-Mask: 0x01) */ + #define R_IIC0_ICMR3_ACKBT_Pos (3UL) /*!< ACKBT (Bit 3) */ + #define R_IIC0_ICMR3_ACKBT_Msk (0x8UL) /*!< ACKBT (Bitfield-Mask: 0x01) */ + #define R_IIC0_ICMR3_ACKBR_Pos (2UL) /*!< ACKBR (Bit 2) */ + #define R_IIC0_ICMR3_ACKBR_Msk (0x4UL) /*!< ACKBR (Bitfield-Mask: 0x01) */ + #define R_IIC0_ICMR3_NF_Pos (0UL) /*!< NF (Bit 0) */ + #define R_IIC0_ICMR3_NF_Msk (0x3UL) /*!< NF (Bitfield-Mask: 0x03) */ +/* ========================================================= ICFER ========================================================= */ + #define R_IIC0_ICFER_FMPE_Pos (7UL) /*!< FMPE (Bit 7) */ + #define R_IIC0_ICFER_FMPE_Msk (0x80UL) /*!< FMPE (Bitfield-Mask: 0x01) */ + #define R_IIC0_ICFER_SCLE_Pos (6UL) /*!< SCLE (Bit 6) */ + #define R_IIC0_ICFER_SCLE_Msk (0x40UL) /*!< SCLE (Bitfield-Mask: 0x01) */ + #define R_IIC0_ICFER_NFE_Pos (5UL) /*!< NFE (Bit 5) */ + #define R_IIC0_ICFER_NFE_Msk (0x20UL) /*!< NFE (Bitfield-Mask: 0x01) */ + #define R_IIC0_ICFER_NACKE_Pos (4UL) /*!< NACKE (Bit 4) */ + #define R_IIC0_ICFER_NACKE_Msk (0x10UL) /*!< NACKE (Bitfield-Mask: 0x01) */ + #define R_IIC0_ICFER_SALE_Pos (3UL) /*!< SALE (Bit 3) */ + #define R_IIC0_ICFER_SALE_Msk (0x8UL) /*!< SALE (Bitfield-Mask: 0x01) */ + #define R_IIC0_ICFER_NALE_Pos (2UL) /*!< NALE (Bit 2) */ + #define R_IIC0_ICFER_NALE_Msk (0x4UL) /*!< NALE (Bitfield-Mask: 0x01) */ + #define R_IIC0_ICFER_MALE_Pos (1UL) /*!< MALE (Bit 1) */ + #define R_IIC0_ICFER_MALE_Msk (0x2UL) /*!< MALE (Bitfield-Mask: 0x01) */ + #define R_IIC0_ICFER_TMOE_Pos (0UL) /*!< TMOE (Bit 0) */ + #define R_IIC0_ICFER_TMOE_Msk (0x1UL) /*!< TMOE (Bitfield-Mask: 0x01) */ +/* ========================================================= ICSER ========================================================= */ + #define R_IIC0_ICSER_HOAE_Pos (7UL) /*!< HOAE (Bit 7) */ + #define R_IIC0_ICSER_HOAE_Msk (0x80UL) /*!< HOAE (Bitfield-Mask: 0x01) */ + #define R_IIC0_ICSER_DIDE_Pos (5UL) /*!< DIDE (Bit 5) */ + #define R_IIC0_ICSER_DIDE_Msk (0x20UL) /*!< DIDE (Bitfield-Mask: 0x01) */ + #define R_IIC0_ICSER_GCAE_Pos (3UL) /*!< GCAE (Bit 3) */ + #define R_IIC0_ICSER_GCAE_Msk (0x8UL) /*!< GCAE (Bitfield-Mask: 0x01) */ + #define R_IIC0_ICSER_SAR2E_Pos (2UL) /*!< SAR2E (Bit 2) */ + #define R_IIC0_ICSER_SAR2E_Msk (0x4UL) /*!< SAR2E (Bitfield-Mask: 0x01) */ + #define R_IIC0_ICSER_SAR1E_Pos (1UL) /*!< SAR1E (Bit 1) */ + #define R_IIC0_ICSER_SAR1E_Msk (0x2UL) /*!< SAR1E (Bitfield-Mask: 0x01) */ + #define R_IIC0_ICSER_SAR0E_Pos (0UL) /*!< SAR0E (Bit 0) */ + #define R_IIC0_ICSER_SAR0E_Msk (0x1UL) /*!< SAR0E (Bitfield-Mask: 0x01) */ +/* ========================================================= ICIER ========================================================= */ + #define R_IIC0_ICIER_TIE_Pos (7UL) /*!< TIE (Bit 7) */ + #define R_IIC0_ICIER_TIE_Msk (0x80UL) /*!< TIE (Bitfield-Mask: 0x01) */ + #define R_IIC0_ICIER_TEIE_Pos (6UL) /*!< TEIE (Bit 6) */ + #define R_IIC0_ICIER_TEIE_Msk (0x40UL) /*!< TEIE (Bitfield-Mask: 0x01) */ + #define R_IIC0_ICIER_RIE_Pos (5UL) /*!< RIE (Bit 5) */ + #define R_IIC0_ICIER_RIE_Msk (0x20UL) /*!< RIE (Bitfield-Mask: 0x01) */ + #define R_IIC0_ICIER_NAKIE_Pos (4UL) /*!< NAKIE (Bit 4) */ + #define R_IIC0_ICIER_NAKIE_Msk (0x10UL) /*!< NAKIE (Bitfield-Mask: 0x01) */ + #define R_IIC0_ICIER_SPIE_Pos (3UL) /*!< SPIE (Bit 3) */ + #define R_IIC0_ICIER_SPIE_Msk (0x8UL) /*!< SPIE (Bitfield-Mask: 0x01) */ + #define R_IIC0_ICIER_STIE_Pos (2UL) /*!< STIE (Bit 2) */ + #define R_IIC0_ICIER_STIE_Msk (0x4UL) /*!< STIE (Bitfield-Mask: 0x01) */ + #define R_IIC0_ICIER_ALIE_Pos (1UL) /*!< ALIE (Bit 1) */ + #define R_IIC0_ICIER_ALIE_Msk (0x2UL) /*!< ALIE (Bitfield-Mask: 0x01) */ + #define R_IIC0_ICIER_TMOIE_Pos (0UL) /*!< TMOIE (Bit 0) */ + #define R_IIC0_ICIER_TMOIE_Msk (0x1UL) /*!< TMOIE (Bitfield-Mask: 0x01) */ +/* ========================================================= ICSR1 ========================================================= */ + #define R_IIC0_ICSR1_HOA_Pos (7UL) /*!< HOA (Bit 7) */ + #define R_IIC0_ICSR1_HOA_Msk (0x80UL) /*!< HOA (Bitfield-Mask: 0x01) */ + #define R_IIC0_ICSR1_DID_Pos (5UL) /*!< DID (Bit 5) */ + #define R_IIC0_ICSR1_DID_Msk (0x20UL) /*!< DID (Bitfield-Mask: 0x01) */ + #define R_IIC0_ICSR1_GCA_Pos (3UL) /*!< GCA (Bit 3) */ + #define R_IIC0_ICSR1_GCA_Msk (0x8UL) /*!< GCA (Bitfield-Mask: 0x01) */ + #define R_IIC0_ICSR1_AAS2_Pos (2UL) /*!< AAS2 (Bit 2) */ + #define R_IIC0_ICSR1_AAS2_Msk (0x4UL) /*!< AAS2 (Bitfield-Mask: 0x01) */ + #define R_IIC0_ICSR1_AAS1_Pos (1UL) /*!< AAS1 (Bit 1) */ + #define R_IIC0_ICSR1_AAS1_Msk (0x2UL) /*!< AAS1 (Bitfield-Mask: 0x01) */ + #define R_IIC0_ICSR1_AAS0_Pos (0UL) /*!< AAS0 (Bit 0) */ + #define R_IIC0_ICSR1_AAS0_Msk (0x1UL) /*!< AAS0 (Bitfield-Mask: 0x01) */ +/* ========================================================= ICSR2 ========================================================= */ + #define R_IIC0_ICSR2_TDRE_Pos (7UL) /*!< TDRE (Bit 7) */ + #define R_IIC0_ICSR2_TDRE_Msk (0x80UL) /*!< TDRE (Bitfield-Mask: 0x01) */ + #define R_IIC0_ICSR2_TEND_Pos (6UL) /*!< TEND (Bit 6) */ + #define R_IIC0_ICSR2_TEND_Msk (0x40UL) /*!< TEND (Bitfield-Mask: 0x01) */ + #define R_IIC0_ICSR2_RDRF_Pos (5UL) /*!< RDRF (Bit 5) */ + #define R_IIC0_ICSR2_RDRF_Msk (0x20UL) /*!< RDRF (Bitfield-Mask: 0x01) */ + #define R_IIC0_ICSR2_NACKF_Pos (4UL) /*!< NACKF (Bit 4) */ + #define R_IIC0_ICSR2_NACKF_Msk (0x10UL) /*!< NACKF (Bitfield-Mask: 0x01) */ + #define R_IIC0_ICSR2_STOP_Pos (3UL) /*!< STOP (Bit 3) */ + #define R_IIC0_ICSR2_STOP_Msk (0x8UL) /*!< STOP (Bitfield-Mask: 0x01) */ + #define R_IIC0_ICSR2_START_Pos (2UL) /*!< START (Bit 2) */ + #define R_IIC0_ICSR2_START_Msk (0x4UL) /*!< START (Bitfield-Mask: 0x01) */ + #define R_IIC0_ICSR2_AL_Pos (1UL) /*!< AL (Bit 1) */ + #define R_IIC0_ICSR2_AL_Msk (0x2UL) /*!< AL (Bitfield-Mask: 0x01) */ + #define R_IIC0_ICSR2_TMOF_Pos (0UL) /*!< TMOF (Bit 0) */ + #define R_IIC0_ICSR2_TMOF_Msk (0x1UL) /*!< TMOF (Bitfield-Mask: 0x01) */ +/* ========================================================= ICBRL ========================================================= */ + #define R_IIC0_ICBRL_BRL_Pos (0UL) /*!< BRL (Bit 0) */ + #define R_IIC0_ICBRL_BRL_Msk (0x1fUL) /*!< BRL (Bitfield-Mask: 0x1f) */ +/* ========================================================= ICBRH ========================================================= */ + #define R_IIC0_ICBRH_BRH_Pos (0UL) /*!< BRH (Bit 0) */ + #define R_IIC0_ICBRH_BRH_Msk (0x1fUL) /*!< BRH (Bitfield-Mask: 0x1f) */ +/* ========================================================= ICDRT ========================================================= */ + #define R_IIC0_ICDRT_ICDRT_Pos (0UL) /*!< ICDRT (Bit 0) */ + #define R_IIC0_ICDRT_ICDRT_Msk (0xffUL) /*!< ICDRT (Bitfield-Mask: 0xff) */ +/* ========================================================= ICDRR ========================================================= */ + #define R_IIC0_ICDRR_ICDRR_Pos (0UL) /*!< ICDRR (Bit 0) */ + #define R_IIC0_ICDRR_ICDRR_Msk (0xffUL) /*!< ICDRR (Bitfield-Mask: 0xff) */ +/* ========================================================= ICWUR ========================================================= */ + #define R_IIC0_ICWUR_WUE_Pos (7UL) /*!< WUE (Bit 7) */ + #define R_IIC0_ICWUR_WUE_Msk (0x80UL) /*!< WUE (Bitfield-Mask: 0x01) */ + #define R_IIC0_ICWUR_WUIE_Pos (6UL) /*!< WUIE (Bit 6) */ + #define R_IIC0_ICWUR_WUIE_Msk (0x40UL) /*!< WUIE (Bitfield-Mask: 0x01) */ + #define R_IIC0_ICWUR_WUF_Pos (5UL) /*!< WUF (Bit 5) */ + #define R_IIC0_ICWUR_WUF_Msk (0x20UL) /*!< WUF (Bitfield-Mask: 0x01) */ + #define R_IIC0_ICWUR_WUACK_Pos (4UL) /*!< WUACK (Bit 4) */ + #define R_IIC0_ICWUR_WUACK_Msk (0x10UL) /*!< WUACK (Bitfield-Mask: 0x01) */ + #define R_IIC0_ICWUR_WUAFA_Pos (0UL) /*!< WUAFA (Bit 0) */ + #define R_IIC0_ICWUR_WUAFA_Msk (0x1UL) /*!< WUAFA (Bitfield-Mask: 0x01) */ +/* ======================================================== ICWUR2 ========================================================= */ + #define R_IIC0_ICWUR2_WUSYF_Pos (2UL) /*!< WUSYF (Bit 2) */ + #define R_IIC0_ICWUR2_WUSYF_Msk (0x4UL) /*!< WUSYF (Bitfield-Mask: 0x01) */ + #define R_IIC0_ICWUR2_WUASYF_Pos (1UL) /*!< WUASYF (Bit 1) */ + #define R_IIC0_ICWUR2_WUASYF_Msk (0x2UL) /*!< WUASYF (Bitfield-Mask: 0x01) */ + #define R_IIC0_ICWUR2_WUSEN_Pos (0UL) /*!< WUSEN (Bit 0) */ + #define R_IIC0_ICWUR2_WUSEN_Msk (0x1UL) /*!< WUSEN (Bitfield-Mask: 0x01) */ + +/* =========================================================================================================================== */ +/* ================ R_IWDT ================ */ +/* =========================================================================================================================== */ + +/* ======================================================== IWDTRR ========================================================= */ + #define R_IWDT_IWDTRR_IWDTRR_Pos (0UL) /*!< IWDTRR (Bit 0) */ + #define R_IWDT_IWDTRR_IWDTRR_Msk (0xffUL) /*!< IWDTRR (Bitfield-Mask: 0xff) */ +/* ======================================================== IWDTCR ========================================================= */ + #define R_IWDT_IWDTCR_RPSS_Pos (12UL) /*!< RPSS (Bit 12) */ + #define R_IWDT_IWDTCR_RPSS_Msk (0x3000UL) /*!< RPSS (Bitfield-Mask: 0x03) */ + #define R_IWDT_IWDTCR_RPES_Pos (8UL) /*!< RPES (Bit 8) */ + #define R_IWDT_IWDTCR_RPES_Msk (0x300UL) /*!< RPES (Bitfield-Mask: 0x03) */ + #define R_IWDT_IWDTCR_CKS_Pos (4UL) /*!< CKS (Bit 4) */ + #define R_IWDT_IWDTCR_CKS_Msk (0xf0UL) /*!< CKS (Bitfield-Mask: 0x0f) */ + #define R_IWDT_IWDTCR_TOPS_Pos (0UL) /*!< TOPS (Bit 0) */ + #define R_IWDT_IWDTCR_TOPS_Msk (0x3UL) /*!< TOPS (Bitfield-Mask: 0x03) */ +/* ======================================================== IWDTSR ========================================================= */ + #define R_IWDT_IWDTSR_REFEF_Pos (15UL) /*!< REFEF (Bit 15) */ + #define R_IWDT_IWDTSR_REFEF_Msk (0x8000UL) /*!< REFEF (Bitfield-Mask: 0x01) */ + #define R_IWDT_IWDTSR_UNDFF_Pos (14UL) /*!< UNDFF (Bit 14) */ + #define R_IWDT_IWDTSR_UNDFF_Msk (0x4000UL) /*!< UNDFF (Bitfield-Mask: 0x01) */ + #define R_IWDT_IWDTSR_CNTVAL_Pos (0UL) /*!< CNTVAL (Bit 0) */ + #define R_IWDT_IWDTSR_CNTVAL_Msk (0x3fffUL) /*!< CNTVAL (Bitfield-Mask: 0x3fff) */ +/* ======================================================== IWDTRCR ======================================================== */ + #define R_IWDT_IWDTRCR_RSTIRQS_Pos (7UL) /*!< RSTIRQS (Bit 7) */ + #define R_IWDT_IWDTRCR_RSTIRQS_Msk (0x80UL) /*!< RSTIRQS (Bitfield-Mask: 0x01) */ +/* ======================================================= IWDTCSTPR ======================================================= */ + #define R_IWDT_IWDTCSTPR_SLCSTP_Pos (7UL) /*!< SLCSTP (Bit 7) */ + #define R_IWDT_IWDTCSTPR_SLCSTP_Msk (0x80UL) /*!< SLCSTP (Bitfield-Mask: 0x01) */ + +/* =========================================================================================================================== */ +/* ================ R_I3C0 ================ */ +/* =========================================================================================================================== */ + +/* ========================================================= PRTS ========================================================== */ + #define R_I3C0_PRTS_PRTMD_Pos (0UL) /*!< PRTMD (Bit 0) */ + #define R_I3C0_PRTS_PRTMD_Msk (0x1UL) /*!< PRTMD (Bitfield-Mask: 0x01) */ +/* ========================================================= CECTL ========================================================= */ + #define R_I3C0_CECTL_CLKE_Pos (0UL) /*!< CLKE (Bit 0) */ + #define R_I3C0_CECTL_CLKE_Msk (0x1UL) /*!< CLKE (Bitfield-Mask: 0x01) */ +/* ========================================================= BCTL ========================================================== */ + #define R_I3C0_BCTL_INCBA_Pos (0UL) /*!< INCBA (Bit 0) */ + #define R_I3C0_BCTL_INCBA_Msk (0x1UL) /*!< INCBA (Bitfield-Mask: 0x01) */ + #define R_I3C0_BCTL_BMDS_Pos (7UL) /*!< BMDS (Bit 7) */ + #define R_I3C0_BCTL_BMDS_Msk (0x80UL) /*!< BMDS (Bitfield-Mask: 0x01) */ + #define R_I3C0_BCTL_HJACKCTL_Pos (8UL) /*!< HJACKCTL (Bit 8) */ + #define R_I3C0_BCTL_HJACKCTL_Msk (0x100UL) /*!< HJACKCTL (Bitfield-Mask: 0x01) */ + #define R_I3C0_BCTL_ABT_Pos (29UL) /*!< ABT (Bit 29) */ + #define R_I3C0_BCTL_ABT_Msk (0x20000000UL) /*!< ABT (Bitfield-Mask: 0x01) */ + #define R_I3C0_BCTL_RSM_Pos (30UL) /*!< RSM (Bit 30) */ + #define R_I3C0_BCTL_RSM_Msk (0x40000000UL) /*!< RSM (Bitfield-Mask: 0x01) */ + #define R_I3C0_BCTL_BUSE_Pos (31UL) /*!< BUSE (Bit 31) */ + #define R_I3C0_BCTL_BUSE_Msk (0x80000000UL) /*!< BUSE (Bitfield-Mask: 0x01) */ +/* ======================================================== MSDVAD ========================================================= */ + #define R_I3C0_MSDVAD_MDYAD_Pos (16UL) /*!< MDYAD (Bit 16) */ + #define R_I3C0_MSDVAD_MDYAD_Msk (0x7f0000UL) /*!< MDYAD (Bitfield-Mask: 0x7f) */ + #define R_I3C0_MSDVAD_MDYADV_Pos (31UL) /*!< MDYADV (Bit 31) */ + #define R_I3C0_MSDVAD_MDYADV_Msk (0x80000000UL) /*!< MDYADV (Bitfield-Mask: 0x01) */ +/* ======================================================== RSTCTL ========================================================= */ + #define R_I3C0_RSTCTL_RI3CRST_Pos (0UL) /*!< RI3CRST (Bit 0) */ + #define R_I3C0_RSTCTL_RI3CRST_Msk (0x1UL) /*!< RI3CRST (Bitfield-Mask: 0x01) */ + #define R_I3C0_RSTCTL_CMDQRST_Pos (1UL) /*!< CMDQRST (Bit 1) */ + #define R_I3C0_RSTCTL_CMDQRST_Msk (0x2UL) /*!< CMDQRST (Bitfield-Mask: 0x01) */ + #define R_I3C0_RSTCTL_RSPQRST_Pos (2UL) /*!< RSPQRST (Bit 2) */ + #define R_I3C0_RSTCTL_RSPQRST_Msk (0x4UL) /*!< RSPQRST (Bitfield-Mask: 0x01) */ + #define R_I3C0_RSTCTL_TDBRST_Pos (3UL) /*!< TDBRST (Bit 3) */ + #define R_I3C0_RSTCTL_TDBRST_Msk (0x8UL) /*!< TDBRST (Bitfield-Mask: 0x01) */ + #define R_I3C0_RSTCTL_RDBRST_Pos (4UL) /*!< RDBRST (Bit 4) */ + #define R_I3C0_RSTCTL_RDBRST_Msk (0x10UL) /*!< RDBRST (Bitfield-Mask: 0x01) */ + #define R_I3C0_RSTCTL_IBIQRST_Pos (5UL) /*!< IBIQRST (Bit 5) */ + #define R_I3C0_RSTCTL_IBIQRST_Msk (0x20UL) /*!< IBIQRST (Bitfield-Mask: 0x01) */ + #define R_I3C0_RSTCTL_RSQRST_Pos (6UL) /*!< RSQRST (Bit 6) */ + #define R_I3C0_RSTCTL_RSQRST_Msk (0x40UL) /*!< RSQRST (Bitfield-Mask: 0x01) */ + #define R_I3C0_RSTCTL_INTLRST_Pos (16UL) /*!< INTLRST (Bit 16) */ + #define R_I3C0_RSTCTL_INTLRST_Msk (0x10000UL) /*!< INTLRST (Bitfield-Mask: 0x01) */ +/* ========================================================= PRSST ========================================================= */ + #define R_I3C0_PRSST_CRMS_Pos (2UL) /*!< CRMS (Bit 2) */ + #define R_I3C0_PRSST_CRMS_Msk (0x4UL) /*!< CRMS (Bitfield-Mask: 0x01) */ + #define R_I3C0_PRSST_TRMD_Pos (4UL) /*!< TRMD (Bit 4) */ + #define R_I3C0_PRSST_TRMD_Msk (0x10UL) /*!< TRMD (Bitfield-Mask: 0x01) */ + #define R_I3C0_PRSST_PRSSTWP_Pos (7UL) /*!< PRSSTWP (Bit 7) */ + #define R_I3C0_PRSST_PRSSTWP_Msk (0x80UL) /*!< PRSSTWP (Bitfield-Mask: 0x01) */ +/* ========================================================= INST ========================================================== */ + #define R_I3C0_INST_INEF_Pos (10UL) /*!< INEF (Bit 10) */ + #define R_I3C0_INST_INEF_Msk (0x400UL) /*!< INEF (Bitfield-Mask: 0x01) */ +/* ========================================================= INSTE ========================================================= */ + #define R_I3C0_INSTE_INEE_Pos (10UL) /*!< INEE (Bit 10) */ + #define R_I3C0_INSTE_INEE_Msk (0x400UL) /*!< INEE (Bitfield-Mask: 0x01) */ +/* ========================================================= INIE ========================================================== */ + #define R_I3C0_INIE_INEIE_Pos (10UL) /*!< INEIE (Bit 10) */ + #define R_I3C0_INIE_INEIE_Msk (0x400UL) /*!< INEIE (Bitfield-Mask: 0x01) */ +/* ======================================================== INSTFC ========================================================= */ + #define R_I3C0_INSTFC_INEFC_Pos (10UL) /*!< INEFC (Bit 10) */ + #define R_I3C0_INSTFC_INEFC_Msk (0x400UL) /*!< INEFC (Bitfield-Mask: 0x01) */ +/* ========================================================= DVCT ========================================================== */ + #define R_I3C0_DVCT_IDX_Pos (19UL) /*!< IDX (Bit 19) */ + #define R_I3C0_DVCT_IDX_Msk (0xf80000UL) /*!< IDX (Bitfield-Mask: 0x1f) */ +/* ======================================================== IBINCTL ======================================================== */ + #define R_I3C0_IBINCTL_NRHJCTL_Pos (0UL) /*!< NRHJCTL (Bit 0) */ + #define R_I3C0_IBINCTL_NRHJCTL_Msk (0x1UL) /*!< NRHJCTL (Bitfield-Mask: 0x01) */ + #define R_I3C0_IBINCTL_NRMRCTL_Pos (1UL) /*!< NRMRCTL (Bit 1) */ + #define R_I3C0_IBINCTL_NRMRCTL_Msk (0x2UL) /*!< NRMRCTL (Bitfield-Mask: 0x01) */ + #define R_I3C0_IBINCTL_NRSIRCTL_Pos (3UL) /*!< NRSIRCTL (Bit 3) */ + #define R_I3C0_IBINCTL_NRSIRCTL_Msk (0x8UL) /*!< NRSIRCTL (Bitfield-Mask: 0x01) */ +/* ========================================================= BFCTL ========================================================= */ + #define R_I3C0_BFCTL_MALE_Pos (0UL) /*!< MALE (Bit 0) */ + #define R_I3C0_BFCTL_MALE_Msk (0x1UL) /*!< MALE (Bitfield-Mask: 0x01) */ + #define R_I3C0_BFCTL_NALE_Pos (1UL) /*!< NALE (Bit 1) */ + #define R_I3C0_BFCTL_NALE_Msk (0x2UL) /*!< NALE (Bitfield-Mask: 0x01) */ + #define R_I3C0_BFCTL_SALE_Pos (2UL) /*!< SALE (Bit 2) */ + #define R_I3C0_BFCTL_SALE_Msk (0x4UL) /*!< SALE (Bitfield-Mask: 0x01) */ + #define R_I3C0_BFCTL_SCSYNE_Pos (8UL) /*!< SCSYNE (Bit 8) */ + #define R_I3C0_BFCTL_SCSYNE_Msk (0x100UL) /*!< SCSYNE (Bitfield-Mask: 0x01) */ + #define R_I3C0_BFCTL_SMBS_Pos (12UL) /*!< SMBS (Bit 12) */ + #define R_I3C0_BFCTL_SMBS_Msk (0x1000UL) /*!< SMBS (Bitfield-Mask: 0x01) */ + #define R_I3C0_BFCTL_FMPE_Pos (14UL) /*!< FMPE (Bit 14) */ + #define R_I3C0_BFCTL_FMPE_Msk (0x4000UL) /*!< FMPE (Bitfield-Mask: 0x01) */ + #define R_I3C0_BFCTL_HSME_Pos (15UL) /*!< HSME (Bit 15) */ + #define R_I3C0_BFCTL_HSME_Msk (0x8000UL) /*!< HSME (Bitfield-Mask: 0x01) */ +/* ========================================================= SVCTL ========================================================= */ + #define R_I3C0_SVCTL_GCAE_Pos (0UL) /*!< GCAE (Bit 0) */ + #define R_I3C0_SVCTL_GCAE_Msk (0x1UL) /*!< GCAE (Bitfield-Mask: 0x01) */ + #define R_I3C0_SVCTL_HSMCE_Pos (5UL) /*!< HSMCE (Bit 5) */ + #define R_I3C0_SVCTL_HSMCE_Msk (0x20UL) /*!< HSMCE (Bitfield-Mask: 0x01) */ + #define R_I3C0_SVCTL_DVIDE_Pos (6UL) /*!< DVIDE (Bit 6) */ + #define R_I3C0_SVCTL_DVIDE_Msk (0x40UL) /*!< DVIDE (Bitfield-Mask: 0x01) */ + #define R_I3C0_SVCTL_HOAE_Pos (15UL) /*!< HOAE (Bit 15) */ + #define R_I3C0_SVCTL_HOAE_Msk (0x8000UL) /*!< HOAE (Bitfield-Mask: 0x01) */ + #define R_I3C0_SVCTL_SVAEn_Pos (16UL) /*!< SVAEn (Bit 16) */ + #define R_I3C0_SVCTL_SVAEn_Msk (0x10000UL) /*!< SVAEn (Bitfield-Mask: 0x01) */ +/* ======================================================= REFCKCTL ======================================================== */ + #define R_I3C0_REFCKCTL_IREFCKS_Pos (0UL) /*!< IREFCKS (Bit 0) */ + #define R_I3C0_REFCKCTL_IREFCKS_Msk (0x7UL) /*!< IREFCKS (Bitfield-Mask: 0x07) */ +/* ========================================================= STDBR ========================================================= */ + #define R_I3C0_STDBR_SBRLO_Pos (0UL) /*!< SBRLO (Bit 0) */ + #define R_I3C0_STDBR_SBRLO_Msk (0xffUL) /*!< SBRLO (Bitfield-Mask: 0xff) */ + #define R_I3C0_STDBR_SBRHO_Pos (8UL) /*!< SBRHO (Bit 8) */ + #define R_I3C0_STDBR_SBRHO_Msk (0xff00UL) /*!< SBRHO (Bitfield-Mask: 0xff) */ + #define R_I3C0_STDBR_SBRLP_Pos (16UL) /*!< SBRLP (Bit 16) */ + #define R_I3C0_STDBR_SBRLP_Msk (0x3f0000UL) /*!< SBRLP (Bitfield-Mask: 0x3f) */ + #define R_I3C0_STDBR_SBRHP_Pos (24UL) /*!< SBRHP (Bit 24) */ + #define R_I3C0_STDBR_SBRHP_Msk (0x3f000000UL) /*!< SBRHP (Bitfield-Mask: 0x3f) */ + #define R_I3C0_STDBR_DSBRPO_Pos (31UL) /*!< DSBRPO (Bit 31) */ + #define R_I3C0_STDBR_DSBRPO_Msk (0x80000000UL) /*!< DSBRPO (Bitfield-Mask: 0x01) */ +/* ========================================================= EXTBR ========================================================= */ + #define R_I3C0_EXTBR_EBRLO_Pos (0UL) /*!< EBRLO (Bit 0) */ + #define R_I3C0_EXTBR_EBRLO_Msk (0xffUL) /*!< EBRLO (Bitfield-Mask: 0xff) */ + #define R_I3C0_EXTBR_EBRHO_Pos (8UL) /*!< EBRHO (Bit 8) */ + #define R_I3C0_EXTBR_EBRHO_Msk (0xff00UL) /*!< EBRHO (Bitfield-Mask: 0xff) */ + #define R_I3C0_EXTBR_EBRLP_Pos (16UL) /*!< EBRLP (Bit 16) */ + #define R_I3C0_EXTBR_EBRLP_Msk (0x3f0000UL) /*!< EBRLP (Bitfield-Mask: 0x3f) */ + #define R_I3C0_EXTBR_EBRHP_Pos (24UL) /*!< EBRHP (Bit 24) */ + #define R_I3C0_EXTBR_EBRHP_Msk (0x3f000000UL) /*!< EBRHP (Bitfield-Mask: 0x3f) */ +/* ======================================================== BFRECDT ======================================================== */ + #define R_I3C0_BFRECDT_FRECYC_Pos (0UL) /*!< FRECYC (Bit 0) */ + #define R_I3C0_BFRECDT_FRECYC_Msk (0x1ffUL) /*!< FRECYC (Bitfield-Mask: 0x1ff) */ +/* ======================================================== BAVLCDT ======================================================== */ + #define R_I3C0_BAVLCDT_AVLCYC_Pos (0UL) /*!< AVLCYC (Bit 0) */ + #define R_I3C0_BAVLCDT_AVLCYC_Msk (0x1ffUL) /*!< AVLCYC (Bitfield-Mask: 0x1ff) */ +/* ======================================================== BIDLCDT ======================================================== */ + #define R_I3C0_BIDLCDT_IDLCYC_Pos (0UL) /*!< IDLCYC (Bit 0) */ + #define R_I3C0_BIDLCDT_IDLCYC_Msk (0x3ffffUL) /*!< IDLCYC (Bitfield-Mask: 0x3ffff) */ +/* ======================================================== OUTCTL ========================================================= */ + #define R_I3C0_OUTCTL_SDOC_Pos (0UL) /*!< SDOC (Bit 0) */ + #define R_I3C0_OUTCTL_SDOC_Msk (0x1UL) /*!< SDOC (Bitfield-Mask: 0x01) */ + #define R_I3C0_OUTCTL_SCOC_Pos (1UL) /*!< SCOC (Bit 1) */ + #define R_I3C0_OUTCTL_SCOC_Msk (0x2UL) /*!< SCOC (Bitfield-Mask: 0x01) */ + #define R_I3C0_OUTCTL_SOCWP_Pos (2UL) /*!< SOCWP (Bit 2) */ + #define R_I3C0_OUTCTL_SOCWP_Msk (0x4UL) /*!< SOCWP (Bitfield-Mask: 0x01) */ + #define R_I3C0_OUTCTL_EXCYC_Pos (4UL) /*!< EXCYC (Bit 4) */ + #define R_I3C0_OUTCTL_EXCYC_Msk (0x10UL) /*!< EXCYC (Bitfield-Mask: 0x01) */ + #define R_I3C0_OUTCTL_SDOD_Pos (8UL) /*!< SDOD (Bit 8) */ + #define R_I3C0_OUTCTL_SDOD_Msk (0x700UL) /*!< SDOD (Bitfield-Mask: 0x07) */ + #define R_I3C0_OUTCTL_SDODCS_Pos (15UL) /*!< SDODCS (Bit 15) */ + #define R_I3C0_OUTCTL_SDODCS_Msk (0x8000UL) /*!< SDODCS (Bitfield-Mask: 0x01) */ +/* ========================================================= INCTL ========================================================= */ + #define R_I3C0_INCTL_DNFS_Pos (0UL) /*!< DNFS (Bit 0) */ + #define R_I3C0_INCTL_DNFS_Msk (0xfUL) /*!< DNFS (Bitfield-Mask: 0x0f) */ + #define R_I3C0_INCTL_DNFE_Pos (4UL) /*!< DNFE (Bit 4) */ + #define R_I3C0_INCTL_DNFE_Msk (0x10UL) /*!< DNFE (Bitfield-Mask: 0x01) */ +/* ======================================================== TMOCTL ========================================================= */ + #define R_I3C0_TMOCTL_TODTS_Pos (0UL) /*!< TODTS (Bit 0) */ + #define R_I3C0_TMOCTL_TODTS_Msk (0x3UL) /*!< TODTS (Bitfield-Mask: 0x03) */ + #define R_I3C0_TMOCTL_TOLCTL_Pos (4UL) /*!< TOLCTL (Bit 4) */ + #define R_I3C0_TMOCTL_TOLCTL_Msk (0x10UL) /*!< TOLCTL (Bitfield-Mask: 0x01) */ + #define R_I3C0_TMOCTL_TOHCTL_Pos (5UL) /*!< TOHCTL (Bit 5) */ + #define R_I3C0_TMOCTL_TOHCTL_Msk (0x20UL) /*!< TOHCTL (Bitfield-Mask: 0x01) */ + #define R_I3C0_TMOCTL_TOMDS_Pos (6UL) /*!< TOMDS (Bit 6) */ + #define R_I3C0_TMOCTL_TOMDS_Msk (0xc0UL) /*!< TOMDS (Bitfield-Mask: 0x03) */ +/* ========================================================= WUCTL ========================================================= */ + #define R_I3C0_WUCTL_WUACKS_Pos (0UL) /*!< WUACKS (Bit 0) */ + #define R_I3C0_WUCTL_WUACKS_Msk (0x1UL) /*!< WUACKS (Bitfield-Mask: 0x01) */ + #define R_I3C0_WUCTL_WUANFS_Pos (4UL) /*!< WUANFS (Bit 4) */ + #define R_I3C0_WUCTL_WUANFS_Msk (0x10UL) /*!< WUANFS (Bitfield-Mask: 0x01) */ + #define R_I3C0_WUCTL_WUFSYNE_Pos (6UL) /*!< WUFSYNE (Bit 6) */ + #define R_I3C0_WUCTL_WUFSYNE_Msk (0x40UL) /*!< WUFSYNE (Bitfield-Mask: 0x01) */ + #define R_I3C0_WUCTL_WUFE_Pos (7UL) /*!< WUFE (Bit 7) */ + #define R_I3C0_WUCTL_WUFE_Msk (0x80UL) /*!< WUFE (Bitfield-Mask: 0x01) */ +/* ======================================================== ACKCTL ========================================================= */ + #define R_I3C0_ACKCTL_ACKR_Pos (0UL) /*!< ACKR (Bit 0) */ + #define R_I3C0_ACKCTL_ACKR_Msk (0x1UL) /*!< ACKR (Bitfield-Mask: 0x01) */ + #define R_I3C0_ACKCTL_ACKT_Pos (1UL) /*!< ACKT (Bit 1) */ + #define R_I3C0_ACKCTL_ACKT_Msk (0x2UL) /*!< ACKT (Bitfield-Mask: 0x01) */ + #define R_I3C0_ACKCTL_ACKTWP_Pos (2UL) /*!< ACKTWP (Bit 2) */ + #define R_I3C0_ACKCTL_ACKTWP_Msk (0x4UL) /*!< ACKTWP (Bitfield-Mask: 0x01) */ +/* ======================================================= SCSTRCTL ======================================================== */ + #define R_I3C0_SCSTRCTL_ACKTWE_Pos (0UL) /*!< ACKTWE (Bit 0) */ + #define R_I3C0_SCSTRCTL_ACKTWE_Msk (0x1UL) /*!< ACKTWE (Bitfield-Mask: 0x01) */ + #define R_I3C0_SCSTRCTL_RWE_Pos (1UL) /*!< RWE (Bit 1) */ + #define R_I3C0_SCSTRCTL_RWE_Msk (0x2UL) /*!< RWE (Bitfield-Mask: 0x01) */ +/* ======================================================= SCSTLCTL ======================================================== */ + #define R_I3C0_SCSTLCTL_STLCYC_Pos (0UL) /*!< STLCYC (Bit 0) */ + #define R_I3C0_SCSTLCTL_STLCYC_Msk (0xffffUL) /*!< STLCYC (Bitfield-Mask: 0xffff) */ + #define R_I3C0_SCSTLCTL_AAPE_Pos (28UL) /*!< AAPE (Bit 28) */ + #define R_I3C0_SCSTLCTL_AAPE_Msk (0x10000000UL) /*!< AAPE (Bitfield-Mask: 0x01) */ + #define R_I3C0_SCSTLCTL_TRAPE_Pos (29UL) /*!< TRAPE (Bit 29) */ + #define R_I3C0_SCSTLCTL_TRAPE_Msk (0x20000000UL) /*!< TRAPE (Bitfield-Mask: 0x01) */ + #define R_I3C0_SCSTLCTL_PARPE_Pos (30UL) /*!< PARPE (Bit 30) */ + #define R_I3C0_SCSTLCTL_PARPE_Msk (0x40000000UL) /*!< PARPE (Bitfield-Mask: 0x01) */ + #define R_I3C0_SCSTLCTL_ACKPE_Pos (31UL) /*!< ACKPE (Bit 31) */ + #define R_I3C0_SCSTLCTL_ACKPE_Msk (0x80000000UL) /*!< ACKPE (Bitfield-Mask: 0x01) */ +/* ======================================================== SVTDLG0 ======================================================== */ + #define R_I3C0_SVTDLG0_STDLG_Pos (16UL) /*!< STDLG (Bit 16) */ + #define R_I3C0_SVTDLG0_STDLG_Msk (0xffff0000UL) /*!< STDLG (Bitfield-Mask: 0xffff) */ +/* ======================================================== CNDCTL ========================================================= */ + #define R_I3C0_CNDCTL_STCND_Pos (0UL) /*!< STCND (Bit 0) */ + #define R_I3C0_CNDCTL_STCND_Msk (0x1UL) /*!< STCND (Bitfield-Mask: 0x01) */ + #define R_I3C0_CNDCTL_SRCND_Pos (1UL) /*!< SRCND (Bit 1) */ + #define R_I3C0_CNDCTL_SRCND_Msk (0x2UL) /*!< SRCND (Bitfield-Mask: 0x01) */ + #define R_I3C0_CNDCTL_SPCND_Pos (2UL) /*!< SPCND (Bit 2) */ + #define R_I3C0_CNDCTL_SPCND_Msk (0x4UL) /*!< SPCND (Bitfield-Mask: 0x01) */ +/* ======================================================== NCMDQP ========================================================= */ +/* ======================================================== NRSPQP ========================================================= */ +/* ======================================================== NTDTBP0 ======================================================== */ +/* ======================================================== NIBIQP ========================================================= */ +/* ========================================================= NRSQP ========================================================= */ +/* ======================================================== NQTHCTL ======================================================== */ + #define R_I3C0_NQTHCTL_CMDQTH_Pos (0UL) /*!< CMDQTH (Bit 0) */ + #define R_I3C0_NQTHCTL_CMDQTH_Msk (0xffUL) /*!< CMDQTH (Bitfield-Mask: 0xff) */ + #define R_I3C0_NQTHCTL_RSPQTH_Pos (8UL) /*!< RSPQTH (Bit 8) */ + #define R_I3C0_NQTHCTL_RSPQTH_Msk (0xff00UL) /*!< RSPQTH (Bitfield-Mask: 0xff) */ + #define R_I3C0_NQTHCTL_IBIDSSZ_Pos (16UL) /*!< IBIDSSZ (Bit 16) */ + #define R_I3C0_NQTHCTL_IBIDSSZ_Msk (0xff0000UL) /*!< IBIDSSZ (Bitfield-Mask: 0xff) */ + #define R_I3C0_NQTHCTL_IBIQTH_Pos (24UL) /*!< IBIQTH (Bit 24) */ + #define R_I3C0_NQTHCTL_IBIQTH_Msk (0xff000000UL) /*!< IBIQTH (Bitfield-Mask: 0xff) */ +/* ======================================================= NTBTHCTL0 ======================================================= */ + #define R_I3C0_NTBTHCTL0_TXDBTH_Pos (0UL) /*!< TXDBTH (Bit 0) */ + #define R_I3C0_NTBTHCTL0_TXDBTH_Msk (0x7UL) /*!< TXDBTH (Bitfield-Mask: 0x07) */ + #define R_I3C0_NTBTHCTL0_RXDBTH_Pos (8UL) /*!< RXDBTH (Bit 8) */ + #define R_I3C0_NTBTHCTL0_RXDBTH_Msk (0x700UL) /*!< RXDBTH (Bitfield-Mask: 0x07) */ + #define R_I3C0_NTBTHCTL0_TXSTTH_Pos (16UL) /*!< TXSTTH (Bit 16) */ + #define R_I3C0_NTBTHCTL0_TXSTTH_Msk (0x70000UL) /*!< TXSTTH (Bitfield-Mask: 0x07) */ + #define R_I3C0_NTBTHCTL0_RXSTTH_Pos (24UL) /*!< RXSTTH (Bit 24) */ + #define R_I3C0_NTBTHCTL0_RXSTTH_Msk (0x7000000UL) /*!< RXSTTH (Bitfield-Mask: 0x07) */ +/* ======================================================= NRQTHCTL ======================================================== */ + #define R_I3C0_NRQTHCTL_RSQTH_Pos (0UL) /*!< RSQTH (Bit 0) */ + #define R_I3C0_NRQTHCTL_RSQTH_Msk (0xffUL) /*!< RSQTH (Bitfield-Mask: 0xff) */ +/* ========================================================== BST ========================================================== */ + #define R_I3C0_BST_STCNDDF_Pos (0UL) /*!< STCNDDF (Bit 0) */ + #define R_I3C0_BST_STCNDDF_Msk (0x1UL) /*!< STCNDDF (Bitfield-Mask: 0x01) */ + #define R_I3C0_BST_SPCNDDF_Pos (1UL) /*!< SPCNDDF (Bit 1) */ + #define R_I3C0_BST_SPCNDDF_Msk (0x2UL) /*!< SPCNDDF (Bitfield-Mask: 0x01) */ + #define R_I3C0_BST_HDREXDF_Pos (2UL) /*!< HDREXDF (Bit 2) */ + #define R_I3C0_BST_HDREXDF_Msk (0x4UL) /*!< HDREXDF (Bitfield-Mask: 0x01) */ + #define R_I3C0_BST_NACKDF_Pos (4UL) /*!< NACKDF (Bit 4) */ + #define R_I3C0_BST_NACKDF_Msk (0x10UL) /*!< NACKDF (Bitfield-Mask: 0x01) */ + #define R_I3C0_BST_TENDF_Pos (8UL) /*!< TENDF (Bit 8) */ + #define R_I3C0_BST_TENDF_Msk (0x100UL) /*!< TENDF (Bitfield-Mask: 0x01) */ + #define R_I3C0_BST_ALF_Pos (16UL) /*!< ALF (Bit 16) */ + #define R_I3C0_BST_ALF_Msk (0x10000UL) /*!< ALF (Bitfield-Mask: 0x01) */ + #define R_I3C0_BST_TODF_Pos (20UL) /*!< TODF (Bit 20) */ + #define R_I3C0_BST_TODF_Msk (0x100000UL) /*!< TODF (Bitfield-Mask: 0x01) */ +/* ========================================================= BSTE ========================================================== */ + #define R_I3C0_BSTE_STCNDDE_Pos (0UL) /*!< STCNDDE (Bit 0) */ + #define R_I3C0_BSTE_STCNDDE_Msk (0x1UL) /*!< STCNDDE (Bitfield-Mask: 0x01) */ + #define R_I3C0_BSTE_SPCNDDE_Pos (1UL) /*!< SPCNDDE (Bit 1) */ + #define R_I3C0_BSTE_SPCNDDE_Msk (0x2UL) /*!< SPCNDDE (Bitfield-Mask: 0x01) */ + #define R_I3C0_BSTE_HDREXDE_Pos (2UL) /*!< HDREXDE (Bit 2) */ + #define R_I3C0_BSTE_HDREXDE_Msk (0x4UL) /*!< HDREXDE (Bitfield-Mask: 0x01) */ + #define R_I3C0_BSTE_NACKDE_Pos (4UL) /*!< NACKDE (Bit 4) */ + #define R_I3C0_BSTE_NACKDE_Msk (0x10UL) /*!< NACKDE (Bitfield-Mask: 0x01) */ + #define R_I3C0_BSTE_TENDE_Pos (8UL) /*!< TENDE (Bit 8) */ + #define R_I3C0_BSTE_TENDE_Msk (0x100UL) /*!< TENDE (Bitfield-Mask: 0x01) */ + #define R_I3C0_BSTE_ALE_Pos (16UL) /*!< ALE (Bit 16) */ + #define R_I3C0_BSTE_ALE_Msk (0x10000UL) /*!< ALE (Bitfield-Mask: 0x01) */ + #define R_I3C0_BSTE_TODE_Pos (20UL) /*!< TODE (Bit 20) */ + #define R_I3C0_BSTE_TODE_Msk (0x100000UL) /*!< TODE (Bitfield-Mask: 0x01) */ +/* ========================================================== BIE ========================================================== */ + #define R_I3C0_BIE_STCNDDIE_Pos (0UL) /*!< STCNDDIE (Bit 0) */ + #define R_I3C0_BIE_STCNDDIE_Msk (0x1UL) /*!< STCNDDIE (Bitfield-Mask: 0x01) */ + #define R_I3C0_BIE_SPCNDDIE_Pos (1UL) /*!< SPCNDDIE (Bit 1) */ + #define R_I3C0_BIE_SPCNDDIE_Msk (0x2UL) /*!< SPCNDDIE (Bitfield-Mask: 0x01) */ + #define R_I3C0_BIE_HDREXDIE_Pos (2UL) /*!< HDREXDIE (Bit 2) */ + #define R_I3C0_BIE_HDREXDIE_Msk (0x4UL) /*!< HDREXDIE (Bitfield-Mask: 0x01) */ + #define R_I3C0_BIE_NACKDIE_Pos (4UL) /*!< NACKDIE (Bit 4) */ + #define R_I3C0_BIE_NACKDIE_Msk (0x10UL) /*!< NACKDIE (Bitfield-Mask: 0x01) */ + #define R_I3C0_BIE_TENDIE_Pos (8UL) /*!< TENDIE (Bit 8) */ + #define R_I3C0_BIE_TENDIE_Msk (0x100UL) /*!< TENDIE (Bitfield-Mask: 0x01) */ + #define R_I3C0_BIE_ALIE_Pos (16UL) /*!< ALIE (Bit 16) */ + #define R_I3C0_BIE_ALIE_Msk (0x10000UL) /*!< ALIE (Bitfield-Mask: 0x01) */ + #define R_I3C0_BIE_TODIE_Pos (20UL) /*!< TODIE (Bit 20) */ + #define R_I3C0_BIE_TODIE_Msk (0x100000UL) /*!< TODIE (Bitfield-Mask: 0x01) */ +/* ========================================================= BSTFC ========================================================= */ + #define R_I3C0_BSTFC_STCNDDFC_Pos (0UL) /*!< STCNDDFC (Bit 0) */ + #define R_I3C0_BSTFC_STCNDDFC_Msk (0x1UL) /*!< STCNDDFC (Bitfield-Mask: 0x01) */ + #define R_I3C0_BSTFC_SPCNDDFC_Pos (1UL) /*!< SPCNDDFC (Bit 1) */ + #define R_I3C0_BSTFC_SPCNDDFC_Msk (0x2UL) /*!< SPCNDDFC (Bitfield-Mask: 0x01) */ + #define R_I3C0_BSTFC_HDREXDFC_Pos (2UL) /*!< HDREXDFC (Bit 2) */ + #define R_I3C0_BSTFC_HDREXDFC_Msk (0x4UL) /*!< HDREXDFC (Bitfield-Mask: 0x01) */ + #define R_I3C0_BSTFC_NACKDFC_Pos (4UL) /*!< NACKDFC (Bit 4) */ + #define R_I3C0_BSTFC_NACKDFC_Msk (0x10UL) /*!< NACKDFC (Bitfield-Mask: 0x01) */ + #define R_I3C0_BSTFC_TENDFC_Pos (8UL) /*!< TENDFC (Bit 8) */ + #define R_I3C0_BSTFC_TENDFC_Msk (0x100UL) /*!< TENDFC (Bitfield-Mask: 0x01) */ + #define R_I3C0_BSTFC_ALFC_Pos (16UL) /*!< ALFC (Bit 16) */ + #define R_I3C0_BSTFC_ALFC_Msk (0x10000UL) /*!< ALFC (Bitfield-Mask: 0x01) */ + #define R_I3C0_BSTFC_TODFC_Pos (20UL) /*!< TODFC (Bit 20) */ + #define R_I3C0_BSTFC_TODFC_Msk (0x100000UL) /*!< TODFC (Bitfield-Mask: 0x01) */ +/* ========================================================= NTST ========================================================== */ + #define R_I3C0_NTST_TDBEF0_Pos (0UL) /*!< TDBEF0 (Bit 0) */ + #define R_I3C0_NTST_TDBEF0_Msk (0x1UL) /*!< TDBEF0 (Bitfield-Mask: 0x01) */ + #define R_I3C0_NTST_RDBFF0_Pos (1UL) /*!< RDBFF0 (Bit 1) */ + #define R_I3C0_NTST_RDBFF0_Msk (0x2UL) /*!< RDBFF0 (Bitfield-Mask: 0x01) */ + #define R_I3C0_NTST_IBIQEFF_Pos (2UL) /*!< IBIQEFF (Bit 2) */ + #define R_I3C0_NTST_IBIQEFF_Msk (0x4UL) /*!< IBIQEFF (Bitfield-Mask: 0x01) */ + #define R_I3C0_NTST_CMDQEF_Pos (3UL) /*!< CMDQEF (Bit 3) */ + #define R_I3C0_NTST_CMDQEF_Msk (0x8UL) /*!< CMDQEF (Bitfield-Mask: 0x01) */ + #define R_I3C0_NTST_RSPQFF_Pos (4UL) /*!< RSPQFF (Bit 4) */ + #define R_I3C0_NTST_RSPQFF_Msk (0x10UL) /*!< RSPQFF (Bitfield-Mask: 0x01) */ + #define R_I3C0_NTST_TABTF_Pos (5UL) /*!< TABTF (Bit 5) */ + #define R_I3C0_NTST_TABTF_Msk (0x20UL) /*!< TABTF (Bitfield-Mask: 0x01) */ + #define R_I3C0_NTST_TEF_Pos (9UL) /*!< TEF (Bit 9) */ + #define R_I3C0_NTST_TEF_Msk (0x200UL) /*!< TEF (Bitfield-Mask: 0x01) */ + #define R_I3C0_NTST_RSQFF_Pos (20UL) /*!< RSQFF (Bit 20) */ + #define R_I3C0_NTST_RSQFF_Msk (0x100000UL) /*!< RSQFF (Bitfield-Mask: 0x01) */ +/* ========================================================= NTSTE ========================================================= */ + #define R_I3C0_NTSTE_TDBEE0_Pos (0UL) /*!< TDBEE0 (Bit 0) */ + #define R_I3C0_NTSTE_TDBEE0_Msk (0x1UL) /*!< TDBEE0 (Bitfield-Mask: 0x01) */ + #define R_I3C0_NTSTE_RDBFE0_Pos (1UL) /*!< RDBFE0 (Bit 1) */ + #define R_I3C0_NTSTE_RDBFE0_Msk (0x2UL) /*!< RDBFE0 (Bitfield-Mask: 0x01) */ + #define R_I3C0_NTSTE_IBIQEFE_Pos (2UL) /*!< IBIQEFE (Bit 2) */ + #define R_I3C0_NTSTE_IBIQEFE_Msk (0x4UL) /*!< IBIQEFE (Bitfield-Mask: 0x01) */ + #define R_I3C0_NTSTE_CMDQEE_Pos (3UL) /*!< CMDQEE (Bit 3) */ + #define R_I3C0_NTSTE_CMDQEE_Msk (0x8UL) /*!< CMDQEE (Bitfield-Mask: 0x01) */ + #define R_I3C0_NTSTE_RSPQFE_Pos (4UL) /*!< RSPQFE (Bit 4) */ + #define R_I3C0_NTSTE_RSPQFE_Msk (0x10UL) /*!< RSPQFE (Bitfield-Mask: 0x01) */ + #define R_I3C0_NTSTE_TABTE_Pos (5UL) /*!< TABTE (Bit 5) */ + #define R_I3C0_NTSTE_TABTE_Msk (0x20UL) /*!< TABTE (Bitfield-Mask: 0x01) */ + #define R_I3C0_NTSTE_TEE_Pos (9UL) /*!< TEE (Bit 9) */ + #define R_I3C0_NTSTE_TEE_Msk (0x200UL) /*!< TEE (Bitfield-Mask: 0x01) */ + #define R_I3C0_NTSTE_RSQFE_Pos (20UL) /*!< RSQFE (Bit 20) */ + #define R_I3C0_NTSTE_RSQFE_Msk (0x100000UL) /*!< RSQFE (Bitfield-Mask: 0x01) */ +/* ========================================================= NTIE ========================================================== */ + #define R_I3C0_NTIE_TDBEIE0_Pos (0UL) /*!< TDBEIE0 (Bit 0) */ + #define R_I3C0_NTIE_TDBEIE0_Msk (0x1UL) /*!< TDBEIE0 (Bitfield-Mask: 0x01) */ + #define R_I3C0_NTIE_RDBFIE0_Pos (1UL) /*!< RDBFIE0 (Bit 1) */ + #define R_I3C0_NTIE_RDBFIE0_Msk (0x2UL) /*!< RDBFIE0 (Bitfield-Mask: 0x01) */ + #define R_I3C0_NTIE_IBIQEFIE_Pos (2UL) /*!< IBIQEFIE (Bit 2) */ + #define R_I3C0_NTIE_IBIQEFIE_Msk (0x4UL) /*!< IBIQEFIE (Bitfield-Mask: 0x01) */ + #define R_I3C0_NTIE_CMDQEIE_Pos (3UL) /*!< CMDQEIE (Bit 3) */ + #define R_I3C0_NTIE_CMDQEIE_Msk (0x8UL) /*!< CMDQEIE (Bitfield-Mask: 0x01) */ + #define R_I3C0_NTIE_RSPQFIE_Pos (4UL) /*!< RSPQFIE (Bit 4) */ + #define R_I3C0_NTIE_RSPQFIE_Msk (0x10UL) /*!< RSPQFIE (Bitfield-Mask: 0x01) */ + #define R_I3C0_NTIE_TABTIE_Pos (5UL) /*!< TABTIE (Bit 5) */ + #define R_I3C0_NTIE_TABTIE_Msk (0x20UL) /*!< TABTIE (Bitfield-Mask: 0x01) */ + #define R_I3C0_NTIE_TEIE_Pos (9UL) /*!< TEIE (Bit 9) */ + #define R_I3C0_NTIE_TEIE_Msk (0x200UL) /*!< TEIE (Bitfield-Mask: 0x01) */ + #define R_I3C0_NTIE_RSQFIE_Pos (20UL) /*!< RSQFIE (Bit 20) */ + #define R_I3C0_NTIE_RSQFIE_Msk (0x100000UL) /*!< RSQFIE (Bitfield-Mask: 0x01) */ +/* ======================================================== NTSTFC ========================================================= */ + #define R_I3C0_NTSTFC_TDBEFC0_Pos (0UL) /*!< TDBEFC0 (Bit 0) */ + #define R_I3C0_NTSTFC_TDBEFC0_Msk (0x1UL) /*!< TDBEFC0 (Bitfield-Mask: 0x01) */ + #define R_I3C0_NTSTFC_RDBFFC0_Pos (1UL) /*!< RDBFFC0 (Bit 1) */ + #define R_I3C0_NTSTFC_RDBFFC0_Msk (0x2UL) /*!< RDBFFC0 (Bitfield-Mask: 0x01) */ + #define R_I3C0_NTSTFC_IBIQEFFC_Pos (2UL) /*!< IBIQEFFC (Bit 2) */ + #define R_I3C0_NTSTFC_IBIQEFFC_Msk (0x4UL) /*!< IBIQEFFC (Bitfield-Mask: 0x01) */ + #define R_I3C0_NTSTFC_CMDQEFC_Pos (3UL) /*!< CMDQEFC (Bit 3) */ + #define R_I3C0_NTSTFC_CMDQEFC_Msk (0x8UL) /*!< CMDQEFC (Bitfield-Mask: 0x01) */ + #define R_I3C0_NTSTFC_RSPQFFC_Pos (4UL) /*!< RSPQFFC (Bit 4) */ + #define R_I3C0_NTSTFC_RSPQFFC_Msk (0x10UL) /*!< RSPQFFC (Bitfield-Mask: 0x01) */ + #define R_I3C0_NTSTFC_TABTFC_Pos (5UL) /*!< TABTFC (Bit 5) */ + #define R_I3C0_NTSTFC_TABTFC_Msk (0x20UL) /*!< TABTFC (Bitfield-Mask: 0x01) */ + #define R_I3C0_NTSTFC_TEFC_Pos (9UL) /*!< TEFC (Bit 9) */ + #define R_I3C0_NTSTFC_TEFC_Msk (0x200UL) /*!< TEFC (Bitfield-Mask: 0x01) */ + #define R_I3C0_NTSTFC_RSQFFC_Pos (20UL) /*!< RSQFFC (Bit 20) */ + #define R_I3C0_NTSTFC_RSQFFC_Msk (0x100000UL) /*!< RSQFFC (Bitfield-Mask: 0x01) */ +/* ========================================================= BCST ========================================================== */ + #define R_I3C0_BCST_BFREF_Pos (0UL) /*!< BFREF (Bit 0) */ + #define R_I3C0_BCST_BFREF_Msk (0x1UL) /*!< BFREF (Bitfield-Mask: 0x01) */ + #define R_I3C0_BCST_BAVLF_Pos (1UL) /*!< BAVLF (Bit 1) */ + #define R_I3C0_BCST_BAVLF_Msk (0x2UL) /*!< BAVLF (Bitfield-Mask: 0x01) */ + #define R_I3C0_BCST_BIDLF_Pos (2UL) /*!< BIDLF (Bit 2) */ + #define R_I3C0_BCST_BIDLF_Msk (0x4UL) /*!< BIDLF (Bitfield-Mask: 0x01) */ +/* ========================================================= SVST ========================================================== */ + #define R_I3C0_SVST_GCAF_Pos (0UL) /*!< GCAF (Bit 0) */ + #define R_I3C0_SVST_GCAF_Msk (0x1UL) /*!< GCAF (Bitfield-Mask: 0x01) */ + #define R_I3C0_SVST_HSMCF_Pos (5UL) /*!< HSMCF (Bit 5) */ + #define R_I3C0_SVST_HSMCF_Msk (0x20UL) /*!< HSMCF (Bitfield-Mask: 0x01) */ + #define R_I3C0_SVST_DVIDF_Pos (6UL) /*!< DVIDF (Bit 6) */ + #define R_I3C0_SVST_DVIDF_Msk (0x40UL) /*!< DVIDF (Bitfield-Mask: 0x01) */ + #define R_I3C0_SVST_HOAF_Pos (15UL) /*!< HOAF (Bit 15) */ + #define R_I3C0_SVST_HOAF_Msk (0x8000UL) /*!< HOAF (Bitfield-Mask: 0x01) */ + #define R_I3C0_SVST_SVAFn_Pos (16UL) /*!< SVAFn (Bit 16) */ + #define R_I3C0_SVST_SVAFn_Msk (0x10000UL) /*!< SVAFn (Bitfield-Mask: 0x01) */ +/* ========================================================= WUST ========================================================== */ + #define R_I3C0_WUST_WUASYNF_Pos (0UL) /*!< WUASYNF (Bit 0) */ + #define R_I3C0_WUST_WUASYNF_Msk (0x1UL) /*!< WUASYNF (Bitfield-Mask: 0x01) */ +/* ======================================================== DATBAS0 ======================================================== */ + #define R_I3C0_DATBAS0_DVSTAD_Pos (0UL) /*!< DVSTAD (Bit 0) */ + #define R_I3C0_DATBAS0_DVSTAD_Msk (0x7fUL) /*!< DVSTAD (Bitfield-Mask: 0x7f) */ + #define R_I3C0_DATBAS0_DVIBIPL_Pos (12UL) /*!< DVIBIPL (Bit 12) */ + #define R_I3C0_DATBAS0_DVIBIPL_Msk (0x1000UL) /*!< DVIBIPL (Bitfield-Mask: 0x01) */ + #define R_I3C0_DATBAS0_DVSIRRJ_Pos (13UL) /*!< DVSIRRJ (Bit 13) */ + #define R_I3C0_DATBAS0_DVSIRRJ_Msk (0x2000UL) /*!< DVSIRRJ (Bitfield-Mask: 0x01) */ + #define R_I3C0_DATBAS0_DVMRRJ_Pos (14UL) /*!< DVMRRJ (Bit 14) */ + #define R_I3C0_DATBAS0_DVMRRJ_Msk (0x4000UL) /*!< DVMRRJ (Bitfield-Mask: 0x01) */ + #define R_I3C0_DATBAS0_DVIBITS_Pos (15UL) /*!< DVIBITS (Bit 15) */ + #define R_I3C0_DATBAS0_DVIBITS_Msk (0x8000UL) /*!< DVIBITS (Bitfield-Mask: 0x01) */ + #define R_I3C0_DATBAS0_DVDYAD_Pos (16UL) /*!< DVDYAD (Bit 16) */ + #define R_I3C0_DATBAS0_DVDYAD_Msk (0xff0000UL) /*!< DVDYAD (Bitfield-Mask: 0xff) */ + #define R_I3C0_DATBAS0_DVNACK_Pos (29UL) /*!< DVNACK (Bit 29) */ + #define R_I3C0_DATBAS0_DVNACK_Msk (0x60000000UL) /*!< DVNACK (Bitfield-Mask: 0x03) */ + #define R_I3C0_DATBAS0_DVTYP_Pos (31UL) /*!< DVTYP (Bit 31) */ + #define R_I3C0_DATBAS0_DVTYP_Msk (0x80000000UL) /*!< DVTYP (Bitfield-Mask: 0x01) */ +/* ======================================================== DATBAS1 ======================================================== */ + #define R_I3C0_DATBAS1_DVSTAD_Pos (0UL) /*!< DVSTAD (Bit 0) */ + #define R_I3C0_DATBAS1_DVSTAD_Msk (0x7fUL) /*!< DVSTAD (Bitfield-Mask: 0x7f) */ + #define R_I3C0_DATBAS1_DVIBIPL_Pos (12UL) /*!< DVIBIPL (Bit 12) */ + #define R_I3C0_DATBAS1_DVIBIPL_Msk (0x1000UL) /*!< DVIBIPL (Bitfield-Mask: 0x01) */ + #define R_I3C0_DATBAS1_DVSIRRJ_Pos (13UL) /*!< DVSIRRJ (Bit 13) */ + #define R_I3C0_DATBAS1_DVSIRRJ_Msk (0x2000UL) /*!< DVSIRRJ (Bitfield-Mask: 0x01) */ + #define R_I3C0_DATBAS1_DVMRRJ_Pos (14UL) /*!< DVMRRJ (Bit 14) */ + #define R_I3C0_DATBAS1_DVMRRJ_Msk (0x4000UL) /*!< DVMRRJ (Bitfield-Mask: 0x01) */ + #define R_I3C0_DATBAS1_DVIBITS_Pos (15UL) /*!< DVIBITS (Bit 15) */ + #define R_I3C0_DATBAS1_DVIBITS_Msk (0x8000UL) /*!< DVIBITS (Bitfield-Mask: 0x01) */ + #define R_I3C0_DATBAS1_DVDYAD_Pos (16UL) /*!< DVDYAD (Bit 16) */ + #define R_I3C0_DATBAS1_DVDYAD_Msk (0xff0000UL) /*!< DVDYAD (Bitfield-Mask: 0xff) */ + #define R_I3C0_DATBAS1_DVNACK_Pos (29UL) /*!< DVNACK (Bit 29) */ + #define R_I3C0_DATBAS1_DVNACK_Msk (0x60000000UL) /*!< DVNACK (Bitfield-Mask: 0x03) */ + #define R_I3C0_DATBAS1_DVTYP_Pos (31UL) /*!< DVTYP (Bit 31) */ + #define R_I3C0_DATBAS1_DVTYP_Msk (0x80000000UL) /*!< DVTYP (Bitfield-Mask: 0x01) */ +/* ======================================================== DATBAS2 ======================================================== */ + #define R_I3C0_DATBAS2_DVSTAD_Pos (0UL) /*!< DVSTAD (Bit 0) */ + #define R_I3C0_DATBAS2_DVSTAD_Msk (0x7fUL) /*!< DVSTAD (Bitfield-Mask: 0x7f) */ + #define R_I3C0_DATBAS2_DVIBIPL_Pos (12UL) /*!< DVIBIPL (Bit 12) */ + #define R_I3C0_DATBAS2_DVIBIPL_Msk (0x1000UL) /*!< DVIBIPL (Bitfield-Mask: 0x01) */ + #define R_I3C0_DATBAS2_DVSIRRJ_Pos (13UL) /*!< DVSIRRJ (Bit 13) */ + #define R_I3C0_DATBAS2_DVSIRRJ_Msk (0x2000UL) /*!< DVSIRRJ (Bitfield-Mask: 0x01) */ + #define R_I3C0_DATBAS2_DVMRRJ_Pos (14UL) /*!< DVMRRJ (Bit 14) */ + #define R_I3C0_DATBAS2_DVMRRJ_Msk (0x4000UL) /*!< DVMRRJ (Bitfield-Mask: 0x01) */ + #define R_I3C0_DATBAS2_DVIBITS_Pos (15UL) /*!< DVIBITS (Bit 15) */ + #define R_I3C0_DATBAS2_DVIBITS_Msk (0x8000UL) /*!< DVIBITS (Bitfield-Mask: 0x01) */ + #define R_I3C0_DATBAS2_DVDYAD_Pos (16UL) /*!< DVDYAD (Bit 16) */ + #define R_I3C0_DATBAS2_DVDYAD_Msk (0xff0000UL) /*!< DVDYAD (Bitfield-Mask: 0xff) */ + #define R_I3C0_DATBAS2_DVNACK_Pos (29UL) /*!< DVNACK (Bit 29) */ + #define R_I3C0_DATBAS2_DVNACK_Msk (0x60000000UL) /*!< DVNACK (Bitfield-Mask: 0x03) */ + #define R_I3C0_DATBAS2_DVTYP_Pos (31UL) /*!< DVTYP (Bit 31) */ + #define R_I3C0_DATBAS2_DVTYP_Msk (0x80000000UL) /*!< DVTYP (Bitfield-Mask: 0x01) */ +/* ======================================================== DATBAS3 ======================================================== */ + #define R_I3C0_DATBAS3_DVSTAD_Pos (0UL) /*!< DVSTAD (Bit 0) */ + #define R_I3C0_DATBAS3_DVSTAD_Msk (0x7fUL) /*!< DVSTAD (Bitfield-Mask: 0x7f) */ + #define R_I3C0_DATBAS3_DVIBIPL_Pos (12UL) /*!< DVIBIPL (Bit 12) */ + #define R_I3C0_DATBAS3_DVIBIPL_Msk (0x1000UL) /*!< DVIBIPL (Bitfield-Mask: 0x01) */ + #define R_I3C0_DATBAS3_DVSIRRJ_Pos (13UL) /*!< DVSIRRJ (Bit 13) */ + #define R_I3C0_DATBAS3_DVSIRRJ_Msk (0x2000UL) /*!< DVSIRRJ (Bitfield-Mask: 0x01) */ + #define R_I3C0_DATBAS3_DVMRRJ_Pos (14UL) /*!< DVMRRJ (Bit 14) */ + #define R_I3C0_DATBAS3_DVMRRJ_Msk (0x4000UL) /*!< DVMRRJ (Bitfield-Mask: 0x01) */ + #define R_I3C0_DATBAS3_DVIBITS_Pos (15UL) /*!< DVIBITS (Bit 15) */ + #define R_I3C0_DATBAS3_DVIBITS_Msk (0x8000UL) /*!< DVIBITS (Bitfield-Mask: 0x01) */ + #define R_I3C0_DATBAS3_DVDYAD_Pos (16UL) /*!< DVDYAD (Bit 16) */ + #define R_I3C0_DATBAS3_DVDYAD_Msk (0xff0000UL) /*!< DVDYAD (Bitfield-Mask: 0xff) */ + #define R_I3C0_DATBAS3_DVNACK_Pos (29UL) /*!< DVNACK (Bit 29) */ + #define R_I3C0_DATBAS3_DVNACK_Msk (0x60000000UL) /*!< DVNACK (Bitfield-Mask: 0x03) */ + #define R_I3C0_DATBAS3_DVTYP_Pos (31UL) /*!< DVTYP (Bit 31) */ + #define R_I3C0_DATBAS3_DVTYP_Msk (0x80000000UL) /*!< DVTYP (Bitfield-Mask: 0x01) */ +/* ======================================================= EXDATBAS ======================================================== */ + #define R_I3C0_EXDATBAS_EDSTAD_Pos (0UL) /*!< EDSTAD (Bit 0) */ + #define R_I3C0_EXDATBAS_EDSTAD_Msk (0x7fUL) /*!< EDSTAD (Bitfield-Mask: 0x7f) */ + #define R_I3C0_EXDATBAS_EDDYAD_Pos (16UL) /*!< EDDYAD (Bit 16) */ + #define R_I3C0_EXDATBAS_EDDYAD_Msk (0xff0000UL) /*!< EDDYAD (Bitfield-Mask: 0xff) */ + #define R_I3C0_EXDATBAS_EDNACK_Pos (29UL) /*!< EDNACK (Bit 29) */ + #define R_I3C0_EXDATBAS_EDNACK_Msk (0x60000000UL) /*!< EDNACK (Bitfield-Mask: 0x03) */ + #define R_I3C0_EXDATBAS_EDTYP_Pos (31UL) /*!< EDTYP (Bit 31) */ + #define R_I3C0_EXDATBAS_EDTYP_Msk (0x80000000UL) /*!< EDTYP (Bitfield-Mask: 0x01) */ +/* ======================================================= SDATBAS0 ======================================================== */ + #define R_I3C0_SDATBAS0_SDSTAD_Pos (0UL) /*!< SDSTAD (Bit 0) */ + #define R_I3C0_SDATBAS0_SDSTAD_Msk (0x3ffUL) /*!< SDSTAD (Bitfield-Mask: 0x3ff) */ + #define R_I3C0_SDATBAS0_SDADLS_Pos (10UL) /*!< SDADLS (Bit 10) */ + #define R_I3C0_SDATBAS0_SDADLS_Msk (0x400UL) /*!< SDADLS (Bitfield-Mask: 0x01) */ + #define R_I3C0_SDATBAS0_SDIBIPL_Pos (12UL) /*!< SDIBIPL (Bit 12) */ + #define R_I3C0_SDATBAS0_SDIBIPL_Msk (0x1000UL) /*!< SDIBIPL (Bitfield-Mask: 0x01) */ + #define R_I3C0_SDATBAS0_SDDYAD_Pos (16UL) /*!< SDDYAD (Bit 16) */ + #define R_I3C0_SDATBAS0_SDDYAD_Msk (0x7f0000UL) /*!< SDDYAD (Bitfield-Mask: 0x7f) */ +/* ======================================================= SDATBAS1 ======================================================== */ + #define R_I3C0_SDATBAS1_SDSTAD_Pos (0UL) /*!< SDSTAD (Bit 0) */ + #define R_I3C0_SDATBAS1_SDSTAD_Msk (0x3ffUL) /*!< SDSTAD (Bitfield-Mask: 0x3ff) */ + #define R_I3C0_SDATBAS1_SDADLS_Pos (10UL) /*!< SDADLS (Bit 10) */ + #define R_I3C0_SDATBAS1_SDADLS_Msk (0x400UL) /*!< SDADLS (Bitfield-Mask: 0x01) */ + #define R_I3C0_SDATBAS1_SDIBIPL_Pos (12UL) /*!< SDIBIPL (Bit 12) */ + #define R_I3C0_SDATBAS1_SDIBIPL_Msk (0x1000UL) /*!< SDIBIPL (Bitfield-Mask: 0x01) */ + #define R_I3C0_SDATBAS1_SDDYAD_Pos (16UL) /*!< SDDYAD (Bit 16) */ + #define R_I3C0_SDATBAS1_SDDYAD_Msk (0x7f0000UL) /*!< SDDYAD (Bitfield-Mask: 0x7f) */ +/* ======================================================= SDATBAS2 ======================================================== */ + #define R_I3C0_SDATBAS2_SDSTAD_Pos (0UL) /*!< SDSTAD (Bit 0) */ + #define R_I3C0_SDATBAS2_SDSTAD_Msk (0x3ffUL) /*!< SDSTAD (Bitfield-Mask: 0x3ff) */ + #define R_I3C0_SDATBAS2_SDADLS_Pos (10UL) /*!< SDADLS (Bit 10) */ + #define R_I3C0_SDATBAS2_SDADLS_Msk (0x400UL) /*!< SDADLS (Bitfield-Mask: 0x01) */ + #define R_I3C0_SDATBAS2_SDIBIPL_Pos (12UL) /*!< SDIBIPL (Bit 12) */ + #define R_I3C0_SDATBAS2_SDIBIPL_Msk (0x1000UL) /*!< SDIBIPL (Bitfield-Mask: 0x01) */ + #define R_I3C0_SDATBAS2_SDDYAD_Pos (16UL) /*!< SDDYAD (Bit 16) */ + #define R_I3C0_SDATBAS2_SDDYAD_Msk (0x7f0000UL) /*!< SDDYAD (Bitfield-Mask: 0x7f) */ +/* ======================================================== MSDCT0 ========================================================= */ + #define R_I3C0_MSDCT0_RBCR0_Pos (8UL) /*!< RBCR0 (Bit 8) */ + #define R_I3C0_MSDCT0_RBCR0_Msk (0x100UL) /*!< RBCR0 (Bitfield-Mask: 0x01) */ + #define R_I3C0_MSDCT0_RBCR1_Pos (9UL) /*!< RBCR1 (Bit 9) */ + #define R_I3C0_MSDCT0_RBCR1_Msk (0x200UL) /*!< RBCR1 (Bitfield-Mask: 0x01) */ + #define R_I3C0_MSDCT0_RBCR2_Pos (10UL) /*!< RBCR2 (Bit 10) */ + #define R_I3C0_MSDCT0_RBCR2_Msk (0x400UL) /*!< RBCR2 (Bitfield-Mask: 0x01) */ + #define R_I3C0_MSDCT0_RBCR3_Pos (11UL) /*!< RBCR3 (Bit 11) */ + #define R_I3C0_MSDCT0_RBCR3_Msk (0x800UL) /*!< RBCR3 (Bitfield-Mask: 0x01) */ + #define R_I3C0_MSDCT0_RBCR76_Pos (14UL) /*!< RBCR76 (Bit 14) */ + #define R_I3C0_MSDCT0_RBCR76_Msk (0xc000UL) /*!< RBCR76 (Bitfield-Mask: 0x03) */ +/* ======================================================== MSDCT1 ========================================================= */ + #define R_I3C0_MSDCT1_RBCR0_Pos (8UL) /*!< RBCR0 (Bit 8) */ + #define R_I3C0_MSDCT1_RBCR0_Msk (0x100UL) /*!< RBCR0 (Bitfield-Mask: 0x01) */ + #define R_I3C0_MSDCT1_RBCR1_Pos (9UL) /*!< RBCR1 (Bit 9) */ + #define R_I3C0_MSDCT1_RBCR1_Msk (0x200UL) /*!< RBCR1 (Bitfield-Mask: 0x01) */ + #define R_I3C0_MSDCT1_RBCR2_Pos (10UL) /*!< RBCR2 (Bit 10) */ + #define R_I3C0_MSDCT1_RBCR2_Msk (0x400UL) /*!< RBCR2 (Bitfield-Mask: 0x01) */ + #define R_I3C0_MSDCT1_RBCR3_Pos (11UL) /*!< RBCR3 (Bit 11) */ + #define R_I3C0_MSDCT1_RBCR3_Msk (0x800UL) /*!< RBCR3 (Bitfield-Mask: 0x01) */ + #define R_I3C0_MSDCT1_RBCR76_Pos (14UL) /*!< RBCR76 (Bit 14) */ + #define R_I3C0_MSDCT1_RBCR76_Msk (0xc000UL) /*!< RBCR76 (Bitfield-Mask: 0x03) */ +/* ======================================================== MSDCT2 ========================================================= */ + #define R_I3C0_MSDCT2_RBCR0_Pos (8UL) /*!< RBCR0 (Bit 8) */ + #define R_I3C0_MSDCT2_RBCR0_Msk (0x100UL) /*!< RBCR0 (Bitfield-Mask: 0x01) */ + #define R_I3C0_MSDCT2_RBCR1_Pos (9UL) /*!< RBCR1 (Bit 9) */ + #define R_I3C0_MSDCT2_RBCR1_Msk (0x200UL) /*!< RBCR1 (Bitfield-Mask: 0x01) */ + #define R_I3C0_MSDCT2_RBCR2_Pos (10UL) /*!< RBCR2 (Bit 10) */ + #define R_I3C0_MSDCT2_RBCR2_Msk (0x400UL) /*!< RBCR2 (Bitfield-Mask: 0x01) */ + #define R_I3C0_MSDCT2_RBCR3_Pos (11UL) /*!< RBCR3 (Bit 11) */ + #define R_I3C0_MSDCT2_RBCR3_Msk (0x800UL) /*!< RBCR3 (Bitfield-Mask: 0x01) */ + #define R_I3C0_MSDCT2_RBCR76_Pos (14UL) /*!< RBCR76 (Bit 14) */ + #define R_I3C0_MSDCT2_RBCR76_Msk (0xc000UL) /*!< RBCR76 (Bitfield-Mask: 0x03) */ +/* ======================================================== MSDCT3 ========================================================= */ + #define R_I3C0_MSDCT3_RBCR0_Pos (8UL) /*!< RBCR0 (Bit 8) */ + #define R_I3C0_MSDCT3_RBCR0_Msk (0x100UL) /*!< RBCR0 (Bitfield-Mask: 0x01) */ + #define R_I3C0_MSDCT3_RBCR1_Pos (9UL) /*!< RBCR1 (Bit 9) */ + #define R_I3C0_MSDCT3_RBCR1_Msk (0x200UL) /*!< RBCR1 (Bitfield-Mask: 0x01) */ + #define R_I3C0_MSDCT3_RBCR2_Pos (10UL) /*!< RBCR2 (Bit 10) */ + #define R_I3C0_MSDCT3_RBCR2_Msk (0x400UL) /*!< RBCR2 (Bitfield-Mask: 0x01) */ + #define R_I3C0_MSDCT3_RBCR3_Pos (11UL) /*!< RBCR3 (Bit 11) */ + #define R_I3C0_MSDCT3_RBCR3_Msk (0x800UL) /*!< RBCR3 (Bitfield-Mask: 0x01) */ + #define R_I3C0_MSDCT3_RBCR76_Pos (14UL) /*!< RBCR76 (Bit 14) */ + #define R_I3C0_MSDCT3_RBCR76_Msk (0xc000UL) /*!< RBCR76 (Bitfield-Mask: 0x03) */ +/* ========================================================= SVDCT ========================================================= */ + #define R_I3C0_SVDCT_TDCR_Pos (0UL) /*!< TDCR (Bit 0) */ + #define R_I3C0_SVDCT_TDCR_Msk (0xffUL) /*!< TDCR (Bitfield-Mask: 0xff) */ + #define R_I3C0_SVDCT_TBCR0_Pos (8UL) /*!< TBCR0 (Bit 8) */ + #define R_I3C0_SVDCT_TBCR0_Msk (0x100UL) /*!< TBCR0 (Bitfield-Mask: 0x01) */ + #define R_I3C0_SVDCT_TBCR1_Pos (9UL) /*!< TBCR1 (Bit 9) */ + #define R_I3C0_SVDCT_TBCR1_Msk (0x200UL) /*!< TBCR1 (Bitfield-Mask: 0x01) */ + #define R_I3C0_SVDCT_TBCR2_Pos (10UL) /*!< TBCR2 (Bit 10) */ + #define R_I3C0_SVDCT_TBCR2_Msk (0x400UL) /*!< TBCR2 (Bitfield-Mask: 0x01) */ + #define R_I3C0_SVDCT_TBCR3_Pos (11UL) /*!< TBCR3 (Bit 11) */ + #define R_I3C0_SVDCT_TBCR3_Msk (0x800UL) /*!< TBCR3 (Bitfield-Mask: 0x01) */ + #define R_I3C0_SVDCT_TBCR76_Pos (14UL) /*!< TBCR76 (Bit 14) */ + #define R_I3C0_SVDCT_TBCR76_Msk (0xc000UL) /*!< TBCR76 (Bitfield-Mask: 0x03) */ +/* ======================================================= SDCTPIDL ======================================================== */ +/* ======================================================= SDCTPIDH ======================================================== */ +/* ======================================================== SVDVAD0 ======================================================== */ + #define R_I3C0_SVDVAD0_SVAD_Pos (16UL) /*!< SVAD (Bit 16) */ + #define R_I3C0_SVDVAD0_SVAD_Msk (0x3ff0000UL) /*!< SVAD (Bitfield-Mask: 0x3ff) */ + #define R_I3C0_SVDVAD0_SADLG_Pos (27UL) /*!< SADLG (Bit 27) */ + #define R_I3C0_SVDVAD0_SADLG_Msk (0x8000000UL) /*!< SADLG (Bitfield-Mask: 0x01) */ + #define R_I3C0_SVDVAD0_SSTADV_Pos (30UL) /*!< SSTADV (Bit 30) */ + #define R_I3C0_SVDVAD0_SSTADV_Msk (0x40000000UL) /*!< SSTADV (Bitfield-Mask: 0x01) */ + #define R_I3C0_SVDVAD0_SDYADV_Pos (31UL) /*!< SDYADV (Bit 31) */ + #define R_I3C0_SVDVAD0_SDYADV_Msk (0x80000000UL) /*!< SDYADV (Bitfield-Mask: 0x01) */ +/* ======================================================== CSECMD ========================================================= */ + #define R_I3C0_CSECMD_SVIRQE_Pos (0UL) /*!< SVIRQE (Bit 0) */ + #define R_I3C0_CSECMD_SVIRQE_Msk (0x1UL) /*!< SVIRQE (Bitfield-Mask: 0x01) */ + #define R_I3C0_CSECMD_MSRQE_Pos (1UL) /*!< MSRQE (Bit 1) */ + #define R_I3C0_CSECMD_MSRQE_Msk (0x2UL) /*!< MSRQE (Bitfield-Mask: 0x01) */ + #define R_I3C0_CSECMD_HJEVE_Pos (3UL) /*!< HJEVE (Bit 3) */ + #define R_I3C0_CSECMD_HJEVE_Msk (0x8UL) /*!< HJEVE (Bitfield-Mask: 0x01) */ +/* ======================================================== CEACTST ======================================================== */ + #define R_I3C0_CEACTST_ACTST_Pos (0UL) /*!< ACTST (Bit 0) */ + #define R_I3C0_CEACTST_ACTST_Msk (0xfUL) /*!< ACTST (Bitfield-Mask: 0x0f) */ +/* ========================================================= CMWLG ========================================================= */ + #define R_I3C0_CMWLG_MWLG_Pos (0UL) /*!< MWLG (Bit 0) */ + #define R_I3C0_CMWLG_MWLG_Msk (0xffffUL) /*!< MWLG (Bitfield-Mask: 0xffff) */ +/* ========================================================= CMRLG ========================================================= */ + #define R_I3C0_CMRLG_MRLG_Pos (0UL) /*!< MRLG (Bit 0) */ + #define R_I3C0_CMRLG_MRLG_Msk (0xffffUL) /*!< MRLG (Bitfield-Mask: 0xffff) */ + #define R_I3C0_CMRLG_IBIPSZ_Pos (16UL) /*!< IBIPSZ (Bit 16) */ + #define R_I3C0_CMRLG_IBIPSZ_Msk (0xff0000UL) /*!< IBIPSZ (Bitfield-Mask: 0xff) */ +/* ======================================================== CETSTMD ======================================================== */ + #define R_I3C0_CETSTMD_TSTMD_Pos (0UL) /*!< TSTMD (Bit 0) */ + #define R_I3C0_CETSTMD_TSTMD_Msk (0xffUL) /*!< TSTMD (Bitfield-Mask: 0xff) */ +/* ======================================================== CGDVST ========================================================= */ + #define R_I3C0_CGDVST_PNDINT_Pos (0UL) /*!< PNDINT (Bit 0) */ + #define R_I3C0_CGDVST_PNDINT_Msk (0xfUL) /*!< PNDINT (Bitfield-Mask: 0x0f) */ + #define R_I3C0_CGDVST_PRTE_Pos (5UL) /*!< PRTE (Bit 5) */ + #define R_I3C0_CGDVST_PRTE_Msk (0x20UL) /*!< PRTE (Bitfield-Mask: 0x01) */ + #define R_I3C0_CGDVST_ACTMD_Pos (6UL) /*!< ACTMD (Bit 6) */ + #define R_I3C0_CGDVST_ACTMD_Msk (0xc0UL) /*!< ACTMD (Bitfield-Mask: 0x03) */ + #define R_I3C0_CGDVST_VDRSV_Pos (8UL) /*!< VDRSV (Bit 8) */ + #define R_I3C0_CGDVST_VDRSV_Msk (0xff00UL) /*!< VDRSV (Bitfield-Mask: 0xff) */ +/* ======================================================== CMDSPW ========================================================= */ + #define R_I3C0_CMDSPW_MSWDR_Pos (0UL) /*!< MSWDR (Bit 0) */ + #define R_I3C0_CMDSPW_MSWDR_Msk (0x7UL) /*!< MSWDR (Bitfield-Mask: 0x07) */ +/* ======================================================== CMDSPR ========================================================= */ + #define R_I3C0_CMDSPR_MSRDR_Pos (0UL) /*!< MSRDR (Bit 0) */ + #define R_I3C0_CMDSPR_MSRDR_Msk (0x7UL) /*!< MSRDR (Bitfield-Mask: 0x07) */ + #define R_I3C0_CMDSPR_CDTTIM_Pos (3UL) /*!< CDTTIM (Bit 3) */ + #define R_I3C0_CMDSPR_CDTTIM_Msk (0x38UL) /*!< CDTTIM (Bitfield-Mask: 0x07) */ +/* ======================================================== CMDSPT ========================================================= */ + #define R_I3C0_CMDSPT_MRTTIM_Pos (0UL) /*!< MRTTIM (Bit 0) */ + #define R_I3C0_CMDSPT_MRTTIM_Msk (0xffffffUL) /*!< MRTTIM (Bitfield-Mask: 0xffffff) */ + #define R_I3C0_CMDSPT_MRTE_Pos (31UL) /*!< MRTE (Bit 31) */ + #define R_I3C0_CMDSPT_MRTE_Msk (0x80000000UL) /*!< MRTE (Bitfield-Mask: 0x01) */ +/* ========================================================= CETSM ========================================================= */ + #define R_I3C0_CETSM_FREQ_Pos (8UL) /*!< FREQ (Bit 8) */ + #define R_I3C0_CETSM_FREQ_Msk (0xff00UL) /*!< FREQ (Bitfield-Mask: 0xff) */ + #define R_I3C0_CETSM_INAC_Pos (16UL) /*!< INAC (Bit 16) */ + #define R_I3C0_CETSM_INAC_Msk (0xff0000UL) /*!< INAC (Bitfield-Mask: 0xff) */ +/* ======================================================== BITCNT ========================================================= */ + #define R_I3C0_BITCNT_BCNT_Pos (0UL) /*!< BCNT (Bit 0) */ + #define R_I3C0_BITCNT_BCNT_Msk (0x1fUL) /*!< BCNT (Bitfield-Mask: 0x1f) */ + #define R_I3C0_BITCNT_BCNTWP_Pos (7UL) /*!< BCNTWP (Bit 7) */ + #define R_I3C0_BITCNT_BCNTWP_Msk (0x80UL) /*!< BCNTWP (Bitfield-Mask: 0x01) */ +/* ======================================================== NQSTLV ========================================================= */ + #define R_I3C0_NQSTLV_CMDQFLV_Pos (0UL) /*!< CMDQFLV (Bit 0) */ + #define R_I3C0_NQSTLV_CMDQFLV_Msk (0xffUL) /*!< CMDQFLV (Bitfield-Mask: 0xff) */ + #define R_I3C0_NQSTLV_RSPQLV_Pos (8UL) /*!< RSPQLV (Bit 8) */ + #define R_I3C0_NQSTLV_RSPQLV_Msk (0xff00UL) /*!< RSPQLV (Bitfield-Mask: 0xff) */ + #define R_I3C0_NQSTLV_IBIQLV_Pos (16UL) /*!< IBIQLV (Bit 16) */ + #define R_I3C0_NQSTLV_IBIQLV_Msk (0xff0000UL) /*!< IBIQLV (Bitfield-Mask: 0xff) */ + #define R_I3C0_NQSTLV_IBISCNT_Pos (24UL) /*!< IBISCNT (Bit 24) */ + #define R_I3C0_NQSTLV_IBISCNT_Msk (0x1f000000UL) /*!< IBISCNT (Bitfield-Mask: 0x1f) */ +/* ======================================================= NDBSTLV0 ======================================================== */ + #define R_I3C0_NDBSTLV0_TDBFLV_Pos (0UL) /*!< TDBFLV (Bit 0) */ + #define R_I3C0_NDBSTLV0_TDBFLV_Msk (0xffUL) /*!< TDBFLV (Bitfield-Mask: 0xff) */ + #define R_I3C0_NDBSTLV0_RDBLV_Pos (8UL) /*!< RDBLV (Bit 8) */ + #define R_I3C0_NDBSTLV0_RDBLV_Msk (0xff00UL) /*!< RDBLV (Bitfield-Mask: 0xff) */ +/* ======================================================= NRSQSTLV ======================================================== */ + #define R_I3C0_NRSQSTLV_RSQLV_Pos (0UL) /*!< RSQLV (Bit 0) */ + #define R_I3C0_NRSQSTLV_RSQLV_Msk (0xffUL) /*!< RSQLV (Bitfield-Mask: 0xff) */ +/* ======================================================== PRSTDBG ======================================================== */ + #define R_I3C0_PRSTDBG_SCILV_Pos (0UL) /*!< SCILV (Bit 0) */ + #define R_I3C0_PRSTDBG_SCILV_Msk (0x1UL) /*!< SCILV (Bitfield-Mask: 0x01) */ + #define R_I3C0_PRSTDBG_SDILV_Pos (1UL) /*!< SDILV (Bit 1) */ + #define R_I3C0_PRSTDBG_SDILV_Msk (0x2UL) /*!< SDILV (Bitfield-Mask: 0x01) */ + #define R_I3C0_PRSTDBG_SCOLV_Pos (2UL) /*!< SCOLV (Bit 2) */ + #define R_I3C0_PRSTDBG_SCOLV_Msk (0x4UL) /*!< SCOLV (Bitfield-Mask: 0x01) */ + #define R_I3C0_PRSTDBG_SDOLV_Pos (3UL) /*!< SDOLV (Bit 3) */ + #define R_I3C0_PRSTDBG_SDOLV_Msk (0x8UL) /*!< SDOLV (Bitfield-Mask: 0x01) */ +/* ======================================================= MSERRCNT ======================================================== */ + #define R_I3C0_MSERRCNT_M2ECNT_Pos (0UL) /*!< M2ECNT (Bit 0) */ + #define R_I3C0_MSERRCNT_M2ECNT_Msk (0xffUL) /*!< M2ECNT (Bitfield-Mask: 0xff) */ + +/* =========================================================================================================================== */ +/* ================ R_MPU_MMPU ================ */ +/* =========================================================================================================================== */ + +/* ========================================================== OAD ========================================================== */ + #define R_MPU_MMPU_OAD_KEY_Pos (8UL) /*!< KEY (Bit 8) */ + #define R_MPU_MMPU_OAD_KEY_Msk (0xff00UL) /*!< KEY (Bitfield-Mask: 0xff) */ + #define R_MPU_MMPU_OAD_OAD_Pos (0UL) /*!< OAD (Bit 0) */ + #define R_MPU_MMPU_OAD_OAD_Msk (0x1UL) /*!< OAD (Bitfield-Mask: 0x01) */ +/* ========================================================= OADPT ========================================================= */ + #define R_MPU_MMPU_OADPT_KEY_Pos (8UL) /*!< KEY (Bit 8) */ + #define R_MPU_MMPU_OADPT_KEY_Msk (0xff00UL) /*!< KEY (Bitfield-Mask: 0xff) */ + #define R_MPU_MMPU_OADPT_PROTECT_Pos (0UL) /*!< PROTECT (Bit 0) */ + #define R_MPU_MMPU_OADPT_PROTECT_Msk (0x1UL) /*!< PROTECT (Bitfield-Mask: 0x01) */ + +/* =========================================================================================================================== */ +/* ================ R_MPU_SPMON ================ */ +/* =========================================================================================================================== */ + +/* =========================================================================================================================== */ +/* ================ R_MSTP ================ */ +/* =========================================================================================================================== */ + +/* ======================================================== MSTPCRA ======================================================== */ + #define R_MSTP_MSTPCRA_MSTPA_Pos (0UL) /*!< MSTPA (Bit 0) */ + #define R_MSTP_MSTPCRA_MSTPA_Msk (0x1UL) /*!< MSTPA (Bitfield-Mask: 0x01) */ +/* ======================================================== MSTPCRB ======================================================== */ + #define R_MSTP_MSTPCRB_MSTPB_Pos (0UL) /*!< MSTPB (Bit 0) */ + #define R_MSTP_MSTPCRB_MSTPB_Msk (0x1UL) /*!< MSTPB (Bitfield-Mask: 0x01) */ +/* ======================================================== MSTPCRC ======================================================== */ + #define R_MSTP_MSTPCRC_MSTPC_Pos (0UL) /*!< MSTPC (Bit 0) */ + #define R_MSTP_MSTPCRC_MSTPC_Msk (0x1UL) /*!< MSTPC (Bitfield-Mask: 0x01) */ +/* ======================================================== MSTPCRD ======================================================== */ + #define R_MSTP_MSTPCRD_MSTPD_Pos (0UL) /*!< MSTPD (Bit 0) */ + #define R_MSTP_MSTPCRD_MSTPD_Msk (0x1UL) /*!< MSTPD (Bitfield-Mask: 0x01) */ +/* ======================================================== MSTPCRE ======================================================== */ + #define R_MSTP_MSTPCRE_MSTPE_Pos (0UL) /*!< MSTPE (Bit 0) */ + #define R_MSTP_MSTPCRE_MSTPE_Msk (0x1UL) /*!< MSTPE (Bitfield-Mask: 0x01) */ +/* ======================================================= LSMRWDIS ======================================================== */ + #define R_MSTP_LSMRWDIS_RTCRWDIS_Pos (0UL) /*!< RTCRWDIS (Bit 0) */ + #define R_MSTP_LSMRWDIS_RTCRWDIS_Msk (0x1UL) /*!< RTCRWDIS (Bitfield-Mask: 0x01) */ + #define R_MSTP_LSMRWDIS_WDTDIS_Pos (1UL) /*!< WDTDIS (Bit 1) */ + #define R_MSTP_LSMRWDIS_WDTDIS_Msk (0x2UL) /*!< WDTDIS (Bitfield-Mask: 0x01) */ + #define R_MSTP_LSMRWDIS_IWDTIDS_Pos (2UL) /*!< IWDTIDS (Bit 2) */ + #define R_MSTP_LSMRWDIS_IWDTIDS_Msk (0x4UL) /*!< IWDTIDS (Bitfield-Mask: 0x01) */ + #define R_MSTP_LSMRWDIS_WREN_Pos (7UL) /*!< WREN (Bit 7) */ + #define R_MSTP_LSMRWDIS_WREN_Msk (0x80UL) /*!< WREN (Bitfield-Mask: 0x01) */ + #define R_MSTP_LSMRWDIS_PRKEY_Pos (8UL) /*!< PRKEY (Bit 8) */ + #define R_MSTP_LSMRWDIS_PRKEY_Msk (0xff00UL) /*!< PRKEY (Bitfield-Mask: 0xff) */ + +/* =========================================================================================================================== */ +/* ================ R_PORT0 ================ */ +/* =========================================================================================================================== */ + +/* ======================================================== PCNTR1 ========================================================= */ + #define R_PORT0_PCNTR1_PODR_Pos (16UL) /*!< PODR (Bit 16) */ + #define R_PORT0_PCNTR1_PODR_Msk (0xffff0000UL) /*!< PODR (Bitfield-Mask: 0xffff) */ + #define R_PORT0_PCNTR1_PDR_Pos (0UL) /*!< PDR (Bit 0) */ + #define R_PORT0_PCNTR1_PDR_Msk (0xffffUL) /*!< PDR (Bitfield-Mask: 0xffff) */ +/* ========================================================== PDR ========================================================== */ + #define R_PORT0_PDR_PDR_Pos (0UL) /*!< PDR (Bit 0) */ + #define R_PORT0_PDR_PDR_Msk (0x1UL) /*!< PDR (Bitfield-Mask: 0x01) */ +/* ========================================================= PODR ========================================================== */ + #define R_PORT0_PODR_PODR_Pos (0UL) /*!< PODR (Bit 0) */ + #define R_PORT0_PODR_PODR_Msk (0x1UL) /*!< PODR (Bitfield-Mask: 0x01) */ +/* ======================================================== PCNTR2 ========================================================= */ + #define R_PORT0_PCNTR2_EIDR_Pos (16UL) /*!< EIDR (Bit 16) */ + #define R_PORT0_PCNTR2_EIDR_Msk (0xffff0000UL) /*!< EIDR (Bitfield-Mask: 0xffff) */ + #define R_PORT0_PCNTR2_PIDR_Pos (0UL) /*!< PIDR (Bit 0) */ + #define R_PORT0_PCNTR2_PIDR_Msk (0xffffUL) /*!< PIDR (Bitfield-Mask: 0xffff) */ +/* ========================================================= PIDR ========================================================== */ + #define R_PORT0_PIDR_PIDR_Pos (0UL) /*!< PIDR (Bit 0) */ + #define R_PORT0_PIDR_PIDR_Msk (0x1UL) /*!< PIDR (Bitfield-Mask: 0x01) */ +/* ========================================================= EIDR ========================================================== */ + #define R_PORT0_EIDR_EIDR_Pos (0UL) /*!< EIDR (Bit 0) */ + #define R_PORT0_EIDR_EIDR_Msk (0x1UL) /*!< EIDR (Bitfield-Mask: 0x01) */ +/* ======================================================== PCNTR3 ========================================================= */ + #define R_PORT0_PCNTR3_PORR_Pos (16UL) /*!< PORR (Bit 16) */ + #define R_PORT0_PCNTR3_PORR_Msk (0xffff0000UL) /*!< PORR (Bitfield-Mask: 0xffff) */ + #define R_PORT0_PCNTR3_POSR_Pos (0UL) /*!< POSR (Bit 0) */ + #define R_PORT0_PCNTR3_POSR_Msk (0xffffUL) /*!< POSR (Bitfield-Mask: 0xffff) */ +/* ========================================================= POSR ========================================================== */ + #define R_PORT0_POSR_POSR_Pos (0UL) /*!< POSR (Bit 0) */ + #define R_PORT0_POSR_POSR_Msk (0x1UL) /*!< POSR (Bitfield-Mask: 0x01) */ +/* ========================================================= PORR ========================================================== */ + #define R_PORT0_PORR_PORR_Pos (0UL) /*!< PORR (Bit 0) */ + #define R_PORT0_PORR_PORR_Msk (0x1UL) /*!< PORR (Bitfield-Mask: 0x01) */ +/* ======================================================== PCNTR4 ========================================================= */ + #define R_PORT0_PCNTR4_EORR_Pos (16UL) /*!< EORR (Bit 16) */ + #define R_PORT0_PCNTR4_EORR_Msk (0xffff0000UL) /*!< EORR (Bitfield-Mask: 0xffff) */ + #define R_PORT0_PCNTR4_EOSR_Pos (0UL) /*!< EOSR (Bit 0) */ + #define R_PORT0_PCNTR4_EOSR_Msk (0xffffUL) /*!< EOSR (Bitfield-Mask: 0xffff) */ +/* ========================================================= EOSR ========================================================== */ + #define R_PORT0_EOSR_EOSR_Pos (0UL) /*!< EOSR (Bit 0) */ + #define R_PORT0_EOSR_EOSR_Msk (0x1UL) /*!< EOSR (Bitfield-Mask: 0x01) */ +/* ========================================================= EORR ========================================================== */ + #define R_PORT0_EORR_EORR_Pos (0UL) /*!< EORR (Bit 0) */ + #define R_PORT0_EORR_EORR_Msk (0x1UL) /*!< EORR (Bitfield-Mask: 0x01) */ + +/* =========================================================================================================================== */ +/* ================ R_PFS ================ */ +/* =========================================================================================================================== */ + +/* =========================================================================================================================== */ +/* ================ R_PMISC ================ */ +/* =========================================================================================================================== */ + +/* ======================================================== PFENET ========================================================= */ + #define R_PMISC_PFENET_PHYMODE0_Pos (4UL) /*!< PHYMODE0 (Bit 4) */ + #define R_PMISC_PFENET_PHYMODE0_Msk (0x10UL) /*!< PHYMODE0 (Bitfield-Mask: 0x01) */ +/* ========================================================= PWPR ========================================================== */ + #define R_PMISC_PWPR_PFSWE_Pos (6UL) /*!< PFSWE (Bit 6) */ + #define R_PMISC_PWPR_PFSWE_Msk (0x40UL) /*!< PFSWE (Bitfield-Mask: 0x01) */ + #define R_PMISC_PWPR_B0WI_Pos (7UL) /*!< B0WI (Bit 7) */ + #define R_PMISC_PWPR_B0WI_Msk (0x80UL) /*!< B0WI (Bitfield-Mask: 0x01) */ +/* ========================================================= PWPRS ========================================================= */ + #define R_PMISC_PWPRS_PFSWE_Pos (6UL) /*!< PFSWE (Bit 6) */ + #define R_PMISC_PWPRS_PFSWE_Msk (0x40UL) /*!< PFSWE (Bitfield-Mask: 0x01) */ + #define R_PMISC_PWPRS_B0WI_Pos (7UL) /*!< B0WI (Bit 7) */ + #define R_PMISC_PWPRS_B0WI_Msk (0x80UL) /*!< B0WI (Bitfield-Mask: 0x01) */ + +/* =========================================================================================================================== */ +/* ================ R_RTC ================ */ +/* =========================================================================================================================== */ + +/* ======================================================== R64CNT ========================================================= */ + #define R_RTC_R64CNT_F1HZ_Pos (6UL) /*!< F1HZ (Bit 6) */ + #define R_RTC_R64CNT_F1HZ_Msk (0x40UL) /*!< F1HZ (Bitfield-Mask: 0x01) */ + #define R_RTC_R64CNT_F2HZ_Pos (5UL) /*!< F2HZ (Bit 5) */ + #define R_RTC_R64CNT_F2HZ_Msk (0x20UL) /*!< F2HZ (Bitfield-Mask: 0x01) */ + #define R_RTC_R64CNT_F4HZ_Pos (4UL) /*!< F4HZ (Bit 4) */ + #define R_RTC_R64CNT_F4HZ_Msk (0x10UL) /*!< F4HZ (Bitfield-Mask: 0x01) */ + #define R_RTC_R64CNT_F8HZ_Pos (3UL) /*!< F8HZ (Bit 3) */ + #define R_RTC_R64CNT_F8HZ_Msk (0x8UL) /*!< F8HZ (Bitfield-Mask: 0x01) */ + #define R_RTC_R64CNT_F16HZ_Pos (2UL) /*!< F16HZ (Bit 2) */ + #define R_RTC_R64CNT_F16HZ_Msk (0x4UL) /*!< F16HZ (Bitfield-Mask: 0x01) */ + #define R_RTC_R64CNT_F32HZ_Pos (1UL) /*!< F32HZ (Bit 1) */ + #define R_RTC_R64CNT_F32HZ_Msk (0x2UL) /*!< F32HZ (Bitfield-Mask: 0x01) */ + #define R_RTC_R64CNT_F64HZ_Pos (0UL) /*!< F64HZ (Bit 0) */ + #define R_RTC_R64CNT_F64HZ_Msk (0x1UL) /*!< F64HZ (Bitfield-Mask: 0x01) */ +/* ========================================================= BCNT0 ========================================================= */ + #define R_RTC_BCNT0_BCNT0_Pos (0UL) /*!< BCNT0 (Bit 0) */ + #define R_RTC_BCNT0_BCNT0_Msk (0xffUL) /*!< BCNT0 (Bitfield-Mask: 0xff) */ +/* ======================================================== RSECCNT ======================================================== */ + #define R_RTC_RSECCNT_SEC10_Pos (4UL) /*!< SEC10 (Bit 4) */ + #define R_RTC_RSECCNT_SEC10_Msk (0x70UL) /*!< SEC10 (Bitfield-Mask: 0x07) */ + #define R_RTC_RSECCNT_SEC1_Pos (0UL) /*!< SEC1 (Bit 0) */ + #define R_RTC_RSECCNT_SEC1_Msk (0xfUL) /*!< SEC1 (Bitfield-Mask: 0x0f) */ +/* ========================================================= BCNT1 ========================================================= */ + #define R_RTC_BCNT1_BCNT1_Pos (0UL) /*!< BCNT1 (Bit 0) */ + #define R_RTC_BCNT1_BCNT1_Msk (0xffUL) /*!< BCNT1 (Bitfield-Mask: 0xff) */ +/* ======================================================== RMINCNT ======================================================== */ + #define R_RTC_RMINCNT_MIN10_Pos (4UL) /*!< MIN10 (Bit 4) */ + #define R_RTC_RMINCNT_MIN10_Msk (0x70UL) /*!< MIN10 (Bitfield-Mask: 0x07) */ + #define R_RTC_RMINCNT_MIN1_Pos (0UL) /*!< MIN1 (Bit 0) */ + #define R_RTC_RMINCNT_MIN1_Msk (0xfUL) /*!< MIN1 (Bitfield-Mask: 0x0f) */ +/* ========================================================= BCNT2 ========================================================= */ + #define R_RTC_BCNT2_BCNT2_Pos (0UL) /*!< BCNT2 (Bit 0) */ + #define R_RTC_BCNT2_BCNT2_Msk (0xffUL) /*!< BCNT2 (Bitfield-Mask: 0xff) */ +/* ======================================================== RHRCNT ========================================================= */ + #define R_RTC_RHRCNT_PM_Pos (6UL) /*!< PM (Bit 6) */ + #define R_RTC_RHRCNT_PM_Msk (0x40UL) /*!< PM (Bitfield-Mask: 0x01) */ + #define R_RTC_RHRCNT_HR10_Pos (4UL) /*!< HR10 (Bit 4) */ + #define R_RTC_RHRCNT_HR10_Msk (0x30UL) /*!< HR10 (Bitfield-Mask: 0x03) */ + #define R_RTC_RHRCNT_HR1_Pos (0UL) /*!< HR1 (Bit 0) */ + #define R_RTC_RHRCNT_HR1_Msk (0xfUL) /*!< HR1 (Bitfield-Mask: 0x0f) */ +/* ========================================================= BCNT3 ========================================================= */ + #define R_RTC_BCNT3_BCNT3_Pos (0UL) /*!< BCNT3 (Bit 0) */ + #define R_RTC_BCNT3_BCNT3_Msk (0xffUL) /*!< BCNT3 (Bitfield-Mask: 0xff) */ +/* ======================================================== RWKCNT ========================================================= */ + #define R_RTC_RWKCNT_DAYW_Pos (0UL) /*!< DAYW (Bit 0) */ + #define R_RTC_RWKCNT_DAYW_Msk (0x7UL) /*!< DAYW (Bitfield-Mask: 0x07) */ +/* ======================================================== RDAYCNT ======================================================== */ + #define R_RTC_RDAYCNT_DATE10_Pos (4UL) /*!< DATE10 (Bit 4) */ + #define R_RTC_RDAYCNT_DATE10_Msk (0x30UL) /*!< DATE10 (Bitfield-Mask: 0x03) */ + #define R_RTC_RDAYCNT_DATE1_Pos (0UL) /*!< DATE1 (Bit 0) */ + #define R_RTC_RDAYCNT_DATE1_Msk (0xfUL) /*!< DATE1 (Bitfield-Mask: 0x0f) */ +/* ======================================================== RMONCNT ======================================================== */ + #define R_RTC_RMONCNT_MON10_Pos (4UL) /*!< MON10 (Bit 4) */ + #define R_RTC_RMONCNT_MON10_Msk (0x10UL) /*!< MON10 (Bitfield-Mask: 0x01) */ + #define R_RTC_RMONCNT_MON1_Pos (0UL) /*!< MON1 (Bit 0) */ + #define R_RTC_RMONCNT_MON1_Msk (0xfUL) /*!< MON1 (Bitfield-Mask: 0x0f) */ +/* ======================================================== RYRCNT ========================================================= */ + #define R_RTC_RYRCNT_YR10_Pos (4UL) /*!< YR10 (Bit 4) */ + #define R_RTC_RYRCNT_YR10_Msk (0xf0UL) /*!< YR10 (Bitfield-Mask: 0x0f) */ + #define R_RTC_RYRCNT_YR1_Pos (0UL) /*!< YR1 (Bit 0) */ + #define R_RTC_RYRCNT_YR1_Msk (0xfUL) /*!< YR1 (Bitfield-Mask: 0x0f) */ +/* ======================================================== BCNT0AR ======================================================== */ + #define R_RTC_BCNT0AR_BCNT0AR_Pos (0UL) /*!< BCNT0AR (Bit 0) */ + #define R_RTC_BCNT0AR_BCNT0AR_Msk (0xffUL) /*!< BCNT0AR (Bitfield-Mask: 0xff) */ +/* ======================================================== RSECAR ========================================================= */ + #define R_RTC_RSECAR_ENB_Pos (7UL) /*!< ENB (Bit 7) */ + #define R_RTC_RSECAR_ENB_Msk (0x80UL) /*!< ENB (Bitfield-Mask: 0x01) */ + #define R_RTC_RSECAR_SEC10_Pos (4UL) /*!< SEC10 (Bit 4) */ + #define R_RTC_RSECAR_SEC10_Msk (0x70UL) /*!< SEC10 (Bitfield-Mask: 0x07) */ + #define R_RTC_RSECAR_SEC1_Pos (0UL) /*!< SEC1 (Bit 0) */ + #define R_RTC_RSECAR_SEC1_Msk (0xfUL) /*!< SEC1 (Bitfield-Mask: 0x0f) */ +/* ======================================================== BCNT1AR ======================================================== */ + #define R_RTC_BCNT1AR_BCNT1AR_Pos (0UL) /*!< BCNT1AR (Bit 0) */ + #define R_RTC_BCNT1AR_BCNT1AR_Msk (0xffUL) /*!< BCNT1AR (Bitfield-Mask: 0xff) */ +/* ======================================================== RMINAR ========================================================= */ + #define R_RTC_RMINAR_ENB_Pos (7UL) /*!< ENB (Bit 7) */ + #define R_RTC_RMINAR_ENB_Msk (0x80UL) /*!< ENB (Bitfield-Mask: 0x01) */ + #define R_RTC_RMINAR_MIN10_Pos (4UL) /*!< MIN10 (Bit 4) */ + #define R_RTC_RMINAR_MIN10_Msk (0x70UL) /*!< MIN10 (Bitfield-Mask: 0x07) */ + #define R_RTC_RMINAR_MIN1_Pos (0UL) /*!< MIN1 (Bit 0) */ + #define R_RTC_RMINAR_MIN1_Msk (0xfUL) /*!< MIN1 (Bitfield-Mask: 0x0f) */ +/* ======================================================== BCNT2AR ======================================================== */ + #define R_RTC_BCNT2AR_BCNT2AR_Pos (0UL) /*!< BCNT2AR (Bit 0) */ + #define R_RTC_BCNT2AR_BCNT2AR_Msk (0xffUL) /*!< BCNT2AR (Bitfield-Mask: 0xff) */ +/* ========================================================= RHRAR ========================================================= */ + #define R_RTC_RHRAR_ENB_Pos (7UL) /*!< ENB (Bit 7) */ + #define R_RTC_RHRAR_ENB_Msk (0x80UL) /*!< ENB (Bitfield-Mask: 0x01) */ + #define R_RTC_RHRAR_PM_Pos (6UL) /*!< PM (Bit 6) */ + #define R_RTC_RHRAR_PM_Msk (0x40UL) /*!< PM (Bitfield-Mask: 0x01) */ + #define R_RTC_RHRAR_HR10_Pos (4UL) /*!< HR10 (Bit 4) */ + #define R_RTC_RHRAR_HR10_Msk (0x30UL) /*!< HR10 (Bitfield-Mask: 0x03) */ + #define R_RTC_RHRAR_HR1_Pos (0UL) /*!< HR1 (Bit 0) */ + #define R_RTC_RHRAR_HR1_Msk (0xfUL) /*!< HR1 (Bitfield-Mask: 0x0f) */ +/* ======================================================== BCNT3AR ======================================================== */ + #define R_RTC_BCNT3AR_BCNT3AR_Pos (0UL) /*!< BCNT3AR (Bit 0) */ + #define R_RTC_BCNT3AR_BCNT3AR_Msk (0xffUL) /*!< BCNT3AR (Bitfield-Mask: 0xff) */ +/* ========================================================= RWKAR ========================================================= */ + #define R_RTC_RWKAR_ENB_Pos (7UL) /*!< ENB (Bit 7) */ + #define R_RTC_RWKAR_ENB_Msk (0x80UL) /*!< ENB (Bitfield-Mask: 0x01) */ + #define R_RTC_RWKAR_DAYW_Pos (0UL) /*!< DAYW (Bit 0) */ + #define R_RTC_RWKAR_DAYW_Msk (0x7UL) /*!< DAYW (Bitfield-Mask: 0x07) */ +/* ======================================================= BCNT0AER ======================================================== */ + #define R_RTC_BCNT0AER_ENB_Pos (0UL) /*!< ENB (Bit 0) */ + #define R_RTC_BCNT0AER_ENB_Msk (0xffUL) /*!< ENB (Bitfield-Mask: 0xff) */ +/* ======================================================== RDAYAR ========================================================= */ + #define R_RTC_RDAYAR_ENB_Pos (7UL) /*!< ENB (Bit 7) */ + #define R_RTC_RDAYAR_ENB_Msk (0x80UL) /*!< ENB (Bitfield-Mask: 0x01) */ + #define R_RTC_RDAYAR_DATE10_Pos (4UL) /*!< DATE10 (Bit 4) */ + #define R_RTC_RDAYAR_DATE10_Msk (0x30UL) /*!< DATE10 (Bitfield-Mask: 0x03) */ + #define R_RTC_RDAYAR_DATE1_Pos (0UL) /*!< DATE1 (Bit 0) */ + #define R_RTC_RDAYAR_DATE1_Msk (0xfUL) /*!< DATE1 (Bitfield-Mask: 0x0f) */ +/* ======================================================= BCNT1AER ======================================================== */ + #define R_RTC_BCNT1AER_ENB_Pos (0UL) /*!< ENB (Bit 0) */ + #define R_RTC_BCNT1AER_ENB_Msk (0xffUL) /*!< ENB (Bitfield-Mask: 0xff) */ +/* ======================================================== RMONAR ========================================================= */ + #define R_RTC_RMONAR_ENB_Pos (7UL) /*!< ENB (Bit 7) */ + #define R_RTC_RMONAR_ENB_Msk (0x80UL) /*!< ENB (Bitfield-Mask: 0x01) */ + #define R_RTC_RMONAR_MON10_Pos (4UL) /*!< MON10 (Bit 4) */ + #define R_RTC_RMONAR_MON10_Msk (0x10UL) /*!< MON10 (Bitfield-Mask: 0x01) */ + #define R_RTC_RMONAR_MON1_Pos (0UL) /*!< MON1 (Bit 0) */ + #define R_RTC_RMONAR_MON1_Msk (0xfUL) /*!< MON1 (Bitfield-Mask: 0x0f) */ +/* ======================================================= BCNT2AER ======================================================== */ + #define R_RTC_BCNT2AER_ENB_Pos (0UL) /*!< ENB (Bit 0) */ + #define R_RTC_BCNT2AER_ENB_Msk (0xffUL) /*!< ENB (Bitfield-Mask: 0xff) */ +/* ========================================================= RYRAR ========================================================= */ + #define R_RTC_RYRAR_YR10_Pos (4UL) /*!< YR10 (Bit 4) */ + #define R_RTC_RYRAR_YR10_Msk (0xf0UL) /*!< YR10 (Bitfield-Mask: 0x0f) */ + #define R_RTC_RYRAR_YR1_Pos (0UL) /*!< YR1 (Bit 0) */ + #define R_RTC_RYRAR_YR1_Msk (0xfUL) /*!< YR1 (Bitfield-Mask: 0x0f) */ +/* ======================================================= BCNT3AER ======================================================== */ + #define R_RTC_BCNT3AER_ENB_Pos (0UL) /*!< ENB (Bit 0) */ + #define R_RTC_BCNT3AER_ENB_Msk (0xffUL) /*!< ENB (Bitfield-Mask: 0xff) */ +/* ======================================================== RYRAREN ======================================================== */ + #define R_RTC_RYRAREN_ENB_Pos (7UL) /*!< ENB (Bit 7) */ + #define R_RTC_RYRAREN_ENB_Msk (0x80UL) /*!< ENB (Bitfield-Mask: 0x01) */ +/* ========================================================= RCR1 ========================================================== */ + #define R_RTC_RCR1_PES_Pos (4UL) /*!< PES (Bit 4) */ + #define R_RTC_RCR1_PES_Msk (0xf0UL) /*!< PES (Bitfield-Mask: 0x0f) */ + #define R_RTC_RCR1_RTCOS_Pos (3UL) /*!< RTCOS (Bit 3) */ + #define R_RTC_RCR1_RTCOS_Msk (0x8UL) /*!< RTCOS (Bitfield-Mask: 0x01) */ + #define R_RTC_RCR1_PIE_Pos (2UL) /*!< PIE (Bit 2) */ + #define R_RTC_RCR1_PIE_Msk (0x4UL) /*!< PIE (Bitfield-Mask: 0x01) */ + #define R_RTC_RCR1_CIE_Pos (1UL) /*!< CIE (Bit 1) */ + #define R_RTC_RCR1_CIE_Msk (0x2UL) /*!< CIE (Bitfield-Mask: 0x01) */ + #define R_RTC_RCR1_AIE_Pos (0UL) /*!< AIE (Bit 0) */ + #define R_RTC_RCR1_AIE_Msk (0x1UL) /*!< AIE (Bitfield-Mask: 0x01) */ +/* ========================================================= RCR2 ========================================================== */ + #define R_RTC_RCR2_CNTMD_Pos (7UL) /*!< CNTMD (Bit 7) */ + #define R_RTC_RCR2_CNTMD_Msk (0x80UL) /*!< CNTMD (Bitfield-Mask: 0x01) */ + #define R_RTC_RCR2_HR24_Pos (6UL) /*!< HR24 (Bit 6) */ + #define R_RTC_RCR2_HR24_Msk (0x40UL) /*!< HR24 (Bitfield-Mask: 0x01) */ + #define R_RTC_RCR2_AADJP_Pos (5UL) /*!< AADJP (Bit 5) */ + #define R_RTC_RCR2_AADJP_Msk (0x20UL) /*!< AADJP (Bitfield-Mask: 0x01) */ + #define R_RTC_RCR2_AADJE_Pos (4UL) /*!< AADJE (Bit 4) */ + #define R_RTC_RCR2_AADJE_Msk (0x10UL) /*!< AADJE (Bitfield-Mask: 0x01) */ + #define R_RTC_RCR2_RTCOE_Pos (3UL) /*!< RTCOE (Bit 3) */ + #define R_RTC_RCR2_RTCOE_Msk (0x8UL) /*!< RTCOE (Bitfield-Mask: 0x01) */ + #define R_RTC_RCR2_ADJ30_Pos (2UL) /*!< ADJ30 (Bit 2) */ + #define R_RTC_RCR2_ADJ30_Msk (0x4UL) /*!< ADJ30 (Bitfield-Mask: 0x01) */ + #define R_RTC_RCR2_RESET_Pos (1UL) /*!< RESET (Bit 1) */ + #define R_RTC_RCR2_RESET_Msk (0x2UL) /*!< RESET (Bitfield-Mask: 0x01) */ + #define R_RTC_RCR2_START_Pos (0UL) /*!< START (Bit 0) */ + #define R_RTC_RCR2_START_Msk (0x1UL) /*!< START (Bitfield-Mask: 0x01) */ +/* ========================================================= RCR4 ========================================================== */ + #define R_RTC_RCR4_RCKSEL_Pos (0UL) /*!< RCKSEL (Bit 0) */ + #define R_RTC_RCR4_RCKSEL_Msk (0x1UL) /*!< RCKSEL (Bitfield-Mask: 0x01) */ + #define R_RTC_RCR4_ROPSEL_Pos (7UL) /*!< ROPSEL (Bit 7) */ + #define R_RTC_RCR4_ROPSEL_Msk (0x80UL) /*!< ROPSEL (Bitfield-Mask: 0x01) */ +/* ========================================================= RFRH ========================================================== */ + #define R_RTC_RFRH_RFC16_Pos (0UL) /*!< RFC16 (Bit 0) */ + #define R_RTC_RFRH_RFC16_Msk (0x1UL) /*!< RFC16 (Bitfield-Mask: 0x01) */ +/* ========================================================= RFRL ========================================================== */ + #define R_RTC_RFRL_RFC_Pos (0UL) /*!< RFC (Bit 0) */ + #define R_RTC_RFRL_RFC_Msk (0xffffUL) /*!< RFC (Bitfield-Mask: 0xffff) */ +/* ========================================================= RADJ ========================================================== */ + #define R_RTC_RADJ_PMADJ_Pos (6UL) /*!< PMADJ (Bit 6) */ + #define R_RTC_RADJ_PMADJ_Msk (0xc0UL) /*!< PMADJ (Bitfield-Mask: 0x03) */ + #define R_RTC_RADJ_ADJ_Pos (0UL) /*!< ADJ (Bit 0) */ + #define R_RTC_RADJ_ADJ_Msk (0x3fUL) /*!< ADJ (Bitfield-Mask: 0x3f) */ + +/* =========================================================================================================================== */ +/* ================ R_SCI0 ================ */ +/* =========================================================================================================================== */ + +/* ========================================================== SMR ========================================================== */ + #define R_SCI0_SMR_CM_Pos (7UL) /*!< CM (Bit 7) */ + #define R_SCI0_SMR_CM_Msk (0x80UL) /*!< CM (Bitfield-Mask: 0x01) */ + #define R_SCI0_SMR_CHR_Pos (6UL) /*!< CHR (Bit 6) */ + #define R_SCI0_SMR_CHR_Msk (0x40UL) /*!< CHR (Bitfield-Mask: 0x01) */ + #define R_SCI0_SMR_PE_Pos (5UL) /*!< PE (Bit 5) */ + #define R_SCI0_SMR_PE_Msk (0x20UL) /*!< PE (Bitfield-Mask: 0x01) */ + #define R_SCI0_SMR_PM_Pos (4UL) /*!< PM (Bit 4) */ + #define R_SCI0_SMR_PM_Msk (0x10UL) /*!< PM (Bitfield-Mask: 0x01) */ + #define R_SCI0_SMR_STOP_Pos (3UL) /*!< STOP (Bit 3) */ + #define R_SCI0_SMR_STOP_Msk (0x8UL) /*!< STOP (Bitfield-Mask: 0x01) */ + #define R_SCI0_SMR_MP_Pos (2UL) /*!< MP (Bit 2) */ + #define R_SCI0_SMR_MP_Msk (0x4UL) /*!< MP (Bitfield-Mask: 0x01) */ + #define R_SCI0_SMR_CKS_Pos (0UL) /*!< CKS (Bit 0) */ + #define R_SCI0_SMR_CKS_Msk (0x3UL) /*!< CKS (Bitfield-Mask: 0x03) */ +/* ======================================================= SMR_SMCI ======================================================== */ + #define R_SCI0_SMR_SMCI_GM_Pos (7UL) /*!< GM (Bit 7) */ + #define R_SCI0_SMR_SMCI_GM_Msk (0x80UL) /*!< GM (Bitfield-Mask: 0x01) */ + #define R_SCI0_SMR_SMCI_BLK_Pos (6UL) /*!< BLK (Bit 6) */ + #define R_SCI0_SMR_SMCI_BLK_Msk (0x40UL) /*!< BLK (Bitfield-Mask: 0x01) */ + #define R_SCI0_SMR_SMCI_PE_Pos (5UL) /*!< PE (Bit 5) */ + #define R_SCI0_SMR_SMCI_PE_Msk (0x20UL) /*!< PE (Bitfield-Mask: 0x01) */ + #define R_SCI0_SMR_SMCI_PM_Pos (4UL) /*!< PM (Bit 4) */ + #define R_SCI0_SMR_SMCI_PM_Msk (0x10UL) /*!< PM (Bitfield-Mask: 0x01) */ + #define R_SCI0_SMR_SMCI_BCP_Pos (2UL) /*!< BCP (Bit 2) */ + #define R_SCI0_SMR_SMCI_BCP_Msk (0xcUL) /*!< BCP (Bitfield-Mask: 0x03) */ + #define R_SCI0_SMR_SMCI_CKS_Pos (0UL) /*!< CKS (Bit 0) */ + #define R_SCI0_SMR_SMCI_CKS_Msk (0x3UL) /*!< CKS (Bitfield-Mask: 0x03) */ +/* ========================================================== BRR ========================================================== */ + #define R_SCI0_BRR_BRR_Pos (0UL) /*!< BRR (Bit 0) */ + #define R_SCI0_BRR_BRR_Msk (0xffUL) /*!< BRR (Bitfield-Mask: 0xff) */ +/* ========================================================== SCR ========================================================== */ + #define R_SCI0_SCR_TIE_Pos (7UL) /*!< TIE (Bit 7) */ + #define R_SCI0_SCR_TIE_Msk (0x80UL) /*!< TIE (Bitfield-Mask: 0x01) */ + #define R_SCI0_SCR_RIE_Pos (6UL) /*!< RIE (Bit 6) */ + #define R_SCI0_SCR_RIE_Msk (0x40UL) /*!< RIE (Bitfield-Mask: 0x01) */ + #define R_SCI0_SCR_TE_Pos (5UL) /*!< TE (Bit 5) */ + #define R_SCI0_SCR_TE_Msk (0x20UL) /*!< TE (Bitfield-Mask: 0x01) */ + #define R_SCI0_SCR_RE_Pos (4UL) /*!< RE (Bit 4) */ + #define R_SCI0_SCR_RE_Msk (0x10UL) /*!< RE (Bitfield-Mask: 0x01) */ + #define R_SCI0_SCR_MPIE_Pos (3UL) /*!< MPIE (Bit 3) */ + #define R_SCI0_SCR_MPIE_Msk (0x8UL) /*!< MPIE (Bitfield-Mask: 0x01) */ + #define R_SCI0_SCR_TEIE_Pos (2UL) /*!< TEIE (Bit 2) */ + #define R_SCI0_SCR_TEIE_Msk (0x4UL) /*!< TEIE (Bitfield-Mask: 0x01) */ + #define R_SCI0_SCR_CKE_Pos (0UL) /*!< CKE (Bit 0) */ + #define R_SCI0_SCR_CKE_Msk (0x3UL) /*!< CKE (Bitfield-Mask: 0x03) */ +/* ======================================================= SCR_SMCI ======================================================== */ + #define R_SCI0_SCR_SMCI_TIE_Pos (7UL) /*!< TIE (Bit 7) */ + #define R_SCI0_SCR_SMCI_TIE_Msk (0x80UL) /*!< TIE (Bitfield-Mask: 0x01) */ + #define R_SCI0_SCR_SMCI_RIE_Pos (6UL) /*!< RIE (Bit 6) */ + #define R_SCI0_SCR_SMCI_RIE_Msk (0x40UL) /*!< RIE (Bitfield-Mask: 0x01) */ + #define R_SCI0_SCR_SMCI_TE_Pos (5UL) /*!< TE (Bit 5) */ + #define R_SCI0_SCR_SMCI_TE_Msk (0x20UL) /*!< TE (Bitfield-Mask: 0x01) */ + #define R_SCI0_SCR_SMCI_RE_Pos (4UL) /*!< RE (Bit 4) */ + #define R_SCI0_SCR_SMCI_RE_Msk (0x10UL) /*!< RE (Bitfield-Mask: 0x01) */ + #define R_SCI0_SCR_SMCI_MPIE_Pos (3UL) /*!< MPIE (Bit 3) */ + #define R_SCI0_SCR_SMCI_MPIE_Msk (0x8UL) /*!< MPIE (Bitfield-Mask: 0x01) */ + #define R_SCI0_SCR_SMCI_TEIE_Pos (2UL) /*!< TEIE (Bit 2) */ + #define R_SCI0_SCR_SMCI_TEIE_Msk (0x4UL) /*!< TEIE (Bitfield-Mask: 0x01) */ + #define R_SCI0_SCR_SMCI_CKE_Pos (0UL) /*!< CKE (Bit 0) */ + #define R_SCI0_SCR_SMCI_CKE_Msk (0x3UL) /*!< CKE (Bitfield-Mask: 0x03) */ +/* ========================================================== TDR ========================================================== */ + #define R_SCI0_TDR_TDR_Pos (0UL) /*!< TDR (Bit 0) */ + #define R_SCI0_TDR_TDR_Msk (0xffUL) /*!< TDR (Bitfield-Mask: 0xff) */ +/* ========================================================== SSR ========================================================== */ + #define R_SCI0_SSR_TDRE_Pos (7UL) /*!< TDRE (Bit 7) */ + #define R_SCI0_SSR_TDRE_Msk (0x80UL) /*!< TDRE (Bitfield-Mask: 0x01) */ + #define R_SCI0_SSR_RDRF_Pos (6UL) /*!< RDRF (Bit 6) */ + #define R_SCI0_SSR_RDRF_Msk (0x40UL) /*!< RDRF (Bitfield-Mask: 0x01) */ + #define R_SCI0_SSR_ORER_Pos (5UL) /*!< ORER (Bit 5) */ + #define R_SCI0_SSR_ORER_Msk (0x20UL) /*!< ORER (Bitfield-Mask: 0x01) */ + #define R_SCI0_SSR_FER_Pos (4UL) /*!< FER (Bit 4) */ + #define R_SCI0_SSR_FER_Msk (0x10UL) /*!< FER (Bitfield-Mask: 0x01) */ + #define R_SCI0_SSR_PER_Pos (3UL) /*!< PER (Bit 3) */ + #define R_SCI0_SSR_PER_Msk (0x8UL) /*!< PER (Bitfield-Mask: 0x01) */ + #define R_SCI0_SSR_TEND_Pos (2UL) /*!< TEND (Bit 2) */ + #define R_SCI0_SSR_TEND_Msk (0x4UL) /*!< TEND (Bitfield-Mask: 0x01) */ + #define R_SCI0_SSR_MPB_Pos (1UL) /*!< MPB (Bit 1) */ + #define R_SCI0_SSR_MPB_Msk (0x2UL) /*!< MPB (Bitfield-Mask: 0x01) */ + #define R_SCI0_SSR_MPBT_Pos (0UL) /*!< MPBT (Bit 0) */ + #define R_SCI0_SSR_MPBT_Msk (0x1UL) /*!< MPBT (Bitfield-Mask: 0x01) */ +/* ======================================================= SSR_FIFO ======================================================== */ + #define R_SCI0_SSR_FIFO_TDFE_Pos (7UL) /*!< TDFE (Bit 7) */ + #define R_SCI0_SSR_FIFO_TDFE_Msk (0x80UL) /*!< TDFE (Bitfield-Mask: 0x01) */ + #define R_SCI0_SSR_FIFO_RDF_Pos (6UL) /*!< RDF (Bit 6) */ + #define R_SCI0_SSR_FIFO_RDF_Msk (0x40UL) /*!< RDF (Bitfield-Mask: 0x01) */ + #define R_SCI0_SSR_FIFO_ORER_Pos (5UL) /*!< ORER (Bit 5) */ + #define R_SCI0_SSR_FIFO_ORER_Msk (0x20UL) /*!< ORER (Bitfield-Mask: 0x01) */ + #define R_SCI0_SSR_FIFO_FER_Pos (4UL) /*!< FER (Bit 4) */ + #define R_SCI0_SSR_FIFO_FER_Msk (0x10UL) /*!< FER (Bitfield-Mask: 0x01) */ + #define R_SCI0_SSR_FIFO_PER_Pos (3UL) /*!< PER (Bit 3) */ + #define R_SCI0_SSR_FIFO_PER_Msk (0x8UL) /*!< PER (Bitfield-Mask: 0x01) */ + #define R_SCI0_SSR_FIFO_TEND_Pos (2UL) /*!< TEND (Bit 2) */ + #define R_SCI0_SSR_FIFO_TEND_Msk (0x4UL) /*!< TEND (Bitfield-Mask: 0x01) */ + #define R_SCI0_SSR_FIFO_DR_Pos (0UL) /*!< DR (Bit 0) */ + #define R_SCI0_SSR_FIFO_DR_Msk (0x1UL) /*!< DR (Bitfield-Mask: 0x01) */ +/* ======================================================= SSR_SMCI ======================================================== */ + #define R_SCI0_SSR_SMCI_TDRE_Pos (7UL) /*!< TDRE (Bit 7) */ + #define R_SCI0_SSR_SMCI_TDRE_Msk (0x80UL) /*!< TDRE (Bitfield-Mask: 0x01) */ + #define R_SCI0_SSR_SMCI_RDRF_Pos (6UL) /*!< RDRF (Bit 6) */ + #define R_SCI0_SSR_SMCI_RDRF_Msk (0x40UL) /*!< RDRF (Bitfield-Mask: 0x01) */ + #define R_SCI0_SSR_SMCI_ORER_Pos (5UL) /*!< ORER (Bit 5) */ + #define R_SCI0_SSR_SMCI_ORER_Msk (0x20UL) /*!< ORER (Bitfield-Mask: 0x01) */ + #define R_SCI0_SSR_SMCI_ERS_Pos (4UL) /*!< ERS (Bit 4) */ + #define R_SCI0_SSR_SMCI_ERS_Msk (0x10UL) /*!< ERS (Bitfield-Mask: 0x01) */ + #define R_SCI0_SSR_SMCI_PER_Pos (3UL) /*!< PER (Bit 3) */ + #define R_SCI0_SSR_SMCI_PER_Msk (0x8UL) /*!< PER (Bitfield-Mask: 0x01) */ + #define R_SCI0_SSR_SMCI_TEND_Pos (2UL) /*!< TEND (Bit 2) */ + #define R_SCI0_SSR_SMCI_TEND_Msk (0x4UL) /*!< TEND (Bitfield-Mask: 0x01) */ + #define R_SCI0_SSR_SMCI_MPB_Pos (1UL) /*!< MPB (Bit 1) */ + #define R_SCI0_SSR_SMCI_MPB_Msk (0x2UL) /*!< MPB (Bitfield-Mask: 0x01) */ + #define R_SCI0_SSR_SMCI_MPBT_Pos (0UL) /*!< MPBT (Bit 0) */ + #define R_SCI0_SSR_SMCI_MPBT_Msk (0x1UL) /*!< MPBT (Bitfield-Mask: 0x01) */ +/* ========================================================== RDR ========================================================== */ + #define R_SCI0_RDR_RDR_Pos (0UL) /*!< RDR (Bit 0) */ + #define R_SCI0_RDR_RDR_Msk (0xffUL) /*!< RDR (Bitfield-Mask: 0xff) */ +/* ========================================================= SCMR ========================================================== */ + #define R_SCI0_SCMR_BCP2_Pos (7UL) /*!< BCP2 (Bit 7) */ + #define R_SCI0_SCMR_BCP2_Msk (0x80UL) /*!< BCP2 (Bitfield-Mask: 0x01) */ + #define R_SCI0_SCMR_CHR1_Pos (4UL) /*!< CHR1 (Bit 4) */ + #define R_SCI0_SCMR_CHR1_Msk (0x10UL) /*!< CHR1 (Bitfield-Mask: 0x01) */ + #define R_SCI0_SCMR_SDIR_Pos (3UL) /*!< SDIR (Bit 3) */ + #define R_SCI0_SCMR_SDIR_Msk (0x8UL) /*!< SDIR (Bitfield-Mask: 0x01) */ + #define R_SCI0_SCMR_SINV_Pos (2UL) /*!< SINV (Bit 2) */ + #define R_SCI0_SCMR_SINV_Msk (0x4UL) /*!< SINV (Bitfield-Mask: 0x01) */ + #define R_SCI0_SCMR_SMIF_Pos (0UL) /*!< SMIF (Bit 0) */ + #define R_SCI0_SCMR_SMIF_Msk (0x1UL) /*!< SMIF (Bitfield-Mask: 0x01) */ +/* ========================================================= SEMR ========================================================== */ + #define R_SCI0_SEMR_RXDESEL_Pos (7UL) /*!< RXDESEL (Bit 7) */ + #define R_SCI0_SEMR_RXDESEL_Msk (0x80UL) /*!< RXDESEL (Bitfield-Mask: 0x01) */ + #define R_SCI0_SEMR_BGDM_Pos (6UL) /*!< BGDM (Bit 6) */ + #define R_SCI0_SEMR_BGDM_Msk (0x40UL) /*!< BGDM (Bitfield-Mask: 0x01) */ + #define R_SCI0_SEMR_NFEN_Pos (5UL) /*!< NFEN (Bit 5) */ + #define R_SCI0_SEMR_NFEN_Msk (0x20UL) /*!< NFEN (Bitfield-Mask: 0x01) */ + #define R_SCI0_SEMR_ABCS_Pos (4UL) /*!< ABCS (Bit 4) */ + #define R_SCI0_SEMR_ABCS_Msk (0x10UL) /*!< ABCS (Bitfield-Mask: 0x01) */ + #define R_SCI0_SEMR_ABCSE_Pos (3UL) /*!< ABCSE (Bit 3) */ + #define R_SCI0_SEMR_ABCSE_Msk (0x8UL) /*!< ABCSE (Bitfield-Mask: 0x01) */ + #define R_SCI0_SEMR_BRME_Pos (2UL) /*!< BRME (Bit 2) */ + #define R_SCI0_SEMR_BRME_Msk (0x4UL) /*!< BRME (Bitfield-Mask: 0x01) */ + #define R_SCI0_SEMR_PADIS_Pos (1UL) /*!< PADIS (Bit 1) */ + #define R_SCI0_SEMR_PADIS_Msk (0x2UL) /*!< PADIS (Bitfield-Mask: 0x01) */ + #define R_SCI0_SEMR_ACS0_Pos (0UL) /*!< ACS0 (Bit 0) */ + #define R_SCI0_SEMR_ACS0_Msk (0x1UL) /*!< ACS0 (Bitfield-Mask: 0x01) */ +/* ========================================================= SNFR ========================================================== */ + #define R_SCI0_SNFR_NFCS_Pos (0UL) /*!< NFCS (Bit 0) */ + #define R_SCI0_SNFR_NFCS_Msk (0x7UL) /*!< NFCS (Bitfield-Mask: 0x07) */ +/* ========================================================= SIMR1 ========================================================= */ + #define R_SCI0_SIMR1_IICDL_Pos (3UL) /*!< IICDL (Bit 3) */ + #define R_SCI0_SIMR1_IICDL_Msk (0xf8UL) /*!< IICDL (Bitfield-Mask: 0x1f) */ + #define R_SCI0_SIMR1_IICM_Pos (0UL) /*!< IICM (Bit 0) */ + #define R_SCI0_SIMR1_IICM_Msk (0x1UL) /*!< IICM (Bitfield-Mask: 0x01) */ +/* ========================================================= SIMR2 ========================================================= */ + #define R_SCI0_SIMR2_IICACKT_Pos (5UL) /*!< IICACKT (Bit 5) */ + #define R_SCI0_SIMR2_IICACKT_Msk (0x20UL) /*!< IICACKT (Bitfield-Mask: 0x01) */ + #define R_SCI0_SIMR2_IICCSC_Pos (1UL) /*!< IICCSC (Bit 1) */ + #define R_SCI0_SIMR2_IICCSC_Msk (0x2UL) /*!< IICCSC (Bitfield-Mask: 0x01) */ + #define R_SCI0_SIMR2_IICINTM_Pos (0UL) /*!< IICINTM (Bit 0) */ + #define R_SCI0_SIMR2_IICINTM_Msk (0x1UL) /*!< IICINTM (Bitfield-Mask: 0x01) */ +/* ========================================================= SIMR3 ========================================================= */ + #define R_SCI0_SIMR3_IICSCLS_Pos (6UL) /*!< IICSCLS (Bit 6) */ + #define R_SCI0_SIMR3_IICSCLS_Msk (0xc0UL) /*!< IICSCLS (Bitfield-Mask: 0x03) */ + #define R_SCI0_SIMR3_IICSDAS_Pos (4UL) /*!< IICSDAS (Bit 4) */ + #define R_SCI0_SIMR3_IICSDAS_Msk (0x30UL) /*!< IICSDAS (Bitfield-Mask: 0x03) */ + #define R_SCI0_SIMR3_IICSTIF_Pos (3UL) /*!< IICSTIF (Bit 3) */ + #define R_SCI0_SIMR3_IICSTIF_Msk (0x8UL) /*!< IICSTIF (Bitfield-Mask: 0x01) */ + #define R_SCI0_SIMR3_IICSTPREQ_Pos (2UL) /*!< IICSTPREQ (Bit 2) */ + #define R_SCI0_SIMR3_IICSTPREQ_Msk (0x4UL) /*!< IICSTPREQ (Bitfield-Mask: 0x01) */ + #define R_SCI0_SIMR3_IICRSTAREQ_Pos (1UL) /*!< IICRSTAREQ (Bit 1) */ + #define R_SCI0_SIMR3_IICRSTAREQ_Msk (0x2UL) /*!< IICRSTAREQ (Bitfield-Mask: 0x01) */ + #define R_SCI0_SIMR3_IICSTAREQ_Pos (0UL) /*!< IICSTAREQ (Bit 0) */ + #define R_SCI0_SIMR3_IICSTAREQ_Msk (0x1UL) /*!< IICSTAREQ (Bitfield-Mask: 0x01) */ +/* ========================================================= SISR ========================================================== */ + #define R_SCI0_SISR_IICACKR_Pos (0UL) /*!< IICACKR (Bit 0) */ + #define R_SCI0_SISR_IICACKR_Msk (0x1UL) /*!< IICACKR (Bitfield-Mask: 0x01) */ +/* ========================================================= SPMR ========================================================== */ + #define R_SCI0_SPMR_CKPH_Pos (7UL) /*!< CKPH (Bit 7) */ + #define R_SCI0_SPMR_CKPH_Msk (0x80UL) /*!< CKPH (Bitfield-Mask: 0x01) */ + #define R_SCI0_SPMR_CKPOL_Pos (6UL) /*!< CKPOL (Bit 6) */ + #define R_SCI0_SPMR_CKPOL_Msk (0x40UL) /*!< CKPOL (Bitfield-Mask: 0x01) */ + #define R_SCI0_SPMR_MFF_Pos (4UL) /*!< MFF (Bit 4) */ + #define R_SCI0_SPMR_MFF_Msk (0x10UL) /*!< MFF (Bitfield-Mask: 0x01) */ + #define R_SCI0_SPMR_CSTPEN_Pos (3UL) /*!< CSTPEN (Bit 3) */ + #define R_SCI0_SPMR_CSTPEN_Msk (0x8UL) /*!< CSTPEN (Bitfield-Mask: 0x01) */ + #define R_SCI0_SPMR_MSS_Pos (2UL) /*!< MSS (Bit 2) */ + #define R_SCI0_SPMR_MSS_Msk (0x4UL) /*!< MSS (Bitfield-Mask: 0x01) */ + #define R_SCI0_SPMR_CTSE_Pos (1UL) /*!< CTSE (Bit 1) */ + #define R_SCI0_SPMR_CTSE_Msk (0x2UL) /*!< CTSE (Bitfield-Mask: 0x01) */ + #define R_SCI0_SPMR_SSE_Pos (0UL) /*!< SSE (Bit 0) */ + #define R_SCI0_SPMR_SSE_Msk (0x1UL) /*!< SSE (Bitfield-Mask: 0x01) */ +/* ========================================================= TDRHL ========================================================= */ + #define R_SCI0_TDRHL_TDRHL_Pos (0UL) /*!< TDRHL (Bit 0) */ + #define R_SCI0_TDRHL_TDRHL_Msk (0xffffUL) /*!< TDRHL (Bitfield-Mask: 0xffff) */ +/* ======================================================== FTDRHL ========================================================= */ + #define R_SCI0_FTDRHL_MPBT_Pos (9UL) /*!< MPBT (Bit 9) */ + #define R_SCI0_FTDRHL_MPBT_Msk (0x200UL) /*!< MPBT (Bitfield-Mask: 0x01) */ + #define R_SCI0_FTDRHL_TDAT_Pos (0UL) /*!< TDAT (Bit 0) */ + #define R_SCI0_FTDRHL_TDAT_Msk (0x1ffUL) /*!< TDAT (Bitfield-Mask: 0x1ff) */ +/* ========================================================= FTDRH ========================================================= */ + #define R_SCI0_FTDRH_MPBT_Pos (1UL) /*!< MPBT (Bit 1) */ + #define R_SCI0_FTDRH_MPBT_Msk (0x2UL) /*!< MPBT (Bitfield-Mask: 0x01) */ + #define R_SCI0_FTDRH_TDATH_Pos (0UL) /*!< TDATH (Bit 0) */ + #define R_SCI0_FTDRH_TDATH_Msk (0x1UL) /*!< TDATH (Bitfield-Mask: 0x01) */ +/* ========================================================= FTDRL ========================================================= */ + #define R_SCI0_FTDRL_TDATL_Pos (0UL) /*!< TDATL (Bit 0) */ + #define R_SCI0_FTDRL_TDATL_Msk (0xffUL) /*!< TDATL (Bitfield-Mask: 0xff) */ +/* ========================================================= RDRHL ========================================================= */ + #define R_SCI0_RDRHL_RDRHL_Pos (0UL) /*!< RDRHL (Bit 0) */ + #define R_SCI0_RDRHL_RDRHL_Msk (0xffffUL) /*!< RDRHL (Bitfield-Mask: 0xffff) */ +/* ======================================================== FRDRHL ========================================================= */ + #define R_SCI0_FRDRHL_RDF_Pos (14UL) /*!< RDF (Bit 14) */ + #define R_SCI0_FRDRHL_RDF_Msk (0x4000UL) /*!< RDF (Bitfield-Mask: 0x01) */ + #define R_SCI0_FRDRHL_ORER_Pos (13UL) /*!< ORER (Bit 13) */ + #define R_SCI0_FRDRHL_ORER_Msk (0x2000UL) /*!< ORER (Bitfield-Mask: 0x01) */ + #define R_SCI0_FRDRHL_FER_Pos (12UL) /*!< FER (Bit 12) */ + #define R_SCI0_FRDRHL_FER_Msk (0x1000UL) /*!< FER (Bitfield-Mask: 0x01) */ + #define R_SCI0_FRDRHL_PER_Pos (11UL) /*!< PER (Bit 11) */ + #define R_SCI0_FRDRHL_PER_Msk (0x800UL) /*!< PER (Bitfield-Mask: 0x01) */ + #define R_SCI0_FRDRHL_DR_Pos (10UL) /*!< DR (Bit 10) */ + #define R_SCI0_FRDRHL_DR_Msk (0x400UL) /*!< DR (Bitfield-Mask: 0x01) */ + #define R_SCI0_FRDRHL_MPB_Pos (9UL) /*!< MPB (Bit 9) */ + #define R_SCI0_FRDRHL_MPB_Msk (0x200UL) /*!< MPB (Bitfield-Mask: 0x01) */ + #define R_SCI0_FRDRHL_RDAT_Pos (0UL) /*!< RDAT (Bit 0) */ + #define R_SCI0_FRDRHL_RDAT_Msk (0x1ffUL) /*!< RDAT (Bitfield-Mask: 0x1ff) */ +/* ========================================================= FRDRH ========================================================= */ + #define R_SCI0_FRDRH_RDF_Pos (6UL) /*!< RDF (Bit 6) */ + #define R_SCI0_FRDRH_RDF_Msk (0x40UL) /*!< RDF (Bitfield-Mask: 0x01) */ + #define R_SCI0_FRDRH_ORER_Pos (5UL) /*!< ORER (Bit 5) */ + #define R_SCI0_FRDRH_ORER_Msk (0x20UL) /*!< ORER (Bitfield-Mask: 0x01) */ + #define R_SCI0_FRDRH_FER_Pos (4UL) /*!< FER (Bit 4) */ + #define R_SCI0_FRDRH_FER_Msk (0x10UL) /*!< FER (Bitfield-Mask: 0x01) */ + #define R_SCI0_FRDRH_PER_Pos (3UL) /*!< PER (Bit 3) */ + #define R_SCI0_FRDRH_PER_Msk (0x8UL) /*!< PER (Bitfield-Mask: 0x01) */ + #define R_SCI0_FRDRH_DR_Pos (2UL) /*!< DR (Bit 2) */ + #define R_SCI0_FRDRH_DR_Msk (0x4UL) /*!< DR (Bitfield-Mask: 0x01) */ + #define R_SCI0_FRDRH_MPB_Pos (1UL) /*!< MPB (Bit 1) */ + #define R_SCI0_FRDRH_MPB_Msk (0x2UL) /*!< MPB (Bitfield-Mask: 0x01) */ + #define R_SCI0_FRDRH_RDATH_Pos (0UL) /*!< RDATH (Bit 0) */ + #define R_SCI0_FRDRH_RDATH_Msk (0x1UL) /*!< RDATH (Bitfield-Mask: 0x01) */ +/* ========================================================= FRDRL ========================================================= */ + #define R_SCI0_FRDRL_RDATL_Pos (0UL) /*!< RDATL (Bit 0) */ + #define R_SCI0_FRDRL_RDATL_Msk (0xffUL) /*!< RDATL (Bitfield-Mask: 0xff) */ +/* ========================================================= MDDR ========================================================== */ + #define R_SCI0_MDDR_MDDR_Pos (0UL) /*!< MDDR (Bit 0) */ + #define R_SCI0_MDDR_MDDR_Msk (0xffUL) /*!< MDDR (Bitfield-Mask: 0xff) */ +/* ========================================================= DCCR ========================================================== */ + #define R_SCI0_DCCR_DCME_Pos (7UL) /*!< DCME (Bit 7) */ + #define R_SCI0_DCCR_DCME_Msk (0x80UL) /*!< DCME (Bitfield-Mask: 0x01) */ + #define R_SCI0_DCCR_IDSEL_Pos (6UL) /*!< IDSEL (Bit 6) */ + #define R_SCI0_DCCR_IDSEL_Msk (0x40UL) /*!< IDSEL (Bitfield-Mask: 0x01) */ + #define R_SCI0_DCCR_DFER_Pos (4UL) /*!< DFER (Bit 4) */ + #define R_SCI0_DCCR_DFER_Msk (0x10UL) /*!< DFER (Bitfield-Mask: 0x01) */ + #define R_SCI0_DCCR_DPER_Pos (3UL) /*!< DPER (Bit 3) */ + #define R_SCI0_DCCR_DPER_Msk (0x8UL) /*!< DPER (Bitfield-Mask: 0x01) */ + #define R_SCI0_DCCR_DCMF_Pos (0UL) /*!< DCMF (Bit 0) */ + #define R_SCI0_DCCR_DCMF_Msk (0x1UL) /*!< DCMF (Bitfield-Mask: 0x01) */ +/* ========================================================== FCR ========================================================== */ + #define R_SCI0_FCR_RSTRG_Pos (12UL) /*!< RSTRG (Bit 12) */ + #define R_SCI0_FCR_RSTRG_Msk (0xf000UL) /*!< RSTRG (Bitfield-Mask: 0x0f) */ + #define R_SCI0_FCR_RTRG_Pos (8UL) /*!< RTRG (Bit 8) */ + #define R_SCI0_FCR_RTRG_Msk (0xf00UL) /*!< RTRG (Bitfield-Mask: 0x0f) */ + #define R_SCI0_FCR_TTRG_Pos (4UL) /*!< TTRG (Bit 4) */ + #define R_SCI0_FCR_TTRG_Msk (0xf0UL) /*!< TTRG (Bitfield-Mask: 0x0f) */ + #define R_SCI0_FCR_DRES_Pos (3UL) /*!< DRES (Bit 3) */ + #define R_SCI0_FCR_DRES_Msk (0x8UL) /*!< DRES (Bitfield-Mask: 0x01) */ + #define R_SCI0_FCR_TFRST_Pos (2UL) /*!< TFRST (Bit 2) */ + #define R_SCI0_FCR_TFRST_Msk (0x4UL) /*!< TFRST (Bitfield-Mask: 0x01) */ + #define R_SCI0_FCR_RFRST_Pos (1UL) /*!< RFRST (Bit 1) */ + #define R_SCI0_FCR_RFRST_Msk (0x2UL) /*!< RFRST (Bitfield-Mask: 0x01) */ + #define R_SCI0_FCR_FM_Pos (0UL) /*!< FM (Bit 0) */ + #define R_SCI0_FCR_FM_Msk (0x1UL) /*!< FM (Bitfield-Mask: 0x01) */ +/* ========================================================== FDR ========================================================== */ + #define R_SCI0_FDR_T_Pos (8UL) /*!< T (Bit 8) */ + #define R_SCI0_FDR_T_Msk (0x1f00UL) /*!< T (Bitfield-Mask: 0x1f) */ + #define R_SCI0_FDR_R_Pos (0UL) /*!< R (Bit 0) */ + #define R_SCI0_FDR_R_Msk (0x1fUL) /*!< R (Bitfield-Mask: 0x1f) */ +/* ========================================================== LSR ========================================================== */ + #define R_SCI0_LSR_PNUM_Pos (8UL) /*!< PNUM (Bit 8) */ + #define R_SCI0_LSR_PNUM_Msk (0x1f00UL) /*!< PNUM (Bitfield-Mask: 0x1f) */ + #define R_SCI0_LSR_FNUM_Pos (2UL) /*!< FNUM (Bit 2) */ + #define R_SCI0_LSR_FNUM_Msk (0x7cUL) /*!< FNUM (Bitfield-Mask: 0x1f) */ + #define R_SCI0_LSR_ORER_Pos (0UL) /*!< ORER (Bit 0) */ + #define R_SCI0_LSR_ORER_Msk (0x1UL) /*!< ORER (Bitfield-Mask: 0x01) */ +/* ========================================================== CDR ========================================================== */ + #define R_SCI0_CDR_CMPD_Pos (0UL) /*!< CMPD (Bit 0) */ + #define R_SCI0_CDR_CMPD_Msk (0x1ffUL) /*!< CMPD (Bitfield-Mask: 0x1ff) */ +/* ========================================================= SPTR ========================================================== */ + #define R_SCI0_SPTR_SPB2IO_Pos (2UL) /*!< SPB2IO (Bit 2) */ + #define R_SCI0_SPTR_SPB2IO_Msk (0x4UL) /*!< SPB2IO (Bitfield-Mask: 0x01) */ + #define R_SCI0_SPTR_SPB2DT_Pos (1UL) /*!< SPB2DT (Bit 1) */ + #define R_SCI0_SPTR_SPB2DT_Msk (0x2UL) /*!< SPB2DT (Bitfield-Mask: 0x01) */ + #define R_SCI0_SPTR_RXDMON_Pos (0UL) /*!< RXDMON (Bit 0) */ + #define R_SCI0_SPTR_RXDMON_Msk (0x1UL) /*!< RXDMON (Bitfield-Mask: 0x01) */ + #define R_SCI0_SPTR_RINV_Pos (4UL) /*!< RINV (Bit 4) */ + #define R_SCI0_SPTR_RINV_Msk (0x10UL) /*!< RINV (Bitfield-Mask: 0x01) */ + #define R_SCI0_SPTR_TINV_Pos (5UL) /*!< TINV (Bit 5) */ + #define R_SCI0_SPTR_TINV_Msk (0x20UL) /*!< TINV (Bitfield-Mask: 0x01) */ + #define R_SCI0_SPTR_ASEN_Pos (6UL) /*!< ASEN (Bit 6) */ + #define R_SCI0_SPTR_ASEN_Msk (0x40UL) /*!< ASEN (Bitfield-Mask: 0x01) */ + #define R_SCI0_SPTR_ATEN_Pos (7UL) /*!< ATEN (Bit 7) */ + #define R_SCI0_SPTR_ATEN_Msk (0x80UL) /*!< ATEN (Bitfield-Mask: 0x01) */ +/* ========================================================= ACTR ========================================================== */ + #define R_SCI0_ACTR_AST_Pos (0UL) /*!< AST (Bit 0) */ + #define R_SCI0_ACTR_AST_Msk (0x7UL) /*!< AST (Bitfield-Mask: 0x07) */ + #define R_SCI0_ACTR_AJD_Pos (3UL) /*!< AJD (Bit 3) */ + #define R_SCI0_ACTR_AJD_Msk (0x8UL) /*!< AJD (Bitfield-Mask: 0x01) */ + #define R_SCI0_ACTR_ATT_Pos (4UL) /*!< ATT (Bit 4) */ + #define R_SCI0_ACTR_ATT_Msk (0x70UL) /*!< ATT (Bitfield-Mask: 0x07) */ + #define R_SCI0_ACTR_AET_Pos (7UL) /*!< AET (Bit 7) */ + #define R_SCI0_ACTR_AET_Msk (0x80UL) /*!< AET (Bitfield-Mask: 0x01) */ +/* ========================================================= ESMER ========================================================= */ + #define R_SCI0_ESMER_ESME_Pos (0UL) /*!< ESME (Bit 0) */ + #define R_SCI0_ESMER_ESME_Msk (0x1UL) /*!< ESME (Bitfield-Mask: 0x01) */ +/* ========================================================== CR0 ========================================================== */ + #define R_SCI0_CR0_SFSF_Pos (1UL) /*!< SFSF (Bit 1) */ + #define R_SCI0_CR0_SFSF_Msk (0x2UL) /*!< SFSF (Bitfield-Mask: 0x01) */ + #define R_SCI0_CR0_RXDSF_Pos (2UL) /*!< RXDSF (Bit 2) */ + #define R_SCI0_CR0_RXDSF_Msk (0x4UL) /*!< RXDSF (Bitfield-Mask: 0x01) */ + #define R_SCI0_CR0_BRME_Pos (3UL) /*!< BRME (Bit 3) */ + #define R_SCI0_CR0_BRME_Msk (0x8UL) /*!< BRME (Bitfield-Mask: 0x01) */ +/* ========================================================== CR1 ========================================================== */ + #define R_SCI0_CR1_BFE_Pos (0UL) /*!< BFE (Bit 0) */ + #define R_SCI0_CR1_BFE_Msk (0x1UL) /*!< BFE (Bitfield-Mask: 0x01) */ + #define R_SCI0_CR1_CF0RE_Pos (1UL) /*!< CF0RE (Bit 1) */ + #define R_SCI0_CR1_CF0RE_Msk (0x2UL) /*!< CF0RE (Bitfield-Mask: 0x01) */ + #define R_SCI0_CR1_CF1DS_Pos (2UL) /*!< CF1DS (Bit 2) */ + #define R_SCI0_CR1_CF1DS_Msk (0xcUL) /*!< CF1DS (Bitfield-Mask: 0x03) */ + #define R_SCI0_CR1_PIBE_Pos (4UL) /*!< PIBE (Bit 4) */ + #define R_SCI0_CR1_PIBE_Msk (0x10UL) /*!< PIBE (Bitfield-Mask: 0x01) */ + #define R_SCI0_CR1_PIBS_Pos (5UL) /*!< PIBS (Bit 5) */ + #define R_SCI0_CR1_PIBS_Msk (0xe0UL) /*!< PIBS (Bitfield-Mask: 0x07) */ +/* ========================================================== CR2 ========================================================== */ + #define R_SCI0_CR2_DFCS_Pos (0UL) /*!< DFCS (Bit 0) */ + #define R_SCI0_CR2_DFCS_Msk (0x7UL) /*!< DFCS (Bitfield-Mask: 0x07) */ + #define R_SCI0_CR2_BCCS_Pos (4UL) /*!< BCCS (Bit 4) */ + #define R_SCI0_CR2_BCCS_Msk (0x30UL) /*!< BCCS (Bitfield-Mask: 0x03) */ + #define R_SCI0_CR2_RTS_Pos (6UL) /*!< RTS (Bit 6) */ + #define R_SCI0_CR2_RTS_Msk (0xc0UL) /*!< RTS (Bitfield-Mask: 0x03) */ +/* ========================================================== CR3 ========================================================== */ + #define R_SCI0_CR3_SDST_Pos (0UL) /*!< SDST (Bit 0) */ + #define R_SCI0_CR3_SDST_Msk (0x1UL) /*!< SDST (Bitfield-Mask: 0x01) */ +/* ========================================================== PCR ========================================================== */ + #define R_SCI0_PCR_TXDXPS_Pos (0UL) /*!< TXDXPS (Bit 0) */ + #define R_SCI0_PCR_TXDXPS_Msk (0x1UL) /*!< TXDXPS (Bitfield-Mask: 0x01) */ + #define R_SCI0_PCR_RXDXPS_Pos (1UL) /*!< RXDXPS (Bit 1) */ + #define R_SCI0_PCR_RXDXPS_Msk (0x2UL) /*!< RXDXPS (Bitfield-Mask: 0x01) */ + #define R_SCI0_PCR_SHARPS_Pos (4UL) /*!< SHARPS (Bit 4) */ + #define R_SCI0_PCR_SHARPS_Msk (0x10UL) /*!< SHARPS (Bitfield-Mask: 0x01) */ +/* ========================================================== ICR ========================================================== */ + #define R_SCI0_ICR_BFDIE_Pos (0UL) /*!< BFDIE (Bit 0) */ + #define R_SCI0_ICR_BFDIE_Msk (0x1UL) /*!< BFDIE (Bitfield-Mask: 0x01) */ + #define R_SCI0_ICR_CF0MIE_Pos (1UL) /*!< CF0MIE (Bit 1) */ + #define R_SCI0_ICR_CF0MIE_Msk (0x2UL) /*!< CF0MIE (Bitfield-Mask: 0x01) */ + #define R_SCI0_ICR_CF1MIE_Pos (2UL) /*!< CF1MIE (Bit 2) */ + #define R_SCI0_ICR_CF1MIE_Msk (0x4UL) /*!< CF1MIE (Bitfield-Mask: 0x01) */ + #define R_SCI0_ICR_PIBDIE_Pos (3UL) /*!< PIBDIE (Bit 3) */ + #define R_SCI0_ICR_PIBDIE_Msk (0x8UL) /*!< PIBDIE (Bitfield-Mask: 0x01) */ + #define R_SCI0_ICR_BCDIE_Pos (4UL) /*!< BCDIE (Bit 4) */ + #define R_SCI0_ICR_BCDIE_Msk (0x10UL) /*!< BCDIE (Bitfield-Mask: 0x01) */ + #define R_SCI0_ICR_AEDIE_Pos (5UL) /*!< AEDIE (Bit 5) */ + #define R_SCI0_ICR_AEDIE_Msk (0x20UL) /*!< AEDIE (Bitfield-Mask: 0x01) */ +/* ========================================================== STR ========================================================== */ + #define R_SCI0_STR_BFDF_Pos (0UL) /*!< BFDF (Bit 0) */ + #define R_SCI0_STR_BFDF_Msk (0x1UL) /*!< BFDF (Bitfield-Mask: 0x01) */ + #define R_SCI0_STR_CF0MF_Pos (1UL) /*!< CF0MF (Bit 1) */ + #define R_SCI0_STR_CF0MF_Msk (0x2UL) /*!< CF0MF (Bitfield-Mask: 0x01) */ + #define R_SCI0_STR_CF1MF_Pos (2UL) /*!< CF1MF (Bit 2) */ + #define R_SCI0_STR_CF1MF_Msk (0x4UL) /*!< CF1MF (Bitfield-Mask: 0x01) */ + #define R_SCI0_STR_PIBDF_Pos (3UL) /*!< PIBDF (Bit 3) */ + #define R_SCI0_STR_PIBDF_Msk (0x8UL) /*!< PIBDF (Bitfield-Mask: 0x01) */ + #define R_SCI0_STR_BCDF_Pos (4UL) /*!< BCDF (Bit 4) */ + #define R_SCI0_STR_BCDF_Msk (0x10UL) /*!< BCDF (Bitfield-Mask: 0x01) */ + #define R_SCI0_STR_AEDF_Pos (5UL) /*!< AEDF (Bit 5) */ + #define R_SCI0_STR_AEDF_Msk (0x20UL) /*!< AEDF (Bitfield-Mask: 0x01) */ +/* ========================================================= STCR ========================================================== */ + #define R_SCI0_STCR_BFDCL_Pos (0UL) /*!< BFDCL (Bit 0) */ + #define R_SCI0_STCR_BFDCL_Msk (0x1UL) /*!< BFDCL (Bitfield-Mask: 0x01) */ + #define R_SCI0_STCR_CF0MCL_Pos (1UL) /*!< CF0MCL (Bit 1) */ + #define R_SCI0_STCR_CF0MCL_Msk (0x2UL) /*!< CF0MCL (Bitfield-Mask: 0x01) */ + #define R_SCI0_STCR_CF1MCL_Pos (2UL) /*!< CF1MCL (Bit 2) */ + #define R_SCI0_STCR_CF1MCL_Msk (0x4UL) /*!< CF1MCL (Bitfield-Mask: 0x01) */ + #define R_SCI0_STCR_PIBDCL_Pos (3UL) /*!< PIBDCL (Bit 3) */ + #define R_SCI0_STCR_PIBDCL_Msk (0x8UL) /*!< PIBDCL (Bitfield-Mask: 0x01) */ + #define R_SCI0_STCR_BCDCL_Pos (4UL) /*!< BCDCL (Bit 4) */ + #define R_SCI0_STCR_BCDCL_Msk (0x10UL) /*!< BCDCL (Bitfield-Mask: 0x01) */ + #define R_SCI0_STCR_AEDCL_Pos (5UL) /*!< AEDCL (Bit 5) */ + #define R_SCI0_STCR_AEDCL_Msk (0x20UL) /*!< AEDCL (Bitfield-Mask: 0x01) */ +/* ========================================================= CF0DR ========================================================= */ +/* ========================================================= CF0CR ========================================================= */ + #define R_SCI0_CF0CR_CF0CE0_Pos (0UL) /*!< CF0CE0 (Bit 0) */ + #define R_SCI0_CF0CR_CF0CE0_Msk (0x1UL) /*!< CF0CE0 (Bitfield-Mask: 0x01) */ + #define R_SCI0_CF0CR_CF0CE1_Pos (1UL) /*!< CF0CE1 (Bit 1) */ + #define R_SCI0_CF0CR_CF0CE1_Msk (0x2UL) /*!< CF0CE1 (Bitfield-Mask: 0x01) */ + #define R_SCI0_CF0CR_CF0CE2_Pos (2UL) /*!< CF0CE2 (Bit 2) */ + #define R_SCI0_CF0CR_CF0CE2_Msk (0x4UL) /*!< CF0CE2 (Bitfield-Mask: 0x01) */ + #define R_SCI0_CF0CR_CF0CE3_Pos (3UL) /*!< CF0CE3 (Bit 3) */ + #define R_SCI0_CF0CR_CF0CE3_Msk (0x8UL) /*!< CF0CE3 (Bitfield-Mask: 0x01) */ + #define R_SCI0_CF0CR_CF0CE4_Pos (4UL) /*!< CF0CE4 (Bit 4) */ + #define R_SCI0_CF0CR_CF0CE4_Msk (0x10UL) /*!< CF0CE4 (Bitfield-Mask: 0x01) */ + #define R_SCI0_CF0CR_CF0CE5_Pos (5UL) /*!< CF0CE5 (Bit 5) */ + #define R_SCI0_CF0CR_CF0CE5_Msk (0x20UL) /*!< CF0CE5 (Bitfield-Mask: 0x01) */ + #define R_SCI0_CF0CR_CF0CE6_Pos (6UL) /*!< CF0CE6 (Bit 6) */ + #define R_SCI0_CF0CR_CF0CE6_Msk (0x40UL) /*!< CF0CE6 (Bitfield-Mask: 0x01) */ + #define R_SCI0_CF0CR_CF0CE7_Pos (7UL) /*!< CF0CE7 (Bit 7) */ + #define R_SCI0_CF0CR_CF0CE7_Msk (0x80UL) /*!< CF0CE7 (Bitfield-Mask: 0x01) */ +/* ========================================================= CF0RR ========================================================= */ +/* ======================================================== PCF1DR ========================================================= */ +/* ======================================================== SCF1DR ========================================================= */ +/* ========================================================= CF1CR ========================================================= */ + #define R_SCI0_CF1CR_CF1CE0_Pos (0UL) /*!< CF1CE0 (Bit 0) */ + #define R_SCI0_CF1CR_CF1CE0_Msk (0x1UL) /*!< CF1CE0 (Bitfield-Mask: 0x01) */ + #define R_SCI0_CF1CR_CF1CE1_Pos (1UL) /*!< CF1CE1 (Bit 1) */ + #define R_SCI0_CF1CR_CF1CE1_Msk (0x2UL) /*!< CF1CE1 (Bitfield-Mask: 0x01) */ + #define R_SCI0_CF1CR_CF1CE2_Pos (2UL) /*!< CF1CE2 (Bit 2) */ + #define R_SCI0_CF1CR_CF1CE2_Msk (0x4UL) /*!< CF1CE2 (Bitfield-Mask: 0x01) */ + #define R_SCI0_CF1CR_CF1CE3_Pos (3UL) /*!< CF1CE3 (Bit 3) */ + #define R_SCI0_CF1CR_CF1CE3_Msk (0x8UL) /*!< CF1CE3 (Bitfield-Mask: 0x01) */ + #define R_SCI0_CF1CR_CF1CE4_Pos (4UL) /*!< CF1CE4 (Bit 4) */ + #define R_SCI0_CF1CR_CF1CE4_Msk (0x10UL) /*!< CF1CE4 (Bitfield-Mask: 0x01) */ + #define R_SCI0_CF1CR_CF1CE5_Pos (5UL) /*!< CF1CE5 (Bit 5) */ + #define R_SCI0_CF1CR_CF1CE5_Msk (0x20UL) /*!< CF1CE5 (Bitfield-Mask: 0x01) */ + #define R_SCI0_CF1CR_CF1CE6_Pos (6UL) /*!< CF1CE6 (Bit 6) */ + #define R_SCI0_CF1CR_CF1CE6_Msk (0x40UL) /*!< CF1CE6 (Bitfield-Mask: 0x01) */ + #define R_SCI0_CF1CR_CF1CE7_Pos (7UL) /*!< CF1CE7 (Bit 7) */ + #define R_SCI0_CF1CR_CF1CE7_Msk (0x80UL) /*!< CF1CE7 (Bitfield-Mask: 0x01) */ +/* ========================================================= CF1RR ========================================================= */ +/* ========================================================== TCR ========================================================== */ + #define R_SCI0_TCR_TCST_Pos (0UL) /*!< TCST (Bit 0) */ + #define R_SCI0_TCR_TCST_Msk (0x1UL) /*!< TCST (Bitfield-Mask: 0x01) */ +/* ========================================================== TMR ========================================================== */ + #define R_SCI0_TMR_TOMS_Pos (0UL) /*!< TOMS (Bit 0) */ + #define R_SCI0_TMR_TOMS_Msk (0x3UL) /*!< TOMS (Bitfield-Mask: 0x03) */ + #define R_SCI0_TMR_TWRC_Pos (3UL) /*!< TWRC (Bit 3) */ + #define R_SCI0_TMR_TWRC_Msk (0x8UL) /*!< TWRC (Bitfield-Mask: 0x01) */ + #define R_SCI0_TMR_TCSS_Pos (4UL) /*!< TCSS (Bit 4) */ + #define R_SCI0_TMR_TCSS_Msk (0x70UL) /*!< TCSS (Bitfield-Mask: 0x07) */ +/* ========================================================= TPRE ========================================================== */ +/* ========================================================= TCNT ========================================================== */ + +/* =========================================================================================================================== */ +/* ================ R_SDHI0 ================ */ +/* =========================================================================================================================== */ + +/* ======================================================== SD_CMD ========================================================= */ + #define R_SDHI0_SD_CMD_CMD12AT_Pos (14UL) /*!< CMD12AT (Bit 14) */ + #define R_SDHI0_SD_CMD_CMD12AT_Msk (0xc000UL) /*!< CMD12AT (Bitfield-Mask: 0x03) */ + #define R_SDHI0_SD_CMD_TRSTP_Pos (13UL) /*!< TRSTP (Bit 13) */ + #define R_SDHI0_SD_CMD_TRSTP_Msk (0x2000UL) /*!< TRSTP (Bitfield-Mask: 0x01) */ + #define R_SDHI0_SD_CMD_CMDRW_Pos (12UL) /*!< CMDRW (Bit 12) */ + #define R_SDHI0_SD_CMD_CMDRW_Msk (0x1000UL) /*!< CMDRW (Bitfield-Mask: 0x01) */ + #define R_SDHI0_SD_CMD_CMDTP_Pos (11UL) /*!< CMDTP (Bit 11) */ + #define R_SDHI0_SD_CMD_CMDTP_Msk (0x800UL) /*!< CMDTP (Bitfield-Mask: 0x01) */ + #define R_SDHI0_SD_CMD_RSPTP_Pos (8UL) /*!< RSPTP (Bit 8) */ + #define R_SDHI0_SD_CMD_RSPTP_Msk (0x700UL) /*!< RSPTP (Bitfield-Mask: 0x07) */ + #define R_SDHI0_SD_CMD_ACMD_Pos (6UL) /*!< ACMD (Bit 6) */ + #define R_SDHI0_SD_CMD_ACMD_Msk (0xc0UL) /*!< ACMD (Bitfield-Mask: 0x03) */ + #define R_SDHI0_SD_CMD_CMDIDX_Pos (0UL) /*!< CMDIDX (Bit 0) */ + #define R_SDHI0_SD_CMD_CMDIDX_Msk (0x3fUL) /*!< CMDIDX (Bitfield-Mask: 0x3f) */ +/* ======================================================== SD_ARG ========================================================= */ + #define R_SDHI0_SD_ARG_SD_ARG_Pos (0UL) /*!< SD_ARG (Bit 0) */ + #define R_SDHI0_SD_ARG_SD_ARG_Msk (0xffffffffUL) /*!< SD_ARG (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== SD_ARG1 ======================================================== */ + #define R_SDHI0_SD_ARG1_SD_ARG1_Pos (0UL) /*!< SD_ARG1 (Bit 0) */ + #define R_SDHI0_SD_ARG1_SD_ARG1_Msk (0xffffUL) /*!< SD_ARG1 (Bitfield-Mask: 0xffff) */ +/* ======================================================== SD_STOP ======================================================== */ + #define R_SDHI0_SD_STOP_SEC_Pos (8UL) /*!< SEC (Bit 8) */ + #define R_SDHI0_SD_STOP_SEC_Msk (0x100UL) /*!< SEC (Bitfield-Mask: 0x01) */ + #define R_SDHI0_SD_STOP_STP_Pos (0UL) /*!< STP (Bit 0) */ + #define R_SDHI0_SD_STOP_STP_Msk (0x1UL) /*!< STP (Bitfield-Mask: 0x01) */ +/* ======================================================= SD_SECCNT ======================================================= */ + #define R_SDHI0_SD_SECCNT_SD_SECCNT_Pos (0UL) /*!< SD_SECCNT (Bit 0) */ + #define R_SDHI0_SD_SECCNT_SD_SECCNT_Msk (0xffffffffUL) /*!< SD_SECCNT (Bitfield-Mask: 0xffffffff) */ +/* ======================================================= SD_RSP10 ======================================================== */ + #define R_SDHI0_SD_RSP10_SD_RSP10_Pos (0UL) /*!< SD_RSP10 (Bit 0) */ + #define R_SDHI0_SD_RSP10_SD_RSP10_Msk (0xffffffffUL) /*!< SD_RSP10 (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== SD_RSP1 ======================================================== */ + #define R_SDHI0_SD_RSP1_SD_RSP1_Pos (0UL) /*!< SD_RSP1 (Bit 0) */ + #define R_SDHI0_SD_RSP1_SD_RSP1_Msk (0xffffUL) /*!< SD_RSP1 (Bitfield-Mask: 0xffff) */ +/* ======================================================= SD_RSP32 ======================================================== */ + #define R_SDHI0_SD_RSP32_SD_RSP32_Pos (0UL) /*!< SD_RSP32 (Bit 0) */ + #define R_SDHI0_SD_RSP32_SD_RSP32_Msk (0xffffffffUL) /*!< SD_RSP32 (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== SD_RSP3 ======================================================== */ + #define R_SDHI0_SD_RSP3_SD_RSP3_Pos (0UL) /*!< SD_RSP3 (Bit 0) */ + #define R_SDHI0_SD_RSP3_SD_RSP3_Msk (0xffffUL) /*!< SD_RSP3 (Bitfield-Mask: 0xffff) */ +/* ======================================================= SD_RSP54 ======================================================== */ + #define R_SDHI0_SD_RSP54_SD_RSP54_Pos (0UL) /*!< SD_RSP54 (Bit 0) */ + #define R_SDHI0_SD_RSP54_SD_RSP54_Msk (0xffffffffUL) /*!< SD_RSP54 (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== SD_RSP5 ======================================================== */ + #define R_SDHI0_SD_RSP5_SD_RSP5_Pos (0UL) /*!< SD_RSP5 (Bit 0) */ + #define R_SDHI0_SD_RSP5_SD_RSP5_Msk (0xffffUL) /*!< SD_RSP5 (Bitfield-Mask: 0xffff) */ +/* ======================================================= SD_RSP76 ======================================================== */ + #define R_SDHI0_SD_RSP76_SD_RSP76_Pos (0UL) /*!< SD_RSP76 (Bit 0) */ + #define R_SDHI0_SD_RSP76_SD_RSP76_Msk (0xffffffUL) /*!< SD_RSP76 (Bitfield-Mask: 0xffffff) */ +/* ======================================================== SD_RSP7 ======================================================== */ + #define R_SDHI0_SD_RSP7_SD_RSP7_Pos (0UL) /*!< SD_RSP7 (Bit 0) */ + #define R_SDHI0_SD_RSP7_SD_RSP7_Msk (0xffUL) /*!< SD_RSP7 (Bitfield-Mask: 0xff) */ +/* ======================================================= SD_INFO1 ======================================================== */ + #define R_SDHI0_SD_INFO1_SDD3MON_Pos (10UL) /*!< SDD3MON (Bit 10) */ + #define R_SDHI0_SD_INFO1_SDD3MON_Msk (0x400UL) /*!< SDD3MON (Bitfield-Mask: 0x01) */ + #define R_SDHI0_SD_INFO1_SDD3IN_Pos (9UL) /*!< SDD3IN (Bit 9) */ + #define R_SDHI0_SD_INFO1_SDD3IN_Msk (0x200UL) /*!< SDD3IN (Bitfield-Mask: 0x01) */ + #define R_SDHI0_SD_INFO1_SDD3RM_Pos (8UL) /*!< SDD3RM (Bit 8) */ + #define R_SDHI0_SD_INFO1_SDD3RM_Msk (0x100UL) /*!< SDD3RM (Bitfield-Mask: 0x01) */ + #define R_SDHI0_SD_INFO1_SDWPMON_Pos (7UL) /*!< SDWPMON (Bit 7) */ + #define R_SDHI0_SD_INFO1_SDWPMON_Msk (0x80UL) /*!< SDWPMON (Bitfield-Mask: 0x01) */ + #define R_SDHI0_SD_INFO1_SDCDMON_Pos (5UL) /*!< SDCDMON (Bit 5) */ + #define R_SDHI0_SD_INFO1_SDCDMON_Msk (0x20UL) /*!< SDCDMON (Bitfield-Mask: 0x01) */ + #define R_SDHI0_SD_INFO1_SDCDIN_Pos (4UL) /*!< SDCDIN (Bit 4) */ + #define R_SDHI0_SD_INFO1_SDCDIN_Msk (0x10UL) /*!< SDCDIN (Bitfield-Mask: 0x01) */ + #define R_SDHI0_SD_INFO1_SDCDRM_Pos (3UL) /*!< SDCDRM (Bit 3) */ + #define R_SDHI0_SD_INFO1_SDCDRM_Msk (0x8UL) /*!< SDCDRM (Bitfield-Mask: 0x01) */ + #define R_SDHI0_SD_INFO1_ACEND_Pos (2UL) /*!< ACEND (Bit 2) */ + #define R_SDHI0_SD_INFO1_ACEND_Msk (0x4UL) /*!< ACEND (Bitfield-Mask: 0x01) */ + #define R_SDHI0_SD_INFO1_RSPEND_Pos (0UL) /*!< RSPEND (Bit 0) */ + #define R_SDHI0_SD_INFO1_RSPEND_Msk (0x1UL) /*!< RSPEND (Bitfield-Mask: 0x01) */ +/* ======================================================= SD_INFO2 ======================================================== */ + #define R_SDHI0_SD_INFO2_ILA_Pos (15UL) /*!< ILA (Bit 15) */ + #define R_SDHI0_SD_INFO2_ILA_Msk (0x8000UL) /*!< ILA (Bitfield-Mask: 0x01) */ + #define R_SDHI0_SD_INFO2_CBSY_Pos (14UL) /*!< CBSY (Bit 14) */ + #define R_SDHI0_SD_INFO2_CBSY_Msk (0x4000UL) /*!< CBSY (Bitfield-Mask: 0x01) */ + #define R_SDHI0_SD_INFO2_SD_CLK_CTRLEN_Pos (13UL) /*!< SD_CLK_CTRLEN (Bit 13) */ + #define R_SDHI0_SD_INFO2_SD_CLK_CTRLEN_Msk (0x2000UL) /*!< SD_CLK_CTRLEN (Bitfield-Mask: 0x01) */ + #define R_SDHI0_SD_INFO2_BWE_Pos (9UL) /*!< BWE (Bit 9) */ + #define R_SDHI0_SD_INFO2_BWE_Msk (0x200UL) /*!< BWE (Bitfield-Mask: 0x01) */ + #define R_SDHI0_SD_INFO2_BRE_Pos (8UL) /*!< BRE (Bit 8) */ + #define R_SDHI0_SD_INFO2_BRE_Msk (0x100UL) /*!< BRE (Bitfield-Mask: 0x01) */ + #define R_SDHI0_SD_INFO2_SDD0MON_Pos (7UL) /*!< SDD0MON (Bit 7) */ + #define R_SDHI0_SD_INFO2_SDD0MON_Msk (0x80UL) /*!< SDD0MON (Bitfield-Mask: 0x01) */ + #define R_SDHI0_SD_INFO2_RSPTO_Pos (6UL) /*!< RSPTO (Bit 6) */ + #define R_SDHI0_SD_INFO2_RSPTO_Msk (0x40UL) /*!< RSPTO (Bitfield-Mask: 0x01) */ + #define R_SDHI0_SD_INFO2_ILR_Pos (5UL) /*!< ILR (Bit 5) */ + #define R_SDHI0_SD_INFO2_ILR_Msk (0x20UL) /*!< ILR (Bitfield-Mask: 0x01) */ + #define R_SDHI0_SD_INFO2_ILW_Pos (4UL) /*!< ILW (Bit 4) */ + #define R_SDHI0_SD_INFO2_ILW_Msk (0x10UL) /*!< ILW (Bitfield-Mask: 0x01) */ + #define R_SDHI0_SD_INFO2_DTO_Pos (3UL) /*!< DTO (Bit 3) */ + #define R_SDHI0_SD_INFO2_DTO_Msk (0x8UL) /*!< DTO (Bitfield-Mask: 0x01) */ + #define R_SDHI0_SD_INFO2_ENDE_Pos (2UL) /*!< ENDE (Bit 2) */ + #define R_SDHI0_SD_INFO2_ENDE_Msk (0x4UL) /*!< ENDE (Bitfield-Mask: 0x01) */ + #define R_SDHI0_SD_INFO2_CRCE_Pos (1UL) /*!< CRCE (Bit 1) */ + #define R_SDHI0_SD_INFO2_CRCE_Msk (0x2UL) /*!< CRCE (Bitfield-Mask: 0x01) */ + #define R_SDHI0_SD_INFO2_CMDE_Pos (0UL) /*!< CMDE (Bit 0) */ + #define R_SDHI0_SD_INFO2_CMDE_Msk (0x1UL) /*!< CMDE (Bitfield-Mask: 0x01) */ +/* ===================================================== SD_INFO1_MASK ===================================================== */ + #define R_SDHI0_SD_INFO1_MASK_SDD3INM_Pos (9UL) /*!< SDD3INM (Bit 9) */ + #define R_SDHI0_SD_INFO1_MASK_SDD3INM_Msk (0x200UL) /*!< SDD3INM (Bitfield-Mask: 0x01) */ + #define R_SDHI0_SD_INFO1_MASK_SDD3RMM_Pos (8UL) /*!< SDD3RMM (Bit 8) */ + #define R_SDHI0_SD_INFO1_MASK_SDD3RMM_Msk (0x100UL) /*!< SDD3RMM (Bitfield-Mask: 0x01) */ + #define R_SDHI0_SD_INFO1_MASK_SDCDINM_Pos (4UL) /*!< SDCDINM (Bit 4) */ + #define R_SDHI0_SD_INFO1_MASK_SDCDINM_Msk (0x10UL) /*!< SDCDINM (Bitfield-Mask: 0x01) */ + #define R_SDHI0_SD_INFO1_MASK_SDCDRMM_Pos (3UL) /*!< SDCDRMM (Bit 3) */ + #define R_SDHI0_SD_INFO1_MASK_SDCDRMM_Msk (0x8UL) /*!< SDCDRMM (Bitfield-Mask: 0x01) */ + #define R_SDHI0_SD_INFO1_MASK_ACENDM_Pos (2UL) /*!< ACENDM (Bit 2) */ + #define R_SDHI0_SD_INFO1_MASK_ACENDM_Msk (0x4UL) /*!< ACENDM (Bitfield-Mask: 0x01) */ + #define R_SDHI0_SD_INFO1_MASK_RSPENDM_Pos (0UL) /*!< RSPENDM (Bit 0) */ + #define R_SDHI0_SD_INFO1_MASK_RSPENDM_Msk (0x1UL) /*!< RSPENDM (Bitfield-Mask: 0x01) */ +/* ===================================================== SD_INFO2_MASK ===================================================== */ + #define R_SDHI0_SD_INFO2_MASK_ILAM_Pos (15UL) /*!< ILAM (Bit 15) */ + #define R_SDHI0_SD_INFO2_MASK_ILAM_Msk (0x8000UL) /*!< ILAM (Bitfield-Mask: 0x01) */ + #define R_SDHI0_SD_INFO2_MASK_BWEM_Pos (9UL) /*!< BWEM (Bit 9) */ + #define R_SDHI0_SD_INFO2_MASK_BWEM_Msk (0x200UL) /*!< BWEM (Bitfield-Mask: 0x01) */ + #define R_SDHI0_SD_INFO2_MASK_BREM_Pos (8UL) /*!< BREM (Bit 8) */ + #define R_SDHI0_SD_INFO2_MASK_BREM_Msk (0x100UL) /*!< BREM (Bitfield-Mask: 0x01) */ + #define R_SDHI0_SD_INFO2_MASK_RSPTOM_Pos (6UL) /*!< RSPTOM (Bit 6) */ + #define R_SDHI0_SD_INFO2_MASK_RSPTOM_Msk (0x40UL) /*!< RSPTOM (Bitfield-Mask: 0x01) */ + #define R_SDHI0_SD_INFO2_MASK_ILRM_Pos (5UL) /*!< ILRM (Bit 5) */ + #define R_SDHI0_SD_INFO2_MASK_ILRM_Msk (0x20UL) /*!< ILRM (Bitfield-Mask: 0x01) */ + #define R_SDHI0_SD_INFO2_MASK_ILWM_Pos (4UL) /*!< ILWM (Bit 4) */ + #define R_SDHI0_SD_INFO2_MASK_ILWM_Msk (0x10UL) /*!< ILWM (Bitfield-Mask: 0x01) */ + #define R_SDHI0_SD_INFO2_MASK_DTOM_Pos (3UL) /*!< DTOM (Bit 3) */ + #define R_SDHI0_SD_INFO2_MASK_DTOM_Msk (0x8UL) /*!< DTOM (Bitfield-Mask: 0x01) */ + #define R_SDHI0_SD_INFO2_MASK_ENDEM_Pos (2UL) /*!< ENDEM (Bit 2) */ + #define R_SDHI0_SD_INFO2_MASK_ENDEM_Msk (0x4UL) /*!< ENDEM (Bitfield-Mask: 0x01) */ + #define R_SDHI0_SD_INFO2_MASK_CRCEM_Pos (1UL) /*!< CRCEM (Bit 1) */ + #define R_SDHI0_SD_INFO2_MASK_CRCEM_Msk (0x2UL) /*!< CRCEM (Bitfield-Mask: 0x01) */ + #define R_SDHI0_SD_INFO2_MASK_CMDEM_Pos (0UL) /*!< CMDEM (Bit 0) */ + #define R_SDHI0_SD_INFO2_MASK_CMDEM_Msk (0x1UL) /*!< CMDEM (Bitfield-Mask: 0x01) */ +/* ====================================================== SD_CLK_CTRL ====================================================== */ + #define R_SDHI0_SD_CLK_CTRL_CLKCTRLEN_Pos (9UL) /*!< CLKCTRLEN (Bit 9) */ + #define R_SDHI0_SD_CLK_CTRL_CLKCTRLEN_Msk (0x200UL) /*!< CLKCTRLEN (Bitfield-Mask: 0x01) */ + #define R_SDHI0_SD_CLK_CTRL_CLKEN_Pos (8UL) /*!< CLKEN (Bit 8) */ + #define R_SDHI0_SD_CLK_CTRL_CLKEN_Msk (0x100UL) /*!< CLKEN (Bitfield-Mask: 0x01) */ + #define R_SDHI0_SD_CLK_CTRL_CLKSEL_Pos (0UL) /*!< CLKSEL (Bit 0) */ + #define R_SDHI0_SD_CLK_CTRL_CLKSEL_Msk (0xffUL) /*!< CLKSEL (Bitfield-Mask: 0xff) */ +/* ======================================================== SD_SIZE ======================================================== */ + #define R_SDHI0_SD_SIZE_LEN_Pos (0UL) /*!< LEN (Bit 0) */ + #define R_SDHI0_SD_SIZE_LEN_Msk (0x3ffUL) /*!< LEN (Bitfield-Mask: 0x3ff) */ +/* ======================================================= SD_OPTION ======================================================= */ + #define R_SDHI0_SD_OPTION_WIDTH_Pos (15UL) /*!< WIDTH (Bit 15) */ + #define R_SDHI0_SD_OPTION_WIDTH_Msk (0x8000UL) /*!< WIDTH (Bitfield-Mask: 0x01) */ + #define R_SDHI0_SD_OPTION_WIDTH8_Pos (13UL) /*!< WIDTH8 (Bit 13) */ + #define R_SDHI0_SD_OPTION_WIDTH8_Msk (0x2000UL) /*!< WIDTH8 (Bitfield-Mask: 0x01) */ + #define R_SDHI0_SD_OPTION_TOUTMASK_Pos (8UL) /*!< TOUTMASK (Bit 8) */ + #define R_SDHI0_SD_OPTION_TOUTMASK_Msk (0x100UL) /*!< TOUTMASK (Bitfield-Mask: 0x01) */ + #define R_SDHI0_SD_OPTION_TOP_Pos (4UL) /*!< TOP (Bit 4) */ + #define R_SDHI0_SD_OPTION_TOP_Msk (0xf0UL) /*!< TOP (Bitfield-Mask: 0x0f) */ + #define R_SDHI0_SD_OPTION_CTOP_Pos (0UL) /*!< CTOP (Bit 0) */ + #define R_SDHI0_SD_OPTION_CTOP_Msk (0xfUL) /*!< CTOP (Bitfield-Mask: 0x0f) */ +/* ====================================================== SD_ERR_STS1 ====================================================== */ + #define R_SDHI0_SD_ERR_STS1_CRCTK_Pos (12UL) /*!< CRCTK (Bit 12) */ + #define R_SDHI0_SD_ERR_STS1_CRCTK_Msk (0x7000UL) /*!< CRCTK (Bitfield-Mask: 0x07) */ + #define R_SDHI0_SD_ERR_STS1_CRCTKE_Pos (11UL) /*!< CRCTKE (Bit 11) */ + #define R_SDHI0_SD_ERR_STS1_CRCTKE_Msk (0x800UL) /*!< CRCTKE (Bitfield-Mask: 0x01) */ + #define R_SDHI0_SD_ERR_STS1_RDCRCE_Pos (10UL) /*!< RDCRCE (Bit 10) */ + #define R_SDHI0_SD_ERR_STS1_RDCRCE_Msk (0x400UL) /*!< RDCRCE (Bitfield-Mask: 0x01) */ + #define R_SDHI0_SD_ERR_STS1_RSPCRCE1_Pos (9UL) /*!< RSPCRCE1 (Bit 9) */ + #define R_SDHI0_SD_ERR_STS1_RSPCRCE1_Msk (0x200UL) /*!< RSPCRCE1 (Bitfield-Mask: 0x01) */ + #define R_SDHI0_SD_ERR_STS1_RSPCRCE0_Pos (8UL) /*!< RSPCRCE0 (Bit 8) */ + #define R_SDHI0_SD_ERR_STS1_RSPCRCE0_Msk (0x100UL) /*!< RSPCRCE0 (Bitfield-Mask: 0x01) */ + #define R_SDHI0_SD_ERR_STS1_CRCLENE_Pos (5UL) /*!< CRCLENE (Bit 5) */ + #define R_SDHI0_SD_ERR_STS1_CRCLENE_Msk (0x20UL) /*!< CRCLENE (Bitfield-Mask: 0x01) */ + #define R_SDHI0_SD_ERR_STS1_RDLENE_Pos (4UL) /*!< RDLENE (Bit 4) */ + #define R_SDHI0_SD_ERR_STS1_RDLENE_Msk (0x10UL) /*!< RDLENE (Bitfield-Mask: 0x01) */ + #define R_SDHI0_SD_ERR_STS1_RSPLENE1_Pos (3UL) /*!< RSPLENE1 (Bit 3) */ + #define R_SDHI0_SD_ERR_STS1_RSPLENE1_Msk (0x8UL) /*!< RSPLENE1 (Bitfield-Mask: 0x01) */ + #define R_SDHI0_SD_ERR_STS1_RSPLENE0_Pos (2UL) /*!< RSPLENE0 (Bit 2) */ + #define R_SDHI0_SD_ERR_STS1_RSPLENE0_Msk (0x4UL) /*!< RSPLENE0 (Bitfield-Mask: 0x01) */ + #define R_SDHI0_SD_ERR_STS1_CMDE1_Pos (1UL) /*!< CMDE1 (Bit 1) */ + #define R_SDHI0_SD_ERR_STS1_CMDE1_Msk (0x2UL) /*!< CMDE1 (Bitfield-Mask: 0x01) */ + #define R_SDHI0_SD_ERR_STS1_CMDE0_Pos (0UL) /*!< CMDE0 (Bit 0) */ + #define R_SDHI0_SD_ERR_STS1_CMDE0_Msk (0x1UL) /*!< CMDE0 (Bitfield-Mask: 0x01) */ +/* ====================================================== SD_ERR_STS2 ====================================================== */ + #define R_SDHI0_SD_ERR_STS2_CRCBSYTO_Pos (6UL) /*!< CRCBSYTO (Bit 6) */ + #define R_SDHI0_SD_ERR_STS2_CRCBSYTO_Msk (0x40UL) /*!< CRCBSYTO (Bitfield-Mask: 0x01) */ + #define R_SDHI0_SD_ERR_STS2_CRCTO_Pos (5UL) /*!< CRCTO (Bit 5) */ + #define R_SDHI0_SD_ERR_STS2_CRCTO_Msk (0x20UL) /*!< CRCTO (Bitfield-Mask: 0x01) */ + #define R_SDHI0_SD_ERR_STS2_RDTO_Pos (4UL) /*!< RDTO (Bit 4) */ + #define R_SDHI0_SD_ERR_STS2_RDTO_Msk (0x10UL) /*!< RDTO (Bitfield-Mask: 0x01) */ + #define R_SDHI0_SD_ERR_STS2_BSYTO1_Pos (3UL) /*!< BSYTO1 (Bit 3) */ + #define R_SDHI0_SD_ERR_STS2_BSYTO1_Msk (0x8UL) /*!< BSYTO1 (Bitfield-Mask: 0x01) */ + #define R_SDHI0_SD_ERR_STS2_BSYTO0_Pos (2UL) /*!< BSYTO0 (Bit 2) */ + #define R_SDHI0_SD_ERR_STS2_BSYTO0_Msk (0x4UL) /*!< BSYTO0 (Bitfield-Mask: 0x01) */ + #define R_SDHI0_SD_ERR_STS2_RSPTO1_Pos (1UL) /*!< RSPTO1 (Bit 1) */ + #define R_SDHI0_SD_ERR_STS2_RSPTO1_Msk (0x2UL) /*!< RSPTO1 (Bitfield-Mask: 0x01) */ + #define R_SDHI0_SD_ERR_STS2_RSPTO0_Pos (0UL) /*!< RSPTO0 (Bit 0) */ + #define R_SDHI0_SD_ERR_STS2_RSPTO0_Msk (0x1UL) /*!< RSPTO0 (Bitfield-Mask: 0x01) */ +/* ======================================================== SD_BUF0 ======================================================== */ + #define R_SDHI0_SD_BUF0_SD_BUF_Pos (0UL) /*!< SD_BUF (Bit 0) */ + #define R_SDHI0_SD_BUF0_SD_BUF_Msk (0xffffffffUL) /*!< SD_BUF (Bitfield-Mask: 0xffffffff) */ +/* ======================================================= SDIO_MODE ======================================================= */ + #define R_SDHI0_SDIO_MODE_C52PUB_Pos (9UL) /*!< C52PUB (Bit 9) */ + #define R_SDHI0_SDIO_MODE_C52PUB_Msk (0x200UL) /*!< C52PUB (Bitfield-Mask: 0x01) */ + #define R_SDHI0_SDIO_MODE_IOABT_Pos (8UL) /*!< IOABT (Bit 8) */ + #define R_SDHI0_SDIO_MODE_IOABT_Msk (0x100UL) /*!< IOABT (Bitfield-Mask: 0x01) */ + #define R_SDHI0_SDIO_MODE_RWREQ_Pos (2UL) /*!< RWREQ (Bit 2) */ + #define R_SDHI0_SDIO_MODE_RWREQ_Msk (0x4UL) /*!< RWREQ (Bitfield-Mask: 0x01) */ + #define R_SDHI0_SDIO_MODE_INTEN_Pos (0UL) /*!< INTEN (Bit 0) */ + #define R_SDHI0_SDIO_MODE_INTEN_Msk (0x1UL) /*!< INTEN (Bitfield-Mask: 0x01) */ +/* ====================================================== SDIO_INFO1 ======================================================= */ + #define R_SDHI0_SDIO_INFO1_EXWT_Pos (15UL) /*!< EXWT (Bit 15) */ + #define R_SDHI0_SDIO_INFO1_EXWT_Msk (0x8000UL) /*!< EXWT (Bitfield-Mask: 0x01) */ + #define R_SDHI0_SDIO_INFO1_EXPUB52_Pos (14UL) /*!< EXPUB52 (Bit 14) */ + #define R_SDHI0_SDIO_INFO1_EXPUB52_Msk (0x4000UL) /*!< EXPUB52 (Bitfield-Mask: 0x01) */ + #define R_SDHI0_SDIO_INFO1_IOIRQ_Pos (0UL) /*!< IOIRQ (Bit 0) */ + #define R_SDHI0_SDIO_INFO1_IOIRQ_Msk (0x1UL) /*!< IOIRQ (Bitfield-Mask: 0x01) */ +/* ==================================================== SDIO_INFO1_MASK ==================================================== */ + #define R_SDHI0_SDIO_INFO1_MASK_EXWTM_Pos (15UL) /*!< EXWTM (Bit 15) */ + #define R_SDHI0_SDIO_INFO1_MASK_EXWTM_Msk (0x8000UL) /*!< EXWTM (Bitfield-Mask: 0x01) */ + #define R_SDHI0_SDIO_INFO1_MASK_EXPUB52M_Pos (14UL) /*!< EXPUB52M (Bit 14) */ + #define R_SDHI0_SDIO_INFO1_MASK_EXPUB52M_Msk (0x4000UL) /*!< EXPUB52M (Bitfield-Mask: 0x01) */ + #define R_SDHI0_SDIO_INFO1_MASK_IOIRQM_Pos (0UL) /*!< IOIRQM (Bit 0) */ + #define R_SDHI0_SDIO_INFO1_MASK_IOIRQM_Msk (0x1UL) /*!< IOIRQM (Bitfield-Mask: 0x01) */ +/* ======================================================= SD_DMAEN ======================================================== */ + #define R_SDHI0_SD_DMAEN_DMAEN_Pos (1UL) /*!< DMAEN (Bit 1) */ + #define R_SDHI0_SD_DMAEN_DMAEN_Msk (0x2UL) /*!< DMAEN (Bitfield-Mask: 0x01) */ +/* ======================================================= SOFT_RST ======================================================== */ + #define R_SDHI0_SOFT_RST_SDRST_Pos (0UL) /*!< SDRST (Bit 0) */ + #define R_SDHI0_SOFT_RST_SDRST_Msk (0x1UL) /*!< SDRST (Bitfield-Mask: 0x01) */ +/* ======================================================= SDIF_MODE ======================================================= */ + #define R_SDHI0_SDIF_MODE_NOCHKCR_Pos (8UL) /*!< NOCHKCR (Bit 8) */ + #define R_SDHI0_SDIF_MODE_NOCHKCR_Msk (0x100UL) /*!< NOCHKCR (Bitfield-Mask: 0x01) */ +/* ======================================================= EXT_SWAP ======================================================== */ + #define R_SDHI0_EXT_SWAP_BRSWP_Pos (7UL) /*!< BRSWP (Bit 7) */ + #define R_SDHI0_EXT_SWAP_BRSWP_Msk (0x80UL) /*!< BRSWP (Bitfield-Mask: 0x01) */ + #define R_SDHI0_EXT_SWAP_BWSWP_Pos (6UL) /*!< BWSWP (Bit 6) */ + #define R_SDHI0_EXT_SWAP_BWSWP_Msk (0x40UL) /*!< BWSWP (Bitfield-Mask: 0x01) */ + +/* =========================================================================================================================== */ +/* ================ R_SPI0 ================ */ +/* =========================================================================================================================== */ + +/* ========================================================= SPCR ========================================================== */ + #define R_SPI0_SPCR_SPRIE_Pos (7UL) /*!< SPRIE (Bit 7) */ + #define R_SPI0_SPCR_SPRIE_Msk (0x80UL) /*!< SPRIE (Bitfield-Mask: 0x01) */ + #define R_SPI0_SPCR_SPE_Pos (6UL) /*!< SPE (Bit 6) */ + #define R_SPI0_SPCR_SPE_Msk (0x40UL) /*!< SPE (Bitfield-Mask: 0x01) */ + #define R_SPI0_SPCR_SPTIE_Pos (5UL) /*!< SPTIE (Bit 5) */ + #define R_SPI0_SPCR_SPTIE_Msk (0x20UL) /*!< SPTIE (Bitfield-Mask: 0x01) */ + #define R_SPI0_SPCR_SPEIE_Pos (4UL) /*!< SPEIE (Bit 4) */ + #define R_SPI0_SPCR_SPEIE_Msk (0x10UL) /*!< SPEIE (Bitfield-Mask: 0x01) */ + #define R_SPI0_SPCR_MSTR_Pos (3UL) /*!< MSTR (Bit 3) */ + #define R_SPI0_SPCR_MSTR_Msk (0x8UL) /*!< MSTR (Bitfield-Mask: 0x01) */ + #define R_SPI0_SPCR_MODFEN_Pos (2UL) /*!< MODFEN (Bit 2) */ + #define R_SPI0_SPCR_MODFEN_Msk (0x4UL) /*!< MODFEN (Bitfield-Mask: 0x01) */ + #define R_SPI0_SPCR_TXMD_Pos (1UL) /*!< TXMD (Bit 1) */ + #define R_SPI0_SPCR_TXMD_Msk (0x2UL) /*!< TXMD (Bitfield-Mask: 0x01) */ + #define R_SPI0_SPCR_SPMS_Pos (0UL) /*!< SPMS (Bit 0) */ + #define R_SPI0_SPCR_SPMS_Msk (0x1UL) /*!< SPMS (Bitfield-Mask: 0x01) */ +/* ========================================================= SSLP ========================================================== */ + #define R_SPI0_SSLP_SSL3P_Pos (3UL) /*!< SSL3P (Bit 3) */ + #define R_SPI0_SSLP_SSL3P_Msk (0x8UL) /*!< SSL3P (Bitfield-Mask: 0x01) */ + #define R_SPI0_SSLP_SSL2P_Pos (2UL) /*!< SSL2P (Bit 2) */ + #define R_SPI0_SSLP_SSL2P_Msk (0x4UL) /*!< SSL2P (Bitfield-Mask: 0x01) */ + #define R_SPI0_SSLP_SSL1P_Pos (1UL) /*!< SSL1P (Bit 1) */ + #define R_SPI0_SSLP_SSL1P_Msk (0x2UL) /*!< SSL1P (Bitfield-Mask: 0x01) */ + #define R_SPI0_SSLP_SSL0P_Pos (0UL) /*!< SSL0P (Bit 0) */ + #define R_SPI0_SSLP_SSL0P_Msk (0x1UL) /*!< SSL0P (Bitfield-Mask: 0x01) */ + #define R_SPI0_SSLP_SSL4P_Pos (4UL) /*!< SSL4P (Bit 4) */ + #define R_SPI0_SSLP_SSL4P_Msk (0x10UL) /*!< SSL4P (Bitfield-Mask: 0x01) */ + #define R_SPI0_SSLP_SSL5P_Pos (5UL) /*!< SSL5P (Bit 5) */ + #define R_SPI0_SSLP_SSL5P_Msk (0x20UL) /*!< SSL5P (Bitfield-Mask: 0x01) */ + #define R_SPI0_SSLP_SSL6P_Pos (6UL) /*!< SSL6P (Bit 6) */ + #define R_SPI0_SSLP_SSL6P_Msk (0x40UL) /*!< SSL6P (Bitfield-Mask: 0x01) */ + #define R_SPI0_SSLP_SSL7P_Pos (7UL) /*!< SSL7P (Bit 7) */ + #define R_SPI0_SSLP_SSL7P_Msk (0x80UL) /*!< SSL7P (Bitfield-Mask: 0x01) */ +/* ========================================================= SPPCR ========================================================= */ + #define R_SPI0_SPPCR_MOIFE_Pos (5UL) /*!< MOIFE (Bit 5) */ + #define R_SPI0_SPPCR_MOIFE_Msk (0x20UL) /*!< MOIFE (Bitfield-Mask: 0x01) */ + #define R_SPI0_SPPCR_MOIFV_Pos (4UL) /*!< MOIFV (Bit 4) */ + #define R_SPI0_SPPCR_MOIFV_Msk (0x10UL) /*!< MOIFV (Bitfield-Mask: 0x01) */ + #define R_SPI0_SPPCR_SPLP2_Pos (1UL) /*!< SPLP2 (Bit 1) */ + #define R_SPI0_SPPCR_SPLP2_Msk (0x2UL) /*!< SPLP2 (Bitfield-Mask: 0x01) */ + #define R_SPI0_SPPCR_SPLP_Pos (0UL) /*!< SPLP (Bit 0) */ + #define R_SPI0_SPPCR_SPLP_Msk (0x1UL) /*!< SPLP (Bitfield-Mask: 0x01) */ +/* ========================================================= SPSR ========================================================== */ + #define R_SPI0_SPSR_SPRF_Pos (7UL) /*!< SPRF (Bit 7) */ + #define R_SPI0_SPSR_SPRF_Msk (0x80UL) /*!< SPRF (Bitfield-Mask: 0x01) */ + #define R_SPI0_SPSR_SPTEF_Pos (5UL) /*!< SPTEF (Bit 5) */ + #define R_SPI0_SPSR_SPTEF_Msk (0x20UL) /*!< SPTEF (Bitfield-Mask: 0x01) */ + #define R_SPI0_SPSR_UDRF_Pos (4UL) /*!< UDRF (Bit 4) */ + #define R_SPI0_SPSR_UDRF_Msk (0x10UL) /*!< UDRF (Bitfield-Mask: 0x01) */ + #define R_SPI0_SPSR_PERF_Pos (3UL) /*!< PERF (Bit 3) */ + #define R_SPI0_SPSR_PERF_Msk (0x8UL) /*!< PERF (Bitfield-Mask: 0x01) */ + #define R_SPI0_SPSR_MODF_Pos (2UL) /*!< MODF (Bit 2) */ + #define R_SPI0_SPSR_MODF_Msk (0x4UL) /*!< MODF (Bitfield-Mask: 0x01) */ + #define R_SPI0_SPSR_IDLNF_Pos (1UL) /*!< IDLNF (Bit 1) */ + #define R_SPI0_SPSR_IDLNF_Msk (0x2UL) /*!< IDLNF (Bitfield-Mask: 0x01) */ + #define R_SPI0_SPSR_OVRF_Pos (0UL) /*!< OVRF (Bit 0) */ + #define R_SPI0_SPSR_OVRF_Msk (0x1UL) /*!< OVRF (Bitfield-Mask: 0x01) */ + #define R_SPI0_SPSR_CENDF_Pos (6UL) /*!< CENDF (Bit 6) */ + #define R_SPI0_SPSR_CENDF_Msk (0x40UL) /*!< CENDF (Bitfield-Mask: 0x01) */ +/* ========================================================= SPDR ========================================================== */ +/* ======================================================== SPDR_HA ======================================================== */ +/* ======================================================== SPDR_BY ======================================================== */ +/* ========================================================= SPSCR ========================================================= */ + #define R_SPI0_SPSCR_SPSLN_Pos (0UL) /*!< SPSLN (Bit 0) */ + #define R_SPI0_SPSCR_SPSLN_Msk (0x7UL) /*!< SPSLN (Bitfield-Mask: 0x07) */ +/* ========================================================= SPBR ========================================================== */ + #define R_SPI0_SPBR_SPR_Pos (0UL) /*!< SPR (Bit 0) */ + #define R_SPI0_SPBR_SPR_Msk (0xffUL) /*!< SPR (Bitfield-Mask: 0xff) */ +/* ========================================================= SPDCR ========================================================= */ + #define R_SPI0_SPDCR_SPBYT_Pos (6UL) /*!< SPBYT (Bit 6) */ + #define R_SPI0_SPDCR_SPBYT_Msk (0x40UL) /*!< SPBYT (Bitfield-Mask: 0x01) */ + #define R_SPI0_SPDCR_SPLW_Pos (5UL) /*!< SPLW (Bit 5) */ + #define R_SPI0_SPDCR_SPLW_Msk (0x20UL) /*!< SPLW (Bitfield-Mask: 0x01) */ + #define R_SPI0_SPDCR_SPRDTD_Pos (4UL) /*!< SPRDTD (Bit 4) */ + #define R_SPI0_SPDCR_SPRDTD_Msk (0x10UL) /*!< SPRDTD (Bitfield-Mask: 0x01) */ + #define R_SPI0_SPDCR_SPFC_Pos (0UL) /*!< SPFC (Bit 0) */ + #define R_SPI0_SPDCR_SPFC_Msk (0x3UL) /*!< SPFC (Bitfield-Mask: 0x03) */ + #define R_SPI0_SPDCR_SLSEL_Pos (2UL) /*!< SLSEL (Bit 2) */ + #define R_SPI0_SPDCR_SLSEL_Msk (0xcUL) /*!< SLSEL (Bitfield-Mask: 0x03) */ +/* ========================================================= SPCKD ========================================================= */ + #define R_SPI0_SPCKD_SCKDL_Pos (0UL) /*!< SCKDL (Bit 0) */ + #define R_SPI0_SPCKD_SCKDL_Msk (0x7UL) /*!< SCKDL (Bitfield-Mask: 0x07) */ +/* ========================================================= SSLND ========================================================= */ + #define R_SPI0_SSLND_SLNDL_Pos (0UL) /*!< SLNDL (Bit 0) */ + #define R_SPI0_SSLND_SLNDL_Msk (0x7UL) /*!< SLNDL (Bitfield-Mask: 0x07) */ +/* ========================================================= SPND ========================================================== */ + #define R_SPI0_SPND_SPNDL_Pos (0UL) /*!< SPNDL (Bit 0) */ + #define R_SPI0_SPND_SPNDL_Msk (0x7UL) /*!< SPNDL (Bitfield-Mask: 0x07) */ +/* ========================================================= SPCR2 ========================================================= */ + #define R_SPI0_SPCR2_SCKASE_Pos (4UL) /*!< SCKASE (Bit 4) */ + #define R_SPI0_SPCR2_SCKASE_Msk (0x10UL) /*!< SCKASE (Bitfield-Mask: 0x01) */ + #define R_SPI0_SPCR2_PTE_Pos (3UL) /*!< PTE (Bit 3) */ + #define R_SPI0_SPCR2_PTE_Msk (0x8UL) /*!< PTE (Bitfield-Mask: 0x01) */ + #define R_SPI0_SPCR2_SPIIE_Pos (2UL) /*!< SPIIE (Bit 2) */ + #define R_SPI0_SPCR2_SPIIE_Msk (0x4UL) /*!< SPIIE (Bitfield-Mask: 0x01) */ + #define R_SPI0_SPCR2_SPOE_Pos (1UL) /*!< SPOE (Bit 1) */ + #define R_SPI0_SPCR2_SPOE_Msk (0x2UL) /*!< SPOE (Bitfield-Mask: 0x01) */ + #define R_SPI0_SPCR2_SPPE_Pos (0UL) /*!< SPPE (Bit 0) */ + #define R_SPI0_SPCR2_SPPE_Msk (0x1UL) /*!< SPPE (Bitfield-Mask: 0x01) */ + #define R_SPI0_SPCR2_SPTDDL_Pos (5UL) /*!< SPTDDL (Bit 5) */ + #define R_SPI0_SPCR2_SPTDDL_Msk (0xe0UL) /*!< SPTDDL (Bitfield-Mask: 0x07) */ +/* ========================================================= SPCMD ========================================================= */ + #define R_SPI0_SPCMD_SCKDEN_Pos (15UL) /*!< SCKDEN (Bit 15) */ + #define R_SPI0_SPCMD_SCKDEN_Msk (0x8000UL) /*!< SCKDEN (Bitfield-Mask: 0x01) */ + #define R_SPI0_SPCMD_SLNDEN_Pos (14UL) /*!< SLNDEN (Bit 14) */ + #define R_SPI0_SPCMD_SLNDEN_Msk (0x4000UL) /*!< SLNDEN (Bitfield-Mask: 0x01) */ + #define R_SPI0_SPCMD_SPNDEN_Pos (13UL) /*!< SPNDEN (Bit 13) */ + #define R_SPI0_SPCMD_SPNDEN_Msk (0x2000UL) /*!< SPNDEN (Bitfield-Mask: 0x01) */ + #define R_SPI0_SPCMD_LSBF_Pos (12UL) /*!< LSBF (Bit 12) */ + #define R_SPI0_SPCMD_LSBF_Msk (0x1000UL) /*!< LSBF (Bitfield-Mask: 0x01) */ + #define R_SPI0_SPCMD_SPB_Pos (8UL) /*!< SPB (Bit 8) */ + #define R_SPI0_SPCMD_SPB_Msk (0xf00UL) /*!< SPB (Bitfield-Mask: 0x0f) */ + #define R_SPI0_SPCMD_SSLKP_Pos (7UL) /*!< SSLKP (Bit 7) */ + #define R_SPI0_SPCMD_SSLKP_Msk (0x80UL) /*!< SSLKP (Bitfield-Mask: 0x01) */ + #define R_SPI0_SPCMD_SSLA_Pos (4UL) /*!< SSLA (Bit 4) */ + #define R_SPI0_SPCMD_SSLA_Msk (0x70UL) /*!< SSLA (Bitfield-Mask: 0x07) */ + #define R_SPI0_SPCMD_BRDV_Pos (2UL) /*!< BRDV (Bit 2) */ + #define R_SPI0_SPCMD_BRDV_Msk (0xcUL) /*!< BRDV (Bitfield-Mask: 0x03) */ + #define R_SPI0_SPCMD_CPOL_Pos (1UL) /*!< CPOL (Bit 1) */ + #define R_SPI0_SPCMD_CPOL_Msk (0x2UL) /*!< CPOL (Bitfield-Mask: 0x01) */ + #define R_SPI0_SPCMD_CPHA_Pos (0UL) /*!< CPHA (Bit 0) */ + #define R_SPI0_SPCMD_CPHA_Msk (0x1UL) /*!< CPHA (Bitfield-Mask: 0x01) */ +/* ======================================================== SPDCR2 ========================================================= */ + #define R_SPI0_SPDCR2_BYSW_Pos (0UL) /*!< BYSW (Bit 0) */ + #define R_SPI0_SPDCR2_BYSW_Msk (0x1UL) /*!< BYSW (Bitfield-Mask: 0x01) */ + #define R_SPI0_SPDCR2_SINV_Pos (1UL) /*!< SINV (Bit 1) */ + #define R_SPI0_SPDCR2_SINV_Msk (0x2UL) /*!< SINV (Bitfield-Mask: 0x01) */ +/* ========================================================= SPSSR ========================================================= */ + #define R_SPI0_SPSSR_SPCP_Pos (0UL) /*!< SPCP (Bit 0) */ + #define R_SPI0_SPSSR_SPCP_Msk (0x7UL) /*!< SPCP (Bitfield-Mask: 0x07) */ + #define R_SPI0_SPSSR_SPECM_Pos (4UL) /*!< SPECM (Bit 4) */ + #define R_SPI0_SPSSR_SPECM_Msk (0x70UL) /*!< SPECM (Bitfield-Mask: 0x07) */ +/* ========================================================= SPCR3 ========================================================= */ + #define R_SPI0_SPCR3_ETXMD_Pos (0UL) /*!< ETXMD (Bit 0) */ + #define R_SPI0_SPCR3_ETXMD_Msk (0x1UL) /*!< ETXMD (Bitfield-Mask: 0x01) */ + #define R_SPI0_SPCR3_BFDS_Pos (1UL) /*!< BFDS (Bit 1) */ + #define R_SPI0_SPCR3_BFDS_Msk (0x2UL) /*!< BFDS (Bitfield-Mask: 0x01) */ + #define R_SPI0_SPCR3_CENDIE_Pos (4UL) /*!< CENDIE (Bit 4) */ + #define R_SPI0_SPCR3_CENDIE_Msk (0x10UL) /*!< CENDIE (Bitfield-Mask: 0x01) */ +/* ========================================================= SPPR ========================================================== */ + #define R_SPI0_SPPR_BUFWID_Pos (4UL) /*!< BUFWID (Bit 4) */ + #define R_SPI0_SPPR_BUFWID_Msk (0x10UL) /*!< BUFWID (Bitfield-Mask: 0x01) */ + #define R_SPI0_SPPR_BUFNUM_Pos (8UL) /*!< BUFNUM (Bit 8) */ + #define R_SPI0_SPPR_BUFNUM_Msk (0x700UL) /*!< BUFNUM (Bitfield-Mask: 0x07) */ + #define R_SPI0_SPPR_CMDNUM_Pos (12UL) /*!< CMDNUM (Bit 12) */ + #define R_SPI0_SPPR_CMDNUM_Msk (0xf000UL) /*!< CMDNUM (Bitfield-Mask: 0x0f) */ + +/* =========================================================================================================================== */ +/* ================ R_SRAM ================ */ +/* =========================================================================================================================== */ + +/* ======================================================= SRAMPRCR ======================================================== */ + #define R_SRAM_SRAMPRCR_PR_Pos (0UL) /*!< PR (Bit 0) */ + #define R_SRAM_SRAMPRCR_PR_Msk (0x1UL) /*!< PR (Bitfield-Mask: 0x01) */ + #define R_SRAM_SRAMPRCR_KW_Pos (8UL) /*!< KW (Bit 8) */ + #define R_SRAM_SRAMPRCR_KW_Msk (0xff00UL) /*!< KW (Bitfield-Mask: 0xff) */ +/* ====================================================== SRAMPRCR_NS ====================================================== */ + #define R_SRAM_SRAMPRCR_NS_PR_Pos (0UL) /*!< PR (Bit 0) */ + #define R_SRAM_SRAMPRCR_NS_PR_Msk (0x1UL) /*!< PR (Bitfield-Mask: 0x01) */ + #define R_SRAM_SRAMPRCR_NS_KW_Pos (8UL) /*!< KW (Bit 8) */ + #define R_SRAM_SRAMPRCR_NS_KW_Msk (0xff00UL) /*!< KW (Bitfield-Mask: 0xff) */ +/* ======================================================= SRAMWTSC ======================================================== */ + #define R_SRAM_SRAMWTSC_WTEN_Pos (0UL) /*!< WTEN (Bit 0) */ + #define R_SRAM_SRAMWTSC_WTEN_Msk (0x1UL) /*!< WTEN (Bitfield-Mask: 0x01) */ +/* ======================================================== SRAMCR0 ======================================================== */ + #define R_SRAM_SRAMCR0_OAD_Pos (0UL) /*!< OAD (Bit 0) */ + #define R_SRAM_SRAMCR0_OAD_Msk (0x1UL) /*!< OAD (Bitfield-Mask: 0x01) */ + #define R_SRAM_SRAMCR0_ECCMOD_Pos (2UL) /*!< ECCMOD (Bit 2) */ + #define R_SRAM_SRAMCR0_ECCMOD_Msk (0xcUL) /*!< ECCMOD (Bitfield-Mask: 0x03) */ + #define R_SRAM_SRAMCR0_E1STSEN_Pos (4UL) /*!< E1STSEN (Bit 4) */ + #define R_SRAM_SRAMCR0_E1STSEN_Msk (0x10UL) /*!< E1STSEN (Bitfield-Mask: 0x01) */ + #define R_SRAM_SRAMCR0_TSTBYP_Pos (7UL) /*!< TSTBYP (Bit 7) */ + #define R_SRAM_SRAMCR0_TSTBYP_Msk (0x80UL) /*!< TSTBYP (Bitfield-Mask: 0x01) */ +/* ======================================================== SRAMCR1 ======================================================== */ + #define R_SRAM_SRAMCR1_OAD_Pos (0UL) /*!< OAD (Bit 0) */ + #define R_SRAM_SRAMCR1_OAD_Msk (0x1UL) /*!< OAD (Bitfield-Mask: 0x01) */ +/* ====================================================== SRAMECCRGN0 ====================================================== */ + #define R_SRAM_SRAMECCRGN0_ECCRGN_Pos (0UL) /*!< ECCRGN (Bit 0) */ + #define R_SRAM_SRAMECCRGN0_ECCRGN_Msk (0x3UL) /*!< ECCRGN (Bitfield-Mask: 0x03) */ +/* ======================================================== SRAMESR ======================================================== */ + #define R_SRAM_SRAMESR_ERR00_Pos (0UL) /*!< ERR00 (Bit 0) */ + #define R_SRAM_SRAMESR_ERR00_Msk (0x1UL) /*!< ERR00 (Bitfield-Mask: 0x01) */ + #define R_SRAM_SRAMESR_ERR01_Pos (1UL) /*!< ERR01 (Bit 1) */ + #define R_SRAM_SRAMESR_ERR01_Msk (0x2UL) /*!< ERR01 (Bitfield-Mask: 0x01) */ + #define R_SRAM_SRAMESR_ERR1_Pos (2UL) /*!< ERR1 (Bit 2) */ + #define R_SRAM_SRAMESR_ERR1_Msk (0x4UL) /*!< ERR1 (Bitfield-Mask: 0x01) */ + #define R_SRAM_SRAMESR_ERRS_Pos (14UL) /*!< ERRS (Bit 14) */ + #define R_SRAM_SRAMESR_ERRS_Msk (0x4000UL) /*!< ERRS (Bitfield-Mask: 0x01) */ +/* ======================================================= SRAMESCLR ======================================================= */ + #define R_SRAM_SRAMESCLR_CLR00_Pos (0UL) /*!< CLR00 (Bit 0) */ + #define R_SRAM_SRAMESCLR_CLR00_Msk (0x1UL) /*!< CLR00 (Bitfield-Mask: 0x01) */ + #define R_SRAM_SRAMESCLR_CLR01_Pos (1UL) /*!< CLR01 (Bit 1) */ + #define R_SRAM_SRAMESCLR_CLR01_Msk (0x2UL) /*!< CLR01 (Bitfield-Mask: 0x01) */ + #define R_SRAM_SRAMESCLR_CLR1_Pos (2UL) /*!< CLR1 (Bit 2) */ + #define R_SRAM_SRAMESCLR_CLR1_Msk (0x4UL) /*!< CLR1 (Bitfield-Mask: 0x01) */ + #define R_SRAM_SRAMESCLR_CLRS_Pos (14UL) /*!< CLRS (Bit 14) */ + #define R_SRAM_SRAMESCLR_CLRS_Msk (0x4000UL) /*!< CLRS (Bitfield-Mask: 0x01) */ +/* ======================================================= SRAMEAR0 ======================================================== */ + #define R_SRAM_SRAMEAR0_EA_Pos (3UL) /*!< EA (Bit 3) */ + #define R_SRAM_SRAMEAR0_EA_Msk (0xffff8UL) /*!< EA (Bitfield-Mask: 0x1ffff) */ +/* ======================================================= SRAMEAR1 ======================================================== */ + #define R_SRAM_SRAMEAR1_EA_Pos (3UL) /*!< EA (Bit 3) */ + #define R_SRAM_SRAMEAR1_EA_Msk (0xffff8UL) /*!< EA (Bitfield-Mask: 0x1ffff) */ +/* ======================================================= SRAMEAR2 ======================================================== */ + #define R_SRAM_SRAMEAR2_EA_Pos (3UL) /*!< EA (Bit 3) */ + #define R_SRAM_SRAMEAR2_EA_Msk (0xffff8UL) /*!< EA (Bitfield-Mask: 0x1ffff) */ +/* ======================================================= STBRAMCR ======================================================== */ + #define R_SRAM_STBRAMCR_OAD_Pos (0UL) /*!< OAD (Bit 0) */ + #define R_SRAM_STBRAMCR_OAD_Msk (0x1UL) /*!< OAD (Bitfield-Mask: 0x01) */ +/* ======================================================= STBRAMEAR ======================================================= */ + #define R_SRAM_STBRAMEAR_EA_Pos (2UL) /*!< EA (Bit 2) */ + #define R_SRAM_STBRAMEAR_EA_Msk (0x3fcUL) /*!< EA (Bitfield-Mask: 0xff) */ + +/* =========================================================================================================================== */ +/* ================ R_SSI0 ================ */ +/* =========================================================================================================================== */ + +/* ========================================================= SSICR ========================================================= */ + #define R_SSI0_SSICR_CKS_Pos (30UL) /*!< CKS (Bit 30) */ + #define R_SSI0_SSICR_CKS_Msk (0x40000000UL) /*!< CKS (Bitfield-Mask: 0x01) */ + #define R_SSI0_SSICR_TUIEN_Pos (29UL) /*!< TUIEN (Bit 29) */ + #define R_SSI0_SSICR_TUIEN_Msk (0x20000000UL) /*!< TUIEN (Bitfield-Mask: 0x01) */ + #define R_SSI0_SSICR_TOIEN_Pos (28UL) /*!< TOIEN (Bit 28) */ + #define R_SSI0_SSICR_TOIEN_Msk (0x10000000UL) /*!< TOIEN (Bitfield-Mask: 0x01) */ + #define R_SSI0_SSICR_RUIEN_Pos (27UL) /*!< RUIEN (Bit 27) */ + #define R_SSI0_SSICR_RUIEN_Msk (0x8000000UL) /*!< RUIEN (Bitfield-Mask: 0x01) */ + #define R_SSI0_SSICR_ROIEN_Pos (26UL) /*!< ROIEN (Bit 26) */ + #define R_SSI0_SSICR_ROIEN_Msk (0x4000000UL) /*!< ROIEN (Bitfield-Mask: 0x01) */ + #define R_SSI0_SSICR_IIEN_Pos (25UL) /*!< IIEN (Bit 25) */ + #define R_SSI0_SSICR_IIEN_Msk (0x2000000UL) /*!< IIEN (Bitfield-Mask: 0x01) */ + #define R_SSI0_SSICR_FRM_Pos (22UL) /*!< FRM (Bit 22) */ + #define R_SSI0_SSICR_FRM_Msk (0xc00000UL) /*!< FRM (Bitfield-Mask: 0x03) */ + #define R_SSI0_SSICR_DWL_Pos (19UL) /*!< DWL (Bit 19) */ + #define R_SSI0_SSICR_DWL_Msk (0x380000UL) /*!< DWL (Bitfield-Mask: 0x07) */ + #define R_SSI0_SSICR_SWL_Pos (16UL) /*!< SWL (Bit 16) */ + #define R_SSI0_SSICR_SWL_Msk (0x70000UL) /*!< SWL (Bitfield-Mask: 0x07) */ + #define R_SSI0_SSICR_MST_Pos (14UL) /*!< MST (Bit 14) */ + #define R_SSI0_SSICR_MST_Msk (0x4000UL) /*!< MST (Bitfield-Mask: 0x01) */ + #define R_SSI0_SSICR_BCKP_Pos (13UL) /*!< BCKP (Bit 13) */ + #define R_SSI0_SSICR_BCKP_Msk (0x2000UL) /*!< BCKP (Bitfield-Mask: 0x01) */ + #define R_SSI0_SSICR_LRCKP_Pos (12UL) /*!< LRCKP (Bit 12) */ + #define R_SSI0_SSICR_LRCKP_Msk (0x1000UL) /*!< LRCKP (Bitfield-Mask: 0x01) */ + #define R_SSI0_SSICR_SPDP_Pos (11UL) /*!< SPDP (Bit 11) */ + #define R_SSI0_SSICR_SPDP_Msk (0x800UL) /*!< SPDP (Bitfield-Mask: 0x01) */ + #define R_SSI0_SSICR_SDTA_Pos (10UL) /*!< SDTA (Bit 10) */ + #define R_SSI0_SSICR_SDTA_Msk (0x400UL) /*!< SDTA (Bitfield-Mask: 0x01) */ + #define R_SSI0_SSICR_PDTA_Pos (9UL) /*!< PDTA (Bit 9) */ + #define R_SSI0_SSICR_PDTA_Msk (0x200UL) /*!< PDTA (Bitfield-Mask: 0x01) */ + #define R_SSI0_SSICR_DEL_Pos (8UL) /*!< DEL (Bit 8) */ + #define R_SSI0_SSICR_DEL_Msk (0x100UL) /*!< DEL (Bitfield-Mask: 0x01) */ + #define R_SSI0_SSICR_CKDV_Pos (4UL) /*!< CKDV (Bit 4) */ + #define R_SSI0_SSICR_CKDV_Msk (0xf0UL) /*!< CKDV (Bitfield-Mask: 0x0f) */ + #define R_SSI0_SSICR_MUEN_Pos (3UL) /*!< MUEN (Bit 3) */ + #define R_SSI0_SSICR_MUEN_Msk (0x8UL) /*!< MUEN (Bitfield-Mask: 0x01) */ + #define R_SSI0_SSICR_TEN_Pos (1UL) /*!< TEN (Bit 1) */ + #define R_SSI0_SSICR_TEN_Msk (0x2UL) /*!< TEN (Bitfield-Mask: 0x01) */ + #define R_SSI0_SSICR_REN_Pos (0UL) /*!< REN (Bit 0) */ + #define R_SSI0_SSICR_REN_Msk (0x1UL) /*!< REN (Bitfield-Mask: 0x01) */ +/* ========================================================= SSISR ========================================================= */ + #define R_SSI0_SSISR_TUIRQ_Pos (29UL) /*!< TUIRQ (Bit 29) */ + #define R_SSI0_SSISR_TUIRQ_Msk (0x20000000UL) /*!< TUIRQ (Bitfield-Mask: 0x01) */ + #define R_SSI0_SSISR_TOIRQ_Pos (28UL) /*!< TOIRQ (Bit 28) */ + #define R_SSI0_SSISR_TOIRQ_Msk (0x10000000UL) /*!< TOIRQ (Bitfield-Mask: 0x01) */ + #define R_SSI0_SSISR_RUIRQ_Pos (27UL) /*!< RUIRQ (Bit 27) */ + #define R_SSI0_SSISR_RUIRQ_Msk (0x8000000UL) /*!< RUIRQ (Bitfield-Mask: 0x01) */ + #define R_SSI0_SSISR_ROIRQ_Pos (26UL) /*!< ROIRQ (Bit 26) */ + #define R_SSI0_SSISR_ROIRQ_Msk (0x4000000UL) /*!< ROIRQ (Bitfield-Mask: 0x01) */ + #define R_SSI0_SSISR_IIRQ_Pos (25UL) /*!< IIRQ (Bit 25) */ + #define R_SSI0_SSISR_IIRQ_Msk (0x2000000UL) /*!< IIRQ (Bitfield-Mask: 0x01) */ + #define R_SSI0_SSISR_TCHNO_Pos (5UL) /*!< TCHNO (Bit 5) */ + #define R_SSI0_SSISR_TCHNO_Msk (0x60UL) /*!< TCHNO (Bitfield-Mask: 0x03) */ + #define R_SSI0_SSISR_TSWNO_Pos (4UL) /*!< TSWNO (Bit 4) */ + #define R_SSI0_SSISR_TSWNO_Msk (0x10UL) /*!< TSWNO (Bitfield-Mask: 0x01) */ + #define R_SSI0_SSISR_RCHNO_Pos (2UL) /*!< RCHNO (Bit 2) */ + #define R_SSI0_SSISR_RCHNO_Msk (0xcUL) /*!< RCHNO (Bitfield-Mask: 0x03) */ + #define R_SSI0_SSISR_RSWNO_Pos (1UL) /*!< RSWNO (Bit 1) */ + #define R_SSI0_SSISR_RSWNO_Msk (0x2UL) /*!< RSWNO (Bitfield-Mask: 0x01) */ + #define R_SSI0_SSISR_IDST_Pos (0UL) /*!< IDST (Bit 0) */ + #define R_SSI0_SSISR_IDST_Msk (0x1UL) /*!< IDST (Bitfield-Mask: 0x01) */ +/* ======================================================== SSIFCR ========================================================= */ + #define R_SSI0_SSIFCR_AUCKE_Pos (31UL) /*!< AUCKE (Bit 31) */ + #define R_SSI0_SSIFCR_AUCKE_Msk (0x80000000UL) /*!< AUCKE (Bitfield-Mask: 0x01) */ + #define R_SSI0_SSIFCR_SSIRST_Pos (16UL) /*!< SSIRST (Bit 16) */ + #define R_SSI0_SSIFCR_SSIRST_Msk (0x10000UL) /*!< SSIRST (Bitfield-Mask: 0x01) */ + #define R_SSI0_SSIFCR_TTRG_Pos (6UL) /*!< TTRG (Bit 6) */ + #define R_SSI0_SSIFCR_TTRG_Msk (0xc0UL) /*!< TTRG (Bitfield-Mask: 0x03) */ + #define R_SSI0_SSIFCR_RTRG_Pos (4UL) /*!< RTRG (Bit 4) */ + #define R_SSI0_SSIFCR_RTRG_Msk (0x30UL) /*!< RTRG (Bitfield-Mask: 0x03) */ + #define R_SSI0_SSIFCR_TIE_Pos (3UL) /*!< TIE (Bit 3) */ + #define R_SSI0_SSIFCR_TIE_Msk (0x8UL) /*!< TIE (Bitfield-Mask: 0x01) */ + #define R_SSI0_SSIFCR_RIE_Pos (2UL) /*!< RIE (Bit 2) */ + #define R_SSI0_SSIFCR_RIE_Msk (0x4UL) /*!< RIE (Bitfield-Mask: 0x01) */ + #define R_SSI0_SSIFCR_TFRST_Pos (1UL) /*!< TFRST (Bit 1) */ + #define R_SSI0_SSIFCR_TFRST_Msk (0x2UL) /*!< TFRST (Bitfield-Mask: 0x01) */ + #define R_SSI0_SSIFCR_RFRST_Pos (0UL) /*!< RFRST (Bit 0) */ + #define R_SSI0_SSIFCR_RFRST_Msk (0x1UL) /*!< RFRST (Bitfield-Mask: 0x01) */ + #define R_SSI0_SSIFCR_BSW_Pos (11UL) /*!< BSW (Bit 11) */ + #define R_SSI0_SSIFCR_BSW_Msk (0x800UL) /*!< BSW (Bitfield-Mask: 0x01) */ +/* ======================================================== SSIFSR ========================================================= */ + #define R_SSI0_SSIFSR_TDC_Pos (24UL) /*!< TDC (Bit 24) */ + #define R_SSI0_SSIFSR_TDC_Msk (0x3f000000UL) /*!< TDC (Bitfield-Mask: 0x3f) */ + #define R_SSI0_SSIFSR_TDE_Pos (16UL) /*!< TDE (Bit 16) */ + #define R_SSI0_SSIFSR_TDE_Msk (0x10000UL) /*!< TDE (Bitfield-Mask: 0x01) */ + #define R_SSI0_SSIFSR_RDC_Pos (8UL) /*!< RDC (Bit 8) */ + #define R_SSI0_SSIFSR_RDC_Msk (0x3f00UL) /*!< RDC (Bitfield-Mask: 0x3f) */ + #define R_SSI0_SSIFSR_RDF_Pos (0UL) /*!< RDF (Bit 0) */ + #define R_SSI0_SSIFSR_RDF_Msk (0x1UL) /*!< RDF (Bitfield-Mask: 0x01) */ +/* ======================================================== SSIFTDR ======================================================== */ + #define R_SSI0_SSIFTDR_SSIFTDR_Pos (0UL) /*!< SSIFTDR (Bit 0) */ + #define R_SSI0_SSIFTDR_SSIFTDR_Msk (0xffffffffUL) /*!< SSIFTDR (Bitfield-Mask: 0xffffffff) */ +/* ======================================================= SSIFTDR16 ======================================================= */ +/* ======================================================= SSIFTDR8 ======================================================== */ +/* ======================================================== SSIFRDR ======================================================== */ + #define R_SSI0_SSIFRDR_SSIFRDR_Pos (0UL) /*!< SSIFRDR (Bit 0) */ + #define R_SSI0_SSIFRDR_SSIFRDR_Msk (0xffffffffUL) /*!< SSIFRDR (Bitfield-Mask: 0xffffffff) */ +/* ======================================================= SSIFRDR16 ======================================================= */ +/* ======================================================= SSIFRDR8 ======================================================== */ +/* ======================================================== SSIOFR ========================================================= */ + #define R_SSI0_SSIOFR_BCKASTP_Pos (9UL) /*!< BCKASTP (Bit 9) */ + #define R_SSI0_SSIOFR_BCKASTP_Msk (0x200UL) /*!< BCKASTP (Bitfield-Mask: 0x01) */ + #define R_SSI0_SSIOFR_LRCONT_Pos (8UL) /*!< LRCONT (Bit 8) */ + #define R_SSI0_SSIOFR_LRCONT_Msk (0x100UL) /*!< LRCONT (Bitfield-Mask: 0x01) */ + #define R_SSI0_SSIOFR_OMOD_Pos (0UL) /*!< OMOD (Bit 0) */ + #define R_SSI0_SSIOFR_OMOD_Msk (0x3UL) /*!< OMOD (Bitfield-Mask: 0x03) */ +/* ======================================================== SSISCR ========================================================= */ + #define R_SSI0_SSISCR_TDES_Pos (8UL) /*!< TDES (Bit 8) */ + #define R_SSI0_SSISCR_TDES_Msk (0x1f00UL) /*!< TDES (Bitfield-Mask: 0x1f) */ + #define R_SSI0_SSISCR_RDFS_Pos (0UL) /*!< RDFS (Bit 0) */ + #define R_SSI0_SSISCR_RDFS_Msk (0x1fUL) /*!< RDFS (Bitfield-Mask: 0x1f) */ + +/* =========================================================================================================================== */ +/* ================ R_SYSTEM ================ */ +/* =========================================================================================================================== */ + +/* ========================================================= SBYCR ========================================================= */ + #define R_SYSTEM_SBYCR_OPE_Pos (6UL) /*!< OPE (Bit 6) */ + #define R_SYSTEM_SBYCR_OPE_Msk (0x40UL) /*!< OPE (Bitfield-Mask: 0x01) */ +/* ========================================================= SSCR2 ========================================================= */ + #define R_SYSTEM_SSCR2_SS1RSF_Pos (0UL) /*!< SS1RSF (Bit 0) */ + #define R_SYSTEM_SSCR2_SS1RSF_Msk (0x1UL) /*!< SS1RSF (Bitfield-Mask: 0x01) */ +/* ========================================================= FLSCR ========================================================= */ + #define R_SYSTEM_FLSCR_FLSWCF_Pos (0UL) /*!< FLSWCF (Bit 0) */ + #define R_SYSTEM_FLSCR_FLSWCF_Msk (0x1UL) /*!< FLSWCF (Bitfield-Mask: 0x01) */ +/* ======================================================== MSTPCRA ======================================================== */ + #define R_SYSTEM_MSTPCRA_MSTPA_Pos (0UL) /*!< MSTPA (Bit 0) */ + #define R_SYSTEM_MSTPCRA_MSTPA_Msk (0x1UL) /*!< MSTPA (Bitfield-Mask: 0x01) */ +/* ======================================================= SCKDIVCR ======================================================== */ + #define R_SYSTEM_SCKDIVCR_FCK_Pos (28UL) /*!< FCK (Bit 28) */ + #define R_SYSTEM_SCKDIVCR_FCK_Msk (0xf0000000UL) /*!< FCK (Bitfield-Mask: 0x0f) */ + #define R_SYSTEM_SCKDIVCR_ICK_Pos (24UL) /*!< ICK (Bit 24) */ + #define R_SYSTEM_SCKDIVCR_ICK_Msk (0xf000000UL) /*!< ICK (Bitfield-Mask: 0x0f) */ + #define R_SYSTEM_SCKDIVCR_PCKE_Pos (20UL) /*!< PCKE (Bit 20) */ + #define R_SYSTEM_SCKDIVCR_PCKE_Msk (0xf00000UL) /*!< PCKE (Bitfield-Mask: 0x0f) */ + #define R_SYSTEM_SCKDIVCR_BCK_Pos (16UL) /*!< BCK (Bit 16) */ + #define R_SYSTEM_SCKDIVCR_BCK_Msk (0xf0000UL) /*!< BCK (Bitfield-Mask: 0x0f) */ + #define R_SYSTEM_SCKDIVCR_PCKA_Pos (12UL) /*!< PCKA (Bit 12) */ + #define R_SYSTEM_SCKDIVCR_PCKA_Msk (0xf000UL) /*!< PCKA (Bitfield-Mask: 0x0f) */ + #define R_SYSTEM_SCKDIVCR_PCKB_Pos (8UL) /*!< PCKB (Bit 8) */ + #define R_SYSTEM_SCKDIVCR_PCKB_Msk (0xf00UL) /*!< PCKB (Bitfield-Mask: 0x0f) */ + #define R_SYSTEM_SCKDIVCR_PCKC_Pos (4UL) /*!< PCKC (Bit 4) */ + #define R_SYSTEM_SCKDIVCR_PCKC_Msk (0xf0UL) /*!< PCKC (Bitfield-Mask: 0x0f) */ + #define R_SYSTEM_SCKDIVCR_PCKD_Pos (0UL) /*!< PCKD (Bit 0) */ + #define R_SYSTEM_SCKDIVCR_PCKD_Msk (0xfUL) /*!< PCKD (Bitfield-Mask: 0x0f) */ +/* ======================================================= SCKDIVCR2 ======================================================= */ + #define R_SYSTEM_SCKDIVCR2_CPUCK_Pos (0UL) /*!< CPUCK (Bit 0) */ + #define R_SYSTEM_SCKDIVCR2_CPUCK_Msk (0xfUL) /*!< CPUCK (Bitfield-Mask: 0x0f) */ +/* ======================================================== SCKSCR ========================================================= */ + #define R_SYSTEM_SCKSCR_CKSEL_Pos (0UL) /*!< CKSEL (Bit 0) */ + #define R_SYSTEM_SCKSCR_CKSEL_Msk (0x7UL) /*!< CKSEL (Bitfield-Mask: 0x07) */ +/* ======================================================== PLLCCR ========================================================= */ + #define R_SYSTEM_PLLCCR_PLIDIV_Pos (0UL) /*!< PLIDIV (Bit 0) */ + #define R_SYSTEM_PLLCCR_PLIDIV_Msk (0x3UL) /*!< PLIDIV (Bitfield-Mask: 0x03) */ + #define R_SYSTEM_PLLCCR_PLSRCSEL_Pos (4UL) /*!< PLSRCSEL (Bit 4) */ + #define R_SYSTEM_PLLCCR_PLSRCSEL_Msk (0x10UL) /*!< PLSRCSEL (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_PLLCCR_PLLMULNF_Pos (6UL) /*!< PLLMULNF (Bit 6) */ + #define R_SYSTEM_PLLCCR_PLLMULNF_Msk (0xc0UL) /*!< PLLMULNF (Bitfield-Mask: 0x03) */ + #define R_SYSTEM_PLLCCR_PLLMUL_Pos (8UL) /*!< PLLMUL (Bit 8) */ + #define R_SYSTEM_PLLCCR_PLLMUL_Msk (0xff00UL) /*!< PLLMUL (Bitfield-Mask: 0xff) */ +/* ========================================================= PLLCR ========================================================= */ + #define R_SYSTEM_PLLCR_PLLSTP_Pos (0UL) /*!< PLLSTP (Bit 0) */ + #define R_SYSTEM_PLLCR_PLLSTP_Msk (0x1UL) /*!< PLLSTP (Bitfield-Mask: 0x01) */ +/* ========================================================= BCKCR ========================================================= */ + #define R_SYSTEM_BCKCR_BCLKDIV_Pos (0UL) /*!< BCLKDIV (Bit 0) */ + #define R_SYSTEM_BCKCR_BCLKDIV_Msk (0x1UL) /*!< BCLKDIV (Bitfield-Mask: 0x01) */ +/* ======================================================== MOSCCR ========================================================= */ + #define R_SYSTEM_MOSCCR_MOSTP_Pos (0UL) /*!< MOSTP (Bit 0) */ + #define R_SYSTEM_MOSCCR_MOSTP_Msk (0x1UL) /*!< MOSTP (Bitfield-Mask: 0x01) */ +/* ======================================================== HOCOCR ========================================================= */ + #define R_SYSTEM_HOCOCR_HCSTP_Pos (0UL) /*!< HCSTP (Bit 0) */ + #define R_SYSTEM_HOCOCR_HCSTP_Msk (0x1UL) /*!< HCSTP (Bitfield-Mask: 0x01) */ +/* ======================================================== MOCOCR ========================================================= */ + #define R_SYSTEM_MOCOCR_MCSTP_Pos (0UL) /*!< MCSTP (Bit 0) */ + #define R_SYSTEM_MOCOCR_MCSTP_Msk (0x1UL) /*!< MCSTP (Bitfield-Mask: 0x01) */ +/* ======================================================== FLLCR1 ========================================================= */ + #define R_SYSTEM_FLLCR1_FLLEN_Pos (0UL) /*!< FLLEN (Bit 0) */ + #define R_SYSTEM_FLLCR1_FLLEN_Msk (0x1UL) /*!< FLLEN (Bitfield-Mask: 0x01) */ +/* ======================================================== FLLCR2 ========================================================= */ + #define R_SYSTEM_FLLCR2_FLLCNTL_Pos (0UL) /*!< FLLCNTL (Bit 0) */ + #define R_SYSTEM_FLLCR2_FLLCNTL_Msk (0x7ffUL) /*!< FLLCNTL (Bitfield-Mask: 0x7ff) */ +/* ========================================================= OSCSF ========================================================= */ + #define R_SYSTEM_OSCSF_HOCOSF_Pos (0UL) /*!< HOCOSF (Bit 0) */ + #define R_SYSTEM_OSCSF_HOCOSF_Msk (0x1UL) /*!< HOCOSF (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_OSCSF_MOSCSF_Pos (3UL) /*!< MOSCSF (Bit 3) */ + #define R_SYSTEM_OSCSF_MOSCSF_Msk (0x8UL) /*!< MOSCSF (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_OSCSF_PLLSF_Pos (5UL) /*!< PLLSF (Bit 5) */ + #define R_SYSTEM_OSCSF_PLLSF_Msk (0x20UL) /*!< PLLSF (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_OSCSF_PLL2SF_Pos (6UL) /*!< PLL2SF (Bit 6) */ + #define R_SYSTEM_OSCSF_PLL2SF_Msk (0x40UL) /*!< PLL2SF (Bitfield-Mask: 0x01) */ +/* ========================================================= CKOCR ========================================================= */ + #define R_SYSTEM_CKOCR_CKODIV_Pos (4UL) /*!< CKODIV (Bit 4) */ + #define R_SYSTEM_CKOCR_CKODIV_Msk (0x70UL) /*!< CKODIV (Bitfield-Mask: 0x07) */ + #define R_SYSTEM_CKOCR_CKOEN_Pos (7UL) /*!< CKOEN (Bit 7) */ + #define R_SYSTEM_CKOCR_CKOEN_Msk (0x80UL) /*!< CKOEN (Bitfield-Mask: 0x01) */ +/* ======================================================== TRCKCR ========================================================= */ + #define R_SYSTEM_TRCKCR_TRCK_Pos (0UL) /*!< TRCK (Bit 0) */ + #define R_SYSTEM_TRCKCR_TRCK_Msk (0xfUL) /*!< TRCK (Bitfield-Mask: 0x0f) */ + #define R_SYSTEM_TRCKCR_TRCKSEL_Pos (4UL) /*!< TRCKSEL (Bit 4) */ + #define R_SYSTEM_TRCKCR_TRCKSEL_Msk (0x10UL) /*!< TRCKSEL (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_TRCKCR_TRCKEN_Pos (7UL) /*!< TRCKEN (Bit 7) */ + #define R_SYSTEM_TRCKCR_TRCKEN_Msk (0x80UL) /*!< TRCKEN (Bitfield-Mask: 0x01) */ +/* ======================================================== OSTDCR ========================================================= */ + #define R_SYSTEM_OSTDCR_OSTDIE_Pos (0UL) /*!< OSTDIE (Bit 0) */ + #define R_SYSTEM_OSTDCR_OSTDIE_Msk (0x1UL) /*!< OSTDIE (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_OSTDCR_OSTDE_Pos (7UL) /*!< OSTDE (Bit 7) */ + #define R_SYSTEM_OSTDCR_OSTDE_Msk (0x80UL) /*!< OSTDE (Bitfield-Mask: 0x01) */ +/* ======================================================== OSTDSR ========================================================= */ + #define R_SYSTEM_OSTDSR_OSTDF_Pos (0UL) /*!< OSTDF (Bit 0) */ + #define R_SYSTEM_OSTDSR_OSTDF_Msk (0x1UL) /*!< OSTDF (Bitfield-Mask: 0x01) */ +/* ======================================================== OSCMONR ======================================================== */ + #define R_SYSTEM_OSCMONR_MOCOMON_Pos (1UL) /*!< MOCOMON (Bit 1) */ + #define R_SYSTEM_OSCMONR_MOCOMON_Msk (0x2UL) /*!< MOCOMON (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_OSCMONR_LOCOMON_Pos (2UL) /*!< LOCOMON (Bit 2) */ + #define R_SYSTEM_OSCMONR_LOCOMON_Msk (0x4UL) /*!< LOCOMON (Bitfield-Mask: 0x01) */ +/* ======================================================== PLL2CCR ======================================================== */ + #define R_SYSTEM_PLL2CCR_PL2IDIV_Pos (0UL) /*!< PL2IDIV (Bit 0) */ + #define R_SYSTEM_PLL2CCR_PL2IDIV_Msk (0x3UL) /*!< PL2IDIV (Bitfield-Mask: 0x03) */ + #define R_SYSTEM_PLL2CCR_PL2SRCSEL_Pos (4UL) /*!< PL2SRCSEL (Bit 4) */ + #define R_SYSTEM_PLL2CCR_PL2SRCSEL_Msk (0x10UL) /*!< PL2SRCSEL (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_PLL2CCR_PLL2MULNF_Pos (6UL) /*!< PLL2MULNF (Bit 6) */ + #define R_SYSTEM_PLL2CCR_PLL2MULNF_Msk (0xc0UL) /*!< PLL2MULNF (Bitfield-Mask: 0x03) */ + #define R_SYSTEM_PLL2CCR_PLL2MUL_Pos (8UL) /*!< PLL2MUL (Bit 8) */ + #define R_SYSTEM_PLL2CCR_PLL2MUL_Msk (0xff00UL) /*!< PLL2MUL (Bitfield-Mask: 0xff) */ +/* ======================================================== PLL2CR ========================================================= */ + #define R_SYSTEM_PLL2CR_PLL2STP_Pos (0UL) /*!< PLL2STP (Bit 0) */ + #define R_SYSTEM_PLL2CR_PLL2STP_Msk (0x1UL) /*!< PLL2STP (Bitfield-Mask: 0x01) */ +/* ======================================================== PLLCCR2 ======================================================== */ + #define R_SYSTEM_PLLCCR2_PLODIVP_Pos (0UL) /*!< PLODIVP (Bit 0) */ + #define R_SYSTEM_PLLCCR2_PLODIVP_Msk (0xfUL) /*!< PLODIVP (Bitfield-Mask: 0x0f) */ + #define R_SYSTEM_PLLCCR2_PLODIVQ_Pos (4UL) /*!< PLODIVQ (Bit 4) */ + #define R_SYSTEM_PLLCCR2_PLODIVQ_Msk (0xf0UL) /*!< PLODIVQ (Bitfield-Mask: 0x0f) */ + #define R_SYSTEM_PLLCCR2_PLODIVR_Pos (8UL) /*!< PLODIVR (Bit 8) */ + #define R_SYSTEM_PLLCCR2_PLODIVR_Msk (0xf00UL) /*!< PLODIVR (Bitfield-Mask: 0x0f) */ +/* ======================================================= PLL2CCR2 ======================================================== */ + #define R_SYSTEM_PLL2CCR2_PL2ODIVP_Pos (0UL) /*!< PL2ODIVP (Bit 0) */ + #define R_SYSTEM_PLL2CCR2_PL2ODIVP_Msk (0xfUL) /*!< PL2ODIVP (Bitfield-Mask: 0x0f) */ + #define R_SYSTEM_PLL2CCR2_PL2ODIVQ_Pos (4UL) /*!< PL2ODIVQ (Bit 4) */ + #define R_SYSTEM_PLL2CCR2_PL2ODIVQ_Msk (0xf0UL) /*!< PL2ODIVQ (Bitfield-Mask: 0x0f) */ + #define R_SYSTEM_PLL2CCR2_PL2ODIVR_Pos (8UL) /*!< PL2ODIVR (Bit 8) */ + #define R_SYSTEM_PLL2CCR2_PL2ODIVR_Msk (0xf00UL) /*!< PL2ODIVR (Bitfield-Mask: 0x0f) */ +/* ======================================================== EBCKOCR ======================================================== */ + #define R_SYSTEM_EBCKOCR_EBCKOEN_Pos (0UL) /*!< EBCKOEN (Bit 0) */ + #define R_SYSTEM_EBCKOCR_EBCKOEN_Msk (0x1UL) /*!< EBCKOEN (Bitfield-Mask: 0x01) */ +/* ======================================================== SDCKOCR ======================================================== */ + #define R_SYSTEM_SDCKOCR_SDCKOEN_Pos (0UL) /*!< SDCKOEN (Bit 0) */ + #define R_SYSTEM_SDCKOCR_SDCKOEN_Msk (0x1UL) /*!< SDCKOEN (Bitfield-Mask: 0x01) */ +/* ====================================================== SCICKDIVCR ======================================================= */ + #define R_SYSTEM_SCICKDIVCR_CKDIV_Pos (0UL) /*!< CKDIV (Bit 0) */ + #define R_SYSTEM_SCICKDIVCR_CKDIV_Msk (0x7UL) /*!< CKDIV (Bitfield-Mask: 0x07) */ +/* ======================================================== SCICKCR ======================================================== */ + #define R_SYSTEM_SCICKCR_SCICKSEL_Pos (0UL) /*!< SCICKSEL (Bit 0) */ + #define R_SYSTEM_SCICKCR_SCICKSEL_Msk (0xfUL) /*!< SCICKSEL (Bitfield-Mask: 0x0f) */ + #define R_SYSTEM_SCICKCR_CKSREQ_Pos (6UL) /*!< CKSREQ (Bit 6) */ + #define R_SYSTEM_SCICKCR_CKSREQ_Msk (0x40UL) /*!< CKSREQ (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_SCICKCR_CKSRDY_Pos (7UL) /*!< CKSRDY (Bit 7) */ + #define R_SYSTEM_SCICKCR_CKSRDY_Msk (0x80UL) /*!< CKSRDY (Bitfield-Mask: 0x01) */ +/* ====================================================== SPICKDIVCR ======================================================= */ + #define R_SYSTEM_SPICKDIVCR_CKDIV_Pos (0UL) /*!< CKDIV (Bit 0) */ + #define R_SYSTEM_SPICKDIVCR_CKDIV_Msk (0x7UL) /*!< CKDIV (Bitfield-Mask: 0x07) */ +/* ======================================================== SPICKCR ======================================================== */ + #define R_SYSTEM_SPICKCR_CKSEL_Pos (0UL) /*!< CKSEL (Bit 0) */ + #define R_SYSTEM_SPICKCR_CKSEL_Msk (0xfUL) /*!< CKSEL (Bitfield-Mask: 0x0f) */ + #define R_SYSTEM_SPICKCR_CKSREQ_Pos (6UL) /*!< CKSREQ (Bit 6) */ + #define R_SYSTEM_SPICKCR_CKSREQ_Msk (0x40UL) /*!< CKSREQ (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_SPICKCR_CKSRDY_Pos (7UL) /*!< CKSRDY (Bit 7) */ + #define R_SYSTEM_SPICKCR_CKSRDY_Msk (0x80UL) /*!< CKSRDY (Bitfield-Mask: 0x01) */ +/* ====================================================== ADCCKDIVCR ======================================================= */ + #define R_SYSTEM_ADCCKDIVCR_CKDIV_Pos (0UL) /*!< CKDIV (Bit 0) */ + #define R_SYSTEM_ADCCKDIVCR_CKDIV_Msk (0x7UL) /*!< CKDIV (Bitfield-Mask: 0x07) */ +/* ======================================================== ADCCKCR ======================================================== */ + #define R_SYSTEM_ADCCKCR_CKSEL_Pos (0UL) /*!< CKSEL (Bit 0) */ + #define R_SYSTEM_ADCCKCR_CKSEL_Msk (0xfUL) /*!< CKSEL (Bitfield-Mask: 0x0f) */ + #define R_SYSTEM_ADCCKCR_CKSREQ_Pos (6UL) /*!< CKSREQ (Bit 6) */ + #define R_SYSTEM_ADCCKCR_CKSREQ_Msk (0x40UL) /*!< CKSREQ (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_ADCCKCR_CKSRDY_Pos (7UL) /*!< CKSRDY (Bit 7) */ + #define R_SYSTEM_ADCCKCR_CKSRDY_Msk (0x80UL) /*!< CKSRDY (Bitfield-Mask: 0x01) */ +/* ====================================================== GPTCKDIVCR ======================================================= */ + #define R_SYSTEM_GPTCKDIVCR_CKDIV_Pos (0UL) /*!< CKDIV (Bit 0) */ + #define R_SYSTEM_GPTCKDIVCR_CKDIV_Msk (0x7UL) /*!< CKDIV (Bitfield-Mask: 0x07) */ +/* ======================================================== GPTCKCR ======================================================== */ + #define R_SYSTEM_GPTCKCR_CKSEL_Pos (0UL) /*!< CKSEL (Bit 0) */ + #define R_SYSTEM_GPTCKCR_CKSEL_Msk (0xfUL) /*!< CKSEL (Bitfield-Mask: 0x0f) */ + #define R_SYSTEM_GPTCKCR_CKSREQ_Pos (6UL) /*!< CKSREQ (Bit 6) */ + #define R_SYSTEM_GPTCKCR_CKSREQ_Msk (0x40UL) /*!< CKSREQ (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_GPTCKCR_CKSRDY_Pos (7UL) /*!< CKSRDY (Bit 7) */ + #define R_SYSTEM_GPTCKCR_CKSRDY_Msk (0x80UL) /*!< CKSRDY (Bitfield-Mask: 0x01) */ +/* ====================================================== LCDCKDIVCR ======================================================= */ + #define R_SYSTEM_LCDCKDIVCR_CKDIV_Pos (0UL) /*!< CKDIV (Bit 0) */ + #define R_SYSTEM_LCDCKDIVCR_CKDIV_Msk (0x7UL) /*!< CKDIV (Bitfield-Mask: 0x07) */ +/* ======================================================== LCDCKCR ======================================================== */ + #define R_SYSTEM_LCDCKCR_CKSEL_Pos (0UL) /*!< CKSEL (Bit 0) */ + #define R_SYSTEM_LCDCKCR_CKSEL_Msk (0xfUL) /*!< CKSEL (Bitfield-Mask: 0x0f) */ + #define R_SYSTEM_LCDCKCR_CKSREQ_Pos (6UL) /*!< CKSREQ (Bit 6) */ + #define R_SYSTEM_LCDCKCR_CKSREQ_Msk (0x40UL) /*!< CKSREQ (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_LCDCKCR_CKSRDY_Pos (7UL) /*!< CKSRDY (Bit 7) */ + #define R_SYSTEM_LCDCKCR_CKSRDY_Msk (0x80UL) /*!< CKSRDY (Bitfield-Mask: 0x01) */ +/* ======================================================= MOCOUTCR ======================================================== */ + #define R_SYSTEM_MOCOUTCR_MOCOUTRM_Pos (0UL) /*!< MOCOUTRM (Bit 0) */ + #define R_SYSTEM_MOCOUTCR_MOCOUTRM_Msk (0xffUL) /*!< MOCOUTRM (Bitfield-Mask: 0xff) */ +/* ======================================================= HOCOUTCR ======================================================== */ + #define R_SYSTEM_HOCOUTCR_HOCOUTRM_Pos (0UL) /*!< HOCOUTRM (Bit 0) */ + #define R_SYSTEM_HOCOUTCR_HOCOUTRM_Msk (0xffUL) /*!< HOCOUTRM (Bitfield-Mask: 0xff) */ +/* ====================================================== USBCKDIVCR ======================================================= */ + #define R_SYSTEM_USBCKDIVCR_USBCKDIV_Pos (0UL) /*!< USBCKDIV (Bit 0) */ + #define R_SYSTEM_USBCKDIVCR_USBCKDIV_Msk (0x7UL) /*!< USBCKDIV (Bitfield-Mask: 0x07) */ +/* ====================================================== OCTACKDIVCR ====================================================== */ + #define R_SYSTEM_OCTACKDIVCR_OCTACKDIV_Pos (0UL) /*!< OCTACKDIV (Bit 0) */ + #define R_SYSTEM_OCTACKDIVCR_OCTACKDIV_Msk (0x7UL) /*!< OCTACKDIV (Bitfield-Mask: 0x07) */ +/* ===================================================== CANFDCKDIVCR ====================================================== */ + #define R_SYSTEM_CANFDCKDIVCR_CANFDCKDIV_Pos (0UL) /*!< CANFDCKDIV (Bit 0) */ + #define R_SYSTEM_CANFDCKDIVCR_CANFDCKDIV_Msk (0x7UL) /*!< CANFDCKDIV (Bitfield-Mask: 0x07) */ +/* ===================================================== USB60CKDIVCR ====================================================== */ + #define R_SYSTEM_USB60CKDIVCR_USB60CKDIV_Pos (0UL) /*!< USB60CKDIV (Bit 0) */ + #define R_SYSTEM_USB60CKDIVCR_USB60CKDIV_Msk (0x7UL) /*!< USB60CKDIV (Bitfield-Mask: 0x07) */ +/* ====================================================== I3CCKDIVCR ======================================================= */ + #define R_SYSTEM_I3CCKDIVCR_I3CCKDIV_Pos (0UL) /*!< I3CCKDIV (Bit 0) */ + #define R_SYSTEM_I3CCKDIVCR_I3CCKDIV_Msk (0x7UL) /*!< I3CCKDIV (Bitfield-Mask: 0x07) */ +/* ======================================================== USBCKCR ======================================================== */ + #define R_SYSTEM_USBCKCR_USBCKSEL_Pos (0UL) /*!< USBCKSEL (Bit 0) */ + #define R_SYSTEM_USBCKCR_USBCKSEL_Msk (0xfUL) /*!< USBCKSEL (Bitfield-Mask: 0x0f) */ + #define R_SYSTEM_USBCKCR_USBCKSREQ_Pos (6UL) /*!< USBCKSREQ (Bit 6) */ + #define R_SYSTEM_USBCKCR_USBCKSREQ_Msk (0x40UL) /*!< USBCKSREQ (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_USBCKCR_USBCKSRDY_Pos (7UL) /*!< USBCKSRDY (Bit 7) */ + #define R_SYSTEM_USBCKCR_USBCKSRDY_Msk (0x80UL) /*!< USBCKSRDY (Bitfield-Mask: 0x01) */ +/* ======================================================= OCTACKCR ======================================================== */ + #define R_SYSTEM_OCTACKCR_OCTACKSEL_Pos (0UL) /*!< OCTACKSEL (Bit 0) */ + #define R_SYSTEM_OCTACKCR_OCTACKSEL_Msk (0xfUL) /*!< OCTACKSEL (Bitfield-Mask: 0x0f) */ + #define R_SYSTEM_OCTACKCR_OCTACKSREQ_Pos (6UL) /*!< OCTACKSREQ (Bit 6) */ + #define R_SYSTEM_OCTACKCR_OCTACKSREQ_Msk (0x40UL) /*!< OCTACKSREQ (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_OCTACKCR_OCTACKSRDY_Pos (7UL) /*!< OCTACKSRDY (Bit 7) */ + #define R_SYSTEM_OCTACKCR_OCTACKSRDY_Msk (0x80UL) /*!< OCTACKSRDY (Bitfield-Mask: 0x01) */ +/* ======================================================= CANFDCKCR ======================================================= */ + #define R_SYSTEM_CANFDCKCR_CANFDCKSEL_Pos (0UL) /*!< CANFDCKSEL (Bit 0) */ + #define R_SYSTEM_CANFDCKCR_CANFDCKSEL_Msk (0xfUL) /*!< CANFDCKSEL (Bitfield-Mask: 0x0f) */ + #define R_SYSTEM_CANFDCKCR_CANFDCKSREQ_Pos (6UL) /*!< CANFDCKSREQ (Bit 6) */ + #define R_SYSTEM_CANFDCKCR_CANFDCKSREQ_Msk (0x40UL) /*!< CANFDCKSREQ (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_CANFDCKCR_CANFDCKSRDY_Pos (7UL) /*!< CANFDCKSRDY (Bit 7) */ + #define R_SYSTEM_CANFDCKCR_CANFDCKSRDY_Msk (0x80UL) /*!< CANFDCKSRDY (Bitfield-Mask: 0x01) */ +/* ======================================================= USB60CKCR ======================================================= */ + #define R_SYSTEM_USB60CKCR_USB60CKSEL_Pos (0UL) /*!< USB60CKSEL (Bit 0) */ + #define R_SYSTEM_USB60CKCR_USB60CKSEL_Msk (0xfUL) /*!< USB60CKSEL (Bitfield-Mask: 0x0f) */ + #define R_SYSTEM_USB60CKCR_USB60CKSREQ_Pos (6UL) /*!< USB60CKSREQ (Bit 6) */ + #define R_SYSTEM_USB60CKCR_USB60CKSREQ_Msk (0x40UL) /*!< USB60CKSREQ (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_USB60CKCR_USB60CKSRDY_Pos (7UL) /*!< USB60CKSRDY (Bit 7) */ + #define R_SYSTEM_USB60CKCR_USB60CKSRDY_Msk (0x80UL) /*!< USB60CKSRDY (Bitfield-Mask: 0x01) */ +/* ======================================================== I3CCKCR ======================================================== */ + #define R_SYSTEM_I3CCKCR_I3CCKSEL_Pos (0UL) /*!< I3CCKSEL (Bit 0) */ + #define R_SYSTEM_I3CCKCR_I3CCKSEL_Msk (0xfUL) /*!< I3CCKSEL (Bitfield-Mask: 0x0f) */ + #define R_SYSTEM_I3CCKCR_I3CCKREQ_Pos (6UL) /*!< I3CCKREQ (Bit 6) */ + #define R_SYSTEM_I3CCKCR_I3CCKREQ_Msk (0x40UL) /*!< I3CCKREQ (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_I3CCKCR_I3CCKSRDY_Pos (7UL) /*!< I3CCKSRDY (Bit 7) */ + #define R_SYSTEM_I3CCKCR_I3CCKSRDY_Msk (0x80UL) /*!< I3CCKSRDY (Bitfield-Mask: 0x01) */ +/* ======================================================== MOSCSCR ======================================================== */ + #define R_SYSTEM_MOSCSCR_MOSCSOKP_Pos (0UL) /*!< MOSCSOKP (Bit 0) */ + #define R_SYSTEM_MOSCSCR_MOSCSOKP_Msk (0x1UL) /*!< MOSCSOKP (Bitfield-Mask: 0x01) */ +/* ======================================================== HOCOSCR ======================================================== */ + #define R_SYSTEM_HOCOSCR_HOCOSOKP_Pos (0UL) /*!< HOCOSOKP (Bit 0) */ + #define R_SYSTEM_HOCOSCR_HOCOSOKP_Msk (0x1UL) /*!< HOCOSOKP (Bitfield-Mask: 0x01) */ +/* ======================================================= SNZREQCR1 ======================================================= */ + #define R_SYSTEM_SNZREQCR1_SNZREQEN_Pos (0UL) /*!< SNZREQEN (Bit 0) */ + #define R_SYSTEM_SNZREQCR1_SNZREQEN_Msk (0x1UL) /*!< SNZREQEN (Bitfield-Mask: 0x01) */ +/* ========================================================= SNZCR ========================================================= */ + #define R_SYSTEM_SNZCR_SNZE_Pos (7UL) /*!< SNZE (Bit 7) */ + #define R_SYSTEM_SNZCR_SNZE_Msk (0x80UL) /*!< SNZE (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_SNZCR_SNZDTCEN_Pos (1UL) /*!< SNZDTCEN (Bit 1) */ + #define R_SYSTEM_SNZCR_SNZDTCEN_Msk (0x2UL) /*!< SNZDTCEN (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_SNZCR_RXDREQEN_Pos (0UL) /*!< RXDREQEN (Bit 0) */ + #define R_SYSTEM_SNZCR_RXDREQEN_Msk (0x1UL) /*!< RXDREQEN (Bitfield-Mask: 0x01) */ +/* ======================================================== SNZEDCR ======================================================== */ + #define R_SYSTEM_SNZEDCR_SCI0UMTED_Pos (7UL) /*!< SCI0UMTED (Bit 7) */ + #define R_SYSTEM_SNZEDCR_SCI0UMTED_Msk (0x80UL) /*!< SCI0UMTED (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_SNZEDCR_AD1UMTED_Pos (6UL) /*!< AD1UMTED (Bit 6) */ + #define R_SYSTEM_SNZEDCR_AD1UMTED_Msk (0x40UL) /*!< AD1UMTED (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_SNZEDCR_AD1MATED_Pos (5UL) /*!< AD1MATED (Bit 5) */ + #define R_SYSTEM_SNZEDCR_AD1MATED_Msk (0x20UL) /*!< AD1MATED (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_SNZEDCR_AD0UMTED_Pos (4UL) /*!< AD0UMTED (Bit 4) */ + #define R_SYSTEM_SNZEDCR_AD0UMTED_Msk (0x10UL) /*!< AD0UMTED (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_SNZEDCR_AD0MATED_Pos (3UL) /*!< AD0MATED (Bit 3) */ + #define R_SYSTEM_SNZEDCR_AD0MATED_Msk (0x8UL) /*!< AD0MATED (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_SNZEDCR_DTCNZRED_Pos (2UL) /*!< DTCNZRED (Bit 2) */ + #define R_SYSTEM_SNZEDCR_DTCNZRED_Msk (0x4UL) /*!< DTCNZRED (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_SNZEDCR_DTCZRED_Pos (1UL) /*!< DTCZRED (Bit 1) */ + #define R_SYSTEM_SNZEDCR_DTCZRED_Msk (0x2UL) /*!< DTCZRED (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_SNZEDCR_AGT1UNFED_Pos (0UL) /*!< AGT1UNFED (Bit 0) */ + #define R_SYSTEM_SNZEDCR_AGT1UNFED_Msk (0x1UL) /*!< AGT1UNFED (Bitfield-Mask: 0x01) */ +/* ======================================================= SNZEDCR1 ======================================================== */ + #define R_SYSTEM_SNZEDCR1_AGT3UNFED_Pos (0UL) /*!< AGT3UNFED (Bit 0) */ + #define R_SYSTEM_SNZEDCR1_AGT3UNFED_Msk (0x1UL) /*!< AGT3UNFED (Bitfield-Mask: 0x01) */ +/* ======================================================= SNZREQCR ======================================================== */ + #define R_SYSTEM_SNZREQCR_SNZREQEN30_Pos (30UL) /*!< SNZREQEN30 (Bit 30) */ + #define R_SYSTEM_SNZREQCR_SNZREQEN30_Msk (0x40000000UL) /*!< SNZREQEN30 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_SNZREQCR_SNZREQEN29_Pos (29UL) /*!< SNZREQEN29 (Bit 29) */ + #define R_SYSTEM_SNZREQCR_SNZREQEN29_Msk (0x20000000UL) /*!< SNZREQEN29 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_SNZREQCR_SNZREQEN28_Pos (28UL) /*!< SNZREQEN28 (Bit 28) */ + #define R_SYSTEM_SNZREQCR_SNZREQEN28_Msk (0x10000000UL) /*!< SNZREQEN28 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_SNZREQCR_SNZREQEN25_Pos (25UL) /*!< SNZREQEN25 (Bit 25) */ + #define R_SYSTEM_SNZREQCR_SNZREQEN25_Msk (0x2000000UL) /*!< SNZREQEN25 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_SNZREQCR_SNZREQEN24_Pos (24UL) /*!< SNZREQEN24 (Bit 24) */ + #define R_SYSTEM_SNZREQCR_SNZREQEN24_Msk (0x1000000UL) /*!< SNZREQEN24 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_SNZREQCR_SNZREQEN23_Pos (23UL) /*!< SNZREQEN23 (Bit 23) */ + #define R_SYSTEM_SNZREQCR_SNZREQEN23_Msk (0x800000UL) /*!< SNZREQEN23 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_SNZREQCR_SNZREQEN22_Pos (22UL) /*!< SNZREQEN22 (Bit 22) */ + #define R_SYSTEM_SNZREQCR_SNZREQEN22_Msk (0x400000UL) /*!< SNZREQEN22 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_SNZREQCR_SNZREQEN17_Pos (17UL) /*!< SNZREQEN17 (Bit 17) */ + #define R_SYSTEM_SNZREQCR_SNZREQEN17_Msk (0x20000UL) /*!< SNZREQEN17 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_SNZREQCR_SNZREQEN_Pos (0UL) /*!< SNZREQEN (Bit 0) */ + #define R_SYSTEM_SNZREQCR_SNZREQEN_Msk (0x1UL) /*!< SNZREQEN (Bitfield-Mask: 0x01) */ +/* ========================================================= OPCCR ========================================================= */ + #define R_SYSTEM_OPCCR_OPCMTSF_Pos (4UL) /*!< OPCMTSF (Bit 4) */ + #define R_SYSTEM_OPCCR_OPCMTSF_Msk (0x10UL) /*!< OPCMTSF (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_OPCCR_OPCM_Pos (0UL) /*!< OPCM (Bit 0) */ + #define R_SYSTEM_OPCCR_OPCM_Msk (0x3UL) /*!< OPCM (Bitfield-Mask: 0x03) */ +/* ======================================================= MOSCWTCR ======================================================== */ + #define R_SYSTEM_MOSCWTCR_MSTS_Pos (0UL) /*!< MSTS (Bit 0) */ + #define R_SYSTEM_MOSCWTCR_MSTS_Msk (0xfUL) /*!< MSTS (Bitfield-Mask: 0x0f) */ +/* ======================================================= HOCOWTCR ======================================================== */ + #define R_SYSTEM_HOCOWTCR_HSTS_Pos (0UL) /*!< HSTS (Bit 0) */ + #define R_SYSTEM_HOCOWTCR_HSTS_Msk (0x7UL) /*!< HSTS (Bitfield-Mask: 0x07) */ +/* ======================================================== SOPCCR ========================================================= */ + #define R_SYSTEM_SOPCCR_SOPCMTSF_Pos (4UL) /*!< SOPCMTSF (Bit 4) */ + #define R_SYSTEM_SOPCCR_SOPCMTSF_Msk (0x10UL) /*!< SOPCMTSF (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_SOPCCR_SOPCM_Pos (0UL) /*!< SOPCM (Bit 0) */ + #define R_SYSTEM_SOPCCR_SOPCM_Msk (0x1UL) /*!< SOPCM (Bitfield-Mask: 0x01) */ +/* ======================================================== RSTSR1 ========================================================= */ + #define R_SYSTEM_RSTSR1_IWDTRF_Pos (0UL) /*!< IWDTRF (Bit 0) */ + #define R_SYSTEM_RSTSR1_IWDTRF_Msk (0x1UL) /*!< IWDTRF (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_RSTSR1_WDTRF_Pos (1UL) /*!< WDTRF (Bit 1) */ + #define R_SYSTEM_RSTSR1_WDTRF_Msk (0x2UL) /*!< WDTRF (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_RSTSR1_SWRF_Pos (2UL) /*!< SWRF (Bit 2) */ + #define R_SYSTEM_RSTSR1_SWRF_Msk (0x4UL) /*!< SWRF (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_RSTSR1_CLU0RF_Pos (4UL) /*!< CLU0RF (Bit 4) */ + #define R_SYSTEM_RSTSR1_CLU0RF_Msk (0x10UL) /*!< CLU0RF (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_RSTSR1_LM0RF_Pos (5UL) /*!< LM0RF (Bit 5) */ + #define R_SYSTEM_RSTSR1_LM0RF_Msk (0x20UL) /*!< LM0RF (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_RSTSR1_BUSRF_Pos (10UL) /*!< BUSRF (Bit 10) */ + #define R_SYSTEM_RSTSR1_BUSRF_Msk (0x400UL) /*!< BUSRF (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_RSTSR1_CMRF_Pos (14UL) /*!< CMRF (Bit 14) */ + #define R_SYSTEM_RSTSR1_CMRF_Msk (0x4000UL) /*!< CMRF (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_RSTSR1_WDT1RF_Pos (17UL) /*!< WDT1RF (Bit 17) */ + #define R_SYSTEM_RSTSR1_WDT1RF_Msk (0x20000UL) /*!< WDT1RF (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_RSTSR1_CLU1RF_Pos (20UL) /*!< CLU1RF (Bit 20) */ + #define R_SYSTEM_RSTSR1_CLU1RF_Msk (0x100000UL) /*!< CLU1RF (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_RSTSR1_LM1RF_Pos (21UL) /*!< LM1RF (Bit 21) */ + #define R_SYSTEM_RSTSR1_LM1RF_Msk (0x200000UL) /*!< LM1RF (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_RSTSR1_NWRF_Pos (22UL) /*!< NWRF (Bit 22) */ + #define R_SYSTEM_RSTSR1_NWRF_Msk (0x400000UL) /*!< NWRF (Bitfield-Mask: 0x01) */ +/* ======================================================== SYRACCR ======================================================== */ + #define R_SYSTEM_SYRACCR_BUSY_Pos (0UL) /*!< BUSY (Bit 0) */ + #define R_SYSTEM_SYRACCR_BUSY_Msk (0x1UL) /*!< BUSY (Bitfield-Mask: 0x01) */ +/* ======================================================== LVD1CR1 ======================================================== */ + #define R_SYSTEM_LVD1CR1_IDTSEL_Pos (0UL) /*!< IDTSEL (Bit 0) */ + #define R_SYSTEM_LVD1CR1_IDTSEL_Msk (0x3UL) /*!< IDTSEL (Bitfield-Mask: 0x03) */ + #define R_SYSTEM_LVD1CR1_IRQSEL_Pos (2UL) /*!< IRQSEL (Bit 2) */ + #define R_SYSTEM_LVD1CR1_IRQSEL_Msk (0x4UL) /*!< IRQSEL (Bitfield-Mask: 0x01) */ +/* ======================================================== LVD2CR1 ======================================================== */ + #define R_SYSTEM_LVD2CR1_IDTSEL_Pos (0UL) /*!< IDTSEL (Bit 0) */ + #define R_SYSTEM_LVD2CR1_IDTSEL_Msk (0x3UL) /*!< IDTSEL (Bitfield-Mask: 0x03) */ + #define R_SYSTEM_LVD2CR1_IRQSEL_Pos (2UL) /*!< IRQSEL (Bit 2) */ + #define R_SYSTEM_LVD2CR1_IRQSEL_Msk (0x4UL) /*!< IRQSEL (Bitfield-Mask: 0x01) */ +/* ======================================================== LVD1SR ========================================================= */ + #define R_SYSTEM_LVD1SR_DET_Pos (0UL) /*!< DET (Bit 0) */ + #define R_SYSTEM_LVD1SR_DET_Msk (0x1UL) /*!< DET (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_LVD1SR_MON_Pos (1UL) /*!< MON (Bit 1) */ + #define R_SYSTEM_LVD1SR_MON_Msk (0x2UL) /*!< MON (Bitfield-Mask: 0x01) */ +/* ======================================================== LVD2SR ========================================================= */ + #define R_SYSTEM_LVD2SR_DET_Pos (0UL) /*!< DET (Bit 0) */ + #define R_SYSTEM_LVD2SR_DET_Msk (0x1UL) /*!< DET (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_LVD2SR_MON_Pos (1UL) /*!< MON (Bit 1) */ + #define R_SYSTEM_LVD2SR_MON_Msk (0x2UL) /*!< MON (Bitfield-Mask: 0x01) */ +/* ======================================================= CRVSYSCR ======================================================== */ + #define R_SYSTEM_CRVSYSCR_CRVEN_Pos (0UL) /*!< CRVEN (Bit 0) */ + #define R_SYSTEM_CRVSYSCR_CRVEN_Msk (0x1UL) /*!< CRVEN (Bitfield-Mask: 0x01) */ +/* ======================================================== PDCTRGD ======================================================== */ + #define R_SYSTEM_PDCTRGD_PDDE_Pos (0UL) /*!< PDDE (Bit 0) */ + #define R_SYSTEM_PDCTRGD_PDDE_Msk (0x1UL) /*!< PDDE (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_PDCTRGD_PDCSF_Pos (6UL) /*!< PDCSF (Bit 6) */ + #define R_SYSTEM_PDCTRGD_PDCSF_Msk (0x40UL) /*!< PDCSF (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_PDCTRGD_PDPGSF_Pos (7UL) /*!< PDPGSF (Bit 7) */ + #define R_SYSTEM_PDCTRGD_PDPGSF_Msk (0x80UL) /*!< PDPGSF (Bitfield-Mask: 0x01) */ +/* ======================================================= PDRAMSCR0 ======================================================= */ +/* ======================================================= PDRAMSCR1 ======================================================= */ +/* ======================================================= VBRSABAR ======================================================== */ + #define R_SYSTEM_VBRSABAR_SABA_Pos (0UL) /*!< SABA (Bit 0) */ + #define R_SYSTEM_VBRSABAR_SABA_Msk (0xffffUL) /*!< SABA (Bitfield-Mask: 0xffff) */ +/* ======================================================= VBRPABARS ======================================================= */ + #define R_SYSTEM_VBRPABARS_PABAS_Pos (0UL) /*!< PABAS (Bit 0) */ + #define R_SYSTEM_VBRPABARS_PABAS_Msk (0xffffUL) /*!< PABAS (Bitfield-Mask: 0xffff) */ +/* ====================================================== VBRPABARNS ======================================================= */ + #define R_SYSTEM_VBRPABARNS_PABANS_Pos (0UL) /*!< PABANS (Bit 0) */ + #define R_SYSTEM_VBRPABARNS_PABANS_Msk (0xffffUL) /*!< PABANS (Bitfield-Mask: 0xffff) */ +/* ======================================================== CGFSAR ========================================================= */ + #define R_SYSTEM_CGFSAR_NONSEC00_Pos (0UL) /*!< NONSEC00 (Bit 0) */ + #define R_SYSTEM_CGFSAR_NONSEC00_Msk (0x1UL) /*!< NONSEC00 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_CGFSAR_NONSEC02_Pos (2UL) /*!< NONSEC02 (Bit 2) */ + #define R_SYSTEM_CGFSAR_NONSEC02_Msk (0x4UL) /*!< NONSEC02 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_CGFSAR_NONSEC03_Pos (3UL) /*!< NONSEC03 (Bit 3) */ + #define R_SYSTEM_CGFSAR_NONSEC03_Msk (0x8UL) /*!< NONSEC03 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_CGFSAR_NONSEC04_Pos (4UL) /*!< NONSEC04 (Bit 4) */ + #define R_SYSTEM_CGFSAR_NONSEC04_Msk (0x10UL) /*!< NONSEC04 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_CGFSAR_NONSEC05_Pos (5UL) /*!< NONSEC05 (Bit 5) */ + #define R_SYSTEM_CGFSAR_NONSEC05_Msk (0x20UL) /*!< NONSEC05 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_CGFSAR_NONSEC06_Pos (6UL) /*!< NONSEC06 (Bit 6) */ + #define R_SYSTEM_CGFSAR_NONSEC06_Msk (0x40UL) /*!< NONSEC06 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_CGFSAR_NONSEC07_Pos (7UL) /*!< NONSEC07 (Bit 7) */ + #define R_SYSTEM_CGFSAR_NONSEC07_Msk (0x80UL) /*!< NONSEC07 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_CGFSAR_NONSEC08_Pos (8UL) /*!< NONSEC08 (Bit 8) */ + #define R_SYSTEM_CGFSAR_NONSEC08_Msk (0x100UL) /*!< NONSEC08 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_CGFSAR_NONSEC09_Pos (9UL) /*!< NONSEC09 (Bit 9) */ + #define R_SYSTEM_CGFSAR_NONSEC09_Msk (0x200UL) /*!< NONSEC09 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_CGFSAR_NONSEC11_Pos (11UL) /*!< NONSEC11 (Bit 11) */ + #define R_SYSTEM_CGFSAR_NONSEC11_Msk (0x800UL) /*!< NONSEC11 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_CGFSAR_NONSEC12_Pos (12UL) /*!< NONSEC12 (Bit 12) */ + #define R_SYSTEM_CGFSAR_NONSEC12_Msk (0x1000UL) /*!< NONSEC12 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_CGFSAR_NONSEC13_Pos (13UL) /*!< NONSEC13 (Bit 13) */ + #define R_SYSTEM_CGFSAR_NONSEC13_Msk (0x2000UL) /*!< NONSEC13 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_CGFSAR_NONSEC16_Pos (16UL) /*!< NONSEC16 (Bit 16) */ + #define R_SYSTEM_CGFSAR_NONSEC16_Msk (0x10000UL) /*!< NONSEC16 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_CGFSAR_NONSEC17_Pos (17UL) /*!< NONSEC17 (Bit 17) */ + #define R_SYSTEM_CGFSAR_NONSEC17_Msk (0x20000UL) /*!< NONSEC17 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_CGFSAR_NONSEC18_Pos (18UL) /*!< NONSEC18 (Bit 18) */ + #define R_SYSTEM_CGFSAR_NONSEC18_Msk (0x40000UL) /*!< NONSEC18 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_CGFSAR_NONSEC19_Pos (19UL) /*!< NONSEC19 (Bit 19) */ + #define R_SYSTEM_CGFSAR_NONSEC19_Msk (0x80000UL) /*!< NONSEC19 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_CGFSAR_NONSEC20_Pos (20UL) /*!< NONSEC20 (Bit 20) */ + #define R_SYSTEM_CGFSAR_NONSEC20_Msk (0x100000UL) /*!< NONSEC20 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_CGFSAR_NONSEC21_Pos (21UL) /*!< NONSEC21 (Bit 21) */ + #define R_SYSTEM_CGFSAR_NONSEC21_Msk (0x200000UL) /*!< NONSEC21 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_CGFSAR_NONSEC22_Pos (22UL) /*!< NONSEC22 (Bit 22) */ + #define R_SYSTEM_CGFSAR_NONSEC22_Msk (0x400000UL) /*!< NONSEC22 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_CGFSAR_NONSEC24_Pos (24UL) /*!< NONSEC24 (Bit 24) */ + #define R_SYSTEM_CGFSAR_NONSEC24_Msk (0x1000000UL) /*!< NONSEC24 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_CGFSAR_NONSEC25_Pos (25UL) /*!< NONSEC25 (Bit 25) */ + #define R_SYSTEM_CGFSAR_NONSEC25_Msk (0x2000000UL) /*!< NONSEC25 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_CGFSAR_NONSEC26_Pos (26UL) /*!< NONSEC26 (Bit 26) */ + #define R_SYSTEM_CGFSAR_NONSEC26_Msk (0x4000000UL) /*!< NONSEC26 (Bitfield-Mask: 0x01) */ +/* ======================================================== RSTSAR ========================================================= */ + #define R_SYSTEM_RSTSAR_NONSEC0_Pos (0UL) /*!< NONSEC0 (Bit 0) */ + #define R_SYSTEM_RSTSAR_NONSEC0_Msk (0x1UL) /*!< NONSEC0 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_RSTSAR_NONSEC1_Pos (1UL) /*!< NONSEC1 (Bit 1) */ + #define R_SYSTEM_RSTSAR_NONSEC1_Msk (0x2UL) /*!< NONSEC1 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_RSTSAR_NONSEC2_Pos (2UL) /*!< NONSEC2 (Bit 2) */ + #define R_SYSTEM_RSTSAR_NONSEC2_Msk (0x4UL) /*!< NONSEC2 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_RSTSAR_NONSEC3_Pos (3UL) /*!< NONSEC3 (Bit 3) */ + #define R_SYSTEM_RSTSAR_NONSEC3_Msk (0x8UL) /*!< NONSEC3 (Bitfield-Mask: 0x01) */ +/* ======================================================== LPMSAR ========================================================= */ + #define R_SYSTEM_LPMSAR_NONSEC0_Pos (0UL) /*!< NONSEC0 (Bit 0) */ + #define R_SYSTEM_LPMSAR_NONSEC0_Msk (0x1UL) /*!< NONSEC0 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_LPMSAR_NONSEC1_Pos (1UL) /*!< NONSEC1 (Bit 1) */ + #define R_SYSTEM_LPMSAR_NONSEC1_Msk (0x2UL) /*!< NONSEC1 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_LPMSAR_NONSEC2_Pos (2UL) /*!< NONSEC2 (Bit 2) */ + #define R_SYSTEM_LPMSAR_NONSEC2_Msk (0x4UL) /*!< NONSEC2 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_LPMSAR_NONSEC3_Pos (3UL) /*!< NONSEC3 (Bit 3) */ + #define R_SYSTEM_LPMSAR_NONSEC3_Msk (0x8UL) /*!< NONSEC3 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_LPMSAR_NONSEC8_Pos (8UL) /*!< NONSEC8 (Bit 8) */ + #define R_SYSTEM_LPMSAR_NONSEC8_Msk (0x100UL) /*!< NONSEC8 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_LPMSAR_NONSEC16_Pos (16UL) /*!< NONSEC16 (Bit 16) */ + #define R_SYSTEM_LPMSAR_NONSEC16_Msk (0x10000UL) /*!< NONSEC16 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_LPMSAR_NONSEC17_Pos (17UL) /*!< NONSEC17 (Bit 17) */ + #define R_SYSTEM_LPMSAR_NONSEC17_Msk (0x20000UL) /*!< NONSEC17 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_LPMSAR_NONSEC18_Pos (18UL) /*!< NONSEC18 (Bit 18) */ + #define R_SYSTEM_LPMSAR_NONSEC18_Msk (0x40000UL) /*!< NONSEC18 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_LPMSAR_NONSEC19_Pos (19UL) /*!< NONSEC19 (Bit 19) */ + #define R_SYSTEM_LPMSAR_NONSEC19_Msk (0x80000UL) /*!< NONSEC19 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_LPMSAR_NONSEC21_Pos (21UL) /*!< NONSEC21 (Bit 21) */ + #define R_SYSTEM_LPMSAR_NONSEC21_Msk (0x200000UL) /*!< NONSEC21 (Bitfield-Mask: 0x01) */ +/* ======================================================== LVDSAR ========================================================= */ + #define R_SYSTEM_LVDSAR_NONSEC0_Pos (0UL) /*!< NONSEC0 (Bit 0) */ + #define R_SYSTEM_LVDSAR_NONSEC0_Msk (0x1UL) /*!< NONSEC0 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_LVDSAR_NONSEC1_Pos (1UL) /*!< NONSEC1 (Bit 1) */ + #define R_SYSTEM_LVDSAR_NONSEC1_Msk (0x2UL) /*!< NONSEC1 (Bitfield-Mask: 0x01) */ +/* ======================================================== BBFSAR ========================================================= */ + #define R_SYSTEM_BBFSAR_NONSEC0_Pos (0UL) /*!< NONSEC0 (Bit 0) */ + #define R_SYSTEM_BBFSAR_NONSEC0_Msk (0x1UL) /*!< NONSEC0 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_BBFSAR_NONSEC1_Pos (1UL) /*!< NONSEC1 (Bit 1) */ + #define R_SYSTEM_BBFSAR_NONSEC1_Msk (0x2UL) /*!< NONSEC1 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_BBFSAR_NONSEC2_Pos (2UL) /*!< NONSEC2 (Bit 2) */ + #define R_SYSTEM_BBFSAR_NONSEC2_Msk (0x4UL) /*!< NONSEC2 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_BBFSAR_NONSEC3_Pos (3UL) /*!< NONSEC3 (Bit 3) */ + #define R_SYSTEM_BBFSAR_NONSEC3_Msk (0x8UL) /*!< NONSEC3 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_BBFSAR_NONSEC4_Pos (4UL) /*!< NONSEC4 (Bit 4) */ + #define R_SYSTEM_BBFSAR_NONSEC4_Msk (0x10UL) /*!< NONSEC4 (Bitfield-Mask: 0x01) */ +/* ======================================================== PGCSAR ========================================================= */ + #define R_SYSTEM_PGCSAR_NONSEC1_Pos (1UL) /*!< NONSEC1 (Bit 1) */ + #define R_SYSTEM_PGCSAR_NONSEC1_Msk (0x2UL) /*!< NONSEC1 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_PGCSAR_NONSEC2_Pos (2UL) /*!< NONSEC2 (Bit 2) */ + #define R_SYSTEM_PGCSAR_NONSEC2_Msk (0x4UL) /*!< NONSEC2 (Bitfield-Mask: 0x01) */ +/* ======================================================== DPFSAR ========================================================= */ + #define R_SYSTEM_DPFSAR_DPFSA16_Pos (16UL) /*!< DPFSA16 (Bit 16) */ + #define R_SYSTEM_DPFSAR_DPFSA16_Msk (0x10000UL) /*!< DPFSA16 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPFSAR_DPFSA17_Pos (17UL) /*!< DPFSA17 (Bit 17) */ + #define R_SYSTEM_DPFSAR_DPFSA17_Msk (0x20000UL) /*!< DPFSA17 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPFSAR_DPFSA18_Pos (18UL) /*!< DPFSA18 (Bit 18) */ + #define R_SYSTEM_DPFSAR_DPFSA18_Msk (0x40000UL) /*!< DPFSA18 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPFSAR_DPFSA19_Pos (19UL) /*!< DPFSA19 (Bit 19) */ + #define R_SYSTEM_DPFSAR_DPFSA19_Msk (0x80000UL) /*!< DPFSA19 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPFSAR_DPFSA20_Pos (20UL) /*!< DPFSA20 (Bit 20) */ + #define R_SYSTEM_DPFSAR_DPFSA20_Msk (0x100000UL) /*!< DPFSA20 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPFSAR_DPFSA24_Pos (24UL) /*!< DPFSA24 (Bit 24) */ + #define R_SYSTEM_DPFSAR_DPFSA24_Msk (0x1000000UL) /*!< DPFSA24 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPFSAR_DPFSA25_Pos (25UL) /*!< DPFSA25 (Bit 25) */ + #define R_SYSTEM_DPFSAR_DPFSA25_Msk (0x2000000UL) /*!< DPFSA25 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPFSAR_DPFSA26_Pos (26UL) /*!< DPFSA26 (Bit 26) */ + #define R_SYSTEM_DPFSAR_DPFSA26_Msk (0x4000000UL) /*!< DPFSA26 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPFSAR_DPFSA27_Pos (27UL) /*!< DPFSA27 (Bit 27) */ + #define R_SYSTEM_DPFSAR_DPFSA27_Msk (0x8000000UL) /*!< DPFSA27 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPFSAR_DPFSA29_Pos (29UL) /*!< DPFSA29 (Bit 29) */ + #define R_SYSTEM_DPFSAR_DPFSA29_Msk (0x20000000UL) /*!< DPFSA29 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPFSAR_DPFSA31_Pos (31UL) /*!< DPFSA31 (Bit 31) */ + #define R_SYSTEM_DPFSAR_DPFSA31_Msk (0x80000000UL) /*!< DPFSA31 (Bitfield-Mask: 0x01) */ +/* ======================================================== RSCSAR ========================================================= */ + #define R_SYSTEM_RSCSAR_RSCSA0_Pos (0UL) /*!< RSCSA0 (Bit 0) */ + #define R_SYSTEM_RSCSAR_RSCSA0_Msk (0x1UL) /*!< RSCSA0 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_RSCSAR_RSCSA1_Pos (1UL) /*!< RSCSA1 (Bit 1) */ + #define R_SYSTEM_RSCSAR_RSCSA1_Msk (0x2UL) /*!< RSCSA1 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_RSCSAR_RSCSA2_Pos (2UL) /*!< RSCSA2 (Bit 2) */ + #define R_SYSTEM_RSCSAR_RSCSA2_Msk (0x4UL) /*!< RSCSA2 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_RSCSAR_RSCSA3_Pos (3UL) /*!< RSCSA3 (Bit 3) */ + #define R_SYSTEM_RSCSAR_RSCSA3_Msk (0x8UL) /*!< RSCSA3 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_RSCSAR_RSCSA4_Pos (4UL) /*!< RSCSA4 (Bit 4) */ + #define R_SYSTEM_RSCSAR_RSCSA4_Msk (0x10UL) /*!< RSCSA4 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_RSCSAR_RSCSA5_Pos (5UL) /*!< RSCSA5 (Bit 5) */ + #define R_SYSTEM_RSCSAR_RSCSA5_Msk (0x20UL) /*!< RSCSA5 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_RSCSAR_RSCSA6_Pos (6UL) /*!< RSCSA6 (Bit 6) */ + #define R_SYSTEM_RSCSAR_RSCSA6_Msk (0x40UL) /*!< RSCSA6 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_RSCSAR_RSCSA7_Pos (7UL) /*!< RSCSA7 (Bit 7) */ + #define R_SYSTEM_RSCSAR_RSCSA7_Msk (0x80UL) /*!< RSCSA7 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_RSCSAR_RSCSA8_Pos (8UL) /*!< RSCSA8 (Bit 8) */ + #define R_SYSTEM_RSCSAR_RSCSA8_Msk (0x100UL) /*!< RSCSA8 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_RSCSAR_RSCSA9_Pos (9UL) /*!< RSCSA9 (Bit 9) */ + #define R_SYSTEM_RSCSAR_RSCSA9_Msk (0x200UL) /*!< RSCSA9 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_RSCSAR_RSCSA10_Pos (10UL) /*!< RSCSA10 (Bit 10) */ + #define R_SYSTEM_RSCSAR_RSCSA10_Msk (0x400UL) /*!< RSCSA10 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_RSCSAR_RSCSA11_Pos (11UL) /*!< RSCSA11 (Bit 11) */ + #define R_SYSTEM_RSCSAR_RSCSA11_Msk (0x800UL) /*!< RSCSA11 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_RSCSAR_RSCSA12_Pos (12UL) /*!< RSCSA12 (Bit 12) */ + #define R_SYSTEM_RSCSAR_RSCSA12_Msk (0x1000UL) /*!< RSCSA12 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_RSCSAR_RSCSA13_Pos (13UL) /*!< RSCSA13 (Bit 13) */ + #define R_SYSTEM_RSCSAR_RSCSA13_Msk (0x2000UL) /*!< RSCSA13 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_RSCSAR_RSCSA14_Pos (14UL) /*!< RSCSA14 (Bit 14) */ + #define R_SYSTEM_RSCSAR_RSCSA14_Msk (0x4000UL) /*!< RSCSA14 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_RSCSAR_RSCSA16_Pos (16UL) /*!< RSCSA16 (Bit 16) */ + #define R_SYSTEM_RSCSAR_RSCSA16_Msk (0x10000UL) /*!< RSCSA16 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_RSCSAR_RSCSA17_Pos (17UL) /*!< RSCSA17 (Bit 17) */ + #define R_SYSTEM_RSCSAR_RSCSA17_Msk (0x20000UL) /*!< RSCSA17 (Bitfield-Mask: 0x01) */ +/* ========================================================= PRCR ========================================================== */ + #define R_SYSTEM_PRCR_PRC0_Pos (0UL) /*!< PRC0 (Bit 0) */ + #define R_SYSTEM_PRCR_PRC0_Msk (0x1UL) /*!< PRC0 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_PRCR_PRC1_Pos (1UL) /*!< PRC1 (Bit 1) */ + #define R_SYSTEM_PRCR_PRC1_Msk (0x2UL) /*!< PRC1 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_PRCR_PRC3_Pos (3UL) /*!< PRC3 (Bit 3) */ + #define R_SYSTEM_PRCR_PRC3_Msk (0x8UL) /*!< PRC3 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_PRCR_PRC4_Pos (4UL) /*!< PRC4 (Bit 4) */ + #define R_SYSTEM_PRCR_PRC4_Msk (0x10UL) /*!< PRC4 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_PRCR_PRC5_Pos (5UL) /*!< PRC5 (Bit 5) */ + #define R_SYSTEM_PRCR_PRC5_Msk (0x20UL) /*!< PRC5 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_PRCR_PRKEY_Pos (8UL) /*!< PRKEY (Bit 8) */ + #define R_SYSTEM_PRCR_PRKEY_Msk (0xff00UL) /*!< PRKEY (Bitfield-Mask: 0xff) */ +/* ======================================================== PRCR_NS ======================================================== */ + #define R_SYSTEM_PRCR_NS_PRC0_Pos (0UL) /*!< PRC0 (Bit 0) */ + #define R_SYSTEM_PRCR_NS_PRC0_Msk (0x1UL) /*!< PRC0 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_PRCR_NS_PRC1_Pos (1UL) /*!< PRC1 (Bit 1) */ + #define R_SYSTEM_PRCR_NS_PRC1_Msk (0x2UL) /*!< PRC1 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_PRCR_NS_PRC3_Pos (3UL) /*!< PRC3 (Bit 3) */ + #define R_SYSTEM_PRCR_NS_PRC3_Msk (0x8UL) /*!< PRC3 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_PRCR_NS_PRC4_Pos (4UL) /*!< PRC4 (Bit 4) */ + #define R_SYSTEM_PRCR_NS_PRC4_Msk (0x10UL) /*!< PRC4 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_PRCR_NS_PRKEY_Pos (8UL) /*!< PRKEY (Bit 8) */ + #define R_SYSTEM_PRCR_NS_PRKEY_Msk (0xff00UL) /*!< PRKEY (Bitfield-Mask: 0xff) */ +/* ======================================================== LOCOCR ========================================================= */ + #define R_SYSTEM_LOCOCR_LCSTP_Pos (0UL) /*!< LCSTP (Bit 0) */ + #define R_SYSTEM_LOCOCR_LCSTP_Msk (0x1UL) /*!< LCSTP (Bitfield-Mask: 0x01) */ +/* ======================================================= LOCOUTCR ======================================================== */ + #define R_SYSTEM_LOCOUTCR_LOCOUTRM_Pos (0UL) /*!< LOCOUTRM (Bit 0) */ + #define R_SYSTEM_LOCOUTCR_LOCOUTRM_Msk (0xffUL) /*!< LOCOUTRM (Bitfield-Mask: 0xff) */ +/* ======================================================== STCONR ========================================================= */ + #define R_SYSTEM_STCONR_STCON_Pos (0UL) /*!< STCON (Bit 0) */ + #define R_SYSTEM_STCONR_STCON_Msk (0x3UL) /*!< STCON (Bitfield-Mask: 0x03) */ +/* ======================================================== DPSBYCR ======================================================== */ + #define R_SYSTEM_DPSBYCR_DCSSMODE_Pos (2UL) /*!< DCSSMODE (Bit 2) */ + #define R_SYSTEM_DPSBYCR_DCSSMODE_Msk (0x4UL) /*!< DCSSMODE (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPSBYCR_SRKEEP_Pos (4UL) /*!< SRKEEP (Bit 4) */ + #define R_SYSTEM_DPSBYCR_SRKEEP_Msk (0x10UL) /*!< SRKEEP (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPSBYCR_IOKEEP_Pos (6UL) /*!< IOKEEP (Bit 6) */ + #define R_SYSTEM_DPSBYCR_IOKEEP_Msk (0x40UL) /*!< IOKEEP (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPSBYCR_DPSBY_Pos (7UL) /*!< DPSBY (Bit 7) */ + #define R_SYSTEM_DPSBYCR_DPSBY_Msk (0x80UL) /*!< DPSBY (Bitfield-Mask: 0x01) */ +/* ======================================================== DPSWCR ========================================================= */ + #define R_SYSTEM_DPSWCR_WTSTS_Pos (0UL) /*!< WTSTS (Bit 0) */ + #define R_SYSTEM_DPSWCR_WTSTS_Msk (0xffUL) /*!< WTSTS (Bitfield-Mask: 0xff) */ +/* ======================================================== DPSIER0 ======================================================== */ + #define R_SYSTEM_DPSIER0_DIRQ0E_Pos (0UL) /*!< DIRQ0E (Bit 0) */ + #define R_SYSTEM_DPSIER0_DIRQ0E_Msk (0x1UL) /*!< DIRQ0E (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPSIER0_DIRQ1E_Pos (1UL) /*!< DIRQ1E (Bit 1) */ + #define R_SYSTEM_DPSIER0_DIRQ1E_Msk (0x2UL) /*!< DIRQ1E (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPSIER0_DIRQ2E_Pos (2UL) /*!< DIRQ2E (Bit 2) */ + #define R_SYSTEM_DPSIER0_DIRQ2E_Msk (0x4UL) /*!< DIRQ2E (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPSIER0_DIRQ3E_Pos (3UL) /*!< DIRQ3E (Bit 3) */ + #define R_SYSTEM_DPSIER0_DIRQ3E_Msk (0x8UL) /*!< DIRQ3E (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPSIER0_DIRQ4E_Pos (4UL) /*!< DIRQ4E (Bit 4) */ + #define R_SYSTEM_DPSIER0_DIRQ4E_Msk (0x10UL) /*!< DIRQ4E (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPSIER0_DIRQ5E_Pos (5UL) /*!< DIRQ5E (Bit 5) */ + #define R_SYSTEM_DPSIER0_DIRQ5E_Msk (0x20UL) /*!< DIRQ5E (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPSIER0_DIRQ6E_Pos (6UL) /*!< DIRQ6E (Bit 6) */ + #define R_SYSTEM_DPSIER0_DIRQ6E_Msk (0x40UL) /*!< DIRQ6E (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPSIER0_DIRQ7E_Pos (7UL) /*!< DIRQ7E (Bit 7) */ + #define R_SYSTEM_DPSIER0_DIRQ7E_Msk (0x80UL) /*!< DIRQ7E (Bitfield-Mask: 0x01) */ +/* ======================================================== DPSIER1 ======================================================== */ + #define R_SYSTEM_DPSIER1_DIRQ8E_Pos (0UL) /*!< DIRQ8E (Bit 0) */ + #define R_SYSTEM_DPSIER1_DIRQ8E_Msk (0x1UL) /*!< DIRQ8E (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPSIER1_DIRQ9E_Pos (1UL) /*!< DIRQ9E (Bit 1) */ + #define R_SYSTEM_DPSIER1_DIRQ9E_Msk (0x2UL) /*!< DIRQ9E (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPSIER1_DIRQ10E_Pos (2UL) /*!< DIRQ10E (Bit 2) */ + #define R_SYSTEM_DPSIER1_DIRQ10E_Msk (0x4UL) /*!< DIRQ10E (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPSIER1_DIRQ11E_Pos (3UL) /*!< DIRQ11E (Bit 3) */ + #define R_SYSTEM_DPSIER1_DIRQ11E_Msk (0x8UL) /*!< DIRQ11E (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPSIER1_DIRQ12E_Pos (4UL) /*!< DIRQ12E (Bit 4) */ + #define R_SYSTEM_DPSIER1_DIRQ12E_Msk (0x10UL) /*!< DIRQ12E (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPSIER1_DIRQ13E_Pos (5UL) /*!< DIRQ13E (Bit 5) */ + #define R_SYSTEM_DPSIER1_DIRQ13E_Msk (0x20UL) /*!< DIRQ13E (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPSIER1_DIRQ14E_Pos (6UL) /*!< DIRQ14E (Bit 6) */ + #define R_SYSTEM_DPSIER1_DIRQ14E_Msk (0x40UL) /*!< DIRQ14E (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPSIER1_DIRQ15E_Pos (7UL) /*!< DIRQ15E (Bit 7) */ + #define R_SYSTEM_DPSIER1_DIRQ15E_Msk (0x80UL) /*!< DIRQ15E (Bitfield-Mask: 0x01) */ +/* ======================================================== DPSIER2 ======================================================== */ + #define R_SYSTEM_DPSIER2_DPVD1IE_Pos (0UL) /*!< DPVD1IE (Bit 0) */ + #define R_SYSTEM_DPSIER2_DPVD1IE_Msk (0x1UL) /*!< DPVD1IE (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPSIER2_DPVD2IE_Pos (1UL) /*!< DPVD2IE (Bit 1) */ + #define R_SYSTEM_DPSIER2_DPVD2IE_Msk (0x2UL) /*!< DPVD2IE (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPSIER2_DTRTCIIE_Pos (2UL) /*!< DTRTCIIE (Bit 2) */ + #define R_SYSTEM_DPSIER2_DTRTCIIE_Msk (0x4UL) /*!< DTRTCIIE (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPSIER2_DRTCAIE_Pos (3UL) /*!< DRTCAIE (Bit 3) */ + #define R_SYSTEM_DPSIER2_DRTCAIE_Msk (0x8UL) /*!< DRTCAIE (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPSIER2_DNMIE_Pos (4UL) /*!< DNMIE (Bit 4) */ + #define R_SYSTEM_DPSIER2_DNMIE_Msk (0x10UL) /*!< DNMIE (Bitfield-Mask: 0x01) */ +/* ======================================================== DPSIER3 ======================================================== */ + #define R_SYSTEM_DPSIER3_DUSBFSIE_Pos (0UL) /*!< DUSBFSIE (Bit 0) */ + #define R_SYSTEM_DPSIER3_DUSBFSIE_Msk (0x1UL) /*!< DUSBFSIE (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPSIER3_DUSBHSIE_Pos (1UL) /*!< DUSBHSIE (Bit 1) */ + #define R_SYSTEM_DPSIER3_DUSBHSIE_Msk (0x2UL) /*!< DUSBHSIE (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPSIER3_DULPT0IE_Pos (2UL) /*!< DULPT0IE (Bit 2) */ + #define R_SYSTEM_DPSIER3_DULPT0IE_Msk (0x4UL) /*!< DULPT0IE (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPSIER3_DULPT1IE_Pos (3UL) /*!< DULPT1IE (Bit 3) */ + #define R_SYSTEM_DPSIER3_DULPT1IE_Msk (0x8UL) /*!< DULPT1IE (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPSIER3_DIWDTIE_Pos (5UL) /*!< DIWDTIE (Bit 5) */ + #define R_SYSTEM_DPSIER3_DIWDTIE_Msk (0x20UL) /*!< DIWDTIE (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPSIER3_DVBATTADIE_Pos (7UL) /*!< DVBATTADIE (Bit 7) */ + #define R_SYSTEM_DPSIER3_DVBATTADIE_Msk (0x80UL) /*!< DVBATTADIE (Bitfield-Mask: 0x01) */ +/* ======================================================== DPSIFR0 ======================================================== */ + #define R_SYSTEM_DPSIFR0_DIRQ0F_Pos (0UL) /*!< DIRQ0F (Bit 0) */ + #define R_SYSTEM_DPSIFR0_DIRQ0F_Msk (0x1UL) /*!< DIRQ0F (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPSIFR0_DIRQ1F_Pos (1UL) /*!< DIRQ1F (Bit 1) */ + #define R_SYSTEM_DPSIFR0_DIRQ1F_Msk (0x2UL) /*!< DIRQ1F (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPSIFR0_DIRQ2F_Pos (2UL) /*!< DIRQ2F (Bit 2) */ + #define R_SYSTEM_DPSIFR0_DIRQ2F_Msk (0x4UL) /*!< DIRQ2F (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPSIFR0_DIRQ3F_Pos (3UL) /*!< DIRQ3F (Bit 3) */ + #define R_SYSTEM_DPSIFR0_DIRQ3F_Msk (0x8UL) /*!< DIRQ3F (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPSIFR0_DIRQ4F_Pos (4UL) /*!< DIRQ4F (Bit 4) */ + #define R_SYSTEM_DPSIFR0_DIRQ4F_Msk (0x10UL) /*!< DIRQ4F (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPSIFR0_DIRQ5F_Pos (5UL) /*!< DIRQ5F (Bit 5) */ + #define R_SYSTEM_DPSIFR0_DIRQ5F_Msk (0x20UL) /*!< DIRQ5F (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPSIFR0_DIRQ6F_Pos (6UL) /*!< DIRQ6F (Bit 6) */ + #define R_SYSTEM_DPSIFR0_DIRQ6F_Msk (0x40UL) /*!< DIRQ6F (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPSIFR0_DIRQ7F_Pos (7UL) /*!< DIRQ7F (Bit 7) */ + #define R_SYSTEM_DPSIFR0_DIRQ7F_Msk (0x80UL) /*!< DIRQ7F (Bitfield-Mask: 0x01) */ +/* ======================================================== DPSIFR1 ======================================================== */ + #define R_SYSTEM_DPSIFR1_DIRQ8F_Pos (0UL) /*!< DIRQ8F (Bit 0) */ + #define R_SYSTEM_DPSIFR1_DIRQ8F_Msk (0x1UL) /*!< DIRQ8F (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPSIFR1_DIRQ9F_Pos (1UL) /*!< DIRQ9F (Bit 1) */ + #define R_SYSTEM_DPSIFR1_DIRQ9F_Msk (0x2UL) /*!< DIRQ9F (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPSIFR1_DIRQ10F_Pos (2UL) /*!< DIRQ10F (Bit 2) */ + #define R_SYSTEM_DPSIFR1_DIRQ10F_Msk (0x4UL) /*!< DIRQ10F (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPSIFR1_DIRQ11F_Pos (3UL) /*!< DIRQ11F (Bit 3) */ + #define R_SYSTEM_DPSIFR1_DIRQ11F_Msk (0x8UL) /*!< DIRQ11F (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPSIFR1_DIRQ12F_Pos (4UL) /*!< DIRQ12F (Bit 4) */ + #define R_SYSTEM_DPSIFR1_DIRQ12F_Msk (0x10UL) /*!< DIRQ12F (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPSIFR1_DIRQ13F_Pos (5UL) /*!< DIRQ13F (Bit 5) */ + #define R_SYSTEM_DPSIFR1_DIRQ13F_Msk (0x20UL) /*!< DIRQ13F (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPSIFR1_DIRQ14F_Pos (6UL) /*!< DIRQ14F (Bit 6) */ + #define R_SYSTEM_DPSIFR1_DIRQ14F_Msk (0x40UL) /*!< DIRQ14F (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPSIFR1_DIRQ15F_Pos (7UL) /*!< DIRQ15F (Bit 7) */ + #define R_SYSTEM_DPSIFR1_DIRQ15F_Msk (0x80UL) /*!< DIRQ15F (Bitfield-Mask: 0x01) */ +/* ======================================================== DPSIFR2 ======================================================== */ + #define R_SYSTEM_DPSIFR2_DPVD1IF_Pos (0UL) /*!< DPVD1IF (Bit 0) */ + #define R_SYSTEM_DPSIFR2_DPVD1IF_Msk (0x1UL) /*!< DPVD1IF (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPSIFR2_DPVD2IF_Pos (1UL) /*!< DPVD2IF (Bit 1) */ + #define R_SYSTEM_DPSIFR2_DPVD2IF_Msk (0x2UL) /*!< DPVD2IF (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPSIFR2_DTRTCIIF_Pos (2UL) /*!< DTRTCIIF (Bit 2) */ + #define R_SYSTEM_DPSIFR2_DTRTCIIF_Msk (0x4UL) /*!< DTRTCIIF (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPSIFR2_DRTCAIF_Pos (3UL) /*!< DRTCAIF (Bit 3) */ + #define R_SYSTEM_DPSIFR2_DRTCAIF_Msk (0x8UL) /*!< DRTCAIF (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPSIFR2_DNMIF_Pos (4UL) /*!< DNMIF (Bit 4) */ + #define R_SYSTEM_DPSIFR2_DNMIF_Msk (0x10UL) /*!< DNMIF (Bitfield-Mask: 0x01) */ +/* ======================================================== DPSIFR3 ======================================================== */ + #define R_SYSTEM_DPSIFR3_DUSBFSIF_Pos (0UL) /*!< DUSBFSIF (Bit 0) */ + #define R_SYSTEM_DPSIFR3_DUSBFSIF_Msk (0x1UL) /*!< DUSBFSIF (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPSIFR3_DUSBHSIF_Pos (1UL) /*!< DUSBHSIF (Bit 1) */ + #define R_SYSTEM_DPSIFR3_DUSBHSIF_Msk (0x2UL) /*!< DUSBHSIF (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPSIFR3_DULPT0IF_Pos (2UL) /*!< DULPT0IF (Bit 2) */ + #define R_SYSTEM_DPSIFR3_DULPT0IF_Msk (0x4UL) /*!< DULPT0IF (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPSIFR3_DULPT1IF_Pos (3UL) /*!< DULPT1IF (Bit 3) */ + #define R_SYSTEM_DPSIFR3_DULPT1IF_Msk (0x8UL) /*!< DULPT1IF (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPSIFR3_DIWDTIF_Pos (5UL) /*!< DIWDTIF (Bit 5) */ + #define R_SYSTEM_DPSIFR3_DIWDTIF_Msk (0x20UL) /*!< DIWDTIF (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPSIFR3_DVBATTADIF_Pos (7UL) /*!< DVBATTADIF (Bit 7) */ + #define R_SYSTEM_DPSIFR3_DVBATTADIF_Msk (0x80UL) /*!< DVBATTADIF (Bitfield-Mask: 0x01) */ +/* ======================================================= DPSIEGR0 ======================================================== */ + #define R_SYSTEM_DPSIEGR0_DIRQ0EG_Pos (0UL) /*!< DIRQ0EG (Bit 0) */ + #define R_SYSTEM_DPSIEGR0_DIRQ0EG_Msk (0x1UL) /*!< DIRQ0EG (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPSIEGR0_DIRQ1EG_Pos (1UL) /*!< DIRQ1EG (Bit 1) */ + #define R_SYSTEM_DPSIEGR0_DIRQ1EG_Msk (0x2UL) /*!< DIRQ1EG (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPSIEGR0_DIRQ2EG_Pos (2UL) /*!< DIRQ2EG (Bit 2) */ + #define R_SYSTEM_DPSIEGR0_DIRQ2EG_Msk (0x4UL) /*!< DIRQ2EG (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPSIEGR0_DIRQ3EG_Pos (3UL) /*!< DIRQ3EG (Bit 3) */ + #define R_SYSTEM_DPSIEGR0_DIRQ3EG_Msk (0x8UL) /*!< DIRQ3EG (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPSIEGR0_DIRQ4EG_Pos (4UL) /*!< DIRQ4EG (Bit 4) */ + #define R_SYSTEM_DPSIEGR0_DIRQ4EG_Msk (0x10UL) /*!< DIRQ4EG (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPSIEGR0_DIRQ5EG_Pos (5UL) /*!< DIRQ5EG (Bit 5) */ + #define R_SYSTEM_DPSIEGR0_DIRQ5EG_Msk (0x20UL) /*!< DIRQ5EG (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPSIEGR0_DIRQ6EG_Pos (6UL) /*!< DIRQ6EG (Bit 6) */ + #define R_SYSTEM_DPSIEGR0_DIRQ6EG_Msk (0x40UL) /*!< DIRQ6EG (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPSIEGR0_DIRQ7EG_Pos (7UL) /*!< DIRQ7EG (Bit 7) */ + #define R_SYSTEM_DPSIEGR0_DIRQ7EG_Msk (0x80UL) /*!< DIRQ7EG (Bitfield-Mask: 0x01) */ +/* ======================================================= DPSIEGR1 ======================================================== */ + #define R_SYSTEM_DPSIEGR1_DIRQ8EG_Pos (0UL) /*!< DIRQ8EG (Bit 0) */ + #define R_SYSTEM_DPSIEGR1_DIRQ8EG_Msk (0x1UL) /*!< DIRQ8EG (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPSIEGR1_DIRQ9EG_Pos (1UL) /*!< DIRQ9EG (Bit 1) */ + #define R_SYSTEM_DPSIEGR1_DIRQ9EG_Msk (0x2UL) /*!< DIRQ9EG (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPSIEGR1_DIRQ10EG_Pos (2UL) /*!< DIRQ10EG (Bit 2) */ + #define R_SYSTEM_DPSIEGR1_DIRQ10EG_Msk (0x4UL) /*!< DIRQ10EG (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPSIEGR1_DIRQ11EG_Pos (3UL) /*!< DIRQ11EG (Bit 3) */ + #define R_SYSTEM_DPSIEGR1_DIRQ11EG_Msk (0x8UL) /*!< DIRQ11EG (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPSIEGR1_DIRQ12EG_Pos (4UL) /*!< DIRQ12EG (Bit 4) */ + #define R_SYSTEM_DPSIEGR1_DIRQ12EG_Msk (0x10UL) /*!< DIRQ12EG (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPSIEGR1_DIRQ13EG_Pos (5UL) /*!< DIRQ13EG (Bit 5) */ + #define R_SYSTEM_DPSIEGR1_DIRQ13EG_Msk (0x20UL) /*!< DIRQ13EG (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPSIEGR1_DIRQ14EG_Pos (6UL) /*!< DIRQ14EG (Bit 6) */ + #define R_SYSTEM_DPSIEGR1_DIRQ14EG_Msk (0x40UL) /*!< DIRQ14EG (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPSIEGR1_DIRQ15EG_Pos (7UL) /*!< DIRQ15EG (Bit 7) */ + #define R_SYSTEM_DPSIEGR1_DIRQ15EG_Msk (0x80UL) /*!< DIRQ15EG (Bitfield-Mask: 0x01) */ +/* ======================================================= DPSIEGR2 ======================================================== */ + #define R_SYSTEM_DPSIEGR2_DPVD1EG_Pos (0UL) /*!< DPVD1EG (Bit 0) */ + #define R_SYSTEM_DPSIEGR2_DPVD1EG_Msk (0x1UL) /*!< DPVD1EG (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPSIEGR2_DPVD2EG_Pos (1UL) /*!< DPVD2EG (Bit 1) */ + #define R_SYSTEM_DPSIEGR2_DPVD2EG_Msk (0x2UL) /*!< DPVD2EG (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPSIEGR2_DNMIEG_Pos (4UL) /*!< DNMIEG (Bit 4) */ + #define R_SYSTEM_DPSIEGR2_DNMIEG_Msk (0x10UL) /*!< DNMIEG (Bitfield-Mask: 0x01) */ +/* ======================================================== SYOCDCR ======================================================== */ + #define R_SYSTEM_SYOCDCR_DOCDF_Pos (0UL) /*!< DOCDF (Bit 0) */ + #define R_SYSTEM_SYOCDCR_DOCDF_Msk (0x1UL) /*!< DOCDF (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_SYOCDCR_DBGEN_Pos (7UL) /*!< DBGEN (Bit 7) */ + #define R_SYSTEM_SYOCDCR_DBGEN_Msk (0x80UL) /*!< DBGEN (Bitfield-Mask: 0x01) */ +/* ======================================================== RSTSR0 ========================================================= */ + #define R_SYSTEM_RSTSR0_PORF_Pos (0UL) /*!< PORF (Bit 0) */ + #define R_SYSTEM_RSTSR0_PORF_Msk (0x1UL) /*!< PORF (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_RSTSR0_LVD0RF_Pos (1UL) /*!< LVD0RF (Bit 1) */ + #define R_SYSTEM_RSTSR0_LVD0RF_Msk (0x2UL) /*!< LVD0RF (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_RSTSR0_LVD1RF_Pos (2UL) /*!< LVD1RF (Bit 2) */ + #define R_SYSTEM_RSTSR0_LVD1RF_Msk (0x4UL) /*!< LVD1RF (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_RSTSR0_LVD2RF_Pos (3UL) /*!< LVD2RF (Bit 3) */ + #define R_SYSTEM_RSTSR0_LVD2RF_Msk (0x8UL) /*!< LVD2RF (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_RSTSR0_LVD3RF_Pos (4UL) /*!< LVD3RF (Bit 4) */ + #define R_SYSTEM_RSTSR0_LVD3RF_Msk (0x10UL) /*!< LVD3RF (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_RSTSR0_LVD4RF_Pos (5UL) /*!< LVD4RF (Bit 5) */ + #define R_SYSTEM_RSTSR0_LVD4RF_Msk (0x20UL) /*!< LVD4RF (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_RSTSR0_LVD5RF_Pos (6UL) /*!< LVD5RF (Bit 6) */ + #define R_SYSTEM_RSTSR0_LVD5RF_Msk (0x40UL) /*!< LVD5RF (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_RSTSR0_DPSRSTF_Pos (7UL) /*!< DPSRSTF (Bit 7) */ + #define R_SYSTEM_RSTSR0_DPSRSTF_Msk (0x80UL) /*!< DPSRSTF (Bitfield-Mask: 0x01) */ +/* ======================================================== RSTSR2 ========================================================= */ + #define R_SYSTEM_RSTSR2_CWSF_Pos (0UL) /*!< CWSF (Bit 0) */ + #define R_SYSTEM_RSTSR2_CWSF_Msk (0x1UL) /*!< CWSF (Bitfield-Mask: 0x01) */ +/* ======================================================== RSTSR3 ========================================================= */ + #define R_SYSTEM_RSTSR3_OCPRF_Pos (4UL) /*!< OCPRF (Bit 4) */ + #define R_SYSTEM_RSTSR3_OCPRF_Msk (0x10UL) /*!< OCPRF (Bitfield-Mask: 0x01) */ +/* ========================================================= MOMCR ========================================================= */ + #define R_SYSTEM_MOMCR_MODRV0_Pos (1UL) /*!< MODRV0 (Bit 1) */ + #define R_SYSTEM_MOMCR_MODRV0_Msk (0xeUL) /*!< MODRV0 (Bitfield-Mask: 0x07) */ + #define R_SYSTEM_MOMCR_MOSEL_Pos (6UL) /*!< MOSEL (Bit 6) */ + #define R_SYSTEM_MOMCR_MOSEL_Msk (0x40UL) /*!< MOSEL (Bitfield-Mask: 0x01) */ +/* ======================================================== FWEPROR ======================================================== */ + #define R_SYSTEM_FWEPROR_FLWE_Pos (0UL) /*!< FLWE (Bit 0) */ + #define R_SYSTEM_FWEPROR_FLWE_Msk (0x3UL) /*!< FLWE (Bitfield-Mask: 0x03) */ +/* ======================================================== LVCMPCR ======================================================== */ + #define R_SYSTEM_LVCMPCR_LVD2E_Pos (6UL) /*!< LVD2E (Bit 6) */ + #define R_SYSTEM_LVCMPCR_LVD2E_Msk (0x40UL) /*!< LVD2E (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_LVCMPCR_LVD1E_Pos (5UL) /*!< LVD1E (Bit 5) */ + #define R_SYSTEM_LVCMPCR_LVD1E_Msk (0x20UL) /*!< LVD1E (Bitfield-Mask: 0x01) */ +/* ======================================================= LVD1CMPCR ======================================================= */ + #define R_SYSTEM_LVD1CMPCR_LVD1LVL_Pos (0UL) /*!< LVD1LVL (Bit 0) */ + #define R_SYSTEM_LVD1CMPCR_LVD1LVL_Msk (0x1fUL) /*!< LVD1LVL (Bitfield-Mask: 0x1f) */ + #define R_SYSTEM_LVD1CMPCR_LVD1E_Pos (7UL) /*!< LVD1E (Bit 7) */ + #define R_SYSTEM_LVD1CMPCR_LVD1E_Msk (0x80UL) /*!< LVD1E (Bitfield-Mask: 0x01) */ +/* ======================================================= LVD2CMPCR ======================================================= */ + #define R_SYSTEM_LVD2CMPCR_LVD2LVL_Pos (0UL) /*!< LVD2LVL (Bit 0) */ + #define R_SYSTEM_LVD2CMPCR_LVD2LVL_Msk (0x1fUL) /*!< LVD2LVL (Bitfield-Mask: 0x1f) */ + #define R_SYSTEM_LVD2CMPCR_LVD2E_Pos (7UL) /*!< LVD2E (Bit 7) */ + #define R_SYSTEM_LVD2CMPCR_LVD2E_Msk (0x80UL) /*!< LVD2E (Bitfield-Mask: 0x01) */ +/* ======================================================== LVD1CR0 ======================================================== */ + #define R_SYSTEM_LVD1CR0_RIE_Pos (0UL) /*!< RIE (Bit 0) */ + #define R_SYSTEM_LVD1CR0_RIE_Msk (0x1UL) /*!< RIE (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_LVD1CR0_DFDIS_Pos (1UL) /*!< DFDIS (Bit 1) */ + #define R_SYSTEM_LVD1CR0_DFDIS_Msk (0x2UL) /*!< DFDIS (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_LVD1CR0_CMPE_Pos (2UL) /*!< CMPE (Bit 2) */ + #define R_SYSTEM_LVD1CR0_CMPE_Msk (0x4UL) /*!< CMPE (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_LVD1CR0_FSAMP_Pos (4UL) /*!< FSAMP (Bit 4) */ + #define R_SYSTEM_LVD1CR0_FSAMP_Msk (0x30UL) /*!< FSAMP (Bitfield-Mask: 0x03) */ + #define R_SYSTEM_LVD1CR0_RI_Pos (6UL) /*!< RI (Bit 6) */ + #define R_SYSTEM_LVD1CR0_RI_Msk (0x40UL) /*!< RI (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_LVD1CR0_RN_Pos (7UL) /*!< RN (Bit 7) */ + #define R_SYSTEM_LVD1CR0_RN_Msk (0x80UL) /*!< RN (Bitfield-Mask: 0x01) */ +/* ======================================================== LVD2CR0 ======================================================== */ + #define R_SYSTEM_LVD2CR0_RIE_Pos (0UL) /*!< RIE (Bit 0) */ + #define R_SYSTEM_LVD2CR0_RIE_Msk (0x1UL) /*!< RIE (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_LVD2CR0_DFDIS_Pos (1UL) /*!< DFDIS (Bit 1) */ + #define R_SYSTEM_LVD2CR0_DFDIS_Msk (0x2UL) /*!< DFDIS (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_LVD2CR0_CMPE_Pos (2UL) /*!< CMPE (Bit 2) */ + #define R_SYSTEM_LVD2CR0_CMPE_Msk (0x4UL) /*!< CMPE (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_LVD2CR0_FSAMP_Pos (4UL) /*!< FSAMP (Bit 4) */ + #define R_SYSTEM_LVD2CR0_FSAMP_Msk (0x30UL) /*!< FSAMP (Bitfield-Mask: 0x03) */ + #define R_SYSTEM_LVD2CR0_RI_Pos (6UL) /*!< RI (Bit 6) */ + #define R_SYSTEM_LVD2CR0_RI_Msk (0x40UL) /*!< RI (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_LVD2CR0_RN_Pos (7UL) /*!< RN (Bit 7) */ + #define R_SYSTEM_LVD2CR0_RN_Msk (0x80UL) /*!< RN (Bitfield-Mask: 0x01) */ +/* ====================================================== VBATTMNSELR ====================================================== */ + #define R_SYSTEM_VBATTMNSELR_VBATTMNSEL_Pos (0UL) /*!< VBATTMNSEL (Bit 0) */ + #define R_SYSTEM_VBATTMNSELR_VBATTMNSEL_Msk (0x1UL) /*!< VBATTMNSEL (Bitfield-Mask: 0x01) */ +/* ======================================================= VBTBPCR1 ======================================================== */ + #define R_SYSTEM_VBTBPCR1_BPWSWSTP_Pos (0UL) /*!< BPWSWSTP (Bit 0) */ + #define R_SYSTEM_VBTBPCR1_BPWSWSTP_Msk (0x1UL) /*!< BPWSWSTP (Bitfield-Mask: 0x01) */ +/* ========================================================= LPSCR ========================================================= */ + #define R_SYSTEM_LPSCR_LPMD_Pos (0UL) /*!< LPMD (Bit 0) */ + #define R_SYSTEM_LPSCR_LPMD_Msk (0xfUL) /*!< LPMD (Bitfield-Mask: 0x0f) */ +/* ========================================================= SSCR1 ========================================================= */ + #define R_SYSTEM_SSCR1_SS1FR_Pos (0UL) /*!< SS1FR (Bit 0) */ + #define R_SYSTEM_SSCR1_SS1FR_Msk (0x1UL) /*!< SS1FR (Bitfield-Mask: 0x01) */ +/* ========================================================= LVOCR ========================================================= */ + #define R_SYSTEM_LVOCR_LVO0E_Pos (0UL) /*!< LVO0E (Bit 0) */ + #define R_SYSTEM_LVOCR_LVO0E_Msk (0x1UL) /*!< LVO0E (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_LVOCR_LVO1E_Pos (1UL) /*!< LVO1E (Bit 1) */ + #define R_SYSTEM_LVOCR_LVO1E_Msk (0x2UL) /*!< LVO1E (Bitfield-Mask: 0x01) */ +/* ======================================================= SYRSTMSK0 ======================================================= */ + #define R_SYSTEM_SYRSTMSK0_IWDTMASK_Pos (0UL) /*!< IWDTMASK (Bit 0) */ + #define R_SYSTEM_SYRSTMSK0_IWDTMASK_Msk (0x1UL) /*!< IWDTMASK (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_SYRSTMSK0_WDT0MASK_Pos (1UL) /*!< WDT0MASK (Bit 1) */ + #define R_SYSTEM_SYRSTMSK0_WDT0MASK_Msk (0x2UL) /*!< WDT0MASK (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_SYRSTMSK0_SWMASK_Pos (2UL) /*!< SWMASK (Bit 2) */ + #define R_SYSTEM_SYRSTMSK0_SWMASK_Msk (0x4UL) /*!< SWMASK (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_SYRSTMSK0_CLUP0MASK_Pos (4UL) /*!< CLUP0MASK (Bit 4) */ + #define R_SYSTEM_SYRSTMSK0_CLUP0MASK_Msk (0x10UL) /*!< CLUP0MASK (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_SYRSTMSK0_LM0MASK_Pos (5UL) /*!< LM0MASK (Bit 5) */ + #define R_SYSTEM_SYRSTMSK0_LM0MASK_Msk (0x20UL) /*!< LM0MASK (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_SYRSTMSK0_CMMASK_Pos (6UL) /*!< CMMASK (Bit 6) */ + #define R_SYSTEM_SYRSTMSK0_CMMASK_Msk (0x40UL) /*!< CMMASK (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_SYRSTMSK0_BUSMASK_Pos (7UL) /*!< BUSMASK (Bit 7) */ + #define R_SYSTEM_SYRSTMSK0_BUSMASK_Msk (0x80UL) /*!< BUSMASK (Bitfield-Mask: 0x01) */ +/* ======================================================= SYRSTMSK1 ======================================================= */ + #define R_SYSTEM_SYRSTMSK1_WDT1MASK_Pos (1UL) /*!< WDT1MASK (Bit 1) */ + #define R_SYSTEM_SYRSTMSK1_WDT1MASK_Msk (0x2UL) /*!< WDT1MASK (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_SYRSTMSK1_CLUP1MASK_Pos (4UL) /*!< CLUP1MASK (Bit 4) */ + #define R_SYSTEM_SYRSTMSK1_CLUP1MASK_Msk (0x10UL) /*!< CLUP1MASK (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_SYRSTMSK1_LM1MASK_Pos (5UL) /*!< LM1MASK (Bit 5) */ + #define R_SYSTEM_SYRSTMSK1_LM1MASK_Msk (0x20UL) /*!< LM1MASK (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_SYRSTMSK1_NWMASK_Pos (7UL) /*!< NWMASK (Bit 7) */ + #define R_SYSTEM_SYRSTMSK1_NWMASK_Msk (0x80UL) /*!< NWMASK (Bitfield-Mask: 0x01) */ +/* ======================================================= SYRSTMSK2 ======================================================= */ + #define R_SYSTEM_SYRSTMSK2_LVD1MASK_Pos (0UL) /*!< LVD1MASK (Bit 0) */ + #define R_SYSTEM_SYRSTMSK2_LVD1MASK_Msk (0x1UL) /*!< LVD1MASK (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_SYRSTMSK2_LVD2MASK_Pos (1UL) /*!< LVD2MASK (Bit 1) */ + #define R_SYSTEM_SYRSTMSK2_LVD2MASK_Msk (0x2UL) /*!< LVD2MASK (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_SYRSTMSK2_LVD3MASK_Pos (2UL) /*!< LVD3MASK (Bit 2) */ + #define R_SYSTEM_SYRSTMSK2_LVD3MASK_Msk (0x4UL) /*!< LVD3MASK (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_SYRSTMSK2_LVD4MASK_Pos (3UL) /*!< LVD4MASK (Bit 3) */ + #define R_SYSTEM_SYRSTMSK2_LVD4MASK_Msk (0x8UL) /*!< LVD4MASK (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_SYRSTMSK2_LVD5MASK_Pos (4UL) /*!< LVD5MASK (Bit 4) */ + #define R_SYSTEM_SYRSTMSK2_LVD5MASK_Msk (0x10UL) /*!< LVD5MASK (Bitfield-Mask: 0x01) */ +/* ======================================================= PLL1LDOCR ======================================================= */ + #define R_SYSTEM_PLL1LDOCR_LDOSTP_Pos (0UL) /*!< LDOSTP (Bit 0) */ + #define R_SYSTEM_PLL1LDOCR_LDOSTP_Msk (0x1UL) /*!< LDOSTP (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_PLL1LDOCR_SKEEP_Pos (1UL) /*!< SKEEP (Bit 1) */ + #define R_SYSTEM_PLL1LDOCR_SKEEP_Msk (0x2UL) /*!< SKEEP (Bitfield-Mask: 0x01) */ +/* ======================================================= PLL2LDOCR ======================================================= */ + #define R_SYSTEM_PLL2LDOCR_LDOSTP_Pos (0UL) /*!< LDOSTP (Bit 0) */ + #define R_SYSTEM_PLL2LDOCR_LDOSTP_Msk (0x1UL) /*!< LDOSTP (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_PLL2LDOCR_SKEEP_Pos (1UL) /*!< SKEEP (Bit 1) */ + #define R_SYSTEM_PLL2LDOCR_SKEEP_Msk (0x2UL) /*!< SKEEP (Bitfield-Mask: 0x01) */ +/* ======================================================= HOCOLDOCR ======================================================= */ + #define R_SYSTEM_HOCOLDOCR_LDOSTP_Pos (0UL) /*!< LDOSTP (Bit 0) */ + #define R_SYSTEM_HOCOLDOCR_LDOSTP_Msk (0x1UL) /*!< LDOSTP (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_HOCOLDOCR_SKEEP_Pos (1UL) /*!< SKEEP (Bit 1) */ + #define R_SYSTEM_HOCOLDOCR_SKEEP_Msk (0x2UL) /*!< SKEEP (Bitfield-Mask: 0x01) */ +/* ======================================================== LVD1FCR ======================================================== */ + #define R_SYSTEM_LVD1FCR_RHSEL_Pos (0UL) /*!< RHSEL (Bit 0) */ + #define R_SYSTEM_LVD1FCR_RHSEL_Msk (0x1UL) /*!< RHSEL (Bitfield-Mask: 0x01) */ +/* ======================================================== LVD2FCR ======================================================== */ + #define R_SYSTEM_LVD2FCR_RHSEL_Pos (0UL) /*!< RHSEL (Bit 0) */ + #define R_SYSTEM_LVD2FCR_RHSEL_Msk (0x1UL) /*!< RHSEL (Bitfield-Mask: 0x01) */ +/* ======================================================== SOSCCR ========================================================= */ + #define R_SYSTEM_SOSCCR_SOSTP_Pos (0UL) /*!< SOSTP (Bit 0) */ + #define R_SYSTEM_SOSCCR_SOSTP_Msk (0x1UL) /*!< SOSTP (Bitfield-Mask: 0x01) */ +/* ========================================================= SOMCR ========================================================= */ + #define R_SYSTEM_SOMCR_SODRV_Pos (0UL) /*!< SODRV (Bit 0) */ + #define R_SYSTEM_SOMCR_SODRV_Msk (0x3UL) /*!< SODRV (Bitfield-Mask: 0x03) */ + #define R_SYSTEM_SOMCR_SOSEL_Pos (6UL) /*!< SOSEL (Bit 6) */ + #define R_SYSTEM_SOMCR_SOSEL_Msk (0x40UL) /*!< SOSEL (Bitfield-Mask: 0x01) */ +/* ======================================================== VBTBER ========================================================= */ + #define R_SYSTEM_VBTBER_VBAE_Pos (3UL) /*!< VBAE (Bit 3) */ + #define R_SYSTEM_VBTBER_VBAE_Msk (0x8UL) /*!< VBAE (Bitfield-Mask: 0x01) */ +/* ======================================================= VBTBPCR2 ======================================================== */ + #define R_SYSTEM_VBTBPCR2_VDETLVL_Pos (0UL) /*!< VDETLVL (Bit 0) */ + #define R_SYSTEM_VBTBPCR2_VDETLVL_Msk (0x7UL) /*!< VDETLVL (Bitfield-Mask: 0x07) */ + #define R_SYSTEM_VBTBPCR2_VDETE_Pos (4UL) /*!< VDETE (Bit 4) */ + #define R_SYSTEM_VBTBPCR2_VDETE_Msk (0x10UL) /*!< VDETE (Bitfield-Mask: 0x01) */ +/* ======================================================== VBTBPSR ======================================================== */ + #define R_SYSTEM_VBTBPSR_VBPORF_Pos (0UL) /*!< VBPORF (Bit 0) */ + #define R_SYSTEM_VBTBPSR_VBPORF_Msk (0x1UL) /*!< VBPORF (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_VBTBPSR_VBPORM_Pos (4UL) /*!< VBPORM (Bit 4) */ + #define R_SYSTEM_VBTBPSR_VBPORM_Msk (0x10UL) /*!< VBPORM (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_VBTBPSR_BPWSWM_Pos (5UL) /*!< BPWSWM (Bit 5) */ + #define R_SYSTEM_VBTBPSR_BPWSWM_Msk (0x20UL) /*!< BPWSWM (Bitfield-Mask: 0x01) */ +/* ======================================================== VBTADSR ======================================================== */ + #define R_SYSTEM_VBTADSR_VBTADF0_Pos (0UL) /*!< VBTADF0 (Bit 0) */ + #define R_SYSTEM_VBTADSR_VBTADF0_Msk (0x1UL) /*!< VBTADF0 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_VBTADSR_VBTADF1_Pos (1UL) /*!< VBTADF1 (Bit 1) */ + #define R_SYSTEM_VBTADSR_VBTADF1_Msk (0x2UL) /*!< VBTADF1 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_VBTADSR_VBTADF2_Pos (2UL) /*!< VBTADF2 (Bit 2) */ + #define R_SYSTEM_VBTADSR_VBTADF2_Msk (0x4UL) /*!< VBTADF2 (Bitfield-Mask: 0x01) */ +/* ======================================================= VBTADCR1 ======================================================== */ + #define R_SYSTEM_VBTADCR1_VBTADIE0_Pos (0UL) /*!< VBTADIE0 (Bit 0) */ + #define R_SYSTEM_VBTADCR1_VBTADIE0_Msk (0x1UL) /*!< VBTADIE0 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_VBTADCR1_VBTADIE1_Pos (1UL) /*!< VBTADIE1 (Bit 1) */ + #define R_SYSTEM_VBTADCR1_VBTADIE1_Msk (0x2UL) /*!< VBTADIE1 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_VBTADCR1_VBTADIE2_Pos (2UL) /*!< VBTADIE2 (Bit 2) */ + #define R_SYSTEM_VBTADCR1_VBTADIE2_Msk (0x4UL) /*!< VBTADIE2 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_VBTADCR1_VBTADCLE0_Pos (4UL) /*!< VBTADCLE0 (Bit 4) */ + #define R_SYSTEM_VBTADCR1_VBTADCLE0_Msk (0x10UL) /*!< VBTADCLE0 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_VBTADCR1_VBTADCLE1_Pos (5UL) /*!< VBTADCLE1 (Bit 5) */ + #define R_SYSTEM_VBTADCR1_VBTADCLE1_Msk (0x20UL) /*!< VBTADCLE1 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_VBTADCR1_VBTADCLE2_Pos (6UL) /*!< VBTADCLE2 (Bit 6) */ + #define R_SYSTEM_VBTADCR1_VBTADCLE2_Msk (0x40UL) /*!< VBTADCLE2 (Bitfield-Mask: 0x01) */ +/* ======================================================= VBTADCR2 ======================================================== */ + #define R_SYSTEM_VBTADCR2_VBRTCES0_Pos (0UL) /*!< VBRTCES0 (Bit 0) */ + #define R_SYSTEM_VBTADCR2_VBRTCES0_Msk (0x1UL) /*!< VBRTCES0 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_VBTADCR2_VBRTCES1_Pos (1UL) /*!< VBRTCES1 (Bit 1) */ + #define R_SYSTEM_VBTADCR2_VBRTCES1_Msk (0x2UL) /*!< VBRTCES1 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_VBTADCR2_VBRTCES2_Pos (2UL) /*!< VBRTCES2 (Bit 2) */ + #define R_SYSTEM_VBTADCR2_VBRTCES2_Msk (0x4UL) /*!< VBRTCES2 (Bitfield-Mask: 0x01) */ +/* ======================================================= VBTICTLR ======================================================== */ + #define R_SYSTEM_VBTICTLR_VCH0INEN_Pos (0UL) /*!< VCH0INEN (Bit 0) */ + #define R_SYSTEM_VBTICTLR_VCH0INEN_Msk (0x1UL) /*!< VCH0INEN (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_VBTICTLR_VCH1INEN_Pos (1UL) /*!< VCH1INEN (Bit 1) */ + #define R_SYSTEM_VBTICTLR_VCH1INEN_Msk (0x2UL) /*!< VCH1INEN (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_VBTICTLR_VCH2INEN_Pos (2UL) /*!< VCH2INEN (Bit 2) */ + #define R_SYSTEM_VBTICTLR_VCH2INEN_Msk (0x4UL) /*!< VCH2INEN (Bitfield-Mask: 0x01) */ +/* ======================================================= VBTICTLR2 ======================================================= */ + #define R_SYSTEM_VBTICTLR2_VCH0NCE_Pos (0UL) /*!< VCH0NCE (Bit 0) */ + #define R_SYSTEM_VBTICTLR2_VCH0NCE_Msk (0x1UL) /*!< VCH0NCE (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_VBTICTLR2_VCH1NCE_Pos (1UL) /*!< VCH1NCE (Bit 1) */ + #define R_SYSTEM_VBTICTLR2_VCH1NCE_Msk (0x2UL) /*!< VCH1NCE (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_VBTICTLR2_VCH2NCE_Pos (2UL) /*!< VCH2NCE (Bit 2) */ + #define R_SYSTEM_VBTICTLR2_VCH2NCE_Msk (0x4UL) /*!< VCH2NCE (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_VBTICTLR2_VCH0EG_Pos (4UL) /*!< VCH0EG (Bit 4) */ + #define R_SYSTEM_VBTICTLR2_VCH0EG_Msk (0x10UL) /*!< VCH0EG (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_VBTICTLR2_VCH1EG_Pos (5UL) /*!< VCH1EG (Bit 5) */ + #define R_SYSTEM_VBTICTLR2_VCH1EG_Msk (0x20UL) /*!< VCH1EG (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_VBTICTLR2_VCH2EG_Pos (6UL) /*!< VCH2EG (Bit 6) */ + #define R_SYSTEM_VBTICTLR2_VCH2EG_Msk (0x40UL) /*!< VCH2EG (Bitfield-Mask: 0x01) */ +/* ======================================================= VBTIMONR ======================================================== */ + #define R_SYSTEM_VBTIMONR_VCH0MON_Pos (0UL) /*!< VCH0MON (Bit 0) */ + #define R_SYSTEM_VBTIMONR_VCH0MON_Msk (0x1UL) /*!< VCH0MON (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_VBTIMONR_VCH1MON_Pos (1UL) /*!< VCH1MON (Bit 1) */ + #define R_SYSTEM_VBTIMONR_VCH1MON_Msk (0x2UL) /*!< VCH1MON (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_VBTIMONR_VCH2MON_Pos (2UL) /*!< VCH2MON (Bit 2) */ + #define R_SYSTEM_VBTIMONR_VCH2MON_Msk (0x4UL) /*!< VCH2MON (Bitfield-Mask: 0x01) */ +/* ======================================================== VBTBKR0 ======================================================== */ + #define R_SYSTEM_VBTBKR0_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR0_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================== VBTBKR1 ======================================================== */ + #define R_SYSTEM_VBTBKR1_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR1_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================== VBTBKR2 ======================================================== */ + #define R_SYSTEM_VBTBKR2_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR2_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================== VBTBKR3 ======================================================== */ + #define R_SYSTEM_VBTBKR3_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR3_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================== VBTBKR4 ======================================================== */ + #define R_SYSTEM_VBTBKR4_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR4_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================== VBTBKR5 ======================================================== */ + #define R_SYSTEM_VBTBKR5_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR5_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================== VBTBKR6 ======================================================== */ + #define R_SYSTEM_VBTBKR6_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR6_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================== VBTBKR7 ======================================================== */ + #define R_SYSTEM_VBTBKR7_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR7_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================== VBTBKR8 ======================================================== */ + #define R_SYSTEM_VBTBKR8_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR8_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================== VBTBKR9 ======================================================== */ + #define R_SYSTEM_VBTBKR9_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR9_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR10 ======================================================== */ + #define R_SYSTEM_VBTBKR10_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR10_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR11 ======================================================== */ + #define R_SYSTEM_VBTBKR11_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR11_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR12 ======================================================== */ + #define R_SYSTEM_VBTBKR12_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR12_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR13 ======================================================== */ + #define R_SYSTEM_VBTBKR13_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR13_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR14 ======================================================== */ + #define R_SYSTEM_VBTBKR14_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR14_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR15 ======================================================== */ + #define R_SYSTEM_VBTBKR15_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR15_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR16 ======================================================== */ + #define R_SYSTEM_VBTBKR16_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR16_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR17 ======================================================== */ + #define R_SYSTEM_VBTBKR17_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR17_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR18 ======================================================== */ + #define R_SYSTEM_VBTBKR18_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR18_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR19 ======================================================== */ + #define R_SYSTEM_VBTBKR19_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR19_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR20 ======================================================== */ + #define R_SYSTEM_VBTBKR20_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR20_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR21 ======================================================== */ + #define R_SYSTEM_VBTBKR21_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR21_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR22 ======================================================== */ + #define R_SYSTEM_VBTBKR22_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR22_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR23 ======================================================== */ + #define R_SYSTEM_VBTBKR23_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR23_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR24 ======================================================== */ + #define R_SYSTEM_VBTBKR24_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR24_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR25 ======================================================== */ + #define R_SYSTEM_VBTBKR25_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR25_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR26 ======================================================== */ + #define R_SYSTEM_VBTBKR26_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR26_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR27 ======================================================== */ + #define R_SYSTEM_VBTBKR27_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR27_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR28 ======================================================== */ + #define R_SYSTEM_VBTBKR28_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR28_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR29 ======================================================== */ + #define R_SYSTEM_VBTBKR29_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR29_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR30 ======================================================== */ + #define R_SYSTEM_VBTBKR30_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR30_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR31 ======================================================== */ + #define R_SYSTEM_VBTBKR31_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR31_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR32 ======================================================== */ + #define R_SYSTEM_VBTBKR32_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR32_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR33 ======================================================== */ + #define R_SYSTEM_VBTBKR33_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR33_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR34 ======================================================== */ + #define R_SYSTEM_VBTBKR34_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR34_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR35 ======================================================== */ + #define R_SYSTEM_VBTBKR35_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR35_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR36 ======================================================== */ + #define R_SYSTEM_VBTBKR36_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR36_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR37 ======================================================== */ + #define R_SYSTEM_VBTBKR37_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR37_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR38 ======================================================== */ + #define R_SYSTEM_VBTBKR38_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR38_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR39 ======================================================== */ + #define R_SYSTEM_VBTBKR39_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR39_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR40 ======================================================== */ + #define R_SYSTEM_VBTBKR40_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR40_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR41 ======================================================== */ + #define R_SYSTEM_VBTBKR41_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR41_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR42 ======================================================== */ + #define R_SYSTEM_VBTBKR42_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR42_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR43 ======================================================== */ + #define R_SYSTEM_VBTBKR43_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR43_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR44 ======================================================== */ + #define R_SYSTEM_VBTBKR44_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR44_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR45 ======================================================== */ + #define R_SYSTEM_VBTBKR45_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR45_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR46 ======================================================== */ + #define R_SYSTEM_VBTBKR46_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR46_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR47 ======================================================== */ + #define R_SYSTEM_VBTBKR47_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR47_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR48 ======================================================== */ + #define R_SYSTEM_VBTBKR48_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR48_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR49 ======================================================== */ + #define R_SYSTEM_VBTBKR49_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR49_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR50 ======================================================== */ + #define R_SYSTEM_VBTBKR50_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR50_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR51 ======================================================== */ + #define R_SYSTEM_VBTBKR51_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR51_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR52 ======================================================== */ + #define R_SYSTEM_VBTBKR52_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR52_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR53 ======================================================== */ + #define R_SYSTEM_VBTBKR53_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR53_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR54 ======================================================== */ + #define R_SYSTEM_VBTBKR54_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR54_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR55 ======================================================== */ + #define R_SYSTEM_VBTBKR55_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR55_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR56 ======================================================== */ + #define R_SYSTEM_VBTBKR56_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR56_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR57 ======================================================== */ + #define R_SYSTEM_VBTBKR57_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR57_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR58 ======================================================== */ + #define R_SYSTEM_VBTBKR58_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR58_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR59 ======================================================== */ + #define R_SYSTEM_VBTBKR59_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR59_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR60 ======================================================== */ + #define R_SYSTEM_VBTBKR60_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR60_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR61 ======================================================== */ + #define R_SYSTEM_VBTBKR61_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR61_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR62 ======================================================== */ + #define R_SYSTEM_VBTBKR62_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR62_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR63 ======================================================== */ + #define R_SYSTEM_VBTBKR63_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR63_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR64 ======================================================== */ + #define R_SYSTEM_VBTBKR64_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR64_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR65 ======================================================== */ + #define R_SYSTEM_VBTBKR65_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR65_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR66 ======================================================== */ + #define R_SYSTEM_VBTBKR66_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR66_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR67 ======================================================== */ + #define R_SYSTEM_VBTBKR67_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR67_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR68 ======================================================== */ + #define R_SYSTEM_VBTBKR68_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR68_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR69 ======================================================== */ + #define R_SYSTEM_VBTBKR69_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR69_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR70 ======================================================== */ + #define R_SYSTEM_VBTBKR70_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR70_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR71 ======================================================== */ + #define R_SYSTEM_VBTBKR71_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR71_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR72 ======================================================== */ + #define R_SYSTEM_VBTBKR72_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR72_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR73 ======================================================== */ + #define R_SYSTEM_VBTBKR73_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR73_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR74 ======================================================== */ + #define R_SYSTEM_VBTBKR74_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR74_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR75 ======================================================== */ + #define R_SYSTEM_VBTBKR75_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR75_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR76 ======================================================== */ + #define R_SYSTEM_VBTBKR76_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR76_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR77 ======================================================== */ + #define R_SYSTEM_VBTBKR77_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR77_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR78 ======================================================== */ + #define R_SYSTEM_VBTBKR78_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR78_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR79 ======================================================== */ + #define R_SYSTEM_VBTBKR79_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR79_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR80 ======================================================== */ + #define R_SYSTEM_VBTBKR80_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR80_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR81 ======================================================== */ + #define R_SYSTEM_VBTBKR81_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR81_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR82 ======================================================== */ + #define R_SYSTEM_VBTBKR82_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR82_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR83 ======================================================== */ + #define R_SYSTEM_VBTBKR83_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR83_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR84 ======================================================== */ + #define R_SYSTEM_VBTBKR84_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR84_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR85 ======================================================== */ + #define R_SYSTEM_VBTBKR85_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR85_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR86 ======================================================== */ + #define R_SYSTEM_VBTBKR86_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR86_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR87 ======================================================== */ + #define R_SYSTEM_VBTBKR87_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR87_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR88 ======================================================== */ + #define R_SYSTEM_VBTBKR88_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR88_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR89 ======================================================== */ + #define R_SYSTEM_VBTBKR89_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR89_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR90 ======================================================== */ + #define R_SYSTEM_VBTBKR90_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR90_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR91 ======================================================== */ + #define R_SYSTEM_VBTBKR91_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR91_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR92 ======================================================== */ + #define R_SYSTEM_VBTBKR92_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR92_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR93 ======================================================== */ + #define R_SYSTEM_VBTBKR93_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR93_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR94 ======================================================== */ + #define R_SYSTEM_VBTBKR94_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR94_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR95 ======================================================== */ + #define R_SYSTEM_VBTBKR95_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR95_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR96 ======================================================== */ + #define R_SYSTEM_VBTBKR96_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR96_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR97 ======================================================== */ + #define R_SYSTEM_VBTBKR97_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR97_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR98 ======================================================== */ + #define R_SYSTEM_VBTBKR98_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR98_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR99 ======================================================== */ + #define R_SYSTEM_VBTBKR99_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR99_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR100 ======================================================= */ + #define R_SYSTEM_VBTBKR100_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR100_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR101 ======================================================= */ + #define R_SYSTEM_VBTBKR101_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR101_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR102 ======================================================= */ + #define R_SYSTEM_VBTBKR102_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR102_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR103 ======================================================= */ + #define R_SYSTEM_VBTBKR103_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR103_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR104 ======================================================= */ + #define R_SYSTEM_VBTBKR104_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR104_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR105 ======================================================= */ + #define R_SYSTEM_VBTBKR105_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR105_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR106 ======================================================= */ + #define R_SYSTEM_VBTBKR106_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR106_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR107 ======================================================= */ + #define R_SYSTEM_VBTBKR107_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR107_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR108 ======================================================= */ + #define R_SYSTEM_VBTBKR108_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR108_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR109 ======================================================= */ + #define R_SYSTEM_VBTBKR109_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR109_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR110 ======================================================= */ + #define R_SYSTEM_VBTBKR110_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR110_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR111 ======================================================= */ + #define R_SYSTEM_VBTBKR111_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR111_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR112 ======================================================= */ + #define R_SYSTEM_VBTBKR112_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR112_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR113 ======================================================= */ + #define R_SYSTEM_VBTBKR113_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR113_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR114 ======================================================= */ + #define R_SYSTEM_VBTBKR114_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR114_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR115 ======================================================= */ + #define R_SYSTEM_VBTBKR115_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR115_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR116 ======================================================= */ + #define R_SYSTEM_VBTBKR116_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR116_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR117 ======================================================= */ + #define R_SYSTEM_VBTBKR117_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR117_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR118 ======================================================= */ + #define R_SYSTEM_VBTBKR118_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR118_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR119 ======================================================= */ + #define R_SYSTEM_VBTBKR119_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR119_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR120 ======================================================= */ + #define R_SYSTEM_VBTBKR120_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR120_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR121 ======================================================= */ + #define R_SYSTEM_VBTBKR121_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR121_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR122 ======================================================= */ + #define R_SYSTEM_VBTBKR122_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR122_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR123 ======================================================= */ + #define R_SYSTEM_VBTBKR123_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR123_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR124 ======================================================= */ + #define R_SYSTEM_VBTBKR124_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR124_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR125 ======================================================= */ + #define R_SYSTEM_VBTBKR125_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR125_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR126 ======================================================= */ + #define R_SYSTEM_VBTBKR126_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR126_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR127 ======================================================= */ + #define R_SYSTEM_VBTBKR127_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR127_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ + +/* =========================================================================================================================== */ +/* ================ R_TSN_CAL ================ */ +/* =========================================================================================================================== */ + +/* ========================================================= TSCDR ========================================================= */ + #define R_TSN_CAL_TSCDR_TSCDR_Pos (0UL) /*!< TSCDR (Bit 0) */ + #define R_TSN_CAL_TSCDR_TSCDR_Msk (0xffffffffUL) /*!< TSCDR (Bitfield-Mask: 0xffffffff) */ + +/* =========================================================================================================================== */ +/* ================ R_TSN_CTRL ================ */ +/* =========================================================================================================================== */ + +/* ========================================================= TSCR ========================================================== */ + #define R_TSN_CTRL_TSCR_TSEN_Pos (7UL) /*!< TSEN (Bit 7) */ + #define R_TSN_CTRL_TSCR_TSEN_Msk (0x80UL) /*!< TSEN (Bitfield-Mask: 0x01) */ + #define R_TSN_CTRL_TSCR_TSOE_Pos (4UL) /*!< TSOE (Bit 4) */ + #define R_TSN_CTRL_TSCR_TSOE_Msk (0x10UL) /*!< TSOE (Bitfield-Mask: 0x01) */ + +/* =========================================================================================================================== */ +/* ================ R_USB_FS0 ================ */ +/* =========================================================================================================================== */ + +/* ======================================================== SYSCFG ========================================================= */ + #define R_USB_FS0_SYSCFG_SCKE_Pos (10UL) /*!< SCKE (Bit 10) */ + #define R_USB_FS0_SYSCFG_SCKE_Msk (0x400UL) /*!< SCKE (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_SYSCFG_CNEN_Pos (8UL) /*!< CNEN (Bit 8) */ + #define R_USB_FS0_SYSCFG_CNEN_Msk (0x100UL) /*!< CNEN (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_SYSCFG_DCFM_Pos (6UL) /*!< DCFM (Bit 6) */ + #define R_USB_FS0_SYSCFG_DCFM_Msk (0x40UL) /*!< DCFM (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_SYSCFG_DRPD_Pos (5UL) /*!< DRPD (Bit 5) */ + #define R_USB_FS0_SYSCFG_DRPD_Msk (0x20UL) /*!< DRPD (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_SYSCFG_DPRPU_Pos (4UL) /*!< DPRPU (Bit 4) */ + #define R_USB_FS0_SYSCFG_DPRPU_Msk (0x10UL) /*!< DPRPU (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_SYSCFG_DMRPU_Pos (3UL) /*!< DMRPU (Bit 3) */ + #define R_USB_FS0_SYSCFG_DMRPU_Msk (0x8UL) /*!< DMRPU (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_SYSCFG_USBE_Pos (0UL) /*!< USBE (Bit 0) */ + #define R_USB_FS0_SYSCFG_USBE_Msk (0x1UL) /*!< USBE (Bitfield-Mask: 0x01) */ +/* ======================================================== BUSWAIT ======================================================== */ + #define R_USB_FS0_BUSWAIT_BWAIT_Pos (0UL) /*!< BWAIT (Bit 0) */ + #define R_USB_FS0_BUSWAIT_BWAIT_Msk (0xfUL) /*!< BWAIT (Bitfield-Mask: 0x0f) */ +/* ======================================================== SYSSTS0 ======================================================== */ + #define R_USB_FS0_SYSSTS0_OVCMON_Pos (14UL) /*!< OVCMON (Bit 14) */ + #define R_USB_FS0_SYSSTS0_OVCMON_Msk (0xc000UL) /*!< OVCMON (Bitfield-Mask: 0x03) */ + #define R_USB_FS0_SYSSTS0_HTACT_Pos (6UL) /*!< HTACT (Bit 6) */ + #define R_USB_FS0_SYSSTS0_HTACT_Msk (0x40UL) /*!< HTACT (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_SYSSTS0_SOFEA_Pos (5UL) /*!< SOFEA (Bit 5) */ + #define R_USB_FS0_SYSSTS0_SOFEA_Msk (0x20UL) /*!< SOFEA (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_SYSSTS0_IDMON_Pos (2UL) /*!< IDMON (Bit 2) */ + #define R_USB_FS0_SYSSTS0_IDMON_Msk (0x4UL) /*!< IDMON (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_SYSSTS0_LNST_Pos (0UL) /*!< LNST (Bit 0) */ + #define R_USB_FS0_SYSSTS0_LNST_Msk (0x3UL) /*!< LNST (Bitfield-Mask: 0x03) */ +/* ======================================================== PLLSTA ========================================================= */ + #define R_USB_FS0_PLLSTA_PLLLOCK_Pos (0UL) /*!< PLLLOCK (Bit 0) */ + #define R_USB_FS0_PLLSTA_PLLLOCK_Msk (0x1UL) /*!< PLLLOCK (Bitfield-Mask: 0x01) */ +/* ======================================================= DVSTCTR0 ======================================================== */ + #define R_USB_FS0_DVSTCTR0_HNPBTOA_Pos (11UL) /*!< HNPBTOA (Bit 11) */ + #define R_USB_FS0_DVSTCTR0_HNPBTOA_Msk (0x800UL) /*!< HNPBTOA (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_DVSTCTR0_EXICEN_Pos (10UL) /*!< EXICEN (Bit 10) */ + #define R_USB_FS0_DVSTCTR0_EXICEN_Msk (0x400UL) /*!< EXICEN (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_DVSTCTR0_VBUSEN_Pos (9UL) /*!< VBUSEN (Bit 9) */ + #define R_USB_FS0_DVSTCTR0_VBUSEN_Msk (0x200UL) /*!< VBUSEN (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_DVSTCTR0_WKUP_Pos (8UL) /*!< WKUP (Bit 8) */ + #define R_USB_FS0_DVSTCTR0_WKUP_Msk (0x100UL) /*!< WKUP (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_DVSTCTR0_RWUPE_Pos (7UL) /*!< RWUPE (Bit 7) */ + #define R_USB_FS0_DVSTCTR0_RWUPE_Msk (0x80UL) /*!< RWUPE (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_DVSTCTR0_USBRST_Pos (6UL) /*!< USBRST (Bit 6) */ + #define R_USB_FS0_DVSTCTR0_USBRST_Msk (0x40UL) /*!< USBRST (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_DVSTCTR0_RESUME_Pos (5UL) /*!< RESUME (Bit 5) */ + #define R_USB_FS0_DVSTCTR0_RESUME_Msk (0x20UL) /*!< RESUME (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_DVSTCTR0_UACT_Pos (4UL) /*!< UACT (Bit 4) */ + #define R_USB_FS0_DVSTCTR0_UACT_Msk (0x10UL) /*!< UACT (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_DVSTCTR0_RHST_Pos (0UL) /*!< RHST (Bit 0) */ + #define R_USB_FS0_DVSTCTR0_RHST_Msk (0x7UL) /*!< RHST (Bitfield-Mask: 0x07) */ +/* ======================================================= TESTMODE ======================================================== */ + #define R_USB_FS0_TESTMODE_UTST_Pos (0UL) /*!< UTST (Bit 0) */ + #define R_USB_FS0_TESTMODE_UTST_Msk (0xfUL) /*!< UTST (Bitfield-Mask: 0x0f) */ +/* ======================================================== CFIFOL ========================================================= */ +/* ======================================================== CFIFOLL ======================================================== */ +/* ========================================================= CFIFO ========================================================= */ +/* ======================================================== CFIFOH ========================================================= */ +/* ======================================================== CFIFOHH ======================================================== */ +/* ======================================================== D0FIFOL ======================================================== */ +/* ======================================================= D0FIFOLL ======================================================== */ +/* ======================================================== D0FIFO ========================================================= */ +/* ======================================================== D0FIFOH ======================================================== */ +/* ======================================================= D0FIFOHH ======================================================== */ +/* ======================================================== D1FIFOL ======================================================== */ +/* ======================================================= D1FIFOLL ======================================================== */ +/* ======================================================== D1FIFO ========================================================= */ +/* ======================================================== D1FIFOH ======================================================== */ +/* ======================================================= D1FIFOHH ======================================================== */ +/* ======================================================= CFIFOSEL ======================================================== */ + #define R_USB_FS0_CFIFOSEL_RCNT_Pos (15UL) /*!< RCNT (Bit 15) */ + #define R_USB_FS0_CFIFOSEL_RCNT_Msk (0x8000UL) /*!< RCNT (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_CFIFOSEL_REW_Pos (14UL) /*!< REW (Bit 14) */ + #define R_USB_FS0_CFIFOSEL_REW_Msk (0x4000UL) /*!< REW (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_CFIFOSEL_MBW_Pos (10UL) /*!< MBW (Bit 10) */ + #define R_USB_FS0_CFIFOSEL_MBW_Msk (0xc00UL) /*!< MBW (Bitfield-Mask: 0x03) */ + #define R_USB_FS0_CFIFOSEL_BIGEND_Pos (8UL) /*!< BIGEND (Bit 8) */ + #define R_USB_FS0_CFIFOSEL_BIGEND_Msk (0x100UL) /*!< BIGEND (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_CFIFOSEL_ISEL_Pos (5UL) /*!< ISEL (Bit 5) */ + #define R_USB_FS0_CFIFOSEL_ISEL_Msk (0x20UL) /*!< ISEL (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_CFIFOSEL_CURPIPE_Pos (0UL) /*!< CURPIPE (Bit 0) */ + #define R_USB_FS0_CFIFOSEL_CURPIPE_Msk (0xfUL) /*!< CURPIPE (Bitfield-Mask: 0x0f) */ +/* ======================================================= CFIFOCTR ======================================================== */ + #define R_USB_FS0_CFIFOCTR_BVAL_Pos (15UL) /*!< BVAL (Bit 15) */ + #define R_USB_FS0_CFIFOCTR_BVAL_Msk (0x8000UL) /*!< BVAL (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_CFIFOCTR_BCLR_Pos (14UL) /*!< BCLR (Bit 14) */ + #define R_USB_FS0_CFIFOCTR_BCLR_Msk (0x4000UL) /*!< BCLR (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_CFIFOCTR_FRDY_Pos (13UL) /*!< FRDY (Bit 13) */ + #define R_USB_FS0_CFIFOCTR_FRDY_Msk (0x2000UL) /*!< FRDY (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_CFIFOCTR_DTLN_Pos (0UL) /*!< DTLN (Bit 0) */ + #define R_USB_FS0_CFIFOCTR_DTLN_Msk (0xfffUL) /*!< DTLN (Bitfield-Mask: 0xfff) */ +/* ======================================================= D0FIFOSEL ======================================================= */ + #define R_USB_FS0_D0FIFOSEL_RCNT_Pos (15UL) /*!< RCNT (Bit 15) */ + #define R_USB_FS0_D0FIFOSEL_RCNT_Msk (0x8000UL) /*!< RCNT (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_D0FIFOSEL_REW_Pos (14UL) /*!< REW (Bit 14) */ + #define R_USB_FS0_D0FIFOSEL_REW_Msk (0x4000UL) /*!< REW (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_D0FIFOSEL_DCLRM_Pos (13UL) /*!< DCLRM (Bit 13) */ + #define R_USB_FS0_D0FIFOSEL_DCLRM_Msk (0x2000UL) /*!< DCLRM (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_D0FIFOSEL_DREQE_Pos (12UL) /*!< DREQE (Bit 12) */ + #define R_USB_FS0_D0FIFOSEL_DREQE_Msk (0x1000UL) /*!< DREQE (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_D0FIFOSEL_MBW_Pos (10UL) /*!< MBW (Bit 10) */ + #define R_USB_FS0_D0FIFOSEL_MBW_Msk (0xc00UL) /*!< MBW (Bitfield-Mask: 0x03) */ + #define R_USB_FS0_D0FIFOSEL_BIGEND_Pos (8UL) /*!< BIGEND (Bit 8) */ + #define R_USB_FS0_D0FIFOSEL_BIGEND_Msk (0x100UL) /*!< BIGEND (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_D0FIFOSEL_CURPIPE_Pos (0UL) /*!< CURPIPE (Bit 0) */ + #define R_USB_FS0_D0FIFOSEL_CURPIPE_Msk (0xfUL) /*!< CURPIPE (Bitfield-Mask: 0x0f) */ +/* ======================================================= D0FIFOCTR ======================================================= */ + #define R_USB_FS0_D0FIFOCTR_BVAL_Pos (15UL) /*!< BVAL (Bit 15) */ + #define R_USB_FS0_D0FIFOCTR_BVAL_Msk (0x8000UL) /*!< BVAL (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_D0FIFOCTR_BCLR_Pos (14UL) /*!< BCLR (Bit 14) */ + #define R_USB_FS0_D0FIFOCTR_BCLR_Msk (0x4000UL) /*!< BCLR (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_D0FIFOCTR_FRDY_Pos (13UL) /*!< FRDY (Bit 13) */ + #define R_USB_FS0_D0FIFOCTR_FRDY_Msk (0x2000UL) /*!< FRDY (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_D0FIFOCTR_DTLN_Pos (0UL) /*!< DTLN (Bit 0) */ + #define R_USB_FS0_D0FIFOCTR_DTLN_Msk (0xfffUL) /*!< DTLN (Bitfield-Mask: 0xfff) */ +/* ======================================================= D1FIFOSEL ======================================================= */ + #define R_USB_FS0_D1FIFOSEL_RCNT_Pos (15UL) /*!< RCNT (Bit 15) */ + #define R_USB_FS0_D1FIFOSEL_RCNT_Msk (0x8000UL) /*!< RCNT (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_D1FIFOSEL_REW_Pos (14UL) /*!< REW (Bit 14) */ + #define R_USB_FS0_D1FIFOSEL_REW_Msk (0x4000UL) /*!< REW (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_D1FIFOSEL_DCLRM_Pos (13UL) /*!< DCLRM (Bit 13) */ + #define R_USB_FS0_D1FIFOSEL_DCLRM_Msk (0x2000UL) /*!< DCLRM (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_D1FIFOSEL_DREQE_Pos (12UL) /*!< DREQE (Bit 12) */ + #define R_USB_FS0_D1FIFOSEL_DREQE_Msk (0x1000UL) /*!< DREQE (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_D1FIFOSEL_MBW_Pos (10UL) /*!< MBW (Bit 10) */ + #define R_USB_FS0_D1FIFOSEL_MBW_Msk (0xc00UL) /*!< MBW (Bitfield-Mask: 0x03) */ + #define R_USB_FS0_D1FIFOSEL_BIGEND_Pos (8UL) /*!< BIGEND (Bit 8) */ + #define R_USB_FS0_D1FIFOSEL_BIGEND_Msk (0x100UL) /*!< BIGEND (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_D1FIFOSEL_CURPIPE_Pos (0UL) /*!< CURPIPE (Bit 0) */ + #define R_USB_FS0_D1FIFOSEL_CURPIPE_Msk (0xfUL) /*!< CURPIPE (Bitfield-Mask: 0x0f) */ +/* ======================================================= D1FIFOCTR ======================================================= */ + #define R_USB_FS0_D1FIFOCTR_BVAL_Pos (15UL) /*!< BVAL (Bit 15) */ + #define R_USB_FS0_D1FIFOCTR_BVAL_Msk (0x8000UL) /*!< BVAL (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_D1FIFOCTR_BCLR_Pos (14UL) /*!< BCLR (Bit 14) */ + #define R_USB_FS0_D1FIFOCTR_BCLR_Msk (0x4000UL) /*!< BCLR (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_D1FIFOCTR_FRDY_Pos (13UL) /*!< FRDY (Bit 13) */ + #define R_USB_FS0_D1FIFOCTR_FRDY_Msk (0x2000UL) /*!< FRDY (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_D1FIFOCTR_DTLN_Pos (0UL) /*!< DTLN (Bit 0) */ + #define R_USB_FS0_D1FIFOCTR_DTLN_Msk (0xfffUL) /*!< DTLN (Bitfield-Mask: 0xfff) */ +/* ======================================================== INTENB0 ======================================================== */ + #define R_USB_FS0_INTENB0_VBSE_Pos (15UL) /*!< VBSE (Bit 15) */ + #define R_USB_FS0_INTENB0_VBSE_Msk (0x8000UL) /*!< VBSE (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_INTENB0_RSME_Pos (14UL) /*!< RSME (Bit 14) */ + #define R_USB_FS0_INTENB0_RSME_Msk (0x4000UL) /*!< RSME (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_INTENB0_SOFE_Pos (13UL) /*!< SOFE (Bit 13) */ + #define R_USB_FS0_INTENB0_SOFE_Msk (0x2000UL) /*!< SOFE (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_INTENB0_DVSE_Pos (12UL) /*!< DVSE (Bit 12) */ + #define R_USB_FS0_INTENB0_DVSE_Msk (0x1000UL) /*!< DVSE (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_INTENB0_CTRE_Pos (11UL) /*!< CTRE (Bit 11) */ + #define R_USB_FS0_INTENB0_CTRE_Msk (0x800UL) /*!< CTRE (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_INTENB0_BEMPE_Pos (10UL) /*!< BEMPE (Bit 10) */ + #define R_USB_FS0_INTENB0_BEMPE_Msk (0x400UL) /*!< BEMPE (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_INTENB0_NRDYE_Pos (9UL) /*!< NRDYE (Bit 9) */ + #define R_USB_FS0_INTENB0_NRDYE_Msk (0x200UL) /*!< NRDYE (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_INTENB0_BRDYE_Pos (8UL) /*!< BRDYE (Bit 8) */ + #define R_USB_FS0_INTENB0_BRDYE_Msk (0x100UL) /*!< BRDYE (Bitfield-Mask: 0x01) */ +/* ======================================================== INTENB1 ======================================================== */ + #define R_USB_FS0_INTENB1_OVRCRE_Pos (15UL) /*!< OVRCRE (Bit 15) */ + #define R_USB_FS0_INTENB1_OVRCRE_Msk (0x8000UL) /*!< OVRCRE (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_INTENB1_BCHGE_Pos (14UL) /*!< BCHGE (Bit 14) */ + #define R_USB_FS0_INTENB1_BCHGE_Msk (0x4000UL) /*!< BCHGE (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_INTENB1_DTCHE_Pos (12UL) /*!< DTCHE (Bit 12) */ + #define R_USB_FS0_INTENB1_DTCHE_Msk (0x1000UL) /*!< DTCHE (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_INTENB1_ATTCHE_Pos (11UL) /*!< ATTCHE (Bit 11) */ + #define R_USB_FS0_INTENB1_ATTCHE_Msk (0x800UL) /*!< ATTCHE (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_INTENB1_EOFERRE_Pos (6UL) /*!< EOFERRE (Bit 6) */ + #define R_USB_FS0_INTENB1_EOFERRE_Msk (0x40UL) /*!< EOFERRE (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_INTENB1_SIGNE_Pos (5UL) /*!< SIGNE (Bit 5) */ + #define R_USB_FS0_INTENB1_SIGNE_Msk (0x20UL) /*!< SIGNE (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_INTENB1_SACKE_Pos (4UL) /*!< SACKE (Bit 4) */ + #define R_USB_FS0_INTENB1_SACKE_Msk (0x10UL) /*!< SACKE (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_INTENB1_PDDETINTE0_Pos (0UL) /*!< PDDETINTE0 (Bit 0) */ + #define R_USB_FS0_INTENB1_PDDETINTE0_Msk (0x1UL) /*!< PDDETINTE0 (Bitfield-Mask: 0x01) */ +/* ======================================================== BRDYENB ======================================================== */ + #define R_USB_FS0_BRDYENB_PIPEBRDYE_Pos (0UL) /*!< PIPEBRDYE (Bit 0) */ + #define R_USB_FS0_BRDYENB_PIPEBRDYE_Msk (0x1UL) /*!< PIPEBRDYE (Bitfield-Mask: 0x01) */ +/* ======================================================== NRDYENB ======================================================== */ + #define R_USB_FS0_NRDYENB_PIPENRDYE_Pos (0UL) /*!< PIPENRDYE (Bit 0) */ + #define R_USB_FS0_NRDYENB_PIPENRDYE_Msk (0x1UL) /*!< PIPENRDYE (Bitfield-Mask: 0x01) */ +/* ======================================================== BEMPENB ======================================================== */ + #define R_USB_FS0_BEMPENB_PIPEBEMPE_Pos (0UL) /*!< PIPEBEMPE (Bit 0) */ + #define R_USB_FS0_BEMPENB_PIPEBEMPE_Msk (0x1UL) /*!< PIPEBEMPE (Bitfield-Mask: 0x01) */ +/* ======================================================== SOFCFG ========================================================= */ + #define R_USB_FS0_SOFCFG_TRNENSEL_Pos (8UL) /*!< TRNENSEL (Bit 8) */ + #define R_USB_FS0_SOFCFG_TRNENSEL_Msk (0x100UL) /*!< TRNENSEL (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_SOFCFG_BRDYM_Pos (6UL) /*!< BRDYM (Bit 6) */ + #define R_USB_FS0_SOFCFG_BRDYM_Msk (0x40UL) /*!< BRDYM (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_SOFCFG_INTL_Pos (5UL) /*!< INTL (Bit 5) */ + #define R_USB_FS0_SOFCFG_INTL_Msk (0x20UL) /*!< INTL (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_SOFCFG_EDGESTS_Pos (4UL) /*!< EDGESTS (Bit 4) */ + #define R_USB_FS0_SOFCFG_EDGESTS_Msk (0x10UL) /*!< EDGESTS (Bitfield-Mask: 0x01) */ +/* ======================================================== PHYSET ========================================================= */ + #define R_USB_FS0_PHYSET_HSEB_Pos (15UL) /*!< HSEB (Bit 15) */ + #define R_USB_FS0_PHYSET_HSEB_Msk (0x8000UL) /*!< HSEB (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_PHYSET_REPSTART_Pos (11UL) /*!< REPSTART (Bit 11) */ + #define R_USB_FS0_PHYSET_REPSTART_Msk (0x800UL) /*!< REPSTART (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_PHYSET_REPSEL_Pos (8UL) /*!< REPSEL (Bit 8) */ + #define R_USB_FS0_PHYSET_REPSEL_Msk (0x300UL) /*!< REPSEL (Bitfield-Mask: 0x03) */ + #define R_USB_FS0_PHYSET_CLKSEL_Pos (4UL) /*!< CLKSEL (Bit 4) */ + #define R_USB_FS0_PHYSET_CLKSEL_Msk (0x30UL) /*!< CLKSEL (Bitfield-Mask: 0x03) */ + #define R_USB_FS0_PHYSET_CDPEN_Pos (3UL) /*!< CDPEN (Bit 3) */ + #define R_USB_FS0_PHYSET_CDPEN_Msk (0x8UL) /*!< CDPEN (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_PHYSET_PLLRESET_Pos (1UL) /*!< PLLRESET (Bit 1) */ + #define R_USB_FS0_PHYSET_PLLRESET_Msk (0x2UL) /*!< PLLRESET (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_PHYSET_DIRPD_Pos (0UL) /*!< DIRPD (Bit 0) */ + #define R_USB_FS0_PHYSET_DIRPD_Msk (0x1UL) /*!< DIRPD (Bitfield-Mask: 0x01) */ +/* ======================================================== INTSTS0 ======================================================== */ + #define R_USB_FS0_INTSTS0_VBINT_Pos (15UL) /*!< VBINT (Bit 15) */ + #define R_USB_FS0_INTSTS0_VBINT_Msk (0x8000UL) /*!< VBINT (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_INTSTS0_RESM_Pos (14UL) /*!< RESM (Bit 14) */ + #define R_USB_FS0_INTSTS0_RESM_Msk (0x4000UL) /*!< RESM (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_INTSTS0_SOFR_Pos (13UL) /*!< SOFR (Bit 13) */ + #define R_USB_FS0_INTSTS0_SOFR_Msk (0x2000UL) /*!< SOFR (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_INTSTS0_DVST_Pos (12UL) /*!< DVST (Bit 12) */ + #define R_USB_FS0_INTSTS0_DVST_Msk (0x1000UL) /*!< DVST (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_INTSTS0_CTRT_Pos (11UL) /*!< CTRT (Bit 11) */ + #define R_USB_FS0_INTSTS0_CTRT_Msk (0x800UL) /*!< CTRT (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_INTSTS0_BEMP_Pos (10UL) /*!< BEMP (Bit 10) */ + #define R_USB_FS0_INTSTS0_BEMP_Msk (0x400UL) /*!< BEMP (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_INTSTS0_NRDY_Pos (9UL) /*!< NRDY (Bit 9) */ + #define R_USB_FS0_INTSTS0_NRDY_Msk (0x200UL) /*!< NRDY (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_INTSTS0_BRDY_Pos (8UL) /*!< BRDY (Bit 8) */ + #define R_USB_FS0_INTSTS0_BRDY_Msk (0x100UL) /*!< BRDY (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_INTSTS0_VBSTS_Pos (7UL) /*!< VBSTS (Bit 7) */ + #define R_USB_FS0_INTSTS0_VBSTS_Msk (0x80UL) /*!< VBSTS (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_INTSTS0_DVSQ_Pos (4UL) /*!< DVSQ (Bit 4) */ + #define R_USB_FS0_INTSTS0_DVSQ_Msk (0x70UL) /*!< DVSQ (Bitfield-Mask: 0x07) */ + #define R_USB_FS0_INTSTS0_VALID_Pos (3UL) /*!< VALID (Bit 3) */ + #define R_USB_FS0_INTSTS0_VALID_Msk (0x8UL) /*!< VALID (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_INTSTS0_CTSQ_Pos (0UL) /*!< CTSQ (Bit 0) */ + #define R_USB_FS0_INTSTS0_CTSQ_Msk (0x7UL) /*!< CTSQ (Bitfield-Mask: 0x07) */ +/* ======================================================== INTSTS1 ======================================================== */ + #define R_USB_FS0_INTSTS1_OVRCR_Pos (15UL) /*!< OVRCR (Bit 15) */ + #define R_USB_FS0_INTSTS1_OVRCR_Msk (0x8000UL) /*!< OVRCR (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_INTSTS1_BCHG_Pos (14UL) /*!< BCHG (Bit 14) */ + #define R_USB_FS0_INTSTS1_BCHG_Msk (0x4000UL) /*!< BCHG (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_INTSTS1_DTCH_Pos (12UL) /*!< DTCH (Bit 12) */ + #define R_USB_FS0_INTSTS1_DTCH_Msk (0x1000UL) /*!< DTCH (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_INTSTS1_ATTCH_Pos (11UL) /*!< ATTCH (Bit 11) */ + #define R_USB_FS0_INTSTS1_ATTCH_Msk (0x800UL) /*!< ATTCH (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_INTSTS1_L1RSMEND_Pos (9UL) /*!< L1RSMEND (Bit 9) */ + #define R_USB_FS0_INTSTS1_L1RSMEND_Msk (0x200UL) /*!< L1RSMEND (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_INTSTS1_LPMEND_Pos (8UL) /*!< LPMEND (Bit 8) */ + #define R_USB_FS0_INTSTS1_LPMEND_Msk (0x100UL) /*!< LPMEND (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_INTSTS1_EOFERR_Pos (6UL) /*!< EOFERR (Bit 6) */ + #define R_USB_FS0_INTSTS1_EOFERR_Msk (0x40UL) /*!< EOFERR (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_INTSTS1_SIGN_Pos (5UL) /*!< SIGN (Bit 5) */ + #define R_USB_FS0_INTSTS1_SIGN_Msk (0x20UL) /*!< SIGN (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_INTSTS1_SACK_Pos (4UL) /*!< SACK (Bit 4) */ + #define R_USB_FS0_INTSTS1_SACK_Msk (0x10UL) /*!< SACK (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_INTSTS1_PDDETINT0_Pos (0UL) /*!< PDDETINT0 (Bit 0) */ + #define R_USB_FS0_INTSTS1_PDDETINT0_Msk (0x1UL) /*!< PDDETINT0 (Bitfield-Mask: 0x01) */ +/* ======================================================== BRDYSTS ======================================================== */ + #define R_USB_FS0_BRDYSTS_PIPEBRDY_Pos (0UL) /*!< PIPEBRDY (Bit 0) */ + #define R_USB_FS0_BRDYSTS_PIPEBRDY_Msk (0x1UL) /*!< PIPEBRDY (Bitfield-Mask: 0x01) */ +/* ======================================================== NRDYSTS ======================================================== */ + #define R_USB_FS0_NRDYSTS_PIPENRDY_Pos (0UL) /*!< PIPENRDY (Bit 0) */ + #define R_USB_FS0_NRDYSTS_PIPENRDY_Msk (0x1UL) /*!< PIPENRDY (Bitfield-Mask: 0x01) */ +/* ======================================================== BEMPSTS ======================================================== */ + #define R_USB_FS0_BEMPSTS_PIPEBEMP_Pos (0UL) /*!< PIPEBEMP (Bit 0) */ + #define R_USB_FS0_BEMPSTS_PIPEBEMP_Msk (0x1UL) /*!< PIPEBEMP (Bitfield-Mask: 0x01) */ +/* ======================================================== FRMNUM ========================================================= */ + #define R_USB_FS0_FRMNUM_OVRN_Pos (15UL) /*!< OVRN (Bit 15) */ + #define R_USB_FS0_FRMNUM_OVRN_Msk (0x8000UL) /*!< OVRN (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_FRMNUM_CRCE_Pos (14UL) /*!< CRCE (Bit 14) */ + #define R_USB_FS0_FRMNUM_CRCE_Msk (0x4000UL) /*!< CRCE (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_FRMNUM_FRNM_Pos (0UL) /*!< FRNM (Bit 0) */ + #define R_USB_FS0_FRMNUM_FRNM_Msk (0x7ffUL) /*!< FRNM (Bitfield-Mask: 0x7ff) */ +/* ======================================================== UFRMNUM ======================================================== */ + #define R_USB_FS0_UFRMNUM_DVCHG_Pos (15UL) /*!< DVCHG (Bit 15) */ + #define R_USB_FS0_UFRMNUM_DVCHG_Msk (0x8000UL) /*!< DVCHG (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_UFRMNUM_UFRNM_Pos (0UL) /*!< UFRNM (Bit 0) */ + #define R_USB_FS0_UFRMNUM_UFRNM_Msk (0x7UL) /*!< UFRNM (Bitfield-Mask: 0x07) */ +/* ======================================================== USBADDR ======================================================== */ + #define R_USB_FS0_USBADDR_STSRECOV0_Pos (8UL) /*!< STSRECOV0 (Bit 8) */ + #define R_USB_FS0_USBADDR_STSRECOV0_Msk (0x700UL) /*!< STSRECOV0 (Bitfield-Mask: 0x07) */ + #define R_USB_FS0_USBADDR_USBADDR_Pos (0UL) /*!< USBADDR (Bit 0) */ + #define R_USB_FS0_USBADDR_USBADDR_Msk (0x7fUL) /*!< USBADDR (Bitfield-Mask: 0x7f) */ +/* ======================================================== USBREQ ========================================================= */ + #define R_USB_FS0_USBREQ_BREQUEST_Pos (8UL) /*!< BREQUEST (Bit 8) */ + #define R_USB_FS0_USBREQ_BREQUEST_Msk (0xff00UL) /*!< BREQUEST (Bitfield-Mask: 0xff) */ + #define R_USB_FS0_USBREQ_BMREQUESTTYPE_Pos (0UL) /*!< BMREQUESTTYPE (Bit 0) */ + #define R_USB_FS0_USBREQ_BMREQUESTTYPE_Msk (0xffUL) /*!< BMREQUESTTYPE (Bitfield-Mask: 0xff) */ +/* ======================================================== USBVAL ========================================================= */ + #define R_USB_FS0_USBVAL_WVALUE_Pos (0UL) /*!< WVALUE (Bit 0) */ + #define R_USB_FS0_USBVAL_WVALUE_Msk (0xffffUL) /*!< WVALUE (Bitfield-Mask: 0xffff) */ +/* ======================================================== USBINDX ======================================================== */ + #define R_USB_FS0_USBINDX_WINDEX_Pos (0UL) /*!< WINDEX (Bit 0) */ + #define R_USB_FS0_USBINDX_WINDEX_Msk (0xffffUL) /*!< WINDEX (Bitfield-Mask: 0xffff) */ +/* ======================================================== USBLENG ======================================================== */ + #define R_USB_FS0_USBLENG_WLENGTH_Pos (0UL) /*!< WLENGTH (Bit 0) */ + #define R_USB_FS0_USBLENG_WLENGTH_Msk (0xffffUL) /*!< WLENGTH (Bitfield-Mask: 0xffff) */ +/* ======================================================== DCPCFG ========================================================= */ + #define R_USB_FS0_DCPCFG_CNTMD_Pos (8UL) /*!< CNTMD (Bit 8) */ + #define R_USB_FS0_DCPCFG_CNTMD_Msk (0x100UL) /*!< CNTMD (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_DCPCFG_SHTNAK_Pos (7UL) /*!< SHTNAK (Bit 7) */ + #define R_USB_FS0_DCPCFG_SHTNAK_Msk (0x80UL) /*!< SHTNAK (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_DCPCFG_DIR_Pos (4UL) /*!< DIR (Bit 4) */ + #define R_USB_FS0_DCPCFG_DIR_Msk (0x10UL) /*!< DIR (Bitfield-Mask: 0x01) */ +/* ======================================================== DCPMAXP ======================================================== */ + #define R_USB_FS0_DCPMAXP_DEVSEL_Pos (12UL) /*!< DEVSEL (Bit 12) */ + #define R_USB_FS0_DCPMAXP_DEVSEL_Msk (0xf000UL) /*!< DEVSEL (Bitfield-Mask: 0x0f) */ + #define R_USB_FS0_DCPMAXP_MXPS_Pos (0UL) /*!< MXPS (Bit 0) */ + #define R_USB_FS0_DCPMAXP_MXPS_Msk (0x7fUL) /*!< MXPS (Bitfield-Mask: 0x7f) */ +/* ======================================================== DCPCTR ========================================================= */ + #define R_USB_FS0_DCPCTR_BSTS_Pos (15UL) /*!< BSTS (Bit 15) */ + #define R_USB_FS0_DCPCTR_BSTS_Msk (0x8000UL) /*!< BSTS (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_DCPCTR_SUREQ_Pos (14UL) /*!< SUREQ (Bit 14) */ + #define R_USB_FS0_DCPCTR_SUREQ_Msk (0x4000UL) /*!< SUREQ (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_DCPCTR_SUREQCLR_Pos (11UL) /*!< SUREQCLR (Bit 11) */ + #define R_USB_FS0_DCPCTR_SUREQCLR_Msk (0x800UL) /*!< SUREQCLR (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_DCPCTR_SQCLR_Pos (8UL) /*!< SQCLR (Bit 8) */ + #define R_USB_FS0_DCPCTR_SQCLR_Msk (0x100UL) /*!< SQCLR (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_DCPCTR_SQSET_Pos (7UL) /*!< SQSET (Bit 7) */ + #define R_USB_FS0_DCPCTR_SQSET_Msk (0x80UL) /*!< SQSET (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_DCPCTR_SQMON_Pos (6UL) /*!< SQMON (Bit 6) */ + #define R_USB_FS0_DCPCTR_SQMON_Msk (0x40UL) /*!< SQMON (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_DCPCTR_PBUSY_Pos (5UL) /*!< PBUSY (Bit 5) */ + #define R_USB_FS0_DCPCTR_PBUSY_Msk (0x20UL) /*!< PBUSY (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_DCPCTR_CCPL_Pos (2UL) /*!< CCPL (Bit 2) */ + #define R_USB_FS0_DCPCTR_CCPL_Msk (0x4UL) /*!< CCPL (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_DCPCTR_PID_Pos (0UL) /*!< PID (Bit 0) */ + #define R_USB_FS0_DCPCTR_PID_Msk (0x3UL) /*!< PID (Bitfield-Mask: 0x03) */ +/* ======================================================== PIPESEL ======================================================== */ + #define R_USB_FS0_PIPESEL_PIPESEL_Pos (0UL) /*!< PIPESEL (Bit 0) */ + #define R_USB_FS0_PIPESEL_PIPESEL_Msk (0xfUL) /*!< PIPESEL (Bitfield-Mask: 0x0f) */ +/* ======================================================== PIPECFG ======================================================== */ + #define R_USB_FS0_PIPECFG_TYPE_Pos (14UL) /*!< TYPE (Bit 14) */ + #define R_USB_FS0_PIPECFG_TYPE_Msk (0xc000UL) /*!< TYPE (Bitfield-Mask: 0x03) */ + #define R_USB_FS0_PIPECFG_BFRE_Pos (10UL) /*!< BFRE (Bit 10) */ + #define R_USB_FS0_PIPECFG_BFRE_Msk (0x400UL) /*!< BFRE (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_PIPECFG_DBLB_Pos (9UL) /*!< DBLB (Bit 9) */ + #define R_USB_FS0_PIPECFG_DBLB_Msk (0x200UL) /*!< DBLB (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_PIPECFG_SHTNAK_Pos (7UL) /*!< SHTNAK (Bit 7) */ + #define R_USB_FS0_PIPECFG_SHTNAK_Msk (0x80UL) /*!< SHTNAK (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_PIPECFG_DIR_Pos (4UL) /*!< DIR (Bit 4) */ + #define R_USB_FS0_PIPECFG_DIR_Msk (0x10UL) /*!< DIR (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_PIPECFG_EPNUM_Pos (0UL) /*!< EPNUM (Bit 0) */ + #define R_USB_FS0_PIPECFG_EPNUM_Msk (0xfUL) /*!< EPNUM (Bitfield-Mask: 0x0f) */ +/* ======================================================= PIPEMAXP ======================================================== */ + #define R_USB_FS0_PIPEMAXP_DEVSEL_Pos (12UL) /*!< DEVSEL (Bit 12) */ + #define R_USB_FS0_PIPEMAXP_DEVSEL_Msk (0xf000UL) /*!< DEVSEL (Bitfield-Mask: 0x0f) */ + #define R_USB_FS0_PIPEMAXP_MXPS_Pos (0UL) /*!< MXPS (Bit 0) */ + #define R_USB_FS0_PIPEMAXP_MXPS_Msk (0x1ffUL) /*!< MXPS (Bitfield-Mask: 0x1ff) */ +/* ======================================================= PIPEPERI ======================================================== */ + #define R_USB_FS0_PIPEPERI_IFIS_Pos (12UL) /*!< IFIS (Bit 12) */ + #define R_USB_FS0_PIPEPERI_IFIS_Msk (0x1000UL) /*!< IFIS (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_PIPEPERI_IITV_Pos (0UL) /*!< IITV (Bit 0) */ + #define R_USB_FS0_PIPEPERI_IITV_Msk (0x7UL) /*!< IITV (Bitfield-Mask: 0x07) */ +/* ======================================================= PIPE_CTR ======================================================== */ + #define R_USB_FS0_PIPE_CTR_BSTS_Pos (15UL) /*!< BSTS (Bit 15) */ + #define R_USB_FS0_PIPE_CTR_BSTS_Msk (0x8000UL) /*!< BSTS (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_PIPE_CTR_INBUFM_Pos (14UL) /*!< INBUFM (Bit 14) */ + #define R_USB_FS0_PIPE_CTR_INBUFM_Msk (0x4000UL) /*!< INBUFM (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_PIPE_CTR_CSCLR_Pos (13UL) /*!< CSCLR (Bit 13) */ + #define R_USB_FS0_PIPE_CTR_CSCLR_Msk (0x2000UL) /*!< CSCLR (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_PIPE_CTR_CSSTS_Pos (12UL) /*!< CSSTS (Bit 12) */ + #define R_USB_FS0_PIPE_CTR_CSSTS_Msk (0x1000UL) /*!< CSSTS (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_PIPE_CTR_ATREPM_Pos (10UL) /*!< ATREPM (Bit 10) */ + #define R_USB_FS0_PIPE_CTR_ATREPM_Msk (0x400UL) /*!< ATREPM (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_PIPE_CTR_ACLRM_Pos (9UL) /*!< ACLRM (Bit 9) */ + #define R_USB_FS0_PIPE_CTR_ACLRM_Msk (0x200UL) /*!< ACLRM (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_PIPE_CTR_SQCLR_Pos (8UL) /*!< SQCLR (Bit 8) */ + #define R_USB_FS0_PIPE_CTR_SQCLR_Msk (0x100UL) /*!< SQCLR (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_PIPE_CTR_SQSET_Pos (7UL) /*!< SQSET (Bit 7) */ + #define R_USB_FS0_PIPE_CTR_SQSET_Msk (0x80UL) /*!< SQSET (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_PIPE_CTR_SQMON_Pos (6UL) /*!< SQMON (Bit 6) */ + #define R_USB_FS0_PIPE_CTR_SQMON_Msk (0x40UL) /*!< SQMON (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_PIPE_CTR_PBUSY_Pos (5UL) /*!< PBUSY (Bit 5) */ + #define R_USB_FS0_PIPE_CTR_PBUSY_Msk (0x20UL) /*!< PBUSY (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_PIPE_CTR_PID_Pos (0UL) /*!< PID (Bit 0) */ + #define R_USB_FS0_PIPE_CTR_PID_Msk (0x3UL) /*!< PID (Bitfield-Mask: 0x03) */ +/* ======================================================== DEVADD ========================================================= */ + #define R_USB_FS0_DEVADD_UPPHUB_Pos (11UL) /*!< UPPHUB (Bit 11) */ + #define R_USB_FS0_DEVADD_UPPHUB_Msk (0x7800UL) /*!< UPPHUB (Bitfield-Mask: 0x0f) */ + #define R_USB_FS0_DEVADD_HUBPORT_Pos (8UL) /*!< HUBPORT (Bit 8) */ + #define R_USB_FS0_DEVADD_HUBPORT_Msk (0x700UL) /*!< HUBPORT (Bitfield-Mask: 0x07) */ + #define R_USB_FS0_DEVADD_USBSPD_Pos (6UL) /*!< USBSPD (Bit 6) */ + #define R_USB_FS0_DEVADD_USBSPD_Msk (0xc0UL) /*!< USBSPD (Bitfield-Mask: 0x03) */ +/* ====================================================== USBBCCTRL0 ======================================================= */ + #define R_USB_FS0_USBBCCTRL0_PDDETSTS0_Pos (9UL) /*!< PDDETSTS0 (Bit 9) */ + #define R_USB_FS0_USBBCCTRL0_PDDETSTS0_Msk (0x200UL) /*!< PDDETSTS0 (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_USBBCCTRL0_CHGDETSTS0_Pos (8UL) /*!< CHGDETSTS0 (Bit 8) */ + #define R_USB_FS0_USBBCCTRL0_CHGDETSTS0_Msk (0x100UL) /*!< CHGDETSTS0 (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_USBBCCTRL0_BATCHGE0_Pos (7UL) /*!< BATCHGE0 (Bit 7) */ + #define R_USB_FS0_USBBCCTRL0_BATCHGE0_Msk (0x80UL) /*!< BATCHGE0 (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_USBBCCTRL0_VDMSRCE0_Pos (5UL) /*!< VDMSRCE0 (Bit 5) */ + #define R_USB_FS0_USBBCCTRL0_VDMSRCE0_Msk (0x20UL) /*!< VDMSRCE0 (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_USBBCCTRL0_IDPSINKE0_Pos (4UL) /*!< IDPSINKE0 (Bit 4) */ + #define R_USB_FS0_USBBCCTRL0_IDPSINKE0_Msk (0x10UL) /*!< IDPSINKE0 (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_USBBCCTRL0_VDPSRCE0_Pos (3UL) /*!< VDPSRCE0 (Bit 3) */ + #define R_USB_FS0_USBBCCTRL0_VDPSRCE0_Msk (0x8UL) /*!< VDPSRCE0 (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_USBBCCTRL0_IDMSINKE0_Pos (2UL) /*!< IDMSINKE0 (Bit 2) */ + #define R_USB_FS0_USBBCCTRL0_IDMSINKE0_Msk (0x4UL) /*!< IDMSINKE0 (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_USBBCCTRL0_IDPSRCE0_Pos (1UL) /*!< IDPSRCE0 (Bit 1) */ + #define R_USB_FS0_USBBCCTRL0_IDPSRCE0_Msk (0x2UL) /*!< IDPSRCE0 (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_USBBCCTRL0_RPDME0_Pos (0UL) /*!< RPDME0 (Bit 0) */ + #define R_USB_FS0_USBBCCTRL0_RPDME0_Msk (0x1UL) /*!< RPDME0 (Bitfield-Mask: 0x01) */ +/* ======================================================== UCKSEL ========================================================= */ + #define R_USB_FS0_UCKSEL_UCKSELC_Pos (0UL) /*!< UCKSELC (Bit 0) */ + #define R_USB_FS0_UCKSEL_UCKSELC_Msk (0x1UL) /*!< UCKSELC (Bitfield-Mask: 0x01) */ +/* ========================================================= USBMC ========================================================= */ + #define R_USB_FS0_USBMC_VDCEN_Pos (7UL) /*!< VDCEN (Bit 7) */ + #define R_USB_FS0_USBMC_VDCEN_Msk (0x80UL) /*!< VDCEN (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_USBMC_VDDUSBE_Pos (0UL) /*!< VDDUSBE (Bit 0) */ + #define R_USB_FS0_USBMC_VDDUSBE_Msk (0x1UL) /*!< VDDUSBE (Bitfield-Mask: 0x01) */ +/* ======================================================== PHYSLEW ======================================================== */ + #define R_USB_FS0_PHYSLEW_SLEWF01_Pos (3UL) /*!< SLEWF01 (Bit 3) */ + #define R_USB_FS0_PHYSLEW_SLEWF01_Msk (0x8UL) /*!< SLEWF01 (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_PHYSLEW_SLEWF00_Pos (2UL) /*!< SLEWF00 (Bit 2) */ + #define R_USB_FS0_PHYSLEW_SLEWF00_Msk (0x4UL) /*!< SLEWF00 (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_PHYSLEW_SLEWR01_Pos (1UL) /*!< SLEWR01 (Bit 1) */ + #define R_USB_FS0_PHYSLEW_SLEWR01_Msk (0x2UL) /*!< SLEWR01 (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_PHYSLEW_SLEWR00_Pos (0UL) /*!< SLEWR00 (Bit 0) */ + #define R_USB_FS0_PHYSLEW_SLEWR00_Msk (0x1UL) /*!< SLEWR00 (Bitfield-Mask: 0x01) */ +/* ======================================================== LPCTRL ========================================================= */ + #define R_USB_FS0_LPCTRL_HWUPM_Pos (7UL) /*!< HWUPM (Bit 7) */ + #define R_USB_FS0_LPCTRL_HWUPM_Msk (0x80UL) /*!< HWUPM (Bitfield-Mask: 0x01) */ +/* ========================================================= LPSTS ========================================================= */ + #define R_USB_FS0_LPSTS_SUSPENDM_Pos (14UL) /*!< SUSPENDM (Bit 14) */ + #define R_USB_FS0_LPSTS_SUSPENDM_Msk (0x4000UL) /*!< SUSPENDM (Bitfield-Mask: 0x01) */ +/* ======================================================== BCCTRL ========================================================= */ + #define R_USB_FS0_BCCTRL_PDDETSTS_Pos (9UL) /*!< PDDETSTS (Bit 9) */ + #define R_USB_FS0_BCCTRL_PDDETSTS_Msk (0x200UL) /*!< PDDETSTS (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_BCCTRL_CHGDETSTS_Pos (8UL) /*!< CHGDETSTS (Bit 8) */ + #define R_USB_FS0_BCCTRL_CHGDETSTS_Msk (0x100UL) /*!< CHGDETSTS (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_BCCTRL_DCPMODE_Pos (5UL) /*!< DCPMODE (Bit 5) */ + #define R_USB_FS0_BCCTRL_DCPMODE_Msk (0x20UL) /*!< DCPMODE (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_BCCTRL_VDMSRCE_Pos (4UL) /*!< VDMSRCE (Bit 4) */ + #define R_USB_FS0_BCCTRL_VDMSRCE_Msk (0x10UL) /*!< VDMSRCE (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_BCCTRL_IDPSINKE_Pos (3UL) /*!< IDPSINKE (Bit 3) */ + #define R_USB_FS0_BCCTRL_IDPSINKE_Msk (0x8UL) /*!< IDPSINKE (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_BCCTRL_VDPSRCE_Pos (2UL) /*!< VDPSRCE (Bit 2) */ + #define R_USB_FS0_BCCTRL_VDPSRCE_Msk (0x4UL) /*!< VDPSRCE (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_BCCTRL_IDMSINKE_Pos (1UL) /*!< IDMSINKE (Bit 1) */ + #define R_USB_FS0_BCCTRL_IDMSINKE_Msk (0x2UL) /*!< IDMSINKE (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_BCCTRL_IDPSRCE_Pos (0UL) /*!< IDPSRCE (Bit 0) */ + #define R_USB_FS0_BCCTRL_IDPSRCE_Msk (0x1UL) /*!< IDPSRCE (Bitfield-Mask: 0x01) */ +/* ======================================================= PL1CTRL1 ======================================================== */ + #define R_USB_FS0_PL1CTRL1_L1EXTMD_Pos (14UL) /*!< L1EXTMD (Bit 14) */ + #define R_USB_FS0_PL1CTRL1_L1EXTMD_Msk (0x4000UL) /*!< L1EXTMD (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_PL1CTRL1_HIRDTHR_Pos (8UL) /*!< HIRDTHR (Bit 8) */ + #define R_USB_FS0_PL1CTRL1_HIRDTHR_Msk (0xf00UL) /*!< HIRDTHR (Bitfield-Mask: 0x0f) */ + #define R_USB_FS0_PL1CTRL1_DVSQ_Pos (4UL) /*!< DVSQ (Bit 4) */ + #define R_USB_FS0_PL1CTRL1_DVSQ_Msk (0xf0UL) /*!< DVSQ (Bitfield-Mask: 0x0f) */ + #define R_USB_FS0_PL1CTRL1_L1NEGOMD_Pos (3UL) /*!< L1NEGOMD (Bit 3) */ + #define R_USB_FS0_PL1CTRL1_L1NEGOMD_Msk (0x8UL) /*!< L1NEGOMD (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_PL1CTRL1_L1RESPMD_Pos (1UL) /*!< L1RESPMD (Bit 1) */ + #define R_USB_FS0_PL1CTRL1_L1RESPMD_Msk (0x6UL) /*!< L1RESPMD (Bitfield-Mask: 0x03) */ + #define R_USB_FS0_PL1CTRL1_L1RESPEN_Pos (0UL) /*!< L1RESPEN (Bit 0) */ + #define R_USB_FS0_PL1CTRL1_L1RESPEN_Msk (0x1UL) /*!< L1RESPEN (Bitfield-Mask: 0x01) */ +/* ======================================================= PL1CTRL2 ======================================================== */ + #define R_USB_FS0_PL1CTRL2_RWEMON_Pos (12UL) /*!< RWEMON (Bit 12) */ + #define R_USB_FS0_PL1CTRL2_RWEMON_Msk (0x1000UL) /*!< RWEMON (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_PL1CTRL2_HIRDMON_Pos (8UL) /*!< HIRDMON (Bit 8) */ + #define R_USB_FS0_PL1CTRL2_HIRDMON_Msk (0xf00UL) /*!< HIRDMON (Bitfield-Mask: 0x0f) */ +/* ======================================================= HL1CTRL1 ======================================================== */ + #define R_USB_FS0_HL1CTRL1_L1STATUS_Pos (1UL) /*!< L1STATUS (Bit 1) */ + #define R_USB_FS0_HL1CTRL1_L1STATUS_Msk (0x6UL) /*!< L1STATUS (Bitfield-Mask: 0x03) */ + #define R_USB_FS0_HL1CTRL1_L1REQ_Pos (0UL) /*!< L1REQ (Bit 0) */ + #define R_USB_FS0_HL1CTRL1_L1REQ_Msk (0x1UL) /*!< L1REQ (Bitfield-Mask: 0x01) */ +/* ======================================================= HL1CTRL2 ======================================================== */ + #define R_USB_FS0_HL1CTRL2_BESL_Pos (15UL) /*!< BESL (Bit 15) */ + #define R_USB_FS0_HL1CTRL2_BESL_Msk (0x8000UL) /*!< BESL (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_HL1CTRL2_L1RWE_Pos (12UL) /*!< L1RWE (Bit 12) */ + #define R_USB_FS0_HL1CTRL2_L1RWE_Msk (0x1000UL) /*!< L1RWE (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_HL1CTRL2_HIRD_Pos (8UL) /*!< HIRD (Bit 8) */ + #define R_USB_FS0_HL1CTRL2_HIRD_Msk (0xf00UL) /*!< HIRD (Bitfield-Mask: 0x0f) */ + #define R_USB_FS0_HL1CTRL2_L1ADDR_Pos (0UL) /*!< L1ADDR (Bit 0) */ + #define R_USB_FS0_HL1CTRL2_L1ADDR_Msk (0xfUL) /*!< L1ADDR (Bitfield-Mask: 0x0f) */ +/* ======================================================== DPUSR0R ======================================================== */ + #define R_USB_FS0_DPUSR0R_DVBSTSHM_Pos (23UL) /*!< DVBSTSHM (Bit 23) */ + #define R_USB_FS0_DPUSR0R_DVBSTSHM_Msk (0x800000UL) /*!< DVBSTSHM (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_DPUSR0R_DOVCBHM_Pos (21UL) /*!< DOVCBHM (Bit 21) */ + #define R_USB_FS0_DPUSR0R_DOVCBHM_Msk (0x200000UL) /*!< DOVCBHM (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_DPUSR0R_DOVCAHM_Pos (20UL) /*!< DOVCAHM (Bit 20) */ + #define R_USB_FS0_DPUSR0R_DOVCAHM_Msk (0x100000UL) /*!< DOVCAHM (Bitfield-Mask: 0x01) */ +/* ======================================================== DPUSR1R ======================================================== */ + #define R_USB_FS0_DPUSR1R_DVBSTSH_Pos (23UL) /*!< DVBSTSH (Bit 23) */ + #define R_USB_FS0_DPUSR1R_DVBSTSH_Msk (0x800000UL) /*!< DVBSTSH (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_DPUSR1R_DOVCBH_Pos (21UL) /*!< DOVCBH (Bit 21) */ + #define R_USB_FS0_DPUSR1R_DOVCBH_Msk (0x200000UL) /*!< DOVCBH (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_DPUSR1R_DOVCAH_Pos (20UL) /*!< DOVCAH (Bit 20) */ + #define R_USB_FS0_DPUSR1R_DOVCAH_Msk (0x100000UL) /*!< DOVCAH (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_DPUSR1R_DVBSTSHE_Pos (7UL) /*!< DVBSTSHE (Bit 7) */ + #define R_USB_FS0_DPUSR1R_DVBSTSHE_Msk (0x80UL) /*!< DVBSTSHE (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_DPUSR1R_DOVCBHE_Pos (5UL) /*!< DOVCBHE (Bit 5) */ + #define R_USB_FS0_DPUSR1R_DOVCBHE_Msk (0x20UL) /*!< DOVCBHE (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_DPUSR1R_DOVCAHE_Pos (4UL) /*!< DOVCAHE (Bit 4) */ + #define R_USB_FS0_DPUSR1R_DOVCAHE_Msk (0x10UL) /*!< DOVCAHE (Bitfield-Mask: 0x01) */ +/* ======================================================== DPUSR2R ======================================================== */ + #define R_USB_FS0_DPUSR2R_DMINTE_Pos (9UL) /*!< DMINTE (Bit 9) */ + #define R_USB_FS0_DPUSR2R_DMINTE_Msk (0x200UL) /*!< DMINTE (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_DPUSR2R_DPINTE_Pos (8UL) /*!< DPINTE (Bit 8) */ + #define R_USB_FS0_DPUSR2R_DPINTE_Msk (0x100UL) /*!< DPINTE (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_DPUSR2R_DMVAL_Pos (5UL) /*!< DMVAL (Bit 5) */ + #define R_USB_FS0_DPUSR2R_DMVAL_Msk (0x20UL) /*!< DMVAL (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_DPUSR2R_DPVAL_Pos (4UL) /*!< DPVAL (Bit 4) */ + #define R_USB_FS0_DPUSR2R_DPVAL_Msk (0x10UL) /*!< DPVAL (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_DPUSR2R_DMINT_Pos (1UL) /*!< DMINT (Bit 1) */ + #define R_USB_FS0_DPUSR2R_DMINT_Msk (0x2UL) /*!< DMINT (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_DPUSR2R_DPINT_Pos (0UL) /*!< DPINT (Bit 0) */ + #define R_USB_FS0_DPUSR2R_DPINT_Msk (0x1UL) /*!< DPINT (Bitfield-Mask: 0x01) */ +/* ======================================================== DPUSRCR ======================================================== */ + #define R_USB_FS0_DPUSRCR_FIXPHYPD_Pos (1UL) /*!< FIXPHYPD (Bit 1) */ + #define R_USB_FS0_DPUSRCR_FIXPHYPD_Msk (0x2UL) /*!< FIXPHYPD (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_DPUSRCR_FIXPHY_Pos (0UL) /*!< FIXPHY (Bit 0) */ + #define R_USB_FS0_DPUSRCR_FIXPHY_Msk (0x1UL) /*!< FIXPHY (Bitfield-Mask: 0x01) */ +/* ====================================================== DPUSR0R_FS ======================================================= */ + #define R_USB_FS0_DPUSR0R_FS_DVBSTS0_Pos (23UL) /*!< DVBSTS0 (Bit 23) */ + #define R_USB_FS0_DPUSR0R_FS_DVBSTS0_Msk (0x800000UL) /*!< DVBSTS0 (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_DPUSR0R_FS_DOVCB0_Pos (21UL) /*!< DOVCB0 (Bit 21) */ + #define R_USB_FS0_DPUSR0R_FS_DOVCB0_Msk (0x200000UL) /*!< DOVCB0 (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_DPUSR0R_FS_DOVCA0_Pos (20UL) /*!< DOVCA0 (Bit 20) */ + #define R_USB_FS0_DPUSR0R_FS_DOVCA0_Msk (0x100000UL) /*!< DOVCA0 (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_DPUSR0R_FS_DM0_Pos (17UL) /*!< DM0 (Bit 17) */ + #define R_USB_FS0_DPUSR0R_FS_DM0_Msk (0x20000UL) /*!< DM0 (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_DPUSR0R_FS_DP0_Pos (16UL) /*!< DP0 (Bit 16) */ + #define R_USB_FS0_DPUSR0R_FS_DP0_Msk (0x10000UL) /*!< DP0 (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_DPUSR0R_FS_FIXPHY0_Pos (4UL) /*!< FIXPHY0 (Bit 4) */ + #define R_USB_FS0_DPUSR0R_FS_FIXPHY0_Msk (0x10UL) /*!< FIXPHY0 (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_DPUSR0R_FS_DRPD0_Pos (3UL) /*!< DRPD0 (Bit 3) */ + #define R_USB_FS0_DPUSR0R_FS_DRPD0_Msk (0x8UL) /*!< DRPD0 (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_DPUSR0R_FS_RPUE0_Pos (1UL) /*!< RPUE0 (Bit 1) */ + #define R_USB_FS0_DPUSR0R_FS_RPUE0_Msk (0x2UL) /*!< RPUE0 (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_DPUSR0R_FS_SRPC0_Pos (0UL) /*!< SRPC0 (Bit 0) */ + #define R_USB_FS0_DPUSR0R_FS_SRPC0_Msk (0x1UL) /*!< SRPC0 (Bitfield-Mask: 0x01) */ +/* ====================================================== DPUSR1R_FS ======================================================= */ + #define R_USB_FS0_DPUSR1R_FS_DVBINT0_Pos (23UL) /*!< DVBINT0 (Bit 23) */ + #define R_USB_FS0_DPUSR1R_FS_DVBINT0_Msk (0x800000UL) /*!< DVBINT0 (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_DPUSR1R_FS_DOVRCRB0_Pos (21UL) /*!< DOVRCRB0 (Bit 21) */ + #define R_USB_FS0_DPUSR1R_FS_DOVRCRB0_Msk (0x200000UL) /*!< DOVRCRB0 (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_DPUSR1R_FS_DOVRCRA0_Pos (20UL) /*!< DOVRCRA0 (Bit 20) */ + #define R_USB_FS0_DPUSR1R_FS_DOVRCRA0_Msk (0x100000UL) /*!< DOVRCRA0 (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_DPUSR1R_FS_DMINT0_Pos (17UL) /*!< DMINT0 (Bit 17) */ + #define R_USB_FS0_DPUSR1R_FS_DMINT0_Msk (0x20000UL) /*!< DMINT0 (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_DPUSR1R_FS_DPINT0_Pos (16UL) /*!< DPINT0 (Bit 16) */ + #define R_USB_FS0_DPUSR1R_FS_DPINT0_Msk (0x10000UL) /*!< DPINT0 (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_DPUSR1R_FS_DVBSE0_Pos (7UL) /*!< DVBSE0 (Bit 7) */ + #define R_USB_FS0_DPUSR1R_FS_DVBSE0_Msk (0x80UL) /*!< DVBSE0 (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_DPUSR1R_FS_DOVRCRBE0_Pos (5UL) /*!< DOVRCRBE0 (Bit 5) */ + #define R_USB_FS0_DPUSR1R_FS_DOVRCRBE0_Msk (0x20UL) /*!< DOVRCRBE0 (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_DPUSR1R_FS_DOVRCRAE0_Pos (4UL) /*!< DOVRCRAE0 (Bit 4) */ + #define R_USB_FS0_DPUSR1R_FS_DOVRCRAE0_Msk (0x10UL) /*!< DOVRCRAE0 (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_DPUSR1R_FS_DMINTE0_Pos (1UL) /*!< DMINTE0 (Bit 1) */ + #define R_USB_FS0_DPUSR1R_FS_DMINTE0_Msk (0x2UL) /*!< DMINTE0 (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_DPUSR1R_FS_DPINTE0_Pos (0UL) /*!< DPINTE0 (Bit 0) */ + #define R_USB_FS0_DPUSR1R_FS_DPINTE0_Msk (0x1UL) /*!< DPINTE0 (Bitfield-Mask: 0x01) */ + +/* =========================================================================================================================== */ +/* ================ R_WDT ================ */ +/* =========================================================================================================================== */ + +/* ========================================================= WDTRR ========================================================= */ + #define R_WDT_WDTRR_WDTRR_Pos (0UL) /*!< WDTRR (Bit 0) */ + #define R_WDT_WDTRR_WDTRR_Msk (0xffUL) /*!< WDTRR (Bitfield-Mask: 0xff) */ +/* ========================================================= WDTCR ========================================================= */ + #define R_WDT_WDTCR_RPSS_Pos (12UL) /*!< RPSS (Bit 12) */ + #define R_WDT_WDTCR_RPSS_Msk (0x3000UL) /*!< RPSS (Bitfield-Mask: 0x03) */ + #define R_WDT_WDTCR_RPES_Pos (8UL) /*!< RPES (Bit 8) */ + #define R_WDT_WDTCR_RPES_Msk (0x300UL) /*!< RPES (Bitfield-Mask: 0x03) */ + #define R_WDT_WDTCR_CKS_Pos (4UL) /*!< CKS (Bit 4) */ + #define R_WDT_WDTCR_CKS_Msk (0xf0UL) /*!< CKS (Bitfield-Mask: 0x0f) */ + #define R_WDT_WDTCR_TOPS_Pos (0UL) /*!< TOPS (Bit 0) */ + #define R_WDT_WDTCR_TOPS_Msk (0x3UL) /*!< TOPS (Bitfield-Mask: 0x03) */ +/* ========================================================= WDTSR ========================================================= */ + #define R_WDT_WDTSR_REFEF_Pos (15UL) /*!< REFEF (Bit 15) */ + #define R_WDT_WDTSR_REFEF_Msk (0x8000UL) /*!< REFEF (Bitfield-Mask: 0x01) */ + #define R_WDT_WDTSR_UNDFF_Pos (14UL) /*!< UNDFF (Bit 14) */ + #define R_WDT_WDTSR_UNDFF_Msk (0x4000UL) /*!< UNDFF (Bitfield-Mask: 0x01) */ + #define R_WDT_WDTSR_CNTVAL_Pos (0UL) /*!< CNTVAL (Bit 0) */ + #define R_WDT_WDTSR_CNTVAL_Msk (0x3fffUL) /*!< CNTVAL (Bitfield-Mask: 0x3fff) */ +/* ======================================================== WDTRCR ========================================================= */ + #define R_WDT_WDTRCR_RSTIRQS_Pos (7UL) /*!< RSTIRQS (Bit 7) */ + #define R_WDT_WDTRCR_RSTIRQS_Msk (0x80UL) /*!< RSTIRQS (Bitfield-Mask: 0x01) */ +/* ======================================================= WDTCSTPR ======================================================== */ + #define R_WDT_WDTCSTPR_SLCSTP_Pos (7UL) /*!< SLCSTP (Bit 7) */ + #define R_WDT_WDTCSTPR_SLCSTP_Msk (0x80UL) /*!< SLCSTP (Bitfield-Mask: 0x01) */ + +/* =========================================================================================================================== */ +/* ================ R_TZF ================ */ +/* =========================================================================================================================== */ + +/* ======================================================== TZFOAD ========================================================= */ + #define R_TZF_TZFOAD_OAD_Pos (0UL) /*!< OAD (Bit 0) */ + #define R_TZF_TZFOAD_OAD_Msk (0x1UL) /*!< OAD (Bitfield-Mask: 0x01) */ + #define R_TZF_TZFOAD_KEY_Pos (8UL) /*!< KEY (Bit 8) */ + #define R_TZF_TZFOAD_KEY_Msk (0xff00UL) /*!< KEY (Bitfield-Mask: 0xff) */ +/* ========================================================= TZFPT ========================================================= */ + #define R_TZF_TZFPT_PROTECT_Pos (0UL) /*!< PROTECT (Bit 0) */ + #define R_TZF_TZFPT_PROTECT_Msk (0x1UL) /*!< PROTECT (Bitfield-Mask: 0x01) */ + #define R_TZF_TZFPT_KEY_Pos (8UL) /*!< KEY (Bit 8) */ + #define R_TZF_TZFPT_KEY_Msk (0xff00UL) /*!< KEY (Bitfield-Mask: 0xff) */ + +/* =========================================================================================================================== */ +/* ================ R_CPSCU ================ */ +/* =========================================================================================================================== */ + +/* ========================================================= CSAR ========================================================== */ + #define R_CPSCU_CSAR_CACHESA_Pos (0UL) /*!< CACHESA (Bit 0) */ + #define R_CPSCU_CSAR_CACHESA_Msk (0x1UL) /*!< CACHESA (Bitfield-Mask: 0x01) */ + #define R_CPSCU_CSAR_CACHELSA_Pos (1UL) /*!< CACHELSA (Bit 1) */ + #define R_CPSCU_CSAR_CACHELSA_Msk (0x2UL) /*!< CACHELSA (Bitfield-Mask: 0x01) */ + #define R_CPSCU_CSAR_CACHEESA_Pos (2UL) /*!< CACHEESA (Bit 2) */ + #define R_CPSCU_CSAR_CACHEESA_Msk (0x4UL) /*!< CACHEESA (Bitfield-Mask: 0x01) */ +/* ======================================================== SRAMSAR ======================================================== */ + #define R_CPSCU_SRAMSAR_SRAMSA0_Pos (0UL) /*!< SRAMSA0 (Bit 0) */ + #define R_CPSCU_SRAMSAR_SRAMSA0_Msk (0x1UL) /*!< SRAMSA0 (Bitfield-Mask: 0x01) */ + #define R_CPSCU_SRAMSAR_SRAMSA1_Pos (1UL) /*!< SRAMSA1 (Bit 1) */ + #define R_CPSCU_SRAMSAR_SRAMSA1_Msk (0x2UL) /*!< SRAMSA1 (Bitfield-Mask: 0x01) */ + #define R_CPSCU_SRAMSAR_SRAMSA2_Pos (2UL) /*!< SRAMSA2 (Bit 2) */ + #define R_CPSCU_SRAMSAR_SRAMSA2_Msk (0x4UL) /*!< SRAMSA2 (Bitfield-Mask: 0x01) */ +/* ======================================================= STBRAMSAR ======================================================= */ + #define R_CPSCU_STBRAMSAR_NSBSTBR_Pos (0UL) /*!< NSBSTBR (Bit 0) */ + #define R_CPSCU_STBRAMSAR_NSBSTBR_Msk (0xfUL) /*!< NSBSTBR (Bitfield-Mask: 0x0f) */ +/* ======================================================== DTCSAR ========================================================= */ + #define R_CPSCU_DTCSAR_DTCSTSA_Pos (0UL) /*!< DTCSTSA (Bit 0) */ + #define R_CPSCU_DTCSAR_DTCSTSA_Msk (0x1UL) /*!< DTCSTSA (Bitfield-Mask: 0x01) */ +/* ======================================================== DMACSAR ======================================================== */ + #define R_CPSCU_DMACSAR_DMASTSA_Pos (0UL) /*!< DMASTSA (Bit 0) */ + #define R_CPSCU_DMACSAR_DMASTSA_Msk (0x1UL) /*!< DMASTSA (Bitfield-Mask: 0x01) */ +/* ======================================================== ICUSARA ======================================================== */ + #define R_CPSCU_ICUSARA_SAIRQCRn_Pos (0UL) /*!< SAIRQCRn (Bit 0) */ + #define R_CPSCU_ICUSARA_SAIRQCRn_Msk (0xffffUL) /*!< SAIRQCRn (Bitfield-Mask: 0xffff) */ +/* ======================================================== ICUSARB ======================================================== */ + #define R_CPSCU_ICUSARB_SANMI_Pos (0UL) /*!< SANMI (Bit 0) */ + #define R_CPSCU_ICUSARB_SANMI_Msk (0x1UL) /*!< SANMI (Bitfield-Mask: 0x01) */ +/* ======================================================== ICUSARC ======================================================== */ + #define R_CPSCU_ICUSARC_SADMACn_Pos (0UL) /*!< SADMACn (Bit 0) */ + #define R_CPSCU_ICUSARC_SADMACn_Msk (0xffUL) /*!< SADMACn (Bitfield-Mask: 0xff) */ +/* ======================================================== ICUSARD ======================================================== */ + #define R_CPSCU_ICUSARD_SASELSR0_Pos (0UL) /*!< SASELSR0 (Bit 0) */ + #define R_CPSCU_ICUSARD_SASELSR0_Msk (0x1UL) /*!< SASELSR0 (Bitfield-Mask: 0x01) */ +/* ======================================================== ICUSARE ======================================================== */ + #define R_CPSCU_ICUSARE_SAIWDTWUP_Pos (16UL) /*!< SAIWDTWUP (Bit 16) */ + #define R_CPSCU_ICUSARE_SAIWDTWUP_Msk (0x10000UL) /*!< SAIWDTWUP (Bitfield-Mask: 0x01) */ + #define R_CPSCU_ICUSARE_SALVD1WUP_Pos (18UL) /*!< SALVD1WUP (Bit 18) */ + #define R_CPSCU_ICUSARE_SALVD1WUP_Msk (0x40000UL) /*!< SALVD1WUP (Bitfield-Mask: 0x01) */ + #define R_CPSCU_ICUSARE_SALVD2WUP_Pos (19UL) /*!< SALVD2WUP (Bit 19) */ + #define R_CPSCU_ICUSARE_SALVD2WUP_Msk (0x80000UL) /*!< SALVD2WUP (Bitfield-Mask: 0x01) */ + #define R_CPSCU_ICUSARE_SAVBATTWUP_Pos (20UL) /*!< SAVBATTWUP (Bit 20) */ + #define R_CPSCU_ICUSARE_SAVBATTWUP_Msk (0x100000UL) /*!< SAVBATTWUP (Bitfield-Mask: 0x01) */ + #define R_CPSCU_ICUSARE_SARTCALMWUP_Pos (24UL) /*!< SARTCALMWUP (Bit 24) */ + #define R_CPSCU_ICUSARE_SARTCALMWUP_Msk (0x1000000UL) /*!< SARTCALMWUP (Bitfield-Mask: 0x01) */ + #define R_CPSCU_ICUSARE_SARTCPRDWUP_Pos (25UL) /*!< SARTCPRDWUP (Bit 25) */ + #define R_CPSCU_ICUSARE_SARTCPRDWUP_Msk (0x2000000UL) /*!< SARTCPRDWUP (Bitfield-Mask: 0x01) */ + #define R_CPSCU_ICUSARE_SAUSBFS0WUP_Pos (27UL) /*!< SAUSBFS0WUP (Bit 27) */ + #define R_CPSCU_ICUSARE_SAUSBFS0WUP_Msk (0x8000000UL) /*!< SAUSBFS0WUP (Bitfield-Mask: 0x01) */ + #define R_CPSCU_ICUSARE_SAAGT1UDWUP_Pos (28UL) /*!< SAAGT1UDWUP (Bit 28) */ + #define R_CPSCU_ICUSARE_SAAGT1UDWUP_Msk (0x10000000UL) /*!< SAAGT1UDWUP (Bitfield-Mask: 0x01) */ + #define R_CPSCU_ICUSARE_SAAGT1CAWUP_Pos (29UL) /*!< SAAGT1CAWUP (Bit 29) */ + #define R_CPSCU_ICUSARE_SAAGT1CAWUP_Msk (0x20000000UL) /*!< SAAGT1CAWUP (Bitfield-Mask: 0x01) */ + #define R_CPSCU_ICUSARE_SAAGT1CBWUP_Pos (30UL) /*!< SAAGT1CBWUP (Bit 30) */ + #define R_CPSCU_ICUSARE_SAAGT1CBWUP_Msk (0x40000000UL) /*!< SAAGT1CBWUP (Bitfield-Mask: 0x01) */ + #define R_CPSCU_ICUSARE_SAIIC0WUP_Pos (31UL) /*!< SAIIC0WUP (Bit 31) */ + #define R_CPSCU_ICUSARE_SAIIC0WUP_Msk (0x80000000UL) /*!< SAIIC0WUP (Bitfield-Mask: 0x01) */ +/* ======================================================== ICUSARF ======================================================== */ + #define R_CPSCU_ICUSARF_SAAGT3UDWUP_Pos (0UL) /*!< SAAGT3UDWUP (Bit 0) */ + #define R_CPSCU_ICUSARF_SAAGT3UDWUP_Msk (0x1UL) /*!< SAAGT3UDWUP (Bitfield-Mask: 0x01) */ + #define R_CPSCU_ICUSARF_SAAGT3CAWUP_Pos (1UL) /*!< SAAGT3CAWUP (Bit 1) */ + #define R_CPSCU_ICUSARF_SAAGT3CAWUP_Msk (0x2UL) /*!< SAAGT3CAWUP (Bitfield-Mask: 0x01) */ + #define R_CPSCU_ICUSARF_SAAGT3CBWUP_Pos (2UL) /*!< SAAGT3CBWUP (Bit 2) */ + #define R_CPSCU_ICUSARF_SAAGT3CBWUP_Msk (0x4UL) /*!< SAAGT3CBWUP (Bitfield-Mask: 0x01) */ + #define R_CPSCU_ICUSARF_SACOMPHS0WUP_Pos (3UL) /*!< SACOMPHS0WUP (Bit 3) */ + #define R_CPSCU_ICUSARF_SACOMPHS0WUP_Msk (0x8UL) /*!< SACOMPHS0WUP (Bitfield-Mask: 0x01) */ + #define R_CPSCU_ICUSARF_SAULP0UWUP_Pos (8UL) /*!< SAULP0UWUP (Bit 8) */ + #define R_CPSCU_ICUSARF_SAULP0UWUP_Msk (0x100UL) /*!< SAULP0UWUP (Bitfield-Mask: 0x01) */ + #define R_CPSCU_ICUSARF_SAULP0AWUP_Pos (9UL) /*!< SAULP0AWUP (Bit 9) */ + #define R_CPSCU_ICUSARF_SAULP0AWUP_Msk (0x200UL) /*!< SAULP0AWUP (Bitfield-Mask: 0x01) */ + #define R_CPSCU_ICUSARF_SAULP0BWUP_Pos (10UL) /*!< SAULP0BWUP (Bit 10) */ + #define R_CPSCU_ICUSARF_SAULP0BWUP_Msk (0x400UL) /*!< SAULP0BWUP (Bitfield-Mask: 0x01) */ + #define R_CPSCU_ICUSARF_SAI3CWUP_Pos (11UL) /*!< SAI3CWUP (Bit 11) */ + #define R_CPSCU_ICUSARF_SAI3CWUP_Msk (0x800UL) /*!< SAI3CWUP (Bitfield-Mask: 0x01) */ + #define R_CPSCU_ICUSARF_SAULP1UWUP_Pos (12UL) /*!< SAULP1UWUP (Bit 12) */ + #define R_CPSCU_ICUSARF_SAULP1UWUP_Msk (0x1000UL) /*!< SAULP1UWUP (Bitfield-Mask: 0x01) */ + #define R_CPSCU_ICUSARF_SAULP1AWUP_Pos (13UL) /*!< SAULP1AWUP (Bit 13) */ + #define R_CPSCU_ICUSARF_SAULP1AWUP_Msk (0x2000UL) /*!< SAULP1AWUP (Bitfield-Mask: 0x01) */ + #define R_CPSCU_ICUSARF_SAULP1BWUP_Pos (14UL) /*!< SAULP1BWUP (Bit 14) */ + #define R_CPSCU_ICUSARF_SAULP1BWUP_Msk (0x4000UL) /*!< SAULP1BWUP (Bitfield-Mask: 0x01) */ +/* ======================================================== ICUSARG ======================================================== */ + #define R_CPSCU_ICUSARG_SAIELSRn_Pos (0UL) /*!< SAIELSRn (Bit 0) */ + #define R_CPSCU_ICUSARG_SAIELSRn_Msk (0xffffffffUL) /*!< SAIELSRn (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== ICUSARH ======================================================== */ + #define R_CPSCU_ICUSARH_SAIELSRn_Pos (0UL) /*!< SAIELSRn (Bit 0) */ + #define R_CPSCU_ICUSARH_SAIELSRn_Msk (0xffffffffUL) /*!< SAIELSRn (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== ICUSARI ======================================================== */ + #define R_CPSCU_ICUSARI_SAIELSRn_Pos (0UL) /*!< SAIELSRn (Bit 0) */ + #define R_CPSCU_ICUSARI_SAIELSRn_Msk (0xffffffffUL) /*!< SAIELSRn (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== BUSSARA ======================================================== */ + #define R_CPSCU_BUSSARA_BUSSA0_Pos (0UL) /*!< BUSSA0 (Bit 0) */ + #define R_CPSCU_BUSSARA_BUSSA0_Msk (0x1UL) /*!< BUSSA0 (Bitfield-Mask: 0x01) */ +/* ======================================================== BUSSARB ======================================================== */ + #define R_CPSCU_BUSSARB_BUSSB0_Pos (0UL) /*!< BUSSB0 (Bit 0) */ + #define R_CPSCU_BUSSARB_BUSSB0_Msk (0x1UL) /*!< BUSSB0 (Bitfield-Mask: 0x01) */ +/* ======================================================= MMPUSARA ======================================================== */ + #define R_CPSCU_MMPUSARA_MMPUAnSA_Pos (0UL) /*!< MMPUAnSA (Bit 0) */ + #define R_CPSCU_MMPUSARA_MMPUAnSA_Msk (0xffUL) /*!< MMPUAnSA (Bitfield-Mask: 0xff) */ +/* ======================================================= MMPUSARB ======================================================== */ + #define R_CPSCU_MMPUSARB_MMPUB0SA_Pos (0UL) /*!< MMPUB0SA (Bit 0) */ + #define R_CPSCU_MMPUSARB_MMPUB0SA_Msk (0x1UL) /*!< MMPUB0SA (Bitfield-Mask: 0x01) */ +/* ======================================================= DMACCHSAR ======================================================= */ + #define R_CPSCU_DMACCHSAR_DMACCHSARn_Pos (0UL) /*!< DMACCHSARn (Bit 0) */ + #define R_CPSCU_DMACCHSAR_DMACCHSARn_Msk (0xffUL) /*!< DMACCHSARn (Bitfield-Mask: 0xff) */ +/* ======================================================== CPUDSAR ======================================================== */ + #define R_CPSCU_CPUDSAR_CPUDSA0_Pos (0UL) /*!< CPUDSA0 (Bit 0) */ + #define R_CPSCU_CPUDSAR_CPUDSA0_Msk (0x1UL) /*!< CPUDSA0 (Bitfield-Mask: 0x01) */ +/* ====================================================== SRAMSABAR0 ======================================================= */ + #define R_CPSCU_SRAMSABAR0_SRAMSABAR_Pos (13UL) /*!< SRAMSABAR (Bit 13) */ + #define R_CPSCU_SRAMSABAR0_SRAMSABAR_Msk (0x1fe000UL) /*!< SRAMSABAR (Bitfield-Mask: 0xff) */ +/* ====================================================== SRAMSABAR1 ======================================================= */ + #define R_CPSCU_SRAMSABAR1_SRAMSABAR_Pos (13UL) /*!< SRAMSABAR (Bit 13) */ + #define R_CPSCU_SRAMSABAR1_SRAMSABAR_Msk (0x1fe000UL) /*!< SRAMSABAR (Bitfield-Mask: 0xff) */ +/* ======================================================== TEVTRCR ======================================================== */ + #define R_CPSCU_TEVTRCR_TEVTE_Pos (0UL) /*!< TEVTE (Bit 0) */ + #define R_CPSCU_TEVTRCR_TEVTE_Msk (0x1UL) /*!< TEVTE (Bitfield-Mask: 0x01) */ + +/* =========================================================================================================================== */ +/* ================ R_DOC_B ================ */ +/* =========================================================================================================================== */ + +/* ========================================================= DOCR ========================================================== */ + #define R_DOC_B_DOCR_OMS_Pos (0UL) /*!< OMS (Bit 0) */ + #define R_DOC_B_DOCR_OMS_Msk (0x3UL) /*!< OMS (Bitfield-Mask: 0x03) */ + #define R_DOC_B_DOCR_DOBW_Pos (3UL) /*!< DOBW (Bit 3) */ + #define R_DOC_B_DOCR_DOBW_Msk (0x8UL) /*!< DOBW (Bitfield-Mask: 0x01) */ + #define R_DOC_B_DOCR_DCSEL_Pos (4UL) /*!< DCSEL (Bit 4) */ + #define R_DOC_B_DOCR_DCSEL_Msk (0x70UL) /*!< DCSEL (Bitfield-Mask: 0x07) */ +/* ========================================================= DOSR ========================================================== */ + #define R_DOC_B_DOSR_DOPCF_Pos (0UL) /*!< DOPCF (Bit 0) */ + #define R_DOC_B_DOSR_DOPCF_Msk (0x1UL) /*!< DOPCF (Bitfield-Mask: 0x01) */ +/* ========================================================= DOSCR ========================================================= */ + #define R_DOC_B_DOSCR_DOPCFCL_Pos (0UL) /*!< DOPCFCL (Bit 0) */ + #define R_DOC_B_DOSCR_DOPCFCL_Msk (0x1UL) /*!< DOPCFCL (Bitfield-Mask: 0x01) */ +/* ========================================================= DODIR ========================================================= */ +/* ======================================================== DODSR0 ========================================================= */ +/* ======================================================== DODSR1 ========================================================= */ + +/* =========================================================================================================================== */ +/* ================ R_SCI_B0 ================ */ +/* =========================================================================================================================== */ + +/* ========================================================== RDR ========================================================== */ + #define R_SCI_B0_RDR_RDAT_Pos (0UL) /*!< RDAT (Bit 0) */ + #define R_SCI_B0_RDR_RDAT_Msk (0x1ffUL) /*!< RDAT (Bitfield-Mask: 0x1ff) */ + #define R_SCI_B0_RDR_MPB_Pos (9UL) /*!< MPB (Bit 9) */ + #define R_SCI_B0_RDR_MPB_Msk (0x200UL) /*!< MPB (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_RDR_DR_Pos (10UL) /*!< DR (Bit 10) */ + #define R_SCI_B0_RDR_DR_Msk (0x400UL) /*!< DR (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_RDR_FPER_Pos (11UL) /*!< FPER (Bit 11) */ + #define R_SCI_B0_RDR_FPER_Msk (0x800UL) /*!< FPER (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_RDR_FFER_Pos (12UL) /*!< FFER (Bit 12) */ + #define R_SCI_B0_RDR_FFER_Msk (0x1000UL) /*!< FFER (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_RDR_ORER_Pos (24UL) /*!< ORER (Bit 24) */ + #define R_SCI_B0_RDR_ORER_Msk (0x1000000UL) /*!< ORER (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_RDR_PER_Pos (27UL) /*!< PER (Bit 27) */ + #define R_SCI_B0_RDR_PER_Msk (0x8000000UL) /*!< PER (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_RDR_FER_Pos (28UL) /*!< FER (Bit 28) */ + #define R_SCI_B0_RDR_FER_Msk (0x10000000UL) /*!< FER (Bitfield-Mask: 0x01) */ +/* ======================================================== RDR_BY ========================================================= */ + #define R_SCI_B0_RDR_BY_RDAT_Pos (0UL) /*!< RDAT (Bit 0) */ + #define R_SCI_B0_RDR_BY_RDAT_Msk (0xffUL) /*!< RDAT (Bitfield-Mask: 0xff) */ +/* ========================================================== TDR ========================================================== */ + #define R_SCI_B0_TDR_TDAT_Pos (0UL) /*!< TDAT (Bit 0) */ + #define R_SCI_B0_TDR_TDAT_Msk (0x1ffUL) /*!< TDAT (Bitfield-Mask: 0x1ff) */ + #define R_SCI_B0_TDR_MPBT_Pos (9UL) /*!< MPBT (Bit 9) */ + #define R_SCI_B0_TDR_MPBT_Msk (0x200UL) /*!< MPBT (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_TDR_TSYNC_Pos (12UL) /*!< TSYNC (Bit 12) */ + #define R_SCI_B0_TDR_TSYNC_Msk (0x1000UL) /*!< TSYNC (Bitfield-Mask: 0x01) */ +/* ======================================================== TDR_BY ========================================================= */ + #define R_SCI_B0_TDR_BY_TDAT_Pos (0UL) /*!< TDAT (Bit 0) */ + #define R_SCI_B0_TDR_BY_TDAT_Msk (0xffUL) /*!< TDAT (Bitfield-Mask: 0xff) */ +/* ========================================================= CCR0 ========================================================== */ + #define R_SCI_B0_CCR0_RE_Pos (0UL) /*!< RE (Bit 0) */ + #define R_SCI_B0_CCR0_RE_Msk (0x1UL) /*!< RE (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_CCR0_TE_Pos (4UL) /*!< TE (Bit 4) */ + #define R_SCI_B0_CCR0_TE_Msk (0x10UL) /*!< TE (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_CCR0_MPIE_Pos (8UL) /*!< MPIE (Bit 8) */ + #define R_SCI_B0_CCR0_MPIE_Msk (0x100UL) /*!< MPIE (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_CCR0_DCME_Pos (9UL) /*!< DCME (Bit 9) */ + #define R_SCI_B0_CCR0_DCME_Msk (0x200UL) /*!< DCME (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_CCR0_IDSEL_Pos (10UL) /*!< IDSEL (Bit 10) */ + #define R_SCI_B0_CCR0_IDSEL_Msk (0x400UL) /*!< IDSEL (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_CCR0_RIE_Pos (16UL) /*!< RIE (Bit 16) */ + #define R_SCI_B0_CCR0_RIE_Msk (0x10000UL) /*!< RIE (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_CCR0_TIE_Pos (20UL) /*!< TIE (Bit 20) */ + #define R_SCI_B0_CCR0_TIE_Msk (0x100000UL) /*!< TIE (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_CCR0_TEIE_Pos (21UL) /*!< TEIE (Bit 21) */ + #define R_SCI_B0_CCR0_TEIE_Msk (0x200000UL) /*!< TEIE (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_CCR0_SSE_Pos (24UL) /*!< SSE (Bit 24) */ + #define R_SCI_B0_CCR0_SSE_Msk (0x1000000UL) /*!< SSE (Bitfield-Mask: 0x01) */ +/* ========================================================= CCR1 ========================================================== */ + #define R_SCI_B0_CCR1_CTSE_Pos (0UL) /*!< CTSE (Bit 0) */ + #define R_SCI_B0_CCR1_CTSE_Msk (0x1UL) /*!< CTSE (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_CCR1_CTSPEN_Pos (1UL) /*!< CTSPEN (Bit 1) */ + #define R_SCI_B0_CCR1_CTSPEN_Msk (0x2UL) /*!< CTSPEN (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_CCR1_SPB2DT_Pos (4UL) /*!< SPB2DT (Bit 4) */ + #define R_SCI_B0_CCR1_SPB2DT_Msk (0x10UL) /*!< SPB2DT (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_CCR1_SPB2IO_Pos (5UL) /*!< SPB2IO (Bit 5) */ + #define R_SCI_B0_CCR1_SPB2IO_Msk (0x20UL) /*!< SPB2IO (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_CCR1_PE_Pos (8UL) /*!< PE (Bit 8) */ + #define R_SCI_B0_CCR1_PE_Msk (0x100UL) /*!< PE (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_CCR1_PM_Pos (9UL) /*!< PM (Bit 9) */ + #define R_SCI_B0_CCR1_PM_Msk (0x200UL) /*!< PM (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_CCR1_TINV_Pos (12UL) /*!< TINV (Bit 12) */ + #define R_SCI_B0_CCR1_TINV_Msk (0x1000UL) /*!< TINV (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_CCR1_RINV_Pos (13UL) /*!< RINV (Bit 13) */ + #define R_SCI_B0_CCR1_RINV_Msk (0x2000UL) /*!< RINV (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_CCR1_SPLP_Pos (16UL) /*!< SPLP (Bit 16) */ + #define R_SCI_B0_CCR1_SPLP_Msk (0x10000UL) /*!< SPLP (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_CCR1_SHARPS_Pos (20UL) /*!< SHARPS (Bit 20) */ + #define R_SCI_B0_CCR1_SHARPS_Msk (0x100000UL) /*!< SHARPS (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_CCR1_NFCS_Pos (24UL) /*!< NFCS (Bit 24) */ + #define R_SCI_B0_CCR1_NFCS_Msk (0x7000000UL) /*!< NFCS (Bitfield-Mask: 0x07) */ + #define R_SCI_B0_CCR1_NFEN_Pos (28UL) /*!< NFEN (Bit 28) */ + #define R_SCI_B0_CCR1_NFEN_Msk (0x10000000UL) /*!< NFEN (Bitfield-Mask: 0x01) */ +/* ========================================================= CCR2 ========================================================== */ + #define R_SCI_B0_CCR2_BCP_Pos (0UL) /*!< BCP (Bit 0) */ + #define R_SCI_B0_CCR2_BCP_Msk (0x7UL) /*!< BCP (Bitfield-Mask: 0x07) */ + #define R_SCI_B0_CCR2_BGDM_Pos (4UL) /*!< BGDM (Bit 4) */ + #define R_SCI_B0_CCR2_BGDM_Msk (0x10UL) /*!< BGDM (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_CCR2_ABCS_Pos (5UL) /*!< ABCS (Bit 5) */ + #define R_SCI_B0_CCR2_ABCS_Msk (0x20UL) /*!< ABCS (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_CCR2_ABCSE_Pos (6UL) /*!< ABCSE (Bit 6) */ + #define R_SCI_B0_CCR2_ABCSE_Msk (0x40UL) /*!< ABCSE (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_CCR2_BRR_Pos (8UL) /*!< BRR (Bit 8) */ + #define R_SCI_B0_CCR2_BRR_Msk (0xff00UL) /*!< BRR (Bitfield-Mask: 0xff) */ + #define R_SCI_B0_CCR2_BRME_Pos (16UL) /*!< BRME (Bit 16) */ + #define R_SCI_B0_CCR2_BRME_Msk (0x10000UL) /*!< BRME (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_CCR2_CKS_Pos (20UL) /*!< CKS (Bit 20) */ + #define R_SCI_B0_CCR2_CKS_Msk (0x300000UL) /*!< CKS (Bitfield-Mask: 0x03) */ + #define R_SCI_B0_CCR2_MDDR_Pos (24UL) /*!< MDDR (Bit 24) */ + #define R_SCI_B0_CCR2_MDDR_Msk (0xff000000UL) /*!< MDDR (Bitfield-Mask: 0xff) */ +/* ========================================================= CCR3 ========================================================== */ + #define R_SCI_B0_CCR3_CPHA_Pos (0UL) /*!< CPHA (Bit 0) */ + #define R_SCI_B0_CCR3_CPHA_Msk (0x1UL) /*!< CPHA (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_CCR3_CPOL_Pos (1UL) /*!< CPOL (Bit 1) */ + #define R_SCI_B0_CCR3_CPOL_Msk (0x2UL) /*!< CPOL (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_CCR3_BPEN_Pos (7UL) /*!< BPEN (Bit 7) */ + #define R_SCI_B0_CCR3_BPEN_Msk (0x80UL) /*!< BPEN (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_CCR3_CHR_Pos (8UL) /*!< CHR (Bit 8) */ + #define R_SCI_B0_CCR3_CHR_Msk (0x300UL) /*!< CHR (Bitfield-Mask: 0x03) */ + #define R_SCI_B0_CCR3_LSBF_Pos (12UL) /*!< LSBF (Bit 12) */ + #define R_SCI_B0_CCR3_LSBF_Msk (0x1000UL) /*!< LSBF (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_CCR3_SINV_Pos (13UL) /*!< SINV (Bit 13) */ + #define R_SCI_B0_CCR3_SINV_Msk (0x2000UL) /*!< SINV (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_CCR3_STP_Pos (14UL) /*!< STP (Bit 14) */ + #define R_SCI_B0_CCR3_STP_Msk (0x4000UL) /*!< STP (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_CCR3_RXDESEL_Pos (15UL) /*!< RXDESEL (Bit 15) */ + #define R_SCI_B0_CCR3_RXDESEL_Msk (0x8000UL) /*!< RXDESEL (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_CCR3_MOD_Pos (16UL) /*!< MOD (Bit 16) */ + #define R_SCI_B0_CCR3_MOD_Msk (0x70000UL) /*!< MOD (Bitfield-Mask: 0x07) */ + #define R_SCI_B0_CCR3_MP_Pos (19UL) /*!< MP (Bit 19) */ + #define R_SCI_B0_CCR3_MP_Msk (0x80000UL) /*!< MP (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_CCR3_FM_Pos (20UL) /*!< FM (Bit 20) */ + #define R_SCI_B0_CCR3_FM_Msk (0x100000UL) /*!< FM (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_CCR3_DEN_Pos (21UL) /*!< DEN (Bit 21) */ + #define R_SCI_B0_CCR3_DEN_Msk (0x200000UL) /*!< DEN (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_CCR3_CKE_Pos (24UL) /*!< CKE (Bit 24) */ + #define R_SCI_B0_CCR3_CKE_Msk (0x3000000UL) /*!< CKE (Bitfield-Mask: 0x03) */ + #define R_SCI_B0_CCR3_GM_Pos (28UL) /*!< GM (Bit 28) */ + #define R_SCI_B0_CCR3_GM_Msk (0x10000000UL) /*!< GM (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_CCR3_BLK_Pos (29UL) /*!< BLK (Bit 29) */ + #define R_SCI_B0_CCR3_BLK_Msk (0x20000000UL) /*!< BLK (Bitfield-Mask: 0x01) */ +/* ========================================================= CCR4 ========================================================== */ + #define R_SCI_B0_CCR4_CMPD_Pos (0UL) /*!< CMPD (Bit 0) */ + #define R_SCI_B0_CCR4_CMPD_Msk (0x1ffUL) /*!< CMPD (Bitfield-Mask: 0x1ff) */ + #define R_SCI_B0_CCR4_ASEN_Pos (16UL) /*!< ASEN (Bit 16) */ + #define R_SCI_B0_CCR4_ASEN_Msk (0x10000UL) /*!< ASEN (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_CCR4_ATEN_Pos (17UL) /*!< ATEN (Bit 17) */ + #define R_SCI_B0_CCR4_ATEN_Msk (0x20000UL) /*!< ATEN (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_CCR4_SCKSEL_Pos (19UL) /*!< SCKSEL (Bit 19) */ + #define R_SCI_B0_CCR4_SCKSEL_Msk (0x80000UL) /*!< SCKSEL (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_CCR4_AST_Pos (24UL) /*!< AST (Bit 24) */ + #define R_SCI_B0_CCR4_AST_Msk (0x7000000UL) /*!< AST (Bitfield-Mask: 0x07) */ + #define R_SCI_B0_CCR4_AJD_Pos (27UL) /*!< AJD (Bit 27) */ + #define R_SCI_B0_CCR4_AJD_Msk (0x8000000UL) /*!< AJD (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_CCR4_ATT_Pos (28UL) /*!< ATT (Bit 28) */ + #define R_SCI_B0_CCR4_ATT_Msk (0x70000000UL) /*!< ATT (Bitfield-Mask: 0x07) */ + #define R_SCI_B0_CCR4_AET_Pos (31UL) /*!< AET (Bit 31) */ + #define R_SCI_B0_CCR4_AET_Msk (0x80000000UL) /*!< AET (Bitfield-Mask: 0x01) */ +/* ========================================================= CESR ========================================================== */ + #define R_SCI_B0_CESR_RIST_Pos (0UL) /*!< RIST (Bit 0) */ + #define R_SCI_B0_CESR_RIST_Msk (0x1UL) /*!< RIST (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_CESR_TIST_Pos (4UL) /*!< TIST (Bit 4) */ + #define R_SCI_B0_CESR_TIST_Msk (0x10UL) /*!< TIST (Bitfield-Mask: 0x01) */ +/* ========================================================== ICR ========================================================== */ + #define R_SCI_B0_ICR_IICDL_Pos (0UL) /*!< IICDL (Bit 0) */ + #define R_SCI_B0_ICR_IICDL_Msk (0x1fUL) /*!< IICDL (Bitfield-Mask: 0x1f) */ + #define R_SCI_B0_ICR_IICINTM_Pos (8UL) /*!< IICINTM (Bit 8) */ + #define R_SCI_B0_ICR_IICINTM_Msk (0x100UL) /*!< IICINTM (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_ICR_IICCSC_Pos (9UL) /*!< IICCSC (Bit 9) */ + #define R_SCI_B0_ICR_IICCSC_Msk (0x200UL) /*!< IICCSC (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_ICR_IICACKT_Pos (13UL) /*!< IICACKT (Bit 13) */ + #define R_SCI_B0_ICR_IICACKT_Msk (0x2000UL) /*!< IICACKT (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_ICR_IICSTAREQ_Pos (16UL) /*!< IICSTAREQ (Bit 16) */ + #define R_SCI_B0_ICR_IICSTAREQ_Msk (0x10000UL) /*!< IICSTAREQ (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_ICR_IICRSTAREQ_Pos (17UL) /*!< IICRSTAREQ (Bit 17) */ + #define R_SCI_B0_ICR_IICRSTAREQ_Msk (0x20000UL) /*!< IICRSTAREQ (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_ICR_IICSTPREQ_Pos (18UL) /*!< IICSTPREQ (Bit 18) */ + #define R_SCI_B0_ICR_IICSTPREQ_Msk (0x40000UL) /*!< IICSTPREQ (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_ICR_IICSDAS_Pos (20UL) /*!< IICSDAS (Bit 20) */ + #define R_SCI_B0_ICR_IICSDAS_Msk (0x300000UL) /*!< IICSDAS (Bitfield-Mask: 0x03) */ + #define R_SCI_B0_ICR_IICSCLS_Pos (22UL) /*!< IICSCLS (Bit 22) */ + #define R_SCI_B0_ICR_IICSCLS_Msk (0xc00000UL) /*!< IICSCLS (Bitfield-Mask: 0x03) */ +/* ========================================================== FCR ========================================================== */ + #define R_SCI_B0_FCR_DRES_Pos (0UL) /*!< DRES (Bit 0) */ + #define R_SCI_B0_FCR_DRES_Msk (0x1UL) /*!< DRES (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_FCR_TTRG_Pos (8UL) /*!< TTRG (Bit 8) */ + #define R_SCI_B0_FCR_TTRG_Msk (0x1f00UL) /*!< TTRG (Bitfield-Mask: 0x1f) */ + #define R_SCI_B0_FCR_TFRST_Pos (15UL) /*!< TFRST (Bit 15) */ + #define R_SCI_B0_FCR_TFRST_Msk (0x8000UL) /*!< TFRST (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_FCR_RTRG_Pos (16UL) /*!< RTRG (Bit 16) */ + #define R_SCI_B0_FCR_RTRG_Msk (0x1f0000UL) /*!< RTRG (Bitfield-Mask: 0x1f) */ + #define R_SCI_B0_FCR_RFRST_Pos (23UL) /*!< RFRST (Bit 23) */ + #define R_SCI_B0_FCR_RFRST_Msk (0x800000UL) /*!< RFRST (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_FCR_RSTRG_Pos (24UL) /*!< RSTRG (Bit 24) */ + #define R_SCI_B0_FCR_RSTRG_Msk (0x1f000000UL) /*!< RSTRG (Bitfield-Mask: 0x1f) */ +/* ========================================================== MCR ========================================================== */ + #define R_SCI_B0_MCR_RMPOL_Pos (0UL) /*!< RMPOL (Bit 0) */ + #define R_SCI_B0_MCR_RMPOL_Msk (0x1UL) /*!< RMPOL (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_MCR_TMPOL_Pos (1UL) /*!< TMPOL (Bit 1) */ + #define R_SCI_B0_MCR_TMPOL_Msk (0x2UL) /*!< TMPOL (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_MCR_ERTEN_Pos (2UL) /*!< ERTEN (Bit 2) */ + #define R_SCI_B0_MCR_ERTEN_Msk (0x4UL) /*!< ERTEN (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_MCR_SYNVAL_Pos (4UL) /*!< SYNVAL (Bit 4) */ + #define R_SCI_B0_MCR_SYNVAL_Msk (0x10UL) /*!< SYNVAL (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_MCR_SYNSEL_Pos (5UL) /*!< SYNSEL (Bit 5) */ + #define R_SCI_B0_MCR_SYNSEL_Msk (0x20UL) /*!< SYNSEL (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_MCR_SBSEL_Pos (6UL) /*!< SBSEL (Bit 6) */ + #define R_SCI_B0_MCR_SBSEL_Msk (0x40UL) /*!< SBSEL (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_MCR_TPLEN_Pos (8UL) /*!< TPLEN (Bit 8) */ + #define R_SCI_B0_MCR_TPLEN_Msk (0xf00UL) /*!< TPLEN (Bitfield-Mask: 0x0f) */ + #define R_SCI_B0_MCR_TPPAT_Pos (12UL) /*!< TPPAT (Bit 12) */ + #define R_SCI_B0_MCR_TPPAT_Msk (0x3000UL) /*!< TPPAT (Bitfield-Mask: 0x03) */ + #define R_SCI_B0_MCR_RPLEN_Pos (16UL) /*!< RPLEN (Bit 16) */ + #define R_SCI_B0_MCR_RPLEN_Msk (0xf0000UL) /*!< RPLEN (Bitfield-Mask: 0x0f) */ + #define R_SCI_B0_MCR_RPPAT_Pos (20UL) /*!< RPPAT (Bit 20) */ + #define R_SCI_B0_MCR_RPPAT_Msk (0x300000UL) /*!< RPPAT (Bitfield-Mask: 0x03) */ + #define R_SCI_B0_MCR_PFEREN_Pos (24UL) /*!< PFEREN (Bit 24) */ + #define R_SCI_B0_MCR_PFEREN_Msk (0x1000000UL) /*!< PFEREN (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_MCR_SYEREN_Pos (25UL) /*!< SYEREN (Bit 25) */ + #define R_SCI_B0_MCR_SYEREN_Msk (0x2000000UL) /*!< SYEREN (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_MCR_SBEREN_Pos (26UL) /*!< SBEREN (Bit 26) */ + #define R_SCI_B0_MCR_SBEREN_Msk (0x4000000UL) /*!< SBEREN (Bitfield-Mask: 0x01) */ +/* ========================================================== DCR ========================================================== */ + #define R_SCI_B0_DCR_DEPOL_Pos (0UL) /*!< DEPOL (Bit 0) */ + #define R_SCI_B0_DCR_DEPOL_Msk (0x1UL) /*!< DEPOL (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_DCR_DEAST_Pos (8UL) /*!< DEAST (Bit 8) */ + #define R_SCI_B0_DCR_DEAST_Msk (0x1f00UL) /*!< DEAST (Bitfield-Mask: 0x1f) */ + #define R_SCI_B0_DCR_DENGT_Pos (16UL) /*!< DENGT (Bit 16) */ + #define R_SCI_B0_DCR_DENGT_Msk (0x1f0000UL) /*!< DENGT (Bitfield-Mask: 0x1f) */ +/* ========================================================= XCR0 ========================================================== */ + #define R_SCI_B0_XCR0_TCSS_Pos (0UL) /*!< TCSS (Bit 0) */ + #define R_SCI_B0_XCR0_TCSS_Msk (0x3UL) /*!< TCSS (Bitfield-Mask: 0x03) */ + #define R_SCI_B0_XCR0_BFE_Pos (8UL) /*!< BFE (Bit 8) */ + #define R_SCI_B0_XCR0_BFE_Msk (0x100UL) /*!< BFE (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_XCR0_CF0RE_Pos (9UL) /*!< CF0RE (Bit 9) */ + #define R_SCI_B0_XCR0_CF0RE_Msk (0x200UL) /*!< CF0RE (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_XCR0_CF1DS_Pos (10UL) /*!< CF1DS (Bit 10) */ + #define R_SCI_B0_XCR0_CF1DS_Msk (0xc00UL) /*!< CF1DS (Bitfield-Mask: 0x03) */ + #define R_SCI_B0_XCR0_PIBE_Pos (12UL) /*!< PIBE (Bit 12) */ + #define R_SCI_B0_XCR0_PIBE_Msk (0x1000UL) /*!< PIBE (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_XCR0_PIBS_Pos (13UL) /*!< PIBS (Bit 13) */ + #define R_SCI_B0_XCR0_PIBS_Msk (0xe000UL) /*!< PIBS (Bitfield-Mask: 0x07) */ + #define R_SCI_B0_XCR0_BFOIE_Pos (16UL) /*!< BFOIE (Bit 16) */ + #define R_SCI_B0_XCR0_BFOIE_Msk (0x10000UL) /*!< BFOIE (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_XCR0_BCDIE_Pos (17UL) /*!< BCDIE (Bit 17) */ + #define R_SCI_B0_XCR0_BCDIE_Msk (0x20000UL) /*!< BCDIE (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_XCR0_BFDIE_Pos (20UL) /*!< BFDIE (Bit 20) */ + #define R_SCI_B0_XCR0_BFDIE_Msk (0x100000UL) /*!< BFDIE (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_XCR0_COFIE_Pos (21UL) /*!< COFIE (Bit 21) */ + #define R_SCI_B0_XCR0_COFIE_Msk (0x200000UL) /*!< COFIE (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_XCR0_AEDIE_Pos (22UL) /*!< AEDIE (Bit 22) */ + #define R_SCI_B0_XCR0_AEDIE_Msk (0x400000UL) /*!< AEDIE (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_XCR0_BCCS_Pos (24UL) /*!< BCCS (Bit 24) */ + #define R_SCI_B0_XCR0_BCCS_Msk (0x3000000UL) /*!< BCCS (Bitfield-Mask: 0x03) */ +/* ========================================================= XCR1 ========================================================== */ + #define R_SCI_B0_XCR1_TCST_Pos (0UL) /*!< TCST (Bit 0) */ + #define R_SCI_B0_XCR1_TCST_Msk (0x1UL) /*!< TCST (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_XCR1_SDST_Pos (4UL) /*!< SDST (Bit 4) */ + #define R_SCI_B0_XCR1_SDST_Msk (0x10UL) /*!< SDST (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_XCR1_BMEN_Pos (5UL) /*!< BMEN (Bit 5) */ + #define R_SCI_B0_XCR1_BMEN_Msk (0x20UL) /*!< BMEN (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_XCR1_PCF1D_Pos (8UL) /*!< PCF1D (Bit 8) */ + #define R_SCI_B0_XCR1_PCF1D_Msk (0xff00UL) /*!< PCF1D (Bitfield-Mask: 0xff) */ + #define R_SCI_B0_XCR1_SCF1D_Pos (16UL) /*!< SCF1D (Bit 16) */ + #define R_SCI_B0_XCR1_SCF1D_Msk (0xff0000UL) /*!< SCF1D (Bitfield-Mask: 0xff) */ + #define R_SCI_B0_XCR1_CF1CE_Pos (24UL) /*!< CF1CE (Bit 24) */ + #define R_SCI_B0_XCR1_CF1CE_Msk (0xff000000UL) /*!< CF1CE (Bitfield-Mask: 0xff) */ +/* ========================================================= XCR2 ========================================================== */ + #define R_SCI_B0_XCR2_CF0D_Pos (0UL) /*!< CF0D (Bit 0) */ + #define R_SCI_B0_XCR2_CF0D_Msk (0xffUL) /*!< CF0D (Bitfield-Mask: 0xff) */ + #define R_SCI_B0_XCR2_CF0CE_Pos (8UL) /*!< CF0CE (Bit 8) */ + #define R_SCI_B0_XCR2_CF0CE_Msk (0xff00UL) /*!< CF0CE (Bitfield-Mask: 0xff) */ + #define R_SCI_B0_XCR2_BFLW_Pos (16UL) /*!< BFLW (Bit 16) */ + #define R_SCI_B0_XCR2_BFLW_Msk (0xffff0000UL) /*!< BFLW (Bitfield-Mask: 0xffff) */ +/* ========================================================== CSR ========================================================== */ + #define R_SCI_B0_CSR_ERS_Pos (4UL) /*!< ERS (Bit 4) */ + #define R_SCI_B0_CSR_ERS_Msk (0x10UL) /*!< ERS (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_CSR_RXDMON_Pos (15UL) /*!< RXDMON (Bit 15) */ + #define R_SCI_B0_CSR_RXDMON_Msk (0x8000UL) /*!< RXDMON (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_CSR_DCMF_Pos (16UL) /*!< DCMF (Bit 16) */ + #define R_SCI_B0_CSR_DCMF_Msk (0x10000UL) /*!< DCMF (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_CSR_DPER_Pos (17UL) /*!< DPER (Bit 17) */ + #define R_SCI_B0_CSR_DPER_Msk (0x20000UL) /*!< DPER (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_CSR_DFER_Pos (18UL) /*!< DFER (Bit 18) */ + #define R_SCI_B0_CSR_DFER_Msk (0x40000UL) /*!< DFER (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_CSR_ORER_Pos (24UL) /*!< ORER (Bit 24) */ + #define R_SCI_B0_CSR_ORER_Msk (0x1000000UL) /*!< ORER (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_CSR_MFF_Pos (26UL) /*!< MFF (Bit 26) */ + #define R_SCI_B0_CSR_MFF_Msk (0x4000000UL) /*!< MFF (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_CSR_PER_Pos (27UL) /*!< PER (Bit 27) */ + #define R_SCI_B0_CSR_PER_Msk (0x8000000UL) /*!< PER (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_CSR_FER_Pos (28UL) /*!< FER (Bit 28) */ + #define R_SCI_B0_CSR_FER_Msk (0x10000000UL) /*!< FER (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_CSR_TDRE_Pos (29UL) /*!< TDRE (Bit 29) */ + #define R_SCI_B0_CSR_TDRE_Msk (0x20000000UL) /*!< TDRE (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_CSR_TEND_Pos (30UL) /*!< TEND (Bit 30) */ + #define R_SCI_B0_CSR_TEND_Msk (0x40000000UL) /*!< TEND (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_CSR_RDRF_Pos (31UL) /*!< RDRF (Bit 31) */ + #define R_SCI_B0_CSR_RDRF_Msk (0x80000000UL) /*!< RDRF (Bitfield-Mask: 0x01) */ +/* ========================================================== ISR ========================================================== */ + #define R_SCI_B0_ISR_IICACKR_Pos (0UL) /*!< IICACKR (Bit 0) */ + #define R_SCI_B0_ISR_IICACKR_Msk (0x1UL) /*!< IICACKR (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_ISR_IICSTIF_Pos (3UL) /*!< IICSTIF (Bit 3) */ + #define R_SCI_B0_ISR_IICSTIF_Msk (0x8UL) /*!< IICSTIF (Bitfield-Mask: 0x01) */ +/* ========================================================= FRSR ========================================================== */ + #define R_SCI_B0_FRSR_DR_Pos (0UL) /*!< DR (Bit 0) */ + #define R_SCI_B0_FRSR_DR_Msk (0x1UL) /*!< DR (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_FRSR_R_Pos (8UL) /*!< R (Bit 8) */ + #define R_SCI_B0_FRSR_R_Msk (0x3f00UL) /*!< R (Bitfield-Mask: 0x3f) */ + #define R_SCI_B0_FRSR_PNUM_Pos (16UL) /*!< PNUM (Bit 16) */ + #define R_SCI_B0_FRSR_PNUM_Msk (0x3f0000UL) /*!< PNUM (Bitfield-Mask: 0x3f) */ + #define R_SCI_B0_FRSR_FNUM_Pos (24UL) /*!< FNUM (Bit 24) */ + #define R_SCI_B0_FRSR_FNUM_Msk (0x3f000000UL) /*!< FNUM (Bitfield-Mask: 0x3f) */ +/* ========================================================= FTSR ========================================================== */ + #define R_SCI_B0_FTSR_T_Pos (0UL) /*!< T (Bit 0) */ + #define R_SCI_B0_FTSR_T_Msk (0x3fUL) /*!< T (Bitfield-Mask: 0x3f) */ +/* ========================================================== MSR ========================================================== */ + #define R_SCI_B0_MSR_PFER_Pos (0UL) /*!< PFER (Bit 0) */ + #define R_SCI_B0_MSR_PFER_Msk (0x1UL) /*!< PFER (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_MSR_SYER_Pos (1UL) /*!< SYER (Bit 1) */ + #define R_SCI_B0_MSR_SYER_Msk (0x2UL) /*!< SYER (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_MSR_SBER_Pos (2UL) /*!< SBER (Bit 2) */ + #define R_SCI_B0_MSR_SBER_Msk (0x4UL) /*!< SBER (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_MSR_MER_Pos (4UL) /*!< MER (Bit 4) */ + #define R_SCI_B0_MSR_MER_Msk (0x10UL) /*!< MER (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_MSR_RSYNC_Pos (6UL) /*!< RSYNC (Bit 6) */ + #define R_SCI_B0_MSR_RSYNC_Msk (0x40UL) /*!< RSYNC (Bitfield-Mask: 0x01) */ +/* ========================================================= XSR0 ========================================================== */ + #define R_SCI_B0_XSR0_SFSF_Pos (0UL) /*!< SFSF (Bit 0) */ + #define R_SCI_B0_XSR0_SFSF_Msk (0x1UL) /*!< SFSF (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_XSR0_RXDSF_Pos (1UL) /*!< RXDSF (Bit 1) */ + #define R_SCI_B0_XSR0_RXDSF_Msk (0x2UL) /*!< RXDSF (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_XSR0_BFOF_Pos (8UL) /*!< BFOF (Bit 8) */ + #define R_SCI_B0_XSR0_BFOF_Msk (0x100UL) /*!< BFOF (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_XSR0_BCDF_Pos (9UL) /*!< BCDF (Bit 9) */ + #define R_SCI_B0_XSR0_BCDF_Msk (0x200UL) /*!< BCDF (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_XSR0_BFDF_Pos (10UL) /*!< BFDF (Bit 10) */ + #define R_SCI_B0_XSR0_BFDF_Msk (0x400UL) /*!< BFDF (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_XSR0_CF0MF_Pos (11UL) /*!< CF0MF (Bit 11) */ + #define R_SCI_B0_XSR0_CF0MF_Msk (0x800UL) /*!< CF0MF (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_XSR0_CF1MF_Pos (12UL) /*!< CF1MF (Bit 12) */ + #define R_SCI_B0_XSR0_CF1MF_Msk (0x1000UL) /*!< CF1MF (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_XSR0_PIBDF_Pos (13UL) /*!< PIBDF (Bit 13) */ + #define R_SCI_B0_XSR0_PIBDF_Msk (0x2000UL) /*!< PIBDF (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_XSR0_COF_Pos (14UL) /*!< COF (Bit 14) */ + #define R_SCI_B0_XSR0_COF_Msk (0x4000UL) /*!< COF (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_XSR0_AEDF_Pos (15UL) /*!< AEDF (Bit 15) */ + #define R_SCI_B0_XSR0_AEDF_Msk (0x8000UL) /*!< AEDF (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_XSR0_CF0RD_Pos (16UL) /*!< CF0RD (Bit 16) */ + #define R_SCI_B0_XSR0_CF0RD_Msk (0xff0000UL) /*!< CF0RD (Bitfield-Mask: 0xff) */ + #define R_SCI_B0_XSR0_CF1RD_Pos (24UL) /*!< CF1RD (Bit 24) */ + #define R_SCI_B0_XSR0_CF1RD_Msk (0xff000000UL) /*!< CF1RD (Bitfield-Mask: 0xff) */ +/* ========================================================= XSR1 ========================================================== */ + #define R_SCI_B0_XSR1_TCNT_Pos (0UL) /*!< TCNT (Bit 0) */ + #define R_SCI_B0_XSR1_TCNT_Msk (0xffffUL) /*!< TCNT (Bitfield-Mask: 0xffff) */ +/* ========================================================= CFCLR ========================================================= */ + #define R_SCI_B0_CFCLR_ERSC_Pos (4UL) /*!< ERSC (Bit 4) */ + #define R_SCI_B0_CFCLR_ERSC_Msk (0x10UL) /*!< ERSC (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_CFCLR_DCMFC_Pos (16UL) /*!< DCMFC (Bit 16) */ + #define R_SCI_B0_CFCLR_DCMFC_Msk (0x10000UL) /*!< DCMFC (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_CFCLR_DPERC_Pos (17UL) /*!< DPERC (Bit 17) */ + #define R_SCI_B0_CFCLR_DPERC_Msk (0x20000UL) /*!< DPERC (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_CFCLR_DFERC_Pos (18UL) /*!< DFERC (Bit 18) */ + #define R_SCI_B0_CFCLR_DFERC_Msk (0x40000UL) /*!< DFERC (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_CFCLR_ORERC_Pos (24UL) /*!< ORERC (Bit 24) */ + #define R_SCI_B0_CFCLR_ORERC_Msk (0x1000000UL) /*!< ORERC (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_CFCLR_MFFC_Pos (26UL) /*!< MFFC (Bit 26) */ + #define R_SCI_B0_CFCLR_MFFC_Msk (0x4000000UL) /*!< MFFC (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_CFCLR_PERC_Pos (27UL) /*!< PERC (Bit 27) */ + #define R_SCI_B0_CFCLR_PERC_Msk (0x8000000UL) /*!< PERC (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_CFCLR_FERC_Pos (28UL) /*!< FERC (Bit 28) */ + #define R_SCI_B0_CFCLR_FERC_Msk (0x10000000UL) /*!< FERC (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_CFCLR_TDREC_Pos (29UL) /*!< TDREC (Bit 29) */ + #define R_SCI_B0_CFCLR_TDREC_Msk (0x20000000UL) /*!< TDREC (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_CFCLR_RDRFC_Pos (31UL) /*!< RDRFC (Bit 31) */ + #define R_SCI_B0_CFCLR_RDRFC_Msk (0x80000000UL) /*!< RDRFC (Bitfield-Mask: 0x01) */ +/* ======================================================== ICFCLR ========================================================= */ + #define R_SCI_B0_ICFCLR_IICSTIFC_Pos (3UL) /*!< IICSTIFC (Bit 3) */ + #define R_SCI_B0_ICFCLR_IICSTIFC_Msk (0x8UL) /*!< IICSTIFC (Bitfield-Mask: 0x01) */ +/* ========================================================= FFCLR ========================================================= */ + #define R_SCI_B0_FFCLR_DRC_Pos (0UL) /*!< DRC (Bit 0) */ + #define R_SCI_B0_FFCLR_DRC_Msk (0x1UL) /*!< DRC (Bitfield-Mask: 0x01) */ +/* ========================================================= MFCLR ========================================================= */ + #define R_SCI_B0_MFCLR_PFERC_Pos (0UL) /*!< PFERC (Bit 0) */ + #define R_SCI_B0_MFCLR_PFERC_Msk (0x1UL) /*!< PFERC (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_MFCLR_SYERC_Pos (1UL) /*!< SYERC (Bit 1) */ + #define R_SCI_B0_MFCLR_SYERC_Msk (0x2UL) /*!< SYERC (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_MFCLR_SBERC_Pos (2UL) /*!< SBERC (Bit 2) */ + #define R_SCI_B0_MFCLR_SBERC_Msk (0x4UL) /*!< SBERC (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_MFCLR_MERC_Pos (4UL) /*!< MERC (Bit 4) */ + #define R_SCI_B0_MFCLR_MERC_Msk (0x10UL) /*!< MERC (Bitfield-Mask: 0x01) */ +/* ========================================================= XFCLR ========================================================= */ + #define R_SCI_B0_XFCLR_BFOC_Pos (8UL) /*!< BFOC (Bit 8) */ + #define R_SCI_B0_XFCLR_BFOC_Msk (0x100UL) /*!< BFOC (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_XFCLR_BCDC_Pos (9UL) /*!< BCDC (Bit 9) */ + #define R_SCI_B0_XFCLR_BCDC_Msk (0x200UL) /*!< BCDC (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_XFCLR_BFDC_Pos (10UL) /*!< BFDC (Bit 10) */ + #define R_SCI_B0_XFCLR_BFDC_Msk (0x400UL) /*!< BFDC (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_XFCLR_CF0MC_Pos (11UL) /*!< CF0MC (Bit 11) */ + #define R_SCI_B0_XFCLR_CF0MC_Msk (0x800UL) /*!< CF0MC (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_XFCLR_CF1MC_Pos (12UL) /*!< CF1MC (Bit 12) */ + #define R_SCI_B0_XFCLR_CF1MC_Msk (0x1000UL) /*!< CF1MC (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_XFCLR_PIBDC_Pos (13UL) /*!< PIBDC (Bit 13) */ + #define R_SCI_B0_XFCLR_PIBDC_Msk (0x2000UL) /*!< PIBDC (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_XFCLR_COFC_Pos (14UL) /*!< COFC (Bit 14) */ + #define R_SCI_B0_XFCLR_COFC_Msk (0x4000UL) /*!< COFC (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_XFCLR_AEDC_Pos (15UL) /*!< AEDC (Bit 15) */ + #define R_SCI_B0_XFCLR_AEDC_Msk (0x8000UL) /*!< AEDC (Bitfield-Mask: 0x01) */ + +/* =========================================================================================================================== */ +/* ================ R_SPI_B0 ================ */ +/* =========================================================================================================================== */ + +/* ========================================================= SPDR ========================================================== */ +/* ======================================================== SPDECR ========================================================= */ + #define R_SPI_B0_SPDECR_SCKDL_Pos (0UL) /*!< SCKDL (Bit 0) */ + #define R_SPI_B0_SPDECR_SCKDL_Msk (0x7UL) /*!< SCKDL (Bitfield-Mask: 0x07) */ + #define R_SPI_B0_SPDECR_SLNDL_Pos (8UL) /*!< SLNDL (Bit 8) */ + #define R_SPI_B0_SPDECR_SLNDL_Msk (0x700UL) /*!< SLNDL (Bitfield-Mask: 0x07) */ + #define R_SPI_B0_SPDECR_SPNDL_Pos (16UL) /*!< SPNDL (Bit 16) */ + #define R_SPI_B0_SPDECR_SPNDL_Msk (0x70000UL) /*!< SPNDL (Bitfield-Mask: 0x07) */ + #define R_SPI_B0_SPDECR_ARST_Pos (24UL) /*!< ARST (Bit 24) */ + #define R_SPI_B0_SPDECR_ARST_Msk (0x7000000UL) /*!< ARST (Bitfield-Mask: 0x07) */ +/* ========================================================= SPCR ========================================================== */ + #define R_SPI_B0_SPCR_SPE_Pos (0UL) /*!< SPE (Bit 0) */ + #define R_SPI_B0_SPCR_SPE_Msk (0x1UL) /*!< SPE (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCR_SPSCKSEL_Pos (7UL) /*!< SPSCKSEL (Bit 7) */ + #define R_SPI_B0_SPCR_SPSCKSEL_Msk (0x80UL) /*!< SPSCKSEL (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCR_SPPE_Pos (8UL) /*!< SPPE (Bit 8) */ + #define R_SPI_B0_SPCR_SPPE_Msk (0x100UL) /*!< SPPE (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCR_SPOE_Pos (9UL) /*!< SPOE (Bit 9) */ + #define R_SPI_B0_SPCR_SPOE_Msk (0x200UL) /*!< SPOE (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCR_PTE_Pos (11UL) /*!< PTE (Bit 11) */ + #define R_SPI_B0_SPCR_PTE_Msk (0x800UL) /*!< PTE (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCR_SCKASE_Pos (12UL) /*!< SCKASE (Bit 12) */ + #define R_SPI_B0_SPCR_SCKASE_Msk (0x1000UL) /*!< SCKASE (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCR_BFDS_Pos (13UL) /*!< BFDS (Bit 13) */ + #define R_SPI_B0_SPCR_BFDS_Msk (0x2000UL) /*!< BFDS (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCR_MODFEN_Pos (14UL) /*!< MODFEN (Bit 14) */ + #define R_SPI_B0_SPCR_MODFEN_Msk (0x4000UL) /*!< MODFEN (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCR_SPEIE_Pos (16UL) /*!< SPEIE (Bit 16) */ + #define R_SPI_B0_SPCR_SPEIE_Msk (0x10000UL) /*!< SPEIE (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCR_SPRIE_Pos (17UL) /*!< SPRIE (Bit 17) */ + #define R_SPI_B0_SPCR_SPRIE_Msk (0x20000UL) /*!< SPRIE (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCR_SPIIE_Pos (18UL) /*!< SPIIE (Bit 18) */ + #define R_SPI_B0_SPCR_SPIIE_Msk (0x40000UL) /*!< SPIIE (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCR_SPDRES_Pos (19UL) /*!< SPDRES (Bit 19) */ + #define R_SPI_B0_SPCR_SPDRES_Msk (0x80000UL) /*!< SPDRES (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCR_SPTIE_Pos (20UL) /*!< SPTIE (Bit 20) */ + #define R_SPI_B0_SPCR_SPTIE_Msk (0x100000UL) /*!< SPTIE (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCR_CENDIE_Pos (21UL) /*!< CENDIE (Bit 21) */ + #define R_SPI_B0_SPCR_CENDIE_Msk (0x200000UL) /*!< CENDIE (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCR_SPMS_Pos (24UL) /*!< SPMS (Bit 24) */ + #define R_SPI_B0_SPCR_SPMS_Msk (0x1000000UL) /*!< SPMS (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCR_SPFRF_Pos (25UL) /*!< SPFRF (Bit 25) */ + #define R_SPI_B0_SPCR_SPFRF_Msk (0x2000000UL) /*!< SPFRF (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCR_TXMD_Pos (28UL) /*!< TXMD (Bit 28) */ + #define R_SPI_B0_SPCR_TXMD_Msk (0x30000000UL) /*!< TXMD (Bitfield-Mask: 0x03) */ + #define R_SPI_B0_SPCR_MSTR_Pos (30UL) /*!< MSTR (Bit 30) */ + #define R_SPI_B0_SPCR_MSTR_Msk (0x40000000UL) /*!< MSTR (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCR_BPEN_Pos (31UL) /*!< BPEN (Bit 31) */ + #define R_SPI_B0_SPCR_BPEN_Msk (0x80000000UL) /*!< BPEN (Bitfield-Mask: 0x01) */ +/* ========================================================= SPCR2 ========================================================= */ + #define R_SPI_B0_SPCR2_RMFM_Pos (0UL) /*!< RMFM (Bit 0) */ + #define R_SPI_B0_SPCR2_RMFM_Msk (0x1fUL) /*!< RMFM (Bitfield-Mask: 0x1f) */ + #define R_SPI_B0_SPCR2_RMEDTG_Pos (6UL) /*!< RMEDTG (Bit 6) */ + #define R_SPI_B0_SPCR2_RMEDTG_Msk (0x40UL) /*!< RMEDTG (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCR2_RMSTTG_Pos (7UL) /*!< RMSTTG (Bit 7) */ + #define R_SPI_B0_SPCR2_RMSTTG_Msk (0x80UL) /*!< RMSTTG (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCR2_SPDRC_Pos (8UL) /*!< SPDRC (Bit 8) */ + #define R_SPI_B0_SPCR2_SPDRC_Msk (0xff00UL) /*!< SPDRC (Bitfield-Mask: 0xff) */ + #define R_SPI_B0_SPCR2_SPLP_Pos (16UL) /*!< SPLP (Bit 16) */ + #define R_SPI_B0_SPCR2_SPLP_Msk (0x10000UL) /*!< SPLP (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCR2_SPLP2_Pos (17UL) /*!< SPLP2 (Bit 17) */ + #define R_SPI_B0_SPCR2_SPLP2_Msk (0x20000UL) /*!< SPLP2 (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCR2_MOIFV_Pos (20UL) /*!< MOIFV (Bit 20) */ + #define R_SPI_B0_SPCR2_MOIFV_Msk (0x100000UL) /*!< MOIFV (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCR2_MOIFE_Pos (21UL) /*!< MOIFE (Bit 21) */ + #define R_SPI_B0_SPCR2_MOIFE_Msk (0x200000UL) /*!< MOIFE (Bitfield-Mask: 0x01) */ +/* ========================================================= SPCR3 ========================================================= */ + #define R_SPI_B0_SPCR3_SSL0P_Pos (0UL) /*!< SSL0P (Bit 0) */ + #define R_SPI_B0_SPCR3_SSL0P_Msk (0x1UL) /*!< SSL0P (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCR3_SSL1P_Pos (1UL) /*!< SSL1P (Bit 1) */ + #define R_SPI_B0_SPCR3_SSL1P_Msk (0x2UL) /*!< SSL1P (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCR3_SSL2P_Pos (2UL) /*!< SSL2P (Bit 2) */ + #define R_SPI_B0_SPCR3_SSL2P_Msk (0x4UL) /*!< SSL2P (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCR3_SSL3P_Pos (3UL) /*!< SSL3P (Bit 3) */ + #define R_SPI_B0_SPCR3_SSL3P_Msk (0x8UL) /*!< SSL3P (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCR3_SPBR_Pos (8UL) /*!< SPBR (Bit 8) */ + #define R_SPI_B0_SPCR3_SPBR_Msk (0xff00UL) /*!< SPBR (Bitfield-Mask: 0xff) */ + #define R_SPI_B0_SPCR3_SPSLN_Pos (24UL) /*!< SPSLN (Bit 24) */ + #define R_SPI_B0_SPCR3_SPSLN_Msk (0x7000000UL) /*!< SPSLN (Bitfield-Mask: 0x07) */ +/* ======================================================== SPCMD0 ========================================================= */ + #define R_SPI_B0_SPCMD0_CPHA_Pos (0UL) /*!< CPHA (Bit 0) */ + #define R_SPI_B0_SPCMD0_CPHA_Msk (0x1UL) /*!< CPHA (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCMD0_CPOL_Pos (1UL) /*!< CPOL (Bit 1) */ + #define R_SPI_B0_SPCMD0_CPOL_Msk (0x2UL) /*!< CPOL (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCMD0_BRDV_Pos (2UL) /*!< BRDV (Bit 2) */ + #define R_SPI_B0_SPCMD0_BRDV_Msk (0xcUL) /*!< BRDV (Bitfield-Mask: 0x03) */ + #define R_SPI_B0_SPCMD0_SSLKP_Pos (7UL) /*!< SSLKP (Bit 7) */ + #define R_SPI_B0_SPCMD0_SSLKP_Msk (0x80UL) /*!< SSLKP (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCMD0_LSBF_Pos (12UL) /*!< LSBF (Bit 12) */ + #define R_SPI_B0_SPCMD0_LSBF_Msk (0x1000UL) /*!< LSBF (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCMD0_SPNDEN_Pos (13UL) /*!< SPNDEN (Bit 13) */ + #define R_SPI_B0_SPCMD0_SPNDEN_Msk (0x2000UL) /*!< SPNDEN (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCMD0_SLNDEN_Pos (14UL) /*!< SLNDEN (Bit 14) */ + #define R_SPI_B0_SPCMD0_SLNDEN_Msk (0x4000UL) /*!< SLNDEN (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCMD0_SCKDEN_Pos (15UL) /*!< SCKDEN (Bit 15) */ + #define R_SPI_B0_SPCMD0_SCKDEN_Msk (0x8000UL) /*!< SCKDEN (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCMD0_SPB_Pos (16UL) /*!< SPB (Bit 16) */ + #define R_SPI_B0_SPCMD0_SPB_Msk (0x1f0000UL) /*!< SPB (Bitfield-Mask: 0x1f) */ + #define R_SPI_B0_SPCMD0_SSLA_Pos (24UL) /*!< SSLA (Bit 24) */ + #define R_SPI_B0_SPCMD0_SSLA_Msk (0x7000000UL) /*!< SSLA (Bitfield-Mask: 0x07) */ +/* ======================================================== SPCMD1 ========================================================= */ + #define R_SPI_B0_SPCMD1_CPHA_Pos (0UL) /*!< CPHA (Bit 0) */ + #define R_SPI_B0_SPCMD1_CPHA_Msk (0x1UL) /*!< CPHA (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCMD1_CPOL_Pos (1UL) /*!< CPOL (Bit 1) */ + #define R_SPI_B0_SPCMD1_CPOL_Msk (0x2UL) /*!< CPOL (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCMD1_BRDV_Pos (2UL) /*!< BRDV (Bit 2) */ + #define R_SPI_B0_SPCMD1_BRDV_Msk (0xcUL) /*!< BRDV (Bitfield-Mask: 0x03) */ + #define R_SPI_B0_SPCMD1_SSLKP_Pos (7UL) /*!< SSLKP (Bit 7) */ + #define R_SPI_B0_SPCMD1_SSLKP_Msk (0x80UL) /*!< SSLKP (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCMD1_LSBF_Pos (12UL) /*!< LSBF (Bit 12) */ + #define R_SPI_B0_SPCMD1_LSBF_Msk (0x1000UL) /*!< LSBF (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCMD1_SPNDEN_Pos (13UL) /*!< SPNDEN (Bit 13) */ + #define R_SPI_B0_SPCMD1_SPNDEN_Msk (0x2000UL) /*!< SPNDEN (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCMD1_SLNDEN_Pos (14UL) /*!< SLNDEN (Bit 14) */ + #define R_SPI_B0_SPCMD1_SLNDEN_Msk (0x4000UL) /*!< SLNDEN (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCMD1_SCKDEN_Pos (15UL) /*!< SCKDEN (Bit 15) */ + #define R_SPI_B0_SPCMD1_SCKDEN_Msk (0x8000UL) /*!< SCKDEN (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCMD1_SPB_Pos (16UL) /*!< SPB (Bit 16) */ + #define R_SPI_B0_SPCMD1_SPB_Msk (0x1f0000UL) /*!< SPB (Bitfield-Mask: 0x1f) */ + #define R_SPI_B0_SPCMD1_SSLA_Pos (24UL) /*!< SSLA (Bit 24) */ + #define R_SPI_B0_SPCMD1_SSLA_Msk (0x7000000UL) /*!< SSLA (Bitfield-Mask: 0x07) */ +/* ======================================================== SPCMD2 ========================================================= */ + #define R_SPI_B0_SPCMD2_CPHA_Pos (0UL) /*!< CPHA (Bit 0) */ + #define R_SPI_B0_SPCMD2_CPHA_Msk (0x1UL) /*!< CPHA (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCMD2_CPOL_Pos (1UL) /*!< CPOL (Bit 1) */ + #define R_SPI_B0_SPCMD2_CPOL_Msk (0x2UL) /*!< CPOL (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCMD2_BRDV_Pos (2UL) /*!< BRDV (Bit 2) */ + #define R_SPI_B0_SPCMD2_BRDV_Msk (0xcUL) /*!< BRDV (Bitfield-Mask: 0x03) */ + #define R_SPI_B0_SPCMD2_SSLKP_Pos (7UL) /*!< SSLKP (Bit 7) */ + #define R_SPI_B0_SPCMD2_SSLKP_Msk (0x80UL) /*!< SSLKP (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCMD2_LSBF_Pos (12UL) /*!< LSBF (Bit 12) */ + #define R_SPI_B0_SPCMD2_LSBF_Msk (0x1000UL) /*!< LSBF (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCMD2_SPNDEN_Pos (13UL) /*!< SPNDEN (Bit 13) */ + #define R_SPI_B0_SPCMD2_SPNDEN_Msk (0x2000UL) /*!< SPNDEN (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCMD2_SLNDEN_Pos (14UL) /*!< SLNDEN (Bit 14) */ + #define R_SPI_B0_SPCMD2_SLNDEN_Msk (0x4000UL) /*!< SLNDEN (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCMD2_SCKDEN_Pos (15UL) /*!< SCKDEN (Bit 15) */ + #define R_SPI_B0_SPCMD2_SCKDEN_Msk (0x8000UL) /*!< SCKDEN (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCMD2_SPB_Pos (16UL) /*!< SPB (Bit 16) */ + #define R_SPI_B0_SPCMD2_SPB_Msk (0x1f0000UL) /*!< SPB (Bitfield-Mask: 0x1f) */ + #define R_SPI_B0_SPCMD2_SSLA_Pos (24UL) /*!< SSLA (Bit 24) */ + #define R_SPI_B0_SPCMD2_SSLA_Msk (0x7000000UL) /*!< SSLA (Bitfield-Mask: 0x07) */ +/* ======================================================== SPCMD3 ========================================================= */ + #define R_SPI_B0_SPCMD3_CPHA_Pos (0UL) /*!< CPHA (Bit 0) */ + #define R_SPI_B0_SPCMD3_CPHA_Msk (0x1UL) /*!< CPHA (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCMD3_CPOL_Pos (1UL) /*!< CPOL (Bit 1) */ + #define R_SPI_B0_SPCMD3_CPOL_Msk (0x2UL) /*!< CPOL (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCMD3_BRDV_Pos (2UL) /*!< BRDV (Bit 2) */ + #define R_SPI_B0_SPCMD3_BRDV_Msk (0xcUL) /*!< BRDV (Bitfield-Mask: 0x03) */ + #define R_SPI_B0_SPCMD3_SSLKP_Pos (7UL) /*!< SSLKP (Bit 7) */ + #define R_SPI_B0_SPCMD3_SSLKP_Msk (0x80UL) /*!< SSLKP (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCMD3_LSBF_Pos (12UL) /*!< LSBF (Bit 12) */ + #define R_SPI_B0_SPCMD3_LSBF_Msk (0x1000UL) /*!< LSBF (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCMD3_SPNDEN_Pos (13UL) /*!< SPNDEN (Bit 13) */ + #define R_SPI_B0_SPCMD3_SPNDEN_Msk (0x2000UL) /*!< SPNDEN (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCMD3_SLNDEN_Pos (14UL) /*!< SLNDEN (Bit 14) */ + #define R_SPI_B0_SPCMD3_SLNDEN_Msk (0x4000UL) /*!< SLNDEN (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCMD3_SCKDEN_Pos (15UL) /*!< SCKDEN (Bit 15) */ + #define R_SPI_B0_SPCMD3_SCKDEN_Msk (0x8000UL) /*!< SCKDEN (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCMD3_SPB_Pos (16UL) /*!< SPB (Bit 16) */ + #define R_SPI_B0_SPCMD3_SPB_Msk (0x1f0000UL) /*!< SPB (Bitfield-Mask: 0x1f) */ + #define R_SPI_B0_SPCMD3_SSLA_Pos (24UL) /*!< SSLA (Bit 24) */ + #define R_SPI_B0_SPCMD3_SSLA_Msk (0x7000000UL) /*!< SSLA (Bitfield-Mask: 0x07) */ +/* ======================================================== SPCMD4 ========================================================= */ + #define R_SPI_B0_SPCMD4_CPHA_Pos (0UL) /*!< CPHA (Bit 0) */ + #define R_SPI_B0_SPCMD4_CPHA_Msk (0x1UL) /*!< CPHA (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCMD4_CPOL_Pos (1UL) /*!< CPOL (Bit 1) */ + #define R_SPI_B0_SPCMD4_CPOL_Msk (0x2UL) /*!< CPOL (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCMD4_BRDV_Pos (2UL) /*!< BRDV (Bit 2) */ + #define R_SPI_B0_SPCMD4_BRDV_Msk (0xcUL) /*!< BRDV (Bitfield-Mask: 0x03) */ + #define R_SPI_B0_SPCMD4_SSLKP_Pos (7UL) /*!< SSLKP (Bit 7) */ + #define R_SPI_B0_SPCMD4_SSLKP_Msk (0x80UL) /*!< SSLKP (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCMD4_LSBF_Pos (12UL) /*!< LSBF (Bit 12) */ + #define R_SPI_B0_SPCMD4_LSBF_Msk (0x1000UL) /*!< LSBF (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCMD4_SPNDEN_Pos (13UL) /*!< SPNDEN (Bit 13) */ + #define R_SPI_B0_SPCMD4_SPNDEN_Msk (0x2000UL) /*!< SPNDEN (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCMD4_SLNDEN_Pos (14UL) /*!< SLNDEN (Bit 14) */ + #define R_SPI_B0_SPCMD4_SLNDEN_Msk (0x4000UL) /*!< SLNDEN (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCMD4_SCKDEN_Pos (15UL) /*!< SCKDEN (Bit 15) */ + #define R_SPI_B0_SPCMD4_SCKDEN_Msk (0x8000UL) /*!< SCKDEN (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCMD4_SPB_Pos (16UL) /*!< SPB (Bit 16) */ + #define R_SPI_B0_SPCMD4_SPB_Msk (0x1f0000UL) /*!< SPB (Bitfield-Mask: 0x1f) */ + #define R_SPI_B0_SPCMD4_SSLA_Pos (24UL) /*!< SSLA (Bit 24) */ + #define R_SPI_B0_SPCMD4_SSLA_Msk (0x7000000UL) /*!< SSLA (Bitfield-Mask: 0x07) */ +/* ======================================================== SPCMD5 ========================================================= */ + #define R_SPI_B0_SPCMD5_CPHA_Pos (0UL) /*!< CPHA (Bit 0) */ + #define R_SPI_B0_SPCMD5_CPHA_Msk (0x1UL) /*!< CPHA (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCMD5_CPOL_Pos (1UL) /*!< CPOL (Bit 1) */ + #define R_SPI_B0_SPCMD5_CPOL_Msk (0x2UL) /*!< CPOL (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCMD5_BRDV_Pos (2UL) /*!< BRDV (Bit 2) */ + #define R_SPI_B0_SPCMD5_BRDV_Msk (0xcUL) /*!< BRDV (Bitfield-Mask: 0x03) */ + #define R_SPI_B0_SPCMD5_SSLKP_Pos (7UL) /*!< SSLKP (Bit 7) */ + #define R_SPI_B0_SPCMD5_SSLKP_Msk (0x80UL) /*!< SSLKP (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCMD5_LSBF_Pos (12UL) /*!< LSBF (Bit 12) */ + #define R_SPI_B0_SPCMD5_LSBF_Msk (0x1000UL) /*!< LSBF (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCMD5_SPNDEN_Pos (13UL) /*!< SPNDEN (Bit 13) */ + #define R_SPI_B0_SPCMD5_SPNDEN_Msk (0x2000UL) /*!< SPNDEN (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCMD5_SLNDEN_Pos (14UL) /*!< SLNDEN (Bit 14) */ + #define R_SPI_B0_SPCMD5_SLNDEN_Msk (0x4000UL) /*!< SLNDEN (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCMD5_SCKDEN_Pos (15UL) /*!< SCKDEN (Bit 15) */ + #define R_SPI_B0_SPCMD5_SCKDEN_Msk (0x8000UL) /*!< SCKDEN (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCMD5_SPB_Pos (16UL) /*!< SPB (Bit 16) */ + #define R_SPI_B0_SPCMD5_SPB_Msk (0x1f0000UL) /*!< SPB (Bitfield-Mask: 0x1f) */ + #define R_SPI_B0_SPCMD5_SSLA_Pos (24UL) /*!< SSLA (Bit 24) */ + #define R_SPI_B0_SPCMD5_SSLA_Msk (0x7000000UL) /*!< SSLA (Bitfield-Mask: 0x07) */ +/* ======================================================== SPCMD6 ========================================================= */ + #define R_SPI_B0_SPCMD6_CPHA_Pos (0UL) /*!< CPHA (Bit 0) */ + #define R_SPI_B0_SPCMD6_CPHA_Msk (0x1UL) /*!< CPHA (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCMD6_CPOL_Pos (1UL) /*!< CPOL (Bit 1) */ + #define R_SPI_B0_SPCMD6_CPOL_Msk (0x2UL) /*!< CPOL (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCMD6_BRDV_Pos (2UL) /*!< BRDV (Bit 2) */ + #define R_SPI_B0_SPCMD6_BRDV_Msk (0xcUL) /*!< BRDV (Bitfield-Mask: 0x03) */ + #define R_SPI_B0_SPCMD6_SSLKP_Pos (7UL) /*!< SSLKP (Bit 7) */ + #define R_SPI_B0_SPCMD6_SSLKP_Msk (0x80UL) /*!< SSLKP (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCMD6_LSBF_Pos (12UL) /*!< LSBF (Bit 12) */ + #define R_SPI_B0_SPCMD6_LSBF_Msk (0x1000UL) /*!< LSBF (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCMD6_SPNDEN_Pos (13UL) /*!< SPNDEN (Bit 13) */ + #define R_SPI_B0_SPCMD6_SPNDEN_Msk (0x2000UL) /*!< SPNDEN (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCMD6_SLNDEN_Pos (14UL) /*!< SLNDEN (Bit 14) */ + #define R_SPI_B0_SPCMD6_SLNDEN_Msk (0x4000UL) /*!< SLNDEN (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCMD6_SCKDEN_Pos (15UL) /*!< SCKDEN (Bit 15) */ + #define R_SPI_B0_SPCMD6_SCKDEN_Msk (0x8000UL) /*!< SCKDEN (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCMD6_SPB_Pos (16UL) /*!< SPB (Bit 16) */ + #define R_SPI_B0_SPCMD6_SPB_Msk (0x1f0000UL) /*!< SPB (Bitfield-Mask: 0x1f) */ + #define R_SPI_B0_SPCMD6_SSLA_Pos (24UL) /*!< SSLA (Bit 24) */ + #define R_SPI_B0_SPCMD6_SSLA_Msk (0x7000000UL) /*!< SSLA (Bitfield-Mask: 0x07) */ +/* ======================================================== SPCMD7 ========================================================= */ + #define R_SPI_B0_SPCMD7_CPHA_Pos (0UL) /*!< CPHA (Bit 0) */ + #define R_SPI_B0_SPCMD7_CPHA_Msk (0x1UL) /*!< CPHA (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCMD7_CPOL_Pos (1UL) /*!< CPOL (Bit 1) */ + #define R_SPI_B0_SPCMD7_CPOL_Msk (0x2UL) /*!< CPOL (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCMD7_BRDV_Pos (2UL) /*!< BRDV (Bit 2) */ + #define R_SPI_B0_SPCMD7_BRDV_Msk (0xcUL) /*!< BRDV (Bitfield-Mask: 0x03) */ + #define R_SPI_B0_SPCMD7_SSLKP_Pos (7UL) /*!< SSLKP (Bit 7) */ + #define R_SPI_B0_SPCMD7_SSLKP_Msk (0x80UL) /*!< SSLKP (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCMD7_LSBF_Pos (12UL) /*!< LSBF (Bit 12) */ + #define R_SPI_B0_SPCMD7_LSBF_Msk (0x1000UL) /*!< LSBF (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCMD7_SPNDEN_Pos (13UL) /*!< SPNDEN (Bit 13) */ + #define R_SPI_B0_SPCMD7_SPNDEN_Msk (0x2000UL) /*!< SPNDEN (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCMD7_SLNDEN_Pos (14UL) /*!< SLNDEN (Bit 14) */ + #define R_SPI_B0_SPCMD7_SLNDEN_Msk (0x4000UL) /*!< SLNDEN (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCMD7_SCKDEN_Pos (15UL) /*!< SCKDEN (Bit 15) */ + #define R_SPI_B0_SPCMD7_SCKDEN_Msk (0x8000UL) /*!< SCKDEN (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCMD7_SPB_Pos (16UL) /*!< SPB (Bit 16) */ + #define R_SPI_B0_SPCMD7_SPB_Msk (0x1f0000UL) /*!< SPB (Bitfield-Mask: 0x1f) */ + #define R_SPI_B0_SPCMD7_SSLA_Pos (24UL) /*!< SSLA (Bit 24) */ + #define R_SPI_B0_SPCMD7_SSLA_Msk (0x7000000UL) /*!< SSLA (Bitfield-Mask: 0x07) */ +/* ========================================================= SPDCR ========================================================= */ + #define R_SPI_B0_SPDCR_BYSW_Pos (0UL) /*!< BYSW (Bit 0) */ + #define R_SPI_B0_SPDCR_BYSW_Msk (0x1UL) /*!< BYSW (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPDCR_SPRDTD_Pos (3UL) /*!< SPRDTD (Bit 3) */ + #define R_SPI_B0_SPDCR_SPRDTD_Msk (0x8UL) /*!< SPRDTD (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPDCR_SINV_Pos (4UL) /*!< SINV (Bit 4) */ + #define R_SPI_B0_SPDCR_SINV_Msk (0x10UL) /*!< SINV (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPDCR_SPFC_Pos (8UL) /*!< SPFC (Bit 8) */ + #define R_SPI_B0_SPDCR_SPFC_Msk (0x300UL) /*!< SPFC (Bitfield-Mask: 0x03) */ +/* ======================================================== SPDCR2 ========================================================= */ + #define R_SPI_B0_SPDCR2_RTRG_Pos (0UL) /*!< RTRG (Bit 0) */ + #define R_SPI_B0_SPDCR2_RTRG_Msk (0x3UL) /*!< RTRG (Bitfield-Mask: 0x03) */ + #define R_SPI_B0_SPDCR2_TTRG_Pos (8UL) /*!< TTRG (Bit 8) */ + #define R_SPI_B0_SPDCR2_TTRG_Msk (0x300UL) /*!< TTRG (Bitfield-Mask: 0x03) */ +/* ========================================================= SPSR ========================================================== */ + #define R_SPI_B0_SPSR_SPCP_Pos (8UL) /*!< SPCP (Bit 8) */ + #define R_SPI_B0_SPSR_SPCP_Msk (0x700UL) /*!< SPCP (Bitfield-Mask: 0x07) */ + #define R_SPI_B0_SPSR_SPECM_Pos (12UL) /*!< SPECM (Bit 12) */ + #define R_SPI_B0_SPSR_SPECM_Msk (0x7000UL) /*!< SPECM (Bitfield-Mask: 0x07) */ + #define R_SPI_B0_SPSR_SPDRF_Pos (23UL) /*!< SPDRF (Bit 23) */ + #define R_SPI_B0_SPSR_SPDRF_Msk (0x800000UL) /*!< SPDRF (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPSR_OVRF_Pos (24UL) /*!< OVRF (Bit 24) */ + #define R_SPI_B0_SPSR_OVRF_Msk (0x1000000UL) /*!< OVRF (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPSR_IDLNF_Pos (25UL) /*!< IDLNF (Bit 25) */ + #define R_SPI_B0_SPSR_IDLNF_Msk (0x2000000UL) /*!< IDLNF (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPSR_MODF_Pos (26UL) /*!< MODF (Bit 26) */ + #define R_SPI_B0_SPSR_MODF_Msk (0x4000000UL) /*!< MODF (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPSR_PERF_Pos (27UL) /*!< PERF (Bit 27) */ + #define R_SPI_B0_SPSR_PERF_Msk (0x8000000UL) /*!< PERF (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPSR_UDRF_Pos (28UL) /*!< UDRF (Bit 28) */ + #define R_SPI_B0_SPSR_UDRF_Msk (0x10000000UL) /*!< UDRF (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPSR_SPTEF_Pos (29UL) /*!< SPTEF (Bit 29) */ + #define R_SPI_B0_SPSR_SPTEF_Msk (0x20000000UL) /*!< SPTEF (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPSR_CENDF_Pos (30UL) /*!< CENDF (Bit 30) */ + #define R_SPI_B0_SPSR_CENDF_Msk (0x40000000UL) /*!< CENDF (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPSR_SPRF_Pos (31UL) /*!< SPRF (Bit 31) */ + #define R_SPI_B0_SPSR_SPRF_Msk (0x80000000UL) /*!< SPRF (Bitfield-Mask: 0x01) */ +/* ======================================================== SPTFSR ========================================================= */ + #define R_SPI_B0_SPTFSR_TFDN_Pos (0UL) /*!< TFDN (Bit 0) */ + #define R_SPI_B0_SPTFSR_TFDN_Msk (0x7UL) /*!< TFDN (Bitfield-Mask: 0x07) */ +/* ======================================================== SPRFSR ========================================================= */ + #define R_SPI_B0_SPRFSR_RFDN_Pos (0UL) /*!< RFDN (Bit 0) */ + #define R_SPI_B0_SPRFSR_RFDN_Msk (0x7UL) /*!< RFDN (Bitfield-Mask: 0x07) */ +/* ========================================================= SPPSR ========================================================= */ + #define R_SPI_B0_SPPSR_SPEPS_Pos (0UL) /*!< SPEPS (Bit 0) */ + #define R_SPI_B0_SPPSR_SPEPS_Msk (0x1UL) /*!< SPEPS (Bitfield-Mask: 0x01) */ +/* ========================================================= SPSRC ========================================================= */ + #define R_SPI_B0_SPSRC_SPDRFC_Pos (23UL) /*!< SPDRFC (Bit 23) */ + #define R_SPI_B0_SPSRC_SPDRFC_Msk (0x800000UL) /*!< SPDRFC (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPSRC_OVRFC_Pos (24UL) /*!< OVRFC (Bit 24) */ + #define R_SPI_B0_SPSRC_OVRFC_Msk (0x1000000UL) /*!< OVRFC (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPSRC_MODFC_Pos (26UL) /*!< MODFC (Bit 26) */ + #define R_SPI_B0_SPSRC_MODFC_Msk (0x4000000UL) /*!< MODFC (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPSRC_PERFC_Pos (27UL) /*!< PERFC (Bit 27) */ + #define R_SPI_B0_SPSRC_PERFC_Msk (0x8000000UL) /*!< PERFC (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPSRC_UDRFC_Pos (28UL) /*!< UDRFC (Bit 28) */ + #define R_SPI_B0_SPSRC_UDRFC_Msk (0x10000000UL) /*!< UDRFC (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPSRC_SPTEFC_Pos (29UL) /*!< SPTEFC (Bit 29) */ + #define R_SPI_B0_SPSRC_SPTEFC_Msk (0x20000000UL) /*!< SPTEFC (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPSRC_CENDFC_Pos (30UL) /*!< CENDFC (Bit 30) */ + #define R_SPI_B0_SPSRC_CENDFC_Msk (0x40000000UL) /*!< CENDFC (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPSRC_SPRFC_Pos (31UL) /*!< SPRFC (Bit 31) */ + #define R_SPI_B0_SPSRC_SPRFC_Msk (0x80000000UL) /*!< SPRFC (Bitfield-Mask: 0x01) */ +/* ========================================================= SPFCR ========================================================= */ + #define R_SPI_B0_SPFCR_SPFRST_Pos (0UL) /*!< SPFRST (Bit 0) */ + #define R_SPI_B0_SPFCR_SPFRST_Msk (0x1UL) /*!< SPFRST (Bitfield-Mask: 0x01) */ + +/* =========================================================================================================================== */ +/* ================ R_USB_HS0 ================ */ +/* =========================================================================================================================== */ + +/* ======================================================== SYSCFG ========================================================= */ + #define R_USB_HS0_SYSCFG_CNEN_Pos (8UL) /*!< CNEN (Bit 8) */ + #define R_USB_HS0_SYSCFG_CNEN_Msk (0x100UL) /*!< CNEN (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_SYSCFG_HSE_Pos (7UL) /*!< HSE (Bit 7) */ + #define R_USB_HS0_SYSCFG_HSE_Msk (0x80UL) /*!< HSE (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_SYSCFG_DCFM_Pos (6UL) /*!< DCFM (Bit 6) */ + #define R_USB_HS0_SYSCFG_DCFM_Msk (0x40UL) /*!< DCFM (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_SYSCFG_DRPD_Pos (5UL) /*!< DRPD (Bit 5) */ + #define R_USB_HS0_SYSCFG_DRPD_Msk (0x20UL) /*!< DRPD (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_SYSCFG_DPRPU_Pos (4UL) /*!< DPRPU (Bit 4) */ + #define R_USB_HS0_SYSCFG_DPRPU_Msk (0x10UL) /*!< DPRPU (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_SYSCFG_USBE_Pos (0UL) /*!< USBE (Bit 0) */ + #define R_USB_HS0_SYSCFG_USBE_Msk (0x1UL) /*!< USBE (Bitfield-Mask: 0x01) */ +/* ======================================================== BUSWAIT ======================================================== */ + #define R_USB_HS0_BUSWAIT_BWAIT_Pos (0UL) /*!< BWAIT (Bit 0) */ + #define R_USB_HS0_BUSWAIT_BWAIT_Msk (0xfUL) /*!< BWAIT (Bitfield-Mask: 0x0f) */ +/* ======================================================== SYSSTS0 ======================================================== */ + #define R_USB_HS0_SYSSTS0_HTACT_Pos (6UL) /*!< HTACT (Bit 6) */ + #define R_USB_HS0_SYSSTS0_HTACT_Msk (0x40UL) /*!< HTACT (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_SYSSTS0_SOFEA_Pos (5UL) /*!< SOFEA (Bit 5) */ + #define R_USB_HS0_SYSSTS0_SOFEA_Msk (0x20UL) /*!< SOFEA (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_SYSSTS0_IDMON_Pos (2UL) /*!< IDMON (Bit 2) */ + #define R_USB_HS0_SYSSTS0_IDMON_Msk (0x4UL) /*!< IDMON (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_SYSSTS0_LNST_Pos (0UL) /*!< LNST (Bit 0) */ + #define R_USB_HS0_SYSSTS0_LNST_Msk (0x3UL) /*!< LNST (Bitfield-Mask: 0x03) */ + #define R_USB_HS0_SYSSTS0_OVCMON_Pos (14UL) /*!< OVCMON (Bit 14) */ + #define R_USB_HS0_SYSSTS0_OVCMON_Msk (0xc000UL) /*!< OVCMON (Bitfield-Mask: 0x03) */ +/* ======================================================== PLLSTA ========================================================= */ + #define R_USB_HS0_PLLSTA_PLLLOCK_Pos (0UL) /*!< PLLLOCK (Bit 0) */ + #define R_USB_HS0_PLLSTA_PLLLOCK_Msk (0x1UL) /*!< PLLLOCK (Bitfield-Mask: 0x01) */ +/* ======================================================= DVSTCTR0 ======================================================== */ + #define R_USB_HS0_DVSTCTR0_HNPBTOA_Pos (11UL) /*!< HNPBTOA (Bit 11) */ + #define R_USB_HS0_DVSTCTR0_HNPBTOA_Msk (0x800UL) /*!< HNPBTOA (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_DVSTCTR0_EXICEN_Pos (10UL) /*!< EXICEN (Bit 10) */ + #define R_USB_HS0_DVSTCTR0_EXICEN_Msk (0x400UL) /*!< EXICEN (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_DVSTCTR0_VBUSEN_Pos (9UL) /*!< VBUSEN (Bit 9) */ + #define R_USB_HS0_DVSTCTR0_VBUSEN_Msk (0x200UL) /*!< VBUSEN (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_DVSTCTR0_WKUP_Pos (8UL) /*!< WKUP (Bit 8) */ + #define R_USB_HS0_DVSTCTR0_WKUP_Msk (0x100UL) /*!< WKUP (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_DVSTCTR0_RWUPE_Pos (7UL) /*!< RWUPE (Bit 7) */ + #define R_USB_HS0_DVSTCTR0_RWUPE_Msk (0x80UL) /*!< RWUPE (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_DVSTCTR0_USBRST_Pos (6UL) /*!< USBRST (Bit 6) */ + #define R_USB_HS0_DVSTCTR0_USBRST_Msk (0x40UL) /*!< USBRST (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_DVSTCTR0_RESUME_Pos (5UL) /*!< RESUME (Bit 5) */ + #define R_USB_HS0_DVSTCTR0_RESUME_Msk (0x20UL) /*!< RESUME (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_DVSTCTR0_UACT_Pos (4UL) /*!< UACT (Bit 4) */ + #define R_USB_HS0_DVSTCTR0_UACT_Msk (0x10UL) /*!< UACT (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_DVSTCTR0_RHST_Pos (0UL) /*!< RHST (Bit 0) */ + #define R_USB_HS0_DVSTCTR0_RHST_Msk (0x7UL) /*!< RHST (Bitfield-Mask: 0x07) */ +/* ======================================================= TESTMODE ======================================================== */ + #define R_USB_HS0_TESTMODE_UTST_Pos (0UL) /*!< UTST (Bit 0) */ + #define R_USB_HS0_TESTMODE_UTST_Msk (0xfUL) /*!< UTST (Bitfield-Mask: 0x0f) */ +/* ========================================================= CFIFO ========================================================= */ + #define R_USB_HS0_CFIFO_FIFOPORT_Pos (0UL) /*!< FIFOPORT (Bit 0) */ + #define R_USB_HS0_CFIFO_FIFOPORT_Msk (0xffffffffUL) /*!< FIFOPORT (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== CFIFOL ========================================================= */ +/* ======================================================== CFIFOH ========================================================= */ +/* ======================================================== CFIFOLL ======================================================== */ +/* ======================================================== CFIFOHH ======================================================== */ +/* ======================================================== D0FIFO ========================================================= */ + #define R_USB_HS0_D0FIFO_FIFOPORT_Pos (0UL) /*!< FIFOPORT (Bit 0) */ + #define R_USB_HS0_D0FIFO_FIFOPORT_Msk (0xffffffffUL) /*!< FIFOPORT (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== D0FIFOL ======================================================== */ +/* ======================================================== D0FIFOH ======================================================== */ +/* ======================================================= D0FIFOLL ======================================================== */ +/* ======================================================= D0FIFOHH ======================================================== */ +/* ======================================================== D1FIFO ========================================================= */ + #define R_USB_HS0_D1FIFO_FIFOPORT_Pos (0UL) /*!< FIFOPORT (Bit 0) */ + #define R_USB_HS0_D1FIFO_FIFOPORT_Msk (0xffffffffUL) /*!< FIFOPORT (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== D1FIFOL ======================================================== */ +/* ======================================================== D1FIFOH ======================================================== */ +/* ======================================================= D1FIFOLL ======================================================== */ +/* ======================================================= D1FIFOHH ======================================================== */ +/* ======================================================= CFIFOSEL ======================================================== */ + #define R_USB_HS0_CFIFOSEL_RCNT_Pos (15UL) /*!< RCNT (Bit 15) */ + #define R_USB_HS0_CFIFOSEL_RCNT_Msk (0x8000UL) /*!< RCNT (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_CFIFOSEL_REW_Pos (14UL) /*!< REW (Bit 14) */ + #define R_USB_HS0_CFIFOSEL_REW_Msk (0x4000UL) /*!< REW (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_CFIFOSEL_MBW_Pos (10UL) /*!< MBW (Bit 10) */ + #define R_USB_HS0_CFIFOSEL_MBW_Msk (0xc00UL) /*!< MBW (Bitfield-Mask: 0x03) */ + #define R_USB_HS0_CFIFOSEL_BIGEND_Pos (8UL) /*!< BIGEND (Bit 8) */ + #define R_USB_HS0_CFIFOSEL_BIGEND_Msk (0x100UL) /*!< BIGEND (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_CFIFOSEL_ISEL_Pos (5UL) /*!< ISEL (Bit 5) */ + #define R_USB_HS0_CFIFOSEL_ISEL_Msk (0x20UL) /*!< ISEL (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_CFIFOSEL_CURPIPE_Pos (0UL) /*!< CURPIPE (Bit 0) */ + #define R_USB_HS0_CFIFOSEL_CURPIPE_Msk (0xfUL) /*!< CURPIPE (Bitfield-Mask: 0x0f) */ +/* ======================================================= CFIFOCTR ======================================================== */ + #define R_USB_HS0_CFIFOCTR_BVAL_Pos (15UL) /*!< BVAL (Bit 15) */ + #define R_USB_HS0_CFIFOCTR_BVAL_Msk (0x8000UL) /*!< BVAL (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_CFIFOCTR_BCLR_Pos (14UL) /*!< BCLR (Bit 14) */ + #define R_USB_HS0_CFIFOCTR_BCLR_Msk (0x4000UL) /*!< BCLR (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_CFIFOCTR_FRDY_Pos (13UL) /*!< FRDY (Bit 13) */ + #define R_USB_HS0_CFIFOCTR_FRDY_Msk (0x2000UL) /*!< FRDY (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_CFIFOCTR_DTLN_Pos (0UL) /*!< DTLN (Bit 0) */ + #define R_USB_HS0_CFIFOCTR_DTLN_Msk (0xfffUL) /*!< DTLN (Bitfield-Mask: 0xfff) */ +/* ======================================================= D0FIFOSEL ======================================================= */ + #define R_USB_HS0_D0FIFOSEL_RCNT_Pos (15UL) /*!< RCNT (Bit 15) */ + #define R_USB_HS0_D0FIFOSEL_RCNT_Msk (0x8000UL) /*!< RCNT (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_D0FIFOSEL_REW_Pos (14UL) /*!< REW (Bit 14) */ + #define R_USB_HS0_D0FIFOSEL_REW_Msk (0x4000UL) /*!< REW (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_D0FIFOSEL_DCLRM_Pos (13UL) /*!< DCLRM (Bit 13) */ + #define R_USB_HS0_D0FIFOSEL_DCLRM_Msk (0x2000UL) /*!< DCLRM (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_D0FIFOSEL_DREQE_Pos (12UL) /*!< DREQE (Bit 12) */ + #define R_USB_HS0_D0FIFOSEL_DREQE_Msk (0x1000UL) /*!< DREQE (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_D0FIFOSEL_MBW_Pos (10UL) /*!< MBW (Bit 10) */ + #define R_USB_HS0_D0FIFOSEL_MBW_Msk (0xc00UL) /*!< MBW (Bitfield-Mask: 0x03) */ + #define R_USB_HS0_D0FIFOSEL_BIGEND_Pos (8UL) /*!< BIGEND (Bit 8) */ + #define R_USB_HS0_D0FIFOSEL_BIGEND_Msk (0x100UL) /*!< BIGEND (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_D0FIFOSEL_CURPIPE_Pos (0UL) /*!< CURPIPE (Bit 0) */ + #define R_USB_HS0_D0FIFOSEL_CURPIPE_Msk (0xfUL) /*!< CURPIPE (Bitfield-Mask: 0x0f) */ +/* ======================================================= D0FIFOCTR ======================================================= */ + #define R_USB_HS0_D0FIFOCTR_BVAL_Pos (15UL) /*!< BVAL (Bit 15) */ + #define R_USB_HS0_D0FIFOCTR_BVAL_Msk (0x8000UL) /*!< BVAL (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_D0FIFOCTR_BCLR_Pos (14UL) /*!< BCLR (Bit 14) */ + #define R_USB_HS0_D0FIFOCTR_BCLR_Msk (0x4000UL) /*!< BCLR (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_D0FIFOCTR_FRDY_Pos (13UL) /*!< FRDY (Bit 13) */ + #define R_USB_HS0_D0FIFOCTR_FRDY_Msk (0x2000UL) /*!< FRDY (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_D0FIFOCTR_DTLN_Pos (0UL) /*!< DTLN (Bit 0) */ + #define R_USB_HS0_D0FIFOCTR_DTLN_Msk (0xfffUL) /*!< DTLN (Bitfield-Mask: 0xfff) */ +/* ======================================================= D1FIFOSEL ======================================================= */ + #define R_USB_HS0_D1FIFOSEL_RCNT_Pos (15UL) /*!< RCNT (Bit 15) */ + #define R_USB_HS0_D1FIFOSEL_RCNT_Msk (0x8000UL) /*!< RCNT (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_D1FIFOSEL_REW_Pos (14UL) /*!< REW (Bit 14) */ + #define R_USB_HS0_D1FIFOSEL_REW_Msk (0x4000UL) /*!< REW (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_D1FIFOSEL_DCLRM_Pos (13UL) /*!< DCLRM (Bit 13) */ + #define R_USB_HS0_D1FIFOSEL_DCLRM_Msk (0x2000UL) /*!< DCLRM (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_D1FIFOSEL_DREQE_Pos (12UL) /*!< DREQE (Bit 12) */ + #define R_USB_HS0_D1FIFOSEL_DREQE_Msk (0x1000UL) /*!< DREQE (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_D1FIFOSEL_MBW_Pos (10UL) /*!< MBW (Bit 10) */ + #define R_USB_HS0_D1FIFOSEL_MBW_Msk (0xc00UL) /*!< MBW (Bitfield-Mask: 0x03) */ + #define R_USB_HS0_D1FIFOSEL_BIGEND_Pos (8UL) /*!< BIGEND (Bit 8) */ + #define R_USB_HS0_D1FIFOSEL_BIGEND_Msk (0x100UL) /*!< BIGEND (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_D1FIFOSEL_CURPIPE_Pos (0UL) /*!< CURPIPE (Bit 0) */ + #define R_USB_HS0_D1FIFOSEL_CURPIPE_Msk (0xfUL) /*!< CURPIPE (Bitfield-Mask: 0x0f) */ +/* ======================================================= D1FIFOCTR ======================================================= */ + #define R_USB_HS0_D1FIFOCTR_BVAL_Pos (15UL) /*!< BVAL (Bit 15) */ + #define R_USB_HS0_D1FIFOCTR_BVAL_Msk (0x8000UL) /*!< BVAL (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_D1FIFOCTR_BCLR_Pos (14UL) /*!< BCLR (Bit 14) */ + #define R_USB_HS0_D1FIFOCTR_BCLR_Msk (0x4000UL) /*!< BCLR (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_D1FIFOCTR_FRDY_Pos (13UL) /*!< FRDY (Bit 13) */ + #define R_USB_HS0_D1FIFOCTR_FRDY_Msk (0x2000UL) /*!< FRDY (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_D1FIFOCTR_DTLN_Pos (0UL) /*!< DTLN (Bit 0) */ + #define R_USB_HS0_D1FIFOCTR_DTLN_Msk (0xfffUL) /*!< DTLN (Bitfield-Mask: 0xfff) */ +/* ======================================================== INTENB0 ======================================================== */ + #define R_USB_HS0_INTENB0_VBSE_Pos (15UL) /*!< VBSE (Bit 15) */ + #define R_USB_HS0_INTENB0_VBSE_Msk (0x8000UL) /*!< VBSE (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_INTENB0_RSME_Pos (14UL) /*!< RSME (Bit 14) */ + #define R_USB_HS0_INTENB0_RSME_Msk (0x4000UL) /*!< RSME (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_INTENB0_SOFE_Pos (13UL) /*!< SOFE (Bit 13) */ + #define R_USB_HS0_INTENB0_SOFE_Msk (0x2000UL) /*!< SOFE (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_INTENB0_DVSE_Pos (12UL) /*!< DVSE (Bit 12) */ + #define R_USB_HS0_INTENB0_DVSE_Msk (0x1000UL) /*!< DVSE (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_INTENB0_CTRE_Pos (11UL) /*!< CTRE (Bit 11) */ + #define R_USB_HS0_INTENB0_CTRE_Msk (0x800UL) /*!< CTRE (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_INTENB0_BEMPE_Pos (10UL) /*!< BEMPE (Bit 10) */ + #define R_USB_HS0_INTENB0_BEMPE_Msk (0x400UL) /*!< BEMPE (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_INTENB0_NRDYE_Pos (9UL) /*!< NRDYE (Bit 9) */ + #define R_USB_HS0_INTENB0_NRDYE_Msk (0x200UL) /*!< NRDYE (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_INTENB0_BRDYE_Pos (8UL) /*!< BRDYE (Bit 8) */ + #define R_USB_HS0_INTENB0_BRDYE_Msk (0x100UL) /*!< BRDYE (Bitfield-Mask: 0x01) */ +/* ======================================================== INTENB1 ======================================================== */ + #define R_USB_HS0_INTENB1_OVRCRE_Pos (15UL) /*!< OVRCRE (Bit 15) */ + #define R_USB_HS0_INTENB1_OVRCRE_Msk (0x8000UL) /*!< OVRCRE (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_INTENB1_BCHGE_Pos (14UL) /*!< BCHGE (Bit 14) */ + #define R_USB_HS0_INTENB1_BCHGE_Msk (0x4000UL) /*!< BCHGE (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_INTENB1_DTCHE_Pos (12UL) /*!< DTCHE (Bit 12) */ + #define R_USB_HS0_INTENB1_DTCHE_Msk (0x1000UL) /*!< DTCHE (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_INTENB1_ATTCHE_Pos (11UL) /*!< ATTCHE (Bit 11) */ + #define R_USB_HS0_INTENB1_ATTCHE_Msk (0x800UL) /*!< ATTCHE (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_INTENB1_L1RSMENDE_Pos (9UL) /*!< L1RSMENDE (Bit 9) */ + #define R_USB_HS0_INTENB1_L1RSMENDE_Msk (0x200UL) /*!< L1RSMENDE (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_INTENB1_LPMENDE_Pos (8UL) /*!< LPMENDE (Bit 8) */ + #define R_USB_HS0_INTENB1_LPMENDE_Msk (0x100UL) /*!< LPMENDE (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_INTENB1_EOFERRE_Pos (6UL) /*!< EOFERRE (Bit 6) */ + #define R_USB_HS0_INTENB1_EOFERRE_Msk (0x40UL) /*!< EOFERRE (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_INTENB1_SIGNE_Pos (5UL) /*!< SIGNE (Bit 5) */ + #define R_USB_HS0_INTENB1_SIGNE_Msk (0x20UL) /*!< SIGNE (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_INTENB1_SACKE_Pos (4UL) /*!< SACKE (Bit 4) */ + #define R_USB_HS0_INTENB1_SACKE_Msk (0x10UL) /*!< SACKE (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_INTENB1_PDDETINTE0_Pos (0UL) /*!< PDDETINTE0 (Bit 0) */ + #define R_USB_HS0_INTENB1_PDDETINTE0_Msk (0x1UL) /*!< PDDETINTE0 (Bitfield-Mask: 0x01) */ +/* ======================================================== BRDYENB ======================================================== */ + #define R_USB_HS0_BRDYENB_PIPEBRDYE_Pos (0UL) /*!< PIPEBRDYE (Bit 0) */ + #define R_USB_HS0_BRDYENB_PIPEBRDYE_Msk (0x3ffUL) /*!< PIPEBRDYE (Bitfield-Mask: 0x3ff) */ +/* ======================================================== NRDYENB ======================================================== */ + #define R_USB_HS0_NRDYENB_PIPENRDYE_Pos (0UL) /*!< PIPENRDYE (Bit 0) */ + #define R_USB_HS0_NRDYENB_PIPENRDYE_Msk (0x3ffUL) /*!< PIPENRDYE (Bitfield-Mask: 0x3ff) */ +/* ======================================================== BEMPENB ======================================================== */ + #define R_USB_HS0_BEMPENB_PIPEBEMPE_Pos (0UL) /*!< PIPEBEMPE (Bit 0) */ + #define R_USB_HS0_BEMPENB_PIPEBEMPE_Msk (0x3ffUL) /*!< PIPEBEMPE (Bitfield-Mask: 0x3ff) */ +/* ======================================================== SOFCFG ========================================================= */ + #define R_USB_HS0_SOFCFG_TRNENSEL_Pos (8UL) /*!< TRNENSEL (Bit 8) */ + #define R_USB_HS0_SOFCFG_TRNENSEL_Msk (0x100UL) /*!< TRNENSEL (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_SOFCFG_BRDYM_Pos (6UL) /*!< BRDYM (Bit 6) */ + #define R_USB_HS0_SOFCFG_BRDYM_Msk (0x40UL) /*!< BRDYM (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_SOFCFG_INTL_Pos (5UL) /*!< INTL (Bit 5) */ + #define R_USB_HS0_SOFCFG_INTL_Msk (0x20UL) /*!< INTL (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_SOFCFG_EDGESTS_Pos (4UL) /*!< EDGESTS (Bit 4) */ + #define R_USB_HS0_SOFCFG_EDGESTS_Msk (0x10UL) /*!< EDGESTS (Bitfield-Mask: 0x01) */ +/* ======================================================== PHYSET ========================================================= */ + #define R_USB_HS0_PHYSET_HSEB_Pos (15UL) /*!< HSEB (Bit 15) */ + #define R_USB_HS0_PHYSET_HSEB_Msk (0x8000UL) /*!< HSEB (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_PHYSET_REPSTART_Pos (11UL) /*!< REPSTART (Bit 11) */ + #define R_USB_HS0_PHYSET_REPSTART_Msk (0x800UL) /*!< REPSTART (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_PHYSET_REPSEL_Pos (8UL) /*!< REPSEL (Bit 8) */ + #define R_USB_HS0_PHYSET_REPSEL_Msk (0x300UL) /*!< REPSEL (Bitfield-Mask: 0x03) */ + #define R_USB_HS0_PHYSET_CLKSEL_Pos (4UL) /*!< CLKSEL (Bit 4) */ + #define R_USB_HS0_PHYSET_CLKSEL_Msk (0x30UL) /*!< CLKSEL (Bitfield-Mask: 0x03) */ + #define R_USB_HS0_PHYSET_CDPEN_Pos (3UL) /*!< CDPEN (Bit 3) */ + #define R_USB_HS0_PHYSET_CDPEN_Msk (0x8UL) /*!< CDPEN (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_PHYSET_PLLRESET_Pos (1UL) /*!< PLLRESET (Bit 1) */ + #define R_USB_HS0_PHYSET_PLLRESET_Msk (0x2UL) /*!< PLLRESET (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_PHYSET_DIRPD_Pos (0UL) /*!< DIRPD (Bit 0) */ + #define R_USB_HS0_PHYSET_DIRPD_Msk (0x1UL) /*!< DIRPD (Bitfield-Mask: 0x01) */ +/* ======================================================== INTSTS0 ======================================================== */ + #define R_USB_HS0_INTSTS0_VBINT_Pos (15UL) /*!< VBINT (Bit 15) */ + #define R_USB_HS0_INTSTS0_VBINT_Msk (0x8000UL) /*!< VBINT (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_INTSTS0_RESM_Pos (14UL) /*!< RESM (Bit 14) */ + #define R_USB_HS0_INTSTS0_RESM_Msk (0x4000UL) /*!< RESM (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_INTSTS0_SOFR_Pos (13UL) /*!< SOFR (Bit 13) */ + #define R_USB_HS0_INTSTS0_SOFR_Msk (0x2000UL) /*!< SOFR (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_INTSTS0_DVST_Pos (12UL) /*!< DVST (Bit 12) */ + #define R_USB_HS0_INTSTS0_DVST_Msk (0x1000UL) /*!< DVST (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_INTSTS0_CTRT_Pos (11UL) /*!< CTRT (Bit 11) */ + #define R_USB_HS0_INTSTS0_CTRT_Msk (0x800UL) /*!< CTRT (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_INTSTS0_BEMP_Pos (10UL) /*!< BEMP (Bit 10) */ + #define R_USB_HS0_INTSTS0_BEMP_Msk (0x400UL) /*!< BEMP (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_INTSTS0_NRDY_Pos (9UL) /*!< NRDY (Bit 9) */ + #define R_USB_HS0_INTSTS0_NRDY_Msk (0x200UL) /*!< NRDY (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_INTSTS0_BRDY_Pos (8UL) /*!< BRDY (Bit 8) */ + #define R_USB_HS0_INTSTS0_BRDY_Msk (0x100UL) /*!< BRDY (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_INTSTS0_VBSTS_Pos (7UL) /*!< VBSTS (Bit 7) */ + #define R_USB_HS0_INTSTS0_VBSTS_Msk (0x80UL) /*!< VBSTS (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_INTSTS0_DVSQ_Pos (4UL) /*!< DVSQ (Bit 4) */ + #define R_USB_HS0_INTSTS0_DVSQ_Msk (0x70UL) /*!< DVSQ (Bitfield-Mask: 0x07) */ + #define R_USB_HS0_INTSTS0_VALID_Pos (3UL) /*!< VALID (Bit 3) */ + #define R_USB_HS0_INTSTS0_VALID_Msk (0x8UL) /*!< VALID (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_INTSTS0_CTSQ_Pos (0UL) /*!< CTSQ (Bit 0) */ + #define R_USB_HS0_INTSTS0_CTSQ_Msk (0x7UL) /*!< CTSQ (Bitfield-Mask: 0x07) */ +/* ======================================================== INTSTS1 ======================================================== */ + #define R_USB_HS0_INTSTS1_OVRCR_Pos (15UL) /*!< OVRCR (Bit 15) */ + #define R_USB_HS0_INTSTS1_OVRCR_Msk (0x8000UL) /*!< OVRCR (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_INTSTS1_BCHG_Pos (14UL) /*!< BCHG (Bit 14) */ + #define R_USB_HS0_INTSTS1_BCHG_Msk (0x4000UL) /*!< BCHG (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_INTSTS1_DTCH_Pos (12UL) /*!< DTCH (Bit 12) */ + #define R_USB_HS0_INTSTS1_DTCH_Msk (0x1000UL) /*!< DTCH (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_INTSTS1_ATTCH_Pos (11UL) /*!< ATTCH (Bit 11) */ + #define R_USB_HS0_INTSTS1_ATTCH_Msk (0x800UL) /*!< ATTCH (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_INTSTS1_L1RSMEND_Pos (9UL) /*!< L1RSMEND (Bit 9) */ + #define R_USB_HS0_INTSTS1_L1RSMEND_Msk (0x200UL) /*!< L1RSMEND (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_INTSTS1_LPMEND_Pos (8UL) /*!< LPMEND (Bit 8) */ + #define R_USB_HS0_INTSTS1_LPMEND_Msk (0x100UL) /*!< LPMEND (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_INTSTS1_EOFERR_Pos (6UL) /*!< EOFERR (Bit 6) */ + #define R_USB_HS0_INTSTS1_EOFERR_Msk (0x40UL) /*!< EOFERR (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_INTSTS1_SIGN_Pos (5UL) /*!< SIGN (Bit 5) */ + #define R_USB_HS0_INTSTS1_SIGN_Msk (0x20UL) /*!< SIGN (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_INTSTS1_SACK_Pos (4UL) /*!< SACK (Bit 4) */ + #define R_USB_HS0_INTSTS1_SACK_Msk (0x10UL) /*!< SACK (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_INTSTS1_PDDETINT0_Pos (0UL) /*!< PDDETINT0 (Bit 0) */ + #define R_USB_HS0_INTSTS1_PDDETINT0_Msk (0x1UL) /*!< PDDETINT0 (Bitfield-Mask: 0x01) */ +/* ======================================================== BRDYSTS ======================================================== */ + #define R_USB_HS0_BRDYSTS_PIPEBRDY_Pos (0UL) /*!< PIPEBRDY (Bit 0) */ + #define R_USB_HS0_BRDYSTS_PIPEBRDY_Msk (0x3ffUL) /*!< PIPEBRDY (Bitfield-Mask: 0x3ff) */ +/* ======================================================== NRDYSTS ======================================================== */ + #define R_USB_HS0_NRDYSTS_PIPENRDY_Pos (0UL) /*!< PIPENRDY (Bit 0) */ + #define R_USB_HS0_NRDYSTS_PIPENRDY_Msk (0x3ffUL) /*!< PIPENRDY (Bitfield-Mask: 0x3ff) */ +/* ======================================================== BEMPSTS ======================================================== */ + #define R_USB_HS0_BEMPSTS_PIPEBEMP_Pos (0UL) /*!< PIPEBEMP (Bit 0) */ + #define R_USB_HS0_BEMPSTS_PIPEBEMP_Msk (0x3ffUL) /*!< PIPEBEMP (Bitfield-Mask: 0x3ff) */ +/* ======================================================== FRMNUM ========================================================= */ + #define R_USB_HS0_FRMNUM_OVRN_Pos (15UL) /*!< OVRN (Bit 15) */ + #define R_USB_HS0_FRMNUM_OVRN_Msk (0x8000UL) /*!< OVRN (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_FRMNUM_CRCE_Pos (14UL) /*!< CRCE (Bit 14) */ + #define R_USB_HS0_FRMNUM_CRCE_Msk (0x4000UL) /*!< CRCE (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_FRMNUM_FRNM_Pos (0UL) /*!< FRNM (Bit 0) */ + #define R_USB_HS0_FRMNUM_FRNM_Msk (0x7ffUL) /*!< FRNM (Bitfield-Mask: 0x7ff) */ +/* ======================================================== UFRMNUM ======================================================== */ + #define R_USB_HS0_UFRMNUM_DVCHG_Pos (15UL) /*!< DVCHG (Bit 15) */ + #define R_USB_HS0_UFRMNUM_DVCHG_Msk (0x8000UL) /*!< DVCHG (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_UFRMNUM_UFRNM_Pos (0UL) /*!< UFRNM (Bit 0) */ + #define R_USB_HS0_UFRMNUM_UFRNM_Msk (0x7UL) /*!< UFRNM (Bitfield-Mask: 0x07) */ +/* ======================================================== USBADDR ======================================================== */ + #define R_USB_HS0_USBADDR_STSRECOV0_Pos (8UL) /*!< STSRECOV0 (Bit 8) */ + #define R_USB_HS0_USBADDR_STSRECOV0_Msk (0x700UL) /*!< STSRECOV0 (Bitfield-Mask: 0x07) */ +/* ======================================================== USBREQ ========================================================= */ + #define R_USB_HS0_USBREQ_BREQUEST_Pos (8UL) /*!< BREQUEST (Bit 8) */ + #define R_USB_HS0_USBREQ_BREQUEST_Msk (0xff00UL) /*!< BREQUEST (Bitfield-Mask: 0xff) */ + #define R_USB_HS0_USBREQ_BMREQUESTTYPE_Pos (0UL) /*!< BMREQUESTTYPE (Bit 0) */ + #define R_USB_HS0_USBREQ_BMREQUESTTYPE_Msk (0xffUL) /*!< BMREQUESTTYPE (Bitfield-Mask: 0xff) */ +/* ======================================================== USBVAL ========================================================= */ + #define R_USB_HS0_USBVAL_WVALUE_Pos (0UL) /*!< WVALUE (Bit 0) */ + #define R_USB_HS0_USBVAL_WVALUE_Msk (0xffffUL) /*!< WVALUE (Bitfield-Mask: 0xffff) */ +/* ======================================================== USBINDX ======================================================== */ + #define R_USB_HS0_USBINDX_WINDEX_Pos (0UL) /*!< WINDEX (Bit 0) */ + #define R_USB_HS0_USBINDX_WINDEX_Msk (0xffffUL) /*!< WINDEX (Bitfield-Mask: 0xffff) */ +/* ======================================================== USBLENG ======================================================== */ + #define R_USB_HS0_USBLENG_WLENGTH_Pos (0UL) /*!< WLENGTH (Bit 0) */ + #define R_USB_HS0_USBLENG_WLENGTH_Msk (0xffffUL) /*!< WLENGTH (Bitfield-Mask: 0xffff) */ +/* ======================================================== DCPCFG ========================================================= */ + #define R_USB_HS0_DCPCFG_CNTMD_Pos (8UL) /*!< CNTMD (Bit 8) */ + #define R_USB_HS0_DCPCFG_CNTMD_Msk (0x100UL) /*!< CNTMD (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_DCPCFG_SHTNAK_Pos (7UL) /*!< SHTNAK (Bit 7) */ + #define R_USB_HS0_DCPCFG_SHTNAK_Msk (0x80UL) /*!< SHTNAK (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_DCPCFG_DIR_Pos (4UL) /*!< DIR (Bit 4) */ + #define R_USB_HS0_DCPCFG_DIR_Msk (0x10UL) /*!< DIR (Bitfield-Mask: 0x01) */ +/* ======================================================== DCPMAXP ======================================================== */ + #define R_USB_HS0_DCPMAXP_DEVSEL_Pos (12UL) /*!< DEVSEL (Bit 12) */ + #define R_USB_HS0_DCPMAXP_DEVSEL_Msk (0xf000UL) /*!< DEVSEL (Bitfield-Mask: 0x0f) */ + #define R_USB_HS0_DCPMAXP_MXPS_Pos (0UL) /*!< MXPS (Bit 0) */ + #define R_USB_HS0_DCPMAXP_MXPS_Msk (0x7fUL) /*!< MXPS (Bitfield-Mask: 0x7f) */ +/* ======================================================== DCPCTR ========================================================= */ + #define R_USB_HS0_DCPCTR_BSTS_Pos (15UL) /*!< BSTS (Bit 15) */ + #define R_USB_HS0_DCPCTR_BSTS_Msk (0x8000UL) /*!< BSTS (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_DCPCTR_SUREQ_Pos (14UL) /*!< SUREQ (Bit 14) */ + #define R_USB_HS0_DCPCTR_SUREQ_Msk (0x4000UL) /*!< SUREQ (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_DCPCTR_CSCLR_Pos (13UL) /*!< CSCLR (Bit 13) */ + #define R_USB_HS0_DCPCTR_CSCLR_Msk (0x2000UL) /*!< CSCLR (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_DCPCTR_CSSTS_Pos (12UL) /*!< CSSTS (Bit 12) */ + #define R_USB_HS0_DCPCTR_CSSTS_Msk (0x1000UL) /*!< CSSTS (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_DCPCTR_SUREQCLR_Pos (11UL) /*!< SUREQCLR (Bit 11) */ + #define R_USB_HS0_DCPCTR_SUREQCLR_Msk (0x800UL) /*!< SUREQCLR (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_DCPCTR_SQCLR_Pos (8UL) /*!< SQCLR (Bit 8) */ + #define R_USB_HS0_DCPCTR_SQCLR_Msk (0x100UL) /*!< SQCLR (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_DCPCTR_SQSET_Pos (7UL) /*!< SQSET (Bit 7) */ + #define R_USB_HS0_DCPCTR_SQSET_Msk (0x80UL) /*!< SQSET (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_DCPCTR_SQMON_Pos (6UL) /*!< SQMON (Bit 6) */ + #define R_USB_HS0_DCPCTR_SQMON_Msk (0x40UL) /*!< SQMON (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_DCPCTR_PBUSY_Pos (5UL) /*!< PBUSY (Bit 5) */ + #define R_USB_HS0_DCPCTR_PBUSY_Msk (0x20UL) /*!< PBUSY (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_DCPCTR_PINGE_Pos (4UL) /*!< PINGE (Bit 4) */ + #define R_USB_HS0_DCPCTR_PINGE_Msk (0x10UL) /*!< PINGE (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_DCPCTR_CCPL_Pos (2UL) /*!< CCPL (Bit 2) */ + #define R_USB_HS0_DCPCTR_CCPL_Msk (0x4UL) /*!< CCPL (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_DCPCTR_PID_Pos (0UL) /*!< PID (Bit 0) */ + #define R_USB_HS0_DCPCTR_PID_Msk (0x3UL) /*!< PID (Bitfield-Mask: 0x03) */ +/* ======================================================== PIPESEL ======================================================== */ +/* ======================================================== PIPECFG ======================================================== */ + #define R_USB_HS0_PIPECFG_TYPE_Pos (14UL) /*!< TYPE (Bit 14) */ + #define R_USB_HS0_PIPECFG_TYPE_Msk (0xc000UL) /*!< TYPE (Bitfield-Mask: 0x03) */ + #define R_USB_HS0_PIPECFG_BFRE_Pos (10UL) /*!< BFRE (Bit 10) */ + #define R_USB_HS0_PIPECFG_BFRE_Msk (0x400UL) /*!< BFRE (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_PIPECFG_DBLB_Pos (9UL) /*!< DBLB (Bit 9) */ + #define R_USB_HS0_PIPECFG_DBLB_Msk (0x200UL) /*!< DBLB (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_PIPECFG_CNTMD_Pos (8UL) /*!< CNTMD (Bit 8) */ + #define R_USB_HS0_PIPECFG_CNTMD_Msk (0x100UL) /*!< CNTMD (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_PIPECFG_SHTNAK_Pos (7UL) /*!< SHTNAK (Bit 7) */ + #define R_USB_HS0_PIPECFG_SHTNAK_Msk (0x80UL) /*!< SHTNAK (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_PIPECFG_DIR_Pos (4UL) /*!< DIR (Bit 4) */ + #define R_USB_HS0_PIPECFG_DIR_Msk (0x10UL) /*!< DIR (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_PIPECFG_EPNUM_Pos (0UL) /*!< EPNUM (Bit 0) */ + #define R_USB_HS0_PIPECFG_EPNUM_Msk (0xfUL) /*!< EPNUM (Bitfield-Mask: 0x0f) */ +/* ======================================================== PIPEBUF ======================================================== */ + #define R_USB_HS0_PIPEBUF_BUFSIZE_Pos (10UL) /*!< BUFSIZE (Bit 10) */ + #define R_USB_HS0_PIPEBUF_BUFSIZE_Msk (0x7c00UL) /*!< BUFSIZE (Bitfield-Mask: 0x1f) */ + #define R_USB_HS0_PIPEBUF_BUFNMB_Pos (0UL) /*!< BUFNMB (Bit 0) */ + #define R_USB_HS0_PIPEBUF_BUFNMB_Msk (0xffUL) /*!< BUFNMB (Bitfield-Mask: 0xff) */ +/* ======================================================= PIPEMAXP ======================================================== */ + #define R_USB_HS0_PIPEMAXP_DEVSEL_Pos (12UL) /*!< DEVSEL (Bit 12) */ + #define R_USB_HS0_PIPEMAXP_DEVSEL_Msk (0xf000UL) /*!< DEVSEL (Bitfield-Mask: 0x0f) */ + #define R_USB_HS0_PIPEMAXP_MXPS_Pos (0UL) /*!< MXPS (Bit 0) */ + #define R_USB_HS0_PIPEMAXP_MXPS_Msk (0x7ffUL) /*!< MXPS (Bitfield-Mask: 0x7ff) */ +/* ======================================================= PIPEPERI ======================================================== */ + #define R_USB_HS0_PIPEPERI_IFIS_Pos (12UL) /*!< IFIS (Bit 12) */ + #define R_USB_HS0_PIPEPERI_IFIS_Msk (0x1000UL) /*!< IFIS (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_PIPEPERI_IITV_Pos (0UL) /*!< IITV (Bit 0) */ + #define R_USB_HS0_PIPEPERI_IITV_Msk (0x7UL) /*!< IITV (Bitfield-Mask: 0x07) */ +/* ======================================================= PIPE_CTR ======================================================== */ + #define R_USB_HS0_PIPE_CTR_BSTS_Pos (15UL) /*!< BSTS (Bit 15) */ + #define R_USB_HS0_PIPE_CTR_BSTS_Msk (0x8000UL) /*!< BSTS (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_PIPE_CTR_INBUFM_Pos (14UL) /*!< INBUFM (Bit 14) */ + #define R_USB_HS0_PIPE_CTR_INBUFM_Msk (0x4000UL) /*!< INBUFM (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_PIPE_CTR_CSCLR_Pos (13UL) /*!< CSCLR (Bit 13) */ + #define R_USB_HS0_PIPE_CTR_CSCLR_Msk (0x2000UL) /*!< CSCLR (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_PIPE_CTR_CSSTS_Pos (12UL) /*!< CSSTS (Bit 12) */ + #define R_USB_HS0_PIPE_CTR_CSSTS_Msk (0x1000UL) /*!< CSSTS (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_PIPE_CTR_ATREPM_Pos (10UL) /*!< ATREPM (Bit 10) */ + #define R_USB_HS0_PIPE_CTR_ATREPM_Msk (0x400UL) /*!< ATREPM (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_PIPE_CTR_ACLRM_Pos (9UL) /*!< ACLRM (Bit 9) */ + #define R_USB_HS0_PIPE_CTR_ACLRM_Msk (0x200UL) /*!< ACLRM (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_PIPE_CTR_SQCLR_Pos (8UL) /*!< SQCLR (Bit 8) */ + #define R_USB_HS0_PIPE_CTR_SQCLR_Msk (0x100UL) /*!< SQCLR (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_PIPE_CTR_SQSET_Pos (7UL) /*!< SQSET (Bit 7) */ + #define R_USB_HS0_PIPE_CTR_SQSET_Msk (0x80UL) /*!< SQSET (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_PIPE_CTR_SQMON_Pos (6UL) /*!< SQMON (Bit 6) */ + #define R_USB_HS0_PIPE_CTR_SQMON_Msk (0x40UL) /*!< SQMON (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_PIPE_CTR_PBUSY_Pos (5UL) /*!< PBUSY (Bit 5) */ + #define R_USB_HS0_PIPE_CTR_PBUSY_Msk (0x20UL) /*!< PBUSY (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_PIPE_CTR_PID_Pos (0UL) /*!< PID (Bit 0) */ + #define R_USB_HS0_PIPE_CTR_PID_Msk (0x3UL) /*!< PID (Bitfield-Mask: 0x03) */ +/* ======================================================== DEVADD ========================================================= */ + #define R_USB_HS0_DEVADD_UPPHUB_Pos (11UL) /*!< UPPHUB (Bit 11) */ + #define R_USB_HS0_DEVADD_UPPHUB_Msk (0x7800UL) /*!< UPPHUB (Bitfield-Mask: 0x0f) */ + #define R_USB_HS0_DEVADD_HUBPORT_Pos (8UL) /*!< HUBPORT (Bit 8) */ + #define R_USB_HS0_DEVADD_HUBPORT_Msk (0x700UL) /*!< HUBPORT (Bitfield-Mask: 0x07) */ + #define R_USB_HS0_DEVADD_USBSPD_Pos (6UL) /*!< USBSPD (Bit 6) */ + #define R_USB_HS0_DEVADD_USBSPD_Msk (0xc0UL) /*!< USBSPD (Bitfield-Mask: 0x03) */ +/* ======================================================== LPCTRL ========================================================= */ + #define R_USB_HS0_LPCTRL_HWUPM_Pos (7UL) /*!< HWUPM (Bit 7) */ + #define R_USB_HS0_LPCTRL_HWUPM_Msk (0x80UL) /*!< HWUPM (Bitfield-Mask: 0x01) */ +/* ========================================================= LPSTS ========================================================= */ + #define R_USB_HS0_LPSTS_SUSPENDM_Pos (14UL) /*!< SUSPENDM (Bit 14) */ + #define R_USB_HS0_LPSTS_SUSPENDM_Msk (0x4000UL) /*!< SUSPENDM (Bitfield-Mask: 0x01) */ +/* ======================================================== BCCTRL ========================================================= */ + #define R_USB_HS0_BCCTRL_PDDETSTS_Pos (9UL) /*!< PDDETSTS (Bit 9) */ + #define R_USB_HS0_BCCTRL_PDDETSTS_Msk (0x200UL) /*!< PDDETSTS (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_BCCTRL_CHGDETSTS_Pos (8UL) /*!< CHGDETSTS (Bit 8) */ + #define R_USB_HS0_BCCTRL_CHGDETSTS_Msk (0x100UL) /*!< CHGDETSTS (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_BCCTRL_DCPMODE_Pos (5UL) /*!< DCPMODE (Bit 5) */ + #define R_USB_HS0_BCCTRL_DCPMODE_Msk (0x20UL) /*!< DCPMODE (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_BCCTRL_VDMSRCE_Pos (4UL) /*!< VDMSRCE (Bit 4) */ + #define R_USB_HS0_BCCTRL_VDMSRCE_Msk (0x10UL) /*!< VDMSRCE (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_BCCTRL_IDPSINKE_Pos (3UL) /*!< IDPSINKE (Bit 3) */ + #define R_USB_HS0_BCCTRL_IDPSINKE_Msk (0x8UL) /*!< IDPSINKE (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_BCCTRL_VDPSRCE_Pos (2UL) /*!< VDPSRCE (Bit 2) */ + #define R_USB_HS0_BCCTRL_VDPSRCE_Msk (0x4UL) /*!< VDPSRCE (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_BCCTRL_IDMSINKE_Pos (1UL) /*!< IDMSINKE (Bit 1) */ + #define R_USB_HS0_BCCTRL_IDMSINKE_Msk (0x2UL) /*!< IDMSINKE (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_BCCTRL_IDPSRCE_Pos (0UL) /*!< IDPSRCE (Bit 0) */ + #define R_USB_HS0_BCCTRL_IDPSRCE_Msk (0x1UL) /*!< IDPSRCE (Bitfield-Mask: 0x01) */ +/* ======================================================= PL1CTRL1 ======================================================== */ + #define R_USB_HS0_PL1CTRL1_L1EXTMD_Pos (14UL) /*!< L1EXTMD (Bit 14) */ + #define R_USB_HS0_PL1CTRL1_L1EXTMD_Msk (0x4000UL) /*!< L1EXTMD (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_PL1CTRL1_HIRDTHR_Pos (8UL) /*!< HIRDTHR (Bit 8) */ + #define R_USB_HS0_PL1CTRL1_HIRDTHR_Msk (0xf00UL) /*!< HIRDTHR (Bitfield-Mask: 0x0f) */ + #define R_USB_HS0_PL1CTRL1_DVSQ_Pos (4UL) /*!< DVSQ (Bit 4) */ + #define R_USB_HS0_PL1CTRL1_DVSQ_Msk (0xf0UL) /*!< DVSQ (Bitfield-Mask: 0x0f) */ + #define R_USB_HS0_PL1CTRL1_L1NEGOMD_Pos (3UL) /*!< L1NEGOMD (Bit 3) */ + #define R_USB_HS0_PL1CTRL1_L1NEGOMD_Msk (0x8UL) /*!< L1NEGOMD (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_PL1CTRL1_L1RESPMD_Pos (1UL) /*!< L1RESPMD (Bit 1) */ + #define R_USB_HS0_PL1CTRL1_L1RESPMD_Msk (0x6UL) /*!< L1RESPMD (Bitfield-Mask: 0x03) */ + #define R_USB_HS0_PL1CTRL1_L1RESPEN_Pos (0UL) /*!< L1RESPEN (Bit 0) */ + #define R_USB_HS0_PL1CTRL1_L1RESPEN_Msk (0x1UL) /*!< L1RESPEN (Bitfield-Mask: 0x01) */ +/* ======================================================= PL1CTRL2 ======================================================== */ + #define R_USB_HS0_PL1CTRL2_RWEMON_Pos (12UL) /*!< RWEMON (Bit 12) */ + #define R_USB_HS0_PL1CTRL2_RWEMON_Msk (0x1000UL) /*!< RWEMON (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_PL1CTRL2_HIRDMON_Pos (8UL) /*!< HIRDMON (Bit 8) */ + #define R_USB_HS0_PL1CTRL2_HIRDMON_Msk (0xf00UL) /*!< HIRDMON (Bitfield-Mask: 0x0f) */ +/* ======================================================= HL1CTRL1 ======================================================== */ + #define R_USB_HS0_HL1CTRL1_L1STATUS_Pos (1UL) /*!< L1STATUS (Bit 1) */ + #define R_USB_HS0_HL1CTRL1_L1STATUS_Msk (0x6UL) /*!< L1STATUS (Bitfield-Mask: 0x03) */ + #define R_USB_HS0_HL1CTRL1_L1REQ_Pos (0UL) /*!< L1REQ (Bit 0) */ + #define R_USB_HS0_HL1CTRL1_L1REQ_Msk (0x1UL) /*!< L1REQ (Bitfield-Mask: 0x01) */ +/* ======================================================= HL1CTRL2 ======================================================== */ + #define R_USB_HS0_HL1CTRL2_BESL_Pos (15UL) /*!< BESL (Bit 15) */ + #define R_USB_HS0_HL1CTRL2_BESL_Msk (0x8000UL) /*!< BESL (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_HL1CTRL2_L1RWE_Pos (12UL) /*!< L1RWE (Bit 12) */ + #define R_USB_HS0_HL1CTRL2_L1RWE_Msk (0x1000UL) /*!< L1RWE (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_HL1CTRL2_HIRD_Pos (8UL) /*!< HIRD (Bit 8) */ + #define R_USB_HS0_HL1CTRL2_HIRD_Msk (0xf00UL) /*!< HIRD (Bitfield-Mask: 0x0f) */ + #define R_USB_HS0_HL1CTRL2_L1ADDR_Pos (0UL) /*!< L1ADDR (Bit 0) */ + #define R_USB_HS0_HL1CTRL2_L1ADDR_Msk (0xfUL) /*!< L1ADDR (Bitfield-Mask: 0x0f) */ +/* ======================================================= PHYTRIM1 ======================================================== */ + #define R_USB_HS0_PHYTRIM1_IMPOFFSET_Pos (12UL) /*!< IMPOFFSET (Bit 12) */ + #define R_USB_HS0_PHYTRIM1_IMPOFFSET_Msk (0x7000UL) /*!< IMPOFFSET (Bitfield-Mask: 0x07) */ + #define R_USB_HS0_PHYTRIM1_HSIUP_Pos (8UL) /*!< HSIUP (Bit 8) */ + #define R_USB_HS0_PHYTRIM1_HSIUP_Msk (0xf00UL) /*!< HSIUP (Bitfield-Mask: 0x0f) */ + #define R_USB_HS0_PHYTRIM1_PCOMPENB_Pos (7UL) /*!< PCOMPENB (Bit 7) */ + #define R_USB_HS0_PHYTRIM1_PCOMPENB_Msk (0x80UL) /*!< PCOMPENB (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_PHYTRIM1_DFALL_Pos (2UL) /*!< DFALL (Bit 2) */ + #define R_USB_HS0_PHYTRIM1_DFALL_Msk (0xcUL) /*!< DFALL (Bitfield-Mask: 0x03) */ + #define R_USB_HS0_PHYTRIM1_DRISE_Pos (0UL) /*!< DRISE (Bit 0) */ + #define R_USB_HS0_PHYTRIM1_DRISE_Msk (0x3UL) /*!< DRISE (Bitfield-Mask: 0x03) */ +/* ======================================================= PHYTRIM2 ======================================================== */ + #define R_USB_HS0_PHYTRIM2_DIS_Pos (12UL) /*!< DIS (Bit 12) */ + #define R_USB_HS0_PHYTRIM2_DIS_Msk (0x7000UL) /*!< DIS (Bitfield-Mask: 0x07) */ + #define R_USB_HS0_PHYTRIM2_PDR_Pos (8UL) /*!< PDR (Bit 8) */ + #define R_USB_HS0_PHYTRIM2_PDR_Msk (0x300UL) /*!< PDR (Bitfield-Mask: 0x03) */ + #define R_USB_HS0_PHYTRIM2_HSRXENMO_Pos (7UL) /*!< HSRXENMO (Bit 7) */ + #define R_USB_HS0_PHYTRIM2_HSRXENMO_Msk (0x80UL) /*!< HSRXENMO (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_PHYTRIM2_SQU_Pos (0UL) /*!< SQU (Bit 0) */ + #define R_USB_HS0_PHYTRIM2_SQU_Msk (0xfUL) /*!< SQU (Bitfield-Mask: 0x0f) */ +/* ======================================================== DPUSR0R ======================================================== */ + #define R_USB_HS0_DPUSR0R_DVBSTSHM_Pos (23UL) /*!< DVBSTSHM (Bit 23) */ + #define R_USB_HS0_DPUSR0R_DVBSTSHM_Msk (0x800000UL) /*!< DVBSTSHM (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_DPUSR0R_DOVCBHM_Pos (21UL) /*!< DOVCBHM (Bit 21) */ + #define R_USB_HS0_DPUSR0R_DOVCBHM_Msk (0x200000UL) /*!< DOVCBHM (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_DPUSR0R_DOVCAHM_Pos (20UL) /*!< DOVCAHM (Bit 20) */ + #define R_USB_HS0_DPUSR0R_DOVCAHM_Msk (0x100000UL) /*!< DOVCAHM (Bitfield-Mask: 0x01) */ +/* ======================================================== DPUSR1R ======================================================== */ + #define R_USB_HS0_DPUSR1R_DVBSTSH_Pos (23UL) /*!< DVBSTSH (Bit 23) */ + #define R_USB_HS0_DPUSR1R_DVBSTSH_Msk (0x800000UL) /*!< DVBSTSH (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_DPUSR1R_DOVCBH_Pos (21UL) /*!< DOVCBH (Bit 21) */ + #define R_USB_HS0_DPUSR1R_DOVCBH_Msk (0x200000UL) /*!< DOVCBH (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_DPUSR1R_DOVCAH_Pos (20UL) /*!< DOVCAH (Bit 20) */ + #define R_USB_HS0_DPUSR1R_DOVCAH_Msk (0x100000UL) /*!< DOVCAH (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_DPUSR1R_DVBSTSHE_Pos (7UL) /*!< DVBSTSHE (Bit 7) */ + #define R_USB_HS0_DPUSR1R_DVBSTSHE_Msk (0x80UL) /*!< DVBSTSHE (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_DPUSR1R_DOVCBHE_Pos (5UL) /*!< DOVCBHE (Bit 5) */ + #define R_USB_HS0_DPUSR1R_DOVCBHE_Msk (0x20UL) /*!< DOVCBHE (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_DPUSR1R_DOVCAHE_Pos (4UL) /*!< DOVCAHE (Bit 4) */ + #define R_USB_HS0_DPUSR1R_DOVCAHE_Msk (0x10UL) /*!< DOVCAHE (Bitfield-Mask: 0x01) */ +/* ======================================================== DPUSR2R ======================================================== */ + #define R_USB_HS0_DPUSR2R_DMINTE_Pos (9UL) /*!< DMINTE (Bit 9) */ + #define R_USB_HS0_DPUSR2R_DMINTE_Msk (0x200UL) /*!< DMINTE (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_DPUSR2R_DPINTE_Pos (8UL) /*!< DPINTE (Bit 8) */ + #define R_USB_HS0_DPUSR2R_DPINTE_Msk (0x100UL) /*!< DPINTE (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_DPUSR2R_DMVAL_Pos (5UL) /*!< DMVAL (Bit 5) */ + #define R_USB_HS0_DPUSR2R_DMVAL_Msk (0x20UL) /*!< DMVAL (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_DPUSR2R_DPVAL_Pos (4UL) /*!< DPVAL (Bit 4) */ + #define R_USB_HS0_DPUSR2R_DPVAL_Msk (0x10UL) /*!< DPVAL (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_DPUSR2R_DMINT_Pos (1UL) /*!< DMINT (Bit 1) */ + #define R_USB_HS0_DPUSR2R_DMINT_Msk (0x2UL) /*!< DMINT (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_DPUSR2R_DPINT_Pos (0UL) /*!< DPINT (Bit 0) */ + #define R_USB_HS0_DPUSR2R_DPINT_Msk (0x1UL) /*!< DPINT (Bitfield-Mask: 0x01) */ +/* ======================================================== DPUSRCR ======================================================== */ + #define R_USB_HS0_DPUSRCR_FIXPHYPD_Pos (1UL) /*!< FIXPHYPD (Bit 1) */ + #define R_USB_HS0_DPUSRCR_FIXPHYPD_Msk (0x2UL) /*!< FIXPHYPD (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_DPUSRCR_FIXPHY_Pos (0UL) /*!< FIXPHY (Bit 0) */ + #define R_USB_HS0_DPUSRCR_FIXPHY_Msk (0x1UL) /*!< FIXPHY (Bitfield-Mask: 0x01) */ + +/* =========================================================================================================================== */ +/* ================ R_XSPI ================ */ +/* =========================================================================================================================== */ + +/* ======================================================== WRAPCFG ======================================================== */ + #define R_XSPI_WRAPCFG_CKSFTCS0_Pos (0UL) /*!< CKSFTCS0 (Bit 0) */ + #define R_XSPI_WRAPCFG_CKSFTCS0_Msk (0x1fUL) /*!< CKSFTCS0 (Bitfield-Mask: 0x1f) */ + #define R_XSPI_WRAPCFG_DSSFTCS0_Pos (8UL) /*!< DSSFTCS0 (Bit 8) */ + #define R_XSPI_WRAPCFG_DSSFTCS0_Msk (0x1f00UL) /*!< DSSFTCS0 (Bitfield-Mask: 0x1f) */ + #define R_XSPI_WRAPCFG_CKSFTCS1_Pos (16UL) /*!< CKSFTCS1 (Bit 16) */ + #define R_XSPI_WRAPCFG_CKSFTCS1_Msk (0x1f0000UL) /*!< CKSFTCS1 (Bitfield-Mask: 0x1f) */ + #define R_XSPI_WRAPCFG_DSSFTCS1_Pos (24UL) /*!< DSSFTCS1 (Bit 24) */ + #define R_XSPI_WRAPCFG_DSSFTCS1_Msk (0x1f000000UL) /*!< DSSFTCS1 (Bitfield-Mask: 0x1f) */ +/* ======================================================== COMCFG ========================================================= */ + #define R_XSPI_COMCFG_ARBMD_Pos (0UL) /*!< ARBMD (Bit 0) */ + #define R_XSPI_COMCFG_ARBMD_Msk (0x3UL) /*!< ARBMD (Bitfield-Mask: 0x03) */ + #define R_XSPI_COMCFG_ECSINTOUTEN_Pos (4UL) /*!< ECSINTOUTEN (Bit 4) */ + #define R_XSPI_COMCFG_ECSINTOUTEN_Msk (0x30UL) /*!< ECSINTOUTEN (Bitfield-Mask: 0x03) */ + #define R_XSPI_COMCFG_OEASTEX_Pos (16UL) /*!< OEASTEX (Bit 16) */ + #define R_XSPI_COMCFG_OEASTEX_Msk (0x10000UL) /*!< OEASTEX (Bitfield-Mask: 0x01) */ + #define R_XSPI_COMCFG_OENEGEX_Pos (17UL) /*!< OENEGEX (Bit 17) */ + #define R_XSPI_COMCFG_OENEGEX_Msk (0x20000UL) /*!< OENEGEX (Bitfield-Mask: 0x01) */ +/* ======================================================== BMCFGCH ======================================================== */ + #define R_XSPI_BMCFGCH_WRMD_Pos (0UL) /*!< WRMD (Bit 0) */ + #define R_XSPI_BMCFGCH_WRMD_Msk (0x1UL) /*!< WRMD (Bitfield-Mask: 0x01) */ + #define R_XSPI_BMCFGCH_MWRCOMB_Pos (7UL) /*!< MWRCOMB (Bit 7) */ + #define R_XSPI_BMCFGCH_MWRCOMB_Msk (0x80UL) /*!< MWRCOMB (Bitfield-Mask: 0x01) */ + #define R_XSPI_BMCFGCH_MWRSIZE_Pos (8UL) /*!< MWRSIZE (Bit 8) */ + #define R_XSPI_BMCFGCH_MWRSIZE_Msk (0xff00UL) /*!< MWRSIZE (Bitfield-Mask: 0xff) */ + #define R_XSPI_BMCFGCH_PREEN_Pos (16UL) /*!< PREEN (Bit 16) */ + #define R_XSPI_BMCFGCH_PREEN_Msk (0x10000UL) /*!< PREEN (Bitfield-Mask: 0x01) */ + #define R_XSPI_BMCFGCH_CMBTIM_Pos (24UL) /*!< CMBTIM (Bit 24) */ + #define R_XSPI_BMCFGCH_CMBTIM_Msk (0xff000000UL) /*!< CMBTIM (Bitfield-Mask: 0xff) */ +/* ======================================================= LIOCFGCS ======================================================== */ + #define R_XSPI_LIOCFGCS_PRTMD_Pos (0UL) /*!< PRTMD (Bit 0) */ + #define R_XSPI_LIOCFGCS_PRTMD_Msk (0x3ffUL) /*!< PRTMD (Bitfield-Mask: 0x3ff) */ + #define R_XSPI_LIOCFGCS_LATEMD_Pos (10UL) /*!< LATEMD (Bit 10) */ + #define R_XSPI_LIOCFGCS_LATEMD_Msk (0x400UL) /*!< LATEMD (Bitfield-Mask: 0x01) */ + #define R_XSPI_LIOCFGCS_WRMSKMD_Pos (11UL) /*!< WRMSKMD (Bit 11) */ + #define R_XSPI_LIOCFGCS_WRMSKMD_Msk (0x800UL) /*!< WRMSKMD (Bitfield-Mask: 0x01) */ + #define R_XSPI_LIOCFGCS_CSMIN_Pos (16UL) /*!< CSMIN (Bit 16) */ + #define R_XSPI_LIOCFGCS_CSMIN_Msk (0xf0000UL) /*!< CSMIN (Bitfield-Mask: 0x0f) */ + #define R_XSPI_LIOCFGCS_CSASTEX_Pos (20UL) /*!< CSASTEX (Bit 20) */ + #define R_XSPI_LIOCFGCS_CSASTEX_Msk (0x100000UL) /*!< CSASTEX (Bitfield-Mask: 0x01) */ + #define R_XSPI_LIOCFGCS_CSNEGEX_Pos (21UL) /*!< CSNEGEX (Bit 21) */ + #define R_XSPI_LIOCFGCS_CSNEGEX_Msk (0x200000UL) /*!< CSNEGEX (Bitfield-Mask: 0x01) */ + #define R_XSPI_LIOCFGCS_SDRDRV_Pos (22UL) /*!< SDRDRV (Bit 22) */ + #define R_XSPI_LIOCFGCS_SDRDRV_Msk (0x400000UL) /*!< SDRDRV (Bitfield-Mask: 0x01) */ + #define R_XSPI_LIOCFGCS_SDRSMPMD_Pos (23UL) /*!< SDRSMPMD (Bit 23) */ + #define R_XSPI_LIOCFGCS_SDRSMPMD_Msk (0x800000UL) /*!< SDRSMPMD (Bitfield-Mask: 0x01) */ + #define R_XSPI_LIOCFGCS_SDRSMPSFT_Pos (24UL) /*!< SDRSMPSFT (Bit 24) */ + #define R_XSPI_LIOCFGCS_SDRSMPSFT_Msk (0xf000000UL) /*!< SDRSMPSFT (Bitfield-Mask: 0x0f) */ + #define R_XSPI_LIOCFGCS_DDRSMPEX_Pos (28UL) /*!< DDRSMPEX (Bit 28) */ + #define R_XSPI_LIOCFGCS_DDRSMPEX_Msk (0xf0000000UL) /*!< DDRSMPEX (Bitfield-Mask: 0x0f) */ +/* ======================================================== ABMCFG ========================================================= */ + #define R_XSPI_ABMCFG_ODRMD_Pos (0UL) /*!< ODRMD (Bit 0) */ + #define R_XSPI_ABMCFG_ODRMD_Msk (0x3UL) /*!< ODRMD (Bitfield-Mask: 0x03) */ + #define R_XSPI_ABMCFG_CHSEL_Pos (16UL) /*!< CHSEL (Bit 16) */ + #define R_XSPI_ABMCFG_CHSEL_Msk (0xffff0000UL) /*!< CHSEL (Bitfield-Mask: 0xffff) */ +/* ======================================================== BMCTL0 ========================================================= */ + #define R_XSPI_BMCTL0_CH0CS0ACC_Pos (0UL) /*!< CH0CS0ACC (Bit 0) */ + #define R_XSPI_BMCTL0_CH0CS0ACC_Msk (0x3UL) /*!< CH0CS0ACC (Bitfield-Mask: 0x03) */ + #define R_XSPI_BMCTL0_CH0CS1ACC_Pos (2UL) /*!< CH0CS1ACC (Bit 2) */ + #define R_XSPI_BMCTL0_CH0CS1ACC_Msk (0xcUL) /*!< CH0CS1ACC (Bitfield-Mask: 0x03) */ + #define R_XSPI_BMCTL0_CH1CS0ACC_Pos (4UL) /*!< CH1CS0ACC (Bit 4) */ + #define R_XSPI_BMCTL0_CH1CS0ACC_Msk (0x30UL) /*!< CH1CS0ACC (Bitfield-Mask: 0x03) */ + #define R_XSPI_BMCTL0_CH1CS1ACC_Pos (6UL) /*!< CH1CS1ACC (Bit 6) */ + #define R_XSPI_BMCTL0_CH1CS1ACC_Msk (0xc0UL) /*!< CH1CS1ACC (Bitfield-Mask: 0x03) */ +/* ======================================================== BMCTL1 ========================================================= */ + #define R_XSPI_BMCTL1_MWRPUSHCH_Pos (8UL) /*!< MWRPUSHCH (Bit 8) */ + #define R_XSPI_BMCTL1_MWRPUSHCH_Msk (0x100UL) /*!< MWRPUSHCH (Bitfield-Mask: 0x01) */ + #define R_XSPI_BMCTL1_PBUFCLRCH_Pos (10UL) /*!< PBUFCLRCH (Bit 10) */ + #define R_XSPI_BMCTL1_PBUFCLRCH_Msk (0x400UL) /*!< PBUFCLRCH (Bitfield-Mask: 0x01) */ +/* ======================================================== CMCTLCH ======================================================== */ + #define R_XSPI_CMCTLCH_XIPENCODE_Pos (0UL) /*!< XIPENCODE (Bit 0) */ + #define R_XSPI_CMCTLCH_XIPENCODE_Msk (0xffUL) /*!< XIPENCODE (Bitfield-Mask: 0xff) */ + #define R_XSPI_CMCTLCH_XIPEXCODE_Pos (8UL) /*!< XIPEXCODE (Bit 8) */ + #define R_XSPI_CMCTLCH_XIPEXCODE_Msk (0xff00UL) /*!< XIPEXCODE (Bitfield-Mask: 0xff) */ + #define R_XSPI_CMCTLCH_XIPEN_Pos (16UL) /*!< XIPEN (Bit 16) */ + #define R_XSPI_CMCTLCH_XIPEN_Msk (0x10000UL) /*!< XIPEN (Bitfield-Mask: 0x01) */ +/* ======================================================== CDCTL0 ========================================================= */ + #define R_XSPI_CDCTL0_TRREQ_Pos (0UL) /*!< TRREQ (Bit 0) */ + #define R_XSPI_CDCTL0_TRREQ_Msk (0x1UL) /*!< TRREQ (Bitfield-Mask: 0x01) */ + #define R_XSPI_CDCTL0_PERMD_Pos (1UL) /*!< PERMD (Bit 1) */ + #define R_XSPI_CDCTL0_PERMD_Msk (0x2UL) /*!< PERMD (Bitfield-Mask: 0x01) */ + #define R_XSPI_CDCTL0_CSSEL_Pos (3UL) /*!< CSSEL (Bit 3) */ + #define R_XSPI_CDCTL0_CSSEL_Msk (0x8UL) /*!< CSSEL (Bitfield-Mask: 0x01) */ + #define R_XSPI_CDCTL0_TRNUM_Pos (4UL) /*!< TRNUM (Bit 4) */ + #define R_XSPI_CDCTL0_TRNUM_Msk (0x30UL) /*!< TRNUM (Bitfield-Mask: 0x03) */ + #define R_XSPI_CDCTL0_PERITV_Pos (16UL) /*!< PERITV (Bit 16) */ + #define R_XSPI_CDCTL0_PERITV_Msk (0x1f0000UL) /*!< PERITV (Bitfield-Mask: 0x1f) */ + #define R_XSPI_CDCTL0_PERREP_Pos (24UL) /*!< PERREP (Bit 24) */ + #define R_XSPI_CDCTL0_PERREP_Msk (0xf000000UL) /*!< PERREP (Bitfield-Mask: 0x0f) */ +/* ======================================================== CDCTL1 ========================================================= */ + #define R_XSPI_CDCTL1_PEREXP_Pos (0UL) /*!< PEREXP (Bit 0) */ + #define R_XSPI_CDCTL1_PEREXP_Msk (0xffffffffUL) /*!< PEREXP (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== CDCTL2 ========================================================= */ + #define R_XSPI_CDCTL2_PERMSK_Pos (0UL) /*!< PERMSK (Bit 0) */ + #define R_XSPI_CDCTL2_PERMSK_Msk (0xffffffffUL) /*!< PERMSK (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== LPCTL0 ========================================================= */ + #define R_XSPI_LPCTL0_PATREQ_Pos (0UL) /*!< PATREQ (Bit 0) */ + #define R_XSPI_LPCTL0_PATREQ_Msk (0x1UL) /*!< PATREQ (Bitfield-Mask: 0x01) */ + #define R_XSPI_LPCTL0_CSSEL_Pos (3UL) /*!< CSSEL (Bit 3) */ + #define R_XSPI_LPCTL0_CSSEL_Msk (0x8UL) /*!< CSSEL (Bitfield-Mask: 0x01) */ + #define R_XSPI_LPCTL0_XDPIN_Pos (4UL) /*!< XDPIN (Bit 4) */ + #define R_XSPI_LPCTL0_XDPIN_Msk (0x30UL) /*!< XDPIN (Bitfield-Mask: 0x03) */ + #define R_XSPI_LPCTL0_XD1LEN_Pos (16UL) /*!< XD1LEN (Bit 16) */ + #define R_XSPI_LPCTL0_XD1LEN_Msk (0x1f0000UL) /*!< XD1LEN (Bitfield-Mask: 0x1f) */ + #define R_XSPI_LPCTL0_XD1VAL_Pos (23UL) /*!< XD1VAL (Bit 23) */ + #define R_XSPI_LPCTL0_XD1VAL_Msk (0x800000UL) /*!< XD1VAL (Bitfield-Mask: 0x01) */ + #define R_XSPI_LPCTL0_XD2LEN_Pos (24UL) /*!< XD2LEN (Bit 24) */ + #define R_XSPI_LPCTL0_XD2LEN_Msk (0x1f000000UL) /*!< XD2LEN (Bitfield-Mask: 0x1f) */ + #define R_XSPI_LPCTL0_XD2VAL_Pos (31UL) /*!< XD2VAL (Bit 31) */ + #define R_XSPI_LPCTL0_XD2VAL_Msk (0x80000000UL) /*!< XD2VAL (Bitfield-Mask: 0x01) */ +/* ======================================================== LPCTL1 ========================================================= */ + #define R_XSPI_LPCTL1_PATREQ_Pos (0UL) /*!< PATREQ (Bit 0) */ + #define R_XSPI_LPCTL1_PATREQ_Msk (0x3UL) /*!< PATREQ (Bitfield-Mask: 0x03) */ + #define R_XSPI_LPCTL1_CSSEL_Pos (3UL) /*!< CSSEL (Bit 3) */ + #define R_XSPI_LPCTL1_CSSEL_Msk (0x8UL) /*!< CSSEL (Bitfield-Mask: 0x01) */ + #define R_XSPI_LPCTL1_RSTREP_Pos (4UL) /*!< RSTREP (Bit 4) */ + #define R_XSPI_LPCTL1_RSTREP_Msk (0x30UL) /*!< RSTREP (Bitfield-Mask: 0x03) */ + #define R_XSPI_LPCTL1_RSTWID_Pos (8UL) /*!< RSTWID (Bit 8) */ + #define R_XSPI_LPCTL1_RSTWID_Msk (0x700UL) /*!< RSTWID (Bitfield-Mask: 0x07) */ + #define R_XSPI_LPCTL1_RSTSU_Pos (12UL) /*!< RSTSU (Bit 12) */ + #define R_XSPI_LPCTL1_RSTSU_Msk (0x7000UL) /*!< RSTSU (Bitfield-Mask: 0x07) */ +/* ======================================================== LIOCTL ========================================================= */ + #define R_XSPI_LIOCTL_WPCS_Pos (0UL) /*!< WPCS (Bit 0) */ + #define R_XSPI_LIOCTL_WPCS_Msk (0x1UL) /*!< WPCS (Bitfield-Mask: 0x01) */ + #define R_XSPI_LIOCTL_RSTCS_Pos (16UL) /*!< RSTCS (Bit 16) */ + #define R_XSPI_LIOCTL_RSTCS_Msk (0x10000UL) /*!< RSTCS (Bitfield-Mask: 0x01) */ +/* ======================================================== VERSTT ========================================================= */ + #define R_XSPI_VERSTT_VER_Pos (0UL) /*!< VER (Bit 0) */ + #define R_XSPI_VERSTT_VER_Msk (0xffffffffUL) /*!< VER (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== COMSTT ========================================================= */ + #define R_XSPI_COMSTT_MEMACCCH_Pos (0UL) /*!< MEMACCCH (Bit 0) */ + #define R_XSPI_COMSTT_MEMACCCH_Msk (0x1UL) /*!< MEMACCCH (Bitfield-Mask: 0x01) */ + #define R_XSPI_COMSTT_PBUFNECH_Pos (4UL) /*!< PBUFNECH (Bit 4) */ + #define R_XSPI_COMSTT_PBUFNECH_Msk (0x10UL) /*!< PBUFNECH (Bitfield-Mask: 0x01) */ + #define R_XSPI_COMSTT_WRBUFNECH_Pos (6UL) /*!< WRBUFNECH (Bit 6) */ + #define R_XSPI_COMSTT_WRBUFNECH_Msk (0x40UL) /*!< WRBUFNECH (Bitfield-Mask: 0x01) */ + #define R_XSPI_COMSTT_ECSCS_Pos (16UL) /*!< ECSCS (Bit 16) */ + #define R_XSPI_COMSTT_ECSCS_Msk (0x10000UL) /*!< ECSCS (Bitfield-Mask: 0x01) */ + #define R_XSPI_COMSTT_INTCS_Pos (17UL) /*!< INTCS (Bit 17) */ + #define R_XSPI_COMSTT_INTCS_Msk (0x20000UL) /*!< INTCS (Bitfield-Mask: 0x01) */ + #define R_XSPI_COMSTT_RSTOCS_Pos (18UL) /*!< RSTOCS (Bit 18) */ + #define R_XSPI_COMSTT_RSTOCS_Msk (0x40000UL) /*!< RSTOCS (Bitfield-Mask: 0x01) */ +/* ======================================================== CASTTCS ======================================================== */ + #define R_XSPI_CASTTCS_CASUC_Pos (0UL) /*!< CASUC (Bit 0) */ + #define R_XSPI_CASTTCS_CASUC_Msk (0xffffffffUL) /*!< CASUC (Bitfield-Mask: 0xffffffff) */ +/* ========================================================= INTS ========================================================== */ + #define R_XSPI_INTS_CMDCMP_Pos (0UL) /*!< CMDCMP (Bit 0) */ + #define R_XSPI_INTS_CMDCMP_Msk (0x1UL) /*!< CMDCMP (Bitfield-Mask: 0x01) */ + #define R_XSPI_INTS_PATCMP_Pos (1UL) /*!< PATCMP (Bit 1) */ + #define R_XSPI_INTS_PATCMP_Msk (0x2UL) /*!< PATCMP (Bitfield-Mask: 0x01) */ + #define R_XSPI_INTS_INICMP_Pos (2UL) /*!< INICMP (Bit 2) */ + #define R_XSPI_INTS_INICMP_Msk (0x4UL) /*!< INICMP (Bitfield-Mask: 0x01) */ + #define R_XSPI_INTS_PERTO_Pos (3UL) /*!< PERTO (Bit 3) */ + #define R_XSPI_INTS_PERTO_Msk (0x8UL) /*!< PERTO (Bitfield-Mask: 0x01) */ + #define R_XSPI_INTS_DSTOCS_Pos (4UL) /*!< DSTOCS (Bit 4) */ + #define R_XSPI_INTS_DSTOCS_Msk (0x10UL) /*!< DSTOCS (Bitfield-Mask: 0x01) */ + #define R_XSPI_INTS_ECSCS_Pos (8UL) /*!< ECSCS (Bit 8) */ + #define R_XSPI_INTS_ECSCS_Msk (0x100UL) /*!< ECSCS (Bitfield-Mask: 0x01) */ + #define R_XSPI_INTS_INTCS_Pos (12UL) /*!< INTCS (Bit 12) */ + #define R_XSPI_INTS_INTCS_Msk (0x1000UL) /*!< INTCS (Bitfield-Mask: 0x01) */ + #define R_XSPI_INTS_BRGOFCH_Pos (16UL) /*!< BRGOFCH (Bit 16) */ + #define R_XSPI_INTS_BRGOFCH_Msk (0x10000UL) /*!< BRGOFCH (Bitfield-Mask: 0x01) */ + #define R_XSPI_INTS_BRGUFCH_Pos (18UL) /*!< BRGUFCH (Bit 18) */ + #define R_XSPI_INTS_BRGUFCH_Msk (0x40000UL) /*!< BRGUFCH (Bitfield-Mask: 0x01) */ + #define R_XSPI_INTS_BUSERRCH_Pos (20UL) /*!< BUSERRCH (Bit 20) */ + #define R_XSPI_INTS_BUSERRCH_Msk (0x100000UL) /*!< BUSERRCH (Bitfield-Mask: 0x01) */ + #define R_XSPI_INTS_CAFAILCS_Pos (28UL) /*!< CAFAILCS (Bit 28) */ + #define R_XSPI_INTS_CAFAILCS_Msk (0x10000000UL) /*!< CAFAILCS (Bitfield-Mask: 0x01) */ + #define R_XSPI_INTS_CASUCCS_Pos (30UL) /*!< CASUCCS (Bit 30) */ + #define R_XSPI_INTS_CASUCCS_Msk (0x40000000UL) /*!< CASUCCS (Bitfield-Mask: 0x01) */ +/* ========================================================= INTC ========================================================== */ + #define R_XSPI_INTC_CMDCMPC_Pos (0UL) /*!< CMDCMPC (Bit 0) */ + #define R_XSPI_INTC_CMDCMPC_Msk (0x1UL) /*!< CMDCMPC (Bitfield-Mask: 0x01) */ + #define R_XSPI_INTC_PATCMPC_Pos (1UL) /*!< PATCMPC (Bit 1) */ + #define R_XSPI_INTC_PATCMPC_Msk (0x2UL) /*!< PATCMPC (Bitfield-Mask: 0x01) */ + #define R_XSPI_INTC_INICMPC_Pos (2UL) /*!< INICMPC (Bit 2) */ + #define R_XSPI_INTC_INICMPC_Msk (0x4UL) /*!< INICMPC (Bitfield-Mask: 0x01) */ + #define R_XSPI_INTC_PERTOC_Pos (3UL) /*!< PERTOC (Bit 3) */ + #define R_XSPI_INTC_PERTOC_Msk (0x8UL) /*!< PERTOC (Bitfield-Mask: 0x01) */ + #define R_XSPI_INTC_DSTOCSC_Pos (4UL) /*!< DSTOCSC (Bit 4) */ + #define R_XSPI_INTC_DSTOCSC_Msk (0x10UL) /*!< DSTOCSC (Bitfield-Mask: 0x01) */ + #define R_XSPI_INTC_ECSCSC_Pos (8UL) /*!< ECSCSC (Bit 8) */ + #define R_XSPI_INTC_ECSCSC_Msk (0x100UL) /*!< ECSCSC (Bitfield-Mask: 0x01) */ + #define R_XSPI_INTC_INTCSC_Pos (12UL) /*!< INTCSC (Bit 12) */ + #define R_XSPI_INTC_INTCSC_Msk (0x1000UL) /*!< INTCSC (Bitfield-Mask: 0x01) */ + #define R_XSPI_INTC_BRGOFCHC_Pos (16UL) /*!< BRGOFCHC (Bit 16) */ + #define R_XSPI_INTC_BRGOFCHC_Msk (0x10000UL) /*!< BRGOFCHC (Bitfield-Mask: 0x01) */ + #define R_XSPI_INTC_BRGUFCHC_Pos (18UL) /*!< BRGUFCHC (Bit 18) */ + #define R_XSPI_INTC_BRGUFCHC_Msk (0x40000UL) /*!< BRGUFCHC (Bitfield-Mask: 0x01) */ + #define R_XSPI_INTC_BUSERRCHC_Pos (20UL) /*!< BUSERRCHC (Bit 20) */ + #define R_XSPI_INTC_BUSERRCHC_Msk (0x100000UL) /*!< BUSERRCHC (Bitfield-Mask: 0x01) */ + #define R_XSPI_INTC_CAFAILCSC_Pos (28UL) /*!< CAFAILCSC (Bit 28) */ + #define R_XSPI_INTC_CAFAILCSC_Msk (0x10000000UL) /*!< CAFAILCSC (Bitfield-Mask: 0x01) */ + #define R_XSPI_INTC_CASUCCSC_Pos (30UL) /*!< CASUCCSC (Bit 30) */ + #define R_XSPI_INTC_CASUCCSC_Msk (0x40000000UL) /*!< CASUCCSC (Bitfield-Mask: 0x01) */ +/* ========================================================= INTE ========================================================== */ + #define R_XSPI_INTE_CMDCMPE_Pos (0UL) /*!< CMDCMPE (Bit 0) */ + #define R_XSPI_INTE_CMDCMPE_Msk (0x1UL) /*!< CMDCMPE (Bitfield-Mask: 0x01) */ + #define R_XSPI_INTE_PATCMPE_Pos (1UL) /*!< PATCMPE (Bit 1) */ + #define R_XSPI_INTE_PATCMPE_Msk (0x2UL) /*!< PATCMPE (Bitfield-Mask: 0x01) */ + #define R_XSPI_INTE_INICMPE_Pos (2UL) /*!< INICMPE (Bit 2) */ + #define R_XSPI_INTE_INICMPE_Msk (0x4UL) /*!< INICMPE (Bitfield-Mask: 0x01) */ + #define R_XSPI_INTE_PERTOE_Pos (3UL) /*!< PERTOE (Bit 3) */ + #define R_XSPI_INTE_PERTOE_Msk (0x8UL) /*!< PERTOE (Bitfield-Mask: 0x01) */ + #define R_XSPI_INTE_DSTOCSE_Pos (4UL) /*!< DSTOCSE (Bit 4) */ + #define R_XSPI_INTE_DSTOCSE_Msk (0x10UL) /*!< DSTOCSE (Bitfield-Mask: 0x01) */ + #define R_XSPI_INTE_ECSCSE_Pos (8UL) /*!< ECSCSE (Bit 8) */ + #define R_XSPI_INTE_ECSCSE_Msk (0x100UL) /*!< ECSCSE (Bitfield-Mask: 0x01) */ + #define R_XSPI_INTE_INTCSE_Pos (12UL) /*!< INTCSE (Bit 12) */ + #define R_XSPI_INTE_INTCSE_Msk (0x1000UL) /*!< INTCSE (Bitfield-Mask: 0x01) */ + #define R_XSPI_INTE_BRGOFCHE_Pos (16UL) /*!< BRGOFCHE (Bit 16) */ + #define R_XSPI_INTE_BRGOFCHE_Msk (0x10000UL) /*!< BRGOFCHE (Bitfield-Mask: 0x01) */ + #define R_XSPI_INTE_BRGUFCHE_Pos (18UL) /*!< BRGUFCHE (Bit 18) */ + #define R_XSPI_INTE_BRGUFCHE_Msk (0x40000UL) /*!< BRGUFCHE (Bitfield-Mask: 0x01) */ + #define R_XSPI_INTE_BUSERRCHE_Pos (20UL) /*!< BUSERRCHE (Bit 20) */ + #define R_XSPI_INTE_BUSERRCHE_Msk (0x100000UL) /*!< BUSERRCHE (Bitfield-Mask: 0x01) */ + #define R_XSPI_INTE_CAFAILCSE_Pos (28UL) /*!< CAFAILCSE (Bit 28) */ + #define R_XSPI_INTE_CAFAILCSE_Msk (0x10000000UL) /*!< CAFAILCSE (Bitfield-Mask: 0x01) */ + #define R_XSPI_INTE_CASUCCSE_Pos (30UL) /*!< CASUCCSE (Bit 30) */ + #define R_XSPI_INTE_CASUCCSE_Msk (0x40000000UL) /*!< CASUCCSE (Bitfield-Mask: 0x01) */ + +/* =========================================================================================================================== */ +/* ================ R_CEU ================ */ +/* =========================================================================================================================== */ + +/* ========================================================= CAPSR ========================================================= */ + #define R_CEU_CAPSR_CE_Pos (0UL) /*!< CE (Bit 0) */ + #define R_CEU_CAPSR_CE_Msk (0x1UL) /*!< CE (Bitfield-Mask: 0x01) */ + #define R_CEU_CAPSR_CPKIL_Pos (16UL) /*!< CPKIL (Bit 16) */ + #define R_CEU_CAPSR_CPKIL_Msk (0x10000UL) /*!< CPKIL (Bitfield-Mask: 0x01) */ +/* ========================================================= CAPCR ========================================================= */ + #define R_CEU_CAPCR_CTNCP_Pos (16UL) /*!< CTNCP (Bit 16) */ + #define R_CEU_CAPCR_CTNCP_Msk (0x10000UL) /*!< CTNCP (Bitfield-Mask: 0x01) */ + #define R_CEU_CAPCR_MTCM_Pos (20UL) /*!< MTCM (Bit 20) */ + #define R_CEU_CAPCR_MTCM_Msk (0x300000UL) /*!< MTCM (Bitfield-Mask: 0x03) */ + #define R_CEU_CAPCR_FDRP_Pos (24UL) /*!< FDRP (Bit 24) */ + #define R_CEU_CAPCR_FDRP_Msk (0xff000000UL) /*!< FDRP (Bitfield-Mask: 0xff) */ +/* ========================================================= CAMCR ========================================================= */ + #define R_CEU_CAMCR_HDPOL_Pos (0UL) /*!< HDPOL (Bit 0) */ + #define R_CEU_CAMCR_HDPOL_Msk (0x1UL) /*!< HDPOL (Bitfield-Mask: 0x01) */ + #define R_CEU_CAMCR_VDPOL_Pos (1UL) /*!< VDPOL (Bit 1) */ + #define R_CEU_CAMCR_VDPOL_Msk (0x2UL) /*!< VDPOL (Bitfield-Mask: 0x01) */ + #define R_CEU_CAMCR_JPG_Pos (4UL) /*!< JPG (Bit 4) */ + #define R_CEU_CAMCR_JPG_Msk (0x30UL) /*!< JPG (Bitfield-Mask: 0x03) */ + #define R_CEU_CAMCR_DTARY_Pos (8UL) /*!< DTARY (Bit 8) */ + #define R_CEU_CAMCR_DTARY_Msk (0x300UL) /*!< DTARY (Bitfield-Mask: 0x03) */ + #define R_CEU_CAMCR_DTIF_Pos (12UL) /*!< DTIF (Bit 12) */ + #define R_CEU_CAMCR_DTIF_Msk (0x1000UL) /*!< DTIF (Bitfield-Mask: 0x01) */ + #define R_CEU_CAMCR_FLDPOL_Pos (16UL) /*!< FLDPOL (Bit 16) */ + #define R_CEU_CAMCR_FLDPOL_Msk (0x10000UL) /*!< FLDPOL (Bitfield-Mask: 0x01) */ + #define R_CEU_CAMCR_DSEL_Pos (24UL) /*!< DSEL (Bit 24) */ + #define R_CEU_CAMCR_DSEL_Msk (0x1000000UL) /*!< DSEL (Bitfield-Mask: 0x01) */ + #define R_CEU_CAMCR_FLDSEL_Pos (25UL) /*!< FLDSEL (Bit 25) */ + #define R_CEU_CAMCR_FLDSEL_Msk (0x2000000UL) /*!< FLDSEL (Bitfield-Mask: 0x01) */ + #define R_CEU_CAMCR_HDSEL_Pos (26UL) /*!< HDSEL (Bit 26) */ + #define R_CEU_CAMCR_HDSEL_Msk (0x4000000UL) /*!< HDSEL (Bitfield-Mask: 0x01) */ + #define R_CEU_CAMCR_VDSEL_Pos (27UL) /*!< VDSEL (Bit 27) */ + #define R_CEU_CAMCR_VDSEL_Msk (0x8000000UL) /*!< VDSEL (Bitfield-Mask: 0x01) */ +/* ========================================================= CMCYR ========================================================= */ + #define R_CEU_CMCYR_HCYL_Pos (0UL) /*!< HCYL (Bit 0) */ + #define R_CEU_CMCYR_HCYL_Msk (0x3fffUL) /*!< HCYL (Bitfield-Mask: 0x3fff) */ + #define R_CEU_CMCYR_VCYL_Pos (16UL) /*!< VCYL (Bit 16) */ + #define R_CEU_CMCYR_VCYL_Msk (0x3fff0000UL) /*!< VCYL (Bitfield-Mask: 0x3fff) */ +/* ========================================================= CAMOR ========================================================= */ + #define R_CEU_CAMOR_HOFST_Pos (0UL) /*!< HOFST (Bit 0) */ + #define R_CEU_CAMOR_HOFST_Msk (0x1fffUL) /*!< HOFST (Bitfield-Mask: 0x1fff) */ + #define R_CEU_CAMOR_VOFST_Pos (16UL) /*!< VOFST (Bit 16) */ + #define R_CEU_CAMOR_VOFST_Msk (0xfff0000UL) /*!< VOFST (Bitfield-Mask: 0xfff) */ +/* ========================================================= CAPWR ========================================================= */ + #define R_CEU_CAPWR_HWDTH_Pos (0UL) /*!< HWDTH (Bit 0) */ + #define R_CEU_CAPWR_HWDTH_Msk (0x1fffUL) /*!< HWDTH (Bitfield-Mask: 0x1fff) */ + #define R_CEU_CAPWR_VWDTH_Pos (16UL) /*!< VWDTH (Bit 16) */ + #define R_CEU_CAPWR_VWDTH_Msk (0xfff0000UL) /*!< VWDTH (Bitfield-Mask: 0xfff) */ +/* ========================================================= CAIFR ========================================================= */ + #define R_CEU_CAIFR_FCI_Pos (0UL) /*!< FCI (Bit 0) */ + #define R_CEU_CAIFR_FCI_Msk (0x3UL) /*!< FCI (Bitfield-Mask: 0x03) */ + #define R_CEU_CAIFR_CIM_Pos (4UL) /*!< CIM (Bit 4) */ + #define R_CEU_CAIFR_CIM_Msk (0x10UL) /*!< CIM (Bitfield-Mask: 0x01) */ + #define R_CEU_CAIFR_IFS_Pos (8UL) /*!< IFS (Bit 8) */ + #define R_CEU_CAIFR_IFS_Msk (0x100UL) /*!< IFS (Bitfield-Mask: 0x01) */ +/* ======================================================== CRCNTR ========================================================= */ + #define R_CEU_CRCNTR_RC_Pos (0UL) /*!< RC (Bit 0) */ + #define R_CEU_CRCNTR_RC_Msk (0x1UL) /*!< RC (Bitfield-Mask: 0x01) */ + #define R_CEU_CRCNTR_RS_Pos (1UL) /*!< RS (Bit 1) */ + #define R_CEU_CRCNTR_RS_Msk (0x2UL) /*!< RS (Bitfield-Mask: 0x01) */ + #define R_CEU_CRCNTR_RVS_Pos (4UL) /*!< RVS (Bit 4) */ + #define R_CEU_CRCNTR_RVS_Msk (0x10UL) /*!< RVS (Bitfield-Mask: 0x01) */ +/* ======================================================== CRCMPR ========================================================= */ + #define R_CEU_CRCMPR_RA_Pos (0UL) /*!< RA (Bit 0) */ + #define R_CEU_CRCMPR_RA_Msk (0x1UL) /*!< RA (Bitfield-Mask: 0x01) */ +/* ========================================================= CFLCR ========================================================= */ + #define R_CEU_CFLCR_HFRAC_Pos (0UL) /*!< HFRAC (Bit 0) */ + #define R_CEU_CFLCR_HFRAC_Msk (0xfffUL) /*!< HFRAC (Bitfield-Mask: 0xfff) */ + #define R_CEU_CFLCR_HMANT_Pos (12UL) /*!< HMANT (Bit 12) */ + #define R_CEU_CFLCR_HMANT_Msk (0xf000UL) /*!< HMANT (Bitfield-Mask: 0x0f) */ + #define R_CEU_CFLCR_VFRAC_Pos (16UL) /*!< VFRAC (Bit 16) */ + #define R_CEU_CFLCR_VFRAC_Msk (0xfff0000UL) /*!< VFRAC (Bitfield-Mask: 0xfff) */ + #define R_CEU_CFLCR_VMANT_Pos (28UL) /*!< VMANT (Bit 28) */ + #define R_CEU_CFLCR_VMANT_Msk (0xf0000000UL) /*!< VMANT (Bitfield-Mask: 0x0f) */ +/* ========================================================= CFSZR ========================================================= */ + #define R_CEU_CFSZR_HFCLP_Pos (0UL) /*!< HFCLP (Bit 0) */ + #define R_CEU_CFSZR_HFCLP_Msk (0xfffUL) /*!< HFCLP (Bitfield-Mask: 0xfff) */ + #define R_CEU_CFSZR_VFCLP_Pos (16UL) /*!< VFCLP (Bit 16) */ + #define R_CEU_CFSZR_VFCLP_Msk (0xfff0000UL) /*!< VFCLP (Bitfield-Mask: 0xfff) */ +/* ========================================================= CDWDR ========================================================= */ + #define R_CEU_CDWDR_CHDW_Pos (0UL) /*!< CHDW (Bit 0) */ + #define R_CEU_CDWDR_CHDW_Msk (0x1fffUL) /*!< CHDW (Bitfield-Mask: 0x1fff) */ +/* ========================================================= CDAYR ========================================================= */ + #define R_CEU_CDAYR_CAYR_Pos (0UL) /*!< CAYR (Bit 0) */ + #define R_CEU_CDAYR_CAYR_Msk (0xffffffffUL) /*!< CAYR (Bitfield-Mask: 0xffffffff) */ +/* ========================================================= CDACR ========================================================= */ + #define R_CEU_CDACR_CACR_Pos (0UL) /*!< CACR (Bit 0) */ + #define R_CEU_CDACR_CACR_Msk (0xffffffffUL) /*!< CACR (Bitfield-Mask: 0xffffffff) */ +/* ========================================================= CDBYR ========================================================= */ + #define R_CEU_CDBYR_CBYR_Pos (0UL) /*!< CBYR (Bit 0) */ + #define R_CEU_CDBYR_CBYR_Msk (0xffffffffUL) /*!< CBYR (Bitfield-Mask: 0xffffffff) */ +/* ========================================================= CDBCR ========================================================= */ + #define R_CEU_CDBCR_CBCR_Pos (0UL) /*!< CBCR (Bit 0) */ + #define R_CEU_CDBCR_CBCR_Msk (0xffffffffUL) /*!< CBCR (Bitfield-Mask: 0xffffffff) */ +/* ========================================================= CBDSR ========================================================= */ + #define R_CEU_CBDSR_CBVS_Pos (0UL) /*!< CBVS (Bit 0) */ + #define R_CEU_CBDSR_CBVS_Msk (0x7fffffUL) /*!< CBVS (Bitfield-Mask: 0x7fffff) */ +/* ========================================================= CFWCR ========================================================= */ + #define R_CEU_CFWCR_FWE_Pos (0UL) /*!< FWE (Bit 0) */ + #define R_CEU_CFWCR_FWE_Msk (0x1UL) /*!< FWE (Bitfield-Mask: 0x01) */ + #define R_CEU_CFWCR_FWV_Pos (5UL) /*!< FWV (Bit 5) */ + #define R_CEU_CFWCR_FWV_Msk (0xffffffe0UL) /*!< FWV (Bitfield-Mask: 0x7ffffff) */ +/* ========================================================= CLFCR ========================================================= */ + #define R_CEU_CLFCR_LPF_Pos (0UL) /*!< LPF (Bit 0) */ + #define R_CEU_CLFCR_LPF_Msk (0x1UL) /*!< LPF (Bitfield-Mask: 0x01) */ +/* ========================================================= CDOCR ========================================================= */ + #define R_CEU_CDOCR_COBS_Pos (0UL) /*!< COBS (Bit 0) */ + #define R_CEU_CDOCR_COBS_Msk (0x1UL) /*!< COBS (Bitfield-Mask: 0x01) */ + #define R_CEU_CDOCR_COWS_Pos (1UL) /*!< COWS (Bit 1) */ + #define R_CEU_CDOCR_COWS_Msk (0x2UL) /*!< COWS (Bitfield-Mask: 0x01) */ + #define R_CEU_CDOCR_COLS_Pos (2UL) /*!< COLS (Bit 2) */ + #define R_CEU_CDOCR_COLS_Msk (0x4UL) /*!< COLS (Bitfield-Mask: 0x01) */ + #define R_CEU_CDOCR_CDS_Pos (4UL) /*!< CDS (Bit 4) */ + #define R_CEU_CDOCR_CDS_Msk (0x10UL) /*!< CDS (Bitfield-Mask: 0x01) */ + #define R_CEU_CDOCR_CBE_Pos (16UL) /*!< CBE (Bit 16) */ + #define R_CEU_CDOCR_CBE_Msk (0x10000UL) /*!< CBE (Bitfield-Mask: 0x01) */ +/* ========================================================= CEIER ========================================================= */ + #define R_CEU_CEIER_CPEIE_Pos (0UL) /*!< CPEIE (Bit 0) */ + #define R_CEU_CEIER_CPEIE_Msk (0x1UL) /*!< CPEIE (Bitfield-Mask: 0x01) */ + #define R_CEU_CEIER_CFEIE_Pos (1UL) /*!< CFEIE (Bit 1) */ + #define R_CEU_CEIER_CFEIE_Msk (0x2UL) /*!< CFEIE (Bitfield-Mask: 0x01) */ + #define R_CEU_CEIER_IGRWIE_Pos (4UL) /*!< IGRWIE (Bit 4) */ + #define R_CEU_CEIER_IGRWIE_Msk (0x10UL) /*!< IGRWIE (Bitfield-Mask: 0x01) */ + #define R_CEU_CEIER_HDIE_Pos (8UL) /*!< HDIE (Bit 8) */ + #define R_CEU_CEIER_HDIE_Msk (0x100UL) /*!< HDIE (Bitfield-Mask: 0x01) */ + #define R_CEU_CEIER_VDIE_Pos (9UL) /*!< VDIE (Bit 9) */ + #define R_CEU_CEIER_VDIE_Msk (0x200UL) /*!< VDIE (Bitfield-Mask: 0x01) */ + #define R_CEU_CEIER_CPBE1IE_Pos (12UL) /*!< CPBE1IE (Bit 12) */ + #define R_CEU_CEIER_CPBE1IE_Msk (0x1000UL) /*!< CPBE1IE (Bitfield-Mask: 0x01) */ + #define R_CEU_CEIER_CPBE2IE_Pos (13UL) /*!< CPBE2IE (Bit 13) */ + #define R_CEU_CEIER_CPBE2IE_Msk (0x2000UL) /*!< CPBE2IE (Bitfield-Mask: 0x01) */ + #define R_CEU_CEIER_CPBE3IE_Pos (14UL) /*!< CPBE3IE (Bit 14) */ + #define R_CEU_CEIER_CPBE3IE_Msk (0x4000UL) /*!< CPBE3IE (Bitfield-Mask: 0x01) */ + #define R_CEU_CEIER_CPBE4IE_Pos (15UL) /*!< CPBE4IE (Bit 15) */ + #define R_CEU_CEIER_CPBE4IE_Msk (0x8000UL) /*!< CPBE4IE (Bitfield-Mask: 0x01) */ + #define R_CEU_CEIER_CDTOFIE_Pos (16UL) /*!< CDTOFIE (Bit 16) */ + #define R_CEU_CEIER_CDTOFIE_Msk (0x10000UL) /*!< CDTOFIE (Bitfield-Mask: 0x01) */ + #define R_CEU_CEIER_IGHSIE_Pos (17UL) /*!< IGHSIE (Bit 17) */ + #define R_CEU_CEIER_IGHSIE_Msk (0x20000UL) /*!< IGHSIE (Bitfield-Mask: 0x01) */ + #define R_CEU_CEIER_IGVSIE_Pos (18UL) /*!< IGVSIE (Bit 18) */ + #define R_CEU_CEIER_IGVSIE_Msk (0x40000UL) /*!< IGVSIE (Bitfield-Mask: 0x01) */ + #define R_CEU_CEIER_VBPIE_Pos (20UL) /*!< VBPIE (Bit 20) */ + #define R_CEU_CEIER_VBPIE_Msk (0x100000UL) /*!< VBPIE (Bitfield-Mask: 0x01) */ + #define R_CEU_CEIER_FWFIE_Pos (23UL) /*!< FWFIE (Bit 23) */ + #define R_CEU_CEIER_FWFIE_Msk (0x800000UL) /*!< FWFIE (Bitfield-Mask: 0x01) */ + #define R_CEU_CEIER_NHDIE_Pos (24UL) /*!< NHDIE (Bit 24) */ + #define R_CEU_CEIER_NHDIE_Msk (0x1000000UL) /*!< NHDIE (Bitfield-Mask: 0x01) */ + #define R_CEU_CEIER_NVDIE_Pos (25UL) /*!< NVDIE (Bit 25) */ + #define R_CEU_CEIER_NVDIE_Msk (0x2000000UL) /*!< NVDIE (Bitfield-Mask: 0x01) */ +/* ========================================================= CETCR ========================================================= */ + #define R_CEU_CETCR_CPE_Pos (0UL) /*!< CPE (Bit 0) */ + #define R_CEU_CETCR_CPE_Msk (0x1UL) /*!< CPE (Bitfield-Mask: 0x01) */ + #define R_CEU_CETCR_CFE_Pos (1UL) /*!< CFE (Bit 1) */ + #define R_CEU_CETCR_CFE_Msk (0x2UL) /*!< CFE (Bitfield-Mask: 0x01) */ + #define R_CEU_CETCR_IGRW_Pos (4UL) /*!< IGRW (Bit 4) */ + #define R_CEU_CETCR_IGRW_Msk (0x10UL) /*!< IGRW (Bitfield-Mask: 0x01) */ + #define R_CEU_CETCR_HD_Pos (8UL) /*!< HD (Bit 8) */ + #define R_CEU_CETCR_HD_Msk (0x100UL) /*!< HD (Bitfield-Mask: 0x01) */ + #define R_CEU_CETCR_VD_Pos (9UL) /*!< VD (Bit 9) */ + #define R_CEU_CETCR_VD_Msk (0x200UL) /*!< VD (Bitfield-Mask: 0x01) */ + #define R_CEU_CETCR_CPBE1_Pos (12UL) /*!< CPBE1 (Bit 12) */ + #define R_CEU_CETCR_CPBE1_Msk (0x1000UL) /*!< CPBE1 (Bitfield-Mask: 0x01) */ + #define R_CEU_CETCR_CPBE2_Pos (13UL) /*!< CPBE2 (Bit 13) */ + #define R_CEU_CETCR_CPBE2_Msk (0x2000UL) /*!< CPBE2 (Bitfield-Mask: 0x01) */ + #define R_CEU_CETCR_CPBE3_Pos (14UL) /*!< CPBE3 (Bit 14) */ + #define R_CEU_CETCR_CPBE3_Msk (0x4000UL) /*!< CPBE3 (Bitfield-Mask: 0x01) */ + #define R_CEU_CETCR_CPBE4_Pos (15UL) /*!< CPBE4 (Bit 15) */ + #define R_CEU_CETCR_CPBE4_Msk (0x8000UL) /*!< CPBE4 (Bitfield-Mask: 0x01) */ + #define R_CEU_CETCR_CDTOF_Pos (16UL) /*!< CDTOF (Bit 16) */ + #define R_CEU_CETCR_CDTOF_Msk (0x10000UL) /*!< CDTOF (Bitfield-Mask: 0x01) */ + #define R_CEU_CETCR_IGHS_Pos (17UL) /*!< IGHS (Bit 17) */ + #define R_CEU_CETCR_IGHS_Msk (0x20000UL) /*!< IGHS (Bitfield-Mask: 0x01) */ + #define R_CEU_CETCR_IGVS_Pos (18UL) /*!< IGVS (Bit 18) */ + #define R_CEU_CETCR_IGVS_Msk (0x40000UL) /*!< IGVS (Bitfield-Mask: 0x01) */ + #define R_CEU_CETCR_VBP_Pos (20UL) /*!< VBP (Bit 20) */ + #define R_CEU_CETCR_VBP_Msk (0x100000UL) /*!< VBP (Bitfield-Mask: 0x01) */ + #define R_CEU_CETCR_FWF_Pos (23UL) /*!< FWF (Bit 23) */ + #define R_CEU_CETCR_FWF_Msk (0x800000UL) /*!< FWF (Bitfield-Mask: 0x01) */ + #define R_CEU_CETCR_NHD_Pos (24UL) /*!< NHD (Bit 24) */ + #define R_CEU_CETCR_NHD_Msk (0x1000000UL) /*!< NHD (Bitfield-Mask: 0x01) */ + #define R_CEU_CETCR_NVD_Pos (25UL) /*!< NVD (Bit 25) */ + #define R_CEU_CETCR_NVD_Msk (0x2000000UL) /*!< NVD (Bitfield-Mask: 0x01) */ +/* ========================================================= CSTSR ========================================================= */ + #define R_CEU_CSTSR_CPTON_Pos (0UL) /*!< CPTON (Bit 0) */ + #define R_CEU_CSTSR_CPTON_Msk (0x1UL) /*!< CPTON (Bitfield-Mask: 0x01) */ + #define R_CEU_CSTSR_CPFLD_Pos (16UL) /*!< CPFLD (Bit 16) */ + #define R_CEU_CSTSR_CPFLD_Msk (0x10000UL) /*!< CPFLD (Bitfield-Mask: 0x01) */ + #define R_CEU_CSTSR_CRST_Pos (24UL) /*!< CRST (Bit 24) */ + #define R_CEU_CSTSR_CRST_Msk (0x1000000UL) /*!< CRST (Bitfield-Mask: 0x01) */ +/* ========================================================= CDSSR ========================================================= */ + #define R_CEU_CDSSR_CDSS_Pos (0UL) /*!< CDSS (Bit 0) */ + #define R_CEU_CDSSR_CDSS_Msk (0xffffffffUL) /*!< CDSS (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== CDAYR2 ========================================================= */ + #define R_CEU_CDAYR2_CAYR2_Pos (0UL) /*!< CAYR2 (Bit 0) */ + #define R_CEU_CDAYR2_CAYR2_Msk (0xffffffffUL) /*!< CAYR2 (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== CDACR2 ========================================================= */ + #define R_CEU_CDACR2_CACR2_Pos (0UL) /*!< CACR2 (Bit 0) */ + #define R_CEU_CDACR2_CACR2_Msk (0xffffffffUL) /*!< CACR2 (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== CDBYR2 ========================================================= */ + #define R_CEU_CDBYR2_CBYR2_Pos (0UL) /*!< CBYR2 (Bit 0) */ + #define R_CEU_CDBYR2_CBYR2_Msk (0xffffffffUL) /*!< CBYR2 (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== CDBCR2 ========================================================= */ + #define R_CEU_CDBCR2_CBCR2_Pos (0UL) /*!< CBCR2 (Bit 0) */ + #define R_CEU_CDBCR2_CBCR2_Msk (0xffffffffUL) /*!< CBCR2 (Bitfield-Mask: 0xffffffff) */ +/* ====================================================== AXIBUSCTL2 ======================================================= */ + #define R_CEU_AXIBUSCTL2_AWCACHE_Pos (0UL) /*!< AWCACHE (Bit 0) */ + #define R_CEU_AXIBUSCTL2_AWCACHE_Msk (0xfUL) /*!< AWCACHE (Bitfield-Mask: 0x0f) */ +/* ======================================================== CAMOR_B ======================================================== */ + #define R_CEU_CAMOR_B_HOFST_Pos (0UL) /*!< HOFST (Bit 0) */ + #define R_CEU_CAMOR_B_HOFST_Msk (0x1fffUL) /*!< HOFST (Bitfield-Mask: 0x1fff) */ + #define R_CEU_CAMOR_B_VOFST_Pos (16UL) /*!< VOFST (Bit 16) */ + #define R_CEU_CAMOR_B_VOFST_Msk (0xfff0000UL) /*!< VOFST (Bitfield-Mask: 0xfff) */ +/* ======================================================== CAPWR_B ======================================================== */ + #define R_CEU_CAPWR_B_HWDTH_Pos (0UL) /*!< HWDTH (Bit 0) */ + #define R_CEU_CAPWR_B_HWDTH_Msk (0x1fffUL) /*!< HWDTH (Bitfield-Mask: 0x1fff) */ + #define R_CEU_CAPWR_B_VWDTH_Pos (16UL) /*!< VWDTH (Bit 16) */ + #define R_CEU_CAPWR_B_VWDTH_Msk (0xfff0000UL) /*!< VWDTH (Bitfield-Mask: 0xfff) */ +/* ======================================================== CFLCR_B ======================================================== */ + #define R_CEU_CFLCR_B_HFRAC_Pos (0UL) /*!< HFRAC (Bit 0) */ + #define R_CEU_CFLCR_B_HFRAC_Msk (0xfffUL) /*!< HFRAC (Bitfield-Mask: 0xfff) */ + #define R_CEU_CFLCR_B_HMANT_Pos (12UL) /*!< HMANT (Bit 12) */ + #define R_CEU_CFLCR_B_HMANT_Msk (0xf000UL) /*!< HMANT (Bitfield-Mask: 0x0f) */ + #define R_CEU_CFLCR_B_VFRAC_Pos (16UL) /*!< VFRAC (Bit 16) */ + #define R_CEU_CFLCR_B_VFRAC_Msk (0xfff0000UL) /*!< VFRAC (Bitfield-Mask: 0xfff) */ + #define R_CEU_CFLCR_B_VMANT_Pos (28UL) /*!< VMANT (Bit 28) */ + #define R_CEU_CFLCR_B_VMANT_Msk (0xf0000000UL) /*!< VMANT (Bitfield-Mask: 0x0f) */ +/* ======================================================== CFSZR_B ======================================================== */ + #define R_CEU_CFSZR_B_HFCLP_Pos (0UL) /*!< HFCLP (Bit 0) */ + #define R_CEU_CFSZR_B_HFCLP_Msk (0xfffUL) /*!< HFCLP (Bitfield-Mask: 0xfff) */ + #define R_CEU_CFSZR_B_VFCLP_Pos (16UL) /*!< VFCLP (Bit 16) */ + #define R_CEU_CFSZR_B_VFCLP_Msk (0xfff0000UL) /*!< VFCLP (Bitfield-Mask: 0xfff) */ +/* ======================================================== CDWDR_B ======================================================== */ + #define R_CEU_CDWDR_B_CHDW_Pos (0UL) /*!< CHDW (Bit 0) */ + #define R_CEU_CDWDR_B_CHDW_Msk (0x1fffUL) /*!< CHDW (Bitfield-Mask: 0x1fff) */ +/* ======================================================== CDAYR_B ======================================================== */ + #define R_CEU_CDAYR_B_CAYR_Pos (0UL) /*!< CAYR (Bit 0) */ + #define R_CEU_CDAYR_B_CAYR_Msk (0xffffffffUL) /*!< CAYR (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== CDACR_B ======================================================== */ + #define R_CEU_CDACR_B_CACR_Pos (0UL) /*!< CACR (Bit 0) */ + #define R_CEU_CDACR_B_CACR_Msk (0xffffffffUL) /*!< CACR (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== CDBYR_B ======================================================== */ + #define R_CEU_CDBYR_B_CBYR_Pos (0UL) /*!< CBYR (Bit 0) */ + #define R_CEU_CDBYR_B_CBYR_Msk (0xffffffffUL) /*!< CBYR (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== CDBCR_B ======================================================== */ + #define R_CEU_CDBCR_B_CBCR_Pos (0UL) /*!< CBCR (Bit 0) */ + #define R_CEU_CDBCR_B_CBCR_Msk (0xffffffffUL) /*!< CBCR (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== CBDSR_B ======================================================== */ + #define R_CEU_CBDSR_B_CBVS_Pos (0UL) /*!< CBVS (Bit 0) */ + #define R_CEU_CBDSR_B_CBVS_Msk (0x7fffffUL) /*!< CBVS (Bitfield-Mask: 0x7fffff) */ +/* ======================================================== CLFCR_B ======================================================== */ + #define R_CEU_CLFCR_B_LPF_Pos (0UL) /*!< LPF (Bit 0) */ + #define R_CEU_CLFCR_B_LPF_Msk (0x1UL) /*!< LPF (Bitfield-Mask: 0x01) */ +/* ======================================================== CDOCR_B ======================================================== */ + #define R_CEU_CDOCR_B_COBS_Pos (0UL) /*!< COBS (Bit 0) */ + #define R_CEU_CDOCR_B_COBS_Msk (0x1UL) /*!< COBS (Bitfield-Mask: 0x01) */ + #define R_CEU_CDOCR_B_COWS_Pos (1UL) /*!< COWS (Bit 1) */ + #define R_CEU_CDOCR_B_COWS_Msk (0x2UL) /*!< COWS (Bitfield-Mask: 0x01) */ + #define R_CEU_CDOCR_B_COLS_Pos (2UL) /*!< COLS (Bit 2) */ + #define R_CEU_CDOCR_B_COLS_Msk (0x4UL) /*!< COLS (Bitfield-Mask: 0x01) */ + #define R_CEU_CDOCR_B_CDS_Pos (4UL) /*!< CDS (Bit 4) */ + #define R_CEU_CDOCR_B_CDS_Msk (0x10UL) /*!< CDS (Bitfield-Mask: 0x01) */ + #define R_CEU_CDOCR_B_CBE_Pos (16UL) /*!< CBE (Bit 16) */ + #define R_CEU_CDOCR_B_CBE_Msk (0x10000UL) /*!< CBE (Bitfield-Mask: 0x01) */ +/* ======================================================= CDAYR2_B ======================================================== */ + #define R_CEU_CDAYR2_B_CAYR2_Pos (0UL) /*!< CAYR2 (Bit 0) */ + #define R_CEU_CDAYR2_B_CAYR2_Msk (0xffffffffUL) /*!< CAYR2 (Bitfield-Mask: 0xffffffff) */ +/* ======================================================= CDACR2_B ======================================================== */ + #define R_CEU_CDACR2_B_CACR2_Pos (0UL) /*!< CACR2 (Bit 0) */ + #define R_CEU_CDACR2_B_CACR2_Msk (0xffffffffUL) /*!< CACR2 (Bitfield-Mask: 0xffffffff) */ +/* ======================================================= CDBYR2_B ======================================================== */ + #define R_CEU_CDBYR2_B_CBYR2_Pos (0UL) /*!< CBYR2 (Bit 0) */ + #define R_CEU_CDBYR2_B_CBYR2_Msk (0xffffffffUL) /*!< CBYR2 (Bitfield-Mask: 0xffffffff) */ +/* ======================================================= CDBCR2_B ======================================================== */ + #define R_CEU_CDBCR2_B_CBCR2_Pos (0UL) /*!< CBCR2 (Bit 0) */ + #define R_CEU_CDBCR2_B_CBCR2_Msk (0xffffffffUL) /*!< CBCR2 (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== CAMOR_M ======================================================== */ + #define R_CEU_CAMOR_M_HOFST_Pos (0UL) /*!< HOFST (Bit 0) */ + #define R_CEU_CAMOR_M_HOFST_Msk (0x1fffUL) /*!< HOFST (Bitfield-Mask: 0x1fff) */ + #define R_CEU_CAMOR_M_VOFST_Pos (16UL) /*!< VOFST (Bit 16) */ + #define R_CEU_CAMOR_M_VOFST_Msk (0xfff0000UL) /*!< VOFST (Bitfield-Mask: 0xfff) */ +/* ======================================================== CAPWR_M ======================================================== */ + #define R_CEU_CAPWR_M_HWDTH_Pos (0UL) /*!< HWDTH (Bit 0) */ + #define R_CEU_CAPWR_M_HWDTH_Msk (0x1fffUL) /*!< HWDTH (Bitfield-Mask: 0x1fff) */ + #define R_CEU_CAPWR_M_VWDTH_Pos (16UL) /*!< VWDTH (Bit 16) */ + #define R_CEU_CAPWR_M_VWDTH_Msk (0xfff0000UL) /*!< VWDTH (Bitfield-Mask: 0xfff) */ +/* ======================================================== CFLCR_M ======================================================== */ + #define R_CEU_CFLCR_M_HFRAC_Pos (0UL) /*!< HFRAC (Bit 0) */ + #define R_CEU_CFLCR_M_HFRAC_Msk (0xfffUL) /*!< HFRAC (Bitfield-Mask: 0xfff) */ + #define R_CEU_CFLCR_M_HMANT_Pos (12UL) /*!< HMANT (Bit 12) */ + #define R_CEU_CFLCR_M_HMANT_Msk (0xf000UL) /*!< HMANT (Bitfield-Mask: 0x0f) */ + #define R_CEU_CFLCR_M_VFRAC_Pos (16UL) /*!< VFRAC (Bit 16) */ + #define R_CEU_CFLCR_M_VFRAC_Msk (0xfff0000UL) /*!< VFRAC (Bitfield-Mask: 0xfff) */ + #define R_CEU_CFLCR_M_VMANT_Pos (28UL) /*!< VMANT (Bit 28) */ + #define R_CEU_CFLCR_M_VMANT_Msk (0xf0000000UL) /*!< VMANT (Bitfield-Mask: 0x0f) */ +/* ======================================================== CFSZR_M ======================================================== */ + #define R_CEU_CFSZR_M_HFCLP_Pos (0UL) /*!< HFCLP (Bit 0) */ + #define R_CEU_CFSZR_M_HFCLP_Msk (0xfffUL) /*!< HFCLP (Bitfield-Mask: 0xfff) */ + #define R_CEU_CFSZR_M_VFCLP_Pos (16UL) /*!< VFCLP (Bit 16) */ + #define R_CEU_CFSZR_M_VFCLP_Msk (0xfff0000UL) /*!< VFCLP (Bitfield-Mask: 0xfff) */ +/* ======================================================== CDWDR_M ======================================================== */ + #define R_CEU_CDWDR_M_CHDW_Pos (0UL) /*!< CHDW (Bit 0) */ + #define R_CEU_CDWDR_M_CHDW_Msk (0x1fffUL) /*!< CHDW (Bitfield-Mask: 0x1fff) */ +/* ======================================================== CDAYR_M ======================================================== */ + #define R_CEU_CDAYR_M_CAYR_Pos (0UL) /*!< CAYR (Bit 0) */ + #define R_CEU_CDAYR_M_CAYR_Msk (0xffffffffUL) /*!< CAYR (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== CDACR_M ======================================================== */ + #define R_CEU_CDACR_M_CACR_Pos (0UL) /*!< CACR (Bit 0) */ + #define R_CEU_CDACR_M_CACR_Msk (0xffffffffUL) /*!< CACR (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== CDBYR_M ======================================================== */ + #define R_CEU_CDBYR_M_CBYR_Pos (0UL) /*!< CBYR (Bit 0) */ + #define R_CEU_CDBYR_M_CBYR_Msk (0xffffffffUL) /*!< CBYR (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== CDBCR_M ======================================================== */ + #define R_CEU_CDBCR_M_CBCR_Pos (0UL) /*!< CBCR (Bit 0) */ + #define R_CEU_CDBCR_M_CBCR_Msk (0xffffffffUL) /*!< CBCR (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== CBDSR_M ======================================================== */ + #define R_CEU_CBDSR_M_CBVS_Pos (0UL) /*!< CBVS (Bit 0) */ + #define R_CEU_CBDSR_M_CBVS_Msk (0x7fffffUL) /*!< CBVS (Bitfield-Mask: 0x7fffff) */ +/* ======================================================== CLFCR_M ======================================================== */ + #define R_CEU_CLFCR_M_LPF_Pos (0UL) /*!< LPF (Bit 0) */ + #define R_CEU_CLFCR_M_LPF_Msk (0x1UL) /*!< LPF (Bitfield-Mask: 0x01) */ +/* ======================================================== CDOCR_M ======================================================== */ + #define R_CEU_CDOCR_M_COBS_Pos (0UL) /*!< COBS (Bit 0) */ + #define R_CEU_CDOCR_M_COBS_Msk (0x1UL) /*!< COBS (Bitfield-Mask: 0x01) */ + #define R_CEU_CDOCR_M_COWS_Pos (1UL) /*!< COWS (Bit 1) */ + #define R_CEU_CDOCR_M_COWS_Msk (0x2UL) /*!< COWS (Bitfield-Mask: 0x01) */ + #define R_CEU_CDOCR_M_COLS_Pos (2UL) /*!< COLS (Bit 2) */ + #define R_CEU_CDOCR_M_COLS_Msk (0x4UL) /*!< COLS (Bitfield-Mask: 0x01) */ + #define R_CEU_CDOCR_M_CDS_Pos (4UL) /*!< CDS (Bit 4) */ + #define R_CEU_CDOCR_M_CDS_Msk (0x10UL) /*!< CDS (Bitfield-Mask: 0x01) */ + #define R_CEU_CDOCR_M_CBE_Pos (16UL) /*!< CBE (Bit 16) */ + #define R_CEU_CDOCR_M_CBE_Msk (0x10000UL) /*!< CBE (Bitfield-Mask: 0x01) */ +/* ======================================================= CDAYR2_M ======================================================== */ + #define R_CEU_CDAYR2_M_CAYR2_Pos (0UL) /*!< CAYR2 (Bit 0) */ + #define R_CEU_CDAYR2_M_CAYR2_Msk (0xffffffffUL) /*!< CAYR2 (Bitfield-Mask: 0xffffffff) */ +/* ======================================================= CDACR2_M ======================================================== */ + #define R_CEU_CDACR2_M_CACR2_Pos (0UL) /*!< CACR2 (Bit 0) */ + #define R_CEU_CDACR2_M_CACR2_Msk (0xffffffffUL) /*!< CACR2 (Bitfield-Mask: 0xffffffff) */ +/* ======================================================= CDBYR2_M ======================================================== */ + #define R_CEU_CDBYR2_M_CBYR2_Pos (0UL) /*!< CBYR2 (Bit 0) */ + #define R_CEU_CDBYR2_M_CBYR2_Msk (0xffffffffUL) /*!< CBYR2 (Bitfield-Mask: 0xffffffff) */ +/* ======================================================= CDBCR2_M ======================================================== */ + #define R_CEU_CDBCR2_M_CBCR2_Pos (0UL) /*!< CBCR2 (Bit 0) */ + #define R_CEU_CDBCR2_M_CBCR2_Msk (0xffffffffUL) /*!< CBCR2 (Bitfield-Mask: 0xffffffff) */ + +/* =========================================================================================================================== */ +/* ================ R_ULPT0 ================ */ +/* =========================================================================================================================== */ + +/* ======================================================== ULPTCNT ======================================================== */ + #define R_ULPT0_ULPTCNT_ULPTCNT_Pos (0UL) /*!< ULPTCNT (Bit 0) */ + #define R_ULPT0_ULPTCNT_ULPTCNT_Msk (0xffffffffUL) /*!< ULPTCNT (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== ULPTCMA ======================================================== */ + #define R_ULPT0_ULPTCMA_ULPTCMA_Pos (0UL) /*!< ULPTCMA (Bit 0) */ + #define R_ULPT0_ULPTCMA_ULPTCMA_Msk (0xffffffffUL) /*!< ULPTCMA (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== ULPTCMB ======================================================== */ + #define R_ULPT0_ULPTCMB_ULPTCMB_Pos (0UL) /*!< ULPTCMB (Bit 0) */ + #define R_ULPT0_ULPTCMB_ULPTCMB_Msk (0xffffffffUL) /*!< ULPTCMB (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== ULPTCR ========================================================= */ + #define R_ULPT0_ULPTCR_TSTART_Pos (0UL) /*!< TSTART (Bit 0) */ + #define R_ULPT0_ULPTCR_TSTART_Msk (0x1UL) /*!< TSTART (Bitfield-Mask: 0x01) */ + #define R_ULPT0_ULPTCR_TCSTF_Pos (1UL) /*!< TCSTF (Bit 1) */ + #define R_ULPT0_ULPTCR_TCSTF_Msk (0x2UL) /*!< TCSTF (Bitfield-Mask: 0x01) */ + #define R_ULPT0_ULPTCR_TSTOP_Pos (2UL) /*!< TSTOP (Bit 2) */ + #define R_ULPT0_ULPTCR_TSTOP_Msk (0x4UL) /*!< TSTOP (Bitfield-Mask: 0x01) */ + #define R_ULPT0_ULPTCR_TUNDF_Pos (5UL) /*!< TUNDF (Bit 5) */ + #define R_ULPT0_ULPTCR_TUNDF_Msk (0x20UL) /*!< TUNDF (Bitfield-Mask: 0x01) */ + #define R_ULPT0_ULPTCR_TCMAF_Pos (6UL) /*!< TCMAF (Bit 6) */ + #define R_ULPT0_ULPTCR_TCMAF_Msk (0x40UL) /*!< TCMAF (Bitfield-Mask: 0x01) */ + #define R_ULPT0_ULPTCR_TCMBF_Pos (7UL) /*!< TCMBF (Bit 7) */ + #define R_ULPT0_ULPTCR_TCMBF_Msk (0x80UL) /*!< TCMBF (Bitfield-Mask: 0x01) */ +/* ======================================================== ULPTMR1 ======================================================== */ + #define R_ULPT0_ULPTMR1_TMOD1_Pos (1UL) /*!< TMOD1 (Bit 1) */ + #define R_ULPT0_ULPTMR1_TMOD1_Msk (0x2UL) /*!< TMOD1 (Bitfield-Mask: 0x01) */ + #define R_ULPT0_ULPTMR1_TEDGPL_Pos (3UL) /*!< TEDGPL (Bit 3) */ + #define R_ULPT0_ULPTMR1_TEDGPL_Msk (0x8UL) /*!< TEDGPL (Bitfield-Mask: 0x01) */ + #define R_ULPT0_ULPTMR1_TCK1_Pos (5UL) /*!< TCK1 (Bit 5) */ + #define R_ULPT0_ULPTMR1_TCK1_Msk (0x20UL) /*!< TCK1 (Bitfield-Mask: 0x01) */ +/* ======================================================== ULPTMR2 ======================================================== */ + #define R_ULPT0_ULPTMR2_CKS_Pos (0UL) /*!< CKS (Bit 0) */ + #define R_ULPT0_ULPTMR2_CKS_Msk (0x7UL) /*!< CKS (Bitfield-Mask: 0x07) */ + #define R_ULPT0_ULPTMR2_LPM_Pos (7UL) /*!< LPM (Bit 7) */ + #define R_ULPT0_ULPTMR2_LPM_Msk (0x80UL) /*!< LPM (Bitfield-Mask: 0x01) */ +/* ======================================================== ULPTMR3 ======================================================== */ + #define R_ULPT0_ULPTMR3_TCNTCTL_Pos (0UL) /*!< TCNTCTL (Bit 0) */ + #define R_ULPT0_ULPTMR3_TCNTCTL_Msk (0x1UL) /*!< TCNTCTL (Bitfield-Mask: 0x01) */ + #define R_ULPT0_ULPTMR3_TEVPOL_Pos (1UL) /*!< TEVPOL (Bit 1) */ + #define R_ULPT0_ULPTMR3_TEVPOL_Msk (0x2UL) /*!< TEVPOL (Bitfield-Mask: 0x01) */ + #define R_ULPT0_ULPTMR3_TOPOL_Pos (2UL) /*!< TOPOL (Bit 2) */ + #define R_ULPT0_ULPTMR3_TOPOL_Msk (0x4UL) /*!< TOPOL (Bitfield-Mask: 0x01) */ + #define R_ULPT0_ULPTMR3_TEECTL_Pos (4UL) /*!< TEECTL (Bit 4) */ + #define R_ULPT0_ULPTMR3_TEECTL_Msk (0x30UL) /*!< TEECTL (Bitfield-Mask: 0x03) */ + #define R_ULPT0_ULPTMR3_TEEPOL_Pos (6UL) /*!< TEEPOL (Bit 6) */ + #define R_ULPT0_ULPTMR3_TEEPOL_Msk (0xc0UL) /*!< TEEPOL (Bitfield-Mask: 0x03) */ +/* ======================================================== ULPTIOC ======================================================== */ + #define R_ULPT0_ULPTIOC_TOE_Pos (2UL) /*!< TOE (Bit 2) */ + #define R_ULPT0_ULPTIOC_TOE_Msk (0x4UL) /*!< TOE (Bitfield-Mask: 0x01) */ + #define R_ULPT0_ULPTIOC_TIPF_Pos (4UL) /*!< TIPF (Bit 4) */ + #define R_ULPT0_ULPTIOC_TIPF_Msk (0x30UL) /*!< TIPF (Bitfield-Mask: 0x03) */ + #define R_ULPT0_ULPTIOC_TIOGT0_Pos (6UL) /*!< TIOGT0 (Bit 6) */ + #define R_ULPT0_ULPTIOC_TIOGT0_Msk (0x40UL) /*!< TIOGT0 (Bitfield-Mask: 0x01) */ +/* ======================================================== ULPTISR ======================================================== */ + #define R_ULPT0_ULPTISR_RCCPSEL2_Pos (2UL) /*!< RCCPSEL2 (Bit 2) */ + #define R_ULPT0_ULPTISR_RCCPSEL2_Msk (0x4UL) /*!< RCCPSEL2 (Bitfield-Mask: 0x01) */ +/* ======================================================= ULPTCMSR ======================================================== */ + #define R_ULPT0_ULPTCMSR_TCMEA_Pos (0UL) /*!< TCMEA (Bit 0) */ + #define R_ULPT0_ULPTCMSR_TCMEA_Msk (0x1UL) /*!< TCMEA (Bitfield-Mask: 0x01) */ + #define R_ULPT0_ULPTCMSR_TOEA_Pos (1UL) /*!< TOEA (Bit 1) */ + #define R_ULPT0_ULPTCMSR_TOEA_Msk (0x2UL) /*!< TOEA (Bitfield-Mask: 0x01) */ + #define R_ULPT0_ULPTCMSR_TOPOLA_Pos (2UL) /*!< TOPOLA (Bit 2) */ + #define R_ULPT0_ULPTCMSR_TOPOLA_Msk (0x4UL) /*!< TOPOLA (Bitfield-Mask: 0x01) */ + #define R_ULPT0_ULPTCMSR_TCMEB_Pos (4UL) /*!< TCMEB (Bit 4) */ + #define R_ULPT0_ULPTCMSR_TCMEB_Msk (0x10UL) /*!< TCMEB (Bitfield-Mask: 0x01) */ + #define R_ULPT0_ULPTCMSR_TOEB_Pos (5UL) /*!< TOEB (Bit 5) */ + #define R_ULPT0_ULPTCMSR_TOEB_Msk (0x20UL) /*!< TOEB (Bitfield-Mask: 0x01) */ + #define R_ULPT0_ULPTCMSR_TOPOLB_Pos (6UL) /*!< TOPOLB (Bit 6) */ + #define R_ULPT0_ULPTCMSR_TOPOLB_Msk (0x40UL) /*!< TOPOLB (Bitfield-Mask: 0x01) */ + +/* =========================================================================================================================== */ +/* ================ R_DEBUG_OCD ================ */ +/* =========================================================================================================================== */ + +/* ======================================================= FSBLSTATM ======================================================= */ + #define R_DEBUG_OCD_FSBLSTATM_CS_Pos (0UL) /*!< CS (Bit 0) */ + #define R_DEBUG_OCD_FSBLSTATM_CS_Msk (0x1UL) /*!< CS (Bitfield-Mask: 0x01) */ + #define R_DEBUG_OCD_FSBLSTATM_RS_Pos (1UL) /*!< RS (Bit 1) */ + #define R_DEBUG_OCD_FSBLSTATM_RS_Msk (0x2UL) /*!< RS (Bitfield-Mask: 0x01) */ + +/* =========================================================================================================================== */ +/* ================ R_DOTF ================ */ +/* =========================================================================================================================== */ + +/* ====================================================== CONVAREAST ======================================================= */ + #define R_DOTF_CONVAREAST_CONVAREAST_Pos (12UL) /*!< CONVAREAST (Bit 12) */ + #define R_DOTF_CONVAREAST_CONVAREAST_Msk (0xfffff000UL) /*!< CONVAREAST (Bitfield-Mask: 0xfffff) */ +/* ======================================================= CONVAREAD ======================================================= */ + #define R_DOTF_CONVAREAD_CONVAREAD_Pos (12UL) /*!< CONVAREAD (Bit 12) */ + #define R_DOTF_CONVAREAD_CONVAREAD_Msk (0xfffff000UL) /*!< CONVAREAD (Bitfield-Mask: 0xfffff) */ +/* ========================================================= REG00 ========================================================= */ + #define R_DOTF_REG00_B09_Pos (9UL) /*!< B09 (Bit 9) */ + #define R_DOTF_REG00_B09_Msk (0x200UL) /*!< B09 (Bitfield-Mask: 0x01) */ + #define R_DOTF_REG00_B16_Pos (16UL) /*!< B16 (Bit 16) */ + #define R_DOTF_REG00_B16_Msk (0x10000UL) /*!< B16 (Bitfield-Mask: 0x01) */ + #define R_DOTF_REG00_B17_Pos (17UL) /*!< B17 (Bit 17) */ + #define R_DOTF_REG00_B17_Msk (0x20000UL) /*!< B17 (Bitfield-Mask: 0x01) */ + #define R_DOTF_REG00_B20_Pos (20UL) /*!< B20 (Bit 20) */ + #define R_DOTF_REG00_B20_Msk (0x100000UL) /*!< B20 (Bitfield-Mask: 0x01) */ + #define R_DOTF_REG00_B24_Pos (24UL) /*!< B24 (Bit 24) */ + #define R_DOTF_REG00_B24_Msk (0x3000000UL) /*!< B24 (Bitfield-Mask: 0x03) */ + #define R_DOTF_REG00_B28_Pos (28UL) /*!< B28 (Bit 28) */ + #define R_DOTF_REG00_B28_Msk (0x30000000UL) /*!< B28 (Bitfield-Mask: 0x03) */ +/* ========================================================= REG03 ========================================================= */ + #define R_DOTF_REG03_B00_Pos (0UL) /*!< B00 (Bit 0) */ + #define R_DOTF_REG03_B00_Msk (0xffffffffUL) /*!< B00 (Bitfield-Mask: 0xffffffff) */ + +/* =========================================================================================================================== */ +/* ================ R_AGTX0 ================ */ +/* =========================================================================================================================== */ + +/* =========================================================================================================================== */ +/* ================ R_FLAD ================ */ +/* =========================================================================================================================== */ + +/* ======================================================== FCKMHZ ========================================================= */ + #define R_FLAD_FCKMHZ_FCKMHZ_Pos (0UL) /*!< FCKMHZ (Bit 0) */ + #define R_FLAD_FCKMHZ_FCKMHZ_Msk (0xffUL) /*!< FCKMHZ (Bitfield-Mask: 0xff) */ + +/* =========================================================================================================================== */ +/* ================ R_OFS_DATAFLASH ================ */ +/* =========================================================================================================================== */ + +/* ======================================================= FSBLCTRL0 ======================================================= */ + #define R_OFS_DATAFLASH_FSBLCTRL0_FSBLEN_Pos (0UL) /*!< FSBLEN (Bit 0) */ + #define R_OFS_DATAFLASH_FSBLCTRL0_FSBLEN_Msk (0x7UL) /*!< FSBLEN (Bitfield-Mask: 0x07) */ + #define R_OFS_DATAFLASH_FSBLCTRL0_FSBLSKIPSW_Pos (3UL) /*!< FSBLSKIPSW (Bit 3) */ + #define R_OFS_DATAFLASH_FSBLCTRL0_FSBLSKIPSW_Msk (0x38UL) /*!< FSBLSKIPSW (Bitfield-Mask: 0x07) */ + #define R_OFS_DATAFLASH_FSBLCTRL0_FSBLSKIPDS_Pos (6UL) /*!< FSBLSKIPDS (Bit 6) */ + #define R_OFS_DATAFLASH_FSBLCTRL0_FSBLSKIPDS_Msk (0x1c0UL) /*!< FSBLSKIPDS (Bitfield-Mask: 0x07) */ + #define R_OFS_DATAFLASH_FSBLCTRL0_FSBLCLK_Pos (9UL) /*!< FSBLCLK (Bit 9) */ + #define R_OFS_DATAFLASH_FSBLCTRL0_FSBLCLK_Msk (0xe00UL) /*!< FSBLCLK (Bitfield-Mask: 0x07) */ +/* ======================================================= FSBLCTRL1 ======================================================= */ + #define R_OFS_DATAFLASH_FSBLCTRL1_FSBLEXMD_Pos (0UL) /*!< FSBLEXMD (Bit 0) */ + #define R_OFS_DATAFLASH_FSBLCTRL1_FSBLEXMD_Msk (0x3UL) /*!< FSBLEXMD (Bitfield-Mask: 0x03) */ +/* ======================================================= FSBLCTRL2 ======================================================= */ + #define R_OFS_DATAFLASH_FSBLCTRL2_PORTPN_Pos (0UL) /*!< PORTPN (Bit 0) */ + #define R_OFS_DATAFLASH_FSBLCTRL2_PORTPN_Msk (0xfUL) /*!< PORTPN (Bitfield-Mask: 0x0f) */ + #define R_OFS_DATAFLASH_FSBLCTRL2_PORTGN_Pos (4UL) /*!< PORTGN (Bit 4) */ + #define R_OFS_DATAFLASH_FSBLCTRL2_PORTGN_Msk (0x1f0UL) /*!< PORTGN (Bitfield-Mask: 0x1f) */ +/* ========================================================= SACC0 ========================================================= */ +/* ========================================================= SACC1 ========================================================= */ +/* ========================================================= SAMR ========================================================== */ +/* ======================================================= HOEMRTPK ======================================================== */ +/* ========================================================= ARCLS ========================================================= */ + #define R_OFS_DATAFLASH_ARCLS_ARCS_LK_Pos (0UL) /*!< ARCS_LK (Bit 0) */ + #define R_OFS_DATAFLASH_ARCLS_ARCS_LK_Msk (0x1UL) /*!< ARCS_LK (Bitfield-Mask: 0x01) */ + #define R_OFS_DATAFLASH_ARCLS_ARCNS_LK_Pos (1UL) /*!< ARCNS_LK (Bit 1) */ + #define R_OFS_DATAFLASH_ARCLS_ARCNS_LK_Msk (0x1eUL) /*!< ARCNS_LK (Bitfield-Mask: 0x0f) */ + #define R_OFS_DATAFLASH_ARCLS_ARCBL_LK_Pos (5UL) /*!< ARCBL_LK (Bit 5) */ + #define R_OFS_DATAFLASH_ARCLS_ARCBL_LK_Msk (0x20UL) /*!< ARCBL_LK (Bitfield-Mask: 0x01) */ +/* ========================================================= ARCCS ========================================================= */ + #define R_OFS_DATAFLASH_ARCCS_CNF_ARCNS_Pos (0UL) /*!< CNF_ARCNS (Bit 0) */ + #define R_OFS_DATAFLASH_ARCCS_CNF_ARCNS_Msk (0x3UL) /*!< CNF_ARCNS (Bitfield-Mask: 0x03) */ +/* ======================================================== ARC_SEC ======================================================== */ + #define R_OFS_DATAFLASH_ARC_SEC_ARC_SEC_Pos (0UL) /*!< ARC_SEC (Bit 0) */ + #define R_OFS_DATAFLASH_ARC_SEC_ARC_SEC_Msk (0xffffffffUL) /*!< ARC_SEC (Bitfield-Mask: 0xffffffff) */ +/* ======================================================= ARC_NSEC ======================================================== */ + #define R_OFS_DATAFLASH_ARC_NSEC_ARC_NSEC_Pos (0UL) /*!< ARC_NSEC (Bit 0) */ + #define R_OFS_DATAFLASH_ARC_NSEC_ARC_NSEC_Msk (0xffffffffUL) /*!< ARC_NSEC (Bitfield-Mask: 0xffffffff) */ +/* ======================================================= ARC_OEMBL ======================================================= */ + #define R_OFS_DATAFLASH_ARC_OEMBL_ARC_OEMBL_Pos (0UL) /*!< ARC_OEMBL (Bit 0) */ + #define R_OFS_DATAFLASH_ARC_OEMBL_ARC_OEMBL_Msk (0xffffffffUL) /*!< ARC_OEMBL (Bitfield-Mask: 0xffffffff) */ + +/** @} */ /* End of group PosMask_peripherals */ + + #ifdef __cplusplus +} + #endif + +#endif /* R7FA8M1AH_H */ + +/** @} */ /* End of group R7FA8M1AH */ + +/** @} */ /* End of group Renesas */ diff --git a/bsp/renesas/ra8m1-ek/ra/fsp/src/bsp/cmsis/Device/RENESAS/Include/renesas.h b/bsp/renesas/ra8m1-ek/ra/fsp/src/bsp/cmsis/Device/RENESAS/Include/renesas.h new file mode 100644 index 000000000000..f8083574fbb9 --- /dev/null +++ b/bsp/renesas/ra8m1-ek/ra/fsp/src/bsp/cmsis/Device/RENESAS/Include/renesas.h @@ -0,0 +1,146 @@ +/*********************************************************************************************************************** + * Copyright [2020-2023] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics America Inc. and may only be used with products + * of Renesas Electronics Corp. and its affiliates ("Renesas"). No other uses are authorized. Renesas products are + * sold pursuant to Renesas terms and conditions of sale. Purchasers are solely responsible for the selection and use + * of Renesas products and Renesas assumes no liability. No license, express or implied, to any intellectual property + * right is granted by Renesas. This software is protected under all applicable laws, including copyright laws. Renesas + * reserves the right to change or discontinue this software and/or this documentation. THE SOFTWARE AND DOCUMENTATION + * IS DELIVERED TO YOU "AS IS," AND RENESAS MAKES NO REPRESENTATIONS OR WARRANTIES, AND TO THE FULLEST EXTENT + * PERMISSIBLE UNDER APPLICABLE LAW, DISCLAIMS ALL WARRANTIES, WHETHER EXPLICITLY OR IMPLICITLY, INCLUDING WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT, WITH RESPECT TO THE SOFTWARE OR + * DOCUMENTATION. RENESAS SHALL HAVE NO LIABILITY ARISING OUT OF ANY SECURITY VULNERABILITY OR BREACH. TO THE MAXIMUM + * EXTENT PERMITTED BY LAW, IN NO EVENT WILL RENESAS BE LIABLE TO YOU IN CONNECTION WITH THE SOFTWARE OR DOCUMENTATION + * (OR ANY PERSON OR ENTITY CLAIMING RIGHTS DERIVED FROM YOU) FOR ANY LOSS, DAMAGES, OR CLAIMS WHATSOEVER, INCLUDING, + * WITHOUT LIMITATION, ANY DIRECT, CONSEQUENTIAL, SPECIAL, INDIRECT, PUNITIVE, OR INCIDENTAL DAMAGES; ANY LOST PROFITS, + * OTHER ECONOMIC DAMAGE, PROPERTY DAMAGE, OR PERSONAL INJURY; AND EVEN IF RENESAS HAS BEEN ADVISED OF THE POSSIBILITY + * OF SUCH LOSS, DAMAGES, CLAIMS OR COSTS. + **********************************************************************************************************************/ + +/* Ensure Renesas MCU variation definitions are included to ensure MCU + * specific register variations are handled correctly. */ +#ifndef BSP_FEATURE_H + #error "INTERNAL ERROR: bsp_feature.h must be included before renesas.h." +#endif + +/** @addtogroup Renesas + * @{ + */ + +/** @addtogroup RA + * @{ + */ + +#ifndef RA_H + #define RA_H + + #ifdef __cplusplus +extern "C" { + #endif + +/* Workaround for LLVM. __ARM_ARCH_8_1M_MAIN__ is defined for CM85 parts. But CMSIS_5 does not support this */ + #if defined(__llvm__) && !defined(__CLANG_TIDY__) && defined(__ARM_ARCH_8_1M_MAIN__) + #undef __ARM_ARCH_8_1M_MAIN__ + #define __ARM_ARCH_8M_MAIN__ 1 + #endif + #include "cmsis_compiler.h" + +/* Workaround for compilers that are not defining __ARM_ARCH_8_1M_MAIN__ for CM85 parts. */ + #if BSP_CFG_MCU_PART_SERIES == 8 + #undef __ARM_ARCH_8M_MAIN__ + #define __ARM_ARCH_8_1M_MAIN__ 1 + #endif + +/** @addtogroup Configuration_of_CMSIS + * @{ + */ + +/* =========================================================================================================================== */ +/* ================ Interrupt Number Definition ================ */ +/* =========================================================================================================================== */ +/* IRQn_Type is provided in bsp_exceptions.h. Vectors generated by the FSP Configuration tool are in vector_data.h */ + +/** @} */ /* End of group Configuration_of_CMSIS */ + +/* =========================================================================================================================== */ +/* ================ Processor and Core Peripheral Section ================ */ +/* =========================================================================================================================== */ + + #if BSP_MCU_GROUP_RA2A1 + #include "R7FA2A1AB.h" + #elif BSP_MCU_GROUP_RA2E1 + #include "R7FA2E1A9.h" + #elif BSP_MCU_GROUP_RA2E2 + #include "R7FA2E2A7.h" + #elif BSP_MCU_GROUP_RA2E3 + #include "R7FA2E307.h" + #elif BSP_MCU_GROUP_RA2L1 + #include "R7FA2L1AB.h" + #elif BSP_MCU_GROUP_RA4E1 + #include "R7FA4E10D.h" + #elif BSP_MCU_GROUP_RA4E2 + #include "R7FA4E2B9.h" + #elif BSP_MCU_GROUP_RA4M1 + #include "R7FA4M1AB.h" + #elif BSP_MCU_GROUP_RA4M2 + #include "R7FA4M2AD.h" + #elif BSP_MCU_GROUP_RA4M3 + #include "R7FA4M3AF.h" + #elif BSP_MCU_GROUP_RA4T1 + #include "R7FA4T1BB.h" + #elif BSP_MCU_GROUP_RA4W1 + #include "R7FA4W1AD.h" + #elif BSP_MCU_GROUP_RA6E1 + #include "R7FA6E10F.h" + #elif BSP_MCU_GROUP_RA6E2 + #include "R7FA6E2BB.h" + #elif BSP_MCU_GROUP_RA6M1 + #include "R7FA6M1AD.h" + #elif BSP_MCU_GROUP_RA6M2 + #include "R7FA6M2AF.h" + #elif BSP_MCU_GROUP_RA6M3 + #include "R7FA6M3AH.h" + #elif BSP_MCU_GROUP_RA6M4 + #include "R7FA6M4AF.h" + #elif BSP_MCU_GROUP_RA6M5 + #include "R7FA6M5BH.h" + #elif BSP_MCU_GROUP_RA6T1 + #include "R7FA6T1AD.h" + #elif BSP_MCU_GROUP_RA6T2 + #include "R7FA6T2BD.h" + #elif BSP_MCU_GROUP_RA6T3 + #include "R7FA6T3BB.h" + #elif BSP_MCU_GROUP_RA8M1 + #include "R7FA8M1AH.h" + #else + #if __has_include("renesas_internal.h") + #include "renesas_internal.h" + #else + #warning "Unsupported MCU" + #endif + #endif + + #if __ARM_ARCH_7EM__ + #define RENESAS_CORTEX_M4 + #elif __ARM_ARCH_6M__ + #define RENESAS_CORTEX_M0PLUS + #elif __ARM_ARCH_8M_BASE__ + #define RENESAS_CORTEX_M23 + #elif __ARM_ARCH_8M_MAIN__ + #define RENESAS_CORTEX_M33 + #elif __ARM_ARCH_8_1M_MAIN__ + #define RENESAS_CORTEX_M85 + #else + #warning Unsupported Architecture + #endif + + #ifdef __cplusplus +} + #endif + +#endif /* RA_H */ + +/** @} */ /* End of group RA */ + +/** @} */ /* End of group Renesas */ diff --git a/bsp/renesas/ra8m1-ek/ra/fsp/src/bsp/cmsis/Device/RENESAS/Include/system.h b/bsp/renesas/ra8m1-ek/ra/fsp/src/bsp/cmsis/Device/RENESAS/Include/system.h new file mode 100644 index 000000000000..b61fe0f0038d --- /dev/null +++ b/bsp/renesas/ra8m1-ek/ra/fsp/src/bsp/cmsis/Device/RENESAS/Include/system.h @@ -0,0 +1,58 @@ +/*********************************************************************************************************************** + * Copyright [2020-2023] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics America Inc. and may only be used with products + * of Renesas Electronics Corp. and its affiliates ("Renesas"). No other uses are authorized. Renesas products are + * sold pursuant to Renesas terms and conditions of sale. Purchasers are solely responsible for the selection and use + * of Renesas products and Renesas assumes no liability. No license, express or implied, to any intellectual property + * right is granted by Renesas. This software is protected under all applicable laws, including copyright laws. Renesas + * reserves the right to change or discontinue this software and/or this documentation. THE SOFTWARE AND DOCUMENTATION + * IS DELIVERED TO YOU "AS IS," AND RENESAS MAKES NO REPRESENTATIONS OR WARRANTIES, AND TO THE FULLEST EXTENT + * PERMISSIBLE UNDER APPLICABLE LAW, DISCLAIMS ALL WARRANTIES, WHETHER EXPLICITLY OR IMPLICITLY, INCLUDING WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT, WITH RESPECT TO THE SOFTWARE OR + * DOCUMENTATION. RENESAS SHALL HAVE NO LIABILITY ARISING OUT OF ANY SECURITY VULNERABILITY OR BREACH. TO THE MAXIMUM + * EXTENT PERMITTED BY LAW, IN NO EVENT WILL RENESAS BE LIABLE TO YOU IN CONNECTION WITH THE SOFTWARE OR DOCUMENTATION + * (OR ANY PERSON OR ENTITY CLAIMING RIGHTS DERIVED FROM YOU) FOR ANY LOSS, DAMAGES, OR CLAIMS WHATSOEVER, INCLUDING, + * WITHOUT LIMITATION, ANY DIRECT, CONSEQUENTIAL, SPECIAL, INDIRECT, PUNITIVE, OR INCIDENTAL DAMAGES; ANY LOST PROFITS, + * OTHER ECONOMIC DAMAGE, PROPERTY DAMAGE, OR PERSONAL INJURY; AND EVEN IF RENESAS HAS BEEN ADVISED OF THE POSSIBILITY + * OF SUCH LOSS, DAMAGES, CLAIMS OR COSTS. + **********************************************************************************************************************/ + +#ifndef SYSTEM_RENESAS_ARM_H + #define SYSTEM_RENESAS_ARM_H + + #ifdef __cplusplus +extern "C" { + #endif + + #include + +extern uint32_t SystemCoreClock; /** System Clock Frequency (Core Clock) */ + +/** + * Initialize the system + * + * @param none + * @return none + * + * @brief Setup the microcontroller system. + * Initialize the System and update the SystemCoreClock variable. + */ +extern void SystemInit(void); + +/** + * Update SystemCoreClock variable + * + * @param none + * @return none + * + * @brief Updates the SystemCoreClock with current core Clock + * retrieved from cpu registers. + */ +extern void SystemCoreClockUpdate(void); + + #ifdef __cplusplus +} + #endif + +#endif diff --git a/bsp/renesas/ra8m1-ek/ra/fsp/src/bsp/cmsis/Device/RENESAS/Source/startup.c b/bsp/renesas/ra8m1-ek/ra/fsp/src/bsp/cmsis/Device/RENESAS/Source/startup.c new file mode 100644 index 000000000000..d135ed07629a --- /dev/null +++ b/bsp/renesas/ra8m1-ek/ra/fsp/src/bsp/cmsis/Device/RENESAS/Source/startup.c @@ -0,0 +1,151 @@ +/*********************************************************************************************************************** + * Copyright [2020-2023] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics America Inc. and may only be used with products + * of Renesas Electronics Corp. and its affiliates ("Renesas"). No other uses are authorized. Renesas products are + * sold pursuant to Renesas terms and conditions of sale. Purchasers are solely responsible for the selection and use + * of Renesas products and Renesas assumes no liability. No license, express or implied, to any intellectual property + * right is granted by Renesas. This software is protected under all applicable laws, including copyright laws. Renesas + * reserves the right to change or discontinue this software and/or this documentation. THE SOFTWARE AND DOCUMENTATION + * IS DELIVERED TO YOU "AS IS," AND RENESAS MAKES NO REPRESENTATIONS OR WARRANTIES, AND TO THE FULLEST EXTENT + * PERMISSIBLE UNDER APPLICABLE LAW, DISCLAIMS ALL WARRANTIES, WHETHER EXPLICITLY OR IMPLICITLY, INCLUDING WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT, WITH RESPECT TO THE SOFTWARE OR + * DOCUMENTATION. RENESAS SHALL HAVE NO LIABILITY ARISING OUT OF ANY SECURITY VULNERABILITY OR BREACH. TO THE MAXIMUM + * EXTENT PERMITTED BY LAW, IN NO EVENT WILL RENESAS BE LIABLE TO YOU IN CONNECTION WITH THE SOFTWARE OR DOCUMENTATION + * (OR ANY PERSON OR ENTITY CLAIMING RIGHTS DERIVED FROM YOU) FOR ANY LOSS, DAMAGES, OR CLAIMS WHATSOEVER, INCLUDING, + * WITHOUT LIMITATION, ANY DIRECT, CONSEQUENTIAL, SPECIAL, INDIRECT, PUNITIVE, OR INCIDENTAL DAMAGES; ANY LOST PROFITS, + * OTHER ECONOMIC DAMAGE, PROPERTY DAMAGE, OR PERSONAL INJURY; AND EVEN IF RENESAS HAS BEEN ADVISED OF THE POSSIBILITY + * OF SUCH LOSS, DAMAGES, CLAIMS OR COSTS. + **********************************************************************************************************************/ + +/*******************************************************************************************************************//** + * @addtogroup BSP_MCU + * @{ + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Includes , "Project Includes" + **********************************************************************************************************************/ +#include "bsp_api.h" + +/*********************************************************************************************************************** + * Macro definitions + **********************************************************************************************************************/ +#if BSP_TZ_SECURE_BUILD + #define BSP_TZ_STACK_SEAL_SIZE (8U) +#else + #define BSP_TZ_STACK_SEAL_SIZE (0U) +#endif + +/*********************************************************************************************************************** + * Typedef definitions + **********************************************************************************************************************/ + +/* Defines function pointers to be used with vector table. */ +typedef void (* exc_ptr_t)(void); + +/*********************************************************************************************************************** + * Exported global variables (to be accessed by other files) + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Private global variables and functions + **********************************************************************************************************************/ +void Reset_Handler(void); +void Default_Handler(void); +int32_t main(void); + +/*******************************************************************************************************************//** + * MCU starts executing here out of reset. Main stack pointer is set up already. + **********************************************************************************************************************/ +void Reset_Handler (void) +{ + /* Initialize system using BSP. */ + SystemInit(); + + /* Call user application. */ + main(); + + while (1) + { + /* Infinite Loop. */ + } +} + +/*******************************************************************************************************************//** + * Default exception handler. + **********************************************************************************************************************/ +void Default_Handler (void) +{ + /** A error has occurred. The user will need to investigate the cause. Common problems are stack corruption + * or use of an invalid pointer. Use the Fault Status window in e2 studio or manually check the fault status + * registers for more information. + */ + BSP_CFG_HANDLE_UNRECOVERABLE_ERROR(0); +} + +/* Main stack */ +static uint8_t g_main_stack[BSP_CFG_STACK_MAIN_BYTES + BSP_TZ_STACK_SEAL_SIZE] BSP_ALIGN_VARIABLE(BSP_STACK_ALIGNMENT) +BSP_PLACE_IN_SECTION(BSP_SECTION_STACK); + +/* Heap */ +#if (BSP_CFG_HEAP_BYTES > 0) + +BSP_DONT_REMOVE static uint8_t g_heap[BSP_CFG_HEAP_BYTES] BSP_ALIGN_VARIABLE(BSP_STACK_ALIGNMENT) \ + BSP_PLACE_IN_SECTION(BSP_SECTION_HEAP); +#endif + +/* All system exceptions in the vector table are weak references to Default_Handler. If the user wishes to handle + * these exceptions in their code they should define their own function with the same name. + */ +#if defined(__ICCARM__) + #define WEAK_REF_ATTRIBUTE + + #pragma weak HardFault_Handler = Default_Handler + #pragma weak MemManage_Handler = Default_Handler + #pragma weak BusFault_Handler = Default_Handler + #pragma weak UsageFault_Handler = Default_Handler + #pragma weak SecureFault_Handler = Default_Handler + #pragma weak SVC_Handler = Default_Handler + #pragma weak DebugMon_Handler = Default_Handler + #pragma weak PendSV_Handler = Default_Handler + #pragma weak SysTick_Handler = Default_Handler +#elif defined(__GNUC__) + + #define WEAK_REF_ATTRIBUTE __attribute__((weak, alias("Default_Handler"))) +#endif + +void NMI_Handler(void); // NMI has many sources and is handled by BSP +void HardFault_Handler(void) WEAK_REF_ATTRIBUTE; +void MemManage_Handler(void) WEAK_REF_ATTRIBUTE; +void BusFault_Handler(void) WEAK_REF_ATTRIBUTE; +void UsageFault_Handler(void) WEAK_REF_ATTRIBUTE; +void SecureFault_Handler(void) WEAK_REF_ATTRIBUTE; +void SVC_Handler(void) WEAK_REF_ATTRIBUTE; +void DebugMon_Handler(void) WEAK_REF_ATTRIBUTE; +void PendSV_Handler(void) WEAK_REF_ATTRIBUTE; +void SysTick_Handler(void) WEAK_REF_ATTRIBUTE; + +/* Vector table. */ +BSP_DONT_REMOVE const exc_ptr_t __Vectors[BSP_CORTEX_VECTOR_TABLE_ENTRIES] BSP_PLACE_IN_SECTION( + BSP_SECTION_FIXED_VECTORS) = +{ + (exc_ptr_t) (&g_main_stack[0] + BSP_CFG_STACK_MAIN_BYTES), /* Initial Stack Pointer */ + Reset_Handler, /* Reset Handler */ + NMI_Handler, /* NMI Handler */ + HardFault_Handler, /* Hard Fault Handler */ + MemManage_Handler, /* MPU Fault Handler */ + BusFault_Handler, /* Bus Fault Handler */ + UsageFault_Handler, /* Usage Fault Handler */ + SecureFault_Handler, /* Secure Fault Handler */ + 0, /* Reserved */ + 0, /* Reserved */ + 0, /* Reserved */ + SVC_Handler, /* SVCall Handler */ + DebugMon_Handler, /* Debug Monitor Handler */ + 0, /* Reserved */ + PendSV_Handler, /* PendSV Handler */ + SysTick_Handler, /* SysTick Handler */ +}; + +/** @} (end addtogroup BSP_MCU) */ diff --git a/bsp/renesas/ra8m1-ek/ra/fsp/src/bsp/cmsis/Device/RENESAS/Source/system.c b/bsp/renesas/ra8m1-ek/ra/fsp/src/bsp/cmsis/Device/RENESAS/Source/system.c new file mode 100644 index 000000000000..7caf7e3a9ceb --- /dev/null +++ b/bsp/renesas/ra8m1-ek/ra/fsp/src/bsp/cmsis/Device/RENESAS/Source/system.c @@ -0,0 +1,845 @@ +/*********************************************************************************************************************** + * Copyright [2020-2023] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics America Inc. and may only be used with products + * of Renesas Electronics Corp. and its affiliates ("Renesas"). No other uses are authorized. Renesas products are + * sold pursuant to Renesas terms and conditions of sale. Purchasers are solely responsible for the selection and use + * of Renesas products and Renesas assumes no liability. No license, express or implied, to any intellectual property + * right is granted by Renesas. This software is protected under all applicable laws, including copyright laws. Renesas + * reserves the right to change or discontinue this software and/or this documentation. THE SOFTWARE AND DOCUMENTATION + * IS DELIVERED TO YOU "AS IS," AND RENESAS MAKES NO REPRESENTATIONS OR WARRANTIES, AND TO THE FULLEST EXTENT + * PERMISSIBLE UNDER APPLICABLE LAW, DISCLAIMS ALL WARRANTIES, WHETHER EXPLICITLY OR IMPLICITLY, INCLUDING WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT, WITH RESPECT TO THE SOFTWARE OR + * DOCUMENTATION. RENESAS SHALL HAVE NO LIABILITY ARISING OUT OF ANY SECURITY VULNERABILITY OR BREACH. TO THE MAXIMUM + * EXTENT PERMITTED BY LAW, IN NO EVENT WILL RENESAS BE LIABLE TO YOU IN CONNECTION WITH THE SOFTWARE OR DOCUMENTATION + * (OR ANY PERSON OR ENTITY CLAIMING RIGHTS DERIVED FROM YOU) FOR ANY LOSS, DAMAGES, OR CLAIMS WHATSOEVER, INCLUDING, + * WITHOUT LIMITATION, ANY DIRECT, CONSEQUENTIAL, SPECIAL, INDIRECT, PUNITIVE, OR INCIDENTAL DAMAGES; ANY LOST PROFITS, + * OTHER ECONOMIC DAMAGE, PROPERTY DAMAGE, OR PERSONAL INJURY; AND EVEN IF RENESAS HAS BEEN ADVISED OF THE POSSIBILITY + * OF SUCH LOSS, DAMAGES, CLAIMS OR COSTS. + **********************************************************************************************************************/ + +/*******************************************************************************************************************//** + * @addtogroup BSP_MCU + * @{ + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Includes , "Project Includes" + **********************************************************************************************************************/ +#include +#if defined(__GNUC__) && defined(__llvm__) && !defined(__ARMCC_VERSION) && !defined(__CLANG_TIDY__) + #include +#endif +#include "bsp_api.h" + +/*********************************************************************************************************************** + * Macro definitions + **********************************************************************************************************************/ + +/* Mask to select CP bits( 0xF00000 ) */ +#define CP_MASK (0xFU << 20) + +/* Startup value for CCR to enable instruction cache, branch prediction and LOB extension */ +#define CCR_CACHE_ENABLE (0x000E0201) + +/* Value to write to OAD register of MPU stack monitor to enable NMI when a stack overflow is detected. */ +#define BSP_STACK_POINTER_MONITOR_NMI_ON_DETECTION (0xA500U) + +/* Key code for writing PRCR register. */ +#define BSP_PRV_PRCR_KEY (0xA500U) +#define BSP_PRV_PRCR_PRC1_UNLOCK ((BSP_PRV_PRCR_KEY) | 0x2U) +#define BSP_PRV_PRCR_LOCK ((BSP_PRV_PRCR_KEY) | 0x0U) +#define BSP_PRV_STACK_LIMIT ((uint32_t) __Vectors[0] - BSP_CFG_STACK_MAIN_BYTES) +#define BSP_PRV_STACK_TOP ((uint32_t) __Vectors[0]) +#define BSP_TZ_STACK_SEAL_VALUE (0xFEF5EDA5) + +#define ARMV8_MPU_REGION_MIN_SIZE (32U) + +/*********************************************************************************************************************** + * Typedef definitions + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Exported global variables (to be accessed by other files) + **********************************************************************************************************************/ + +/** System Clock Frequency (Core Clock) */ +uint32_t SystemCoreClock BSP_SECTION_EARLY_INIT; + +#if defined(__ARMCC_VERSION) +extern uint32_t Image$$BSS$$ZI$$Base; +extern uint32_t Image$$BSS$$ZI$$Length; +extern uint32_t Load$$DATA$$Base; +extern uint32_t Image$$DATA$$Base; +extern uint32_t Image$$DATA$$Length; +extern uint32_t Image$$STACK$$ZI$$Base; +extern uint32_t Image$$STACK$$ZI$$Length; + #if BSP_FEATURE_BSP_HAS_ITCM +extern uint32_t Load$$ITCM_DATA$$Base; +extern uint32_t Load$$ITCM_PAD$$Limit; +extern uint32_t Image$$ITCM_DATA$$Base; + #endif + #if BSP_FEATURE_BSP_HAS_DTCM +extern uint32_t Load$$DTCM_DATA$$Base; +extern uint32_t Load$$DTCM_PAD$$Limit; +extern uint32_t Image$$DTCM_DATA$$Base; +extern uint32_t Image$$DTCM_BSS$$Base; +extern uint32_t Image$$DTCM_BSS_PAD$$ZI$$Limit; + #endif + #if BSP_CFG_DCACHE_ENABLED +extern uint32_t Image$$NOCACHE$$ZI$$Base; +extern uint32_t Image$$NOCACHE_PAD$$ZI$$Limit; +extern uint32_t Image$$NOCACHE_SDRAM$$ZI$$Base; +extern uint32_t Image$$NOCACHE_SDRAM_PAD$$ZI$$Limit; + #endif +#elif defined(__GNUC__) + +/* Generated by linker. */ +extern uint32_t __etext; +extern uint32_t __data_start__; +extern uint32_t __data_end__; +extern uint32_t __bss_start__; +extern uint32_t __bss_end__; +extern uint32_t __StackLimit; +extern uint32_t __StackTop; + +/* Nested in __GNUC__ because LLVM generates both __GNUC__ and __llvm__*/ + #if defined(__llvm__) && !defined(__CLANG_TIDY__) +extern uint32_t __tls_base; + #endif + #if BSP_FEATURE_BSP_HAS_ITCM +extern uint32_t __itcm_data_init_start; +extern uint32_t __itcm_data_init_end; +extern uint32_t __itcm_data_start; + #endif + #if BSP_FEATURE_BSP_HAS_DTCM +extern uint32_t __dtcm_data_init_start; +extern uint32_t __dtcm_data_init_end; +extern uint32_t __dtcm_data_start; +extern uint32_t __dtcm_bss_start; +extern uint32_t __dtcm_bss_end; + #endif + #if BSP_CFG_DCACHE_ENABLED +extern uint32_t __nocache_start; +extern uint32_t __nocache_end; +extern uint32_t __nocache_sdram_start; +extern uint32_t __nocache_sdram_end; + #endif +#elif defined(__ICCARM__) + #pragma section=".bss" + #pragma section=".data" + #pragma section=".data_init" + #pragma section=".stack" + #if BSP_FEATURE_BSP_HAS_ITCM +extern uint32_t ITCM_DATA_INIT$$Base; +extern uint32_t ITCM_DATA_INIT$$Limit; +extern uint32_t ITCM_DATA$$Base; + #endif + #if BSP_FEATURE_BSP_HAS_DTCM +extern uint32_t DTCM_DATA_INIT$$Base; +extern uint32_t DTCM_DATA_INIT$$Limit; +extern uint32_t DTCM_DATA$$Base; +extern uint32_t DTCM_BSS$$Base; +extern uint32_t DTCM_BSS$$Limit; + #endif + #if BSP_CFG_DCACHE_ENABLED +extern uint32_t NOCACHE$$Base; +extern uint32_t NOCACHE$$Limit; +extern uint32_t NOCACHE_SDRAM$$Base; +extern uint32_t NOCACHE_SDRAM$$Limit; + #endif +#endif + +/* Initialize static constructors */ +#if defined(__ARMCC_VERSION) +extern void (* Image$$INIT_ARRAY$$Base[])(void); +extern void (* Image$$INIT_ARRAY$$Limit[])(void); +#elif defined(__GNUC__) + +extern void (* __init_array_start[])(void); + +extern void (* __init_array_end[])(void); +#elif defined(__ICCARM__) +extern void __call_ctors(void const *, void const *); + + #pragma section = "SHT$$PREINIT_ARRAY" const + #pragma section = "SHT$$INIT_ARRAY" const +#endif + +extern void * __Vectors[]; + +extern void R_BSP_SecurityInit(void); + +/*********************************************************************************************************************** + * Private global variables and functions + **********************************************************************************************************************/ + +#if BSP_FEATURE_BSP_RESET_TRNG +static void bsp_reset_trng_circuit(void); + +#endif + +#if defined(__ICCARM__) + +void R_BSP_WarmStart(bsp_warm_start_event_t event); + + #pragma weak R_BSP_WarmStart + +#elif defined(__GNUC__) || defined(__ARMCC_VERSION) + +void R_BSP_WarmStart(bsp_warm_start_event_t event) __attribute__((weak)); + +#endif + +#if BSP_CFG_EARLY_INIT +static void bsp_init_uninitialized_vars(void); + +#endif + +#if BSP_CFG_C_RUNTIME_INIT + #if BSP_FEATURE_BSP_HAS_ITCM || BSP_FEATURE_BSP_HAS_DTCM +static void memcpy_64(uint64_t * destination, const uint64_t * source, size_t count); + + #endif + #if BSP_FEATURE_BSP_HAS_DTCM +static void memset_64(uint64_t * destination, const uint64_t value, size_t count); + + #endif +#endif + +#if BSP_CFG_C_RUNTIME_INIT + #if BSP_FEATURE_BSP_HAS_ITCM +static void bsp_init_itcm(void); + + #endif + #if BSP_FEATURE_BSP_HAS_DTCM +static void bsp_init_dtcm(void); + + #endif +#endif + +#if BSP_CFG_DCACHE_ENABLED +static void bsp_init_mpu(void); + +#endif + +/*******************************************************************************************************************//** + * Initialize the MCU and the runtime environment. + **********************************************************************************************************************/ +void SystemInit (void) +{ +#if defined(RENESAS_CORTEX_M85) + + /* Enable the instruction cache, branch prediction, and the branch cache (required for Low Overhead Branch (LOB) extension). + * See sections 6.5, 6.6, and 6.7 in the Arm Cortex-M85 Processor Technical Reference Manual (Document ID: 101924_0002_05_en, Issue: 05) + * See section D1.2.9 in the Armv8-M Architecture Reference Manual (Document number: DDI0553B.w, Document version: ID07072023) */ + SCB->CCR = (uint32_t) CCR_CACHE_ENABLE; + __DSB(); + __ISB(); +#endif + +#if __FPU_USED + + /* Enable the FPU only when it is used. + * Code taken from Section 7.1, Cortex-M4 TRM (DDI0439C) */ + + /* Set bits 20-23 (CP10 and CP11) to enable FPU. */ + SCB->CPACR = (uint32_t) CP_MASK; +#endif + +#if BSP_TZ_SECURE_BUILD + + /* Seal the main stack for secure projects. Reference: + * https://developer.arm.com/documentation/100720/0300 + * https://developer.arm.com/support/arm-security-updates/armv8-m-stack-sealing */ + uint32_t * p_main_stack_top = (uint32_t *) __Vectors[0]; + *p_main_stack_top = BSP_TZ_STACK_SEAL_VALUE; +#endif + +#if !BSP_TZ_NONSECURE_BUILD + #if BSP_FEATURE_BSP_SECURITY_PREINIT + R_BSP_SecurityPreinit(); + #endif + + /* VTOR is in undefined state out of RESET: + * https://developer.arm.com/documentation/100235/0004/the-cortex-m33-peripherals/system-control-block/system-control-block-registers-summary?lang=en. + * Set the Secure/Non-Secure VTOR to the vector table address based on the build. This is skipped for non-secure + * projects because SCB_NS->VTOR is set by the secure project before the non-secure project runs. */ + SCB->VTOR = (uint32_t) &__Vectors; +#endif + +#if !BSP_TZ_CFG_SKIP_INIT + #if BSP_FEATURE_BSP_VBATT_HAS_VBTCR1_BPWSWSTP + + /* Unlock VBTCR1 register. */ + R_SYSTEM->PRCR = (uint16_t) BSP_PRV_PRCR_PRC1_UNLOCK; + + /* The VBTCR1.BPWSWSTP must be set after reset on MCUs that have VBTCR1.BPWSWSTP. Reference section 11.2.1 + * "VBATT Control Register 1 (VBTCR1)" and Figure 11.2 "Setting flow of the VBTCR1.BPWSWSTP bit" in the RA4M1 manual + * R01UM0007EU0110. This must be done before bsp_clock_init because LOCOCR, LOCOUTCR, SOSCCR, and SOMCR cannot + * be accessed until VBTSR.VBTRVLD is set. */ + R_SYSTEM->VBTCR1 = 1U; + FSP_HARDWARE_REGISTER_WAIT(R_SYSTEM->VBTSR_b.VBTRVLD, 1U); + + /* Lock VBTCR1 register. */ + R_SYSTEM->PRCR = (uint16_t) BSP_PRV_PRCR_LOCK; + #endif +#endif + +#if BSP_FEATURE_TFU_SUPPORTED + R_BSP_MODULE_START(FSP_IP_TFU, 0U); +#endif + +#if BSP_CFG_EARLY_INIT + + /* Initialize uninitialized BSP variables early for use in R_BSP_WarmStart. */ + bsp_init_uninitialized_vars(); +#endif + + /* Call pre clock initialization hook. */ + R_BSP_WarmStart(BSP_WARM_START_RESET); + +#if BSP_TZ_CFG_SKIP_INIT + + /* Initialize clock variables to be used with R_BSP_SoftwareDelay. */ + bsp_clock_freq_var_init(); +#else + + /* Configure system clocks. */ + bsp_clock_init(); + + #if BSP_FEATURE_BSP_RESET_TRNG + + /* To prevent an undesired current draw, this MCU requires a reset + * of the TRNG circuit after the clocks are initialized */ + + bsp_reset_trng_circuit(); + #endif +#endif + + /* Call post clock initialization hook. */ + R_BSP_WarmStart(BSP_WARM_START_POST_CLOCK); + +#if BSP_FEATURE_BSP_HAS_SP_MON + + /* Disable MSP monitoring */ + R_MPU_SPMON->SP[0].CTL = 0; + + /* Setup NMI interrupt */ + R_MPU_SPMON->SP[0].OAD = BSP_STACK_POINTER_MONITOR_NMI_ON_DETECTION; + + /* Setup start address */ + R_MPU_SPMON->SP[0].SA = BSP_PRV_STACK_LIMIT; + + /* Setup end address */ + R_MPU_SPMON->SP[0].EA = BSP_PRV_STACK_TOP; + + /* Set SPEEN bit to enable NMI on stack monitor exception. NMIER bits cannot be cleared after reset, so no need + * to read-modify-write. */ + R_ICU->NMIER = R_ICU_NMIER_SPEEN_Msk; + + /* Enable MSP monitoring */ + R_MPU_SPMON->SP[0].CTL = 1U; +#endif + +#if BSP_FEATURE_TZ_HAS_TRUSTZONE + __set_MSPLIM(BSP_PRV_STACK_LIMIT); +#endif + +#if BSP_CFG_C_RUNTIME_INIT + + /* Initialize C runtime environment. */ + /* Zero out BSS */ + #if defined(__ARMCC_VERSION) + memset((uint8_t *) &Image$$BSS$$ZI$$Base, 0U, (uint32_t) &Image$$BSS$$ZI$$Length); + #elif defined(__GNUC__) + memset(&__bss_start__, 0U, ((uint32_t) &__bss_end__ - (uint32_t) &__bss_start__)); + #elif defined(__ICCARM__) + memset((uint32_t *) __section_begin(".bss"), 0U, (uint32_t) __section_size(".bss")); + #endif + + /* Copy initialized RAM data from ROM to RAM. */ + #if defined(__ARMCC_VERSION) + memcpy((uint8_t *) &Image$$DATA$$Base, (uint8_t *) &Load$$DATA$$Base, (uint32_t) &Image$$DATA$$Length); + #elif defined(__GNUC__) + memcpy(&__data_start__, &__etext, ((uint32_t) &__data_end__ - (uint32_t) &__data_start__)); + #elif defined(__ICCARM__) + memcpy((uint32_t *) __section_begin(".data"), (uint32_t *) __section_begin(".data_init"), + (uint32_t) __section_size(".data")); + + /* Copy functions to be executed from RAM. */ + #pragma section=".code_in_ram" + #pragma section=".code_in_ram_init" + memcpy((uint32_t *) __section_begin(".code_in_ram"), + (uint32_t *) __section_begin(".code_in_ram_init"), + (uint32_t) __section_size(".code_in_ram")); + + /* Copy main thread TLS to RAM. */ + #pragma section="__DLIB_PERTHREAD_init" + #pragma section="__DLIB_PERTHREAD" + memcpy((uint32_t *) __section_begin("__DLIB_PERTHREAD"), (uint32_t *) __section_begin("__DLIB_PERTHREAD_init"), + (uint32_t) __section_size("__DLIB_PERTHREAD_init")); + #endif + + /* Initialize TCM memory. */ + #if BSP_FEATURE_BSP_HAS_ITCM + bsp_init_itcm(); + #endif + #if BSP_FEATURE_BSP_HAS_DTCM + bsp_init_dtcm(); + #endif + + #if defined(RENESAS_CORTEX_M85) + + /* Invalidate I-Cache after initializing the .code_in_ram section. */ + SCB_InvalidateICache(); + #endif + + #if defined(__GNUC__) && defined(__llvm__) && !defined(__CLANG_TIDY__) && !(defined __ARMCC_VERSION) + + /* Initialize TLS memory. */ + _init_tls(&__tls_base); + _set_tls(&__tls_base); + #endif + + /* Initialize static constructors */ + #if defined(__ARMCC_VERSION) + int32_t count = Image$$INIT_ARRAY$$Limit - Image$$INIT_ARRAY$$Base; + for (int32_t i = 0; i < count; i++) + { + void (* p_init_func)(void) = + (void (*)(void))((uint32_t) &Image$$INIT_ARRAY$$Base + (uint32_t) Image$$INIT_ARRAY$$Base[i]); + p_init_func(); + } + + #elif defined(__GNUC__) + int32_t count = __init_array_end - __init_array_start; + for (int32_t i = 0; i < count; i++) + { + __init_array_start[i](); + } + + #elif defined(__ICCARM__) + void const * pibase = __section_begin("SHT$$PREINIT_ARRAY"); + void const * ilimit = __section_end("SHT$$INIT_ARRAY"); + __call_ctors(pibase, ilimit); + #endif +#endif // BSP_CFG_C_RUNTIME_INIT + +#if BSP_FEATURE_BSP_POST_CRUNTIME_INIT + R_BSP_PostCRuntimeInit(); +#endif + + /* Initialize SystemCoreClock variable. */ + SystemCoreClockUpdate(); + +#if BSP_FEATURE_RTC_IS_AVAILABLE || BSP_FEATURE_RTC_HAS_TCEN || BSP_FEATURE_SYSC_HAS_VBTICTLR + + /* For TZ project, it should be called by the secure application, whether RTC module is to be configured as secure or not. */ + #if !BSP_TZ_NONSECURE_BUILD && !BSP_CFG_BOOT_IMAGE + + /* Perform RTC reset sequence to avoid unintended operation. */ + R_BSP_Init_RTC(); + #endif +#endif + +#if !BSP_CFG_PFS_PROTECT && defined(R_PMISC) + #if BSP_TZ_SECURE_BUILD || (BSP_FEATURE_TZ_VERSION == 2 && FSP_PRIV_TZ_USE_SECURE_REGS) + R_PMISC->PWPRS = 0; ///< Clear BOWI bit - writing to PFSWE bit enabled + R_PMISC->PWPRS = 1U << BSP_IO_PWPR_PFSWE_OFFSET; ///< Set PFSWE bit - writing to PFS register enabled + #else + R_PMISC->PWPR = 0; ///< Clear BOWI bit - writing to PFSWE bit enabled + R_PMISC->PWPR = 1U << BSP_IO_PWPR_PFSWE_OFFSET; ///< Set PFSWE bit - writing to PFS register enabled + #endif +#endif + +#if FSP_PRIV_TZ_USE_SECURE_REGS + + /* Ensure that the PMSAR registers are set to their default value. */ + R_BSP_RegisterProtectDisable(BSP_REG_PROTECT_SAR); + + for (uint32_t i = 0; i < BSP_FEATURE_BSP_NUM_PMSAR; i++) + { + #if BSP_FEATURE_TZ_VERSION == 2 + R_PMISC->PMSAR[i].PMSAR = 0U; + #else + R_PMISC->PMSAR[i].PMSAR = UINT16_MAX; + #endif + } + R_BSP_RegisterProtectEnable(BSP_REG_PROTECT_SAR); +#endif + +#if BSP_TZ_SECURE_BUILD + + /* Initialize security features. */ + R_BSP_SecurityInit(); +#endif + +#if BSP_CFG_DCACHE_ENABLED + bsp_init_mpu(); + + SCB_EnableDCache(); +#endif + +#if BSP_FEATURE_BSP_HAS_GRAPHICS_DOMAIN + if ((((0 == R_SYSTEM->PGCSAR) && FSP_PRIV_TZ_USE_SECURE_REGS) || + ((1 == R_SYSTEM->PGCSAR) && BSP_TZ_NONSECURE_BUILD)) && (0 != R_SYSTEM->PDCTRGD)) + { + /* Turn on graphics power domain. + * This requires MOCO to be enabled, but MOCO is always enabled after bsp_clock_init(). */ + R_BSP_RegisterProtectDisable(BSP_REG_PROTECT_OM_LPC_BATT); + FSP_HARDWARE_REGISTER_WAIT((R_SYSTEM->PDCTRGD & (R_SYSTEM_PDCTRGD_PDCSF_Msk | R_SYSTEM_PDCTRGD_PDPGSF_Msk)), + R_SYSTEM_PDCTRGD_PDPGSF_Msk); + R_SYSTEM->PDCTRGD = 0; + FSP_HARDWARE_REGISTER_WAIT((R_SYSTEM->PDCTRGD & (R_SYSTEM_PDCTRGD_PDCSF_Msk | R_SYSTEM_PDCTRGD_PDPGSF_Msk)), 0); + R_BSP_RegisterProtectEnable(BSP_REG_PROTECT_OM_LPC_BATT); + } +#endif + + /* Call Post C runtime initialization hook. */ + R_BSP_WarmStart(BSP_WARM_START_POST_C); + + /* Initialize ELC events that will be used to trigger NVIC interrupts. */ + bsp_irq_cfg(); + + /* Call any BSP specific code. No arguments are needed so NULL is sent. */ + bsp_init(NULL); +} + +/*******************************************************************************************************************//** + * This function is called at various points during the startup process. + * This function is declared as a weak symbol higher up in this file because it is meant to be overridden by a user + * implemented version. One of the main uses for this function is to call functional safety code during the startup + * process. To use this function just copy this function into your own code and modify it to meet your needs. + * + * @param[in] event Where the code currently is in the start up process + **********************************************************************************************************************/ +void R_BSP_WarmStart (bsp_warm_start_event_t event) +{ + if (BSP_WARM_START_RESET == event) + { + /* C runtime environment has not been setup so you cannot use globals. System clocks are not setup. */ + } + + if (BSP_WARM_START_POST_CLOCK == event) + { + /* C runtime environment has not been setup so you cannot use globals. Clocks have been initialized. */ + } + else if (BSP_WARM_START_POST_C == event) + { + /* C runtime environment, system clocks, and pins are all setup. */ + } + else + { + /* Do nothing */ + } +} + +/*******************************************************************************************************************//** + * Disable TRNG circuit to prevent unnecessary current draw which may otherwise occur when the Crypto module + * is not in use. + **********************************************************************************************************************/ +#if BSP_FEATURE_BSP_RESET_TRNG +static void bsp_reset_trng_circuit (void) +{ + volatile uint8_t read_port = 0U; + FSP_PARAMETER_NOT_USED(read_port); /// Prevent compiler 'unused' warning + + /* Release register protection for low power modes (per RA2A1 User's Manual (R01UH0888EJ0100) Figure 11.13 "Example + * of initial setting flow for an unused circuit") */ + R_BSP_RegisterProtectDisable(BSP_REG_PROTECT_OM_LPC_BATT); + + /* Enable TRNG function (disable stop function) */ + #if BSP_FEATURE_BSP_HAS_SCE_ON_RA2 + R_BSP_MODULE_START(FSP_IP_TRNG, 0); ///< TRNG Module Stop needs to be started/stopped for RA2 series. + #elif BSP_FEATURE_BSP_HAS_SCE5 + R_BSP_MODULE_START(FSP_IP_SCE, 0); ///< TRNG Module Stop needs to be started/stopped for RA4 series. + #else + #error "BSP_FEATURE_BSP_RESET_TRNG is defined but not handled." + #endif + + /* Wait for at least 3 PCLKB cycles */ + read_port = R_PFS->PORT[0].PIN[0].PmnPFS_b.PODR; + read_port = R_PFS->PORT[0].PIN[0].PmnPFS_b.PODR; + read_port = R_PFS->PORT[0].PIN[0].PmnPFS_b.PODR; + + /* Disable TRNG function */ + #if BSP_FEATURE_BSP_HAS_SCE_ON_RA2 + R_BSP_MODULE_STOP(FSP_IP_TRNG, 0); ///< TRNG Module Stop needs to be started/stopped for RA2 series. + #elif BSP_FEATURE_BSP_HAS_SCE5 + R_BSP_MODULE_STOP(FSP_IP_SCE, 0); ///< TRNG Module Stop needs to be started/stopped for RA4 series. + #else + #error "BSP_FEATURE_BSP_RESET_TRNG is defined but not handled." + #endif + + /* Reapply register protection for low power modes (per RA2A1 User's Manual (R01UH0888EJ0100) Figure 11.13 "Example + * of initial setting flow for an unused circuit") */ + R_BSP_RegisterProtectEnable(BSP_REG_PROTECT_OM_LPC_BATT); +} + +#endif + +#if BSP_CFG_EARLY_INIT + +/*******************************************************************************************************************//** + * Initialize BSP variables not handled by C runtime startup. + **********************************************************************************************************************/ +static void bsp_init_uninitialized_vars (void) +{ + g_protect_pfswe_counter = 0; + + extern volatile uint16_t g_protect_counters[]; + for (uint32_t i = 0; i < 4; i++) + { + g_protect_counters[i] = 0; + } + + extern bsp_grp_irq_cb_t g_bsp_group_irq_sources[]; + for (uint32_t i = 0; i < 16; i++) + { + g_bsp_group_irq_sources[i] = 0; + } + + #if BSP_CFG_EARLY_INIT + + /* Set SystemCoreClock to MOCO */ + SystemCoreClock = BSP_MOCO_HZ; + #endif +} + +#endif + +#if BSP_CFG_C_RUNTIME_INIT + + #if (BSP_FEATURE_BSP_HAS_ITCM || BSP_FEATURE_BSP_HAS_DTCM) + +/*******************************************************************************************************************//** + * 64-bit memory copy for Armv8.1-M using low overhead loop instructions. + * + * @param[in] destination copy destination start address, word aligned + * @param[in] source copy source start address, word aligned + * @param[in] count number of doublewords to copy + **********************************************************************************************************************/ +static void memcpy_64 (uint64_t * destination, const uint64_t * source, size_t count) +{ + uint64_t temp; + __asm volatile ( + "wls lr, %[count], memcpy_64_loop_end_%=\n" + #if (defined(__ARMCC_VERSION) || defined(__GNUC__)) + + /* Align the branch target to a 64-bit boundary, a CM85 specific optimization. */ + /* IAR does not support alignment control within inline assembly. */ + ".balign 8\n" + #endif + "memcpy_64_loop_start_%=:\n" + "ldrd %Q[temp], %R[temp], [%[source]], #+8\n" + "strd %Q[temp], %R[temp], [%[destination]], #+8\n" + "le lr, memcpy_64_loop_start_%=\n" + "memcpy_64_loop_end_%=:" + :[destination] "+&r" (destination), [source] "+&r" (source), [temp] "=r" (temp) + :[count] "r" (count) + : "lr", "memory" + ); + + /* Suppress IAR warning: "Error[Pe550]: variable "temp" was set but never used" */ + /* "temp" triggers this warning when it lacks an early-clobber modifier, which was removed to allow register reuse with "count". */ + (void) temp; +} + + #endif + + #if BSP_FEATURE_BSP_HAS_DTCM + +/*******************************************************************************************************************//** + * 64-bit memory set for Armv8.1-M using low overhead loop instructions. + * + * @param[in] destination set destination start address, word aligned + * @param[in] value value to set + * @param[in] count number of doublewords to set + **********************************************************************************************************************/ +static void memset_64 (uint64_t * destination, const uint64_t value, size_t count) +{ + __asm volatile ( + "wls lr, %[count], memset_64_loop_end_%=\n" + #if (defined(__ARMCC_VERSION) || defined(__GNUC__)) + + /* Align the branch target to a 64-bit boundary, a CM85 specific optimization. */ + /* IAR does not support alignment control within inline assembly. */ + ".balign 8\n" + #endif + "memset_64_loop_start_%=:\n" + "strd %Q[value], %R[value], [%[destination]], #+8\n" + "le lr, memset_64_loop_start_%=\n" + "memset_64_loop_end_%=:" + :[destination] "+&r" (destination) + :[count] "r" (count), [value] "r" (value) + : "lr", "memory" + ); +} + + #endif + +#endif + +#if BSP_CFG_C_RUNTIME_INIT + + #if BSP_FEATURE_BSP_HAS_ITCM + +/*******************************************************************************************************************//** + * Initialize ITCM RAM from ROM image. + **********************************************************************************************************************/ +static void bsp_init_itcm (void) +{ + uint64_t * itcm_destination; + const uint64_t * itcm_source; + size_t count; + + #if defined(__ARMCC_VERSION) + itcm_destination = (uint64_t *) &Image$$ITCM_DATA$$Base; + itcm_source = (uint64_t *) &Load$$ITCM_DATA$$Base; + count = ((uint32_t) &Load$$ITCM_PAD$$Limit - (uint32_t) &Load$$ITCM_DATA$$Base) / sizeof(uint64_t); + #elif defined(__GNUC__) + itcm_destination = (uint64_t *) &__itcm_data_start; + itcm_source = (uint64_t *) &__itcm_data_init_start; + count = ((uint32_t) &__itcm_data_init_end - (uint32_t) &__itcm_data_init_start) / sizeof(uint64_t); + #elif defined(__ICCARM__) + itcm_destination = (uint64_t *) &ITCM_DATA$$Base; + itcm_source = (uint64_t *) &ITCM_DATA_INIT$$Base; + count = ((uint32_t) &ITCM_DATA_INIT$$Limit - (uint32_t) &ITCM_DATA_INIT$$Base) / sizeof(uint64_t); + #endif + + memcpy_64(itcm_destination, itcm_source, count); +} + + #endif + + #if BSP_FEATURE_BSP_HAS_DTCM + +/*******************************************************************************************************************//** + * Initialize DTCM RAM from ROM image and zero initialize DTCM RAM BSS section. + **********************************************************************************************************************/ +static void bsp_init_dtcm (void) +{ + uint64_t * dtcm_destination; + const uint64_t * dtcm_source; + size_t count; + uint64_t * dtcm_zero_destination; + size_t count_zero; + + #if defined(__ARMCC_VERSION) + dtcm_destination = (uint64_t *) &Image$$DTCM_DATA$$Base; + dtcm_source = (uint64_t *) &Load$$DTCM_DATA$$Base; + count = ((uint32_t) &Load$$DTCM_PAD$$Limit - (uint32_t) &Load$$DTCM_DATA$$Base) / sizeof(uint64_t); + dtcm_zero_destination = (uint64_t *) &Image$$DTCM_BSS$$Base; + count_zero = ((uint32_t) &Image$$DTCM_BSS_PAD$$ZI$$Limit - (uint32_t) &Image$$DTCM_BSS$$Base) / + sizeof(uint64_t); + #elif defined(__GNUC__) + dtcm_destination = (uint64_t *) &__dtcm_data_start; + dtcm_source = (uint64_t *) &__dtcm_data_init_start; + count = ((uint32_t) &__dtcm_data_init_end - (uint32_t) &__dtcm_data_init_start) / sizeof(uint64_t); + dtcm_zero_destination = (uint64_t *) &__dtcm_bss_start; + count_zero = ((uint32_t) &__dtcm_bss_end - (uint32_t) &__dtcm_bss_start) / sizeof(uint64_t); + #elif defined(__ICCARM__) + dtcm_destination = (uint64_t *) &DTCM_DATA$$Base; + dtcm_source = (uint64_t *) &DTCM_DATA_INIT$$Base; + count = ((uint32_t) &DTCM_DATA_INIT$$Limit - (uint32_t) &DTCM_DATA_INIT$$Base) / sizeof(uint64_t); + dtcm_zero_destination = (uint64_t *) &DTCM_BSS$$Base; + count_zero = ((uint32_t) &DTCM_BSS$$Limit - (uint32_t) &DTCM_BSS$$Base) / sizeof(uint64_t); + #endif + + memcpy_64(dtcm_destination, dtcm_source, count); + memset_64(dtcm_zero_destination, 0, count_zero); +} + + #endif + +#endif + +#if BSP_CFG_DCACHE_ENABLED + +/*******************************************************************************************************************//** + * Initialize MPU for Armv8-M devices. + **********************************************************************************************************************/ +static void bsp_init_mpu (void) +{ + uint32_t nocache_start; + uint32_t nocache_end; + uint32_t nocache_sdram_start; + uint32_t nocache_sdram_end; + + #if defined(__ARMCC_VERSION) + nocache_start = (uint32_t) &Image$$NOCACHE$$ZI$$Base; + nocache_end = (uint32_t) &Image$$NOCACHE_PAD$$ZI$$Limit; + nocache_sdram_start = (uint32_t) &Image$$NOCACHE_SDRAM$$ZI$$Base; + nocache_sdram_end = (uint32_t) &Image$$NOCACHE_SDRAM_PAD$$ZI$$Limit; + #elif defined(__GNUC__) + nocache_start = (uint32_t) &__nocache_start; + nocache_end = (uint32_t) &__nocache_end; + nocache_sdram_start = (uint32_t) &__nocache_sdram_start; + nocache_sdram_end = (uint32_t) &__nocache_sdram_end; + #elif defined(__ICCARM__) + nocache_start = (uint32_t) &NOCACHE$$Base; + nocache_end = (uint32_t) &NOCACHE$$Limit; + nocache_sdram_start = (uint32_t) &NOCACHE_SDRAM$$Base; + nocache_sdram_end = (uint32_t) &NOCACHE_SDRAM$$Limit; + #endif + + /* Maximum of eight attributes. */ + const uint8_t bsp_mpu_mair_attributes[] = + { + /* Normal, Non-cacheable */ + ARM_MPU_ATTR(ARM_MPU_ATTR_NON_CACHEABLE, ARM_MPU_ATTR_NON_CACHEABLE) + }; + + /* Maximum of eight regions. */ + /* A region start address and end address must each be aligned to 32 bytes. A region must be a minimum of 32 bytes to be valid. */ + /* A region end address is inclusive. */ + const ARM_MPU_Region_t bsp_mpu_regions[] = + { + /* No-Cache Section */ + { + .RBAR = ARM_MPU_RBAR(nocache_start, ARM_MPU_SH_NON, 0U, 0U, 1U), + .RLAR = ARM_MPU_RLAR((nocache_end - ARMV8_MPU_REGION_MIN_SIZE), 0U) + }, + + /* SDRAM No-Cache Section */ + { + .RBAR = ARM_MPU_RBAR(nocache_sdram_start, ARM_MPU_SH_NON, 0U, 0U, 1U), + .RLAR = ARM_MPU_RLAR((nocache_sdram_end - ARMV8_MPU_REGION_MIN_SIZE), 0U) + } + }; + + /* Initialize MPU_MAIR0 and MPU_MAIR1 from attributes table. */ + uint8_t num_attr = (sizeof(bsp_mpu_mair_attributes) / sizeof(bsp_mpu_mair_attributes[0])); + for (uint8_t i = 0; i < num_attr; i++) + { + ARM_MPU_SetMemAttr(i, bsp_mpu_mair_attributes[i]); + } + + /* Initialize MPU from configuration table. */ + uint8_t num_regions = (sizeof(bsp_mpu_regions) / sizeof(bsp_mpu_regions[0])); + for (uint8_t i = 0; i < num_regions; i++) + { + uint32_t rbar = bsp_mpu_regions[i].RBAR; + uint32_t rlar = bsp_mpu_regions[i].RLAR; + + /* Only configure regions of non-zero size. */ + if ((((rlar & MPU_RLAR_LIMIT_Msk) >> MPU_RLAR_LIMIT_Pos) + ARMV8_MPU_REGION_MIN_SIZE) > + ((rbar & MPU_RBAR_BASE_Msk) >> MPU_RBAR_BASE_Pos)) + { + ARM_MPU_SetRegion(i, rbar, rlar); + } + } + + /* + * SHCSR.MEMFAULTENA is set inside ARM_MPU_Enable(). + * Leave SHPR1.PRI_4 at reset value of zero. + * Leave MPU_CTRL.HFNMIENA at reset value of zero. + * Provide MPU_CTRL_PRIVDEFENA_Msk to ARM_MPU_Enable() to set MPU_CTRL.PRIVDEFENA. + */ + ARM_MPU_Enable(MPU_CTRL_PRIVDEFENA_Msk); +} + +#endif + +/** @} (end addtogroup BSP_MCU) */ diff --git a/bsp/renesas/ra8m1-ek/ra/fsp/src/bsp/mcu/all/bsp_clocks.c b/bsp/renesas/ra8m1-ek/ra/fsp/src/bsp/mcu/all/bsp_clocks.c new file mode 100644 index 000000000000..ff9144daffd3 --- /dev/null +++ b/bsp/renesas/ra8m1-ek/ra/fsp/src/bsp/mcu/all/bsp_clocks.c @@ -0,0 +1,2513 @@ +/*********************************************************************************************************************** + * Copyright [2020-2023] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics America Inc. and may only be used with products + * of Renesas Electronics Corp. and its affiliates ("Renesas"). No other uses are authorized. Renesas products are + * sold pursuant to Renesas terms and conditions of sale. Purchasers are solely responsible for the selection and use + * of Renesas products and Renesas assumes no liability. No license, express or implied, to any intellectual property + * right is granted by Renesas. This software is protected under all applicable laws, including copyright laws. Renesas + * reserves the right to change or discontinue this software and/or this documentation. THE SOFTWARE AND DOCUMENTATION + * IS DELIVERED TO YOU "AS IS," AND RENESAS MAKES NO REPRESENTATIONS OR WARRANTIES, AND TO THE FULLEST EXTENT + * PERMISSIBLE UNDER APPLICABLE LAW, DISCLAIMS ALL WARRANTIES, WHETHER EXPLICITLY OR IMPLICITLY, INCLUDING WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT, WITH RESPECT TO THE SOFTWARE OR + * DOCUMENTATION. RENESAS SHALL HAVE NO LIABILITY ARISING OUT OF ANY SECURITY VULNERABILITY OR BREACH. TO THE MAXIMUM + * EXTENT PERMITTED BY LAW, IN NO EVENT WILL RENESAS BE LIABLE TO YOU IN CONNECTION WITH THE SOFTWARE OR DOCUMENTATION + * (OR ANY PERSON OR ENTITY CLAIMING RIGHTS DERIVED FROM YOU) FOR ANY LOSS, DAMAGES, OR CLAIMS WHATSOEVER, INCLUDING, + * WITHOUT LIMITATION, ANY DIRECT, CONSEQUENTIAL, SPECIAL, INDIRECT, PUNITIVE, OR INCIDENTAL DAMAGES; ANY LOST PROFITS, + * OTHER ECONOMIC DAMAGE, PROPERTY DAMAGE, OR PERSONAL INJURY; AND EVEN IF RENESAS HAS BEEN ADVISED OF THE POSSIBILITY + * OF SUCH LOSS, DAMAGES, CLAIMS OR COSTS. + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Includes , "Project Includes" + **********************************************************************************************************************/ +#include "bsp_clocks.h" + +#if BSP_TZ_NONSECURE_BUILD + #include "bsp_guard.h" +#endif + +/*********************************************************************************************************************** + * Macro definitions + **********************************************************************************************************************/ + +/* Key code for writing PRCR register. */ +#define BSP_PRV_PRCR_KEY (0xA500U) +#define BSP_PRV_PRCR_UNLOCK ((BSP_PRV_PRCR_KEY) | 0x3U) +#define BSP_PRV_PRCR_LOCK ((BSP_PRV_PRCR_KEY) | 0x0U) + +/* Wait state definitions for MEMWAIT. */ +#define BSP_PRV_MEMWAIT_ZERO_WAIT_CYCLES (0U) +#define BSP_PRV_MEMWAIT_TWO_WAIT_CYCLES (1U) +#define BSP_PRV_MEMWAIT_MAX_ZERO_WAIT_FREQ (32000000U) + +/* Wait state definitions for FLDWAITR. */ +#define BSP_PRV_FLDWAITR_ONE_WAIT_CYCLES (0U) +#define BSP_PRV_FLDWAITR_TWO_WAIT_CYCLES (1U) +#define BSP_PRV_FLDWAITR_MAX_ONE_WAIT_FREQ (32000000U) + +/* Temporary solution until R_FACI is added to renesas.h. */ +#define BSP_PRV_FLDWAITR_REG_ACCESS (*((volatile uint8_t *) (0x407EFFC4U))) + +/* Wait state definitions for MCUS with SRAMWTSC and FLWT. */ +#define BSP_PRV_SRAMWTSC_WAIT_CYCLES_DISABLE (0U) +#define BSP_PRV_ROM_ZERO_WAIT_CYCLES (0U) +#define BSP_PRV_ROM_ONE_WAIT_CYCLES (1U) +#define BSP_PRV_ROM_TWO_WAIT_CYCLES (2U) +#define BSP_PRV_ROM_THREE_WAIT_CYCLES (3U) +#define BSP_PRV_ROM_FOUR_WAIT_CYCLES (4U) +#define BSP_PRV_ROM_FIVE_WAIT_CYCLES (5U) +#define BSP_PRV_SRAM_UNLOCK (((BSP_FEATURE_CGC_SRAMPRCR_KW_VALUE) << \ + BSP_FEATURE_CGC_SRAMPRCR_KW_OFFSET) | 0x1U) +#define BSP_PRV_SRAM_LOCK (((BSP_FEATURE_CGC_SRAMPRCR_KW_VALUE) << \ + BSP_FEATURE_CGC_SRAMPRCR_KW_OFFSET) | 0x0U) + +/* Calculate value to write to MOMCR (MODRV controls main clock drive strength and MOSEL determines the source of the + * main oscillator). */ +#if BSP_FEATURE_CGC_MODRV_MASK + #define BSP_PRV_MODRV ((CGC_MAINCLOCK_DRIVE << BSP_FEATURE_CGC_MODRV_SHIFT) & \ + BSP_FEATURE_CGC_MODRV_MASK) +#else + #define BSP_PRV_MODRV (0x1AU) +#endif +#define BSP_PRV_MOSEL (BSP_CLOCK_CFG_MAIN_OSC_CLOCK_SOURCE << R_SYSTEM_MOMCR_MOSEL_Pos) +#define BSP_PRV_MOMCR (BSP_PRV_MODRV | BSP_PRV_MOSEL) + +/* Locations of bitfields used to configure CLKOUT. */ +#define BSP_PRV_CKOCR_CKODIV_BIT (4U) +#define BSP_PRV_CKOCR_CKOEN_BIT (7U) + +/* Stop interval of at least 5 SOSC clock cycles between stop and restart of SOSC. + * Calculated based on 8Mhz of MOCO clock. */ +#define BSP_PRV_SUBCLOCK_STOP_INTERVAL_US (200U) + +/* Locations of bitfields used to configure Peripheral Clocks. */ +#define BSP_PRV_PERIPHERAL_CLK_REQ_BIT_POS (6U) +#define BSP_PRV_PERIPHERAL_CLK_REQ_BIT_MASK (1U << BSP_PRV_PERIPHERAL_CLK_REQ_BIT_POS) +#define BSP_PRV_PERIPHERAL_CLK_RDY_BIT_POS (7U) +#define BSP_PRV_PERIPHERAL_CLK_RDY_BIT_MASK (1U << BSP_PRV_PERIPHERAL_CLK_RDY_BIT_POS) + +#ifdef BSP_CFG_UCK_DIV + +/* If the MCU has SCKDIVCR2 for USBCK configuration. */ + #if !BSP_FEATURE_BSP_HAS_USBCKDIVCR + +/* Location of bitfield used to configure USB clock divider. */ + #define BSP_PRV_SCKDIVCR2_UCK_BIT (4U) + #define BSP_PRV_UCK_DIV (BSP_CFG_UCK_DIV) + +/* If the MCU has USBCKDIVCR. */ + #elif BSP_FEATURE_BSP_HAS_USBCKDIVCR + #if BSP_CLOCKS_USB_CLOCK_DIV_1 == BSP_CFG_UCK_DIV + #define BSP_PRV_UCK_DIV (0U) + #elif BSP_CLOCKS_USB_CLOCK_DIV_2 == BSP_CFG_UCK_DIV + #define BSP_PRV_UCK_DIV (1U) + #elif BSP_CLOCKS_USB_CLOCK_DIV_3 == BSP_CFG_UCK_DIV + #define BSP_PRV_UCK_DIV (5U) + #elif BSP_CLOCKS_USB_CLOCK_DIV_4 == BSP_CFG_UCK_DIV + #define BSP_PRV_UCK_DIV (2U) + #elif BSP_CLOCKS_USB_CLOCK_DIV_5 == BSP_CFG_UCK_DIV + #define BSP_PRV_UCK_DIV (6U) + #elif BSP_CLOCKS_USB_CLOCK_DIV_6 == BSP_CFG_UCK_DIV + #define BSP_PRV_UCK_DIV (3U) + #elif BSP_CLOCKS_USB_CLOCK_DIV_8 == BSP_CFG_UCK_DIV + #define BSP_PRV_UCK_DIV (4U) + #else + + #error "BSP_CFG_UCK_DIV not supported." + + #endif + #endif +#endif +#if BSP_FEATURE_BSP_HAS_USB60_CLOCK_REQ + #define BSP_CLOCKS_USB60_CLOCK_DIV_1 (0) // Divide USB source clock by 1 + #define BSP_CLOCKS_USB60_CLOCK_DIV_2 (1) // Divide USB source clock by 2 + #define BSP_CLOCKS_USB60_CLOCK_DIV_3 (5) // Divide USB source clock by 3 + #define BSP_CLOCKS_USB60_CLOCK_DIV_4 (2) // Divide USB source clock by 4 + #define BSP_CLOCKS_USB60_CLOCK_DIV_5 (6) // Divide USB source clock by 5 + #define BSP_CLOCKS_USB60_CLOCK_DIV_6 (3) // Divide USB source clock by 6 + #define BSP_CLOCKS_USB60_CLOCK_DIV_8 (4) // Divide USB source clock by 8 +#endif /* BSP_FEATURE_BSP_HAS_USB60_CLOCK_REQ*/ +/* Choose the value to write to FLLCR2 (if applicable). */ +#if BSP_PRV_HOCO_USE_FLL + #if 1U == BSP_CFG_HOCO_FREQUENCY + #define BSP_PRV_FLL_FLLCR2 (0x226U) + #elif 2U == BSP_CFG_HOCO_FREQUENCY + #define BSP_PRV_FLL_FLLCR2 (0x263U) + #elif 4U == BSP_CFG_HOCO_FREQUENCY + #define BSP_PRV_FLL_FLLCR2 (0x263U) + #else + +/* When BSP_CFG_HOCO_FREQUENCY is 0, 4, 7 */ + #define BSP_PRV_FLL_FLLCR2 (0x1E9U) + #endif +#endif + +/* Calculate the value to write to SCKDIVCR. */ +#define BSP_PRV_STARTUP_SCKDIVCR_ICLK_BITS ((BSP_CFG_ICLK_DIV & 0xFU) << 24U) +#if BSP_FEATURE_CGC_HAS_PCLKE + #define BSP_PRV_STARTUP_SCKDIVCR_PCLKE_BITS ((BSP_CFG_PCLKE_DIV & 0xFU) << 20U) +#else + #define BSP_PRV_STARTUP_SCKDIVCR_PCLKE_BITS (0U) +#endif +#if BSP_FEATURE_CGC_HAS_PCLKD + #define BSP_PRV_STARTUP_SCKDIVCR_PCLKD_BITS (BSP_CFG_PCLKD_DIV & 0xFU) +#else + #define BSP_PRV_STARTUP_SCKDIVCR_PCLKD_BITS (0U) +#endif +#if BSP_FEATURE_CGC_HAS_PCLKC + #define BSP_PRV_STARTUP_SCKDIVCR_PCLKC_BITS ((BSP_CFG_PCLKC_DIV & 0xFU) << 4U) +#else + #define BSP_PRV_STARTUP_SCKDIVCR_PCLKC_BITS (0U) +#endif +#if BSP_FEATURE_CGC_HAS_PCLKB + #define BSP_PRV_STARTUP_SCKDIVCR_PCLKB_BITS ((BSP_CFG_PCLKB_DIV & 0xFU) << 8U) +#else + #define BSP_PRV_STARTUP_SCKDIVCR_PCLKB_BITS (0U) +#endif +#if BSP_FEATURE_CGC_HAS_PCLKA + #define BSP_PRV_STARTUP_SCKDIVCR_PCLKA_BITS ((BSP_CFG_PCLKA_DIV & 0xFU) << 12U) +#else + #define BSP_PRV_STARTUP_SCKDIVCR_PCLKA_BITS (0U) +#endif +#if BSP_FEATURE_CGC_HAS_BCLK + #define BSP_PRV_STARTUP_SCKDIVCR_BCLK_BITS ((BSP_CFG_BCLK_DIV & 0xFU) << 16U) +#elif BSP_FEATURE_CGC_SCKDIVCR_BCLK_MATCHES_PCLKB + +/* Some MCUs have a requirement that bits 18-16 be set to the same value as the bits for configuring the PCLKB divisor. */ + #define BSP_PRV_STARTUP_SCKDIVCR_BCLK_BITS ((BSP_CFG_PCLKB_DIV & 0xFU) << 16U) +#else + #define BSP_PRV_STARTUP_SCKDIVCR_BCLK_BITS (0U) +#endif +#if BSP_FEATURE_CGC_HAS_FCLK + #define BSP_PRV_STARTUP_SCKDIVCR_FCLK_BITS ((BSP_CFG_FCLK_DIV & 0xFU) << 28U) +#else + #define BSP_PRV_STARTUP_SCKDIVCR_FCLK_BITS (0U) +#endif +#define BSP_PRV_STARTUP_SCKDIVCR (BSP_PRV_STARTUP_SCKDIVCR_ICLK_BITS | \ + BSP_PRV_STARTUP_SCKDIVCR_PCLKE_BITS | \ + BSP_PRV_STARTUP_SCKDIVCR_PCLKD_BITS | \ + BSP_PRV_STARTUP_SCKDIVCR_PCLKC_BITS | \ + BSP_PRV_STARTUP_SCKDIVCR_PCLKB_BITS | \ + BSP_PRV_STARTUP_SCKDIVCR_PCLKA_BITS | \ + BSP_PRV_STARTUP_SCKDIVCR_BCLK_BITS | \ + BSP_PRV_STARTUP_SCKDIVCR_FCLK_BITS) +#if BSP_FEATURE_CGC_HAS_CPUCLK + #define BSP_PRV_STARTUP_SCKDIVCR2_CPUCK_BITS (BSP_CFG_CPUCLK_DIV & 0xFU) + #define BSP_PRV_STARTUP_SCKDIVCR2 (BSP_PRV_STARTUP_SCKDIVCR2_CPUCK_BITS) +#endif + +/* The number of clocks is used to size the g_clock_freq array. */ +#if BSP_PRV_PLL2_SUPPORTED + #if 0 != BSP_FEATURE_NUM_PLL2_OUTPUT_CLOCKS + #define BSP_PRV_NUM_CLOCKS ((uint8_t) BSP_CLOCKS_SOURCE_CLOCK_PLL2 + (BSP_FEATURE_NUM_PLL1_OUTPUT_CLOCKS - 1) + \ + BSP_FEATURE_NUM_PLL2_OUTPUT_CLOCKS) + #else + #define BSP_PRV_NUM_CLOCKS ((uint8_t) BSP_CLOCKS_SOURCE_CLOCK_PLL2 + 1U) + #endif +#elif BSP_PRV_PLL_SUPPORTED + #if 0 != BSP_FEATURE_NUM_PLL1_OUTPUT_CLOCKS + +/* Removed offset of 1 since the BSP_CLOCKS_SOURCE_CLOCK_PLL will be reused for BSP_CLOCKS_SOURCE_CLOCK_PLL1P which is included in BSP_FEATURE_NUM_PLL1_OUTPUT_CLOCKS count. */ + #define BSP_PRV_NUM_CLOCKS ((uint8_t) BSP_CLOCKS_SOURCE_CLOCK_PLL + BSP_FEATURE_NUM_PLL1_OUTPUT_CLOCKS) + #else + #define BSP_PRV_NUM_CLOCKS ((uint8_t) BSP_CLOCKS_SOURCE_CLOCK_PLL + 1U) + #endif +#else + #define BSP_PRV_NUM_CLOCKS ((uint8_t) BSP_CLOCKS_SOURCE_CLOCK_SUBCLOCK + 1U) +#endif + +/* Calculate PLLCCR value. */ +#if BSP_PRV_PLL_SUPPORTED + #if (1U == BSP_FEATURE_CGC_PLLCCR_TYPE) + #if BSP_CLOCKS_SOURCE_CLOCK_MAIN_OSC == BSP_CFG_PLL_SOURCE + #define BSP_PRV_PLSRCSEL (0) + #define BSP_PRV_PLL_USED (1) + #elif BSP_CLOCKS_SOURCE_CLOCK_HOCO == BSP_CFG_PLL_SOURCE + #define BSP_PRV_PLSRCSEL (1) + #define BSP_PRV_PLL_USED (1) + #else + #define BSP_PRV_PLL_USED (0) + #endif + #define BSP_PRV_PLLCCR_PLLMUL_MASK (0x3F) // PLLMUL in PLLCCR is 6 bits wide + #define BSP_PRV_PLLCCR_PLLMUL_BIT (8) // PLLMUL in PLLCCR starts at bit 8 + #define BSP_PRV_PLLCCR_PLSRCSEL_BIT (4) // PLSRCSEL in PLLCCR starts at bit 4 + #define BSP_PRV_PLLCCR ((((BSP_CFG_PLL_MUL & BSP_PRV_PLLCCR_PLLMUL_MASK) << \ + BSP_PRV_PLLCCR_PLLMUL_BIT) | \ + (BSP_PRV_PLSRCSEL << BSP_PRV_PLLCCR_PLSRCSEL_BIT)) | \ + BSP_CFG_PLL_DIV) + #endif + #if (2U == BSP_FEATURE_CGC_PLLCCR_TYPE) + #if BSP_CLOCKS_SOURCE_CLOCK_MAIN_OSC == BSP_CFG_PLL_SOURCE + #define BSP_PRV_PLSRCSEL (0) + #define BSP_PRV_PLL_USED (1) + #else + #define BSP_PRV_PLL_USED (0) + #endif + #define BSP_PRV_PLLCCR2_PLLMUL_MASK (0x1F) // PLLMUL in PLLCCR2 is 5 bits wide + #define BSP_PRV_PLLCCR2_PLODIV_BIT (6) // PLODIV in PLLCCR2 starts at bit 6 + + #define BSP_PRV_PLLCCR2_PLLMUL (BSP_CFG_PLL_MUL >> 1) + #define BSP_PRV_PLLCCR ((BSP_PRV_PLLCCR2_PLLMUL & BSP_PRV_PLLCCR2_PLLMUL_MASK) | \ + (BSP_CFG_PLL_DIV << BSP_PRV_PLLCCR2_PLODIV_BIT)) + #endif + #if (3U == BSP_FEATURE_CGC_PLLCCR_TYPE) + #if BSP_CLOCKS_SOURCE_CLOCK_MAIN_OSC == BSP_CFG_PLL_SOURCE + #define BSP_PRV_PLSRCSEL (0) + #define BSP_PRV_PLL_USED (1) + #elif BSP_CLOCKS_SOURCE_CLOCK_HOCO == BSP_CFG_PLL_SOURCE + #define BSP_PRV_PLSRCSEL (1) + #define BSP_PRV_PLL_USED (1) + #else + #define BSP_PRV_PLL_USED (0) + #endif + + #define BSP_PRV_PLL_MUL_CFG_MACRO_PLLMUL_MASK (0x3FFU) + #define BSP_PRV_PLLCCR_PLLMULNF_BIT (6) // PLLMULNF in PLLCCR starts at bit 6 + #define BSP_PRV_PLLCCR_PLSRCSEL_BIT (4) // PLSRCSEL in PLLCCR starts at bit 4 + #define BSP_PRV_PLLCCR ((((BSP_CFG_PLL_MUL & BSP_PRV_PLL_MUL_CFG_MACRO_PLLMUL_MASK) << \ + BSP_PRV_PLLCCR_PLLMULNF_BIT) | \ + (BSP_PRV_PLSRCSEL << BSP_PRV_PLLCCR_PLSRCSEL_BIT)) | \ + BSP_CFG_PLL_DIV) + #define BSP_PRV_PLLCCR2_PLL_DIV_MASK (0x0F) // PLL DIV in PLLCCR2/PLL2CCR2 is 4 bits wide + #define BSP_PRV_PLLCCR2_PLL_DIV_Q_BIT (4) // PLL DIV Q in PLLCCR2/PLL2CCR2 starts at bit 4 + #define BSP_PRV_PLLCCR2_PLL_DIV_R_BIT (8) // PLL DIV R in PLLCCR2/PLL2CCR2 starts at bit 8 + #define BSP_PRV_PLLCCR2 (((BSP_CFG_PLODIVR & BSP_PRV_PLLCCR2_PLL_DIV_MASK) << \ + BSP_PRV_PLLCCR2_PLL_DIV_R_BIT) | \ + ((BSP_CFG_PLODIVQ & BSP_PRV_PLLCCR2_PLL_DIV_MASK) << \ + BSP_PRV_PLLCCR2_PLL_DIV_Q_BIT) | \ + (BSP_CFG_PLODIVP & BSP_PRV_PLLCCR2_PLL_DIV_MASK)) + #endif + #if (4U == BSP_FEATURE_CGC_PLLCCR_TYPE) + #if BSP_CLOCKS_SOURCE_CLOCK_SUBCLOCK == BSP_CFG_PLL_SOURCE + #define BSP_PRV_PLL_USED (1) + #else + #define BSP_PRV_PLL_USED (0) + #endif + + #define BSP_PRV_PLLCCR_PLLMUL_MASK (0xFFU) // PLLMUL is 8 bits wide + #define BSP_PRV_PLLCCR_PLLMUL_BIT (8) // PLLMUL starts at bit 8 + #define BSP_PRV_PLLCCR_RESET (0x0004U) // Bit 2 must be written as 1 + #define BSP_PRV_PLLCCR (((BSP_CFG_PLL_MUL & BSP_PRV_PLLCCR_PLLMUL_MASK) << \ + BSP_PRV_PLLCCR_PLLMUL_BIT) | \ + BSP_PRV_PLLCCR_RESET) + #endif +#endif + +#if BSP_FEATURE_CGC_HAS_PLL2 + #if BSP_CLOCKS_SOURCE_CLOCK_MAIN_OSC == BSP_CFG_PLL2_SOURCE + #define BSP_PRV_PL2SRCSEL (0) + #define BSP_PRV_PLL2_USED (1) + #elif BSP_CLOCKS_SOURCE_CLOCK_HOCO == BSP_CFG_PLL2_SOURCE + #define BSP_PRV_PL2SRCSEL (1) + #define BSP_PRV_PLL2_USED (1) + #else + #define BSP_PRV_PLL2_USED (0) + #endif + + #if (3U == BSP_FEATURE_CGC_PLLCCR_TYPE) + #define BSP_PRV_PLL2_MUL_CFG_MACRO_PLLMUL_MASK (0x3FF) + #define BSP_PRV_PLL2_MUL_CFG_MACRO_PLLMULNF_MASK (0x003U) + #define BSP_PRV_PLL2CCR_PLLMULNF_BIT (6) // PLLMULNF in PLLCCR starts at bit 6 + #define BSP_PRV_PLL2CCR_PLSRCSEL_BIT (4) // PLSRCSEL in PLLCCR starts at bit 4 + #define BSP_PRV_PLL2CCR ((((BSP_CFG_PLL2_MUL & BSP_PRV_PLL2_MUL_CFG_MACRO_PLLMUL_MASK) << \ + BSP_PRV_PLL2CCR_PLLMULNF_BIT) | \ + (BSP_PRV_PL2SRCSEL << BSP_PRV_PLL2CCR_PLSRCSEL_BIT)) | \ + BSP_CFG_PLL2_DIV) + #define BSP_PRV_PLL2CCR2_PLL_DIV_MASK (0x0F) // PLL DIV in PLL2CCR2 is 4 bits wide + #define BSP_PRV_PLL2CCR2_PLL_DIV_Q_BIT (4) // PLL DIV Q in PLL2CCR2 starts at bit 4 + #define BSP_PRV_PLL2CCR2_PLL_DIV_R_BIT (8) // PLL DIV R in PLL2CCR2 starts at bit 8 + #define BSP_PRV_PLL2CCR2 (((BSP_CFG_PL2ODIVR & BSP_PRV_PLL2CCR2_PLL_DIV_MASK) << \ + BSP_PRV_PLL2CCR2_PLL_DIV_R_BIT) | \ + ((BSP_CFG_PL2ODIVQ & BSP_PRV_PLL2CCR2_PLL_DIV_MASK) << \ + BSP_PRV_PLL2CCR2_PLL_DIV_Q_BIT) | \ + (BSP_CFG_PL2ODIVP & BSP_PRV_PLL2CCR2_PLL_DIV_MASK)) + #else + #define BSP_PRV_PLL2CCR ((BSP_CFG_PLL2_MUL << R_SYSTEM_PLL2CCR_PLL2MUL_Pos) | \ + (BSP_CFG_PLL2_DIV << R_SYSTEM_PLL2CCR_PL2IDIV_Pos) | \ + (BSP_PRV_PL2SRCSEL << R_SYSTEM_PLL2CCR_PL2SRCSEL_Pos)) + #endif +#endif + +/* All clocks with configurable source except PLL and CLKOUT can use PLL. */ +#if (BSP_CFG_CLOCK_SOURCE == BSP_CLOCKS_SOURCE_CLOCK_PLL) + #define BSP_PRV_STABILIZE_PLL (1) +#endif + +/* All clocks with configurable source can use the main oscillator. */ +#if (BSP_CFG_CLOCK_SOURCE == BSP_CLOCKS_SOURCE_CLOCK_MAIN_OSC) + #define BSP_PRV_MAIN_OSC_USED (1) + #define BSP_PRV_STABILIZE_MAIN_OSC (1) +#elif defined(BSP_CFG_UCK_SOURCE) && BSP_FEATURE_BSP_HAS_USB_CLOCK_REQ && \ + (BSP_CFG_UCK_SOURCE == BSP_CLOCKS_SOURCE_CLOCK_MAIN_OSC) + #define BSP_PRV_MAIN_OSC_USED (1) +#elif defined(BSP_CFG_CANFDCLK_SOURCE) && (BSP_CFG_CANFDCLK_SOURCE == BSP_CLOCKS_SOURCE_CLOCK_MAIN_OSC) + #define BSP_PRV_MAIN_OSC_USED (1) +#elif defined(BSP_CFG_PLL_SOURCE) && (BSP_CFG_PLL_SOURCE == BSP_CLOCKS_SOURCE_CLOCK_MAIN_OSC) && BSP_PRV_PLL_USED + #define BSP_PRV_MAIN_OSC_USED (1) + #define BSP_PRV_STABILIZE_MAIN_OSC (1) +#elif defined(BSP_CFG_PLL2_SOURCE) && (BSP_CFG_PLL2_SOURCE == BSP_CLOCKS_SOURCE_CLOCK_MAIN_OSC) && BSP_PRV_PLL2_USED + #define BSP_PRV_MAIN_OSC_USED (1) + #define BSP_PRV_STABILIZE_MAIN_OSC (1) +#elif defined(BSP_CFG_CLKOUT_SOURCE) && (BSP_CFG_CLKOUT_SOURCE == BSP_CLOCKS_SOURCE_CLOCK_MAIN_OSC) + #define BSP_PRV_MAIN_OSC_USED (1) +#elif defined(BSP_CFG_SCISPICLK_SOURCE) && (BSP_CFG_SCISPICLK_SOURCE == BSP_CLOCKS_SOURCE_CLOCK_MAIN_OSC) + #define BSP_PRV_MAIN_OSC_USED (1) +#elif defined(BSP_CFG_SPICLK_SOURCE) && (BSP_CFG_SPICLK_SOURCE == BSP_CLOCKS_SOURCE_CLOCK_MAIN_OSC) + #define BSP_PRV_MAIN_OSC_USED (1) +#elif defined(BSP_CFG_SCICLK_SOURCE) && (BSP_CFG_SCICLK_SOURCE == BSP_CLOCKS_SOURCE_CLOCK_MAIN_OSC) + #define BSP_PRV_MAIN_OSC_USED (1) +#elif defined(BSP_CFG_CANFDCLK_SOURCE) && (BSP_CFG_CANFDCLK_SOURCE == BSP_CLOCKS_SOURCE_CLOCK_MAIN_OSC) + #define BSP_PRV_MAIN_OSC_USED (1) +#elif defined(BSP_CFG_GPTCLK_SOURCE) && (BSP_CFG_GPTCLK_SOURCE == BSP_CLOCKS_SOURCE_CLOCK_MAIN_OSC) + #define BSP_PRV_MAIN_OSC_USED (1) +#elif defined(BSP_CFG_IICCLK_SOURCE) && (BSP_CFG_IICCLK_SOURCE == BSP_CLOCKS_SOURCE_CLOCK_MAIN_OSC) + #define BSP_PRV_MAIN_OSC_USED (1) +#elif defined(BSP_CFG_CECCLK_SOURCE) && (BSP_CFG_CECCLK_SOURCE == BSP_CLOCKS_SOURCE_CLOCK_MAIN_OSC) + #define BSP_PRV_MAIN_OSC_USED (1) +#elif defined(BSP_CFG_I3CCLK_SOURCE) && (BSP_CFG_I3CCLK_SOURCE == BSP_CLOCKS_SOURCE_CLOCK_MAIN_OSC) + #define BSP_PRV_MAIN_OSC_USED (1) +#elif defined(BSP_CFG_LCDCLK_SOURCE) && (BSP_CFG_LCDCLK_SOURCE == BSP_CLOCKS_SOURCE_CLOCK_MAIN_OSC) + #define BSP_PRV_MAIN_OSC_USED (1) +#elif defined(BSP_CFG_U60CLK_SOURCE) && (BSP_CFG_U60CLK_SOURCE == BSP_CLOCKS_SOURCE_CLOCK_MAIN_OSC) + #define BSP_PRV_MAIN_OSC_USED (1) +#elif defined(BSP_CFG_OCTA_SOURCE) && (BSP_CFG_OCTA_SOURCE == BSP_CLOCKS_SOURCE_CLOCK_MAIN_OSC) + #define BSP_PRV_MAIN_OSC_USED (1) +#elif defined(BSP_CFG_SDADC_CLOCK_SOURCE) && (BSP_CFG_SDADC_CLOCK_SOURCE == BSP_CLOCKS_SOURCE_CLOCK_MAIN_OSC) + #define BSP_PRV_MAIN_OSC_USED (1) +#else + #define BSP_PRV_MAIN_OSC_USED (0) +#endif + +/* All clocks with configurable source can use HOCO except the CECCLK and I3CCLK. */ +#if (BSP_CFG_CLOCK_SOURCE == BSP_CLOCKS_SOURCE_CLOCK_HOCO) + #define BSP_PRV_HOCO_USED (1) + #define BSP_PRV_STABILIZE_HOCO (1) +#elif defined(BSP_CFG_PLL_SOURCE) && (BSP_CFG_PLL_SOURCE == BSP_CLOCKS_SOURCE_CLOCK_HOCO) && BSP_PRV_PLL_USED + #define BSP_PRV_HOCO_USED (1) + #define BSP_PRV_STABILIZE_HOCO (1) +#elif defined(BSP_CFG_PLL2_SOURCE) && (BSP_CFG_PLL2_SOURCE == BSP_CLOCKS_SOURCE_CLOCK_HOCO) && BSP_PRV_PLL2_USED + #define BSP_PRV_HOCO_USED (1) + #define BSP_PRV_STABILIZE_HOCO (1) +#elif defined(BSP_CFG_UCK_SOURCE) && BSP_FEATURE_BSP_HAS_USB_CLOCK_REQ && \ + (BSP_CFG_UCK_SOURCE == BSP_CLOCKS_SOURCE_CLOCK_HOCO) + #define BSP_PRV_HOCO_USED (1) +#elif defined(BSP_CFG_CLKOUT_SOURCE) && (BSP_CFG_CLKOUT_SOURCE == BSP_CLOCKS_SOURCE_CLOCK_HOCO) + #define BSP_PRV_HOCO_USED (1) +#elif defined(BSP_CFG_SCISPICLK_SOURCE) && (BSP_CFG_SCISPICLK_SOURCE == BSP_CLOCKS_SOURCE_CLOCK_HOCO) + #define BSP_PRV_HOCO_USED (1) +#elif defined(BSP_CFG_SPICLK_SOURCE) && (BSP_CFG_SPICLK_SOURCE == BSP_CLOCKS_SOURCE_CLOCK_HOCO) + #define BSP_PRV_HOCO_USED (1) +#elif defined(BSP_CFG_SCICLK_SOURCE) && (BSP_CFG_SCICLK_SOURCE == BSP_CLOCKS_SOURCE_CLOCK_HOCO) + #define BSP_PRV_HOCO_USED (1) +#elif defined(BSP_CFG_CANFDCLK_SOURCE) && (BSP_CFG_CANFDCLK_SOURCE == BSP_CLOCKS_SOURCE_CLOCK_HOCO) + #define BSP_PRV_HOCO_USED (1) +#elif defined(BSP_CFG_GPTCLK_SOURCE) && (BSP_CFG_GPTCLK_SOURCE == BSP_CLOCKS_SOURCE_CLOCK_HOCO) + #define BSP_PRV_HOCO_USED (1) +#elif defined(BSP_CFG_IICCLK_SOURCE) && (BSP_CFG_IICCLK_SOURCE == BSP_CLOCKS_SOURCE_CLOCK_HOCO) + #define BSP_PRV_HOCO_USED (1) +#elif defined(BSP_CFG_LCDCLK_SOURCE) && (BSP_CFG_LCDCLK_SOURCE == BSP_CLOCKS_SOURCE_CLOCK_HOCO) + #define BSP_PRV_HOCO_USED (1) +#elif defined(BSP_CFG_U60CLK_SOURCE) && (BSP_CFG_U60CLK_SOURCE == BSP_CLOCKS_SOURCE_CLOCK_HOCO) + #define BSP_PRV_HOCO_USED (1) +#elif defined(BSP_CFG_OCTA_SOURCE) && (BSP_CFG_OCTA_SOURCE == BSP_CLOCKS_SOURCE_CLOCK_HOCO) + #define BSP_PRV_HOCO_USED (1) +#elif defined(BSP_CFG_SDADC_CLOCK_SOURCE) && (BSP_CFG_SDADC_CLOCK_SOURCE == BSP_CLOCKS_SOURCE_HOCO) + #define BSP_PRV_HOCO_USED (1) +#else + #define BSP_PRV_HOCO_USED (0) +#endif + +/* All clocks with configurable source except PLL can use MOCO. */ +#if (BSP_CFG_CLOCK_SOURCE == BSP_CLOCKS_SOURCE_CLOCK_MOCO) + #define BSP_PRV_MOCO_USED (1) + #define BSP_PRV_STABILIZE_MOCO (1) +#elif defined(BSP_CFG_CLKOUT_SOURCE) && (BSP_CFG_CLKOUT_SOURCE == BSP_CLOCKS_SOURCE_CLOCK_MOCO) + #define BSP_PRV_MOCO_USED (1) +#elif defined(BSP_CFG_UCK_SOURCE) && BSP_FEATURE_BSP_HAS_USB_CLOCK_REQ && \ + (BSP_CFG_UCK_SOURCE == BSP_CLOCKS_SOURCE_CLOCK_MOCO) + #define BSP_PRV_MOCO_USED (1) +#elif defined(BSP_CFG_SCISPICLK_SOURCE) && (BSP_CFG_SCISPICLK_SOURCE == BSP_CLOCKS_SOURCE_CLOCK_MOCO) + #define BSP_PRV_MOCO_USED (1) +#elif defined(BSP_CFG_SPICLK_SOURCE) && (BSP_CFG_SPICLK_SOURCE == BSP_CLOCKS_SOURCE_CLOCK_MOCO) + #define BSP_PRV_MOCO_USED (1) +#elif defined(BSP_CFG_SCICLK_SOURCE) && (BSP_CFG_SCICLK_SOURCE == BSP_CLOCKS_SOURCE_CLOCK_MOCO) + #define BSP_PRV_MOCO_USED (1) +#elif defined(BSP_CFG_CANFDCLK_SOURCE) && (BSP_CFG_CANFDCLK_SOURCE == BSP_CLOCKS_SOURCE_CLOCK_MOCO) + #define BSP_PRV_MOCO_USED (1) +#elif defined(BSP_CFG_GPTCLK_SOURCE) && (BSP_CFG_GPTCLK_SOURCE == BSP_CLOCKS_SOURCE_CLOCK_MOCO) + #define BSP_PRV_MOCO_USED (1) +#elif defined(BSP_CFG_IICCLK_SOURCE) && (BSP_CFG_IICCLK_SOURCE == BSP_CLOCKS_SOURCE_CLOCK_MOCO) + #define BSP_PRV_MOCO_USED (1) +#elif defined(BSP_CFG_I3CCLK_SOURCE) && (BSP_CFG_I3CCLK_SOURCE == BSP_CLOCKS_SOURCE_CLOCK_MOCO) + #define BSP_PRV_MOCO_USED (1) +#elif defined(BSP_CFG_LCDCLK_SOURCE) && (BSP_CFG_LCDCLK_SOURCE == BSP_CLOCKS_SOURCE_CLOCK_MOCO) + #define BSP_PRV_MOCO_USED (1) +#elif defined(BSP_CFG_U60CLK_SOURCE) && (BSP_CFG_U60CLK_SOURCE == BSP_CLOCKS_SOURCE_CLOCK_MOCO) + #define BSP_PRV_MOCO_USED (1) +#elif defined(BSP_CFG_OCTA_SOURCE) && (BSP_CFG_OCTA_SOURCE == BSP_CLOCKS_SOURCE_CLOCK_MOCO) + #define BSP_PRV_MOCO_USED (1) +#else + #define BSP_PRV_MOCO_USED (0) +#endif + +/* All clocks with configurable source except UCK, CANFD, LCDCLK, USBHSCLK, I3CCLK and PLL can use LOCO. */ +#if (BSP_CFG_CLOCK_SOURCE == BSP_CLOCKS_SOURCE_CLOCK_LOCO) + #define BSP_PRV_LOCO_USED (1) + #define BSP_PRV_STABILIZE_LOCO (1) +#elif defined(BSP_CFG_CLKOUT_SOURCE) && (BSP_CFG_CLKOUT_SOURCE == BSP_CLOCKS_SOURCE_CLOCK_LOCO) + #define BSP_PRV_LOCO_USED (1) +#elif defined(BSP_CFG_SCISPICLK_SOURCE) && (BSP_CFG_SCISPICLK_SOURCE == BSP_CLOCKS_SOURCE_CLOCK_LOCO) + #define BSP_PRV_LOCO_USED (1) +#elif defined(BSP_CFG_SPICLK_SOURCE) && (BSP_CFG_SPICLK_SOURCE == BSP_CLOCKS_SOURCE_CLOCK_LOCO) + #define BSP_PRV_LOCO_USED (1) +#elif defined(BSP_CFG_SCICLK_SOURCE) && (BSP_CFG_SCICLK_SOURCE == BSP_CLOCKS_SOURCE_CLOCK_LOCO) + #define BSP_PRV_LOCO_USED (1) +#elif defined(BSP_CFG_CANFDCLK_SOURCE) && (BSP_CFG_CANFDCLK_SOURCE == BSP_CLOCKS_SOURCE_CLOCK_LOCO) + #define BSP_PRV_LOCO_USED (1) +#elif defined(BSP_CFG_GPTCLK_SOURCE) && (BSP_CFG_GPTCLK_SOURCE == BSP_CLOCKS_SOURCE_CLOCK_LOCO) + #define BSP_PRV_LOCO_USED (1) +#elif defined(BSP_CFG_IICCLK_SOURCE) && (BSP_CFG_IICCLK_SOURCE == BSP_CLOCKS_SOURCE_CLOCK_LOCO) + #define BSP_PRV_LOCO_USED (1) +#elif defined(BSP_CFG_OCTA_SOURCE) && (BSP_CFG_OCTA_SOURCE == BSP_CLOCKS_SOURCE_CLOCK_LOCO) + #define BSP_PRV_LOCO_USED (1) +#else + #define BSP_PRV_LOCO_USED (0) +#endif + +/* Determine the optimal operating speed mode to apply after clock configuration based on the startup clock + * frequency. */ +#if BSP_STARTUP_ICLK_HZ <= BSP_FEATURE_CGC_LOW_SPEED_MAX_FREQ_HZ && \ + !BSP_PRV_PLL_USED && !BSP_PRV_PLL2_USED + #define BSP_PRV_STARTUP_OPERATING_MODE (BSP_PRV_OPERATING_MODE_LOW_SPEED) +#elif BSP_STARTUP_ICLK_HZ <= BSP_FEATURE_CGC_MIDDLE_SPEED_MAX_FREQ_HZ + #define BSP_PRV_STARTUP_OPERATING_MODE (BSP_PRV_OPERATING_MODE_MIDDLE_SPEED) +#else + #define BSP_PRV_STARTUP_OPERATING_MODE (BSP_PRV_OPERATING_MODE_HIGH_SPEED) +#endif + +#if BSP_FEATURE_BSP_HAS_CLOCK_SUPPLY_TYPEB + #define BSP_PRV_CLOCK_SUPPLY_TYPE_B (0 == BSP_CFG_ROM_REG_OFS1_ICSATS) +#else + #define BSP_PRV_CLOCK_SUPPLY_TYPE_B (0) +#endif + +#if (BSP_FEATURE_BSP_HAS_CANFD_CLOCK && (BSP_CFG_CANFDCLK_SOURCE != BSP_CLOCKS_CLOCK_DISABLED) && \ + (BSP_CFG_CANFDCLK_SOURCE != BSP_CLOCKS_SOURCE_CLOCK_MAIN_OSC)) || \ + (BSP_FEATURE_BSP_HAS_SCISPI_CLOCK && (BSP_CFG_SCISPICLK_SOURCE != BSP_CLOCKS_CLOCK_DISABLED)) || \ + (BSP_FEATURE_BSP_HAS_SCI_CLOCK && (BSP_CFG_SCICLK_SOURCE != BSP_CLOCKS_CLOCK_DISABLED)) || \ + (BSP_FEATURE_BSP_HAS_SPI_CLOCK && (BSP_CFG_SPICLK_SOURCE != BSP_CLOCKS_CLOCK_DISABLED)) || \ + (BSP_FEATURE_BSP_HAS_GPT_CLOCK && (BSP_CFG_GPTCLK_SOURCE != BSP_CLOCKS_CLOCK_DISABLED)) || \ + (BSP_FEATURE_BSP_HAS_IIC_CLOCK && (BSP_CFG_IICCLK_SOURCE != BSP_CLOCKS_CLOCK_DISABLED)) || \ + (BSP_FEATURE_BSP_HAS_CEC_CLOCK && (BSP_CFG_CECCLK_SOURCE != BSP_CLOCKS_CLOCK_DISABLED)) || \ + (BSP_FEATURE_BSP_HAS_I3C_CLOCK && (BSP_CFG_I3CCLK_SOURCE != BSP_CLOCKS_CLOCK_DISABLED)) || \ + (BSP_FEATURE_BSP_HAS_USB60_CLOCK_REQ && (BSP_CFG_U60CK_SOURCE != BSP_CLOCKS_CLOCK_DISABLED)) || \ + (BSP_FEATURE_BSP_HAS_LCD_CLOCK && (BSP_CFG_LCDCLK_SOURCE != BSP_CLOCKS_CLOCK_DISABLED)) + + #define BSP_PRV_HAS_ENABLED_PERIPHERAL_CLOCKS (1U) +#else + #define BSP_PRV_HAS_ENABLED_PERIPHERAL_CLOCKS (0U) +#endif + +/*********************************************************************************************************************** + * Typedef definitions + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Exported global variables (to be accessed by other files) + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Private global variables and functions + **********************************************************************************************************************/ +static uint8_t bsp_clock_set_prechange(uint32_t requested_freq_hz); +static void bsp_clock_set_postchange(uint32_t updated_freq_hz, uint8_t new_rom_wait_state); +static void bsp_sosc_init(void); + +#if BSP_CLOCK_CFG_SUBCLOCK_POPULATED + #if defined(__ICCARM__) + +void R_BSP_SubClockStabilizeWait(uint32_t delay_ms); +void R_BSP_SubClockStabilizeWaitAfterReset(uint32_t delay_ms); + + #pragma weak R_BSP_SubClockStabilizeWait + #pragma weak R_BSP_SubClockStabilizeWaitAfterReset + + #elif defined(__GNUC__) || defined(__ARMCC_VERSION) + +void R_BSP_SubClockStabilizeWait(uint32_t delay_ms) __attribute__((weak)); +void R_BSP_SubClockStabilizeWaitAfterReset(uint32_t delay_ms) __attribute__((weak)); + + #endif +#endif + +#if (BSP_PRV_HAS_ENABLED_PERIPHERAL_CLOCKS == 1U) +static void bsp_peripheral_clock_set(volatile uint8_t * p_clk_ctrl_reg, + volatile uint8_t * p_clk_div_reg, + uint8_t peripheral_clk_div, + uint8_t peripheral_clk_source); + +#endif + +#if !BSP_CFG_USE_LOW_VOLTAGE_MODE +static void bsp_prv_operating_mode_opccr_set(uint8_t operating_mode); + +#endif + +#if !BSP_CFG_STARTUP_CLOCK_REG_NOT_RESET +static void bsp_prv_clock_set_hard_reset(void); + +#else +void bsp_soft_reset_prepare(void); + +#endif + +void prv_clock_dividers_set(uint32_t sckdivcr, uint8_t sckdivcr2); + +/* This array stores the clock frequency of each system clock. This section of RAM should not be initialized by the C + * runtime environment. This is initialized and used in bsp_clock_init, which is called before the C runtime + * environment is initialized. */ +static uint32_t g_clock_freq[BSP_PRV_NUM_CLOCKS] BSP_PLACE_IN_SECTION(BSP_SECTION_NOINIT); + +#if BSP_TZ_SECURE_BUILD + +/* Callback used to notify the nonsecure project that the clock settings have changed. */ +static bsp_clock_update_callback_t g_bsp_clock_update_callback = NULL; + +/* Pointer to nonsecure memory to store the callback args. */ +static bsp_clock_update_callback_args_t * gp_callback_memory = NULL; + +/* Reentrant method of calling the clock_update_callback. */ +static void r_bsp_clock_update_callback_call (bsp_clock_update_callback_t p_callback, + bsp_clock_update_callback_args_t * p_callback_args) +{ + /* Allocate memory for saving global callback args on the secure stack. */ + bsp_clock_update_callback_args_t callback_args; + + /* Save current info stored in callback memory. */ + callback_args = *gp_callback_memory; + + /* Write the callback args to the nonsecure callback memory. */ + *gp_callback_memory = *p_callback_args; + + /* Call the callback to notifiy ns project about clock changes. */ + p_callback(gp_callback_memory); + + /* Restore the info in callback memory. */ + *gp_callback_memory = callback_args; +} + +/* Initialize the callback, callback memory and invoke the callback to ensure the nonsecure project has the correct clock settings. */ +void r_bsp_clock_update_callback_set (bsp_clock_update_callback_t p_callback, + bsp_clock_update_callback_args_t * p_callback_memory) +{ + /* Store pointer to nonsecure callback memory. */ + gp_callback_memory = p_callback_memory; + + /* Store callback. */ + g_bsp_clock_update_callback = p_callback; + + /* Set callback args. */ + bsp_clock_update_callback_args_t callback_args = + { + .pll_freq = g_clock_freq[BSP_CLOCKS_SOURCE_CLOCK_PLL] + }; + + /* Call the callback. */ + r_bsp_clock_update_callback_call(g_bsp_clock_update_callback, &callback_args); +} + +#elif BSP_TZ_NONSECURE_BUILD && BSP_CFG_CLOCKS_SECURE == 1 + +bsp_clock_update_callback_args_t g_callback_memory; + #if BSP_TZ_SECURE_BUILD || BSP_TZ_NONSECURE_BUILD + #if defined(__ARMCC_VERSION) || defined(__ICCARM__) +static void BSP_CMSE_NONSECURE_CALL g_bsp_clock_update_callback (bsp_clock_update_callback_args_t * p_callback_args) + #elif defined(__GNUC__) + +static BSP_CMSE_NONSECURE_CALL void g_bsp_clock_update_callback (bsp_clock_update_callback_args_t * p_callback_args) + #endif + +{ + g_clock_freq[BSP_CLOCKS_SOURCE_CLOCK_PLL] = p_callback_args->pll_freq; + + /* Update the SystemCoreClock value based on the new g_clock_freq settings. */ + SystemCoreClockUpdate(); +} + + #endif +#endif + +#if BSP_FEATURE_LPM_CHANGE_MSTP_REQUIRED + +/* List of MSTP bits that must be set before entering low power modes or changing SCKDIVCR. */ +static const uint8_t g_bsp_prv_power_change_mstp_data[][2] = BSP_FEATURE_LPM_CHANGE_MSTP_ARRAY; + +static const uint8_t g_bsp_prv_power_change_mstp_length = sizeof(g_bsp_prv_power_change_mstp_data) / + sizeof(g_bsp_prv_power_change_mstp_data[0]); + +static volatile uint32_t * const gp_bsp_prv_mstp = &R_MSTP->MSTPCRB; +#endif + +/*******************************************************************************************************************//** + * @internal + * @addtogroup BSP_MCU_PRV Internal BSP Documentation + * @ingroup RENESAS_INTERNAL + * @{ + **********************************************************************************************************************/ + +#if !BSP_CFG_USE_LOW_VOLTAGE_MODE + +/*********************************************************************************************************************** + * Changes the operating speed in OPCCR. Assumes the LPM registers are unlocked in PRCR and cache is off. + * + * @param[in] operating_mode Desired operating mode, must be one of the BSP_PRV_OPERATING_MODE_* macros, cannot be + * BSP_PRV_OPERATING_MODE_SUBOSC_SPEED + **********************************************************************************************************************/ +static void bsp_prv_operating_mode_opccr_set (uint8_t operating_mode) +{ + #if BSP_FEATURE_CGC_HOCOSF_BEFORE_OPCCR + + /* If the desired operating mode is already set, return. */ + if (operating_mode == R_SYSTEM->OPCCR) + { + return; + } + + /* On some MCUs, the HOCO must be stable before updating OPCCR.OPCM. */ + if (0U == R_SYSTEM->HOCOCR) + { + /* Wait for HOCO to stabilize. */ + FSP_HARDWARE_REGISTER_WAIT(R_SYSTEM->OSCSF_b.HOCOSF, 1U); + } + #endif + + /* Wait for transition to complete. */ + FSP_HARDWARE_REGISTER_WAIT(R_SYSTEM->OPCCR_b.OPCMTSF, 0U); + + /* Apply requested operating speed mode. */ + R_SYSTEM->OPCCR = operating_mode; + + /* Wait for transition to complete. */ + FSP_HARDWARE_REGISTER_WAIT(R_SYSTEM->OPCCR_b.OPCMTSF, 0U); +} + +#endif + +#if !BSP_CFG_USE_LOW_VOLTAGE_MODE + +/*********************************************************************************************************************** + * Changes the operating speed mode. Assumes the LPM registers are unlocked in PRCR and cache is off. + * + * @param[in] operating_mode Desired operating mode, must be one of the BSP_PRV_OPERATING_MODE_* macros + **********************************************************************************************************************/ +void bsp_prv_operating_mode_set (uint8_t operating_mode) +{ + #if BSP_PRV_POWER_USE_DCDC + static bsp_power_mode_t power_mode = BSP_POWER_MODE_LDO; + + /* Disable DCDC if transitioning to an incompatible mode. */ + if ((operating_mode > BSP_PRV_OPERATING_MODE_MIDDLE_SPEED) && (R_SYSTEM->DCDCCTL & R_SYSTEM_DCDCCTL_DCDCON_Msk)) + { + /* LDO boost must be used if entering subclock speed mode (see RA2L1 User's Manual (R01UH0853EJ0100) Section + * 10.5.1 (5) Switching from High-speed/Middle-speed mode in DCDC power mode to Subosc-speed mode or Software + * Standby mode). */ + power_mode = R_BSP_PowerModeSet((BSP_PRV_OPERATING_MODE_SUBOSC_SPEED == operating_mode) ? + BSP_POWER_MODE_LDO_BOOST : BSP_POWER_MODE_LDO); + } + #endif + + #if BSP_FEATURE_CGC_HAS_SOPCCR + if (BSP_PRV_OPERATING_MODE_SUBOSC_SPEED == operating_mode) + { + /* Wait for transition to complete. */ + FSP_HARDWARE_REGISTER_WAIT(R_SYSTEM->SOPCCR_b.SOPCMTSF, 0U); + + /* Set subosc speed mode. */ + R_SYSTEM->SOPCCR = 0x1U; + + /* Wait for transition to complete. */ + FSP_HARDWARE_REGISTER_WAIT(R_SYSTEM->SOPCCR_b.SOPCMTSF, 0U); + } + else + #endif + { + #if BSP_FEATURE_CGC_HAS_SOPCCR + + /* Wait for transition to complete. */ + FSP_HARDWARE_REGISTER_WAIT(R_SYSTEM->SOPCCR_b.SOPCMTSF, 0U); + + /* Exit subosc speed mode first. */ + R_SYSTEM->SOPCCR = 0U; + + /* Wait for transition to complete. Check the entire register here since it should be set to 0 at this point. + * Checking the entire register is slightly more efficient. This will also hang the program if the LPM + * registers are not unlocked, which can help catch programming errors. */ + FSP_HARDWARE_REGISTER_WAIT(R_SYSTEM->SOPCCR, 0U); + #endif + + bsp_prv_operating_mode_opccr_set(operating_mode); + } + + #if BSP_PRV_POWER_USE_DCDC + + /* Enable DCDC if it was previously enabled. */ + if ((operating_mode <= BSP_PRV_OPERATING_MODE_MIDDLE_SPEED) && (power_mode < BSP_POWER_MODE_LDO)) + { + R_BSP_PowerModeSet(power_mode); + power_mode = BSP_POWER_MODE_LDO; + } + #endif +} + +#endif + +#if BSP_PRV_PLL_SUPPORTED + +/*********************************************************************************************************************** + * Updates the operating frequency of the PLL. + * + * @param[in] pll_freq_hz New frequency of the PLL after the PLL is configured + **********************************************************************************************************************/ +void bsp_prv_prepare_pll (uint32_t pll_freq_hz) +{ + /* Store the PLL frequency, which is required to update SystemCoreClock after switching to PLL. */ + g_clock_freq[BSP_CLOCKS_SOURCE_CLOCK_PLL] = pll_freq_hz; +} + +#endif + +/*******************************************************************************************************************//** + * Update SystemCoreClock variable based on current clock settings. + **********************************************************************************************************************/ +void SystemCoreClockUpdate (void) +{ +#if BSP_FEATURE_TZ_HAS_TRUSTZONE && (BSP_TZ_SECURE_BUILD || BSP_TZ_NONSECURE_BUILD) && BSP_FEATURE_TZ_VERSION == 2 + bool secure = !R_SYSTEM->CGFSAR_b.NONSEC00; +#endif + + uint32_t clock_index = FSP_STYPE3_REG8_READ(R_SYSTEM->SCKSCR, secure); + +#if !BSP_FEATURE_CGC_HAS_CPUCLK + uint32_t ick = + (FSP_STYPE3_REG32_READ(R_SYSTEM->SCKDIVCR, secure) & R_SYSTEM_SCKDIVCR_ICK_Msk) >> R_SYSTEM_SCKDIVCR_ICK_Pos; + SystemCoreClock = g_clock_freq[clock_index] >> ick; +#else + uint8_t cpuck = (FSP_STYPE3_REG8_READ(R_SYSTEM->SCKDIVCR2, secure) & R_SYSTEM_SCKDIVCR2_CPUCK_Msk) >> + R_SYSTEM_SCKDIVCR2_CPUCK_Pos; + uint8_t cpuclk_div = cpuck; + + if (8U == cpuclk_div) + { + SystemCoreClock = g_clock_freq[clock_index] / 3U; + } + else if (9U == cpuclk_div) + { + SystemCoreClock = g_clock_freq[clock_index] / 6U; + } + else if (10U == cpuclk_div) + { + SystemCoreClock = g_clock_freq[clock_index] / 12U; + } + else + { + SystemCoreClock = g_clock_freq[clock_index] >> cpuclk_div; + } +#endif +} + +#if BSP_FEATURE_LPM_CHANGE_MSTP_REQUIRED + +/*******************************************************************************************************************//** + * Sets MSTP bits as required by the hardware manual for the MCU (reference Figure 9.2 "Example flow for changing the + * value of SCKDIVCR" in the RA6M3 manual R01UH0886EJ0100). + * + * This function must be called before entering standby or changing SCKDIVCR. + * + * @return bitmask of bits set, where each bit corresponds to an index in g_bsp_prv_power_change_mstp_data + **********************************************************************************************************************/ +uint32_t bsp_prv_power_change_mstp_set (void) +{ + uint32_t mstp_set_bitmask = 0U; + for (uint32_t i = 0U; i < g_bsp_prv_power_change_mstp_length; i++) + { + /* Get the MSTP register index and the bit to test from the MCU specific array. */ + uint32_t mstp_index = g_bsp_prv_power_change_mstp_data[i][0]; + uint32_t mstp_bit = 1U << g_bsp_prv_power_change_mstp_data[i][1]; + + /* Only set the bit if it's currently cleared. */ + if (!(gp_bsp_prv_mstp[mstp_index] & mstp_bit)) + { + gp_bsp_prv_mstp[mstp_index] |= mstp_bit; + mstp_set_bitmask |= 1U << i; + } + + /* This loop takes over 250 ns (30 cycles at 120 MHz) between 2 consecutive bits being set. It was measured + * at 58 cycles for default IAR build configurations and 59 cycles for default GCC build configurations. */ + } + + /* The time between setting last MSTP bit and setting SCKDIVCR takes over 750 ns (90 cycles at 120 MHz). It was + * measured at 96 cycles for default IAR build configurations and 102 cycles for default GCC build + * configurations. */ + + return mstp_set_bitmask; +} + +#endif + +#if BSP_FEATURE_LPM_CHANGE_MSTP_REQUIRED + +/*******************************************************************************************************************//** + * Clears MSTP bits set by bsp_prv_power_change_mstp_set as required by the hardware manual for the MCU (reference + * Figure 9.2 "Example flow for changing the value of SCKDIVCR" in the RA6M3 manual R01UH0886EJ0100). + * + * This function must be called after exiting standby or changing SCKDIVCR. + * + * @param[in] mstp_clear_bitmask bitmask of bits to clear, where each bit corresponds to an index in + * g_bsp_prv_power_change_mstp_data + **********************************************************************************************************************/ +void bsp_prv_power_change_mstp_clear (uint32_t mstp_clear_bitmask) +{ + /* The time between setting SCKDIVCR and clearing the first MSTP bit takes over 250 ns (30 cycles at 120 MHz). It + * was measured at 38 cycles for default IAR build configurations and 68 cycles for default GCC build + * configurations. */ + + for (uint32_t i = 0U; i < g_bsp_prv_power_change_mstp_length; i++) + { + /* Only clear the bit if it was set in bsp_prv_power_change_mstp_set. */ + if ((1U << i) & mstp_clear_bitmask) + { + /* Get the MSTP register index and the bit to test from the MCU specific array. */ + uint32_t mstp_index = g_bsp_prv_power_change_mstp_data[i][0]; + uint32_t mstp_bit = 1U << g_bsp_prv_power_change_mstp_data[i][1]; + + gp_bsp_prv_mstp[mstp_index] &= ~mstp_bit; + } + + /* This loop takes over 250 ns (30 cycles at 120 MHz) between 2 consecutive bits being cleared. It was measured + * at 44 cycles for default IAR build configurations and 53 cycles for default GCC build configurations. */ + } +} + +#endif + +/*******************************************************************************************************************//** + * Write SCKDIVCR and SCKDIVCR2 in the correct order to ensure that CPUCLK frequency is greater than ICLK frequency. + * + * @param[in] sckdivcr The new SCKDIVCR setting. + * @param[in] sckdivcr2 The new SCKDIVCR2 setting. + **********************************************************************************************************************/ +void prv_clock_dividers_set (uint32_t sckdivcr, uint8_t sckdivcr2) +{ +#if BSP_FEATURE_CGC_HAS_CPUCLK + uint32_t requested_iclk_div = BSP_PRV_SCKDIVCR_DIV_VALUE( + (sckdivcr >> FSP_PRIV_CLOCK_ICLK) & FSP_PRV_SCKDIVCR_DIV_MASK); + uint32_t current_iclk_div = BSP_PRV_SCKDIVCR_DIV_VALUE(R_SYSTEM->SCKDIVCR_b.ICK); + + if (requested_iclk_div >= current_iclk_div) + { + /* If the requested ICLK divider is greater than or equal to the current ICLK divider, then writing to + * SCKDIVCR first will always satisfy the constraint: CPUCLK frequency >= ICLK frequency. */ + R_SYSTEM->SCKDIVCR = sckdivcr; + R_SYSTEM->SCKDIVCR2 = sckdivcr2; + } + else + { + /* If the requested ICLK divider is less than the current ICLK divider, then writing to SCKDIVCR2 first + * will always satisfy the constraint: CPUCLK frequency >= ICLK frequency. */ + R_SYSTEM->SCKDIVCR2 = sckdivcr2; + R_SYSTEM->SCKDIVCR = sckdivcr; + } + +#else + FSP_PARAMETER_NOT_USED(sckdivcr2); + + R_SYSTEM->SCKDIVCR = sckdivcr; +#endif +} + +/*******************************************************************************************************************//** + * Applies system core clock source and divider changes. The MCU is expected to be in high speed mode during this + * configuration and the CGC registers are expected to be unlocked in PRCR. + * + * @param[in] clock Desired system clock + * @param[in] sckdivcr Value to set in SCKDIVCR register + * @param[in] sckdivcr2 Value to set in SCKDIVCR2 register + **********************************************************************************************************************/ +void bsp_prv_clock_set (uint32_t clock, uint32_t sckdivcr, uint8_t sckdivcr2) +{ +#if BSP_FEATURE_LPM_CHANGE_MSTP_REQUIRED + + /* Set MSTP bits as required by the hardware manual. This is done first to ensure the 750 ns delay required after + * increasing any division ratio in SCKDIVCR is met. */ + uint32_t mstp_set_bitmask = bsp_prv_power_change_mstp_set(); +#endif + + uint32_t iclk_div = (sckdivcr >> FSP_PRIV_CLOCK_ICLK) & FSP_PRV_SCKDIVCR_DIV_MASK; + + /* Adjust the MCU specific wait state right before the system clock is set, if the system clock frequency to be + * set is higher than before. */ + uint32_t clock_freq_hz_post_change = g_clock_freq[clock] / BSP_PRV_SCKDIVCR_DIV_VALUE(iclk_div); + uint8_t new_rom_wait_state = bsp_clock_set_prechange(clock_freq_hz_post_change); + + /* Switching to a faster source clock. */ + if (g_clock_freq[clock] >= g_clock_freq[R_SYSTEM->SCKSCR]) + { +#if BSP_CFG_CLOCK_SETTLING_DELAY_ENABLE + if ((clock_freq_hz_post_change > SystemCoreClock) && + ((clock_freq_hz_post_change - SystemCoreClock) > BSP_MAX_CLOCK_CHANGE_THRESHOLD)) + { + /* If the requested ICLK divider is greater than or equal to the current ICLK divider, then writing to + * SCKDIVCR first will always satisfy the constraint: CPUCLK frequency >= ICLK frequency. */ + if (iclk_div == sckdivcr2) + { + /* If dividers are equal, bump both down 1 notch. + * /1 and /2 are the only possible options. */ + uint32_t new_div = BSP_CLOCKS_SYS_CLOCK_DIV_2; + if (BSP_CFG_CPUCLK_DIV == BSP_CLOCKS_SYS_CLOCK_DIV_1) + { + new_div = BSP_CLOCKS_SYS_CLOCK_DIV_4; + } + + R_SYSTEM->SCKDIVCR = (BSP_PRV_STARTUP_SCKDIVCR & ~(R_SYSTEM_SCKDIVCR_ICK_Msk)) | + (new_div << R_SYSTEM_SCKDIVCR_ICK_Pos); + R_SYSTEM->SCKDIVCR2 = (uint8_t) new_div; + } + else + { + R_SYSTEM->SCKDIVCR = BSP_PRV_STARTUP_SCKDIVCR; + if (BSP_CFG_CPUCLK_DIV == BSP_CLOCKS_SYS_CLOCK_DIV_1) + { + /* Determine what the other dividers are using and stay aligned with that. */ + R_SYSTEM->SCKDIVCR2 = + (BSP_CFG_ICLK_DIV & 0x8) ? BSP_CLOCKS_SYS_CLOCK_DIV_3 : BSP_CLOCKS_SYS_CLOCK_DIV_2; + } + else + { + /* If not /1, can just add 1 to it. */ + R_SYSTEM->SCKDIVCR2 = BSP_PRV_STARTUP_SCKDIVCR2 + 1; + } + } + + /* Set the system source clock */ + R_SYSTEM->SCKSCR = BSP_CFG_CLOCK_SOURCE; + + /* Wait for settling delay. */ + SystemCoreClockUpdate(); + R_BSP_SoftwareDelay(BSP_CFG_CLOCK_SETTLING_DELAY_US, BSP_DELAY_UNITS_MICROSECONDS); + } + /* Continue and set clock to actual target speed. */ +#endif + + /* Set the clock dividers before switching to the new clock source. */ + prv_clock_dividers_set(sckdivcr, sckdivcr2); + + /* Switch to the new clock source. */ + R_SYSTEM->SCKSCR = (uint8_t) clock; + } + /* Switching to a slower source clock. */ + else + { +#if BSP_CFG_CLOCK_SETTLING_DELAY_ENABLE + if ((SystemCoreClock > clock_freq_hz_post_change) && + ((SystemCoreClock - clock_freq_hz_post_change) > BSP_MAX_CLOCK_CHANGE_THRESHOLD)) + { + uint32_t current_sckdivcr = R_SYSTEM->SCKDIVCR; + + /* Must first step CPUCLK down by factor of 2 or 3 if it is currently above threshold. */ + if (R_SYSTEM->SCKDIVCR2 == ((current_sckdivcr >> R_SYSTEM_SCKDIVCR_ICK_Pos) & 0xF)) + { + /* If ICLK and CPUCLK have same divider currently, move ICLK down 1 notch first. */ + uint32_t current_iclk_div = (current_sckdivcr >> R_SYSTEM_SCKDIVCR_ICK_Pos) & 0xF; + uint32_t new_div = current_iclk_div + 1; + if (current_iclk_div == 0) + { + /* Align with already selected divider for PCLKA because it must have one > 1 already. */ + new_div = + (current_sckdivcr & + (0x8 << R_SYSTEM_SCKDIVCR_PCKA_Pos)) ? BSP_CLOCKS_SYS_CLOCK_DIV_3 : BSP_CLOCKS_SYS_CLOCK_DIV_2; + } + + R_BSP_SoftwareDelay(BSP_CFG_CLOCK_SETTLING_DELAY_US, BSP_DELAY_UNITS_MICROSECONDS); + R_SYSTEM->SCKDIVCR = (current_sckdivcr & ~(R_SYSTEM_SCKDIVCR_ICK_Msk)) | + (new_div << R_SYSTEM_SCKDIVCR_ICK_Pos); + R_SYSTEM->SCKDIVCR2 = (uint8_t) new_div; + + SystemCoreClockUpdate(); + } + } + R_BSP_SoftwareDelay(BSP_CFG_CLOCK_SETTLING_DELAY_US, BSP_DELAY_UNITS_MICROSECONDS); +#endif + R_SYSTEM->SCKSCR = (uint8_t) clock; + + /* Set the clock dividers after switching to the new clock source. */ + prv_clock_dividers_set(sckdivcr, sckdivcr2); + } + + /* Clock is now at requested frequency. */ + + /* Update the CMSIS core clock variable so that it reflects the new ICLK frequency. */ + SystemCoreClock = clock_freq_hz_post_change; + +#if BSP_TZ_SECURE_BUILD + if (NULL != g_bsp_clock_update_callback) + { + /* Set callback args. */ + bsp_clock_update_callback_args_t callback_args = + { + .pll_freq = g_clock_freq[BSP_CLOCKS_SOURCE_CLOCK_PLL] + }; + + /* Call the callback. */ + r_bsp_clock_update_callback_call(g_bsp_clock_update_callback, &callback_args); + } +#endif + + /* Adjust the MCU specific wait state soon after the system clock is set, if the system clock frequency to be + * set is lower than previous. */ + bsp_clock_set_postchange(SystemCoreClock, new_rom_wait_state); + +#if BSP_FEATURE_LPM_CHANGE_MSTP_REQUIRED + + /* Clear MSTP bits as required by the hardware manual. This is done last to ensure the 250 ns delay required after + * decreasing any division ratio in SCKDIVCR is met. */ + bsp_prv_power_change_mstp_clear(mstp_set_bitmask); +#endif +} + +#if BSP_CFG_SLEEP_MODE_DELAY_ENABLE || BSP_CFG_RTOS_SLEEP_MODE_DELAY_ENABLE + +bool bsp_prv_clock_prepare_pre_sleep (void) +{ + /* Must wait before entering or exiting sleep modes. + * See Section 10.7.10 in RA8M1 manual R01UH0994EJ0100 */ + R_BSP_SoftwareDelay(BSP_CFG_CLOCK_SETTLING_DELAY_US, BSP_DELAY_UNITS_MICROSECONDS); + + /* Need to slow CPUCLK down before sleeping if it is above 240MHz. */ + bool cpuclk_slowed = false; + if (SystemCoreClock > BSP_MAX_CLOCK_CHANGE_THRESHOLD) + { + /* Reduce speed of CPUCLK to /2 or /3 of current, select which ones based on what ICLK divider is. */ + R_SYSTEM->SCKDIVCR2 = + (R_SYSTEM->SCKDIVCR & + (0x8 << R_SYSTEM_SCKDIVCR_ICK_Pos)) ? BSP_CLOCKS_SYS_CLOCK_DIV_3 : BSP_CLOCKS_SYS_CLOCK_DIV_2; + cpuclk_slowed = true; + SystemCoreClockUpdate(); + R_BSP_SoftwareDelay(BSP_CFG_CLOCK_SETTLING_DELAY_US, BSP_DELAY_UNITS_MICROSECONDS); + } + + return cpuclk_slowed; +} + +void bsp_prv_clock_prepare_post_sleep (bool cpuclk_slowed) +{ + /* Set CPUCLK back to original speed here if it was slowed down before sleeping (dropped to below 240MHz) + * Add delays as described in Section 10.7.10 of RA8M1 manual R01UH0994EJ0100 */ + R_BSP_SoftwareDelay(BSP_CFG_CLOCK_SETTLING_DELAY_US, BSP_DELAY_UNITS_MICROSECONDS); + if (cpuclk_slowed) + { + /* Set divider of CPUCLK back to /1. This is the only possible value for it to have been over 240MHz before sleeping. */ + R_SYSTEM->SCKDIVCR2 = BSP_CLOCKS_SYS_CLOCK_DIV_1; + SystemCoreClockUpdate(); + R_BSP_SoftwareDelay(BSP_CFG_CLOCK_SETTLING_DELAY_US, BSP_DELAY_UNITS_MICROSECONDS); + } +} + +#endif + +#if !BSP_CFG_STARTUP_CLOCK_REG_NOT_RESET + +static void bsp_prv_clock_set_hard_reset (void) +{ + /* Wait states in SRAMWTSC are set after hard reset. No change required here. */ + + /* Calculate the wait states for ROM */ + #if BSP_FEATURE_CGC_HAS_FLWT + #if BSP_STARTUP_ICLK_HZ <= BSP_FEATURE_BSP_SYS_CLOCK_FREQ_ONE_ROM_WAITS + + /* Do nothing. Default setting in FLWT is correct. */ + #elif BSP_STARTUP_ICLK_HZ <= BSP_FEATURE_BSP_SYS_CLOCK_FREQ_TWO_ROM_WAITS || \ + BSP_FEATURE_BSP_SYS_CLOCK_FREQ_TWO_ROM_WAITS == 0 + R_FCACHE->FLWT = BSP_PRV_ROM_ONE_WAIT_CYCLES; + #elif 0 == BSP_FEATURE_BSP_SYS_CLOCK_FREQ_THREE_ROM_WAITS || \ + (BSP_STARTUP_ICLK_HZ <= BSP_FEATURE_BSP_SYS_CLOCK_FREQ_THREE_ROM_WAITS) + R_FCACHE->FLWT = BSP_PRV_ROM_TWO_WAIT_CYCLES; + #elif 0 == BSP_FEATURE_BSP_SYS_CLOCK_FREQ_FOUR_ROM_WAITS || \ + (BSP_STARTUP_ICLK_HZ <= BSP_FEATURE_BSP_SYS_CLOCK_FREQ_FOUR_ROM_WAITS) + R_FCACHE->FLWT = BSP_PRV_ROM_THREE_WAIT_CYCLES; + #elif 0 == BSP_FEATURE_BSP_SYS_CLOCK_FREQ_FIVE_ROM_WAITS || \ + (BSP_STARTUP_ICLK_HZ <= BSP_FEATURE_BSP_SYS_CLOCK_FREQ_FIVE_ROM_WAITS) + R_FCACHE->FLWT = BSP_PRV_ROM_FOUR_WAIT_CYCLES; + #else + R_FCACHE->FLWT = BSP_PRV_ROM_FIVE_WAIT_CYCLES; + #endif + #endif + + #if BSP_FEATURE_CGC_HAS_MEMWAIT && !BSP_PRV_CLOCK_SUPPLY_TYPE_B + #if BSP_STARTUP_ICLK_HZ > BSP_PRV_MEMWAIT_MAX_ZERO_WAIT_FREQ + + /* The MCU must be in high speed mode to set wait states to 2. High speed mode is the default out of reset. */ + R_SYSTEM->MEMWAIT = BSP_PRV_MEMWAIT_TWO_WAIT_CYCLES; + #endif + #endif + + #if BSP_FEATURE_CGC_HAS_FLDWAITR && !BSP_PRV_CLOCK_SUPPLY_TYPE_B + #if BSP_STARTUP_ICLK_HZ > BSP_PRV_FLDWAITR_MAX_ONE_WAIT_FREQ + + /* The MCU must be in high speed mode to set wait states to 2. High speed mode is the default out of reset. */ + BSP_PRV_FLDWAITR_REG_ACCESS = BSP_PRV_FLDWAITR_TWO_WAIT_CYCLES; + #endif + #endif + + /* In order to avoid a system clock (momentarily) higher than expected, the order of switching the clock and + * dividers must be so that the frequency of the clock goes lower, instead of higher, before being correct. */ + + /* MOCO is the source clock after reset. If the new source clock is faster than the current source clock, + * then set the clock dividers before switching to the new source clock. */ + #if BSP_MOCO_FREQ_HZ <= BSP_STARTUP_SOURCE_CLOCK_HZ + #if BSP_FEATURE_CGC_HAS_CPUCLK + #if BSP_CFG_CLOCK_SETTLING_DELAY_ENABLE && (BSP_STARTUP_CPUCLK_HZ >= BSP_MAX_CLOCK_CHANGE_THRESHOLD) + + /* If the requested ICLK divider is greater than or equal to the current ICLK divider, then writing to + * SCKDIVCR first will always satisfy the constraint: CPUCLK frequency >= ICLK frequency. */ + #if BSP_CFG_ICLK_DIV == BSP_CFG_CPUCLK_DIV + + /* If dividers are equal, bump both down 1 notch. + * /1 and /2 are the only possible options. */ + #if BSP_CFG_CPUCLK_DIV == BSP_CLOCKS_SYS_CLOCK_DIV_1 + R_SYSTEM->SCKDIVCR = (BSP_PRV_STARTUP_SCKDIVCR & ~(R_SYSTEM_SCKDIVCR_ICK_Msk)) | + (BSP_CLOCKS_SYS_CLOCK_DIV_2 << R_SYSTEM_SCKDIVCR_ICK_Pos); + R_SYSTEM->SCKDIVCR2 = BSP_CLOCKS_SYS_CLOCK_DIV_2; + #else + R_SYSTEM->SCKDIVCR = (BSP_PRV_STARTUP_SCKDIVCR & ~(R_SYSTEM_SCKDIVCR_ICK_Msk)) | + (BSP_CLOCKS_SYS_CLOCK_DIV_4 << R_SYSTEM_SCKDIVCR_ICK_Pos); + R_SYSTEM->SCKDIVCR2 = BSP_CLOCKS_SYS_CLOCK_DIV_4; + #endif + #else + R_SYSTEM->SCKDIVCR = BSP_PRV_STARTUP_SCKDIVCR; + #if BSP_CFG_CPUCLK_DIV == BSP_CLOCKS_SYS_CLOCK_DIV_1 + + /* Determine what the other dividers are using and stay aligned with that. */ + R_SYSTEM->SCKDIVCR2 = (BSP_CFG_ICLK_DIV & 0x8) ? BSP_CLOCKS_SYS_CLOCK_DIV_3 : BSP_CLOCKS_SYS_CLOCK_DIV_2; + #else + + /* If not /1, can just add 1 to it. */ + R_SYSTEM->SCKDIVCR2 = BSP_PRV_STARTUP_SCKDIVCR2 + 1; + #endif + #endif + + /* Set the system source clock */ + R_SYSTEM->SCKSCR = BSP_CFG_CLOCK_SOURCE; + + /* Wait for settling delay. */ + SystemCoreClockUpdate(); + R_BSP_SoftwareDelay(BSP_CFG_CLOCK_SETTLING_DELAY_US, BSP_DELAY_UNITS_MICROSECONDS); + + /* Continue and set clock to actual target speed. */ + R_SYSTEM->SCKDIVCR2 = BSP_PRV_STARTUP_SCKDIVCR2; + R_SYSTEM->SCKDIVCR = BSP_PRV_STARTUP_SCKDIVCR; + #else + #if BSP_PRV_ICLK_DIV_VALUE >= BSP_PRV_SCKDIVCR_DIV_VALUE(BSP_FEATURE_CGC_ICLK_DIV_RESET) + + /* If the requested ICLK divider is greater than or equal to the current ICLK divider, then writing to + * SCKDIVCR first will always satisfy the constraint: CPUCLK frequency >= ICLK frequency. */ + R_SYSTEM->SCKDIVCR = BSP_PRV_STARTUP_SCKDIVCR; + R_SYSTEM->SCKDIVCR2 = BSP_PRV_STARTUP_SCKDIVCR2; + #else + + /* If the requested ICLK divider is less than the current ICLK divider, then writing to SCKDIVCR2 first + * will always satisfy the constraint: CPUCLK frequency >= ICLK frequency. */ + R_SYSTEM->SCKDIVCR2 = BSP_PRV_STARTUP_SCKDIVCR2; + R_SYSTEM->SCKDIVCR = BSP_PRV_STARTUP_SCKDIVCR; + #endif + #endif + #else + R_SYSTEM->SCKDIVCR = BSP_PRV_STARTUP_SCKDIVCR; + #endif + #endif + + /* Set the system source clock */ + R_SYSTEM->SCKSCR = BSP_CFG_CLOCK_SOURCE; + + /* MOCO is the source clock after reset. If the new source clock is slower than the current source clock, + * then set the clock dividers after switching to the new source clock. */ + #if BSP_MOCO_FREQ_HZ > BSP_STARTUP_SOURCE_CLOCK_HZ + #if BSP_FEATURE_CGC_HAS_CPUCLK + #if BSP_PRV_ICLK_DIV_VALUE >= BSP_PRV_SCKDIVCR_DIV_VALUE(BSP_FEATURE_CGC_ICLK_DIV_RESET) + + /* If the requested ICLK divider is greater than or equal to the current ICLK divider, then writing to + * SCKDIVCR first will always satisfy the constraint: CPUCLK frequency >= ICLK frequency. */ + R_SYSTEM->SCKDIVCR = BSP_PRV_STARTUP_SCKDIVCR; + R_SYSTEM->SCKDIVCR2 = BSP_PRV_STARTUP_SCKDIVCR2; + #else + + /* If the requested ICLK divider is less than the current ICLK divider, then writing to SCKDIVCR2 first + * will always satisfy the constraint: CPUCLK frequency >= ICLK frequency. */ + R_SYSTEM->SCKDIVCR2 = BSP_PRV_STARTUP_SCKDIVCR2; + R_SYSTEM->SCKDIVCR = BSP_PRV_STARTUP_SCKDIVCR; + #endif + #else + R_SYSTEM->SCKDIVCR = BSP_PRV_STARTUP_SCKDIVCR; + #endif + #endif + + /* Update the CMSIS core clock variable so that it reflects the new ICLK frequency. */ + SystemCoreClockUpdate(); + + /* Clocks are now at requested frequencies. */ + + /* Adjust the MCU specific wait state soon after the system clock is set, if the system clock frequency to be + * set is lower than previous. */ + #if BSP_FEATURE_CGC_HAS_SRAMWTSC + #if BSP_STARTUP_ICLK_HZ <= BSP_FEATURE_BSP_SYS_CLOCK_FREQ_NO_RAM_WAITS + #if BSP_FEATURE_CGC_HAS_SRAMPRCR2 == 1 + R_SRAM->SRAMPRCR2 = BSP_PRV_SRAM_UNLOCK; + R_SRAM->SRAMWTSC = BSP_PRV_SRAMWTSC_WAIT_CYCLES_DISABLE; + R_SRAM->SRAMPRCR2 = BSP_PRV_SRAM_LOCK; + #else + R_SRAM->SRAMPRCR = BSP_PRV_SRAM_UNLOCK; + + /* Execute data memory barrier before and after setting the wait states, See Section 50.4.2 in the RA8M1 + * manual R01UH0994EJ0100 */ + __DMB(); + R_SRAM->SRAMWTSC = BSP_PRV_SRAMWTSC_WAIT_CYCLES_DISABLE; + __DMB(); + + R_SRAM->SRAMPRCR = BSP_PRV_SRAM_LOCK; + #endif + #endif + #endif + + /* ROM wait states are 0 by default. No change required here. */ +} + +#endif + +/*******************************************************************************************************************//** + * Initializes variable to store system clock frequencies. + **********************************************************************************************************************/ +#if BSP_TZ_NONSECURE_BUILD +void bsp_clock_freq_var_init (void) +#else +static void bsp_clock_freq_var_init (void) +#endif +{ + g_clock_freq[BSP_CLOCKS_SOURCE_CLOCK_HOCO] = BSP_HOCO_HZ; + g_clock_freq[BSP_CLOCKS_SOURCE_CLOCK_MOCO] = BSP_MOCO_FREQ_HZ; + g_clock_freq[BSP_CLOCKS_SOURCE_CLOCK_LOCO] = BSP_LOCO_FREQ_HZ; +#if BSP_CLOCK_CFG_MAIN_OSC_POPULATED + g_clock_freq[BSP_CLOCKS_SOURCE_CLOCK_MAIN_OSC] = BSP_CFG_XTAL_HZ; +#else + g_clock_freq[BSP_CLOCKS_SOURCE_CLOCK_MAIN_OSC] = 0U; +#endif +#if BSP_CLOCK_CFG_SUBCLOCK_POPULATED + g_clock_freq[BSP_CLOCKS_SOURCE_CLOCK_SUBCLOCK] = BSP_SUBCLOCK_FREQ_HZ; +#else + g_clock_freq[BSP_CLOCKS_SOURCE_CLOCK_SUBCLOCK] = 0U; +#endif +#if BSP_PRV_PLL_SUPPORTED + #if BSP_CLOCKS_SOURCE_CLOCK_PLL == BSP_CFG_CLOCK_SOURCE + #if (3U != BSP_FEATURE_CGC_PLLCCR_TYPE) + + /* The PLL Is the startup clock. */ + g_clock_freq[BSP_CLOCKS_SOURCE_CLOCK_PLL] = BSP_STARTUP_SOURCE_CLOCK_HZ; + #else + g_clock_freq[BSP_CLOCKS_SOURCE_CLOCK_PLL] = BSP_CFG_PLL1P_FREQUENCY_HZ; + g_clock_freq[BSP_CLOCKS_SOURCE_CLOCK_PLL1Q] = BSP_CFG_PLL1Q_FREQUENCY_HZ; + g_clock_freq[BSP_CLOCKS_SOURCE_CLOCK_PLL1R] = BSP_CFG_PLL1R_FREQUENCY_HZ; + #endif + #else + + /* The PLL value will be calculated at initialization. */ + g_clock_freq[BSP_CLOCKS_SOURCE_CLOCK_PLL] = BSP_CFG_XTAL_HZ; + #endif +#endif + +#if BSP_TZ_NONSECURE_BUILD && BSP_CFG_CLOCKS_SECURE == 1 + + /* If the CGC is secure and this is a non secure project, register a callback for getting clock settings. */ + R_BSP_ClockUpdateCallbackSet(g_bsp_clock_update_callback, &g_callback_memory); +#endif + + /* Update PLL Clock Frequency based on BSP Configuration. */ +#if BSP_PRV_PLL_SUPPORTED && BSP_CLOCKS_SOURCE_CLOCK_PLL != BSP_CFG_CLOCK_SOURCE && BSP_PRV_PLL_USED + #if (1U == BSP_FEATURE_CGC_PLLCCR_TYPE) + g_clock_freq[BSP_CLOCKS_SOURCE_CLOCK_PLL] = ((g_clock_freq[BSP_CFG_PLL_SOURCE] * (BSP_CFG_PLL_MUL + 1U)) >> 1U) / + (BSP_CFG_PLL_DIV + 1U); + #elif (3U == BSP_FEATURE_CGC_PLLCCR_TYPE) + g_clock_freq[BSP_CLOCKS_SOURCE_CLOCK_PLL] = BSP_CFG_PLL1P_FREQUENCY_HZ; + g_clock_freq[BSP_CLOCKS_SOURCE_CLOCK_PLL1Q] = BSP_CFG_PLL1Q_FREQUENCY_HZ; + g_clock_freq[BSP_CLOCKS_SOURCE_CLOCK_PLL1R] = BSP_CFG_PLL1R_FREQUENCY_HZ; + #elif (4U == BSP_FEATURE_CGC_PLLCCR_TYPE) + g_clock_freq[BSP_CLOCKS_SOURCE_CLOCK_PLL] = (g_clock_freq[BSP_CFG_PLL_SOURCE] * (BSP_CFG_PLL_MUL + 1U)) >> 1U; + #else + g_clock_freq[BSP_CLOCKS_SOURCE_CLOCK_PLL] = ((g_clock_freq[BSP_CFG_PLL_SOURCE] * (BSP_CFG_PLL_MUL + 1U)) >> 1U) >> + BSP_CFG_PLL_DIV; + #endif +#endif + + /* Update PLL2 Clock Frequency based on BSP Configuration. */ +#if BSP_PRV_PLL2_SUPPORTED && BSP_PRV_PLL2_USED + #if (1U == BSP_FEATURE_CGC_PLLCCR_TYPE) + g_clock_freq[BSP_CLOCKS_SOURCE_CLOCK_PLL2] = ((g_clock_freq[BSP_CFG_PLL2_SOURCE] * (BSP_CFG_PLL2_MUL + 1U)) >> 1U) / + (BSP_CFG_PLL2_DIV + 1U); + #elif (3U == BSP_FEATURE_CGC_PLLCCR_TYPE) + g_clock_freq[BSP_CLOCKS_SOURCE_CLOCK_PLL2] = BSP_CFG_PLL2P_FREQUENCY_HZ; + g_clock_freq[BSP_CLOCKS_SOURCE_CLOCK_PLL2Q] = BSP_CFG_PLL2Q_FREQUENCY_HZ; + g_clock_freq[BSP_CLOCKS_SOURCE_CLOCK_PLL2R] = BSP_CFG_PLL2R_FREQUENCY_HZ; + #else + g_clock_freq[BSP_CLOCKS_SOURCE_CLOCK_PLL2] = + ((g_clock_freq[BSP_CFG_PLL2_SOURCE] * (BSP_CFG_PLL2_MUL + 1U)) >> 1U) >> BSP_CFG_PLL2_DIV; + #endif +#endif + + /* The SystemCoreClock needs to be updated before calling R_BSP_SoftwareDelay. */ + SystemCoreClockUpdate(); +} + +#if BSP_CFG_STARTUP_CLOCK_REG_NOT_RESET + +/* + * If the clock registers are not guaranteed to be set to their value after reset (Ie. the application is executing after a bootloader), + * then the current state of the registers must be taken into consideration before writing the clock configuration. + * + * The HOCO must be stopped in the following situations: + * - The application configures the HOCO to be stopped. + * - The application enables the FLL, but the HOCO is already running. In order to enable the FLL, the HOCO must be stopped. + * The PLL must be stopped in the following situations: + * - The application configures the PLL to be stopped. + * - The application configures settings that are different than the current settings, but the PLL is already running. In order to + * write new PLL settings, the PLL must be stopped. + * - The HOCO is the PLL source clock and the HOCO is being stopped. + * The PLL2 must be stopped in the following situations: + * - The application configures the PLL2 to be stopped. + * - The application configures settings that are different than the current settings, but the PLL2 is already running. In order to + * write new PLL2 settings, the PLL2 must be stopped. + * - The HOCO is the PLL2 source clock and the HOCO is being stopped. + * + * If the HOCO or PLL are being used as the system clock source and they need to be stopped, then the system clock source needs to be switched + * to the default system clock source before the current system clock source is disabled. + */ +void bsp_soft_reset_prepare (void) +{ + bool stop_hoco = false; + #if BSP_PRV_PLL_SUPPORTED + bool stop_pll = false; + #endif + #if BSP_PRV_PLL2_SUPPORTED + bool stop_pll2 = false; + #endif + + #if BSP_PRV_HOCO_USE_FLL || !BSP_PRV_HOCO_USED + #if BSP_PRV_HOCO_USE_FLL + + /* Determine if the FLL needs to be enabled. */ + bool enable_fll = (0 == R_SYSTEM->FLLCR1 && BSP_PRV_HOCO_USE_FLL); + #else + bool enable_fll = false; + #endif + + /* If the HOCO is already enabled and either the FLL needs to be enabled or the HOCO is not used, then stop the HOCO. */ + if ((0 == R_SYSTEM->HOCOCR) && (enable_fll || !BSP_PRV_HOCO_USED)) + { + stop_hoco = true; + } + #endif + + #if BSP_PRV_PLL_SUPPORTED + if (0 == R_SYSTEM->PLLCR) + { + /* + * If any of the following conditions are true, then the PLL needs to be stopped: + * - The PLL is not used + * - The PLL settings need to be changed + * - The HOCO is selected as the PLL clock source and the HOCO needs to be stopped + * - Note that PLL type 2 does not support running off of the HOCO + */ + #if BSP_PRV_PLL_USED + #if 3 == BSP_FEATURE_CGC_PLLCCR_TYPE + if ((BSP_PRV_PLLCCR != R_SYSTEM->PLLCCR) || (BSP_PRV_PLLCCR2 != R_SYSTEM->PLLCCR2) || + (stop_hoco && (1 == R_SYSTEM->PLLCCR_b.PLSRCSEL))) + #elif 2 == BSP_FEATURE_CGC_PLLCCR_TYPE + if (BSP_PRV_PLLCCR != R_SYSTEM->PLLCCR2) + #else + if ((BSP_PRV_PLLCCR != R_SYSTEM->PLLCCR) || (stop_hoco && (1 == R_SYSTEM->PLLCCR_b.PLSRCSEL))) + #endif + #endif + { + stop_pll = true; + } + } + #endif + + #if BSP_PRV_PLL2_SUPPORTED + if (0 == R_SYSTEM->PLL2CR) + { + /* + * If any of the following conditions are true, then the PLL2 needs to be stopped: + * - The PLL2 is not used + * - The PLL2 settings need to be changed + * - The HOCO is selected as the PLL2 clock source and the HOCO needs to be stopped + * - Note that PLL type 2 does not support running off of the HOCO + */ + #if BSP_PRV_PLL2_USED + #if 3 == BSP_FEATURE_CGC_PLLCCR_TYPE + if ((BSP_PRV_PLL2CCR != R_SYSTEM->PLL2CCR) || (BSP_PRV_PLL2CCR2 != R_SYSTEM->PLL2CCR2) || + (stop_hoco && (1 == R_SYSTEM->PLL2CCR_b.PL2SRCSEL))) + #else + if ((BSP_PRV_PLL2CCR != R_SYSTEM->PLL2CCR) || (stop_hoco && (1 == R_SYSTEM->PLL2CCR_b.PL2SRCSEL))) + #endif + #endif + { + stop_pll2 = true; + } + } + #endif + + uint8_t sckscr = R_SYSTEM->SCKSCR; + + /* If the System Clock source needs to be stopped, then switch to the MOCO. */ + #if BSP_PRV_PLL_SUPPORTED + if ((stop_hoco && (BSP_CLOCKS_SOURCE_CLOCK_HOCO == sckscr)) || + (stop_pll && (BSP_CLOCKS_SOURCE_CLOCK_PLL == sckscr))) + #else + if (stop_hoco && (BSP_CLOCKS_SOURCE_CLOCK_HOCO == sckscr)) + #endif + { + bsp_prv_clock_set(BSP_FEATURE_CGC_STARTUP_SCKSCR, + BSP_FEATURE_CGC_STARTUP_SCKDIVCR, + BSP_FEATURE_CGC_STARTUP_SCKDIVCR2); + } + + /* Disable the oscillators so that the application can write the new clock configuration. */ + + #if BSP_PRV_PLL_SUPPORTED + if (stop_pll) + { + R_SYSTEM->PLLCR = 1; + FSP_HARDWARE_REGISTER_WAIT(R_SYSTEM->OSCSF_b.PLLSF, 0); + } + #endif + + #if BSP_PRV_PLL2_SUPPORTED + if (stop_pll2) + { + R_SYSTEM->PLL2CR = 1; + FSP_HARDWARE_REGISTER_WAIT(R_SYSTEM->OSCSF_b.PLL2SF, 0); + } + #endif + + if (stop_hoco) + { + R_SYSTEM->HOCOCR = 1; + FSP_HARDWARE_REGISTER_WAIT(R_SYSTEM->OSCSF_b.HOCOSF, 0); + } +} + +#endif + +/*******************************************************************************************************************//** + * Initializes system clocks. Makes no assumptions about current register settings. + **********************************************************************************************************************/ +void bsp_clock_init (void) +{ + /* Unlock CGC and LPM protection registers. */ +#if BSP_FEATURE_TZ_VERSION == 2 && BSP_TZ_NONSECURE_BUILD == 1 + R_SYSTEM->PRCR_NS = (uint16_t) BSP_PRV_PRCR_UNLOCK; +#else + R_SYSTEM->PRCR = (uint16_t) BSP_PRV_PRCR_UNLOCK; +#endif + +#if BSP_FEATURE_BSP_FLASH_CACHE + #if !BSP_CFG_USE_LOW_VOLTAGE_MODE && BSP_FEATURE_BSP_FLASH_CACHE_DISABLE_OPM + + /* Disable flash cache before modifying MEMWAIT, SOPCCR, or OPCCR. */ + R_BSP_FlashCacheDisable(); + #else + + /* Enable the flash cache and don't disable it while running from flash. On these MCUs, the flash cache does not + * need to be disabled when adjusting the operating power mode. */ + R_BSP_FlashCacheEnable(); + #endif +#endif + +#if BSP_FEATURE_BSP_FLASH_PREFETCH_BUFFER + + /* Disable the flash prefetch buffer. */ + R_FACI_LP->PFBER = 0; +#endif + + bsp_clock_freq_var_init(); + +#if BSP_CFG_STARTUP_CLOCK_REG_NOT_RESET + + /* Transition to an intermediate clock configuration in order to prepare for writing the new clock configuraiton. */ + bsp_soft_reset_prepare(); +#endif + +#if BSP_CLOCK_CFG_MAIN_OSC_POPULATED + #if BSP_CFG_STARTUP_CLOCK_REG_NOT_RESET + + /* Update the main oscillator drive, source, and wait states if the main oscillator is stopped. If the main + * oscillator is running, the drive, source, and wait states are assumed to be already set appropriately. */ + if (R_SYSTEM->MOSCCR) + { + /* Don't write to MOSCWTCR unless MOSTP is 1 and MOSCSF = 0. */ + FSP_HARDWARE_REGISTER_WAIT(R_SYSTEM->OSCSF_b.MOSCSF, 0U); + + /* Configure main oscillator drive. */ + R_SYSTEM->MOMCR = BSP_PRV_MOMCR; + + /* Set the main oscillator wait time. */ + R_SYSTEM->MOSCWTCR = (uint8_t) BSP_CLOCK_CFG_MAIN_OSC_WAIT; + } + + #else + + /* Configure main oscillator drive. */ + R_SYSTEM->MOMCR = BSP_PRV_MOMCR; + + /* Set the main oscillator wait time. */ + R_SYSTEM->MOSCWTCR = (uint8_t) BSP_CLOCK_CFG_MAIN_OSC_WAIT; + #endif +#endif + + /* Initialize the sub-clock according to the BSP configuration. */ + bsp_sosc_init(); + +#if BSP_FEATURE_CGC_HAS_HOCOWTCR + #if BSP_FEATURE_CGC_HOCOWTCR_64MHZ_ONLY + + /* These MCUs only require writes to HOCOWTCR if HOCO is set to 64 MHz. */ + #if 64000000 == BSP_HOCO_HZ + #if BSP_CFG_USE_LOW_VOLTAGE_MODE + + /* Wait for HOCO to stabilize before writing to HOCOWTCR. */ + FSP_HARDWARE_REGISTER_WAIT(R_SYSTEM->OSCSF_b.HOCOSF, 1U); + #else + + /* HOCO is assumed to be stable because these MCUs also require the HOCO to be stable before changing the operating + * power control mode. */ + #endif + R_SYSTEM->HOCOWTCR = BSP_FEATURE_CGC_HOCOWTCR_VALUE; + #endif + #else + + /* These MCUs require HOCOWTCR to be set to the maximum value except in snooze mode. There is no restriction to + * writing this register. */ + R_SYSTEM->HOCOWTCR = BSP_FEATURE_CGC_HOCOWTCR_VALUE; + #endif +#endif + +#if !BSP_CFG_USE_LOW_VOLTAGE_MODE + #if BSP_CFG_STARTUP_CLOCK_REG_NOT_RESET + + /* Switch to high-speed to prevent any issues with the subsequent clock configurations. */ + bsp_prv_operating_mode_set(BSP_PRV_OPERATING_MODE_HIGH_SPEED); + #elif BSP_FEATURE_CGC_LOW_VOLTAGE_MAX_FREQ_HZ > 0U + + /* MCUs that support low voltage mode start up in low voltage mode. */ + bsp_prv_operating_mode_opccr_set(BSP_PRV_OPERATING_MODE_HIGH_SPEED); + + #if !BSP_PRV_HOCO_USED + + /* HOCO must be running during startup in low voltage mode. If HOCO is not used, turn it off after exiting low + * voltage mode. */ + R_SYSTEM->HOCOCR = 1U; + #endif + #elif BSP_FEATURE_CGC_STARTUP_OPCCR_MODE != BSP_PRV_OPERATING_MODE_HIGH_SPEED + + /* Some MCUs do not start in high speed mode. */ + bsp_prv_operating_mode_opccr_set(BSP_PRV_OPERATING_MODE_HIGH_SPEED); + #endif +#endif + + /* The FLL function can only be used when the subclock is running. */ +#if BSP_PRV_HOCO_USE_FLL + + /* If FLL is to be used configure FLLCR1 and FLLCR2 before starting HOCO. */ + R_SYSTEM->FLLCR2 = BSP_PRV_FLL_FLLCR2; + R_SYSTEM->FLLCR1 = 1U; +#endif + + /* Start all clocks used by other clocks first. */ +#if BSP_PRV_HOCO_USED + R_SYSTEM->HOCOCR = 0U; + + #if BSP_PRV_HOCO_USE_FLL && (BSP_CLOCKS_SOURCE_CLOCK_HOCO != BSP_CFG_PLL_SOURCE) + + /* If FLL is enabled, wait for the FLL stabilization delay (1.8 ms) */ + R_BSP_SoftwareDelay(BSP_PRV_FLL_STABILIZATION_TIME_US, BSP_DELAY_UNITS_MICROSECONDS); + #endif + + #if BSP_PRV_STABILIZE_HOCO + + /* Wait for HOCO to stabilize. */ + FSP_HARDWARE_REGISTER_WAIT(R_SYSTEM->OSCSF_b.HOCOSF, 1U); + #endif +#endif +#if BSP_PRV_MOCO_USED + #if BSP_CFG_STARTUP_CLOCK_REG_NOT_RESET + + /* If the MOCO is not running, start it and wait for it to stabilize using a software delay. */ + if (0U != R_SYSTEM->MOCOCR) + { + R_SYSTEM->MOCOCR = 0U; + #if BSP_PRV_STABILIZE_MOCO + R_BSP_SoftwareDelay(BSP_FEATURE_CGC_MOCO_STABILIZATION_MAX_US, BSP_DELAY_UNITS_MICROSECONDS); + #endif + } + #endif +#endif +#if BSP_PRV_LOCO_USED + #if BSP_CFG_STARTUP_CLOCK_REG_NOT_RESET + + /* If the LOCO is not running, start it and wait for it to stabilize using a software delay. */ + if (0U != R_SYSTEM->LOCOCR) + { + R_SYSTEM->LOCOCR = 0U; + #if BSP_PRV_STABILIZE_LOCO + R_BSP_SoftwareDelay(BSP_FEATURE_CGC_LOCO_STABILIZATION_MAX_US, BSP_DELAY_UNITS_MICROSECONDS); + #endif + } + + #else + R_SYSTEM->LOCOCR = 0U; + #if BSP_PRV_STABILIZE_LOCO + R_BSP_SoftwareDelay(BSP_FEATURE_CGC_LOCO_STABILIZATION_MAX_US, BSP_DELAY_UNITS_MICROSECONDS); + #endif + #endif +#endif +#if BSP_PRV_MAIN_OSC_USED + #if BSP_CFG_STARTUP_CLOCK_REG_NOT_RESET + if (R_SYSTEM->MOSCCR) + #endif + { + R_SYSTEM->MOSCCR = 0U; + + #if BSP_PRV_STABILIZE_MAIN_OSC + + /* Wait for main oscillator to stabilize. */ + FSP_HARDWARE_REGISTER_WAIT(R_SYSTEM->OSCSF_b.MOSCSF, 1U); + #endif + } +#endif + + /* Start clocks that require other clocks. At this point, all dependent clocks are running and stable if needed. */ + +#if BSP_PRV_STARTUP_OPERATING_MODE != BSP_PRV_OPERATING_MODE_LOW_SPEED + #if BSP_FEATURE_CGC_HAS_PLL2 && BSP_CFG_PLL2_SOURCE != BSP_CLOCKS_CLOCK_DISABLED + #if BSP_CFG_STARTUP_CLOCK_REG_NOT_RESET + if (R_SYSTEM->PLL2CR) + #endif + { + R_SYSTEM->PLL2CCR = BSP_PRV_PLL2CCR; + #if (3U == BSP_FEATURE_CGC_PLLCCR_TYPE) + R_SYSTEM->PLL2CCR2 = BSP_PRV_PLL2CCR2; + #endif + + /* Start PLL2. */ + R_SYSTEM->PLL2CR = 0U; + } + #endif /* BSP_FEATURE_CGC_HAS_PLL2 && BSP_CFG_PLL2_ENABLE */ +#endif + +#if BSP_PRV_PLL_SUPPORTED && BSP_PRV_PLL_USED + #if BSP_CFG_STARTUP_CLOCK_REG_NOT_RESET + if (R_SYSTEM->PLLCR) + #endif + { + #if (1U == BSP_FEATURE_CGC_PLLCCR_TYPE) || (4U == BSP_FEATURE_CGC_PLLCCR_TYPE) + R_SYSTEM->PLLCCR = (uint16_t) BSP_PRV_PLLCCR; + #elif 2U == BSP_FEATURE_CGC_PLLCCR_TYPE + R_SYSTEM->PLLCCR2 = (uint8_t) BSP_PRV_PLLCCR; + #elif 3U == BSP_FEATURE_CGC_PLLCCR_TYPE + R_SYSTEM->PLLCCR = (uint16_t) BSP_PRV_PLLCCR; + R_SYSTEM->PLLCCR2 = (uint16_t) BSP_PRV_PLLCCR2; + #endif + + #if BSP_FEATURE_CGC_PLLCCR_WAIT_US > 0 + + /* This loop is provided to ensure at least 1 us passes between setting PLLMUL and clearing PLLSTP on some + * MCUs (see PLLSTP notes in Section 8.2.4 "PLL Control Register (PLLCR)" of the RA4M1 manual R01UH0887EJ0100). + * Five loops are needed here to ensure the most efficient path takes at least 1 us from the setting of + * PLLMUL to the clearing of PLLSTP. HOCO is the fastest clock we can be using here since PLL cannot be running + * while setting PLLCCR. */ + bsp_prv_software_delay_loop(BSP_DELAY_LOOPS_CALCULATE(BSP_PRV_MAX_HOCO_CYCLES_PER_US)); + #endif + + R_SYSTEM->PLLCR = 0U; + + #if BSP_PRV_STABILIZE_PLL + + /* Wait for PLL to stabilize. */ + FSP_HARDWARE_REGISTER_WAIT(R_SYSTEM->OSCSF_b.PLLSF, 1U); + #endif + } +#endif + + /* Set source clock and dividers. */ +#if BSP_CFG_STARTUP_CLOCK_REG_NOT_RESET + #if BSP_TZ_SECURE_BUILD + + /* In case of soft reset, make sure callback pointer is NULL initially. */ + g_bsp_clock_update_callback = NULL; + #endif + + #if BSP_FEATURE_CGC_HAS_CPUCLK + bsp_prv_clock_set(BSP_CFG_CLOCK_SOURCE, BSP_PRV_STARTUP_SCKDIVCR, BSP_PRV_STARTUP_SCKDIVCR2); + #else + bsp_prv_clock_set(BSP_CFG_CLOCK_SOURCE, BSP_PRV_STARTUP_SCKDIVCR, 0); + #endif +#else + bsp_prv_clock_set_hard_reset(); +#endif + + /* If the MCU can run in a lower power mode, apply the optimal operating speed mode. */ +#if !BSP_CFG_USE_LOW_VOLTAGE_MODE + #if BSP_PRV_STARTUP_OPERATING_MODE != BSP_PRV_OPERATING_MODE_HIGH_SPEED + bsp_prv_operating_mode_set(BSP_PRV_STARTUP_OPERATING_MODE); + #endif +#endif + +#if defined(BSP_PRV_POWER_USE_DCDC) && (BSP_PRV_POWER_USE_DCDC == BSP_PRV_POWER_DCDC_STARTUP) && \ + (BSP_PRV_STARTUP_OPERATING_MODE <= BSP_PRV_OPERATING_MODE_MIDDLE_SPEED) + + /* Start DCDC as part of BSP startup when configured (BSP_CFG_DCDC_ENABLE == 2). */ + R_BSP_PowerModeSet(BSP_CFG_DCDC_VOLTAGE_RANGE); +#endif + + /* Configure BCLK if it exists on the MCU. */ +#ifdef BSP_CFG_BCLK_OUTPUT + #if BSP_CFG_BCLK_OUTPUT > 0U + R_SYSTEM->BCKCR = BSP_CFG_BCLK_OUTPUT - 1U; + R_SYSTEM->EBCKOCR = 1U; + #else + #if BSP_CFG_STARTUP_CLOCK_REG_NOT_RESET + R_SYSTEM->EBCKOCR = 0U; + #endif + #endif +#endif + + /* Configure SDRAM clock if it exists on the MCU. */ +#ifdef BSP_CFG_SDCLK_OUTPUT + R_SYSTEM->SDCKOCR = BSP_CFG_SDCLK_OUTPUT; +#endif + + /* Configure CLKOUT. */ +#if BSP_CFG_CLKOUT_SOURCE == BSP_CLOCKS_CLOCK_DISABLED + #if BSP_CFG_STARTUP_CLOCK_REG_NOT_RESET + R_SYSTEM->CKOCR = 0U; + #endif +#else + uint8_t ckocr = BSP_CFG_CLKOUT_SOURCE | (BSP_CFG_CLKOUT_DIV << BSP_PRV_CKOCR_CKODIV_BIT); + R_SYSTEM->CKOCR = ckocr; + ckocr |= (1U << BSP_PRV_CKOCR_CKOEN_BIT); + R_SYSTEM->CKOCR = ckocr; +#endif + +#if BSP_PRV_STARTUP_OPERATING_MODE != BSP_PRV_OPERATING_MODE_LOW_SPEED + #if BSP_CFG_UCK_SOURCE != BSP_CLOCKS_CLOCK_DISABLED + + /* If the USB clock has a divider setting in SCKDIVCR2. */ + #if BSP_FEATURE_BSP_HAS_USB_CLOCK_DIV && !BSP_FEATURE_BSP_HAS_USBCKDIVCR + R_SYSTEM->SCKDIVCR2 = BSP_PRV_UCK_DIV << BSP_PRV_SCKDIVCR2_UCK_BIT; + #endif /* BSP_FEATURE_BSP_HAS_USB_CLOCK_DIV && !BSP_FEATURE_BSP_HAS_USBCKDIVCR */ + + /* If there is a REQ bit in USBCKCR, then follow sequence from section 8.2.29 in RA6M4 hardware manual R01UH0890EJ0050. */ + #if BSP_FEATURE_BSP_HAS_USB_CLOCK_REQ + + /* Request to change the USB Clock. */ + R_SYSTEM->USBCKCR_b.USBCKSREQ = 1; + + /* Wait for the clock to be stopped. */ + FSP_HARDWARE_REGISTER_WAIT(R_SYSTEM->USBCKCR_b.USBCKSRDY, 1U); + + /* Write the settings. */ + R_SYSTEM->USBCKDIVCR = BSP_PRV_UCK_DIV; + + /* Select the USB Clock without enabling it. */ + R_SYSTEM->USBCKCR = BSP_CFG_UCK_SOURCE | R_SYSTEM_USBCKCR_USBCKSREQ_Msk; + #endif /* BSP_FEATURE_BSP_HAS_USB_CLOCK_REQ */ + + #if BSP_FEATURE_BSP_HAS_USB_CLOCK_SEL + + /* Some MCUs use an alternate register for selecting the USB clock source. */ + #if BSP_FEATURE_BSP_HAS_USB_CLOCK_SEL_ALT + #if BSP_CLOCKS_SOURCE_CLOCK_PLL == BSP_CFG_UCK_SOURCE + + /* Write to USBCKCR to select the PLL. */ + R_SYSTEM->USBCKCR_ALT = 0; + #elif BSP_CLOCKS_SOURCE_CLOCK_HOCO == BSP_CFG_UCK_SOURCE + + /* Write to USBCKCR to select the HOCO. */ + R_SYSTEM->USBCKCR_ALT = 1; + #endif + #else + + /* Select the USB Clock. */ + R_SYSTEM->USBCKCR = BSP_CFG_UCK_SOURCE; + #endif + #endif /* BSP_FEATURE_BSP_HAS_USB_CLOCK_REQ */ + + #if BSP_FEATURE_BSP_HAS_USB_CLOCK_REQ + + /* Wait for the USB Clock to be started. */ + FSP_HARDWARE_REGISTER_WAIT(R_SYSTEM->USBCKCR_b.USBCKSRDY, 0U); + #endif /* BSP_FEATURE_BSP_HAS_USB_CLOCK_REQ */ + #endif /* BSP_CFG_USB_ENABLE */ +#endif /* BSP_PRV_STARTUP_OPERATING_MODE != BSP_PRV_OPERATING_MODE_LOW_SPEED */ + + /* Set the OCTASPI clock if it exists on the MCU (See section 8.2.30 of the RA6M4 hardware manual R01UH0890EJ0050). */ +#if BSP_FEATURE_BSP_HAS_OCTASPI_CLOCK && BSP_CFG_OCTA_SOURCE != BSP_CLOCKS_CLOCK_DISABLED + bsp_octaclk_settings_t octaclk_settings = + { + .source_clock = (bsp_clocks_source_t) BSP_CFG_OCTA_SOURCE, + .divider = (bsp_clocks_octaclk_div_t) BSP_CFG_OCTA_DIV + }; + R_BSP_OctaclkUpdate(&octaclk_settings); +#endif /* BSP_FEATURE_BSP_HAS_OCTASPI_CLOCK && BSP_CFG_OCTASPI_CLOCK_ENABLE */ + + /* Set the CANFD clock if it exists on the MCU */ +#if BSP_FEATURE_BSP_HAS_CANFD_CLOCK && (BSP_CFG_CANFDCLK_SOURCE != BSP_CLOCKS_CLOCK_DISABLED) && \ + (BSP_CFG_CANFDCLK_SOURCE != BSP_CLOCKS_SOURCE_CLOCK_MAIN_OSC) + + bsp_peripheral_clock_set(&R_SYSTEM->CANFDCKCR, + &R_SYSTEM->CANFDCKDIVCR, + BSP_CFG_CANFDCLK_DIV, + BSP_CFG_CANFDCLK_SOURCE); +#endif + + /* Set the SCISPI clock if it exists on the MCU */ +#if BSP_FEATURE_BSP_HAS_SCISPI_CLOCK && (BSP_CFG_SCISPICLK_SOURCE != BSP_CLOCKS_CLOCK_DISABLED) + bsp_peripheral_clock_set(&R_SYSTEM->SCISPICKCR, + &R_SYSTEM->SCISPICKDIVCR, + BSP_CFG_SCISPICLK_DIV, + BSP_CFG_SCISPICLK_SOURCE); +#endif + + /* Set the SCI clock if it exists on the MCU */ +#if BSP_FEATURE_BSP_HAS_SCI_CLOCK && (BSP_CFG_SCICLK_SOURCE != BSP_CLOCKS_CLOCK_DISABLED) + bsp_peripheral_clock_set(&R_SYSTEM->SCICKCR, &R_SYSTEM->SCICKDIVCR, BSP_CFG_SCICLK_DIV, BSP_CFG_SCICLK_SOURCE); +#endif + + /* Set the SPI clock if it exists on the MCU */ +#if BSP_FEATURE_BSP_HAS_SPI_CLOCK && (BSP_CFG_SPICLK_SOURCE != BSP_CLOCKS_CLOCK_DISABLED) + bsp_peripheral_clock_set(&R_SYSTEM->SPICKCR, &R_SYSTEM->SPICKDIVCR, BSP_CFG_SPICLK_DIV, BSP_CFG_SPICLK_SOURCE); +#endif + + /* Set the GPT clock if it exists on the MCU */ +#if BSP_FEATURE_BSP_HAS_GPT_CLOCK && (BSP_CFG_GPTCLK_SOURCE != BSP_CLOCKS_CLOCK_DISABLED) + bsp_peripheral_clock_set(&R_SYSTEM->GPTCKCR, &R_SYSTEM->GPTCKDIVCR, BSP_CFG_GPTCLK_DIV, BSP_CFG_GPTCLK_SOURCE); +#endif + + /* Set the IIC clock if it exists on the MCU */ +#if BSP_FEATURE_BSP_HAS_IIC_CLOCK && (BSP_CFG_IICCLK_SOURCE != BSP_CLOCKS_CLOCK_DISABLED) + bsp_peripheral_clock_set(&R_SYSTEM->IICCKCR, &R_SYSTEM->IICCKDIVCR, BSP_CFG_IICCLK_DIV, BSP_CFG_IICCLK_SOURCE); +#endif + + /* Set the CEC clock if it exists on the MCU */ +#if BSP_FEATURE_BSP_HAS_CEC_CLOCK && (BSP_CFG_CECCLK_SOURCE != BSP_CLOCKS_CLOCK_DISABLED) + bsp_peripheral_clock_set(&R_SYSTEM->CECCKCR, &R_SYSTEM->CECCKDIVCR, BSP_CFG_CECCLK_DIV, BSP_CFG_CECCLK_SOURCE); +#endif + + /* Set the I3C clock if it exists on the MCU */ +#if BSP_FEATURE_BSP_HAS_I3C_CLOCK && (BSP_CFG_I3CCLK_SOURCE != BSP_CLOCKS_CLOCK_DISABLED) + bsp_peripheral_clock_set(&R_SYSTEM->I3CCKCR, &R_SYSTEM->I3CCKDIVCR, BSP_CFG_I3CCLK_DIV, BSP_CFG_I3CCLK_SOURCE); +#endif + + /* Set the LCD clock if it exists on the MCU */ +#if BSP_FEATURE_BSP_HAS_LCD_CLOCK && (BSP_CFG_LCDCLK_SOURCE != BSP_CLOCKS_CLOCK_DISABLED) + bsp_peripheral_clock_set(&R_SYSTEM->LCDCKCR, &R_SYSTEM->LCDCKDIVCR, BSP_CFG_LCDCLK_DIV, BSP_CFG_LCDCLK_SOURCE); +#endif + + /* Set the USB-HS clock if it exists on the MCU */ +#if BSP_FEATURE_BSP_HAS_USB60_CLOCK_REQ && (BSP_CFG_U60CK_SOURCE != BSP_CLOCKS_CLOCK_DISABLED) + bsp_peripheral_clock_set(&R_SYSTEM->USB60CKCR, &R_SYSTEM->USB60CKDIVCR, BSP_CFG_U60CK_DIV, BSP_CFG_U60CK_SOURCE); +#endif + + /* Set the SDADC clock if it exists on the MCU. */ +#if BSP_FEATURE_BSP_HAS_SDADC_CLOCK && (BSP_CFG_SDADC_CLOCK_SOURCE != BSP_CLOCKS_CLOCK_DISABLED) + #if BSP_CFG_SDADC_CLOCK_SOURCE == BSP_CLOCKS_SOURCE_CLOCK_HOCO + uint8_t sdadcckcr = 1U; + #elif BSP_CFG_SDADC_CLOCK_SOURCE == BSP_CLOCKS_SOURCE_CLOCK_PLL + uint8_t sdadcckcr = 2U; + #else /* BSP_CLOCK_SOURCE_CLOCK_MOSC */ + uint8_t sdadcckcr = 0U; + #endif + + /* SDADC isn't controlled like the other peripheral clocks so we cannot use the generic setter. */ + R_SYSTEM->SDADCCKCR = sdadcckcr & R_SYSTEM_SDADCCKCR_SDADCCKSEL_Msk; +#endif + + /* Lock CGC and LPM protection registers. */ +#if BSP_FEATURE_TZ_VERSION == 2 && BSP_TZ_NONSECURE_BUILD == 1 + R_SYSTEM->PRCR_NS = (uint16_t) BSP_PRV_PRCR_LOCK; +#else + R_SYSTEM->PRCR = (uint16_t) BSP_PRV_PRCR_LOCK; +#endif + +#if BSP_FEATURE_BSP_FLASH_CACHE && BSP_FEATURE_BSP_FLASH_CACHE_DISABLE_OPM + R_BSP_FlashCacheEnable(); +#endif + +#if BSP_FEATURE_BSP_FLASH_PREFETCH_BUFFER + R_FACI_LP->PFBER = 1; +#endif +} + +#if BSP_CLOCK_CFG_SUBCLOCK_POPULATED + +/*******************************************************************************************************************//** + * This function is called during SOSC stabilization when Sub-Clock oscillator is populated. + * This function is declared as a weak symbol higher up in this file because it is meant to be overridden by a user + * implemented version. One of the main uses for this function is to update the IWDT/WDT Refresh Register if an + * application starts IWDT/WDT automatically after reset. To use this function just copy this function into your own + * code and modify it to meet your needs. + * + * @param[in] delay_ms Stabilization Time for the clock. + **********************************************************************************************************************/ +void R_BSP_SubClockStabilizeWait (uint32_t delay_ms) +{ + /* Wait for clock to stabilize. */ + R_BSP_SoftwareDelay(delay_ms, BSP_DELAY_UNITS_MILLISECONDS); +} + +/*******************************************************************************************************************//** + * This function is called during SOSC registers initialization when Sub-Clock oscillator is populated. + * This function is declared as a weak symbol higher up in this file because it is meant to be overridden by a user + * implemented version. One of the main uses for this function is to skip waiting for stabilization time after reset. + * To use this function just copy this function into your own code and modify it to meet your needs. + * + * @param[in] delay_ms Stabilization Time for the clock. + **********************************************************************************************************************/ +void R_BSP_SubClockStabilizeWaitAfterReset (uint32_t delay_ms) +{ + #if (BSP_CLOCKS_SOURCE_CLOCK_SUBCLOCK == BSP_CFG_CLOCK_SOURCE) || (BSP_PRV_HOCO_USE_FLL) + + /* Wait for clock to stabilize after reset. */ + R_BSP_SoftwareDelay(delay_ms, BSP_DELAY_UNITS_MILLISECONDS); + #else + FSP_PARAMETER_NOT_USED(delay_ms); + #endif +} + +#endif + +#if (BSP_PRV_HAS_ENABLED_PERIPHERAL_CLOCKS == 1U) + +/*******************************************************************************************************************//** + * Set the peripheral clock on the MCU + * + * @param[in] p_clk_ctrl_reg Pointer to peripheral clock control register + * @param[in] p_clk_div_reg Pointer to peripheral clock division control register + * @param[in] peripheral_clk_div Peripheral clock division + * @param[in] peripheral_clk_source Peripheral clock source + * + * @return The wait states for FLWT required after the clock change (or 0 if FLWT does not exist). + **********************************************************************************************************************/ +static void bsp_peripheral_clock_set (volatile uint8_t * p_clk_ctrl_reg, + volatile uint8_t * p_clk_div_reg, + uint8_t peripheral_clk_div, + uint8_t peripheral_clk_source) +{ + /* Request to stop the peripheral clock. */ + *p_clk_ctrl_reg |= (uint8_t) BSP_PRV_PERIPHERAL_CLK_REQ_BIT_MASK; + + /* Wait for the peripheral clock to stop. */ + FSP_HARDWARE_REGISTER_WAIT((uint8_t) ((*p_clk_ctrl_reg & BSP_PRV_PERIPHERAL_CLK_RDY_BIT_MASK) >> + BSP_PRV_PERIPHERAL_CLK_RDY_BIT_POS), + 1U); + + /* Select the peripheral clock divisor and source. */ + *p_clk_div_reg = peripheral_clk_div; + *p_clk_ctrl_reg = peripheral_clk_source | BSP_PRV_PERIPHERAL_CLK_REQ_BIT_MASK | + BSP_PRV_PERIPHERAL_CLK_RDY_BIT_MASK; + + /* Request to start the peripheral clock. */ + *p_clk_ctrl_reg &= (uint8_t) ~BSP_PRV_PERIPHERAL_CLK_REQ_BIT_MASK; + + /* Wait for the peripheral clock to start. */ + FSP_HARDWARE_REGISTER_WAIT((uint8_t) ((*p_clk_ctrl_reg & BSP_PRV_PERIPHERAL_CLK_RDY_BIT_MASK) >> + BSP_PRV_PERIPHERAL_CLK_RDY_BIT_POS), + 0U); +} + +#endif + +/*******************************************************************************************************************//** + * Increases the ROM and RAM wait state settings to the minimum required based on the requested clock change. + * + * @param[in] requested_freq_hz New core clock frequency after the clock change. + * + * @return The wait states for FLWT required after the clock change (or 0 if FLWT does not exist). + **********************************************************************************************************************/ +static uint8_t bsp_clock_set_prechange (uint32_t requested_freq_hz) +{ + uint8_t new_rom_wait_state = 0U; + + FSP_PARAMETER_NOT_USED(requested_freq_hz); + +#if BSP_FEATURE_CGC_HAS_SRAMWTSC + + /* Wait states for SRAM (SRAM0, SRAM1 and SRAM0 (DED)). */ + if (requested_freq_hz > BSP_FEATURE_BSP_SYS_CLOCK_FREQ_NO_RAM_WAITS) + { + #if BSP_FEATURE_CGC_HAS_SRAMPRCR2 == 1 + R_SRAM->SRAMPRCR2 = BSP_PRV_SRAM_UNLOCK; + R_SRAM->SRAMWTSC = BSP_FEATURE_SRAM_SRAMWTSC_WAIT_CYCLE_ENABLE; + R_SRAM->SRAMPRCR2 = BSP_PRV_SRAM_LOCK; + #else + R_SRAM->SRAMPRCR = BSP_PRV_SRAM_UNLOCK; + + /* Execute data memory barrier before and after setting the wait states, See Section 50.4.2 in the RA8M1 + * manual R01UH0994EJ0100 */ + __DMB(); + R_SRAM->SRAMWTSC = BSP_FEATURE_SRAM_SRAMWTSC_WAIT_CYCLE_ENABLE; + __DMB(); + + R_SRAM->SRAMPRCR = BSP_PRV_SRAM_LOCK; + #endif + } +#endif + +#if BSP_FEATURE_CGC_HAS_FLWT + + /* Calculate the wait states for ROM */ + #if BSP_FEATURE_BSP_SYS_CLOCK_FREQ_TWO_ROM_WAITS == 0 + if (requested_freq_hz <= BSP_FEATURE_BSP_SYS_CLOCK_FREQ_ONE_ROM_WAITS) + { + new_rom_wait_state = BSP_PRV_ROM_ZERO_WAIT_CYCLES; + } + else + { + new_rom_wait_state = BSP_PRV_ROM_ONE_WAIT_CYCLES; + } + + #elif BSP_FEATURE_BSP_SYS_CLOCK_FREQ_THREE_ROM_WAITS == 0 + if (requested_freq_hz <= BSP_FEATURE_BSP_SYS_CLOCK_FREQ_ONE_ROM_WAITS) + { + new_rom_wait_state = BSP_PRV_ROM_ZERO_WAIT_CYCLES; + } + else if (requested_freq_hz <= BSP_FEATURE_BSP_SYS_CLOCK_FREQ_TWO_ROM_WAITS) + { + new_rom_wait_state = BSP_PRV_ROM_ONE_WAIT_CYCLES; + } + else + { + new_rom_wait_state = BSP_PRV_ROM_TWO_WAIT_CYCLES; + } + + #elif BSP_FEATURE_BSP_SYS_CLOCK_FREQ_FOUR_ROM_WAITS == 0 + if (requested_freq_hz <= BSP_FEATURE_BSP_SYS_CLOCK_FREQ_ONE_ROM_WAITS) + { + new_rom_wait_state = BSP_PRV_ROM_ZERO_WAIT_CYCLES; + } + else if (requested_freq_hz <= BSP_FEATURE_BSP_SYS_CLOCK_FREQ_TWO_ROM_WAITS) + { + new_rom_wait_state = BSP_PRV_ROM_ONE_WAIT_CYCLES; + } + else if (requested_freq_hz <= BSP_FEATURE_BSP_SYS_CLOCK_FREQ_THREE_ROM_WAITS) + { + new_rom_wait_state = BSP_PRV_ROM_TWO_WAIT_CYCLES; + } + else + { + new_rom_wait_state = BSP_PRV_ROM_THREE_WAIT_CYCLES; + } + + #elif BSP_FEATURE_BSP_SYS_CLOCK_FREQ_FIVE_ROM_WAITS == 0 + if (requested_freq_hz <= BSP_FEATURE_BSP_SYS_CLOCK_FREQ_ONE_ROM_WAITS) + { + new_rom_wait_state = BSP_PRV_ROM_ZERO_WAIT_CYCLES; + } + else if (requested_freq_hz <= BSP_FEATURE_BSP_SYS_CLOCK_FREQ_TWO_ROM_WAITS) + { + new_rom_wait_state = BSP_PRV_ROM_ONE_WAIT_CYCLES; + } + else if (requested_freq_hz <= BSP_FEATURE_BSP_SYS_CLOCK_FREQ_THREE_ROM_WAITS) + { + new_rom_wait_state = BSP_PRV_ROM_TWO_WAIT_CYCLES; + } + else if (requested_freq_hz <= BSP_FEATURE_BSP_SYS_CLOCK_FREQ_FOUR_ROM_WAITS) + { + new_rom_wait_state = BSP_PRV_ROM_THREE_WAIT_CYCLES; + } + else + { + new_rom_wait_state = BSP_PRV_ROM_FOUR_WAIT_CYCLES; + } + + #else + if (requested_freq_hz <= BSP_FEATURE_BSP_SYS_CLOCK_FREQ_ONE_ROM_WAITS) + { + new_rom_wait_state = BSP_PRV_ROM_ZERO_WAIT_CYCLES; + } + else if (requested_freq_hz <= BSP_FEATURE_BSP_SYS_CLOCK_FREQ_TWO_ROM_WAITS) + { + new_rom_wait_state = BSP_PRV_ROM_ONE_WAIT_CYCLES; + } + else if (requested_freq_hz <= BSP_FEATURE_BSP_SYS_CLOCK_FREQ_THREE_ROM_WAITS) + { + new_rom_wait_state = BSP_PRV_ROM_TWO_WAIT_CYCLES; + } + else if (requested_freq_hz <= BSP_FEATURE_BSP_SYS_CLOCK_FREQ_FOUR_ROM_WAITS) + { + new_rom_wait_state = BSP_PRV_ROM_THREE_WAIT_CYCLES; + } + else if (requested_freq_hz <= BSP_FEATURE_BSP_SYS_CLOCK_FREQ_FIVE_ROM_WAITS) + { + new_rom_wait_state = BSP_PRV_ROM_FOUR_WAIT_CYCLES; + } + else + { + new_rom_wait_state = BSP_PRV_ROM_FIVE_WAIT_CYCLES; + } + #endif + + /* If more wait states are required after the change, then set the wait states before changing the clock. */ + if (new_rom_wait_state > R_FCACHE->FLWT) + { + R_FCACHE->FLWT = new_rom_wait_state; + } +#endif + +#if BSP_FEATURE_CGC_HAS_MEMWAIT && !BSP_PRV_CLOCK_SUPPLY_TYPE_B + if (requested_freq_hz > BSP_PRV_MEMWAIT_MAX_ZERO_WAIT_FREQ) + { + /* The MCU must be in high speed mode to set wait states to 2. The MCU should already be in high speed mode as + * a precondition to bsp_prv_clock_set. */ + R_SYSTEM->MEMWAIT = BSP_PRV_MEMWAIT_TWO_WAIT_CYCLES; + } +#endif + +#if BSP_FEATURE_CGC_HAS_FLDWAITR && !BSP_PRV_CLOCK_SUPPLY_TYPE_B + if (requested_freq_hz > BSP_PRV_FLDWAITR_MAX_ONE_WAIT_FREQ) + { + /* The MCU must be in high speed mode to set wait states to 2. The MCU should already be in high speed mode as + * a precondition to bsp_prv_clock_set. */ + BSP_PRV_FLDWAITR_REG_ACCESS = BSP_PRV_FLDWAITR_TWO_WAIT_CYCLES; + } +#endif + + return new_rom_wait_state; +} + +/*******************************************************************************************************************//** + * Decreases the ROM and RAM wait state settings to the minimum supported based on the applied clock change. + * + * @param[in] updated_freq_hz New clock frequency after clock change + * @param[in] new_rom_wait_state Optimal value for FLWT if it exists, 0 if FLWT does not exist on the MCU + **********************************************************************************************************************/ +static void bsp_clock_set_postchange (uint32_t updated_freq_hz, uint8_t new_rom_wait_state) +{ + /* These variables are unused for some MCUs. */ + FSP_PARAMETER_NOT_USED(new_rom_wait_state); + FSP_PARAMETER_NOT_USED(updated_freq_hz); + +#if BSP_FEATURE_CGC_HAS_SRAMWTSC + + /* Wait states for SRAM (SRAM0, SRAM1 and SRAM0 (DED)). */ + if (updated_freq_hz <= BSP_FEATURE_BSP_SYS_CLOCK_FREQ_NO_RAM_WAITS) + { + #if BSP_FEATURE_CGC_HAS_SRAMPRCR2 == 1 + R_SRAM->SRAMPRCR2 = BSP_PRV_SRAM_UNLOCK; + R_SRAM->SRAMWTSC = BSP_PRV_SRAMWTSC_WAIT_CYCLES_DISABLE; + R_SRAM->SRAMPRCR2 = BSP_PRV_SRAM_LOCK; + #else + R_SRAM->SRAMPRCR = BSP_PRV_SRAM_UNLOCK; + + /* Execute data memory barrier before and after setting the wait states,See Section 50.4.2 in the RA8M1 + * manual R01UH0994EJ0100*/ + __DMB(); + R_SRAM->SRAMWTSC = BSP_PRV_SRAMWTSC_WAIT_CYCLES_DISABLE; + __DMB(); + + R_SRAM->SRAMPRCR = BSP_PRV_SRAM_LOCK; + #endif + } +#endif + +#if BSP_FEATURE_CGC_HAS_FLWT + if (new_rom_wait_state != R_FCACHE->FLWT) + { + R_FCACHE->FLWT = new_rom_wait_state; + } +#endif + +#if BSP_FEATURE_CGC_HAS_MEMWAIT && !BSP_PRV_CLOCK_SUPPLY_TYPE_B + if (updated_freq_hz <= BSP_PRV_MEMWAIT_MAX_ZERO_WAIT_FREQ) + { + R_SYSTEM->MEMWAIT = BSP_PRV_MEMWAIT_ZERO_WAIT_CYCLES; + } +#endif + +#if BSP_FEATURE_CGC_HAS_FLDWAITR && !BSP_PRV_CLOCK_SUPPLY_TYPE_B + if (updated_freq_hz <= BSP_PRV_FLDWAITR_MAX_ONE_WAIT_FREQ) + { + BSP_PRV_FLDWAITR_REG_ACCESS = BSP_PRV_FLDWAITR_ONE_WAIT_CYCLES; + } +#endif +} + +/*******************************************************************************************************************//** + * Initializes sub-clock according to the BSP configuration. + **********************************************************************************************************************/ +static void bsp_sosc_init (void) +{ +#if BSP_FEATURE_CGC_HAS_SOSC + #if BSP_CLOCK_CFG_SUBCLOCK_POPULATED + #if BSP_FEATURE_RTC_IS_IRTC + #if ((BSP_CLOCKS_SOURCE_CLOCK_SUBCLOCK == BSP_CFG_CLOCK_SOURCE) || (BSP_PRV_HOCO_USE_FLL)) + + /* If sub-clock is used as system clock source or HOCO FLL source, wait for VRTC-domain become valid */ + FSP_HARDWARE_REGISTER_WAIT(R_SYSTEM->VRTSR_b.VRTVLD, 1); + #else + + /* Check if VRTC-domain area is valid. */ + if (1U == R_SYSTEM->VRTSR_b.VRTVLD) + #endif + #endif + { + if (R_SYSTEM->SOSCCR || (BSP_CLOCK_CFG_SUBCLOCK_DRIVE != R_SYSTEM->SOMCR_b.SODRV)) + { + /* If Sub-Clock Oscillator is started at reset, stop it before configuring the subclock drive. */ + if (0U == R_SYSTEM->SOSCCR) + { + /* Stop the Sub-Clock Oscillator to update the SOMCR register. */ + R_SYSTEM->SOSCCR = 1U; + + /* Allow a stop interval of at least 5 SOSC clock cycles before configuring the drive capacity + * and restarting Sub-Clock Oscillator. */ + R_BSP_SoftwareDelay(BSP_PRV_SUBCLOCK_STOP_INTERVAL_US, BSP_DELAY_UNITS_MICROSECONDS); + + /* + * r01uh0893ej0120-ra4m3 8.2.9 SOSCCR : Sub-Clock Oscillator Control Register: + * When changing the value of the SOSTP bit, execute subsequent instructions + * only after reading the bit to check that the value is updated. + */ + FSP_HARDWARE_REGISTER_WAIT(R_SYSTEM->SOSCCR, 1U); + } + + /* Configure the subclock drive as subclock is not running. */ + R_SYSTEM->SOMCR = + ((BSP_CLOCK_CFG_SUBCLOCK_DRIVE << BSP_FEATURE_CGC_SODRV_SHIFT) & BSP_FEATURE_CGC_SODRV_MASK); + + R_SYSTEM->SOSCCR = 0U; + + /* r01uh0893ej0120-ra4m3 8.2.9 SOSCCR : Sub-Clock Oscillator Control Register: + * After setting the SOSTP bit to 0, use the sub-clock only after the sub-clock + * oscillation stabilization time has elapsed. + */ + #if (BSP_CLOCKS_SOURCE_CLOCK_SUBCLOCK == BSP_CFG_CLOCK_SOURCE) || (BSP_PRV_HOCO_USE_FLL) + R_BSP_SubClockStabilizeWait(BSP_CLOCK_CFG_SUBCLOCK_STABILIZATION_MS); + #endif + } + else + { + /* + * RA MCUs like RA6M5 requires to use sub-clock after oscillation stabilization time + * has elapsed on Power-On-Reset. But, POR is not well supported on EK boards, so BSP + * has to wait on any reset. Please override this function in application if waiting + * for stabilization is not required. + */ + R_BSP_SubClockStabilizeWaitAfterReset(BSP_CLOCK_CFG_SUBCLOCK_STABILIZATION_MS); + } + } + + #else + R_SYSTEM->SOSCCR = 1U; + #endif +#endif +} + +/*******************************************************************************************************************//** + * Octa-SPI clock update. + * @param[in] p_octaclk_setting Pointer to Octaclk setting structure which provides information regarding + * Octaclk source and divider settings to be applied. + * @note The requested Octaclk source must be started before calling this function. + **********************************************************************************************************************/ +void R_BSP_OctaclkUpdate (bsp_octaclk_settings_t * p_octaclk_setting) +{ +#if BSP_FEATURE_BSP_HAS_OCTASPI_CLOCK + + /* Store initial value of CGC and LPM protection registers. */ + #if BSP_FEATURE_TZ_VERSION == 2 && BSP_TZ_NONSECURE_BUILD == 1 + uint16_t bsp_prv_prcr_orig = R_SYSTEM->PRCR_NS; + #else + uint16_t bsp_prv_prcr_orig = R_SYSTEM->PRCR; + #endif + + /* Unlock CGC and LPM protection registers. */ + #if BSP_FEATURE_TZ_VERSION == 2 && BSP_TZ_NONSECURE_BUILD == 1 + R_SYSTEM->PRCR_NS = (uint16_t) BSP_PRV_PRCR_UNLOCK; + #else + R_SYSTEM->PRCR = (uint16_t) BSP_PRV_PRCR_UNLOCK; + #endif + + /* Request to change the OCTASPI Clock. */ + R_SYSTEM->OCTACKCR_b.OCTACKSREQ = 1; + + /* Wait for the clock to be stopped. */ + FSP_HARDWARE_REGISTER_WAIT(R_SYSTEM->OCTACKCR_b.OCTACKSRDY, 1U); + + /* Write the settings. */ + R_SYSTEM->OCTACKDIVCR = (uint8_t) p_octaclk_setting->divider; + R_SYSTEM->OCTACKCR = (uint8_t) (p_octaclk_setting->source_clock | R_SYSTEM_OCTACKCR_OCTACKSREQ_Msk); + + /* Start the OCTASPI Clock by setting OCTACKSREQ to zero. */ + R_SYSTEM->OCTACKCR = (uint8_t) p_octaclk_setting->source_clock; + + /* Wait for the OCTASPI Clock to be started. */ + FSP_HARDWARE_REGISTER_WAIT(R_SYSTEM->OCTACKCR_b.OCTACKSRDY, 0U); + + /* Restore CGC and LPM protection registers. */ + #if BSP_FEATURE_TZ_VERSION == 2 && BSP_TZ_NONSECURE_BUILD == 1 + R_SYSTEM->PRCR_NS = bsp_prv_prcr_orig; + #else + R_SYSTEM->PRCR = bsp_prv_prcr_orig; + #endif +#else + FSP_PARAMETER_NOT_USED(p_octaclk_setting); +#endif +} + +/*******************************************************************************************************************//** + * Gets the frequency of a source clock. + * @param[in] clock Pointer to Octaclk setting structure which provides information regarding + * Octaclk source and divider settings to be applied. + * @return Frequency of requested clock in Hertz. + **********************************************************************************************************************/ +uint32_t R_BSP_SourceClockHzGet (fsp_priv_source_clock_t clock) +{ + uint32_t source_clock = g_clock_freq[clock]; + + return source_clock; +} + +#if BSP_FEATURE_RTC_IS_AVAILABLE || BSP_FEATURE_RTC_HAS_TCEN || BSP_FEATURE_SYSC_HAS_VBTICTLR + +/*******************************************************************************************************************//** + * RTC Initialization + * + * Some RTC registers must be initialized after reset to ensure correct operation. + * This reset is not performed automatically if the RTC is used in a project as it will + * be handled by the RTC driver if needed. + **********************************************************************************************************************/ +void R_BSP_Init_RTC (void) +{ + /* RA4M3 UM r01uh0893ej0120: Figure 23.14 Initialization procedure */ + + /* RCKSEL bit is not initialized after reset. Use LOCO as the default + * clock source if it is available. Note RCR4.ROPSEL is also cleared. + */ + + #if BSP_FEATURE_RTC_IS_IRTC + if (0U == R_SYSTEM->VRTSR_b.VRTVLD) // Return if VRTC-domain is invalid + { + return; + } + #endif + + #if BSP_PRV_LOCO_USED && !BSP_FEATURE_RTC_IS_IRTC + R_RTC->RCR4 = 1 << R_RTC_RCR4_RCKSEL_Pos; + #else + + /* Sses SOSC as clock source, or there is no clock source. */ + R_RTC->RCR4 = 0; + #endif + + #if !BSP_CFG_RTC_USED + #if BSP_PRV_LOCO_USED || (BSP_FEATURE_CGC_HAS_SOSC && BSP_CLOCK_CFG_SUBCLOCK_POPULATED) + + /*Wait for 6 clocks: 200 > (6*1000000) / 32K */ + R_BSP_SoftwareDelay(BSP_PRV_RTC_RESET_DELAY_US, BSP_DELAY_UNITS_MICROSECONDS); + + R_RTC->RCR2 = 0; + FSP_HARDWARE_REGISTER_WAIT(R_RTC->RCR2, 0); + + R_RTC->RCR2_b.RESET = 1; + FSP_HARDWARE_REGISTER_WAIT(R_RTC->RCR2_b.RESET, 0); + + /* Disable RTC interrupts */ + R_RTC->RCR1 = 0; + + /* When the RCR1 register is modified, check that all the bits are updated before proceeding + * (see section 26.2.17 "RTC Control Register 1 (RCR1)" of the RA6M3 manual R01UH0886EJ0100)*/ + FSP_HARDWARE_REGISTER_WAIT(R_RTC->RCR1, 0); + + #if BSP_FEATURE_RTC_HAS_TCEN + for (uint8_t index = 0U; index < BSP_FEATURE_RTC_RTCCR_CHANNELS; index++) + { + /* RTCCRn.TCEN must be cleared after reset. */ + R_RTC->RTCCR[index].RTCCR_b.TCEN = 0U; + FSP_HARDWARE_REGISTER_WAIT(R_RTC->RTCCR[index].RTCCR_b.TCEN, 0); + } + #endif + #endif + #endif + + #if BSP_FEATURE_SYSC_HAS_VBTICTLR + + /* VBTICTLR.VCHnINEN must be cleared after reset. */ + R_BSP_RegisterProtectDisable(BSP_REG_PROTECT_OM_LPC_BATT); + R_SYSTEM->VBTICTLR = 0U; + R_BSP_RegisterProtectEnable(BSP_REG_PROTECT_OM_LPC_BATT); + #endif +} + +#endif + +#if BSP_FEATURE_RTC_IS_IRTC + +/*******************************************************************************************************************//** + * To check sub-clock status. + * + * @retval FSP_SUCCESS Sub-clock is ready to use. + * @retval FSP_ERR_INVALID_HW_CONDITION VRTC-domain area is invalid. + * @retval FSP_ERR_NOT_INITIALIZED Sub-clock has not been inititalized yet. + **********************************************************************************************************************/ +fsp_err_t R_BSP_SubclockStatusGet () +{ + #if BSP_CLOCK_CFG_SUBCLOCK_POPULATED + + /* Check if VRTC-domain area is invalid */ + FSP_ERROR_RETURN(1U == R_SYSTEM->VRTSR_b.VRTVLD, FSP_ERR_INVALID_HW_CONDITION); + + /* Check if SOSC has been configured */ + if ((0U == R_SYSTEM->SOSCCR) && (BSP_CLOCK_CFG_SUBCLOCK_DRIVE == R_SYSTEM->SOMCR_b.SODRV)) + { + return FSP_SUCCESS; + } + #endif + + return FSP_ERR_NOT_INITIALIZED; +} + +/*******************************************************************************************************************//** + * To initialize the sub-clock. + * + * @retval FSP_SUCCESS Sub-clock successfully initialized. + * @retval FSP_ERR_INVALID_HW_CONDITION Sub-clock cannot be initialized. + **********************************************************************************************************************/ +fsp_err_t R_BSP_SubclockInitialize () +{ + #if BSP_CLOCK_CFG_SUBCLOCK_POPULATED + + /* Check if VRTC-domain area is valid */ + FSP_ERROR_RETURN(1U == R_SYSTEM->VRTSR_b.VRTVLD, FSP_ERR_INVALID_HW_CONDITION); + + R_BSP_RegisterProtectDisable(BSP_REG_PROTECT_CGC); + bsp_sosc_init(); + R_BSP_RegisterProtectEnable(BSP_REG_PROTECT_CGC); + + return FSP_SUCCESS; + #else + + return FSP_ERR_INVALID_HW_CONDITION; + #endif +} + +#endif + +/** @} (end addtogroup BSP_MCU_PRV) */ diff --git a/bsp/renesas/ra8m1-ek/ra/fsp/src/bsp/mcu/all/bsp_clocks.h b/bsp/renesas/ra8m1-ek/ra/fsp/src/bsp/mcu/all/bsp_clocks.h new file mode 100644 index 000000000000..9d3f7cf294b8 --- /dev/null +++ b/bsp/renesas/ra8m1-ek/ra/fsp/src/bsp/mcu/all/bsp_clocks.h @@ -0,0 +1,1126 @@ +/*********************************************************************************************************************** + * Copyright [2020-2023] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics America Inc. and may only be used with products + * of Renesas Electronics Corp. and its affiliates ("Renesas"). No other uses are authorized. Renesas products are + * sold pursuant to Renesas terms and conditions of sale. Purchasers are solely responsible for the selection and use + * of Renesas products and Renesas assumes no liability. No license, express or implied, to any intellectual property + * right is granted by Renesas. This software is protected under all applicable laws, including copyright laws. Renesas + * reserves the right to change or discontinue this software and/or this documentation. THE SOFTWARE AND DOCUMENTATION + * IS DELIVERED TO YOU "AS IS," AND RENESAS MAKES NO REPRESENTATIONS OR WARRANTIES, AND TO THE FULLEST EXTENT + * PERMISSIBLE UNDER APPLICABLE LAW, DISCLAIMS ALL WARRANTIES, WHETHER EXPLICITLY OR IMPLICITLY, INCLUDING WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT, WITH RESPECT TO THE SOFTWARE OR + * DOCUMENTATION. RENESAS SHALL HAVE NO LIABILITY ARISING OUT OF ANY SECURITY VULNERABILITY OR BREACH. TO THE MAXIMUM + * EXTENT PERMITTED BY LAW, IN NO EVENT WILL RENESAS BE LIABLE TO YOU IN CONNECTION WITH THE SOFTWARE OR DOCUMENTATION + * (OR ANY PERSON OR ENTITY CLAIMING RIGHTS DERIVED FROM YOU) FOR ANY LOSS, DAMAGES, OR CLAIMS WHATSOEVER, INCLUDING, + * WITHOUT LIMITATION, ANY DIRECT, CONSEQUENTIAL, SPECIAL, INDIRECT, PUNITIVE, OR INCIDENTAL DAMAGES; ANY LOST PROFITS, + * OTHER ECONOMIC DAMAGE, PROPERTY DAMAGE, OR PERSONAL INJURY; AND EVEN IF RENESAS HAS BEEN ADVISED OF THE POSSIBILITY + * OF SUCH LOSS, DAMAGES, CLAIMS OR COSTS. + **********************************************************************************************************************/ + +#ifndef BSP_CLOCKS_H +#define BSP_CLOCKS_H + +/*********************************************************************************************************************** + * Includes + **********************************************************************************************************************/ +#include "bsp_clock_cfg.h" +#include "bsp_api.h" + +/** Common macro for FSP header files. There is also a corresponding FSP_FOOTER macro at the end of this file. */ +FSP_HEADER + +/*********************************************************************************************************************** + * Macro definitions + **********************************************************************************************************************/ + +/* The following definitions are macros instead of enums because the values are used in preprocessor conditionals. */ +/* Must match SCKCR.CKSEL values. */ +#define BSP_CLOCKS_SOURCE_CLOCK_HOCO (0) // The high speed on chip oscillator. +#define BSP_CLOCKS_SOURCE_CLOCK_MOCO (1) // The middle speed on chip oscillator. +#define BSP_CLOCKS_SOURCE_CLOCK_LOCO (2) // The low speed on chip oscillator. +#define BSP_CLOCKS_SOURCE_CLOCK_MAIN_OSC (3) // The main oscillator. +#define BSP_CLOCKS_SOURCE_CLOCK_SUBCLOCK (4) // The subclock oscillator. +#if 0 == BSP_FEATURE_NUM_PLL1_OUTPUT_CLOCKS && 0 == BSP_FEATURE_NUM_PLL2_OUTPUT_CLOCKS + #define BSP_CLOCKS_SOURCE_CLOCK_PLL (5) // The PLL oscillator. + #define BSP_CLOCKS_SOURCE_CLOCK_PLL2 (6) // The PLL2 oscillator. +#elif (0 != BSP_FEATURE_NUM_PLL1_OUTPUT_CLOCKS && 0 != BSP_FEATURE_NUM_PLL2_OUTPUT_CLOCKS) + #define BSP_CLOCKS_SOURCE_CLOCK_PLL (5) // The PLL oscillator. Treated as PLL1P. + #define BSP_CLOCKS_SOURCE_CLOCK_PLL1P (BSP_CLOCKS_SOURCE_CLOCK_PLL) + #define BSP_CLOCKS_SOURCE_CLOCK_PLL2 (6) // The PLL2 oscillator. Treated as PLL2P. + #define BSP_CLOCKS_SOURCE_CLOCK_PLL2P (BSP_CLOCKS_SOURCE_CLOCK_PLL2) + #define BSP_CLOCKS_SOURCE_CLOCK_PLL1Q (7) // The PLL1Q oscillator. + #define BSP_CLOCKS_SOURCE_CLOCK_PLL1R (8) // The PLL1R oscillator. + #define BSP_CLOCKS_SOURCE_CLOCK_PLL2Q (9) // The PLL2Q oscillator. + #define BSP_CLOCKS_SOURCE_CLOCK_PLL2R (10) // The PLL2R oscillator. +#endif + +/* PLLs are not supported in the following scenarios: + * - When using low voltage mode + * - When using an MCU that does not have a PLL + * - When the PLL only accepts the main oscillator as a source and XTAL is not used + */ +#if BSP_FEATURE_CGC_HAS_PLL && !BSP_CFG_USE_LOW_VOLTAGE_MODE && \ + !((1U != BSP_FEATURE_CGC_PLLCCR_TYPE) && \ + (3U != BSP_FEATURE_CGC_PLLCCR_TYPE) && \ + (4U != BSP_FEATURE_CGC_PLLCCR_TYPE) && \ + !BSP_CLOCK_CFG_MAIN_OSC_POPULATED) + #define BSP_PRV_PLL_SUPPORTED (1) + #if BSP_FEATURE_CGC_HAS_PLL2 + #define BSP_PRV_PLL2_SUPPORTED (1) + #else + #define BSP_PRV_PLL2_SUPPORTED (0) + #endif +#else + #define BSP_PRV_PLL_SUPPORTED (0) + #define BSP_PRV_PLL2_SUPPORTED (0) +#endif + +/* The ICLK frequency at startup is used to determine the ideal operating mode to set after startup. The PLL frequency + * calculated here is also used to initialize the g_clock_freq array. */ +#if BSP_PRV_PLL_SUPPORTED + #if (1U == BSP_FEATURE_CGC_PLLCCR_TYPE) && (BSP_CLOCKS_SOURCE_CLOCK_HOCO == BSP_CFG_PLL_SOURCE) + #define BSP_PRV_PLL_SOURCE_FREQ_HZ (BSP_HOCO_HZ) + #else + #define BSP_PRV_PLL_SOURCE_FREQ_HZ (BSP_CFG_XTAL_HZ) + #endif +#endif +#if BSP_PRV_PLL2_SUPPORTED + #if BSP_CLOCKS_SOURCE_CLOCK_HOCO == BSP_CFG_PLL2_SOURCE + #define BSP_PRV_PLL2_SOURCE_FREQ_HZ (BSP_HOCO_HZ) + #else + #define BSP_PRV_PLL2_SOURCE_FREQ_HZ (BSP_CFG_XTAL_HZ) + #endif +#endif + +/* Frequencies of clocks with fixed freqencies. */ +#define BSP_LOCO_FREQ_HZ (32768U) // LOCO frequency is fixed at 32768 Hz +#define BSP_SUBCLOCK_FREQ_HZ (32768U) // Subclock frequency is 32768 Hz +#define BSP_MOCO_FREQ_HZ (8000000U) // MOCO frequency is fixed at 8 MHz + +#if BSP_CLOCKS_SOURCE_CLOCK_HOCO == BSP_CFG_CLOCK_SOURCE + #define BSP_STARTUP_SOURCE_CLOCK_HZ (BSP_HOCO_HZ) +#elif BSP_CLOCKS_SOURCE_CLOCK_MOCO == BSP_CFG_CLOCK_SOURCE + #define BSP_STARTUP_SOURCE_CLOCK_HZ (BSP_MOCO_FREQ_HZ) +#elif BSP_CLOCKS_SOURCE_CLOCK_LOCO == BSP_CFG_CLOCK_SOURCE + #define BSP_STARTUP_SOURCE_CLOCK_HZ (BSP_LOCO_FREQ_HZ) +#elif BSP_CLOCKS_SOURCE_CLOCK_SUBCLOCK == BSP_CFG_CLOCK_SOURCE + #define BSP_STARTUP_SOURCE_CLOCK_HZ (BSP_SUBCLOCK_FREQ_HZ) +#elif BSP_CLOCKS_SOURCE_CLOCK_MAIN_OSC == BSP_CFG_CLOCK_SOURCE + #define BSP_STARTUP_SOURCE_CLOCK_HZ (BSP_CFG_XTAL_HZ) +#elif BSP_CLOCKS_SOURCE_CLOCK_PLL == BSP_CFG_CLOCK_SOURCE + #if (1U == BSP_FEATURE_CGC_PLLCCR_TYPE) + #if BSP_CLOCKS_SOURCE_CLOCK_MAIN_OSC == BSP_CFG_PLL_SOURCE + #define BSP_PRV_PLL_SOURCE_FREQ_HZ (BSP_CFG_XTAL_HZ) + #elif BSP_CLOCKS_SOURCE_CLOCK_HOCO == BSP_CFG_PLL_SOURCE + #define BSP_PRV_PLL_SOURCE_FREQ_HZ (BSP_HOCO_HZ) + #endif + #define BSP_STARTUP_SOURCE_CLOCK_HZ (((BSP_PRV_PLL_SOURCE_FREQ_HZ * (BSP_CFG_PLL_MUL + 1U)) >> 1) / \ + (BSP_CFG_PLL_DIV + 1U)) + #elif (2U == BSP_FEATURE_CGC_PLLCCR_TYPE) + #define BSP_PRV_PLL_SOURCE_FREQ_HZ (BSP_CFG_XTAL_HZ) + #define BSP_STARTUP_SOURCE_CLOCK_HZ ((BSP_PRV_PLL_SOURCE_FREQ_HZ * ((BSP_CFG_PLL_MUL + 1U) >> 1)) >> \ + (BSP_CFG_PLL_DIV)) + #elif (3U == BSP_FEATURE_CGC_PLLCCR_TYPE) + #define BSP_STARTUP_SOURCE_CLOCK_HZ (BSP_CFG_PLL1P_FREQUENCY_HZ) + #endif +#endif + +/* Convert divisor bitfield settings into divisor values to calculate startup clocks */ +#define BSP_PRV_SCKDIVCR_DIV_VALUE(div) (((div) & 8U) ? (3U << ((div) & ~8U)) : (1U << (div))) +#define BSP_PRV_CPUCLK_DIV_VALUE BSP_PRV_SCKDIVCR_DIV_VALUE(BSP_CFG_CPUCLK_DIV) +#define BSP_PRV_ICLK_DIV_VALUE BSP_PRV_SCKDIVCR_DIV_VALUE(BSP_CFG_ICLK_DIV) +#define BSP_PRV_PCLKA_DIV_VALUE BSP_PRV_SCKDIVCR_DIV_VALUE(BSP_CFG_PCLKA_DIV) +#define BSP_PRV_PCLKB_DIV_VALUE BSP_PRV_SCKDIVCR_DIV_VALUE(BSP_CFG_PCLKB_DIV) +#define BSP_PRV_PCLKC_DIV_VALUE BSP_PRV_SCKDIVCR_DIV_VALUE(BSP_CFG_PCLKC_DIV) +#define BSP_PRV_PCLKD_DIV_VALUE BSP_PRV_SCKDIVCR_DIV_VALUE(BSP_CFG_PCLKD_DIV) +#define BSP_PRV_PCLKE_DIV_VALUE BSP_PRV_SCKDIVCR_DIV_VALUE(BSP_CFG_PCLKE_DIV) +#define BSP_PRV_BCLK_DIV_VALUE BSP_PRV_SCKDIVCR_DIV_VALUE(BSP_CFG_BCLK_DIV) +#define BSP_PRV_FCLK_DIV_VALUE BSP_PRV_SCKDIVCR_DIV_VALUE(BSP_CFG_FCLK_DIV) + +/* Startup clock frequency of each system clock. These macros are only helpful if the system clock and dividers have + * not changed since startup. These macros are not used in FSP modules except for the clock startup code. */ +#define BSP_STARTUP_CPUCLK_HZ (BSP_STARTUP_SOURCE_CLOCK_HZ / BSP_PRV_CPUCLK_DIV_VALUE) +#define BSP_STARTUP_ICLK_HZ (BSP_STARTUP_SOURCE_CLOCK_HZ / BSP_PRV_ICLK_DIV_VALUE) +#define BSP_STARTUP_PCLKA_HZ (BSP_STARTUP_SOURCE_CLOCK_HZ / BSP_PRV_PCLKA_DIV_VALUE) +#define BSP_STARTUP_PCLKB_HZ (BSP_STARTUP_SOURCE_CLOCK_HZ / BSP_PRV_PCLKB_DIV_VALUE) +#define BSP_STARTUP_PCLKC_HZ (BSP_STARTUP_SOURCE_CLOCK_HZ / BSP_PRV_PCLKC_DIV_VALUE) +#define BSP_STARTUP_PCLKD_HZ (BSP_STARTUP_SOURCE_CLOCK_HZ / BSP_PRV_PCLKD_DIV_VALUE) +#define BSP_STARTUP_PCLKE_HZ (BSP_STARTUP_SOURCE_CLOCK_HZ / BSP_PRV_PCLKE_DIV_VALUE) +#define BSP_STARTUP_BCLK_HZ (BSP_STARTUP_SOURCE_CLOCK_HZ / BSP_PRV_BCLK_DIV_VALUE) +#define BSP_STARTUP_FCLK_HZ (BSP_STARTUP_SOURCE_CLOCK_HZ / BSP_PRV_FCLK_DIV_VALUE) + +/* System clock divider options. */ +#define BSP_CLOCKS_SYS_CLOCK_DIV_1 (0) // System clock divided by 1. +#define BSP_CLOCKS_SYS_CLOCK_DIV_2 (1) // System clock divided by 2. +#define BSP_CLOCKS_SYS_CLOCK_DIV_4 (2) // System clock divided by 4. +#define BSP_CLOCKS_SYS_CLOCK_DIV_8 (3) // System clock divided by 8. +#define BSP_CLOCKS_SYS_CLOCK_DIV_16 (4) // System clock divided by 16. +#define BSP_CLOCKS_SYS_CLOCK_DIV_32 (5) // System clock divided by 32. +#define BSP_CLOCKS_SYS_CLOCK_DIV_64 (6) // System clock divided by 64. +#define BSP_CLOCKS_SYS_CLOCK_DIV_128 (7) // System clock divided by 128 (available for CLKOUT only). +#define BSP_CLOCKS_SYS_CLOCK_DIV_3 (8) // System clock divided by 3. +#define BSP_CLOCKS_SYS_CLOCK_DIV_6 (9) // System clock divided by 6. +#define BSP_CLOCKS_SYS_CLOCK_DIV_12 (10) // System clock divided by 12. + +/* USB clock divider options. */ +#define BSP_CLOCKS_USB_CLOCK_DIV_1 (0) // Divide USB source clock by 1 +#define BSP_CLOCKS_USB_CLOCK_DIV_2 (1) // Divide USB source clock by 2 +#define BSP_CLOCKS_USB_CLOCK_DIV_3 (2) // Divide USB source clock by 3 +#define BSP_CLOCKS_USB_CLOCK_DIV_4 (3) // Divide USB source clock by 4 +#define BSP_CLOCKS_USB_CLOCK_DIV_5 (4) // Divide USB source clock by 5 +#define BSP_CLOCKS_USB_CLOCK_DIV_6 (5) // Divide USB source clock by 6 +#define BSP_CLOCKS_USB_CLOCK_DIV_8 (7) // Divide USB source clock by 8 + +/* USB60 clock divider options. */ +#define BSP_CLOCKS_USB60_CLOCK_DIV_1 (0) // Divide USB60 source clock by 1 +#define BSP_CLOCKS_USB60_CLOCK_DIV_2 (1) // Divide USB60 source clock by 2 +#define BSP_CLOCKS_USB60_CLOCK_DIV_3 (5) // Divide USB60 source clock by 3 +#define BSP_CLOCKS_USB60_CLOCK_DIV_4 (2) // Divide USB60 source clock by 4 +#define BSP_CLOCKS_USB60_CLOCK_DIV_5 (6) // Divide USB60 source clock by 5 +#define BSP_CLOCKS_USB60_CLOCK_DIV_6 (3) // Divide USB66 source clock by 6 +#define BSP_CLOCKS_USB60_CLOCK_DIV_8 (4) // Divide USB60 source clock by 8 + +/* GLCD clock divider options. */ +#define BSP_CLOCKS_LCD_CLOCK_DIV_1 (0) // Divide LCD source clock by 1 +#define BSP_CLOCKS_LCD_CLOCK_DIV_2 (1) // Divide LCD source clock by 2 +#define BSP_CLOCKS_LCD_CLOCK_DIV_3 (5) // Divide LCD source clock by 3 +#define BSP_CLOCKS_LCD_CLOCK_DIV_4 (2) // Divide LCD source clock by 4 +#define BSP_CLOCKS_LCD_CLOCK_DIV_5 (6) // Divide LCD source clock by 5 +#define BSP_CLOCKS_LCD_CLOCK_DIV_6 (3) // Divide LCD source clock by 6 +#define BSP_CLOCKS_LCD_CLOCK_DIV_8 (4) // Divide LCD source clock by 8 + +/* OCTA clock divider options. */ +#define BSP_CLOCKS_OCTA_CLOCK_DIV_1 (0) // Divide OCTA source clock by 1 +#define BSP_CLOCKS_OCTA_CLOCK_DIV_2 (1) // Divide OCTA source clock by 2 +#define BSP_CLOCKS_OCTA_CLOCK_DIV_4 (2) // Divide OCTA source clock by 4 +#define BSP_CLOCKS_OCTA_CLOCK_DIV_6 (3) // Divide OCTA source clock by 6 +#define BSP_CLOCKS_OCTA_CLOCK_DIV_8 (4) // Divide OCTA source clock by 8 + +/* CANFD clock divider options. */ +#define BSP_CLOCKS_CANFD_CLOCK_DIV_1 (0) // Divide CANFD source clock by 1 +#define BSP_CLOCKS_CANFD_CLOCK_DIV_2 (1) // Divide CANFD source clock by 2 +#define BSP_CLOCKS_CANFD_CLOCK_DIV_3 (5) // Divide CANFD source clock by 3 +#define BSP_CLOCKS_CANFD_CLOCK_DIV_4 (2) // Divide CANFD source clock by 4 +#define BSP_CLOCKS_CANFD_CLOCK_DIV_5 (6) // Divide CANFD source clock by 5 +#define BSP_CLOCKS_CANFD_CLOCK_DIV_6 (3) // Divide CANFD source clock by 6 +#define BSP_CLOCKS_CANFD_CLOCK_DIV_8 (4) // Divide CANFD source clock by 8 + +/* SCI clock divider options. */ +#define BSP_CLOCKS_SCI_CLOCK_DIV_1 (0) // Divide SCI source clock by 1 +#define BSP_CLOCKS_SCI_CLOCK_DIV_2 (1) // Divide SCI source clock by 2 +#define BSP_CLOCKS_SCI_CLOCK_DIV_3 (5) // Divide SCI source clock by 3 +#define BSP_CLOCKS_SCI_CLOCK_DIV_4 (2) // Divide SCI source clock by 4 +#define BSP_CLOCKS_SCI_CLOCK_DIV_5 (6) // Divide SCI source clock by 5 +#define BSP_CLOCKS_SCI_CLOCK_DIV_6 (3) // Divide SCI source clock by 6 +#define BSP_CLOCKS_SCI_CLOCK_DIV_8 (4) // Divide SCI source clock by 8 + +/* SPI clock divider options. */ +#define BSP_CLOCKS_SPI_CLOCK_DIV_1 (0) // Divide SPI source clock by 1 +#define BSP_CLOCKS_SPI_CLOCK_DIV_2 (1) // Divide SPI source clock by 2 +#define BSP_CLOCKS_SPI_CLOCK_DIV_3 (5) // Divide SPI source clock by 3 +#define BSP_CLOCKS_SPI_CLOCK_DIV_4 (2) // Divide SPI source clock by 4 +#define BSP_CLOCKS_SPI_CLOCK_DIV_5 (6) // Divide SPI source clock by 5 +#define BSP_CLOCKS_SPI_CLOCK_DIV_6 (3) // Divide SPI source clock by 6 +#define BSP_CLOCKS_SPI_CLOCK_DIV_8 (4) // Divide SPI source clock by 8 + +/* SCISPI clock divider options. */ +#define BSP_CLOCKS_SCISPI_CLOCK_DIV_1 (0) // Divide SCISPI source clock by 1 +#define BSP_CLOCKS_SCISPI_CLOCK_DIV_2 (1) // Divide SCISPI source clock by 2 +#define BSP_CLOCKS_SCISPI_CLOCK_DIV_4 (2) // Divide SCISPI source clock by 4 +#define BSP_CLOCKS_SCISPI_CLOCK_DIV_6 (3) // Divide SCISPI source clock by 6 +#define BSP_CLOCKS_SCISPI_CLOCK_DIV_8 (4) // Divide SCISPI source clock by 8 + +/* GPT clock divider options. */ +#define BSP_CLOCKS_GPT_CLOCK_DIV_1 (0) // Divide GPT source clock by 1 +#define BSP_CLOCKS_GPT_CLOCK_DIV_2 (1) // Divide GPT source clock by 2 +#define BSP_CLOCKS_GPT_CLOCK_DIV_3 (5) // Divide GPT source clock by 3 +#define BSP_CLOCKS_GPT_CLOCK_DIV_4 (2) // Divide GPT source clock by 4 +#define BSP_CLOCKS_GPT_CLOCK_DIV_5 (6) // Divide GPT source clock by 5 +#define BSP_CLOCKS_GPT_CLOCK_DIV_6 (3) // Divide GPT source clock by 6 +#define BSP_CLOCKS_GPT_CLOCK_DIV_8 (4) // Divide GPT source clock by 8 + +/* IIC clock divider options. */ +#define BSP_CLOCKS_IIC_CLOCK_DIV_1 (0) // Divide IIC source clock by 1 +#define BSP_CLOCKS_IIC_CLOCK_DIV_2 (1) // Divide IIC source clock by 2 +#define BSP_CLOCKS_IIC_CLOCK_DIV_4 (2) // Divide IIC source clock by 4 +#define BSP_CLOCKS_IIC_CLOCK_DIV_6 (3) // Divide IIC source clock by 6 +#define BSP_CLOCKS_IIC_CLOCK_DIV_8 (4) // Divide IIC source clock by 8 + +/* CEC clock divider options. */ +#define BSP_CLOCKS_CEC_CLOCK_DIV_1 (0) // Divide CEC source clock by 1 +#define BSP_CLOCKS_CEC_CLOCK_DIV_2 (1) // Divide CEC source clock by 2 + +/* I3C clock divider options. */ +#define BSP_CLOCKS_I3C_CLOCK_DIV_1 (0) // Divide I3C source clock by 1 +#define BSP_CLOCKS_I3C_CLOCK_DIV_2 (1) // Divide I3C source clock by 2 +#define BSP_CLOCKS_I3C_CLOCK_DIV_3 (5) // Divide I3C source clock by 3 +#define BSP_CLOCKS_I3C_CLOCK_DIV_4 (2) // Divide I3C source clock by 4 +#define BSP_CLOCKS_I3C_CLOCK_DIV_5 (6) // Divide I3C source clock by 5 +#define BSP_CLOCKS_I3C_CLOCK_DIV_6 (3) // Divide I3C source clock by 6 +#define BSP_CLOCKS_I3C_CLOCK_DIV_8 (4) // Divide I3C source clock by 8 + +/* PLL divider options. */ +#define BSP_CLOCKS_PLL_DIV_1 (0) +#define BSP_CLOCKS_PLL_DIV_2 (1) +#define BSP_CLOCKS_PLL_DIV_3 (2) +#define BSP_CLOCKS_PLL_DIV_4 (3) +#define BSP_CLOCKS_PLL_DIV_5 (4) +#define BSP_CLOCKS_PLL_DIV_6 (5) +#define BSP_CLOCKS_PLL_DIV_8 (7) +#define BSP_CLOCKS_PLL_DIV_9 (8) +#define BSP_CLOCKS_PLL_DIV_16 (15) + +/* PLL multiplier options. */ +#if (4U == BSP_FEATURE_CGC_PLLCCR_TYPE) + +/* Offset from decimal multiplier to register value for PLLCCR type 4. */ + #define BSP_PRV_CLOCKS_PLL_MUL_INT_OFFSET (574) + +/** + * X=Integer portion of the multiplier. + * Y=Fractional portion of the multiplier. (not used for this PLLCCR type) + */ + #define BSP_CLOCKS_PLL_MUL(X, Y) (X - BSP_PRV_CLOCKS_PLL_MUL_INT_OFFSET) + +#elif (3U != BSP_FEATURE_CGC_PLLCCR_TYPE) + +/** + * X=Integer portion of the multiplier. + * Y=Fractional portion of the multiplier. + */ + #define BSP_CLOCKS_PLL_MUL(X, Y) (((X) << 1 | ((Y) >= 50U ? 1 : 0)) - 1U) + +#else + + #define BSP_PRV_CLOCKS_PLL_MUL_INT_SHIFT (2U) + #define BSP_PRV_CLOCKS_PLL_MUL_FRAC_MASK (0x3U) + #define BSP_PRV_CLOCKS_PLL_MUL_FRAC_SHIFT (0U) + +/** + * X=Integer portion of the multiplier. + * Y=Fractional portion of the multiplier. + */ + #define BSP_CLOCKS_PLL_MUL(X, Y) ((((X) -1U) << 2U) | ((Y) == 50U ? 3U : ((Y) / 33U))) + +#endif + +/* Configuration option used to disable clock output. */ +#define BSP_CLOCKS_CLOCK_DISABLED (0xFFU) + +/* HOCO cycles per microsecond. */ +#define BSP_PRV_HOCO_CYCLES_PER_US (BSP_HOCO_HZ / 1000000U) + +/* Maximum number of delay cycles required to ensure 1 us passes between setting PLLCCR and clearing PLLCR. */ +#if BSP_HOCO_HZ < 48000000U + #define BSP_PRV_MAX_HOCO_CYCLES_PER_US (BSP_PRV_HOCO_CYCLES_PER_US) +#else + #define BSP_PRV_MAX_HOCO_CYCLES_PER_US (48U) +#endif + +/* Create a mask of valid bits in SCKDIVCR. */ +#define BSP_PRV_SCKDIVCR_ICLK_MASK (FSP_PRV_SCKDIVCR_DIV_MASK << 24) +#if BSP_FEATURE_CGC_HAS_PCLKD + #define BSP_PRV_SCKDIVCR_PCLKD_MASK (FSP_PRV_SCKDIVCR_DIV_MASK << 0) +#else + #define BSP_PRV_SCKDIVCR_PCLKD_MASK (0U) +#endif +#if BSP_FEATURE_CGC_HAS_PCLKC + #define BSP_PRV_SCKDIVCR_PCLKC_MASK (FSP_PRV_SCKDIVCR_DIV_MASK << 4) +#else + #define BSP_PRV_SCKDIVCR_PCLKC_MASK (0U) +#endif +#if BSP_FEATURE_CGC_HAS_PCLKB + #define BSP_PRV_SCKDIVCR_PCLKB_MASK (FSP_PRV_SCKDIVCR_DIV_MASK << 8) +#else + #define BSP_PRV_SCKDIVCR_PCLKB_MASK (0U) +#endif +#if BSP_FEATURE_CGC_HAS_PCLKA + #define BSP_PRV_SCKDIVCR_PCLKA_MASK (FSP_PRV_SCKDIVCR_DIV_MASK << 12) +#else + #define BSP_PRV_SCKDIVCR_PCLKA_MASK (0U) +#endif +#if BSP_FEATURE_CGC_HAS_BCLK || BSP_FEATURE_CGC_SCKDIVCR_BCLK_MATCHES_PCLKB + #define BSP_PRV_SCKDIVCR_BCLK_MASK (FSP_PRV_SCKDIVCR_DIV_MASK << 16) +#else + #define BSP_PRV_SCKDIVCR_BCLK_MASK (0U) +#endif +#if BSP_FEATURE_CGC_HAS_PCLKE + #define BSP_PRV_SCKDIVCR_PCLKE_MASK (FSP_PRV_SCKDIVCR_DIV_MASK << 24) +#else + #define BSP_PRV_SCKDIVCR_PCLKE_MASK (0U) +#endif +#if BSP_FEATURE_CGC_HAS_FCLK + #define BSP_PRV_SCKDIVCR_FCLK_MASK (FSP_PRV_SCKDIVCR_DIV_MASK << 28) +#else + #define BSP_PRV_SCKDIVCR_FCLK_MASK (0U) +#endif +#define BSP_PRV_SCKDIVCR_MASK (BSP_PRV_SCKDIVCR_ICLK_MASK | BSP_PRV_SCKDIVCR_PCLKD_MASK | \ + BSP_PRV_SCKDIVCR_PCLKC_MASK | BSP_PRV_SCKDIVCR_PCLKB_MASK | \ + BSP_PRV_SCKDIVCR_PCLKA_MASK | BSP_PRV_SCKDIVCR_BCLK_MASK | \ + BSP_PRV_SCKDIVCR_PCLKE_MASK | BSP_PRV_SCKDIVCR_FCLK_MASK) + +/* FLL is only used when enabled, present and the subclock is populated. */ +#if BSP_FEATURE_CGC_HAS_FLL && BSP_CFG_FLL_ENABLE && BSP_CLOCK_CFG_SUBCLOCK_POPULATED + #define BSP_PRV_HOCO_USE_FLL (1) + #ifndef BSP_PRV_FLL_STABILIZATION_TIME_US + #define BSP_PRV_FLL_STABILIZATION_TIME_US (1800) + #endif +#else + #define BSP_PRV_HOCO_USE_FLL (0) + #define BSP_PRV_FLL_STABILIZATION_TIME_US (0) +#endif + +#if BSP_FEATURE_RTC_IS_AVAILABLE || BSP_FEATURE_RTC_HAS_TCEN || BSP_FEATURE_SYSC_HAS_VBTICTLR + #define BSP_PRV_RTC_RESET_DELAY_US (200) +#endif + +/* Operating power control modes. */ +#define BSP_PRV_OPERATING_MODE_HIGH_SPEED (0U) // Should match OPCCR OPCM high speed +#define BSP_PRV_OPERATING_MODE_MIDDLE_SPEED (1U) // Should match OPCCR OPCM middle speed +#define BSP_PRV_OPERATING_MODE_LOW_VOLTAGE (2U) // Should match OPCCR OPCM low voltage +#define BSP_PRV_OPERATING_MODE_LOW_SPEED (3U) // Should match OPCCR OPCM low speed +#define BSP_PRV_OPERATING_MODE_SUBOSC_SPEED (4U) // Can be any value not otherwise used + +/*********************************************************************************************************************** + * Typedef definitions + **********************************************************************************************************************/ + +#if BSP_TZ_SECURE_BUILD || BSP_TZ_NONSECURE_BUILD +typedef struct +{ + uint32_t pll_freq; +} bsp_clock_update_callback_args_t; + + #if defined(__ARMCC_VERSION) || defined(__ICCARM__) +typedef void (BSP_CMSE_NONSECURE_CALL * bsp_clock_update_callback_t)(bsp_clock_update_callback_args_t * + p_callback_args); + #elif defined(__GNUC__) +typedef BSP_CMSE_NONSECURE_CALL void (*volatile bsp_clock_update_callback_t)(bsp_clock_update_callback_args_t * + p_callback_args); + #endif + +#endif + +/** PLL multiplier values */ +typedef enum e_cgc_pll_mul +{ + CGC_PLL_MUL_8_0 = BSP_CLOCKS_PLL_MUL(8U, 0U), ///< PLL multiplier of 8.0 + CGC_PLL_MUL_9_0 = BSP_CLOCKS_PLL_MUL(9U, 0U), ///< PLL multiplier of 9.0 + CGC_PLL_MUL_10_0 = BSP_CLOCKS_PLL_MUL(10U, 0U), ///< PLL multiplier of 10.00 + CGC_PLL_MUL_10_5 = BSP_CLOCKS_PLL_MUL(10U, 50U), ///< PLL multiplier of 10.50 + CGC_PLL_MUL_11_0 = BSP_CLOCKS_PLL_MUL(11U, 0U), ///< PLL multiplier of 11.00 + CGC_PLL_MUL_11_5 = BSP_CLOCKS_PLL_MUL(11U, 50U), ///< PLL multiplier of 11.50 + CGC_PLL_MUL_12_0 = BSP_CLOCKS_PLL_MUL(12U, 0U), ///< PLL multiplier of 12.00 + CGC_PLL_MUL_12_5 = BSP_CLOCKS_PLL_MUL(12U, 50U), ///< PLL multiplier of 12.50 + CGC_PLL_MUL_13_0 = BSP_CLOCKS_PLL_MUL(13U, 0U), ///< PLL multiplier of 13.00 + CGC_PLL_MUL_13_5 = BSP_CLOCKS_PLL_MUL(13U, 50U), ///< PLL multiplier of 13.50 + CGC_PLL_MUL_14_0 = BSP_CLOCKS_PLL_MUL(14U, 0U), ///< PLL multiplier of 14.00 + CGC_PLL_MUL_14_5 = BSP_CLOCKS_PLL_MUL(14U, 50U), ///< PLL multiplier of 14.50 + CGC_PLL_MUL_15_0 = BSP_CLOCKS_PLL_MUL(15U, 0U), ///< PLL multiplier of 15.00 + CGC_PLL_MUL_15_5 = BSP_CLOCKS_PLL_MUL(15U, 50U), ///< PLL multiplier of 15.50 + CGC_PLL_MUL_16_0 = BSP_CLOCKS_PLL_MUL(16U, 0U), ///< PLL multiplier of 16.00 + CGC_PLL_MUL_16_5 = BSP_CLOCKS_PLL_MUL(16U, 50U), ///< PLL multiplier of 16.50 + CGC_PLL_MUL_17_0 = BSP_CLOCKS_PLL_MUL(17U, 0U), ///< PLL multiplier of 17.00 + CGC_PLL_MUL_17_5 = BSP_CLOCKS_PLL_MUL(17U, 50U), ///< PLL multiplier of 17.50 + CGC_PLL_MUL_18_0 = BSP_CLOCKS_PLL_MUL(18U, 0U), ///< PLL multiplier of 18.00 + CGC_PLL_MUL_18_5 = BSP_CLOCKS_PLL_MUL(18U, 50U), ///< PLL multiplier of 18.50 + CGC_PLL_MUL_19_0 = BSP_CLOCKS_PLL_MUL(19U, 0U), ///< PLL multiplier of 19.00 + CGC_PLL_MUL_19_5 = BSP_CLOCKS_PLL_MUL(19U, 50U), ///< PLL multiplier of 19.50 + CGC_PLL_MUL_20_0 = BSP_CLOCKS_PLL_MUL(20U, 0U), ///< PLL multiplier of 20.00 + CGC_PLL_MUL_20_5 = BSP_CLOCKS_PLL_MUL(20U, 50U), ///< PLL multiplier of 20.50 + CGC_PLL_MUL_21_0 = BSP_CLOCKS_PLL_MUL(21U, 0U), ///< PLL multiplier of 21.00 + CGC_PLL_MUL_21_5 = BSP_CLOCKS_PLL_MUL(21U, 50U), ///< PLL multiplier of 21.50 + CGC_PLL_MUL_22_0 = BSP_CLOCKS_PLL_MUL(22U, 0U), ///< PLL multiplier of 22.00 + CGC_PLL_MUL_22_5 = BSP_CLOCKS_PLL_MUL(22U, 50U), ///< PLL multiplier of 22.50 + CGC_PLL_MUL_23_0 = BSP_CLOCKS_PLL_MUL(23U, 0U), ///< PLL multiplier of 23.00 + CGC_PLL_MUL_23_5 = BSP_CLOCKS_PLL_MUL(23U, 50U), ///< PLL multiplier of 23.50 + CGC_PLL_MUL_24_0 = BSP_CLOCKS_PLL_MUL(24U, 0U), ///< PLL multiplier of 24.00 + CGC_PLL_MUL_24_5 = BSP_CLOCKS_PLL_MUL(24U, 50U), ///< PLL multiplier of 24.50 + CGC_PLL_MUL_25_0 = BSP_CLOCKS_PLL_MUL(25U, 0U), ///< PLL multiplier of 25.00 + CGC_PLL_MUL_25_5 = BSP_CLOCKS_PLL_MUL(25U, 50U), ///< PLL multiplier of 25.50 + CGC_PLL_MUL_26_0 = BSP_CLOCKS_PLL_MUL(26U, 0U), ///< PLL multiplier of 26.00 + CGC_PLL_MUL_26_33 = BSP_CLOCKS_PLL_MUL(26U, 33U), ///< PLL multiplier of 26.33 + CGC_PLL_MUL_26_5 = BSP_CLOCKS_PLL_MUL(26U, 50U), ///< PLL multiplier of 26.50 + CGC_PLL_MUL_26_66 = BSP_CLOCKS_PLL_MUL(26U, 66U), ///< PLL multiplier of 26.66 + CGC_PLL_MUL_27_0 = BSP_CLOCKS_PLL_MUL(27U, 0U), ///< PLL multiplier of 27.00 + CGC_PLL_MUL_27_33 = BSP_CLOCKS_PLL_MUL(27U, 33U), ///< PLL multiplier of 27.33 + CGC_PLL_MUL_27_5 = BSP_CLOCKS_PLL_MUL(27U, 50U), ///< PLL multiplier of 27.50 + CGC_PLL_MUL_27_66 = BSP_CLOCKS_PLL_MUL(27U, 66U), ///< PLL multiplier of 27.66 + CGC_PLL_MUL_28_0 = BSP_CLOCKS_PLL_MUL(28U, 0U), ///< PLL multiplier of 28.00 + CGC_PLL_MUL_28_33 = BSP_CLOCKS_PLL_MUL(28U, 33U), ///< PLL multiplier of 28.33 + CGC_PLL_MUL_28_5 = BSP_CLOCKS_PLL_MUL(28U, 50U), ///< PLL multiplier of 28.50 + CGC_PLL_MUL_28_66 = BSP_CLOCKS_PLL_MUL(28U, 66U), ///< PLL multiplier of 28.66 + CGC_PLL_MUL_29_0 = BSP_CLOCKS_PLL_MUL(29U, 0U), ///< PLL multiplier of 29.00 + CGC_PLL_MUL_29_33 = BSP_CLOCKS_PLL_MUL(29U, 33U), ///< PLL multiplier of 29.33 + CGC_PLL_MUL_29_5 = BSP_CLOCKS_PLL_MUL(29U, 50U), ///< PLL multiplier of 29.50 + CGC_PLL_MUL_29_66 = BSP_CLOCKS_PLL_MUL(29U, 66U), ///< PLL multiplier of 29.66 + CGC_PLL_MUL_30_0 = BSP_CLOCKS_PLL_MUL(30U, 0U), ///< PLL multiplier of 30.00 + CGC_PLL_MUL_30_33 = BSP_CLOCKS_PLL_MUL(30U, 33U), ///< PLL multiplier of 30.33 + CGC_PLL_MUL_30_5 = BSP_CLOCKS_PLL_MUL(30U, 50U), ///< PLL multiplier of 30.50 + CGC_PLL_MUL_30_66 = BSP_CLOCKS_PLL_MUL(30U, 66U), ///< PLL multiplier of 30.66 + CGC_PLL_MUL_31_0 = BSP_CLOCKS_PLL_MUL(31U, 0U), ///< PLL multiplier of 31.00 + CGC_PLL_MUL_31_33 = BSP_CLOCKS_PLL_MUL(31U, 33U), ///< PLL multiplier of 31.33 + CGC_PLL_MUL_31_5 = BSP_CLOCKS_PLL_MUL(31U, 50U), ///< PLL multiplier of 31.50 + CGC_PLL_MUL_31_66 = BSP_CLOCKS_PLL_MUL(31U, 66U), ///< PLL multiplier of 31.66 + CGC_PLL_MUL_32_0 = BSP_CLOCKS_PLL_MUL(32U, 0U), ///< PLL multiplier of 32.00 + CGC_PLL_MUL_32_33 = BSP_CLOCKS_PLL_MUL(32U, 33U), ///< PLL multiplier of 32.33 + CGC_PLL_MUL_32_5 = BSP_CLOCKS_PLL_MUL(32U, 50U), ///< PLL multiplier of 32.50 + CGC_PLL_MUL_32_66 = BSP_CLOCKS_PLL_MUL(32U, 66U), ///< PLL multiplier of 32.66 + CGC_PLL_MUL_33_0 = BSP_CLOCKS_PLL_MUL(33U, 0U), ///< PLL multiplier of 33.00 + CGC_PLL_MUL_33_33 = BSP_CLOCKS_PLL_MUL(33U, 33U), ///< PLL multiplier of 33.33 + CGC_PLL_MUL_33_5 = BSP_CLOCKS_PLL_MUL(33U, 50U), ///< PLL multiplier of 33.50 + CGC_PLL_MUL_33_66 = BSP_CLOCKS_PLL_MUL(33U, 66U), ///< PLL multiplier of 33.66 + CGC_PLL_MUL_34_0 = BSP_CLOCKS_PLL_MUL(34U, 0U), ///< PLL multiplier of 34.00 + CGC_PLL_MUL_34_33 = BSP_CLOCKS_PLL_MUL(34U, 33U), ///< PLL multiplier of 34.33 + CGC_PLL_MUL_34_5 = BSP_CLOCKS_PLL_MUL(34U, 50U), ///< PLL multiplier of 34.50 + CGC_PLL_MUL_34_66 = BSP_CLOCKS_PLL_MUL(34U, 66U), ///< PLL multiplier of 34.66 + CGC_PLL_MUL_35_0 = BSP_CLOCKS_PLL_MUL(35U, 0U), ///< PLL multiplier of 35.00 + CGC_PLL_MUL_35_33 = BSP_CLOCKS_PLL_MUL(35U, 33U), ///< PLL multiplier of 35.33 + CGC_PLL_MUL_35_5 = BSP_CLOCKS_PLL_MUL(35U, 50U), ///< PLL multiplier of 35.50 + CGC_PLL_MUL_35_66 = BSP_CLOCKS_PLL_MUL(35U, 66U), ///< PLL multiplier of 35.66 + CGC_PLL_MUL_36_0 = BSP_CLOCKS_PLL_MUL(36U, 0U), ///< PLL multiplier of 36.00 + CGC_PLL_MUL_36_33 = BSP_CLOCKS_PLL_MUL(36U, 33U), ///< PLL multiplier of 36.33 + CGC_PLL_MUL_36_5 = BSP_CLOCKS_PLL_MUL(36U, 50U), ///< PLL multiplier of 36.50 + CGC_PLL_MUL_36_66 = BSP_CLOCKS_PLL_MUL(36U, 66U), ///< PLL multiplier of 36.66 + CGC_PLL_MUL_37_0 = BSP_CLOCKS_PLL_MUL(37U, 0U), ///< PLL multiplier of 37.00 + CGC_PLL_MUL_37_33 = BSP_CLOCKS_PLL_MUL(37U, 33U), ///< PLL multiplier of 37.33 + CGC_PLL_MUL_37_5 = BSP_CLOCKS_PLL_MUL(37U, 50U), ///< PLL multiplier of 37.50 + CGC_PLL_MUL_37_66 = BSP_CLOCKS_PLL_MUL(37U, 66U), ///< PLL multiplier of 37.66 + CGC_PLL_MUL_38_0 = BSP_CLOCKS_PLL_MUL(38U, 0U), ///< PLL multiplier of 38.00 + CGC_PLL_MUL_38_33 = BSP_CLOCKS_PLL_MUL(38U, 33U), ///< PLL multiplier of 38.33 + CGC_PLL_MUL_38_5 = BSP_CLOCKS_PLL_MUL(38U, 50U), ///< PLL multiplier of 38.50 + CGC_PLL_MUL_38_66 = BSP_CLOCKS_PLL_MUL(38U, 66U), ///< PLL multiplier of 38.66 + CGC_PLL_MUL_39_0 = BSP_CLOCKS_PLL_MUL(39U, 0U), ///< PLL multiplier of 39.00 + CGC_PLL_MUL_39_33 = BSP_CLOCKS_PLL_MUL(39U, 33U), ///< PLL multiplier of 39.33 + CGC_PLL_MUL_39_5 = BSP_CLOCKS_PLL_MUL(39U, 50U), ///< PLL multiplier of 39.50 + CGC_PLL_MUL_39_66 = BSP_CLOCKS_PLL_MUL(39U, 66U), ///< PLL multiplier of 39.66 + CGC_PLL_MUL_40_0 = BSP_CLOCKS_PLL_MUL(40U, 0U), ///< PLL multiplier of 40.00 + CGC_PLL_MUL_40_33 = BSP_CLOCKS_PLL_MUL(40U, 33U), ///< PLL multiplier of 40.33 + CGC_PLL_MUL_40_5 = BSP_CLOCKS_PLL_MUL(40U, 50U), ///< PLL multiplier of 40.50 + CGC_PLL_MUL_40_66 = BSP_CLOCKS_PLL_MUL(40U, 66U), ///< PLL multiplier of 40.66 + CGC_PLL_MUL_41_0 = BSP_CLOCKS_PLL_MUL(41U, 0U), ///< PLL multiplier of 41.00 + CGC_PLL_MUL_41_33 = BSP_CLOCKS_PLL_MUL(41U, 33U), ///< PLL multiplier of 41.33 + CGC_PLL_MUL_41_5 = BSP_CLOCKS_PLL_MUL(41U, 50U), ///< PLL multiplier of 41.50 + CGC_PLL_MUL_41_66 = BSP_CLOCKS_PLL_MUL(41U, 66U), ///< PLL multiplier of 41.66 + CGC_PLL_MUL_42_0 = BSP_CLOCKS_PLL_MUL(42U, 0U), ///< PLL multiplier of 42.00 + CGC_PLL_MUL_42_33 = BSP_CLOCKS_PLL_MUL(42U, 33U), ///< PLL multiplier of 42.33 + CGC_PLL_MUL_42_5 = BSP_CLOCKS_PLL_MUL(42U, 50U), ///< PLL multiplier of 42.50 + CGC_PLL_MUL_42_66 = BSP_CLOCKS_PLL_MUL(42U, 66U), ///< PLL multiplier of 42.66 + CGC_PLL_MUL_43_0 = BSP_CLOCKS_PLL_MUL(43U, 0U), ///< PLL multiplier of 43.00 + CGC_PLL_MUL_43_33 = BSP_CLOCKS_PLL_MUL(43U, 33U), ///< PLL multiplier of 43.33 + CGC_PLL_MUL_43_5 = BSP_CLOCKS_PLL_MUL(43U, 50U), ///< PLL multiplier of 43.50 + CGC_PLL_MUL_43_66 = BSP_CLOCKS_PLL_MUL(43U, 66U), ///< PLL multiplier of 43.66 + CGC_PLL_MUL_44_0 = BSP_CLOCKS_PLL_MUL(44U, 0U), ///< PLL multiplier of 44.00 + CGC_PLL_MUL_44_33 = BSP_CLOCKS_PLL_MUL(44U, 33U), ///< PLL multiplier of 44.33 + CGC_PLL_MUL_44_5 = BSP_CLOCKS_PLL_MUL(44U, 50U), ///< PLL multiplier of 44.50 + CGC_PLL_MUL_44_66 = BSP_CLOCKS_PLL_MUL(44U, 66U), ///< PLL multiplier of 44.66 + CGC_PLL_MUL_45_0 = BSP_CLOCKS_PLL_MUL(45U, 0U), ///< PLL multiplier of 45.00 + CGC_PLL_MUL_45_33 = BSP_CLOCKS_PLL_MUL(45U, 33U), ///< PLL multiplier of 45.33 + CGC_PLL_MUL_45_5 = BSP_CLOCKS_PLL_MUL(45U, 50U), ///< PLL multiplier of 45.50 + CGC_PLL_MUL_45_66 = BSP_CLOCKS_PLL_MUL(45U, 66U), ///< PLL multiplier of 45.66 + CGC_PLL_MUL_46_0 = BSP_CLOCKS_PLL_MUL(46U, 0U), ///< PLL multiplier of 46.00 + CGC_PLL_MUL_46_33 = BSP_CLOCKS_PLL_MUL(46U, 33U), ///< PLL multiplier of 46.33 + CGC_PLL_MUL_46_5 = BSP_CLOCKS_PLL_MUL(46U, 50U), ///< PLL multiplier of 46.50 + CGC_PLL_MUL_46_66 = BSP_CLOCKS_PLL_MUL(46U, 66U), ///< PLL multiplier of 46.66 + CGC_PLL_MUL_47_0 = BSP_CLOCKS_PLL_MUL(47U, 0U), ///< PLL multiplier of 47.00 + CGC_PLL_MUL_47_33 = BSP_CLOCKS_PLL_MUL(47U, 33U), ///< PLL multiplier of 47.33 + CGC_PLL_MUL_47_5 = BSP_CLOCKS_PLL_MUL(47U, 50U), ///< PLL multiplier of 47.50 + CGC_PLL_MUL_47_66 = BSP_CLOCKS_PLL_MUL(47U, 66U), ///< PLL multiplier of 47.66 + CGC_PLL_MUL_48_0 = BSP_CLOCKS_PLL_MUL(48U, 0U), ///< PLL multiplier of 48.00 + CGC_PLL_MUL_48_33 = BSP_CLOCKS_PLL_MUL(48U, 33U), ///< PLL multiplier of 48.33 + CGC_PLL_MUL_48_5 = BSP_CLOCKS_PLL_MUL(48U, 50U), ///< PLL multiplier of 48.50 + CGC_PLL_MUL_48_66 = BSP_CLOCKS_PLL_MUL(48U, 66U), ///< PLL multiplier of 48.66 + CGC_PLL_MUL_49_0 = BSP_CLOCKS_PLL_MUL(49U, 0U), ///< PLL multiplier of 49.00 + CGC_PLL_MUL_49_33 = BSP_CLOCKS_PLL_MUL(49U, 33U), ///< PLL multiplier of 49.33 + CGC_PLL_MUL_49_5 = BSP_CLOCKS_PLL_MUL(49U, 50U), ///< PLL multiplier of 49.50 + CGC_PLL_MUL_49_66 = BSP_CLOCKS_PLL_MUL(49U, 66U), ///< PLL multiplier of 49.66 + CGC_PLL_MUL_50_0 = BSP_CLOCKS_PLL_MUL(50U, 0U), ///< PLL multiplier of 50.00 + CGC_PLL_MUL_50_33 = BSP_CLOCKS_PLL_MUL(50U, 33U), ///< PLL multiplier of 50.33 + CGC_PLL_MUL_50_5 = BSP_CLOCKS_PLL_MUL(50U, 50U), ///< PLL multiplier of 50.50 + CGC_PLL_MUL_50_66 = BSP_CLOCKS_PLL_MUL(50U, 66U), ///< PLL multiplier of 50.66 + CGC_PLL_MUL_51_0 = BSP_CLOCKS_PLL_MUL(51U, 0U), ///< PLL multiplier of 51.00 + CGC_PLL_MUL_51_33 = BSP_CLOCKS_PLL_MUL(51U, 33U), ///< PLL multiplier of 51.33 + CGC_PLL_MUL_51_5 = BSP_CLOCKS_PLL_MUL(51U, 50U), ///< PLL multiplier of 51.50 + CGC_PLL_MUL_51_66 = BSP_CLOCKS_PLL_MUL(51U, 66U), ///< PLL multiplier of 51.66 + CGC_PLL_MUL_52_0 = BSP_CLOCKS_PLL_MUL(52U, 0U), ///< PLL multiplier of 52.00 + CGC_PLL_MUL_52_33 = BSP_CLOCKS_PLL_MUL(52U, 33U), ///< PLL multiplier of 52.33 + CGC_PLL_MUL_52_5 = BSP_CLOCKS_PLL_MUL(52U, 50U), ///< PLL multiplier of 52.50 + CGC_PLL_MUL_52_66 = BSP_CLOCKS_PLL_MUL(52U, 66U), ///< PLL multiplier of 52.66 + CGC_PLL_MUL_53_0 = BSP_CLOCKS_PLL_MUL(53U, 0U), ///< PLL multiplier of 53.00 + CGC_PLL_MUL_53_33 = BSP_CLOCKS_PLL_MUL(53U, 33U), ///< PLL multiplier of 53.33 + CGC_PLL_MUL_53_5 = BSP_CLOCKS_PLL_MUL(53U, 50U), ///< PLL multiplier of 53.50 + CGC_PLL_MUL_53_66 = BSP_CLOCKS_PLL_MUL(53U, 66U), ///< PLL multiplier of 53.66 + CGC_PLL_MUL_54_0 = BSP_CLOCKS_PLL_MUL(54U, 0U), ///< PLL multiplier of 54.00 + CGC_PLL_MUL_54_33 = BSP_CLOCKS_PLL_MUL(54U, 33U), ///< PLL multiplier of 54.33 + CGC_PLL_MUL_54_5 = BSP_CLOCKS_PLL_MUL(54U, 50U), ///< PLL multiplier of 54.50 + CGC_PLL_MUL_54_66 = BSP_CLOCKS_PLL_MUL(54U, 66U), ///< PLL multiplier of 54.66 + CGC_PLL_MUL_55_0 = BSP_CLOCKS_PLL_MUL(55U, 0U), ///< PLL multiplier of 55.00 + CGC_PLL_MUL_55_33 = BSP_CLOCKS_PLL_MUL(55U, 33U), ///< PLL multiplier of 55.33 + CGC_PLL_MUL_55_5 = BSP_CLOCKS_PLL_MUL(55U, 50U), ///< PLL multiplier of 55.50 + CGC_PLL_MUL_55_66 = BSP_CLOCKS_PLL_MUL(55U, 66U), ///< PLL multiplier of 55.66 + CGC_PLL_MUL_56_0 = BSP_CLOCKS_PLL_MUL(56U, 0U), ///< PLL multiplier of 56.00 + CGC_PLL_MUL_56_33 = BSP_CLOCKS_PLL_MUL(56U, 33U), ///< PLL multiplier of 56.33 + CGC_PLL_MUL_56_5 = BSP_CLOCKS_PLL_MUL(56U, 50U), ///< PLL multiplier of 56.50 + CGC_PLL_MUL_56_66 = BSP_CLOCKS_PLL_MUL(56U, 66U), ///< PLL multiplier of 56.66 + CGC_PLL_MUL_57_0 = BSP_CLOCKS_PLL_MUL(57U, 0U), ///< PLL multiplier of 57.00 + CGC_PLL_MUL_57_33 = BSP_CLOCKS_PLL_MUL(57U, 33U), ///< PLL multiplier of 57.33 + CGC_PLL_MUL_57_5 = BSP_CLOCKS_PLL_MUL(57U, 50U), ///< PLL multiplier of 57.50 + CGC_PLL_MUL_57_66 = BSP_CLOCKS_PLL_MUL(57U, 66U), ///< PLL multiplier of 57.66 + CGC_PLL_MUL_58_0 = BSP_CLOCKS_PLL_MUL(58U, 0U), ///< PLL multiplier of 58.00 + CGC_PLL_MUL_58_33 = BSP_CLOCKS_PLL_MUL(58U, 33U), ///< PLL multiplier of 58.33 + CGC_PLL_MUL_58_5 = BSP_CLOCKS_PLL_MUL(58U, 50U), ///< PLL multiplier of 58.50 + CGC_PLL_MUL_58_66 = BSP_CLOCKS_PLL_MUL(58U, 66U), ///< PLL multiplier of 58.66 + CGC_PLL_MUL_59_0 = BSP_CLOCKS_PLL_MUL(59U, 0U), ///< PLL multiplier of 59.00 + CGC_PLL_MUL_59_33 = BSP_CLOCKS_PLL_MUL(59U, 33U), ///< PLL multiplier of 59.33 + CGC_PLL_MUL_59_5 = BSP_CLOCKS_PLL_MUL(59U, 50U), ///< PLL multiplier of 59.50 + CGC_PLL_MUL_59_66 = BSP_CLOCKS_PLL_MUL(59U, 66U), ///< PLL multiplier of 59.66 + CGC_PLL_MUL_60_0 = BSP_CLOCKS_PLL_MUL(60U, 0U), ///< PLL multiplier of 60.00 + CGC_PLL_MUL_60_33 = BSP_CLOCKS_PLL_MUL(60U, 33U), ///< PLL multiplier of 60.33 + CGC_PLL_MUL_60_5 = BSP_CLOCKS_PLL_MUL(60U, 50U), ///< PLL multiplier of 60.50 + CGC_PLL_MUL_60_66 = BSP_CLOCKS_PLL_MUL(60U, 66U), ///< PLL multiplier of 60.66 + CGC_PLL_MUL_61_0 = BSP_CLOCKS_PLL_MUL(61U, 0U), ///< PLL multiplier of 61.00 + CGC_PLL_MUL_61_33 = BSP_CLOCKS_PLL_MUL(61U, 33U), ///< PLL multiplier of 61.33 + CGC_PLL_MUL_61_5 = BSP_CLOCKS_PLL_MUL(61U, 50U), ///< PLL multiplier of 61.50 + CGC_PLL_MUL_61_66 = BSP_CLOCKS_PLL_MUL(61U, 66U), ///< PLL multiplier of 61.66 + CGC_PLL_MUL_62_0 = BSP_CLOCKS_PLL_MUL(62U, 0U), ///< PLL multiplier of 62.00 + CGC_PLL_MUL_62_33 = BSP_CLOCKS_PLL_MUL(62U, 33U), ///< PLL multiplier of 62.33 + CGC_PLL_MUL_62_5 = BSP_CLOCKS_PLL_MUL(62U, 50U), ///< PLL multiplier of 62.50 + CGC_PLL_MUL_62_66 = BSP_CLOCKS_PLL_MUL(62U, 66U), ///< PLL multiplier of 62.66 + CGC_PLL_MUL_63_0 = BSP_CLOCKS_PLL_MUL(63U, 0U), ///< PLL multiplier of 63.00 + CGC_PLL_MUL_63_33 = BSP_CLOCKS_PLL_MUL(63U, 33U), ///< PLL multiplier of 63.33 + CGC_PLL_MUL_63_5 = BSP_CLOCKS_PLL_MUL(63U, 50U), ///< PLL multiplier of 63.50 + CGC_PLL_MUL_63_66 = BSP_CLOCKS_PLL_MUL(63U, 66U), ///< PLL multiplier of 63.66 + CGC_PLL_MUL_64_0 = BSP_CLOCKS_PLL_MUL(64U, 0U), ///< PLL multiplier of 64.00 + CGC_PLL_MUL_64_33 = BSP_CLOCKS_PLL_MUL(64U, 33U), ///< PLL multiplier of 64.33 + CGC_PLL_MUL_64_5 = BSP_CLOCKS_PLL_MUL(64U, 50U), ///< PLL multiplier of 64.50 + CGC_PLL_MUL_64_66 = BSP_CLOCKS_PLL_MUL(64U, 66U), ///< PLL multiplier of 64.66 + CGC_PLL_MUL_65_0 = BSP_CLOCKS_PLL_MUL(65U, 0U), ///< PLL multiplier of 65.00 + CGC_PLL_MUL_65_33 = BSP_CLOCKS_PLL_MUL(65U, 33U), ///< PLL multiplier of 65.33 + CGC_PLL_MUL_65_5 = BSP_CLOCKS_PLL_MUL(65U, 50U), ///< PLL multiplier of 65.50 + CGC_PLL_MUL_65_66 = BSP_CLOCKS_PLL_MUL(65U, 66U), ///< PLL multiplier of 65.66 + CGC_PLL_MUL_66_0 = BSP_CLOCKS_PLL_MUL(66U, 0U), ///< PLL multiplier of 66.00 + CGC_PLL_MUL_66_33 = BSP_CLOCKS_PLL_MUL(66U, 33U), ///< PLL multiplier of 66.33 + CGC_PLL_MUL_66_5 = BSP_CLOCKS_PLL_MUL(66U, 50U), ///< PLL multiplier of 66.50 + CGC_PLL_MUL_66_66 = BSP_CLOCKS_PLL_MUL(66U, 66U), ///< PLL multiplier of 66.66 + CGC_PLL_MUL_67_0 = BSP_CLOCKS_PLL_MUL(67U, 0U), ///< PLL multiplier of 67.00 + CGC_PLL_MUL_67_33 = BSP_CLOCKS_PLL_MUL(67U, 33U), ///< PLL multiplier of 67.33 + CGC_PLL_MUL_67_5 = BSP_CLOCKS_PLL_MUL(67U, 50U), ///< PLL multiplier of 67.50 + CGC_PLL_MUL_67_66 = BSP_CLOCKS_PLL_MUL(67U, 66U), ///< PLL multiplier of 67.66 + CGC_PLL_MUL_68_0 = BSP_CLOCKS_PLL_MUL(68U, 0U), ///< PLL multiplier of 68.00 + CGC_PLL_MUL_68_33 = BSP_CLOCKS_PLL_MUL(68U, 33U), ///< PLL multiplier of 68.33 + CGC_PLL_MUL_68_5 = BSP_CLOCKS_PLL_MUL(68U, 50U), ///< PLL multiplier of 68.50 + CGC_PLL_MUL_68_66 = BSP_CLOCKS_PLL_MUL(68U, 66U), ///< PLL multiplier of 68.66 + CGC_PLL_MUL_69_0 = BSP_CLOCKS_PLL_MUL(69U, 0U), ///< PLL multiplier of 69.00 + CGC_PLL_MUL_69_33 = BSP_CLOCKS_PLL_MUL(69U, 33U), ///< PLL multiplier of 69.33 + CGC_PLL_MUL_69_5 = BSP_CLOCKS_PLL_MUL(69U, 50U), ///< PLL multiplier of 69.50 + CGC_PLL_MUL_69_66 = BSP_CLOCKS_PLL_MUL(69U, 66U), ///< PLL multiplier of 69.66 + CGC_PLL_MUL_70_0 = BSP_CLOCKS_PLL_MUL(70U, 0U), ///< PLL multiplier of 70.00 + CGC_PLL_MUL_70_33 = BSP_CLOCKS_PLL_MUL(70U, 33U), ///< PLL multiplier of 70.33 + CGC_PLL_MUL_70_5 = BSP_CLOCKS_PLL_MUL(70U, 50U), ///< PLL multiplier of 70.50 + CGC_PLL_MUL_70_66 = BSP_CLOCKS_PLL_MUL(70U, 66U), ///< PLL multiplier of 70.66 + CGC_PLL_MUL_71_0 = BSP_CLOCKS_PLL_MUL(71U, 0U), ///< PLL multiplier of 71.00 + CGC_PLL_MUL_71_33 = BSP_CLOCKS_PLL_MUL(71U, 33U), ///< PLL multiplier of 71.33 + CGC_PLL_MUL_71_5 = BSP_CLOCKS_PLL_MUL(71U, 50U), ///< PLL multiplier of 71.50 + CGC_PLL_MUL_71_66 = BSP_CLOCKS_PLL_MUL(71U, 66U), ///< PLL multiplier of 71.66 + CGC_PLL_MUL_72_0 = BSP_CLOCKS_PLL_MUL(72U, 0U), ///< PLL multiplier of 72.00 + CGC_PLL_MUL_72_33 = BSP_CLOCKS_PLL_MUL(72U, 33U), ///< PLL multiplier of 72.33 + CGC_PLL_MUL_72_5 = BSP_CLOCKS_PLL_MUL(72U, 50U), ///< PLL multiplier of 72.50 + CGC_PLL_MUL_72_66 = BSP_CLOCKS_PLL_MUL(72U, 66U), ///< PLL multiplier of 72.66 + CGC_PLL_MUL_73_0 = BSP_CLOCKS_PLL_MUL(73U, 0U), ///< PLL multiplier of 73.00 + CGC_PLL_MUL_73_33 = BSP_CLOCKS_PLL_MUL(73U, 33U), ///< PLL multiplier of 73.33 + CGC_PLL_MUL_73_5 = BSP_CLOCKS_PLL_MUL(73U, 50U), ///< PLL multiplier of 73.50 + CGC_PLL_MUL_73_66 = BSP_CLOCKS_PLL_MUL(73U, 66U), ///< PLL multiplier of 73.66 + CGC_PLL_MUL_74_0 = BSP_CLOCKS_PLL_MUL(74U, 0U), ///< PLL multiplier of 74.00 + CGC_PLL_MUL_74_33 = BSP_CLOCKS_PLL_MUL(74U, 33U), ///< PLL multiplier of 74.33 + CGC_PLL_MUL_74_5 = BSP_CLOCKS_PLL_MUL(74U, 50U), ///< PLL multiplier of 74.50 + CGC_PLL_MUL_74_66 = BSP_CLOCKS_PLL_MUL(74U, 66U), ///< PLL multiplier of 74.66 + CGC_PLL_MUL_75_0 = BSP_CLOCKS_PLL_MUL(75U, 0U), ///< PLL multiplier of 75.00 + CGC_PLL_MUL_75_33 = BSP_CLOCKS_PLL_MUL(75U, 33U), ///< PLL multiplier of 75.33 + CGC_PLL_MUL_75_5 = BSP_CLOCKS_PLL_MUL(75U, 50U), ///< PLL multiplier of 75.50 + CGC_PLL_MUL_75_66 = BSP_CLOCKS_PLL_MUL(75U, 66U), ///< PLL multiplier of 75.66 + CGC_PLL_MUL_76_0 = BSP_CLOCKS_PLL_MUL(76U, 0U), ///< PLL multiplier of 76.00 + CGC_PLL_MUL_76_33 = BSP_CLOCKS_PLL_MUL(76U, 33U), ///< PLL multiplier of 76.33 + CGC_PLL_MUL_76_5 = BSP_CLOCKS_PLL_MUL(76U, 50U), ///< PLL multiplier of 76.50 + CGC_PLL_MUL_76_66 = BSP_CLOCKS_PLL_MUL(76U, 66U), ///< PLL multiplier of 76.66 + CGC_PLL_MUL_77_0 = BSP_CLOCKS_PLL_MUL(77U, 0U), ///< PLL multiplier of 77.00 + CGC_PLL_MUL_77_33 = BSP_CLOCKS_PLL_MUL(77U, 33U), ///< PLL multiplier of 77.33 + CGC_PLL_MUL_77_5 = BSP_CLOCKS_PLL_MUL(77U, 50U), ///< PLL multiplier of 77.50 + CGC_PLL_MUL_77_66 = BSP_CLOCKS_PLL_MUL(77U, 66U), ///< PLL multiplier of 77.66 + CGC_PLL_MUL_78_0 = BSP_CLOCKS_PLL_MUL(78U, 0U), ///< PLL multiplier of 78.00 + CGC_PLL_MUL_78_33 = BSP_CLOCKS_PLL_MUL(78U, 33U), ///< PLL multiplier of 78.33 + CGC_PLL_MUL_78_5 = BSP_CLOCKS_PLL_MUL(78U, 50U), ///< PLL multiplier of 78.50 + CGC_PLL_MUL_78_66 = BSP_CLOCKS_PLL_MUL(78U, 66U), ///< PLL multiplier of 78.66 + CGC_PLL_MUL_79_0 = BSP_CLOCKS_PLL_MUL(79U, 0U), ///< PLL multiplier of 79.00 + CGC_PLL_MUL_79_33 = BSP_CLOCKS_PLL_MUL(79U, 33U), ///< PLL multiplier of 79.33 + CGC_PLL_MUL_79_5 = BSP_CLOCKS_PLL_MUL(79U, 50U), ///< PLL multiplier of 79.50 + CGC_PLL_MUL_79_66 = BSP_CLOCKS_PLL_MUL(79U, 66U), ///< PLL multiplier of 79.66 + CGC_PLL_MUL_80_0 = BSP_CLOCKS_PLL_MUL(80U, 0U), ///< PLL multiplier of 80.00 + CGC_PLL_MUL_80_33 = BSP_CLOCKS_PLL_MUL(80U, 33U), ///< PLL multiplier of 80.33 + CGC_PLL_MUL_80_5 = BSP_CLOCKS_PLL_MUL(80U, 50U), ///< PLL multiplier of 80.50 + CGC_PLL_MUL_80_66 = BSP_CLOCKS_PLL_MUL(80U, 66U), ///< PLL multiplier of 80.66 + CGC_PLL_MUL_81_0 = BSP_CLOCKS_PLL_MUL(81U, 0U), ///< PLL multiplier of 81.00 + CGC_PLL_MUL_81_33 = BSP_CLOCKS_PLL_MUL(81U, 33U), ///< PLL multiplier of 81.33 + CGC_PLL_MUL_81_5 = BSP_CLOCKS_PLL_MUL(81U, 50U), ///< PLL multiplier of 81.50 + CGC_PLL_MUL_81_66 = BSP_CLOCKS_PLL_MUL(81U, 66U), ///< PLL multiplier of 81.66 + CGC_PLL_MUL_82_0 = BSP_CLOCKS_PLL_MUL(82U, 0U), ///< PLL multiplier of 82.00 + CGC_PLL_MUL_82_33 = BSP_CLOCKS_PLL_MUL(82U, 33U), ///< PLL multiplier of 82.33 + CGC_PLL_MUL_82_5 = BSP_CLOCKS_PLL_MUL(82U, 50U), ///< PLL multiplier of 82.50 + CGC_PLL_MUL_82_66 = BSP_CLOCKS_PLL_MUL(82U, 66U), ///< PLL multiplier of 82.66 + CGC_PLL_MUL_83_0 = BSP_CLOCKS_PLL_MUL(83U, 0U), ///< PLL multiplier of 83.00 + CGC_PLL_MUL_83_33 = BSP_CLOCKS_PLL_MUL(83U, 33U), ///< PLL multiplier of 83.33 + CGC_PLL_MUL_83_5 = BSP_CLOCKS_PLL_MUL(83U, 50U), ///< PLL multiplier of 83.50 + CGC_PLL_MUL_83_66 = BSP_CLOCKS_PLL_MUL(83U, 66U), ///< PLL multiplier of 83.66 + CGC_PLL_MUL_84_0 = BSP_CLOCKS_PLL_MUL(84U, 0U), ///< PLL multiplier of 84.00 + CGC_PLL_MUL_84_33 = BSP_CLOCKS_PLL_MUL(84U, 33U), ///< PLL multiplier of 84.33 + CGC_PLL_MUL_84_5 = BSP_CLOCKS_PLL_MUL(84U, 50U), ///< PLL multiplier of 84.50 + CGC_PLL_MUL_84_66 = BSP_CLOCKS_PLL_MUL(84U, 66U), ///< PLL multiplier of 84.66 + CGC_PLL_MUL_85_0 = BSP_CLOCKS_PLL_MUL(85U, 0U), ///< PLL multiplier of 85.00 + CGC_PLL_MUL_85_33 = BSP_CLOCKS_PLL_MUL(85U, 33U), ///< PLL multiplier of 85.33 + CGC_PLL_MUL_85_5 = BSP_CLOCKS_PLL_MUL(85U, 50U), ///< PLL multiplier of 85.50 + CGC_PLL_MUL_85_66 = BSP_CLOCKS_PLL_MUL(85U, 66U), ///< PLL multiplier of 85.66 + CGC_PLL_MUL_86_0 = BSP_CLOCKS_PLL_MUL(86U, 0U), ///< PLL multiplier of 86.00 + CGC_PLL_MUL_86_33 = BSP_CLOCKS_PLL_MUL(86U, 33U), ///< PLL multiplier of 86.33 + CGC_PLL_MUL_86_5 = BSP_CLOCKS_PLL_MUL(86U, 50U), ///< PLL multiplier of 86.50 + CGC_PLL_MUL_86_66 = BSP_CLOCKS_PLL_MUL(86U, 66U), ///< PLL multiplier of 86.66 + CGC_PLL_MUL_87_0 = BSP_CLOCKS_PLL_MUL(87U, 0U), ///< PLL multiplier of 87.00 + CGC_PLL_MUL_87_33 = BSP_CLOCKS_PLL_MUL(87U, 33U), ///< PLL multiplier of 87.33 + CGC_PLL_MUL_87_5 = BSP_CLOCKS_PLL_MUL(87U, 50U), ///< PLL multiplier of 87.50 + CGC_PLL_MUL_87_66 = BSP_CLOCKS_PLL_MUL(87U, 66U), ///< PLL multiplier of 87.66 + CGC_PLL_MUL_88_0 = BSP_CLOCKS_PLL_MUL(88U, 0U), ///< PLL multiplier of 88.00 + CGC_PLL_MUL_88_33 = BSP_CLOCKS_PLL_MUL(88U, 33U), ///< PLL multiplier of 88.33 + CGC_PLL_MUL_88_5 = BSP_CLOCKS_PLL_MUL(88U, 50U), ///< PLL multiplier of 88.50 + CGC_PLL_MUL_88_66 = BSP_CLOCKS_PLL_MUL(88U, 66U), ///< PLL multiplier of 88.66 + CGC_PLL_MUL_89_0 = BSP_CLOCKS_PLL_MUL(89U, 0U), ///< PLL multiplier of 89.00 + CGC_PLL_MUL_89_33 = BSP_CLOCKS_PLL_MUL(89U, 33U), ///< PLL multiplier of 89.33 + CGC_PLL_MUL_89_5 = BSP_CLOCKS_PLL_MUL(89U, 50U), ///< PLL multiplier of 89.50 + CGC_PLL_MUL_89_66 = BSP_CLOCKS_PLL_MUL(89U, 66U), ///< PLL multiplier of 89.66 + CGC_PLL_MUL_90_0 = BSP_CLOCKS_PLL_MUL(90U, 0U), ///< PLL multiplier of 90.00 + CGC_PLL_MUL_90_33 = BSP_CLOCKS_PLL_MUL(90U, 33U), ///< PLL multiplier of 90.33 + CGC_PLL_MUL_90_5 = BSP_CLOCKS_PLL_MUL(90U, 50U), ///< PLL multiplier of 90.50 + CGC_PLL_MUL_90_66 = BSP_CLOCKS_PLL_MUL(90U, 66U), ///< PLL multiplier of 90.66 + CGC_PLL_MUL_91_0 = BSP_CLOCKS_PLL_MUL(91U, 0U), ///< PLL multiplier of 91.00 + CGC_PLL_MUL_91_33 = BSP_CLOCKS_PLL_MUL(91U, 33U), ///< PLL multiplier of 91.33 + CGC_PLL_MUL_91_5 = BSP_CLOCKS_PLL_MUL(91U, 50U), ///< PLL multiplier of 91.50 + CGC_PLL_MUL_91_66 = BSP_CLOCKS_PLL_MUL(91U, 66U), ///< PLL multiplier of 91.66 + CGC_PLL_MUL_92_0 = BSP_CLOCKS_PLL_MUL(92U, 0U), ///< PLL multiplier of 92.00 + CGC_PLL_MUL_92_33 = BSP_CLOCKS_PLL_MUL(92U, 33U), ///< PLL multiplier of 92.33 + CGC_PLL_MUL_92_5 = BSP_CLOCKS_PLL_MUL(92U, 50U), ///< PLL multiplier of 92.50 + CGC_PLL_MUL_92_66 = BSP_CLOCKS_PLL_MUL(92U, 66U), ///< PLL multiplier of 92.66 + CGC_PLL_MUL_93_0 = BSP_CLOCKS_PLL_MUL(93U, 0U), ///< PLL multiplier of 93.00 + CGC_PLL_MUL_93_33 = BSP_CLOCKS_PLL_MUL(93U, 33U), ///< PLL multiplier of 93.33 + CGC_PLL_MUL_93_5 = BSP_CLOCKS_PLL_MUL(93U, 50U), ///< PLL multiplier of 93.50 + CGC_PLL_MUL_93_66 = BSP_CLOCKS_PLL_MUL(93U, 66U), ///< PLL multiplier of 93.66 + CGC_PLL_MUL_94_0 = BSP_CLOCKS_PLL_MUL(94U, 0U), ///< PLL multiplier of 94.00 + CGC_PLL_MUL_94_33 = BSP_CLOCKS_PLL_MUL(94U, 33U), ///< PLL multiplier of 94.33 + CGC_PLL_MUL_94_5 = BSP_CLOCKS_PLL_MUL(94U, 50U), ///< PLL multiplier of 94.50 + CGC_PLL_MUL_94_66 = BSP_CLOCKS_PLL_MUL(94U, 66U), ///< PLL multiplier of 94.66 + CGC_PLL_MUL_95_0 = BSP_CLOCKS_PLL_MUL(95U, 0U), ///< PLL multiplier of 95.00 + CGC_PLL_MUL_95_33 = BSP_CLOCKS_PLL_MUL(95U, 33U), ///< PLL multiplier of 95.33 + CGC_PLL_MUL_95_5 = BSP_CLOCKS_PLL_MUL(95U, 50U), ///< PLL multiplier of 95.50 + CGC_PLL_MUL_95_66 = BSP_CLOCKS_PLL_MUL(95U, 66U), ///< PLL multiplier of 95.66 + CGC_PLL_MUL_96_0 = BSP_CLOCKS_PLL_MUL(96U, 0U), ///< PLL multiplier of 96.00 + CGC_PLL_MUL_96_33 = BSP_CLOCKS_PLL_MUL(96U, 33U), ///< PLL multiplier of 96.33 + CGC_PLL_MUL_96_5 = BSP_CLOCKS_PLL_MUL(96U, 50U), ///< PLL multiplier of 96.50 + CGC_PLL_MUL_96_66 = BSP_CLOCKS_PLL_MUL(96U, 66U), ///< PLL multiplier of 96.66 + CGC_PLL_MUL_97_0 = BSP_CLOCKS_PLL_MUL(97U, 0U), ///< PLL multiplier of 97.00 + CGC_PLL_MUL_97_33 = BSP_CLOCKS_PLL_MUL(97U, 33U), ///< PLL multiplier of 97.33 + CGC_PLL_MUL_97_5 = BSP_CLOCKS_PLL_MUL(97U, 50U), ///< PLL multiplier of 97.50 + CGC_PLL_MUL_97_66 = BSP_CLOCKS_PLL_MUL(97U, 66U), ///< PLL multiplier of 97.66 + CGC_PLL_MUL_98_0 = BSP_CLOCKS_PLL_MUL(98U, 0U), ///< PLL multiplier of 98.00 + CGC_PLL_MUL_98_33 = BSP_CLOCKS_PLL_MUL(98U, 33U), ///< PLL multiplier of 98.33 + CGC_PLL_MUL_98_5 = BSP_CLOCKS_PLL_MUL(98U, 50U), ///< PLL multiplier of 98.50 + CGC_PLL_MUL_98_66 = BSP_CLOCKS_PLL_MUL(98U, 66U), ///< PLL multiplier of 98.66 + CGC_PLL_MUL_99_0 = BSP_CLOCKS_PLL_MUL(99U, 0U), ///< PLL multiplier of 99.00 + CGC_PLL_MUL_99_33 = BSP_CLOCKS_PLL_MUL(99U, 33U), ///< PLL multiplier of 99.33 + CGC_PLL_MUL_99_5 = BSP_CLOCKS_PLL_MUL(99U, 50U), ///< PLL multiplier of 99.50 + CGC_PLL_MUL_99_66 = BSP_CLOCKS_PLL_MUL(99U, 66U), ///< PLL multiplier of 99.66 + CGC_PLL_MUL_100_0 = BSP_CLOCKS_PLL_MUL(100U, 0U), ///< PLL multiplier of 100.00 + CGC_PLL_MUL_100_33 = BSP_CLOCKS_PLL_MUL(100U, 33U), ///< PLL multiplier of 100.33 + CGC_PLL_MUL_100_5 = BSP_CLOCKS_PLL_MUL(100U, 50U), ///< PLL multiplier of 100.50 + CGC_PLL_MUL_100_66 = BSP_CLOCKS_PLL_MUL(100U, 66U), ///< PLL multiplier of 100.66 + CGC_PLL_MUL_101_0 = BSP_CLOCKS_PLL_MUL(101U, 0U), ///< PLL multiplier of 101.00 + CGC_PLL_MUL_101_33 = BSP_CLOCKS_PLL_MUL(101U, 33U), ///< PLL multiplier of 101.33 + CGC_PLL_MUL_101_5 = BSP_CLOCKS_PLL_MUL(101U, 50U), ///< PLL multiplier of 101.50 + CGC_PLL_MUL_101_66 = BSP_CLOCKS_PLL_MUL(101U, 66U), ///< PLL multiplier of 101.66 + CGC_PLL_MUL_102_0 = BSP_CLOCKS_PLL_MUL(102U, 0U), ///< PLL multiplier of 102.00 + CGC_PLL_MUL_102_33 = BSP_CLOCKS_PLL_MUL(102U, 33U), ///< PLL multiplier of 102.33 + CGC_PLL_MUL_102_5 = BSP_CLOCKS_PLL_MUL(102U, 50U), ///< PLL multiplier of 102.50 + CGC_PLL_MUL_102_66 = BSP_CLOCKS_PLL_MUL(102U, 66U), ///< PLL multiplier of 102.66 + CGC_PLL_MUL_103_0 = BSP_CLOCKS_PLL_MUL(103U, 0U), ///< PLL multiplier of 103.00 + CGC_PLL_MUL_103_33 = BSP_CLOCKS_PLL_MUL(103U, 33U), ///< PLL multiplier of 103.33 + CGC_PLL_MUL_103_5 = BSP_CLOCKS_PLL_MUL(103U, 50U), ///< PLL multiplier of 103.50 + CGC_PLL_MUL_103_66 = BSP_CLOCKS_PLL_MUL(103U, 66U), ///< PLL multiplier of 103.66 + CGC_PLL_MUL_104_0 = BSP_CLOCKS_PLL_MUL(104U, 0U), ///< PLL multiplier of 104.00 + CGC_PLL_MUL_104_33 = BSP_CLOCKS_PLL_MUL(104U, 33U), ///< PLL multiplier of 104.33 + CGC_PLL_MUL_104_5 = BSP_CLOCKS_PLL_MUL(104U, 50U), ///< PLL multiplier of 104.50 + CGC_PLL_MUL_104_66 = BSP_CLOCKS_PLL_MUL(104U, 66U), ///< PLL multiplier of 104.66 + CGC_PLL_MUL_105_0 = BSP_CLOCKS_PLL_MUL(105U, 0U), ///< PLL multiplier of 105.00 + CGC_PLL_MUL_105_33 = BSP_CLOCKS_PLL_MUL(105U, 33U), ///< PLL multiplier of 105.33 + CGC_PLL_MUL_105_5 = BSP_CLOCKS_PLL_MUL(105U, 50U), ///< PLL multiplier of 105.50 + CGC_PLL_MUL_105_66 = BSP_CLOCKS_PLL_MUL(105U, 66U), ///< PLL multiplier of 105.66 + CGC_PLL_MUL_106_0 = BSP_CLOCKS_PLL_MUL(106U, 0U), ///< PLL multiplier of 106.00 + CGC_PLL_MUL_106_33 = BSP_CLOCKS_PLL_MUL(106U, 33U), ///< PLL multiplier of 106.33 + CGC_PLL_MUL_106_5 = BSP_CLOCKS_PLL_MUL(106U, 50U), ///< PLL multiplier of 106.50 + CGC_PLL_MUL_106_66 = BSP_CLOCKS_PLL_MUL(106U, 66U), ///< PLL multiplier of 106.66 + CGC_PLL_MUL_107_0 = BSP_CLOCKS_PLL_MUL(107U, 0U), ///< PLL multiplier of 107.00 + CGC_PLL_MUL_107_33 = BSP_CLOCKS_PLL_MUL(107U, 33U), ///< PLL multiplier of 107.33 + CGC_PLL_MUL_107_5 = BSP_CLOCKS_PLL_MUL(107U, 50U), ///< PLL multiplier of 107.50 + CGC_PLL_MUL_107_66 = BSP_CLOCKS_PLL_MUL(107U, 66U), ///< PLL multiplier of 107.66 + CGC_PLL_MUL_108_0 = BSP_CLOCKS_PLL_MUL(108U, 0U), ///< PLL multiplier of 108.00 + CGC_PLL_MUL_108_33 = BSP_CLOCKS_PLL_MUL(108U, 33U), ///< PLL multiplier of 108.33 + CGC_PLL_MUL_108_5 = BSP_CLOCKS_PLL_MUL(108U, 50U), ///< PLL multiplier of 108.50 + CGC_PLL_MUL_108_66 = BSP_CLOCKS_PLL_MUL(108U, 66U), ///< PLL multiplier of 108.66 + CGC_PLL_MUL_109_0 = BSP_CLOCKS_PLL_MUL(109U, 0U), ///< PLL multiplier of 109.00 + CGC_PLL_MUL_109_33 = BSP_CLOCKS_PLL_MUL(109U, 33U), ///< PLL multiplier of 109.33 + CGC_PLL_MUL_109_5 = BSP_CLOCKS_PLL_MUL(109U, 50U), ///< PLL multiplier of 109.50 + CGC_PLL_MUL_109_66 = BSP_CLOCKS_PLL_MUL(109U, 66U), ///< PLL multiplier of 109.66 + CGC_PLL_MUL_110_0 = BSP_CLOCKS_PLL_MUL(110U, 0U), ///< PLL multiplier of 110.00 + CGC_PLL_MUL_110_33 = BSP_CLOCKS_PLL_MUL(110U, 33U), ///< PLL multiplier of 110.33 + CGC_PLL_MUL_110_5 = BSP_CLOCKS_PLL_MUL(110U, 50U), ///< PLL multiplier of 110.50 + CGC_PLL_MUL_110_66 = BSP_CLOCKS_PLL_MUL(110U, 66U), ///< PLL multiplier of 110.66 + CGC_PLL_MUL_111_0 = BSP_CLOCKS_PLL_MUL(111U, 0U), ///< PLL multiplier of 111.00 + CGC_PLL_MUL_111_33 = BSP_CLOCKS_PLL_MUL(111U, 33U), ///< PLL multiplier of 111.33 + CGC_PLL_MUL_111_5 = BSP_CLOCKS_PLL_MUL(111U, 50U), ///< PLL multiplier of 111.50 + CGC_PLL_MUL_111_66 = BSP_CLOCKS_PLL_MUL(111U, 66U), ///< PLL multiplier of 111.66 + CGC_PLL_MUL_112_0 = BSP_CLOCKS_PLL_MUL(112U, 0U), ///< PLL multiplier of 112.00 + CGC_PLL_MUL_112_33 = BSP_CLOCKS_PLL_MUL(112U, 33U), ///< PLL multiplier of 112.33 + CGC_PLL_MUL_112_5 = BSP_CLOCKS_PLL_MUL(112U, 50U), ///< PLL multiplier of 112.50 + CGC_PLL_MUL_112_66 = BSP_CLOCKS_PLL_MUL(112U, 66U), ///< PLL multiplier of 112.66 + CGC_PLL_MUL_113_0 = BSP_CLOCKS_PLL_MUL(113U, 0U), ///< PLL multiplier of 113.00 + CGC_PLL_MUL_113_33 = BSP_CLOCKS_PLL_MUL(113U, 33U), ///< PLL multiplier of 113.33 + CGC_PLL_MUL_113_5 = BSP_CLOCKS_PLL_MUL(113U, 50U), ///< PLL multiplier of 113.50 + CGC_PLL_MUL_113_66 = BSP_CLOCKS_PLL_MUL(113U, 66U), ///< PLL multiplier of 113.66 + CGC_PLL_MUL_114_0 = BSP_CLOCKS_PLL_MUL(114U, 0U), ///< PLL multiplier of 114.00 + CGC_PLL_MUL_114_33 = BSP_CLOCKS_PLL_MUL(114U, 33U), ///< PLL multiplier of 114.33 + CGC_PLL_MUL_114_5 = BSP_CLOCKS_PLL_MUL(114U, 50U), ///< PLL multiplier of 114.50 + CGC_PLL_MUL_114_66 = BSP_CLOCKS_PLL_MUL(114U, 66U), ///< PLL multiplier of 114.66 + CGC_PLL_MUL_115_0 = BSP_CLOCKS_PLL_MUL(115U, 0U), ///< PLL multiplier of 115.00 + CGC_PLL_MUL_115_33 = BSP_CLOCKS_PLL_MUL(115U, 33U), ///< PLL multiplier of 115.33 + CGC_PLL_MUL_115_5 = BSP_CLOCKS_PLL_MUL(115U, 50U), ///< PLL multiplier of 115.50 + CGC_PLL_MUL_115_66 = BSP_CLOCKS_PLL_MUL(115U, 66U), ///< PLL multiplier of 115.66 + CGC_PLL_MUL_116_0 = BSP_CLOCKS_PLL_MUL(116U, 0U), ///< PLL multiplier of 116.00 + CGC_PLL_MUL_116_33 = BSP_CLOCKS_PLL_MUL(116U, 33U), ///< PLL multiplier of 116.33 + CGC_PLL_MUL_116_5 = BSP_CLOCKS_PLL_MUL(116U, 50U), ///< PLL multiplier of 116.50 + CGC_PLL_MUL_116_66 = BSP_CLOCKS_PLL_MUL(116U, 66U), ///< PLL multiplier of 116.66 + CGC_PLL_MUL_117_0 = BSP_CLOCKS_PLL_MUL(117U, 0U), ///< PLL multiplier of 117.00 + CGC_PLL_MUL_117_33 = BSP_CLOCKS_PLL_MUL(117U, 33U), ///< PLL multiplier of 117.33 + CGC_PLL_MUL_117_5 = BSP_CLOCKS_PLL_MUL(117U, 50U), ///< PLL multiplier of 117.50 + CGC_PLL_MUL_117_66 = BSP_CLOCKS_PLL_MUL(117U, 66U), ///< PLL multiplier of 117.66 + CGC_PLL_MUL_118_0 = BSP_CLOCKS_PLL_MUL(118U, 0U), ///< PLL multiplier of 118.00 + CGC_PLL_MUL_118_33 = BSP_CLOCKS_PLL_MUL(118U, 33U), ///< PLL multiplier of 118.33 + CGC_PLL_MUL_118_5 = BSP_CLOCKS_PLL_MUL(118U, 50U), ///< PLL multiplier of 118.50 + CGC_PLL_MUL_118_66 = BSP_CLOCKS_PLL_MUL(118U, 66U), ///< PLL multiplier of 118.66 + CGC_PLL_MUL_119_0 = BSP_CLOCKS_PLL_MUL(119U, 0U), ///< PLL multiplier of 119.00 + CGC_PLL_MUL_119_33 = BSP_CLOCKS_PLL_MUL(119U, 33U), ///< PLL multiplier of 119.33 + CGC_PLL_MUL_119_5 = BSP_CLOCKS_PLL_MUL(119U, 50U), ///< PLL multiplier of 119.50 + CGC_PLL_MUL_119_66 = BSP_CLOCKS_PLL_MUL(119U, 66U), ///< PLL multiplier of 119.66 + CGC_PLL_MUL_120_0 = BSP_CLOCKS_PLL_MUL(120U, 0U), ///< PLL multiplier of 120.00 + CGC_PLL_MUL_120_33 = BSP_CLOCKS_PLL_MUL(120U, 33U), ///< PLL multiplier of 120.33 + CGC_PLL_MUL_120_5 = BSP_CLOCKS_PLL_MUL(120U, 50U), ///< PLL multiplier of 120.50 + CGC_PLL_MUL_120_66 = BSP_CLOCKS_PLL_MUL(120U, 66U), ///< PLL multiplier of 120.66 + CGC_PLL_MUL_121_0 = BSP_CLOCKS_PLL_MUL(121U, 0U), ///< PLL multiplier of 121.00 + CGC_PLL_MUL_121_33 = BSP_CLOCKS_PLL_MUL(121U, 33U), ///< PLL multiplier of 121.33 + CGC_PLL_MUL_121_5 = BSP_CLOCKS_PLL_MUL(121U, 50U), ///< PLL multiplier of 121.50 + CGC_PLL_MUL_121_66 = BSP_CLOCKS_PLL_MUL(121U, 66U), ///< PLL multiplier of 121.66 + CGC_PLL_MUL_122_0 = BSP_CLOCKS_PLL_MUL(122U, 0U), ///< PLL multiplier of 122.00 + CGC_PLL_MUL_122_33 = BSP_CLOCKS_PLL_MUL(122U, 33U), ///< PLL multiplier of 122.33 + CGC_PLL_MUL_122_5 = BSP_CLOCKS_PLL_MUL(122U, 50U), ///< PLL multiplier of 122.50 + CGC_PLL_MUL_122_66 = BSP_CLOCKS_PLL_MUL(122U, 66U), ///< PLL multiplier of 122.66 + CGC_PLL_MUL_123_0 = BSP_CLOCKS_PLL_MUL(123U, 0U), ///< PLL multiplier of 123.00 + CGC_PLL_MUL_123_33 = BSP_CLOCKS_PLL_MUL(123U, 33U), ///< PLL multiplier of 123.33 + CGC_PLL_MUL_123_5 = BSP_CLOCKS_PLL_MUL(123U, 50U), ///< PLL multiplier of 123.50 + CGC_PLL_MUL_123_66 = BSP_CLOCKS_PLL_MUL(123U, 66U), ///< PLL multiplier of 123.66 + CGC_PLL_MUL_124_0 = BSP_CLOCKS_PLL_MUL(124U, 0U), ///< PLL multiplier of 124.00 + CGC_PLL_MUL_124_33 = BSP_CLOCKS_PLL_MUL(124U, 33U), ///< PLL multiplier of 124.33 + CGC_PLL_MUL_124_5 = BSP_CLOCKS_PLL_MUL(124U, 50U), ///< PLL multiplier of 124.50 + CGC_PLL_MUL_124_66 = BSP_CLOCKS_PLL_MUL(124U, 66U), ///< PLL multiplier of 124.66 + CGC_PLL_MUL_125_0 = BSP_CLOCKS_PLL_MUL(125U, 0U), ///< PLL multiplier of 125.00 + CGC_PLL_MUL_125_33 = BSP_CLOCKS_PLL_MUL(125U, 33U), ///< PLL multiplier of 125.33 + CGC_PLL_MUL_125_5 = BSP_CLOCKS_PLL_MUL(125U, 50U), ///< PLL multiplier of 125.50 + CGC_PLL_MUL_125_66 = BSP_CLOCKS_PLL_MUL(125U, 66U), ///< PLL multiplier of 125.66 + CGC_PLL_MUL_126_0 = BSP_CLOCKS_PLL_MUL(126U, 0U), ///< PLL multiplier of 126.00 + CGC_PLL_MUL_126_33 = BSP_CLOCKS_PLL_MUL(126U, 33U), ///< PLL multiplier of 126.33 + CGC_PLL_MUL_126_5 = BSP_CLOCKS_PLL_MUL(126U, 50U), ///< PLL multiplier of 126.50 + CGC_PLL_MUL_126_66 = BSP_CLOCKS_PLL_MUL(126U, 66U), ///< PLL multiplier of 126.66 + CGC_PLL_MUL_127_0 = BSP_CLOCKS_PLL_MUL(127U, 0U), ///< PLL multiplier of 127.00 + CGC_PLL_MUL_127_33 = BSP_CLOCKS_PLL_MUL(127U, 33U), ///< PLL multiplier of 127.33 + CGC_PLL_MUL_127_5 = BSP_CLOCKS_PLL_MUL(127U, 50U), ///< PLL multiplier of 127.50 + CGC_PLL_MUL_127_66 = BSP_CLOCKS_PLL_MUL(127U, 66U), ///< PLL multiplier of 127.66 + CGC_PLL_MUL_128_0 = BSP_CLOCKS_PLL_MUL(128U, 0U), ///< PLL multiplier of 128.00 + CGC_PLL_MUL_128_33 = BSP_CLOCKS_PLL_MUL(128U, 33U), ///< PLL multiplier of 128.33 + CGC_PLL_MUL_128_5 = BSP_CLOCKS_PLL_MUL(128U, 50U), ///< PLL multiplier of 128.50 + CGC_PLL_MUL_128_66 = BSP_CLOCKS_PLL_MUL(128U, 66U), ///< PLL multiplier of 128.66 + CGC_PLL_MUL_129_0 = BSP_CLOCKS_PLL_MUL(129U, 0U), ///< PLL multiplier of 129.00 + CGC_PLL_MUL_129_33 = BSP_CLOCKS_PLL_MUL(129U, 33U), ///< PLL multiplier of 129.33 + CGC_PLL_MUL_129_5 = BSP_CLOCKS_PLL_MUL(129U, 50U), ///< PLL multiplier of 129.50 + CGC_PLL_MUL_129_66 = BSP_CLOCKS_PLL_MUL(129U, 66U), ///< PLL multiplier of 129.66 + CGC_PLL_MUL_130_0 = BSP_CLOCKS_PLL_MUL(130U, 0U), ///< PLL multiplier of 130.00 + CGC_PLL_MUL_130_33 = BSP_CLOCKS_PLL_MUL(130U, 33U), ///< PLL multiplier of 130.33 + CGC_PLL_MUL_130_5 = BSP_CLOCKS_PLL_MUL(130U, 50U), ///< PLL multiplier of 130.50 + CGC_PLL_MUL_130_66 = BSP_CLOCKS_PLL_MUL(130U, 66U), ///< PLL multiplier of 130.66 + CGC_PLL_MUL_131_0 = BSP_CLOCKS_PLL_MUL(131U, 0U), ///< PLL multiplier of 131.00 + CGC_PLL_MUL_131_33 = BSP_CLOCKS_PLL_MUL(131U, 33U), ///< PLL multiplier of 131.33 + CGC_PLL_MUL_131_5 = BSP_CLOCKS_PLL_MUL(131U, 50U), ///< PLL multiplier of 131.50 + CGC_PLL_MUL_131_66 = BSP_CLOCKS_PLL_MUL(131U, 66U), ///< PLL multiplier of 131.66 + CGC_PLL_MUL_132_0 = BSP_CLOCKS_PLL_MUL(132U, 0U), ///< PLL multiplier of 132.00 + CGC_PLL_MUL_132_33 = BSP_CLOCKS_PLL_MUL(132U, 33U), ///< PLL multiplier of 132.33 + CGC_PLL_MUL_132_5 = BSP_CLOCKS_PLL_MUL(132U, 50U), ///< PLL multiplier of 132.50 + CGC_PLL_MUL_132_66 = BSP_CLOCKS_PLL_MUL(132U, 66U), ///< PLL multiplier of 132.66 + CGC_PLL_MUL_133_0 = BSP_CLOCKS_PLL_MUL(133U, 0U), ///< PLL multiplier of 133.00 + CGC_PLL_MUL_133_33 = BSP_CLOCKS_PLL_MUL(133U, 33U), ///< PLL multiplier of 133.33 + CGC_PLL_MUL_133_5 = BSP_CLOCKS_PLL_MUL(133U, 50U), ///< PLL multiplier of 133.50 + CGC_PLL_MUL_133_66 = BSP_CLOCKS_PLL_MUL(133U, 66U), ///< PLL multiplier of 133.66 + CGC_PLL_MUL_134_0 = BSP_CLOCKS_PLL_MUL(134U, 0U), ///< PLL multiplier of 134.00 + CGC_PLL_MUL_134_33 = BSP_CLOCKS_PLL_MUL(134U, 33U), ///< PLL multiplier of 134.33 + CGC_PLL_MUL_134_5 = BSP_CLOCKS_PLL_MUL(134U, 50U), ///< PLL multiplier of 134.50 + CGC_PLL_MUL_134_66 = BSP_CLOCKS_PLL_MUL(134U, 66U), ///< PLL multiplier of 134.66 + CGC_PLL_MUL_135_0 = BSP_CLOCKS_PLL_MUL(135U, 0U), ///< PLL multiplier of 135.00 + CGC_PLL_MUL_135_33 = BSP_CLOCKS_PLL_MUL(135U, 33U), ///< PLL multiplier of 135.33 + CGC_PLL_MUL_135_5 = BSP_CLOCKS_PLL_MUL(135U, 50U), ///< PLL multiplier of 135.50 + CGC_PLL_MUL_135_66 = BSP_CLOCKS_PLL_MUL(135U, 66U), ///< PLL multiplier of 135.66 + CGC_PLL_MUL_136_0 = BSP_CLOCKS_PLL_MUL(136U, 0U), ///< PLL multiplier of 136.00 + CGC_PLL_MUL_136_33 = BSP_CLOCKS_PLL_MUL(136U, 33U), ///< PLL multiplier of 136.33 + CGC_PLL_MUL_136_5 = BSP_CLOCKS_PLL_MUL(136U, 50U), ///< PLL multiplier of 136.50 + CGC_PLL_MUL_136_66 = BSP_CLOCKS_PLL_MUL(136U, 66U), ///< PLL multiplier of 136.66 + CGC_PLL_MUL_137_0 = BSP_CLOCKS_PLL_MUL(137U, 0U), ///< PLL multiplier of 137.00 + CGC_PLL_MUL_137_33 = BSP_CLOCKS_PLL_MUL(137U, 33U), ///< PLL multiplier of 137.33 + CGC_PLL_MUL_137_5 = BSP_CLOCKS_PLL_MUL(137U, 50U), ///< PLL multiplier of 137.50 + CGC_PLL_MUL_137_66 = BSP_CLOCKS_PLL_MUL(137U, 66U), ///< PLL multiplier of 137.66 + CGC_PLL_MUL_138_0 = BSP_CLOCKS_PLL_MUL(138U, 0U), ///< PLL multiplier of 138.00 + CGC_PLL_MUL_138_33 = BSP_CLOCKS_PLL_MUL(138U, 33U), ///< PLL multiplier of 138.33 + CGC_PLL_MUL_138_5 = BSP_CLOCKS_PLL_MUL(138U, 50U), ///< PLL multiplier of 138.50 + CGC_PLL_MUL_138_66 = BSP_CLOCKS_PLL_MUL(138U, 66U), ///< PLL multiplier of 138.66 + CGC_PLL_MUL_139_0 = BSP_CLOCKS_PLL_MUL(139U, 0U), ///< PLL multiplier of 139.00 + CGC_PLL_MUL_139_33 = BSP_CLOCKS_PLL_MUL(139U, 33U), ///< PLL multiplier of 139.33 + CGC_PLL_MUL_139_5 = BSP_CLOCKS_PLL_MUL(139U, 50U), ///< PLL multiplier of 139.50 + CGC_PLL_MUL_139_66 = BSP_CLOCKS_PLL_MUL(139U, 66U), ///< PLL multiplier of 139.66 + CGC_PLL_MUL_140_0 = BSP_CLOCKS_PLL_MUL(140U, 0U), ///< PLL multiplier of 140.00 + CGC_PLL_MUL_140_33 = BSP_CLOCKS_PLL_MUL(140U, 33U), ///< PLL multiplier of 140.33 + CGC_PLL_MUL_140_5 = BSP_CLOCKS_PLL_MUL(140U, 50U), ///< PLL multiplier of 140.50 + CGC_PLL_MUL_140_66 = BSP_CLOCKS_PLL_MUL(140U, 66U), ///< PLL multiplier of 140.66 + CGC_PLL_MUL_141_0 = BSP_CLOCKS_PLL_MUL(141U, 0U), ///< PLL multiplier of 141.00 + CGC_PLL_MUL_141_33 = BSP_CLOCKS_PLL_MUL(141U, 33U), ///< PLL multiplier of 141.33 + CGC_PLL_MUL_141_5 = BSP_CLOCKS_PLL_MUL(141U, 50U), ///< PLL multiplier of 141.50 + CGC_PLL_MUL_141_66 = BSP_CLOCKS_PLL_MUL(141U, 66U), ///< PLL multiplier of 141.66 + CGC_PLL_MUL_142_0 = BSP_CLOCKS_PLL_MUL(142U, 0U), ///< PLL multiplier of 142.00 + CGC_PLL_MUL_142_33 = BSP_CLOCKS_PLL_MUL(142U, 33U), ///< PLL multiplier of 142.33 + CGC_PLL_MUL_142_5 = BSP_CLOCKS_PLL_MUL(142U, 50U), ///< PLL multiplier of 142.50 + CGC_PLL_MUL_142_66 = BSP_CLOCKS_PLL_MUL(142U, 66U), ///< PLL multiplier of 142.66 + CGC_PLL_MUL_143_0 = BSP_CLOCKS_PLL_MUL(143U, 0U), ///< PLL multiplier of 143.00 + CGC_PLL_MUL_143_33 = BSP_CLOCKS_PLL_MUL(143U, 33U), ///< PLL multiplier of 143.33 + CGC_PLL_MUL_143_5 = BSP_CLOCKS_PLL_MUL(143U, 50U), ///< PLL multiplier of 143.50 + CGC_PLL_MUL_143_66 = BSP_CLOCKS_PLL_MUL(143U, 66U), ///< PLL multiplier of 143.66 + CGC_PLL_MUL_144_0 = BSP_CLOCKS_PLL_MUL(144U, 0U), ///< PLL multiplier of 144.00 + CGC_PLL_MUL_144_33 = BSP_CLOCKS_PLL_MUL(144U, 33U), ///< PLL multiplier of 144.33 + CGC_PLL_MUL_144_5 = BSP_CLOCKS_PLL_MUL(144U, 50U), ///< PLL multiplier of 144.50 + CGC_PLL_MUL_144_66 = BSP_CLOCKS_PLL_MUL(144U, 66U), ///< PLL multiplier of 144.66 + CGC_PLL_MUL_145_0 = BSP_CLOCKS_PLL_MUL(145U, 0U), ///< PLL multiplier of 145.00 + CGC_PLL_MUL_145_33 = BSP_CLOCKS_PLL_MUL(145U, 33U), ///< PLL multiplier of 145.33 + CGC_PLL_MUL_145_5 = BSP_CLOCKS_PLL_MUL(145U, 50U), ///< PLL multiplier of 145.50 + CGC_PLL_MUL_145_66 = BSP_CLOCKS_PLL_MUL(145U, 66U), ///< PLL multiplier of 145.66 + CGC_PLL_MUL_146_0 = BSP_CLOCKS_PLL_MUL(146U, 0U), ///< PLL multiplier of 146.00 + CGC_PLL_MUL_146_33 = BSP_CLOCKS_PLL_MUL(146U, 33U), ///< PLL multiplier of 146.33 + CGC_PLL_MUL_146_5 = BSP_CLOCKS_PLL_MUL(146U, 50U), ///< PLL multiplier of 146.50 + CGC_PLL_MUL_146_66 = BSP_CLOCKS_PLL_MUL(146U, 66U), ///< PLL multiplier of 146.66 + CGC_PLL_MUL_147_0 = BSP_CLOCKS_PLL_MUL(147U, 0U), ///< PLL multiplier of 147.00 + CGC_PLL_MUL_147_33 = BSP_CLOCKS_PLL_MUL(147U, 33U), ///< PLL multiplier of 147.33 + CGC_PLL_MUL_147_5 = BSP_CLOCKS_PLL_MUL(147U, 50U), ///< PLL multiplier of 147.50 + CGC_PLL_MUL_147_66 = BSP_CLOCKS_PLL_MUL(147U, 66U), ///< PLL multiplier of 147.66 + CGC_PLL_MUL_148_0 = BSP_CLOCKS_PLL_MUL(148U, 0U), ///< PLL multiplier of 148.00 + CGC_PLL_MUL_148_33 = BSP_CLOCKS_PLL_MUL(148U, 33U), ///< PLL multiplier of 148.33 + CGC_PLL_MUL_148_5 = BSP_CLOCKS_PLL_MUL(148U, 50U), ///< PLL multiplier of 148.50 + CGC_PLL_MUL_148_66 = BSP_CLOCKS_PLL_MUL(148U, 66U), ///< PLL multiplier of 148.66 + CGC_PLL_MUL_149_0 = BSP_CLOCKS_PLL_MUL(149U, 0U), ///< PLL multiplier of 149.00 + CGC_PLL_MUL_149_33 = BSP_CLOCKS_PLL_MUL(149U, 33U), ///< PLL multiplier of 149.33 + CGC_PLL_MUL_149_5 = BSP_CLOCKS_PLL_MUL(149U, 50U), ///< PLL multiplier of 149.50 + CGC_PLL_MUL_149_66 = BSP_CLOCKS_PLL_MUL(149U, 66U), ///< PLL multiplier of 149.66 + CGC_PLL_MUL_150_0 = BSP_CLOCKS_PLL_MUL(150U, 0U), ///< PLL multiplier of 150.00 + CGC_PLL_MUL_150_33 = BSP_CLOCKS_PLL_MUL(150U, 33U), ///< PLL multiplier of 150.33 + CGC_PLL_MUL_150_5 = BSP_CLOCKS_PLL_MUL(150U, 50U), ///< PLL multiplier of 150.50 + CGC_PLL_MUL_150_66 = BSP_CLOCKS_PLL_MUL(150U, 66U), ///< PLL multiplier of 150.66 + CGC_PLL_MUL_151_0 = BSP_CLOCKS_PLL_MUL(151U, 0U), ///< PLL multiplier of 151.00 + CGC_PLL_MUL_151_33 = BSP_CLOCKS_PLL_MUL(151U, 33U), ///< PLL multiplier of 151.33 + CGC_PLL_MUL_151_5 = BSP_CLOCKS_PLL_MUL(151U, 50U), ///< PLL multiplier of 151.50 + CGC_PLL_MUL_151_66 = BSP_CLOCKS_PLL_MUL(151U, 66U), ///< PLL multiplier of 151.66 + CGC_PLL_MUL_152_0 = BSP_CLOCKS_PLL_MUL(152U, 0U), ///< PLL multiplier of 152.00 + CGC_PLL_MUL_152_33 = BSP_CLOCKS_PLL_MUL(152U, 33U), ///< PLL multiplier of 152.33 + CGC_PLL_MUL_152_5 = BSP_CLOCKS_PLL_MUL(152U, 50U), ///< PLL multiplier of 152.50 + CGC_PLL_MUL_152_66 = BSP_CLOCKS_PLL_MUL(152U, 66U), ///< PLL multiplier of 152.66 + CGC_PLL_MUL_153_0 = BSP_CLOCKS_PLL_MUL(153U, 0U), ///< PLL multiplier of 153.00 + CGC_PLL_MUL_153_33 = BSP_CLOCKS_PLL_MUL(153U, 33U), ///< PLL multiplier of 153.33 + CGC_PLL_MUL_153_5 = BSP_CLOCKS_PLL_MUL(153U, 50U), ///< PLL multiplier of 153.50 + CGC_PLL_MUL_153_66 = BSP_CLOCKS_PLL_MUL(153U, 66U), ///< PLL multiplier of 153.66 + CGC_PLL_MUL_154_0 = BSP_CLOCKS_PLL_MUL(154U, 0U), ///< PLL multiplier of 154.00 + CGC_PLL_MUL_154_33 = BSP_CLOCKS_PLL_MUL(154U, 33U), ///< PLL multiplier of 154.33 + CGC_PLL_MUL_154_5 = BSP_CLOCKS_PLL_MUL(154U, 50U), ///< PLL multiplier of 154.50 + CGC_PLL_MUL_154_66 = BSP_CLOCKS_PLL_MUL(154U, 66U), ///< PLL multiplier of 154.66 + CGC_PLL_MUL_155_0 = BSP_CLOCKS_PLL_MUL(155U, 0U), ///< PLL multiplier of 155.00 + CGC_PLL_MUL_155_33 = BSP_CLOCKS_PLL_MUL(155U, 33U), ///< PLL multiplier of 155.33 + CGC_PLL_MUL_155_5 = BSP_CLOCKS_PLL_MUL(155U, 50U), ///< PLL multiplier of 155.50 + CGC_PLL_MUL_155_66 = BSP_CLOCKS_PLL_MUL(155U, 66U), ///< PLL multiplier of 155.66 + CGC_PLL_MUL_156_0 = BSP_CLOCKS_PLL_MUL(156U, 0U), ///< PLL multiplier of 156.00 + CGC_PLL_MUL_156_33 = BSP_CLOCKS_PLL_MUL(156U, 33U), ///< PLL multiplier of 156.33 + CGC_PLL_MUL_156_5 = BSP_CLOCKS_PLL_MUL(156U, 50U), ///< PLL multiplier of 156.50 + CGC_PLL_MUL_156_66 = BSP_CLOCKS_PLL_MUL(156U, 66U), ///< PLL multiplier of 156.66 + CGC_PLL_MUL_157_0 = BSP_CLOCKS_PLL_MUL(157U, 0U), ///< PLL multiplier of 157.00 + CGC_PLL_MUL_157_33 = BSP_CLOCKS_PLL_MUL(157U, 33U), ///< PLL multiplier of 157.33 + CGC_PLL_MUL_157_5 = BSP_CLOCKS_PLL_MUL(157U, 50U), ///< PLL multiplier of 157.50 + CGC_PLL_MUL_157_66 = BSP_CLOCKS_PLL_MUL(157U, 66U), ///< PLL multiplier of 157.66 + CGC_PLL_MUL_158_0 = BSP_CLOCKS_PLL_MUL(158U, 0U), ///< PLL multiplier of 158.00 + CGC_PLL_MUL_158_33 = BSP_CLOCKS_PLL_MUL(158U, 33U), ///< PLL multiplier of 158.33 + CGC_PLL_MUL_158_5 = BSP_CLOCKS_PLL_MUL(158U, 50U), ///< PLL multiplier of 158.50 + CGC_PLL_MUL_158_66 = BSP_CLOCKS_PLL_MUL(158U, 66U), ///< PLL multiplier of 158.66 + CGC_PLL_MUL_159_0 = BSP_CLOCKS_PLL_MUL(159U, 0U), ///< PLL multiplier of 159.00 + CGC_PLL_MUL_159_33 = BSP_CLOCKS_PLL_MUL(159U, 33U), ///< PLL multiplier of 159.33 + CGC_PLL_MUL_159_5 = BSP_CLOCKS_PLL_MUL(159U, 50U), ///< PLL multiplier of 159.50 + CGC_PLL_MUL_159_66 = BSP_CLOCKS_PLL_MUL(159U, 66U), ///< PLL multiplier of 159.66 + CGC_PLL_MUL_160_0 = BSP_CLOCKS_PLL_MUL(160U, 0U), ///< PLL multiplier of 160.00 + CGC_PLL_MUL_160_33 = BSP_CLOCKS_PLL_MUL(160U, 33U), ///< PLL multiplier of 160.33 + CGC_PLL_MUL_160_5 = BSP_CLOCKS_PLL_MUL(160U, 50U), ///< PLL multiplier of 160.50 + CGC_PLL_MUL_160_66 = BSP_CLOCKS_PLL_MUL(160U, 66U), ///< PLL multiplier of 160.66 + CGC_PLL_MUL_161_0 = BSP_CLOCKS_PLL_MUL(161U, 0U), ///< PLL multiplier of 161.00 + CGC_PLL_MUL_161_33 = BSP_CLOCKS_PLL_MUL(161U, 33U), ///< PLL multiplier of 161.33 + CGC_PLL_MUL_161_5 = BSP_CLOCKS_PLL_MUL(161U, 50U), ///< PLL multiplier of 161.50 + CGC_PLL_MUL_161_66 = BSP_CLOCKS_PLL_MUL(161U, 66U), ///< PLL multiplier of 161.66 + CGC_PLL_MUL_162_0 = BSP_CLOCKS_PLL_MUL(162U, 0U), ///< PLL multiplier of 162.00 + CGC_PLL_MUL_162_33 = BSP_CLOCKS_PLL_MUL(162U, 33U), ///< PLL multiplier of 162.33 + CGC_PLL_MUL_162_5 = BSP_CLOCKS_PLL_MUL(162U, 50U), ///< PLL multiplier of 162.50 + CGC_PLL_MUL_162_66 = BSP_CLOCKS_PLL_MUL(162U, 66U), ///< PLL multiplier of 162.66 + CGC_PLL_MUL_163_0 = BSP_CLOCKS_PLL_MUL(163U, 0U), ///< PLL multiplier of 163.00 + CGC_PLL_MUL_163_33 = BSP_CLOCKS_PLL_MUL(163U, 33U), ///< PLL multiplier of 163.33 + CGC_PLL_MUL_163_5 = BSP_CLOCKS_PLL_MUL(163U, 50U), ///< PLL multiplier of 163.50 + CGC_PLL_MUL_163_66 = BSP_CLOCKS_PLL_MUL(163U, 66U), ///< PLL multiplier of 163.66 + CGC_PLL_MUL_164_0 = BSP_CLOCKS_PLL_MUL(164U, 0U), ///< PLL multiplier of 164.00 + CGC_PLL_MUL_164_33 = BSP_CLOCKS_PLL_MUL(164U, 33U), ///< PLL multiplier of 164.33 + CGC_PLL_MUL_164_5 = BSP_CLOCKS_PLL_MUL(164U, 50U), ///< PLL multiplier of 164.50 + CGC_PLL_MUL_164_66 = BSP_CLOCKS_PLL_MUL(164U, 66U), ///< PLL multiplier of 164.66 + CGC_PLL_MUL_165_0 = BSP_CLOCKS_PLL_MUL(165U, 0U), ///< PLL multiplier of 165.00 + CGC_PLL_MUL_165_33 = BSP_CLOCKS_PLL_MUL(165U, 33U), ///< PLL multiplier of 165.33 + CGC_PLL_MUL_165_5 = BSP_CLOCKS_PLL_MUL(165U, 50U), ///< PLL multiplier of 165.50 + CGC_PLL_MUL_165_66 = BSP_CLOCKS_PLL_MUL(165U, 66U), ///< PLL multiplier of 165.66 + CGC_PLL_MUL_166_0 = BSP_CLOCKS_PLL_MUL(166U, 0U), ///< PLL multiplier of 166.00 + CGC_PLL_MUL_166_33 = BSP_CLOCKS_PLL_MUL(166U, 33U), ///< PLL multiplier of 166.33 + CGC_PLL_MUL_166_5 = BSP_CLOCKS_PLL_MUL(166U, 50U), ///< PLL multiplier of 166.50 + CGC_PLL_MUL_166_66 = BSP_CLOCKS_PLL_MUL(166U, 66U), ///< PLL multiplier of 166.66 + CGC_PLL_MUL_167_0 = BSP_CLOCKS_PLL_MUL(167U, 0U), ///< PLL multiplier of 167.00 + CGC_PLL_MUL_167_33 = BSP_CLOCKS_PLL_MUL(167U, 33U), ///< PLL multiplier of 167.33 + CGC_PLL_MUL_167_5 = BSP_CLOCKS_PLL_MUL(167U, 50U), ///< PLL multiplier of 167.50 + CGC_PLL_MUL_167_66 = BSP_CLOCKS_PLL_MUL(167U, 66U), ///< PLL multiplier of 167.66 + CGC_PLL_MUL_168_0 = BSP_CLOCKS_PLL_MUL(168U, 0U), ///< PLL multiplier of 168.00 + CGC_PLL_MUL_168_33 = BSP_CLOCKS_PLL_MUL(168U, 33U), ///< PLL multiplier of 168.33 + CGC_PLL_MUL_168_5 = BSP_CLOCKS_PLL_MUL(168U, 50U), ///< PLL multiplier of 168.50 + CGC_PLL_MUL_168_66 = BSP_CLOCKS_PLL_MUL(168U, 66U), ///< PLL multiplier of 168.66 + CGC_PLL_MUL_169_0 = BSP_CLOCKS_PLL_MUL(169U, 0U), ///< PLL multiplier of 169.00 + CGC_PLL_MUL_169_33 = BSP_CLOCKS_PLL_MUL(169U, 33U), ///< PLL multiplier of 169.33 + CGC_PLL_MUL_169_5 = BSP_CLOCKS_PLL_MUL(169U, 50U), ///< PLL multiplier of 169.50 + CGC_PLL_MUL_169_66 = BSP_CLOCKS_PLL_MUL(169U, 66U), ///< PLL multiplier of 169.66 + CGC_PLL_MUL_170_0 = BSP_CLOCKS_PLL_MUL(170U, 0U), ///< PLL multiplier of 170.00 + CGC_PLL_MUL_170_33 = BSP_CLOCKS_PLL_MUL(170U, 33U), ///< PLL multiplier of 170.33 + CGC_PLL_MUL_170_5 = BSP_CLOCKS_PLL_MUL(170U, 50U), ///< PLL multiplier of 170.50 + CGC_PLL_MUL_170_66 = BSP_CLOCKS_PLL_MUL(170U, 66U), ///< PLL multiplier of 170.66 + CGC_PLL_MUL_171_0 = BSP_CLOCKS_PLL_MUL(171U, 0U), ///< PLL multiplier of 171.00 + CGC_PLL_MUL_171_33 = BSP_CLOCKS_PLL_MUL(171U, 33U), ///< PLL multiplier of 171.33 + CGC_PLL_MUL_171_5 = BSP_CLOCKS_PLL_MUL(171U, 50U), ///< PLL multiplier of 171.50 + CGC_PLL_MUL_171_66 = BSP_CLOCKS_PLL_MUL(171U, 66U), ///< PLL multiplier of 171.66 + CGC_PLL_MUL_172_0 = BSP_CLOCKS_PLL_MUL(172U, 0U), ///< PLL multiplier of 172.00 + CGC_PLL_MUL_172_33 = BSP_CLOCKS_PLL_MUL(172U, 33U), ///< PLL multiplier of 172.33 + CGC_PLL_MUL_172_5 = BSP_CLOCKS_PLL_MUL(172U, 50U), ///< PLL multiplier of 172.50 + CGC_PLL_MUL_172_66 = BSP_CLOCKS_PLL_MUL(172U, 66U), ///< PLL multiplier of 172.66 + CGC_PLL_MUL_173_0 = BSP_CLOCKS_PLL_MUL(173U, 0U), ///< PLL multiplier of 173.00 + CGC_PLL_MUL_173_33 = BSP_CLOCKS_PLL_MUL(173U, 33U), ///< PLL multiplier of 173.33 + CGC_PLL_MUL_173_5 = BSP_CLOCKS_PLL_MUL(173U, 50U), ///< PLL multiplier of 173.50 + CGC_PLL_MUL_173_66 = BSP_CLOCKS_PLL_MUL(173U, 66U), ///< PLL multiplier of 173.66 + CGC_PLL_MUL_174_0 = BSP_CLOCKS_PLL_MUL(174U, 0U), ///< PLL multiplier of 174.00 + CGC_PLL_MUL_174_33 = BSP_CLOCKS_PLL_MUL(174U, 33U), ///< PLL multiplier of 174.33 + CGC_PLL_MUL_174_5 = BSP_CLOCKS_PLL_MUL(174U, 50U), ///< PLL multiplier of 174.50 + CGC_PLL_MUL_174_66 = BSP_CLOCKS_PLL_MUL(174U, 66U), ///< PLL multiplier of 174.66 + CGC_PLL_MUL_175_0 = BSP_CLOCKS_PLL_MUL(175U, 0U), ///< PLL multiplier of 175.00 + CGC_PLL_MUL_175_33 = BSP_CLOCKS_PLL_MUL(175U, 33U), ///< PLL multiplier of 175.33 + CGC_PLL_MUL_175_5 = BSP_CLOCKS_PLL_MUL(175U, 50U), ///< PLL multiplier of 175.50 + CGC_PLL_MUL_175_66 = BSP_CLOCKS_PLL_MUL(175U, 66U), ///< PLL multiplier of 175.66 + CGC_PLL_MUL_176_0 = BSP_CLOCKS_PLL_MUL(176U, 0U), ///< PLL multiplier of 176.00 + CGC_PLL_MUL_176_33 = BSP_CLOCKS_PLL_MUL(176U, 33U), ///< PLL multiplier of 176.33 + CGC_PLL_MUL_176_5 = BSP_CLOCKS_PLL_MUL(176U, 50U), ///< PLL multiplier of 176.50 + CGC_PLL_MUL_176_66 = BSP_CLOCKS_PLL_MUL(176U, 66U), ///< PLL multiplier of 176.66 + CGC_PLL_MUL_177_0 = BSP_CLOCKS_PLL_MUL(177U, 0U), ///< PLL multiplier of 177.00 + CGC_PLL_MUL_177_33 = BSP_CLOCKS_PLL_MUL(177U, 33U), ///< PLL multiplier of 177.33 + CGC_PLL_MUL_177_5 = BSP_CLOCKS_PLL_MUL(177U, 50U), ///< PLL multiplier of 177.50 + CGC_PLL_MUL_177_66 = BSP_CLOCKS_PLL_MUL(177U, 66U), ///< PLL multiplier of 177.66 + CGC_PLL_MUL_178_0 = BSP_CLOCKS_PLL_MUL(178U, 0U), ///< PLL multiplier of 178.00 + CGC_PLL_MUL_178_33 = BSP_CLOCKS_PLL_MUL(178U, 33U), ///< PLL multiplier of 178.33 + CGC_PLL_MUL_178_5 = BSP_CLOCKS_PLL_MUL(178U, 50U), ///< PLL multiplier of 178.50 + CGC_PLL_MUL_178_66 = BSP_CLOCKS_PLL_MUL(178U, 66U), ///< PLL multiplier of 178.66 + CGC_PLL_MUL_179_0 = BSP_CLOCKS_PLL_MUL(179U, 0U), ///< PLL multiplier of 179.00 + CGC_PLL_MUL_179_33 = BSP_CLOCKS_PLL_MUL(179U, 33U), ///< PLL multiplier of 179.33 + CGC_PLL_MUL_179_5 = BSP_CLOCKS_PLL_MUL(179U, 50U), ///< PLL multiplier of 179.50 + CGC_PLL_MUL_179_66 = BSP_CLOCKS_PLL_MUL(179U, 66U), ///< PLL multiplier of 179.66 + CGC_PLL_MUL_180_0 = BSP_CLOCKS_PLL_MUL(180U, 0U), ///< PLL multiplier of 180.00 + CGC_PLL_MUL_180_33 = BSP_CLOCKS_PLL_MUL(180U, 33U), ///< PLL multiplier of 180.33 + CGC_PLL_MUL_180_5 = BSP_CLOCKS_PLL_MUL(180U, 50U), ///< PLL multiplier of 180.50 + CGC_PLL_MUL_180_66 = BSP_CLOCKS_PLL_MUL(180U, 66U), ///< PLL multiplier of 180.66 + CGC_PLL_MUL_732_0 = BSP_CLOCKS_PLL_MUL(732U, 0U), ///< PLL multiplier of 732.00 + CGC_PLL_MUL_781_0 = BSP_CLOCKS_PLL_MUL(781U, 0U), ///< PLL multiplier of 781.00 +} cgc_pll_mul_t; + +/*********************************************************************************************************************** + * Exported global variables + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Exported global functions (to be accessed by other files) + **********************************************************************************************************************/ + +/* Public functions defined in bsp.h */ +void bsp_clock_init(void); // Used internally by BSP + +#if BSP_TZ_NONSECURE_BUILD +void bsp_clock_freq_var_init(void); // Used internally by BSP + +#endif + +#if BSP_TZ_SECURE_BUILD +void r_bsp_clock_update_callback_set(bsp_clock_update_callback_t p_callback, + bsp_clock_update_callback_args_t * p_callback_memory); + +#endif + +/* Used internally by CGC */ + +#if !BSP_CFG_USE_LOW_VOLTAGE_MODE +void bsp_prv_operating_mode_set(uint8_t operating_mode); + +#endif + +#if BSP_FEATURE_LPM_CHANGE_MSTP_REQUIRED +uint32_t bsp_prv_power_change_mstp_set(void); +void bsp_prv_power_change_mstp_clear(uint32_t mstp_clear_bitmask); + +#endif + +void bsp_prv_prepare_pll(uint32_t pll_freq_hz); +void bsp_prv_clock_set(uint32_t clock, uint32_t sckdivcr, uint8_t sckdivcr2); + +/* RTC Initialization */ +#if BSP_FEATURE_RTC_IS_AVAILABLE || BSP_FEATURE_RTC_HAS_TCEN || BSP_FEATURE_SYSC_HAS_VBTICTLR +void R_BSP_Init_RTC(void); + +#endif + +#if BSP_CFG_SLEEP_MODE_DELAY_ENABLE || BSP_CFG_RTOS_SLEEP_MODE_DELAY_ENABLE +bool bsp_prv_clock_prepare_pre_sleep(void); +void bsp_prv_clock_prepare_post_sleep(bool cpuclk_slowed); + +#endif + +/* The public function is used to get state or initialize the sub-clock. */ +#if BSP_FEATURE_RTC_IS_IRTC +fsp_err_t R_BSP_SubclockStatusGet(); +fsp_err_t R_BSP_SubclockInitialize(); + +#endif + +/** Common macro for FSP header files. There is also a corresponding FSP_HEADER macro at the top of this file. */ +FSP_FOOTER + +#endif diff --git a/bsp/renesas/ra8m1-ek/ra/fsp/src/bsp/mcu/all/bsp_common.c b/bsp/renesas/ra8m1-ek/ra/fsp/src/bsp/mcu/all/bsp_common.c new file mode 100644 index 000000000000..374b57196a3f --- /dev/null +++ b/bsp/renesas/ra8m1-ek/ra/fsp/src/bsp/mcu/all/bsp_common.c @@ -0,0 +1,325 @@ +/*********************************************************************************************************************** + * Copyright [2020-2023] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics America Inc. and may only be used with products + * of Renesas Electronics Corp. and its affiliates ("Renesas"). No other uses are authorized. Renesas products are + * sold pursuant to Renesas terms and conditions of sale. Purchasers are solely responsible for the selection and use + * of Renesas products and Renesas assumes no liability. No license, express or implied, to any intellectual property + * right is granted by Renesas. This software is protected under all applicable laws, including copyright laws. Renesas + * reserves the right to change or discontinue this software and/or this documentation. THE SOFTWARE AND DOCUMENTATION + * IS DELIVERED TO YOU "AS IS," AND RENESAS MAKES NO REPRESENTATIONS OR WARRANTIES, AND TO THE FULLEST EXTENT + * PERMISSIBLE UNDER APPLICABLE LAW, DISCLAIMS ALL WARRANTIES, WHETHER EXPLICITLY OR IMPLICITLY, INCLUDING WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT, WITH RESPECT TO THE SOFTWARE OR + * DOCUMENTATION. RENESAS SHALL HAVE NO LIABILITY ARISING OUT OF ANY SECURITY VULNERABILITY OR BREACH. TO THE MAXIMUM + * EXTENT PERMITTED BY LAW, IN NO EVENT WILL RENESAS BE LIABLE TO YOU IN CONNECTION WITH THE SOFTWARE OR DOCUMENTATION + * (OR ANY PERSON OR ENTITY CLAIMING RIGHTS DERIVED FROM YOU) FOR ANY LOSS, DAMAGES, OR CLAIMS WHATSOEVER, INCLUDING, + * WITHOUT LIMITATION, ANY DIRECT, CONSEQUENTIAL, SPECIAL, INDIRECT, PUNITIVE, OR INCIDENTAL DAMAGES; ANY LOST PROFITS, + * OTHER ECONOMIC DAMAGE, PROPERTY DAMAGE, OR PERSONAL INJURY; AND EVEN IF RENESAS HAS BEEN ADVISED OF THE POSSIBILITY + * OF SUCH LOSS, DAMAGES, CLAIMS OR COSTS. + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * + * Includes + **********************************************************************************************************************/ +#include "bsp_api.h" + +/*********************************************************************************************************************** + * Macro definitions + **********************************************************************************************************************/ +#if defined(__ICCARM__) + #define WEAK_ERROR_ATTRIBUTE + #define WEAK_INIT_ATTRIBUTE + #pragma weak fsp_error_log = fsp_error_log_internal + #pragma weak bsp_init = bsp_init_internal +#elif defined(__GNUC__) + + #define WEAK_ERROR_ATTRIBUTE __attribute__((weak, alias("fsp_error_log_internal"))) + + #define WEAK_INIT_ATTRIBUTE __attribute__((weak, alias("bsp_init_internal"))) +#endif + +#define FSP_SECTION_VERSION ".version" + +/*********************************************************************************************************************** + * Typedef definitions + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Private function prototypes + **********************************************************************************************************************/ + +/** Prototype of initialization function called before main. This prototype sets the weak association of this + * function to an internal example implementation. If this function is defined in the application code, the + * application code version is used. */ + +void bsp_init(void * p_args) WEAK_INIT_ATTRIBUTE; + +void bsp_init_internal(void * p_args); /// Default initialization function + +#if ((1 == BSP_CFG_ERROR_LOG) || (1 == BSP_CFG_ASSERT)) + +/** Prototype of function called before errors are returned in FSP code if BSP_CFG_ERROR_LOG is set to 1. This + * prototype sets the weak association of this function to an internal example implementation. */ + +void fsp_error_log(fsp_err_t err, const char * file, int32_t line) WEAK_ERROR_ATTRIBUTE; + +void fsp_error_log_internal(fsp_err_t err, const char * file, int32_t line); /// Default error logger function + +#endif +#if BSP_FEATURE_TZ_VERSION == 2 && BSP_TZ_SECURE_BUILD == 1 +static bool bsp_valid_register_check(uint32_t register_address, + uint32_t const * const p_register_table, + uint32_t register_table_length); + +#endif + +/*********************************************************************************************************************** + * Exported global variables (to be accessed by other files) + **********************************************************************************************************************/ + +/* FSP pack version structure. */ +static BSP_DONT_REMOVE const fsp_pack_version_t g_fsp_version BSP_PLACE_IN_SECTION (FSP_SECTION_VERSION) = +{ + .version_id_b = + { + .minor = FSP_VERSION_MINOR, + .major = FSP_VERSION_MAJOR, + .build = FSP_VERSION_BUILD, + .patch = FSP_VERSION_PATCH + } +}; + +/* Public FSP version name. */ +static BSP_DONT_REMOVE const uint8_t g_fsp_version_string[] BSP_PLACE_IN_SECTION(FSP_SECTION_VERSION) = + FSP_VERSION_STRING; + +/* Unique FSP version ID. */ +static BSP_DONT_REMOVE const uint8_t g_fsp_version_build_string[] BSP_PLACE_IN_SECTION(FSP_SECTION_VERSION) = + FSP_VERSION_BUILD_STRING; + +/*******************************************************************************************************************//** + * @addtogroup BSP_MCU + * @{ + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Private global variables and functions + **********************************************************************************************************************/ + +/*******************************************************************************************************************//** + * Get the FSP version based on compile time macros. + * + * @param[out] p_version Memory address to return version information to. + * + * @retval FSP_SUCCESS Version information stored. + * @retval FSP_ERR_ASSERTION The parameter p_version is NULL. + **********************************************************************************************************************/ +fsp_err_t R_FSP_VersionGet (fsp_pack_version_t * const p_version) +{ +#if BSP_CFG_PARAM_CHECKING_ENABLE + + /** Verify parameters are valid */ + FSP_ASSERT(NULL != p_version); +#endif + + *p_version = g_fsp_version; + + return FSP_SUCCESS; +} + +#if ((1 == BSP_CFG_ERROR_LOG) || (1 == BSP_CFG_ASSERT)) + +/*******************************************************************************************************************//** + * Default error logger function, used only if fsp_error_log is not defined in the user application. + * + * @param[in] err The error code encountered. + * @param[in] file The file name in which the error code was encountered. + * @param[in] line The line number at which the error code was encountered. + **********************************************************************************************************************/ +void fsp_error_log_internal (fsp_err_t err, const char * file, int32_t line) +{ + /** Do nothing. Do not generate any 'unused' warnings. */ + FSP_PARAMETER_NOT_USED(err); + FSP_PARAMETER_NOT_USED(file); + FSP_PARAMETER_NOT_USED(line); +} + +#endif + +#if BSP_FEATURE_TZ_VERSION == 2 && BSP_TZ_SECURE_BUILD == 1 + +/*******************************************************************************************************************//** + * Read a secure 8-bit STYPE3 register in the non-secure state. + * + * @param[in] p_reg The address of the secure register. + * + * @return Value read from the register. + **********************************************************************************************************************/ +BSP_CMSE_NONSECURE_ENTRY uint8_t R_BSP_NSC_STYPE3_RegU8Read (uint8_t volatile const * p_reg) +{ + uint8_t volatile * p_reg_s = (uint8_t volatile *) ((uint32_t) p_reg & ~BSP_FEATURE_TZ_NS_OFFSET); + + /* Table of secure registers that may be read from the non-secure application. */ + static const uint32_t valid_addresses[] = + { + (uint32_t) &R_SYSTEM->SCKDIVCR2, + (uint32_t) &R_SYSTEM->SCKSCR, + (uint32_t) &R_SYSTEM->SPICKDIVCR, + (uint32_t) &R_SYSTEM->SPICKCR, + (uint32_t) &R_SYSTEM->SCICKDIVCR, + (uint32_t) &R_SYSTEM->SCICKCR, + (uint32_t) &R_SYSTEM->CANFDCKCR, + (uint32_t) &R_SYSTEM->PLLCR, + (uint32_t) &R_SYSTEM->PLL2CR, + (uint32_t) &R_SYSTEM->MOCOCR, + (uint32_t) &R_SYSTEM->OPCCR, + }; + + if (bsp_valid_register_check((uint32_t) p_reg_s, valid_addresses, + sizeof(valid_addresses) / sizeof(valid_addresses[0]))) + { + return *p_reg_s; + } + + /* Generate a trustzone access violation by accessing the non-secure aliased address. */ + return *((uint8_t volatile *) ((uint32_t) p_reg | BSP_FEATURE_TZ_NS_OFFSET)); +} + +/*******************************************************************************************************************//** + * Read a secure 16-bit STYPE3 register in the non-secure state. + * + * @param[in] p_reg The address of the secure register. + * + * @return Value read from the register. + **********************************************************************************************************************/ +BSP_CMSE_NONSECURE_ENTRY uint16_t R_BSP_NSC_STYPE3_RegU16Read (uint16_t volatile const * p_reg) +{ + uint16_t volatile * p_reg_s = (uint16_t volatile *) ((uint32_t) p_reg & ~BSP_FEATURE_TZ_NS_OFFSET); + + /* Table of secure registers that may be read from the non-secure application. */ + static const uint32_t valid_addresses[] = + { + (uint32_t) &R_DTC->DTCSTS, + }; + + if (bsp_valid_register_check((uint32_t) p_reg_s, valid_addresses, + sizeof(valid_addresses) / sizeof(valid_addresses[0]))) + { + return *p_reg_s; + } + + /* Generate a trustzone access violation by accessing the non-secure aliased address. */ + return *((uint16_t volatile *) ((uint32_t) p_reg | BSP_FEATURE_TZ_NS_OFFSET)); +} + +/*******************************************************************************************************************//** + * Read a secure 32-bit STYPE3 register in the non-secure state. + * + * @param[in] p_reg The address of the secure register. + * + * @return Value read from the register. + **********************************************************************************************************************/ +BSP_CMSE_NONSECURE_ENTRY uint32_t R_BSP_NSC_STYPE3_RegU32Read (uint32_t volatile const * p_reg) +{ + uint32_t volatile * p_reg_s = (uint32_t volatile *) ((uint32_t) p_reg & ~BSP_FEATURE_TZ_NS_OFFSET); + + /* Table of secure registers that may be read from the non-secure application. */ + static const uint32_t valid_addresses[] = + { + (uint32_t) &R_SYSTEM->SCKDIVCR, + }; + + if (bsp_valid_register_check((uint32_t) p_reg_s, valid_addresses, + sizeof(valid_addresses) / sizeof(valid_addresses[0]))) + { + return *p_reg_s; + } + + /* Generate a trustzone access violation by accessing the non-secure aliased address. */ + return *((uint32_t volatile *) ((uint32_t) p_reg | BSP_FEATURE_TZ_NS_OFFSET)); +} + +#endif + +/** @} (end addtogroup BSP_MCU) */ + +/*******************************************************************************************************************//** + * Default initialization function, used only if bsp_init is not defined in the user application. + **********************************************************************************************************************/ +void bsp_init_internal (void * p_args) +{ + /* Do nothing. */ + FSP_PARAMETER_NOT_USED(p_args); +} + +#if defined(__ARMCC_VERSION) + +/*******************************************************************************************************************//** + * Default implementation of assert for AC6. + **********************************************************************************************************************/ +__attribute__((weak, noreturn)) +void __aeabi_assert (const char * expr, const char * file, int line) +{ + FSP_PARAMETER_NOT_USED(expr); + FSP_PARAMETER_NOT_USED(file); + FSP_PARAMETER_NOT_USED(line); + __BKPT(0); + while (1) + { + /* Do nothing. */ + } +} + +#elif defined(__GNUC__) + +/* The default assert implementation for GCC brings in printing/formatting code. FSP overrides the default assert + * behavior to reduce code size. */ + + #if !BSP_CFG_USE_STANDARD_ASSERT + +/*******************************************************************************************************************//** + * Default implementation of assert for GCC. + **********************************************************************************************************************/ +BSP_WEAK_REFERENCE void __assert_func (const char * file, int line, const char * func, const char * expr) +{ + FSP_PARAMETER_NOT_USED(file); + FSP_PARAMETER_NOT_USED(line); + FSP_PARAMETER_NOT_USED(func); + FSP_PARAMETER_NOT_USED(expr); + __BKPT(0); + while (1) + { + /* Do nothing. */ + } +} + + #endif + +#endif + +#if BSP_FEATURE_TZ_VERSION == 2 && BSP_TZ_SECURE_BUILD == 1 + +/*******************************************************************************************************************//** + * Check if a register address should be accessible by the non-secure application. + **********************************************************************************************************************/ +static bool bsp_valid_register_check (uint32_t register_address, + uint32_t const * const p_register_table, + uint32_t register_table_length) +{ + bool valid = false; + + /* Check if the given address is valid. */ + for (uint32_t i = 0; i < register_table_length; i++) + { + if (p_register_table[i] == register_address) + { + valid = true; + break; + } + } + + return valid; +} + +#endif diff --git a/bsp/renesas/ra8m1-ek/ra/fsp/src/bsp/mcu/all/bsp_common.h b/bsp/renesas/ra8m1-ek/ra/fsp/src/bsp/mcu/all/bsp_common.h new file mode 100644 index 000000000000..b42e0acbada4 --- /dev/null +++ b/bsp/renesas/ra8m1-ek/ra/fsp/src/bsp/mcu/all/bsp_common.h @@ -0,0 +1,576 @@ +/*********************************************************************************************************************** + * Copyright [2020-2023] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics America Inc. and may only be used with products + * of Renesas Electronics Corp. and its affiliates ("Renesas"). No other uses are authorized. Renesas products are + * sold pursuant to Renesas terms and conditions of sale. Purchasers are solely responsible for the selection and use + * of Renesas products and Renesas assumes no liability. No license, express or implied, to any intellectual property + * right is granted by Renesas. This software is protected under all applicable laws, including copyright laws. Renesas + * reserves the right to change or discontinue this software and/or this documentation. THE SOFTWARE AND DOCUMENTATION + * IS DELIVERED TO YOU "AS IS," AND RENESAS MAKES NO REPRESENTATIONS OR WARRANTIES, AND TO THE FULLEST EXTENT + * PERMISSIBLE UNDER APPLICABLE LAW, DISCLAIMS ALL WARRANTIES, WHETHER EXPLICITLY OR IMPLICITLY, INCLUDING WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT, WITH RESPECT TO THE SOFTWARE OR + * DOCUMENTATION. RENESAS SHALL HAVE NO LIABILITY ARISING OUT OF ANY SECURITY VULNERABILITY OR BREACH. TO THE MAXIMUM + * EXTENT PERMITTED BY LAW, IN NO EVENT WILL RENESAS BE LIABLE TO YOU IN CONNECTION WITH THE SOFTWARE OR DOCUMENTATION + * (OR ANY PERSON OR ENTITY CLAIMING RIGHTS DERIVED FROM YOU) FOR ANY LOSS, DAMAGES, OR CLAIMS WHATSOEVER, INCLUDING, + * WITHOUT LIMITATION, ANY DIRECT, CONSEQUENTIAL, SPECIAL, INDIRECT, PUNITIVE, OR INCIDENTAL DAMAGES; ANY LOST PROFITS, + * OTHER ECONOMIC DAMAGE, PROPERTY DAMAGE, OR PERSONAL INJURY; AND EVEN IF RENESAS HAS BEEN ADVISED OF THE POSSIBILITY + * OF SUCH LOSS, DAMAGES, CLAIMS OR COSTS. + **********************************************************************************************************************/ + +#ifndef BSP_COMMON_H +#define BSP_COMMON_H + +/*********************************************************************************************************************** + * Includes , "Project Includes" + **********************************************************************************************************************/ + +/* C99 includes. */ +#include +#include +#include +#include +#include + +/* Different compiler support. */ +#include "../../inc/api/fsp_common_api.h" +#include "bsp_compiler_support.h" + +/* BSP TFU Includes. */ +#include "../../src/bsp/mcu/all/bsp_tfu.h" + +#include "bsp_cfg.h" + +/** Common macro for FSP header files. There is also a corresponding FSP_FOOTER macro at the end of this file. */ +FSP_HEADER + +/*******************************************************************************************************************//** + * @addtogroup BSP_MCU + * @{ + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Macro definitions + **********************************************************************************************************************/ + +/** Used to signify that an ELC event is not able to be used as an interrupt. */ +#define BSP_IRQ_DISABLED (0xFFU) + +/* Version of this module's code and API. */ + +#if 1 == BSP_CFG_RTOS /* ThreadX */ + #include "tx_user.h" + #if defined(TX_ENABLE_EVENT_TRACE) || defined(TX_ENABLE_EXECUTION_CHANGE_NOTIFY) + #include "tx_api.h" + #define FSP_CONTEXT_SAVE tx_isr_start((uint32_t) R_FSP_CurrentIrqGet()); + #define FSP_CONTEXT_RESTORE tx_isr_end((uint32_t) R_FSP_CurrentIrqGet()); + #else + #define FSP_CONTEXT_SAVE + #define FSP_CONTEXT_RESTORE + #endif +#else + #define FSP_CONTEXT_SAVE + #define FSP_CONTEXT_RESTORE +#endif + +/** Macro that can be defined in order to enable logging in FSP modules. */ +#ifndef FSP_LOG_PRINT + #define FSP_LOG_PRINT(X) +#endif + +/** Macro to log and return error without an assertion. */ +#ifndef FSP_RETURN + + #define FSP_RETURN(err) FSP_ERROR_LOG((err)); \ + return err; +#endif + +/** This function is called before returning an error code. To stop on a runtime error, define fsp_error_log in + * user code and do required debugging (breakpoints, stack dump, etc) in this function.*/ +#if (1 == BSP_CFG_ERROR_LOG) + + #ifndef FSP_ERROR_LOG + #define FSP_ERROR_LOG(err) \ + fsp_error_log((err), __FILE__, __LINE__); + #endif +#else + + #define FSP_ERROR_LOG(err) +#endif + +/** Default assertion calls ::FSP_ERROR_RETURN if condition "a" is false. Used to identify incorrect use of API's in FSP + * functions. */ +#if (3 == BSP_CFG_ASSERT) + #define FSP_ASSERT(a) +#elif (2 == BSP_CFG_ASSERT) + #define FSP_ASSERT(a) {assert(a);} +#else + #define FSP_ASSERT(a) FSP_ERROR_RETURN((a), FSP_ERR_ASSERTION) +#endif // ifndef FSP_ASSERT + +/** All FSP error codes are returned using this macro. Calls ::FSP_ERROR_LOG function if condition "a" is false. Used + * to identify runtime errors in FSP functions. */ + +#define FSP_ERROR_RETURN(a, err) \ + { \ + if ((a)) \ + { \ + (void) 0; /* Do nothing */ \ + } \ + else \ + { \ + FSP_ERROR_LOG(err); \ + return err; \ + } \ + } + +/* Function-like macro used to wait for a condition to be met, most often used to wait for hardware register updates. + * This macro can be redefined to add a timeout if necessary. */ +#ifndef FSP_HARDWARE_REGISTER_WAIT + #define FSP_HARDWARE_REGISTER_WAIT(reg, required_value) while (reg != required_value) { /* Wait. */} +#endif + +#ifndef FSP_REGISTER_READ + +/* Read a register and discard the result. */ + #define FSP_REGISTER_READ(A) __ASM volatile ("" : : "r" (A)); +#endif + +/**************************************************************** + * + * This check is performed to select suitable ASM API with respect to core + * + * The macros __CORE__ , __ARM7EM__ and __ARM_ARCH_8M_BASE__ are undefined for GCC, but defined(__IAR_SYSTEMS_ICC__) is false for GCC, so + * the left half of the || expression evaluates to false for GCC regardless of the values of these macros. */ + +#if (defined(__IAR_SYSTEMS_ICC__) && ((__CORE__ == __ARM7EM__) || (__CORE__ == __ARM_ARCH_8M_BASE__))) || \ + defined(__ARM_ARCH_7EM__) // CM4 + #ifndef BSP_CFG_IRQ_MASK_LEVEL_FOR_CRITICAL_SECTION + #define BSP_CFG_IRQ_MASK_LEVEL_FOR_CRITICAL_SECTION (0U) + #endif +#else // CM23 + #ifdef BSP_CFG_IRQ_MASK_LEVEL_FOR_CRITICAL_SECTION + #undef BSP_CFG_IRQ_MASK_LEVEL_FOR_CRITICAL_SECTION + #endif + #define BSP_CFG_IRQ_MASK_LEVEL_FOR_CRITICAL_SECTION (0U) +#endif + +/* This macro defines a variable for saving previous mask value */ +#ifndef FSP_CRITICAL_SECTION_DEFINE + + #define FSP_CRITICAL_SECTION_DEFINE uint32_t old_mask_level = 0U +#endif + +/* These macros abstract methods to save and restore the interrupt state for different architectures. */ +#if (0 == BSP_CFG_IRQ_MASK_LEVEL_FOR_CRITICAL_SECTION) + #define FSP_CRITICAL_SECTION_GET_CURRENT_STATE __get_PRIMASK + #define FSP_CRITICAL_SECTION_SET_STATE __set_PRIMASK + #define FSP_CRITICAL_SECTION_IRQ_MASK_SET (1U) +#else + #define FSP_CRITICAL_SECTION_GET_CURRENT_STATE __get_BASEPRI + #define FSP_CRITICAL_SECTION_SET_STATE __set_BASEPRI + #define FSP_CRITICAL_SECTION_IRQ_MASK_SET ((uint8_t) (BSP_CFG_IRQ_MASK_LEVEL_FOR_CRITICAL_SECTION << \ + (8U - __NVIC_PRIO_BITS))) +#endif + +/** This macro temporarily saves the current interrupt state and disables interrupts. */ +#ifndef FSP_CRITICAL_SECTION_ENTER + #define FSP_CRITICAL_SECTION_ENTER \ + old_mask_level = FSP_CRITICAL_SECTION_GET_CURRENT_STATE(); \ + FSP_CRITICAL_SECTION_SET_STATE(FSP_CRITICAL_SECTION_IRQ_MASK_SET) +#endif + +/** This macro restores the previously saved interrupt state, reenabling interrupts. */ +#ifndef FSP_CRITICAL_SECTION_EXIT + #define FSP_CRITICAL_SECTION_EXIT FSP_CRITICAL_SECTION_SET_STATE(old_mask_level) +#endif + +/* Number of Cortex processor exceptions, used as an offset from XPSR value for the IRQn_Type macro. */ +#define FSP_PRIV_CORTEX_PROCESSOR_EXCEPTIONS (16U) + +/** Used to signify that the requested IRQ vector is not defined in this system. */ +#define FSP_INVALID_VECTOR ((IRQn_Type) - 33) + +/* Private definition used in bsp_clocks and R_FSP_SystemClockHzGet. Each bitfield in SCKDIVCR is up to 4 bits wide. */ +#if (BSP_CFG_MCU_PART_SERIES == 8) + #define FSP_PRV_SCKDIVCR_DIV_MASK (0xFU) +#else + #define FSP_PRV_SCKDIVCR_DIV_MASK (0x7U) +#endif + +/* Use the secure registers for secure projects and flat projects. */ +#if !BSP_TZ_NONSECURE_BUILD && BSP_FEATURE_TZ_HAS_TRUSTZONE + #define FSP_PRIV_TZ_USE_SECURE_REGS (1) +#else + #define FSP_PRIV_TZ_USE_SECURE_REGS (0) +#endif + +/* Put certain BSP variables in uninitialized RAM when initializing BSP early. */ +#if BSP_CFG_EARLY_INIT + #define BSP_SECTION_EARLY_INIT BSP_PLACE_IN_SECTION(BSP_SECTION_NOINIT) +#else + #define BSP_SECTION_EARLY_INIT +#endif + +#if (BSP_TZ_SECURE_BUILD || BSP_TZ_NONSECURE_BUILD) && BSP_FEATURE_TZ_VERSION == 2 +BSP_CMSE_NONSECURE_ENTRY uint8_t R_BSP_NSC_STYPE3_RegU8Read(uint8_t volatile const * p_reg); +BSP_CMSE_NONSECURE_ENTRY uint16_t R_BSP_NSC_STYPE3_RegU16Read(uint16_t volatile const * p_reg); +BSP_CMSE_NONSECURE_ENTRY uint32_t R_BSP_NSC_STYPE3_RegU32Read(uint32_t volatile const * p_reg); + +#endif + +#if BSP_FEATURE_TZ_HAS_TRUSTZONE && BSP_TZ_NONSECURE_BUILD && BSP_FEATURE_TZ_VERSION == 2 + +/* + * If the STYPE3 register's security attribution is set to secure, the non-secure application must read the register + * from the secure application using the provided non-secure callable functions. + */ + #define FSP_STYPE3_REG8_READ(X, S) (!(S) ? X : (R_BSP_NSC_STYPE3_RegU8Read((uint8_t const volatile *) &X))) + #define FSP_STYPE3_REG16_READ(X, S) (!(S) ? X : (R_BSP_NSC_STYPE3_RegU16Read((uint16_t const volatile *) &X))) + #define FSP_STYPE3_REG32_READ(X, S) (!(S) ? X : (R_BSP_NSC_STYPE3_RegU32Read((uint32_t const volatile *) &X))) +#elif BSP_FEATURE_TZ_HAS_TRUSTZONE && BSP_TZ_SECURE_BUILD && BSP_FEATURE_TZ_VERSION == 2 + +/*******************************************************************************************************************//** + * Read a non-secure 8-bit STYPE3 register in the secure state. + * + * @param[in] p_reg The address of the non-secure register. + * + * @return Value read from the register. + **********************************************************************************************************************/ +__STATIC_INLINE uint8_t R_BSP_S_STYPE3_RegU8Read (uint8_t volatile const * p_reg) +{ + p_reg = (uint8_t volatile const *) ((uint32_t) p_reg | BSP_FEATURE_TZ_NS_OFFSET); + + return *p_reg; +} + +/*******************************************************************************************************************//** + * Read a non-secure 16-bit STYPE3 register in the secure state. + * + * @param[in] p_reg The address of the non-secure register. + * + * @return Value read from the register. + **********************************************************************************************************************/ +__STATIC_INLINE uint16_t R_BSP_S_STYPE3_RegU16Read (uint16_t volatile const * p_reg) +{ + p_reg = (uint16_t volatile const *) ((uint32_t) p_reg | BSP_FEATURE_TZ_NS_OFFSET); + + return *p_reg; +} + +/*******************************************************************************************************************//** + * Read a non-secure 32-bit STYPE3 register in the secure state. + * + * @param[in] p_reg The address of the non-secure register. + * + * @return Value read from the register. + **********************************************************************************************************************/ +__STATIC_INLINE uint32_t R_BSP_S_STYPE3_RegU32Read (uint32_t volatile const * p_reg) +{ + p_reg = (uint32_t volatile const *) ((uint32_t) p_reg | BSP_FEATURE_TZ_NS_OFFSET); + + return *p_reg; +} + +/* + * If the STYPE3 register's security attribution is set to non-secure, the secure application must read the register + * using the non-secure aliased address. + */ + #define FSP_STYPE3_REG8_READ(X, S) ((S) ? (X) : R_BSP_S_STYPE3_RegU8Read((uint8_t const volatile *) &X)) + #define FSP_STYPE3_REG16_READ(X, S) ((S) ? (X) : R_BSP_S_STYPE3_RegU16Read((uint16_t const volatile *) &X)) + #define FSP_STYPE3_REG32_READ(X, S) ((S) ? (X) : R_BSP_S_STYPE3_RegU32Read((uint32_t const volatile *) &X)) +#else + #define FSP_STYPE3_REG8_READ(X, S) (X) + #define FSP_STYPE3_REG16_READ(X, S) (X) + #define FSP_STYPE3_REG32_READ(X, S) (X) +#endif + +/*********************************************************************************************************************** + * Typedef definitions + **********************************************************************************************************************/ + +/** Different warm start entry locations in the BSP. */ +typedef enum e_bsp_warm_start_event +{ + BSP_WARM_START_RESET = 0, ///< Called almost immediately after reset. No C runtime environment, clocks, or IRQs. + BSP_WARM_START_POST_CLOCK, ///< Called after clock initialization. No C runtime environment or IRQs. + BSP_WARM_START_POST_C ///< Called after clocks and C runtime environment have been set up +} bsp_warm_start_event_t; + +/* Private enum used in R_FSP_SystemClockHzGet. Maps clock name to base bit in SCKDIVCR. */ +typedef enum e_fsp_priv_clock +{ + FSP_PRIV_CLOCK_PCLKD = 0, + FSP_PRIV_CLOCK_PCLKC = 4, + FSP_PRIV_CLOCK_PCLKB = 8, + FSP_PRIV_CLOCK_PCLKA = 12, + FSP_PRIV_CLOCK_BCLK = 16, + FSP_PRIV_CLOCK_PCLKE = 20, + FSP_PRIV_CLOCK_ICLK = 24, + FSP_PRIV_CLOCK_FCLK = 28, + FSP_PRIV_CLOCK_CPUCLK = 32, +} fsp_priv_clock_t; + +/* Private enum used in R_FSP_SciSpiClockHzGe. Maps clock name to base bit in SCISPICKCR. */ +typedef enum e_fsp_priv_source_clock +{ + FSP_PRIV_CLOCK_HOCO = 0, ///< The high speed on chip oscillator + FSP_PRIV_CLOCK_MOCO = 1, ///< The middle speed on chip oscillator + FSP_PRIV_CLOCK_LOCO = 2, ///< The low speed on chip oscillator + FSP_PRIV_CLOCK_MAIN_OSC = 3, ///< The main oscillator + FSP_PRIV_CLOCK_SUBCLOCK = 4, ///< The subclock oscillator + FSP_PRIV_CLOCK_PLL = 5, ///< The PLL oscillator + FSP_PRIV_CLOCK_PLL2 = 6, ///< The PLL2 oscillator +} fsp_priv_source_clock_t; + +typedef struct st_bsp_unique_id +{ + union + { + uint32_t unique_id_words[4]; + uint8_t unique_id_bytes[16]; + }; +} bsp_unique_id_t; + +/*********************************************************************************************************************** + * Exported global variables + **********************************************************************************************************************/ +uint32_t R_BSP_SourceClockHzGet(fsp_priv_source_clock_t clock); + +/*********************************************************************************************************************** + * Global variables (defined in other files) + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Inline Functions + **********************************************************************************************************************/ + +/*******************************************************************************************************************//** + * Return active interrupt vector number value + * + * @return Active interrupt vector number value + **********************************************************************************************************************/ +__STATIC_INLINE IRQn_Type R_FSP_CurrentIrqGet (void) +{ + xPSR_Type xpsr_value; + xpsr_value.w = __get_xPSR(); + + return (IRQn_Type) (xpsr_value.b.ISR - FSP_PRIV_CORTEX_PROCESSOR_EXCEPTIONS); +} + +/*******************************************************************************************************************//** + * Gets the frequency of a system clock. + * + * @return Frequency of requested clock in Hertz. + **********************************************************************************************************************/ +__STATIC_INLINE uint32_t R_FSP_SystemClockHzGet (fsp_priv_clock_t clock) +{ + uint32_t sckdivcr = FSP_STYPE3_REG32_READ(R_SYSTEM->SCKDIVCR, BSP_CFG_CLOCKS_SECURE); + uint32_t clock_div = (sckdivcr >> clock) & FSP_PRV_SCKDIVCR_DIV_MASK; + +#if BSP_FEATURE_CGC_HAS_CPUCLK + if (FSP_PRIV_CLOCK_CPUCLK == clock) + { + return SystemCoreClock; + } + + /* Get CPUCLK divisor */ + uint32_t cpuclk_div = FSP_STYPE3_REG8_READ(R_SYSTEM->SCKDIVCR2, BSP_CFG_CLOCKS_SECURE) & FSP_PRV_SCKDIVCR_DIV_MASK; + + /* Determine if either divisor is a multiple of 3 */ + if ((cpuclk_div | clock_div) & 8U) + { + /* Convert divisor settings to their actual values */ + cpuclk_div = (cpuclk_div & 8U) ? (3U << (cpuclk_div & 7U)) : (1U << cpuclk_div); + clock_div = (clock_div & 8U) ? (3U << (clock_div & 7U)) : (1U << clock_div); + + /* Calculate clock with multiplication and division instead of shifting */ + return (SystemCoreClock * cpuclk_div) / clock_div; + } + else + { + return (SystemCoreClock << cpuclk_div) >> clock_div; + } + +#else + uint32_t iclk_div = (sckdivcr >> FSP_PRIV_CLOCK_ICLK) & FSP_PRV_SCKDIVCR_DIV_MASK; + + return (SystemCoreClock << iclk_div) >> clock_div; +#endif +} + +/*******************************************************************************************************************//** + * Converts a clock's CKDIVCR register value to a clock divider (Eg: SPICKDIVCR). + * + * @return Clock Divider + **********************************************************************************************************************/ +__STATIC_INLINE uint32_t R_FSP_ClockDividerGet (uint32_t ckdivcr) +{ + if (2U >= ckdivcr) + { + + /* clock_div: + * - Clock Divided by 1: 0 + * - Clock Divided by 2: 1 + * - Clock Divided by 4: 2 + */ + return 1U << ckdivcr; + } + else if (3U == ckdivcr) + { + + /* Clock Divided by 6 */ + return 6U; + } + else if (4U == ckdivcr) + { + + /* Clock Divided by 8 */ + return 8U; + } + else if (5U == ckdivcr) + { + + /* Clock Divided by 3 */ + return 3U; + } + + /* Clock Divided by 5 */ + return 5U; +} + +#if BSP_FEATURE_BSP_HAS_SCISPI_CLOCK + +/*******************************************************************************************************************//** + * Gets the frequency of a SCI/SPI clock. + * + * @return Frequency of requested clock in Hertz. + **********************************************************************************************************************/ +__STATIC_INLINE uint32_t R_FSP_SciSpiClockHzGet (void) +{ + uint32_t scispidivcr = R_SYSTEM->SCISPICKDIVCR; + uint32_t clock_div = R_FSP_ClockDividerGet(scispidivcr & FSP_PRV_SCKDIVCR_DIV_MASK); + fsp_priv_source_clock_t scispicksel = (fsp_priv_source_clock_t) R_SYSTEM->SCISPICKCR_b.SCISPICKSEL; + + return R_BSP_SourceClockHzGet(scispicksel) / clock_div; +} + +#endif +#if BSP_FEATURE_BSP_HAS_SPI_CLOCK + +/*******************************************************************************************************************//** + * Gets the frequency of a SPI clock. + * + * @return Frequency of requested clock in Hertz. + **********************************************************************************************************************/ +__STATIC_INLINE uint32_t R_FSP_SpiClockHzGet (void) +{ + uint32_t spidivcr = FSP_STYPE3_REG8_READ(R_SYSTEM->SPICKDIVCR, BSP_CFG_CLOCKS_SECURE); + uint32_t clock_div = R_FSP_ClockDividerGet(spidivcr & FSP_PRV_SCKDIVCR_DIV_MASK); + fsp_priv_source_clock_t spicksel = + (fsp_priv_source_clock_t) ((FSP_STYPE3_REG8_READ(R_SYSTEM->SPICKCR, + BSP_CFG_CLOCKS_SECURE) & R_SYSTEM_SPICKCR_CKSEL_Msk) >> + R_SYSTEM_SPICKCR_CKSEL_Pos); + + return R_BSP_SourceClockHzGet(spicksel) / clock_div; +} + +#endif +#if BSP_FEATURE_BSP_HAS_SCI_CLOCK + +/*******************************************************************************************************************//** + * Gets the frequency of a SCI clock. + * + * @return Frequency of requested clock in Hertz. + **********************************************************************************************************************/ +__STATIC_INLINE uint32_t R_FSP_SciClockHzGet (void) +{ + uint32_t scidivcr = FSP_STYPE3_REG8_READ(R_SYSTEM->SCICKDIVCR, BSP_CFG_CLOCKS_SECURE); + uint32_t clock_div = R_FSP_ClockDividerGet(scidivcr & FSP_PRV_SCKDIVCR_DIV_MASK); + fsp_priv_source_clock_t scicksel = + (fsp_priv_source_clock_t) (FSP_STYPE3_REG8_READ(R_SYSTEM->SCICKCR, + BSP_CFG_CLOCKS_SECURE) & R_SYSTEM_SCICKCR_SCICKSEL_Msk >> + R_SYSTEM_SCICKCR_SCICKSEL_Pos); + + return R_BSP_SourceClockHzGet(scicksel) / clock_div; +} + +#endif + +/*******************************************************************************************************************//** + * Get unique ID for this device. + * + * @return A pointer to the unique identifier structure + **********************************************************************************************************************/ +__STATIC_INLINE bsp_unique_id_t const * R_BSP_UniqueIdGet (void) +{ + return (bsp_unique_id_t *) BSP_FEATURE_BSP_UNIQUE_ID_POINTER; +} + +/*******************************************************************************************************************//** + * Disables the flash cache. + **********************************************************************************************************************/ +__STATIC_INLINE void R_BSP_FlashCacheDisable (void) +{ +#if BSP_FEATURE_BSP_FLASH_CACHE + R_FCACHE->FCACHEE = 0U; +#endif + +#if BSP_FEATURE_BSP_HAS_CODE_SYSTEM_CACHE + + /* Disable the C-Cache. */ + R_CACHE->CCACTL = 0U; +#endif +} + +/*******************************************************************************************************************//** + * Enables the flash cache. + **********************************************************************************************************************/ +__STATIC_INLINE void R_BSP_FlashCacheEnable (void) +{ +#if BSP_FEATURE_BSP_FLASH_CACHE + + /* Invalidate the flash cache and wait until it is invalidated. (See section 55.3.2.2 "Operation" of the Flash Cache + * in the RA6M3 manual R01UH0878EJ0100). */ + R_FCACHE->FCACHEIV = 1U; + FSP_HARDWARE_REGISTER_WAIT(R_FCACHE->FCACHEIV, 0U); + + /* Enable flash cache. */ + R_FCACHE->FCACHEE = 1U; +#endif + +#if BSP_FEATURE_BSP_HAS_CODE_SYSTEM_CACHE + + /* Configure the C-Cache line size. */ + R_CACHE->CCALCF = BSP_CFG_C_CACHE_LINE_SIZE; + + /* Enable the C-Cache. */ + R_CACHE->CCACTL = 1U; +#endif +} + +/*********************************************************************************************************************** + * Exported global functions (to be accessed by other files) + **********************************************************************************************************************/ +#if ((1 == BSP_CFG_ERROR_LOG) || (1 == BSP_CFG_ASSERT)) + +/** Prototype of default function called before errors are returned in FSP code if BSP_CFG_LOG_ERRORS is set to 1. */ +void fsp_error_log(fsp_err_t err, const char * file, int32_t line); + +#endif + +/** In the event of an unrecoverable error the BSP will by default call the __BKPT() intrinsic function which will + * alert the user of the error. The user can override this default behavior by defining their own + * BSP_CFG_HANDLE_UNRECOVERABLE_ERROR macro. + */ +#if !defined(BSP_CFG_HANDLE_UNRECOVERABLE_ERROR) + + #define BSP_CFG_HANDLE_UNRECOVERABLE_ERROR(x) __BKPT((x)) +#endif + +/** @} (end addtogroup BSP_MCU) */ + +/** Common macro for FSP header files. There is also a corresponding FSP_HEADER macro at the top of this file. */ +FSP_FOOTER + +#endif diff --git a/bsp/renesas/ra8m1-ek/ra/fsp/src/bsp/mcu/all/bsp_compiler_support.h b/bsp/renesas/ra8m1-ek/ra/fsp/src/bsp/mcu/all/bsp_compiler_support.h new file mode 100644 index 000000000000..43a316e18386 --- /dev/null +++ b/bsp/renesas/ra8m1-ek/ra/fsp/src/bsp/mcu/all/bsp_compiler_support.h @@ -0,0 +1,120 @@ +/*********************************************************************************************************************** + * Copyright [2020-2023] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics America Inc. and may only be used with products + * of Renesas Electronics Corp. and its affiliates ("Renesas"). No other uses are authorized. Renesas products are + * sold pursuant to Renesas terms and conditions of sale. Purchasers are solely responsible for the selection and use + * of Renesas products and Renesas assumes no liability. No license, express or implied, to any intellectual property + * right is granted by Renesas. This software is protected under all applicable laws, including copyright laws. Renesas + * reserves the right to change or discontinue this software and/or this documentation. THE SOFTWARE AND DOCUMENTATION + * IS DELIVERED TO YOU "AS IS," AND RENESAS MAKES NO REPRESENTATIONS OR WARRANTIES, AND TO THE FULLEST EXTENT + * PERMISSIBLE UNDER APPLICABLE LAW, DISCLAIMS ALL WARRANTIES, WHETHER EXPLICITLY OR IMPLICITLY, INCLUDING WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT, WITH RESPECT TO THE SOFTWARE OR + * DOCUMENTATION. RENESAS SHALL HAVE NO LIABILITY ARISING OUT OF ANY SECURITY VULNERABILITY OR BREACH. TO THE MAXIMUM + * EXTENT PERMITTED BY LAW, IN NO EVENT WILL RENESAS BE LIABLE TO YOU IN CONNECTION WITH THE SOFTWARE OR DOCUMENTATION + * (OR ANY PERSON OR ENTITY CLAIMING RIGHTS DERIVED FROM YOU) FOR ANY LOSS, DAMAGES, OR CLAIMS WHATSOEVER, INCLUDING, + * WITHOUT LIMITATION, ANY DIRECT, CONSEQUENTIAL, SPECIAL, INDIRECT, PUNITIVE, OR INCIDENTAL DAMAGES; ANY LOST PROFITS, + * OTHER ECONOMIC DAMAGE, PROPERTY DAMAGE, OR PERSONAL INJURY; AND EVEN IF RENESAS HAS BEEN ADVISED OF THE POSSIBILITY + * OF SUCH LOSS, DAMAGES, CLAIMS OR COSTS. + **********************************************************************************************************************/ + +/*******************************************************************************************************************//** + * @addtogroup BSP_MCU + * @{ + **********************************************************************************************************************/ + +#ifndef BSP_COMPILER_SUPPORT_H + #define BSP_COMPILER_SUPPORT_H + + #if (defined(__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3)) + #include "arm_cmse.h" + #endif + + #ifdef __cplusplus +extern "C" { + #endif + +/*********************************************************************************************************************** + * Macro definitions + **********************************************************************************************************************/ + #if defined(__ARMCC_VERSION) /* AC6 compiler */ + +/* The AC6 linker requires uninitialized code to be placed in a section that starts with ".bss." Without this, load + * memory (ROM) is reserved unnecessarily. */ + #define BSP_UNINIT_SECTION_PREFIX ".bss" + #ifndef BSP_SECTION_HEAP + #define BSP_SECTION_HEAP BSP_UNINIT_SECTION_PREFIX ".heap" + #endif + #define BSP_DONT_REMOVE __attribute__((used)) + #define BSP_ATTRIBUTE_STACKLESS __attribute__((naked)) + #define BSP_FORCE_INLINE __attribute__((always_inline)) + #elif defined(__GNUC__) /* GCC compiler */ + #define BSP_UNINIT_SECTION_PREFIX + #ifndef BSP_SECTION_HEAP + #define BSP_SECTION_HEAP ".heap" + #endif + #define BSP_DONT_REMOVE + #define BSP_ATTRIBUTE_STACKLESS __attribute__((naked)) + #define BSP_FORCE_INLINE __attribute__((always_inline)) + #elif defined(__ICCARM__) /* IAR compiler */ + #define BSP_UNINIT_SECTION_PREFIX + #ifndef BSP_SECTION_HEAP + #define BSP_SECTION_HEAP "HEAP" + #endif + #define BSP_DONT_REMOVE __root + #define BSP_ATTRIBUTE_STACKLESS __stackless + #define BSP_FORCE_INLINE _Pragma("inline=forced") + #endif + + #ifndef BSP_SECTION_STACK + #define BSP_SECTION_STACK BSP_UNINIT_SECTION_PREFIX ".stack" + #endif + #define BSP_SECTION_NOINIT BSP_UNINIT_SECTION_PREFIX ".noinit" + #define BSP_SECTION_FIXED_VECTORS ".fixed_vectors" + #define BSP_SECTION_APPLICATION_VECTORS ".application_vectors" + #define BSP_SECTION_ROM_REGISTERS ".rom_registers" + #define BSP_SECTION_ID_CODE ".id_code" + +/* Compiler neutral macros. */ + #define BSP_PLACE_IN_SECTION(x) __attribute__((section(x))) __attribute__((__used__)) + + #define BSP_ALIGN_VARIABLE(x) __attribute__((aligned(x))) + + #define BSP_PACKED __attribute__((aligned(1))) // DEPRECATED + + #define BSP_WEAK_REFERENCE __attribute__((weak)) + +/** Stacks (and heap) must be sized and aligned to an integer multiple of this number. */ + #define BSP_STACK_ALIGNMENT (8) + +/*********************************************************************************************************************** + * TrustZone definitions + **********************************************************************************************************************/ + #if (defined(__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3)) && !defined(__clang_analyzer__) + #if defined(__ICCARM__) /* IAR compiler */ + #define BSP_CMSE_NONSECURE_CALL __cmse_nonsecure_call + #define BSP_CMSE_NONSECURE_ENTRY __cmse_nonsecure_entry + #else + #define BSP_CMSE_NONSECURE_CALL __attribute__((cmse_nonsecure_call)) + #define BSP_CMSE_NONSECURE_ENTRY __attribute__((cmse_nonsecure_entry)) + #endif + #else + #define BSP_CMSE_NONSECURE_CALL + #define BSP_CMSE_NONSECURE_ENTRY + #endif + +/*********************************************************************************************************************** + * Exported global variables + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Exported global functions (to be accessed by other files) + **********************************************************************************************************************/ + +/** @} (end of addtogroup BSP_MCU) */ + + #ifdef __cplusplus +} + #endif + +#endif diff --git a/bsp/renesas/ra8m1-ek/ra/fsp/src/bsp/mcu/all/bsp_delay.c b/bsp/renesas/ra8m1-ek/ra/fsp/src/bsp/mcu/all/bsp_delay.c new file mode 100644 index 000000000000..03768614d41e --- /dev/null +++ b/bsp/renesas/ra8m1-ek/ra/fsp/src/bsp/mcu/all/bsp_delay.c @@ -0,0 +1,189 @@ +/*********************************************************************************************************************** + * Copyright [2020-2023] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics America Inc. and may only be used with products + * of Renesas Electronics Corp. and its affiliates ("Renesas"). No other uses are authorized. Renesas products are + * sold pursuant to Renesas terms and conditions of sale. Purchasers are solely responsible for the selection and use + * of Renesas products and Renesas assumes no liability. No license, express or implied, to any intellectual property + * right is granted by Renesas. This software is protected under all applicable laws, including copyright laws. Renesas + * reserves the right to change or discontinue this software and/or this documentation. THE SOFTWARE AND DOCUMENTATION + * IS DELIVERED TO YOU "AS IS," AND RENESAS MAKES NO REPRESENTATIONS OR WARRANTIES, AND TO THE FULLEST EXTENT + * PERMISSIBLE UNDER APPLICABLE LAW, DISCLAIMS ALL WARRANTIES, WHETHER EXPLICITLY OR IMPLICITLY, INCLUDING WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT, WITH RESPECT TO THE SOFTWARE OR + * DOCUMENTATION. RENESAS SHALL HAVE NO LIABILITY ARISING OUT OF ANY SECURITY VULNERABILITY OR BREACH. TO THE MAXIMUM + * EXTENT PERMITTED BY LAW, IN NO EVENT WILL RENESAS BE LIABLE TO YOU IN CONNECTION WITH THE SOFTWARE OR DOCUMENTATION + * (OR ANY PERSON OR ENTITY CLAIMING RIGHTS DERIVED FROM YOU) FOR ANY LOSS, DAMAGES, OR CLAIMS WHATSOEVER, INCLUDING, + * WITHOUT LIMITATION, ANY DIRECT, CONSEQUENTIAL, SPECIAL, INDIRECT, PUNITIVE, OR INCIDENTAL DAMAGES; ANY LOST PROFITS, + * OTHER ECONOMIC DAMAGE, PROPERTY DAMAGE, OR PERSONAL INJURY; AND EVEN IF RENESAS HAS BEEN ADVISED OF THE POSSIBILITY + * OF SUCH LOSS, DAMAGES, CLAIMS OR COSTS. + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Includes , "Project Includes" + **********************************************************************************************************************/ +#include "bsp_api.h" +#include "bsp_delay.h" + +/*********************************************************************************************************************** + * Macro definitions + **********************************************************************************************************************/ +#define BSP_DELAY_NS_PER_SECOND (1000000000) +#define BSP_DELAY_NS_PER_US (1000) + +/*********************************************************************************************************************** + * Typedef definitions + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Private function prototypes + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Exported global variables (to be accessed by other files) + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Private global variables and functions + **********************************************************************************************************************/ + +/*******************************************************************************************************************//** + * @addtogroup BSP_MCU + * @{ + **********************************************************************************************************************/ + +/*******************************************************************************************************************//** + * Delay for at least the specified duration in units and return. + * @param[in] delay The number of 'units' to delay. + * @param[in] units The 'base' (bsp_delay_units_t) for the units specified. Valid values are: + * BSP_DELAY_UNITS_SECONDS, BSP_DELAY_UNITS_MILLISECONDS, BSP_DELAY_UNITS_MICROSECONDS.@n + * For example:@n + * At 1 MHz one cycle takes 1 microsecond (.000001 seconds).@n + * At 12 MHz one cycle takes 1/12 microsecond or 83 nanoseconds.@n + * Therefore one run through bsp_prv_software_delay_loop() takes: + * ~ (83 * BSP_DELAY_LOOP_CYCLES) or 332 ns. + * A delay of 2 us therefore requires 2000ns/332ns or 6 loops. + * + * The 'theoretical' maximum delay that may be obtained is determined by a full 32 bit loop count and the system clock rate. + * @120MHz: ((0xFFFFFFFF loops * 4 cycles /loop) / 120000000) = 143 seconds. + * @32MHz: ((0xFFFFFFFF loops * 4 cycles /loop) / 32000000) = 536 seconds + * + * Note that requests for very large delays will be affected by rounding in the calculations and the actual delay + * achieved may be slightly longer. @32 MHz, for example, a request for 532 seconds will be closer to 536 seconds. + * + * Note also that if the calculations result in a loop_cnt of zero, the bsp_prv_software_delay_loop() function is not called + * at all. In this case the requested delay is too small (nanoseconds) to be carried out by the loop itself, and the + * overhead associated with executing the code to just get to this point has certainly satisfied the requested delay. + * + * @note This function calls bsp_cpu_clock_get() which ultimately calls R_CGC_SystemClockFreqGet() and therefore requires + * that the BSP has already initialized the CGC (which it does as part of the Sysinit). + * Care should be taken to ensure this remains the case if in the future this function were to be called as part + * of the BSP initialization. + * + * @note This function will delay for **at least** the specified duration. Due to overhead in calculating the correct number + * of loops to delay, very small delay values (generally 1-5 microseconds) may be significantly longer than specified. + * Approximate overhead for this function is as follows: + * - CM4: 20-50 cycles + * - CM33: 10-60 cycles + * - CM23: 75-200 cycles + * + * @note If more accurate microsecond timing must be performed in software it is recommended to use + * bsp_prv_software_delay_loop() directly. In this case, use BSP_DELAY_LOOP_CYCLES or BSP_DELAY_LOOPS_CALCULATE() + * to convert a calculated delay cycle count to a number of software delay loops. + * + * @note Delays may be longer than expected when compiler optimization is turned off. + * + * @warning The delay will be longer than specified on CM23 devices when the core clock is greater than 32 MHz. Setting + * BSP_DELAY_LOOP_CYCLES to 6 will improve accuracy at 48 MHz but will result in shorter than expected delays + * at lower speeds. + **********************************************************************************************************************/ + +void R_BSP_SoftwareDelay (uint32_t delay, bsp_delay_units_t units) +{ + uint32_t iclk_hz; + uint32_t cycles_requested; + uint32_t ns_per_cycle; + uint32_t loops_required = 0; + uint32_t total_us = (delay * units); /** Convert the requested time to microseconds. */ + uint64_t ns_64bits; + + iclk_hz = SystemCoreClock; /** Get the system clock frequency in Hz. */ + + /* Running on the Sub-clock (32768 Hz) there are 30517 ns/cycle. This means one cycle takes 31 us. One execution + * loop of the delay_loop takes 6 cycles which at 32768 Hz is 180 us. That does not include the overhead below prior to even getting + * to the delay loop. Given this, at this frequency anything less then a delay request of 122 us will not even generate a single + * pass through the delay loop. For this reason small delays (<=~200 us) at this slow clock rate will not be possible and such a request + * will generate a minimum delay of ~200 us.*/ + ns_per_cycle = BSP_DELAY_NS_PER_SECOND / iclk_hz; /** Get the # of nanoseconds/cycle. */ + + /* We want to get the time in total nanoseconds but need to be conscious of overflowing 32 bits. We also do not want to do 64 bit */ + /* division as that pulls in a division library. */ + ns_64bits = (uint64_t) total_us * (uint64_t) BSP_DELAY_NS_PER_US; // Convert to ns. + + /* Have we overflowed 32 bits? */ + if (ns_64bits <= UINT32_MAX) + { + /* No, we will not overflow. */ + cycles_requested = ((uint32_t) ns_64bits / ns_per_cycle); + loops_required = cycles_requested / BSP_DELAY_LOOP_CYCLES; + } + else + { + /* We did overflow. Try dividing down first. */ + total_us = (total_us / (ns_per_cycle * BSP_DELAY_LOOP_CYCLES)); + ns_64bits = (uint64_t) total_us * (uint64_t) BSP_DELAY_NS_PER_US; // Convert to ns. + + /* Have we overflowed 32 bits? */ + if (ns_64bits <= UINT32_MAX) + { + /* No, we will not overflow. */ + loops_required = (uint32_t) ns_64bits; + } + else + { + /* We still overflowed, use the max count for cycles */ + loops_required = UINT32_MAX; + } + } + + /** Only delay if the supplied parameters constitute a delay. */ + if (loops_required > (uint32_t) 0) + { + bsp_prv_software_delay_loop(loops_required); + } +} + +/** @} (end addtogroup BSP_MCU) */ + +/*******************************************************************************************************************//** + * This assembly language routine takes roughly 4 cycles per loop. 2 additional cycles + * occur when the loop exits. The 'naked' attribute indicates that the specified function does not need + * prologue/epilogue sequences generated by the compiler. + * @param[in] loop_cnt The number of loops to iterate. + **********************************************************************************************************************/ +BSP_ATTRIBUTE_STACKLESS void bsp_prv_software_delay_loop (__attribute__( + (unused)) uint32_t loop_cnt) +{ + __asm volatile ( +#if defined(RENESAS_CORTEX_M85) && (defined(__ARMCC_VERSION) || defined(__GNUC__)) + + /* Align the branch target to a 64-bit boundary, a CM85 specific optimization. */ + /* IAR does not support alignment control within inline assembly. */ + ".balign 8\n" +#endif + "sw_delay_loop: \n" +#if defined(__ICCARM__) || defined(__ARMCC_VERSION) || (defined(__llvm__) && !defined(__CLANG_TIDY__)) + " subs r0, #1 \n" ///< 1 cycle +#elif defined(__GNUC__) + " sub r0, r0, #1 \n" ///< 1 cycle +#endif + + " cmp r0, #0 \n" ///< 1 cycle + +/* CM0 and CM23 have a different instruction set */ +#if defined(__CORE_CM0PLUS_H_GENERIC) || defined(__CORE_CM23_H_GENERIC) + " bne sw_delay_loop \n" ///< 2 cycles +#else + " bne.n sw_delay_loop \n" ///< 2 cycles +#endif + " bx lr \n"); ///< 2 cycles +} diff --git a/bsp/renesas/ra8m1-ek/ra/fsp/src/bsp/mcu/all/bsp_delay.h b/bsp/renesas/ra8m1-ek/ra/fsp/src/bsp/mcu/all/bsp_delay.h new file mode 100644 index 000000000000..8a2c20c0b29e --- /dev/null +++ b/bsp/renesas/ra8m1-ek/ra/fsp/src/bsp/mcu/all/bsp_delay.h @@ -0,0 +1,87 @@ +/*********************************************************************************************************************** + * Copyright [2020-2023] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics America Inc. and may only be used with products + * of Renesas Electronics Corp. and its affiliates ("Renesas"). No other uses are authorized. Renesas products are + * sold pursuant to Renesas terms and conditions of sale. Purchasers are solely responsible for the selection and use + * of Renesas products and Renesas assumes no liability. No license, express or implied, to any intellectual property + * right is granted by Renesas. This software is protected under all applicable laws, including copyright laws. Renesas + * reserves the right to change or discontinue this software and/or this documentation. THE SOFTWARE AND DOCUMENTATION + * IS DELIVERED TO YOU "AS IS," AND RENESAS MAKES NO REPRESENTATIONS OR WARRANTIES, AND TO THE FULLEST EXTENT + * PERMISSIBLE UNDER APPLICABLE LAW, DISCLAIMS ALL WARRANTIES, WHETHER EXPLICITLY OR IMPLICITLY, INCLUDING WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT, WITH RESPECT TO THE SOFTWARE OR + * DOCUMENTATION. RENESAS SHALL HAVE NO LIABILITY ARISING OUT OF ANY SECURITY VULNERABILITY OR BREACH. TO THE MAXIMUM + * EXTENT PERMITTED BY LAW, IN NO EVENT WILL RENESAS BE LIABLE TO YOU IN CONNECTION WITH THE SOFTWARE OR DOCUMENTATION + * (OR ANY PERSON OR ENTITY CLAIMING RIGHTS DERIVED FROM YOU) FOR ANY LOSS, DAMAGES, OR CLAIMS WHATSOEVER, INCLUDING, + * WITHOUT LIMITATION, ANY DIRECT, CONSEQUENTIAL, SPECIAL, INDIRECT, PUNITIVE, OR INCIDENTAL DAMAGES; ANY LOST PROFITS, + * OTHER ECONOMIC DAMAGE, PROPERTY DAMAGE, OR PERSONAL INJURY; AND EVEN IF RENESAS HAS BEEN ADVISED OF THE POSSIBILITY + * OF SUCH LOSS, DAMAGES, CLAIMS OR COSTS. + **********************************************************************************************************************/ + +#ifndef BSP_DELAY_H +#define BSP_DELAY_H + +/*********************************************************************************************************************** + * Includes , "Project Includes" + **********************************************************************************************************************/ + +/** Common macro for FSP header files. There is also a corresponding FSP_FOOTER macro at the end of this file. */ +FSP_HEADER + +#include "bsp_compiler_support.h" + +/*******************************************************************************************************************//** + * @addtogroup BSP_MCU + * @{ + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Macro definitions + **********************************************************************************************************************/ + +/* The number of cycles required per software delay loop. */ +#ifndef BSP_DELAY_LOOP_CYCLES + #if defined(RENESAS_CORTEX_M85) + +/* On M85 cores, code alignment can affect execution speed. bsp_prv_software_delay_loop is aligned to 8 bytes for + * GCC and AC6, but IAR does not support aligning code. The below ensures the correct loop cycle count is used in + * this case. */ + #if defined(__ICCARM__) + #define BSP_DELAY_LOOP_CYCLES (((uint32_t) bsp_prv_software_delay_loop & 0x6) ? 2 : 1) + #else + #define BSP_DELAY_LOOP_CYCLES (1) + #endif + #else + #define BSP_DELAY_LOOP_CYCLES (4) + #endif +#endif + +/* Calculates the number of delay loops to pass to bsp_prv_software_delay_loop to achieve at least the requested cycle + * count delay. This is 1 loop longer than optimal if cycles is a multiple of BSP_DELAY_LOOP_CYCLES, but it ensures + * the requested number of loops is at least 1 since bsp_prv_software_delay_loop cannot be called with a loop count + * of 0. */ +#define BSP_DELAY_LOOPS_CALCULATE(cycles) (((cycles) / BSP_DELAY_LOOP_CYCLES) + 1U) + +/** Available delay units for R_BSP_SoftwareDelay(). These are ultimately used to calculate a total # of microseconds */ +typedef enum +{ + BSP_DELAY_UNITS_SECONDS = 1000000, ///< Requested delay amount is in seconds + BSP_DELAY_UNITS_MILLISECONDS = 1000, ///< Requested delay amount is in milliseconds + BSP_DELAY_UNITS_MICROSECONDS = 1 ///< Requested delay amount is in microseconds +} bsp_delay_units_t; + +/** @} (end addtogroup BSP_MCU) */ + +/*********************************************************************************************************************** + * Exported global variables + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Exported global functions (to be accessed by other files) + **********************************************************************************************************************/ +BSP_ATTRIBUTE_STACKLESS void bsp_prv_software_delay_loop(uint32_t loop_cnt); + +/** Common macro for FSP header files. There is also a corresponding FSP_HEADER macro at the top of this file. */ +FSP_FOOTER + +#endif diff --git a/bsp/renesas/ra8m1-ek/ra/fsp/src/bsp/mcu/all/bsp_exceptions.h b/bsp/renesas/ra8m1-ek/ra/fsp/src/bsp/mcu/all/bsp_exceptions.h new file mode 100644 index 000000000000..ef1dd59e68a5 --- /dev/null +++ b/bsp/renesas/ra8m1-ek/ra/fsp/src/bsp/mcu/all/bsp_exceptions.h @@ -0,0 +1,58 @@ +/*********************************************************************************************************************** + * Copyright [2020-2023] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics America Inc. and may only be used with products + * of Renesas Electronics Corp. and its affiliates ("Renesas"). No other uses are authorized. Renesas products are + * sold pursuant to Renesas terms and conditions of sale. Purchasers are solely responsible for the selection and use + * of Renesas products and Renesas assumes no liability. No license, express or implied, to any intellectual property + * right is granted by Renesas. This software is protected under all applicable laws, including copyright laws. Renesas + * reserves the right to change or discontinue this software and/or this documentation. THE SOFTWARE AND DOCUMENTATION + * IS DELIVERED TO YOU "AS IS," AND RENESAS MAKES NO REPRESENTATIONS OR WARRANTIES, AND TO THE FULLEST EXTENT + * PERMISSIBLE UNDER APPLICABLE LAW, DISCLAIMS ALL WARRANTIES, WHETHER EXPLICITLY OR IMPLICITLY, INCLUDING WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT, WITH RESPECT TO THE SOFTWARE OR + * DOCUMENTATION. RENESAS SHALL HAVE NO LIABILITY ARISING OUT OF ANY SECURITY VULNERABILITY OR BREACH. TO THE MAXIMUM + * EXTENT PERMITTED BY LAW, IN NO EVENT WILL RENESAS BE LIABLE TO YOU IN CONNECTION WITH THE SOFTWARE OR DOCUMENTATION + * (OR ANY PERSON OR ENTITY CLAIMING RIGHTS DERIVED FROM YOU) FOR ANY LOSS, DAMAGES, OR CLAIMS WHATSOEVER, INCLUDING, + * WITHOUT LIMITATION, ANY DIRECT, CONSEQUENTIAL, SPECIAL, INDIRECT, PUNITIVE, OR INCIDENTAL DAMAGES; ANY LOST PROFITS, + * OTHER ECONOMIC DAMAGE, PROPERTY DAMAGE, OR PERSONAL INJURY; AND EVEN IF RENESAS HAS BEEN ADVISED OF THE POSSIBILITY + * OF SUCH LOSS, DAMAGES, CLAIMS OR COSTS. + **********************************************************************************************************************/ + +/** @} (end addtogroup BSP_MCU) */ + +#ifndef BSP_EXCEPTIONS_H + #define BSP_EXCEPTIONS_H + + #ifdef __cplusplus +extern "C" { + #endif + +/*********************************************************************************************************************** + * Macro definitions + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Typedef definitions + **********************************************************************************************************************/ + +/* This list includes only Arm standard exceptions. Renesas interrupts are defined in vector_data.h. */ +typedef enum IRQn +{ + Reset_IRQn = -15, /* 1 Reset Vector invoked on Power up and warm reset */ + NonMaskableInt_IRQn = -14, /* 2 Non maskable Interrupt cannot be stopped or preempted */ + HardFault_IRQn = -13, /* 3 Hard Fault all classes of Fault */ + MemoryManagement_IRQn = -12, /* 4 Memory Management MPU mismatch, including Access Violation and No Match */ + BusFault_IRQn = -11, /* 5 Bus Fault Pre-Fetch-, Memory Access, other address/memory Fault */ + UsageFault_IRQn = -10, /* 6 Usage Fault i.e. Undef Instruction, Illegal State Transition */ + SecureFault_IRQn = -9, /* 7 Secure Fault Interrupt */ + SVCall_IRQn = -5, /* 11 System Service Call via SVC instruction */ + DebugMonitor_IRQn = -4, /* 12 Debug Monitor */ + PendSV_IRQn = -2, /* 14 Pendable request for system service */ + SysTick_IRQn = -1, /* 15 System Tick Timer */ +} IRQn_Type; + + #ifdef __cplusplus +} + #endif + +#endif diff --git a/bsp/renesas/ra8m1-ek/ra/fsp/src/bsp/mcu/all/bsp_group_irq.c b/bsp/renesas/ra8m1-ek/ra/fsp/src/bsp/mcu/all/bsp_group_irq.c new file mode 100644 index 000000000000..f94729092c93 --- /dev/null +++ b/bsp/renesas/ra8m1-ek/ra/fsp/src/bsp/mcu/all/bsp_group_irq.c @@ -0,0 +1,131 @@ +/*********************************************************************************************************************** + * Copyright [2020-2023] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics America Inc. and may only be used with products + * of Renesas Electronics Corp. and its affiliates ("Renesas"). No other uses are authorized. Renesas products are + * sold pursuant to Renesas terms and conditions of sale. Purchasers are solely responsible for the selection and use + * of Renesas products and Renesas assumes no liability. No license, express or implied, to any intellectual property + * right is granted by Renesas. This software is protected under all applicable laws, including copyright laws. Renesas + * reserves the right to change or discontinue this software and/or this documentation. THE SOFTWARE AND DOCUMENTATION + * IS DELIVERED TO YOU "AS IS," AND RENESAS MAKES NO REPRESENTATIONS OR WARRANTIES, AND TO THE FULLEST EXTENT + * PERMISSIBLE UNDER APPLICABLE LAW, DISCLAIMS ALL WARRANTIES, WHETHER EXPLICITLY OR IMPLICITLY, INCLUDING WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT, WITH RESPECT TO THE SOFTWARE OR + * DOCUMENTATION. RENESAS SHALL HAVE NO LIABILITY ARISING OUT OF ANY SECURITY VULNERABILITY OR BREACH. TO THE MAXIMUM + * EXTENT PERMITTED BY LAW, IN NO EVENT WILL RENESAS BE LIABLE TO YOU IN CONNECTION WITH THE SOFTWARE OR DOCUMENTATION + * (OR ANY PERSON OR ENTITY CLAIMING RIGHTS DERIVED FROM YOU) FOR ANY LOSS, DAMAGES, OR CLAIMS WHATSOEVER, INCLUDING, + * WITHOUT LIMITATION, ANY DIRECT, CONSEQUENTIAL, SPECIAL, INDIRECT, PUNITIVE, OR INCIDENTAL DAMAGES; ANY LOST PROFITS, + * OTHER ECONOMIC DAMAGE, PROPERTY DAMAGE, OR PERSONAL INJURY; AND EVEN IF RENESAS HAS BEEN ADVISED OF THE POSSIBILITY + * OF SUCH LOSS, DAMAGES, CLAIMS OR COSTS. + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Includes , "Project Includes" + **********************************************************************************************************************/ +#include "bsp_api.h" + +/*********************************************************************************************************************** + * Macro definitions + **********************************************************************************************************************/ +#define BSP_GRP_IRQ_TOTAL_ITEMS (16U) + +/*********************************************************************************************************************** + * Typedef definitions + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Exported global variables (to be accessed by other files) + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Private global variables and functions + **********************************************************************************************************************/ + +/** This array holds callback functions. */ +bsp_grp_irq_cb_t g_bsp_group_irq_sources[BSP_GRP_IRQ_TOTAL_ITEMS] BSP_SECTION_EARLY_INIT; + +void NMI_Handler(void); +static void bsp_group_irq_call(bsp_grp_irq_t irq); + +/*******************************************************************************************************************//** + * Calls the callback function for an interrupt if a callback has been registered. + * + * @param[in] irq Which interrupt to check and possibly call. + * + * @retval FSP_SUCCESS Callback was called. + * @retval FSP_ERR_INVALID_ARGUMENT No valid callback has been registered for this interrupt source. + * + * @warning This function is called from within an interrupt + **********************************************************************************************************************/ +static void bsp_group_irq_call (bsp_grp_irq_t irq) +{ + /** Check for valid callback */ + if (NULL != g_bsp_group_irq_sources[irq]) + { + /** Callback has been found. Call it. */ + g_bsp_group_irq_sources[irq](irq); + } +} + +/*******************************************************************************************************************//** + * @addtogroup BSP_MCU + * + * @{ + **********************************************************************************************************************/ + +/*******************************************************************************************************************//** + * Register a callback function for supported interrupts. If NULL is passed for the callback argument then any + * previously registered callbacks are unregistered. + * + * @param[in] irq Interrupt for which to register a callback. + * @param[in] p_callback Pointer to function to call when interrupt occurs. + * + * @retval FSP_SUCCESS Callback registered + * @retval FSP_ERR_ASSERTION Callback pointer is NULL + **********************************************************************************************************************/ +fsp_err_t R_BSP_GroupIrqWrite (bsp_grp_irq_t irq, void (* p_callback)(bsp_grp_irq_t irq)) +{ +#if BSP_CFG_PARAM_CHECKING_ENABLE + + /* Check pointer for NULL value. */ + FSP_ASSERT(p_callback); +#endif + + /* Register callback. */ + g_bsp_group_irq_sources[irq] = p_callback; + + return FSP_SUCCESS; +} + +/*******************************************************************************************************************//** + * Non-maskable interrupt handler. This exception is defined by the BSP, unlike other system exceptions, because + * there are many sources that map to the NMI exception. + **********************************************************************************************************************/ +void NMI_Handler (void) +{ + /* NMISR is masked by NMIER to prevent iterating over NMI status flags that are not enabled. */ + uint16_t nmier = R_ICU->NMIER; + uint16_t nmisr = R_ICU->NMISR & nmier; + + /* Loop over all NMI status flags */ + for (bsp_grp_irq_t irq = BSP_GRP_IRQ_IWDT_ERROR; irq <= (bsp_grp_irq_t) (BSP_GRP_IRQ_TOTAL_ITEMS - 1); irq++) + { + /* If the current irq status register is set call the irq callback. */ + if (0U != (nmisr & (1U << irq))) + { + (void) bsp_group_irq_call(irq); + } + } + + /* Clear status flags that have been handled. */ + R_ICU->NMICLR = nmisr; + +#if BSP_CFG_MCU_PART_SERIES == 8 + + /* Wait for NMISR to be cleared before exiting the ISR to prevent the IRQ from being regenerated. + * See section "13.2.12 NMICLR : Non-Maskable Interrupt Status Clear Register" in the RA8M1 manual + * R01UH0994EJ0100 */ + FSP_HARDWARE_REGISTER_WAIT((R_ICU->NMISR & nmisr), 0); +#endif +} + +/** @} (end addtogroup BSP_MCU) */ diff --git a/bsp/renesas/ra8m1-ek/ra/fsp/src/bsp/mcu/all/bsp_group_irq.h b/bsp/renesas/ra8m1-ek/ra/fsp/src/bsp/mcu/all/bsp_group_irq.h new file mode 100644 index 000000000000..001fa8e527a5 --- /dev/null +++ b/bsp/renesas/ra8m1-ek/ra/fsp/src/bsp/mcu/all/bsp_group_irq.h @@ -0,0 +1,83 @@ +/*********************************************************************************************************************** + * Copyright [2020-2023] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics America Inc. and may only be used with products + * of Renesas Electronics Corp. and its affiliates ("Renesas"). No other uses are authorized. Renesas products are + * sold pursuant to Renesas terms and conditions of sale. Purchasers are solely responsible for the selection and use + * of Renesas products and Renesas assumes no liability. No license, express or implied, to any intellectual property + * right is granted by Renesas. This software is protected under all applicable laws, including copyright laws. Renesas + * reserves the right to change or discontinue this software and/or this documentation. THE SOFTWARE AND DOCUMENTATION + * IS DELIVERED TO YOU "AS IS," AND RENESAS MAKES NO REPRESENTATIONS OR WARRANTIES, AND TO THE FULLEST EXTENT + * PERMISSIBLE UNDER APPLICABLE LAW, DISCLAIMS ALL WARRANTIES, WHETHER EXPLICITLY OR IMPLICITLY, INCLUDING WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT, WITH RESPECT TO THE SOFTWARE OR + * DOCUMENTATION. RENESAS SHALL HAVE NO LIABILITY ARISING OUT OF ANY SECURITY VULNERABILITY OR BREACH. TO THE MAXIMUM + * EXTENT PERMITTED BY LAW, IN NO EVENT WILL RENESAS BE LIABLE TO YOU IN CONNECTION WITH THE SOFTWARE OR DOCUMENTATION + * (OR ANY PERSON OR ENTITY CLAIMING RIGHTS DERIVED FROM YOU) FOR ANY LOSS, DAMAGES, OR CLAIMS WHATSOEVER, INCLUDING, + * WITHOUT LIMITATION, ANY DIRECT, CONSEQUENTIAL, SPECIAL, INDIRECT, PUNITIVE, OR INCIDENTAL DAMAGES; ANY LOST PROFITS, + * OTHER ECONOMIC DAMAGE, PROPERTY DAMAGE, OR PERSONAL INJURY; AND EVEN IF RENESAS HAS BEEN ADVISED OF THE POSSIBILITY + * OF SUCH LOSS, DAMAGES, CLAIMS OR COSTS. + **********************************************************************************************************************/ + +#ifndef BSP_GROUP_IRQ_H +#define BSP_GROUP_IRQ_H + +/** Common macro for FSP header files. There is also a corresponding FSP_FOOTER macro at the end of this file. */ +FSP_HEADER + +/*******************************************************************************************************************//** + * @addtogroup BSP_MCU + * + * @{ + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Macro definitions + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Typedef definitions + **********************************************************************************************************************/ + +#ifndef BSP_OVERRIDE_GROUP_IRQ_T + +/** Which interrupts can have callbacks registered. */ +typedef enum e_bsp_grp_irq +{ + BSP_GRP_IRQ_IWDT_ERROR = 0, ///< IWDT underflow/refresh error has occurred + BSP_GRP_IRQ_WDT_ERROR = 1, ///< WDT underflow/refresh error has occurred + BSP_GRP_IRQ_LVD1 = 2, ///< Voltage monitoring 1 interrupt + BSP_GRP_IRQ_LVD2 = 3, ///< Voltage monitoring 2 interrupt + BSP_GRP_IRQ_VBATT = 4, ///< VBATT monitor interrupt + BSP_GRP_IRQ_OSC_STOP_DETECT = 6, ///< Oscillation stop is detected + BSP_GRP_IRQ_NMI_PIN = 7, ///< NMI Pin interrupt + BSP_GRP_IRQ_RAM_PARITY = 8, ///< RAM Parity Error + BSP_GRP_IRQ_RAM_ECC = 9, ///< RAM ECC Error + BSP_GRP_IRQ_MPU_BUS_SLAVE = 10, ///< MPU Bus Slave Error + BSP_GRP_IRQ_MPU_BUS_MASTER = 11, ///< MPU Bus Master Error + BSP_GRP_IRQ_MPU_STACK = 12, ///< MPU Stack Error + BSP_GRP_IRQ_TRUSTZONE = 13, ///< MPU Stack Error + BSP_GRP_IRQ_CACHE_PARITY = 15, ///< MPU Stack Error +} bsp_grp_irq_t; + +#endif + +/* Callback type. */ +typedef void (* bsp_grp_irq_cb_t)(bsp_grp_irq_t irq); + +/** @} (end addtogroup BSP_MCU) */ + +/*********************************************************************************************************************** + * Exported global variables + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Exported global functions (to be accessed by other files) + **********************************************************************************************************************/ + +/* Public functions defined in bsp.h */ +void bsp_group_interrupt_open(void); // Used internally by BSP + +/** Common macro for FSP header files. There is also a corresponding FSP_HEADER macro at the top of this file. */ +FSP_FOOTER + +#endif diff --git a/bsp/renesas/ra8m1-ek/ra/fsp/src/bsp/mcu/all/bsp_guard.c b/bsp/renesas/ra8m1-ek/ra/fsp/src/bsp/mcu/all/bsp_guard.c new file mode 100644 index 000000000000..3c3ca2dc4509 --- /dev/null +++ b/bsp/renesas/ra8m1-ek/ra/fsp/src/bsp/mcu/all/bsp_guard.c @@ -0,0 +1,55 @@ +/*********************************************************************************************************************** + * Copyright [2020-2023] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics America Inc. and may only be used with products + * of Renesas Electronics Corp. and its affiliates ("Renesas"). No other uses are authorized. Renesas products are + * sold pursuant to Renesas terms and conditions of sale. Purchasers are solely responsible for the selection and use + * of Renesas products and Renesas assumes no liability. No license, express or implied, to any intellectual property + * right is granted by Renesas. This software is protected under all applicable laws, including copyright laws. Renesas + * reserves the right to change or discontinue this software and/or this documentation. THE SOFTWARE AND DOCUMENTATION + * IS DELIVERED TO YOU "AS IS," AND RENESAS MAKES NO REPRESENTATIONS OR WARRANTIES, AND TO THE FULLEST EXTENT + * PERMISSIBLE UNDER APPLICABLE LAW, DISCLAIMS ALL WARRANTIES, WHETHER EXPLICITLY OR IMPLICITLY, INCLUDING WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT, WITH RESPECT TO THE SOFTWARE OR + * DOCUMENTATION. RENESAS SHALL HAVE NO LIABILITY ARISING OUT OF ANY SECURITY VULNERABILITY OR BREACH. TO THE MAXIMUM + * EXTENT PERMITTED BY LAW, IN NO EVENT WILL RENESAS BE LIABLE TO YOU IN CONNECTION WITH THE SOFTWARE OR DOCUMENTATION + * (OR ANY PERSON OR ENTITY CLAIMING RIGHTS DERIVED FROM YOU) FOR ANY LOSS, DAMAGES, OR CLAIMS WHATSOEVER, INCLUDING, + * WITHOUT LIMITATION, ANY DIRECT, CONSEQUENTIAL, SPECIAL, INDIRECT, PUNITIVE, OR INCIDENTAL DAMAGES; ANY LOST PROFITS, + * OTHER ECONOMIC DAMAGE, PROPERTY DAMAGE, OR PERSONAL INJURY; AND EVEN IF RENESAS HAS BEEN ADVISED OF THE POSSIBILITY + * OF SUCH LOSS, DAMAGES, CLAIMS OR COSTS. + **********************************************************************************************************************/ + +#include "bsp_guard.h" + +/* Only the secure project has nonsecure callable functions. */ +#if BSP_TZ_SECURE_BUILD + +/* If the CGG Security Attribution is configured to secure access only. */ + #if BSP_CFG_CLOCKS_SECURE == 1 + +/*******************************************************************************************************************//** + * Set the callback used by the secure project to notify the nonsecure project when the clock settings have changed. + * + * @retval FSP_SUCCESS Callback set. + * @retval FSP_ERR_ASSERTION An input parameter is invalid. + **********************************************************************************************************************/ +BSP_CMSE_NONSECURE_ENTRY fsp_err_t R_BSP_ClockUpdateCallbackSet (bsp_clock_update_callback_t p_callback, + bsp_clock_update_callback_args_t * p_callback_memory) +{ + bsp_clock_update_callback_t p_callback_checked = + (bsp_clock_update_callback_t) cmse_check_address_range((void *) p_callback, sizeof(void *), CMSE_AU_NONSECURE); + + bsp_clock_update_callback_args_t * p_callback_memory_checked = + (bsp_clock_update_callback_args_t *) cmse_check_address_range(p_callback_memory, + sizeof(bsp_clock_update_callback_args_t), + CMSE_AU_NONSECURE); + FSP_ASSERT(p_callback == p_callback_checked); + FSP_ASSERT(p_callback_memory == p_callback_memory_checked); + + r_bsp_clock_update_callback_set(p_callback_checked, p_callback_memory_checked); + + return FSP_SUCCESS; +} + + #endif + +#endif diff --git a/bsp/renesas/ra8m1-ek/ra/fsp/src/bsp/mcu/all/bsp_guard.h b/bsp/renesas/ra8m1-ek/ra/fsp/src/bsp/mcu/all/bsp_guard.h new file mode 100644 index 000000000000..ae5bb696e092 --- /dev/null +++ b/bsp/renesas/ra8m1-ek/ra/fsp/src/bsp/mcu/all/bsp_guard.h @@ -0,0 +1,46 @@ +/*********************************************************************************************************************** + * Copyright [2020-2023] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics America Inc. and may only be used with products + * of Renesas Electronics Corp. and its affiliates ("Renesas"). No other uses are authorized. Renesas products are + * sold pursuant to Renesas terms and conditions of sale. Purchasers are solely responsible for the selection and use + * of Renesas products and Renesas assumes no liability. No license, express or implied, to any intellectual property + * right is granted by Renesas. This software is protected under all applicable laws, including copyright laws. Renesas + * reserves the right to change or discontinue this software and/or this documentation. THE SOFTWARE AND DOCUMENTATION + * IS DELIVERED TO YOU "AS IS," AND RENESAS MAKES NO REPRESENTATIONS OR WARRANTIES, AND TO THE FULLEST EXTENT + * PERMISSIBLE UNDER APPLICABLE LAW, DISCLAIMS ALL WARRANTIES, WHETHER EXPLICITLY OR IMPLICITLY, INCLUDING WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT, WITH RESPECT TO THE SOFTWARE OR + * DOCUMENTATION. RENESAS SHALL HAVE NO LIABILITY ARISING OUT OF ANY SECURITY VULNERABILITY OR BREACH. TO THE MAXIMUM + * EXTENT PERMITTED BY LAW, IN NO EVENT WILL RENESAS BE LIABLE TO YOU IN CONNECTION WITH THE SOFTWARE OR DOCUMENTATION + * (OR ANY PERSON OR ENTITY CLAIMING RIGHTS DERIVED FROM YOU) FOR ANY LOSS, DAMAGES, OR CLAIMS WHATSOEVER, INCLUDING, + * WITHOUT LIMITATION, ANY DIRECT, CONSEQUENTIAL, SPECIAL, INDIRECT, PUNITIVE, OR INCIDENTAL DAMAGES; ANY LOST PROFITS, + * OTHER ECONOMIC DAMAGE, PROPERTY DAMAGE, OR PERSONAL INJURY; AND EVEN IF RENESAS HAS BEEN ADVISED OF THE POSSIBILITY + * OF SUCH LOSS, DAMAGES, CLAIMS OR COSTS. + **********************************************************************************************************************/ + +#ifndef BSP_GUARD_H +#define BSP_GUARD_H + +#include "bsp_api.h" + +/*******************************************************************************************************************//** + * @addtogroup BSP_MCU + * + * @{ + **********************************************************************************************************************/ + +/** Common macro for FSP header files. There is also a corresponding FSP_FOOTER macro at the end of this file. */ +FSP_HEADER + +#if BSP_TZ_SECURE_BUILD || BSP_TZ_NONSECURE_BUILD +BSP_CMSE_NONSECURE_ENTRY fsp_err_t R_BSP_ClockUpdateCallbackSet(bsp_clock_update_callback_t p_callback, + bsp_clock_update_callback_args_t * p_callback_memory); + +#endif + +/** @} (end addtogroup BSP_MCU) */ + +/** Common macro for FSP header files. There is also a corresponding FSP_HEADER macro at the top of this file. */ +FSP_FOOTER + +#endif diff --git a/bsp/renesas/ra8m1-ek/ra/fsp/src/bsp/mcu/all/bsp_io.c b/bsp/renesas/ra8m1-ek/ra/fsp/src/bsp/mcu/all/bsp_io.c new file mode 100644 index 000000000000..130761000ad3 --- /dev/null +++ b/bsp/renesas/ra8m1-ek/ra/fsp/src/bsp/mcu/all/bsp_io.c @@ -0,0 +1,41 @@ +/*********************************************************************************************************************** + * Copyright [2020-2023] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics America Inc. and may only be used with products + * of Renesas Electronics Corp. and its affiliates ("Renesas"). No other uses are authorized. Renesas products are + * sold pursuant to Renesas terms and conditions of sale. Purchasers are solely responsible for the selection and use + * of Renesas products and Renesas assumes no liability. No license, express or implied, to any intellectual property + * right is granted by Renesas. This software is protected under all applicable laws, including copyright laws. Renesas + * reserves the right to change or discontinue this software and/or this documentation. THE SOFTWARE AND DOCUMENTATION + * IS DELIVERED TO YOU "AS IS," AND RENESAS MAKES NO REPRESENTATIONS OR WARRANTIES, AND TO THE FULLEST EXTENT + * PERMISSIBLE UNDER APPLICABLE LAW, DISCLAIMS ALL WARRANTIES, WHETHER EXPLICITLY OR IMPLICITLY, INCLUDING WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT, WITH RESPECT TO THE SOFTWARE OR + * DOCUMENTATION. RENESAS SHALL HAVE NO LIABILITY ARISING OUT OF ANY SECURITY VULNERABILITY OR BREACH. TO THE MAXIMUM + * EXTENT PERMITTED BY LAW, IN NO EVENT WILL RENESAS BE LIABLE TO YOU IN CONNECTION WITH THE SOFTWARE OR DOCUMENTATION + * (OR ANY PERSON OR ENTITY CLAIMING RIGHTS DERIVED FROM YOU) FOR ANY LOSS, DAMAGES, OR CLAIMS WHATSOEVER, INCLUDING, + * WITHOUT LIMITATION, ANY DIRECT, CONSEQUENTIAL, SPECIAL, INDIRECT, PUNITIVE, OR INCIDENTAL DAMAGES; ANY LOST PROFITS, + * OTHER ECONOMIC DAMAGE, PROPERTY DAMAGE, OR PERSONAL INJURY; AND EVEN IF RENESAS HAS BEEN ADVISED OF THE POSSIBILITY + * OF SUCH LOSS, DAMAGES, CLAIMS OR COSTS. + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Includes , "Project Includes" + **********************************************************************************************************************/ +#include "bsp_api.h" + +/*********************************************************************************************************************** + * Macro definitions + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Typedef definitions + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Exported global variables (to be accessed by other files) + **********************************************************************************************************************/ +volatile uint32_t g_protect_pfswe_counter BSP_SECTION_EARLY_INIT; + +/*********************************************************************************************************************** + * Private global variables and functions + **********************************************************************************************************************/ diff --git a/bsp/renesas/ra8m1-ek/ra/fsp/src/bsp/mcu/all/bsp_io.h b/bsp/renesas/ra8m1-ek/ra/fsp/src/bsp/mcu/all/bsp_io.h new file mode 100644 index 000000000000..db50c6f88a67 --- /dev/null +++ b/bsp/renesas/ra8m1-ek/ra/fsp/src/bsp/mcu/all/bsp_io.h @@ -0,0 +1,470 @@ +/*********************************************************************************************************************** + * Copyright [2020-2023] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics America Inc. and may only be used with products + * of Renesas Electronics Corp. and its affiliates ("Renesas"). No other uses are authorized. Renesas products are + * sold pursuant to Renesas terms and conditions of sale. Purchasers are solely responsible for the selection and use + * of Renesas products and Renesas assumes no liability. No license, express or implied, to any intellectual property + * right is granted by Renesas. This software is protected under all applicable laws, including copyright laws. Renesas + * reserves the right to change or discontinue this software and/or this documentation. THE SOFTWARE AND DOCUMENTATION + * IS DELIVERED TO YOU "AS IS," AND RENESAS MAKES NO REPRESENTATIONS OR WARRANTIES, AND TO THE FULLEST EXTENT + * PERMISSIBLE UNDER APPLICABLE LAW, DISCLAIMS ALL WARRANTIES, WHETHER EXPLICITLY OR IMPLICITLY, INCLUDING WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT, WITH RESPECT TO THE SOFTWARE OR + * DOCUMENTATION. RENESAS SHALL HAVE NO LIABILITY ARISING OUT OF ANY SECURITY VULNERABILITY OR BREACH. TO THE MAXIMUM + * EXTENT PERMITTED BY LAW, IN NO EVENT WILL RENESAS BE LIABLE TO YOU IN CONNECTION WITH THE SOFTWARE OR DOCUMENTATION + * (OR ANY PERSON OR ENTITY CLAIMING RIGHTS DERIVED FROM YOU) FOR ANY LOSS, DAMAGES, OR CLAIMS WHATSOEVER, INCLUDING, + * WITHOUT LIMITATION, ANY DIRECT, CONSEQUENTIAL, SPECIAL, INDIRECT, PUNITIVE, OR INCIDENTAL DAMAGES; ANY LOST PROFITS, + * OTHER ECONOMIC DAMAGE, PROPERTY DAMAGE, OR PERSONAL INJURY; AND EVEN IF RENESAS HAS BEEN ADVISED OF THE POSSIBILITY + * OF SUCH LOSS, DAMAGES, CLAIMS OR COSTS. + **********************************************************************************************************************/ + +/*******************************************************************************************************************//** + * @defgroup BSP_IO BSP I/O access + * @ingroup RENESAS_COMMON + * @brief This module provides basic read/write access to port pins. + * + * @{ + **********************************************************************************************************************/ + +#ifndef BSP_IO_H +#define BSP_IO_H + +/* Common macro for FSP header files. There is also a corresponding FSP_FOOTER macro at the end of this file. */ +FSP_HEADER + +/*********************************************************************************************************************** + * Macro definitions + **********************************************************************************************************************/ + +/* Private definition to set enumeration values. */ +#define BSP_IO_PRV_PFS_PSEL_OFFSET (24) +#define BSP_IO_PRV_8BIT_MASK (0xFF) +#define BSP_IO_PWPR_B0WI_OFFSET (7U) +#define BSP_IO_PWPR_PFSWE_OFFSET (6U) +#define BSP_IO_PFS_PDR_OUTPUT (4U) +#define BSP_IO_PRV_PIN_WRITE_MASK (0xFFFE3FFE) + +/*********************************************************************************************************************** + * Typedef definitions + **********************************************************************************************************************/ + +/** Levels that can be set and read for individual pins */ +typedef enum e_bsp_io_level +{ + BSP_IO_LEVEL_LOW = 0, ///< Low + BSP_IO_LEVEL_HIGH ///< High +} bsp_io_level_t; + +/** Direction of individual pins */ +typedef enum e_bsp_io_dir +{ + BSP_IO_DIRECTION_INPUT = 0, ///< Input + BSP_IO_DIRECTION_OUTPUT ///< Output +} bsp_io_direction_t; + +/** Superset list of all possible IO ports. */ +typedef enum e_bsp_io_port +{ + BSP_IO_PORT_00 = 0x0000, ///< IO port 0 + BSP_IO_PORT_01 = 0x0100, ///< IO port 1 + BSP_IO_PORT_02 = 0x0200, ///< IO port 2 + BSP_IO_PORT_03 = 0x0300, ///< IO port 3 + BSP_IO_PORT_04 = 0x0400, ///< IO port 4 + BSP_IO_PORT_05 = 0x0500, ///< IO port 5 + BSP_IO_PORT_06 = 0x0600, ///< IO port 6 + BSP_IO_PORT_07 = 0x0700, ///< IO port 7 + BSP_IO_PORT_08 = 0x0800, ///< IO port 8 + BSP_IO_PORT_09 = 0x0900, ///< IO port 9 + BSP_IO_PORT_10 = 0x0A00, ///< IO port 10 + BSP_IO_PORT_11 = 0x0B00, ///< IO port 11 + BSP_IO_PORT_12 = 0x0C00, ///< IO port 12 + BSP_IO_PORT_13 = 0x0D00, ///< IO port 13 + BSP_IO_PORT_14 = 0x0E00, ///< IO port 14 +} bsp_io_port_t; + +/** Superset list of all possible IO port pins. */ +typedef enum e_bsp_io_port_pin_t +{ + BSP_IO_PORT_00_PIN_00 = 0x0000, ///< IO port 0 pin 0 + BSP_IO_PORT_00_PIN_01 = 0x0001, ///< IO port 0 pin 1 + BSP_IO_PORT_00_PIN_02 = 0x0002, ///< IO port 0 pin 2 + BSP_IO_PORT_00_PIN_03 = 0x0003, ///< IO port 0 pin 3 + BSP_IO_PORT_00_PIN_04 = 0x0004, ///< IO port 0 pin 4 + BSP_IO_PORT_00_PIN_05 = 0x0005, ///< IO port 0 pin 5 + BSP_IO_PORT_00_PIN_06 = 0x0006, ///< IO port 0 pin 6 + BSP_IO_PORT_00_PIN_07 = 0x0007, ///< IO port 0 pin 7 + BSP_IO_PORT_00_PIN_08 = 0x0008, ///< IO port 0 pin 8 + BSP_IO_PORT_00_PIN_09 = 0x0009, ///< IO port 0 pin 9 + BSP_IO_PORT_00_PIN_10 = 0x000A, ///< IO port 0 pin 10 + BSP_IO_PORT_00_PIN_11 = 0x000B, ///< IO port 0 pin 11 + BSP_IO_PORT_00_PIN_12 = 0x000C, ///< IO port 0 pin 12 + BSP_IO_PORT_00_PIN_13 = 0x000D, ///< IO port 0 pin 13 + BSP_IO_PORT_00_PIN_14 = 0x000E, ///< IO port 0 pin 14 + BSP_IO_PORT_00_PIN_15 = 0x000F, ///< IO port 0 pin 15 + + BSP_IO_PORT_01_PIN_00 = 0x0100, ///< IO port 1 pin 0 + BSP_IO_PORT_01_PIN_01 = 0x0101, ///< IO port 1 pin 1 + BSP_IO_PORT_01_PIN_02 = 0x0102, ///< IO port 1 pin 2 + BSP_IO_PORT_01_PIN_03 = 0x0103, ///< IO port 1 pin 3 + BSP_IO_PORT_01_PIN_04 = 0x0104, ///< IO port 1 pin 4 + BSP_IO_PORT_01_PIN_05 = 0x0105, ///< IO port 1 pin 5 + BSP_IO_PORT_01_PIN_06 = 0x0106, ///< IO port 1 pin 6 + BSP_IO_PORT_01_PIN_07 = 0x0107, ///< IO port 1 pin 7 + BSP_IO_PORT_01_PIN_08 = 0x0108, ///< IO port 1 pin 8 + BSP_IO_PORT_01_PIN_09 = 0x0109, ///< IO port 1 pin 9 + BSP_IO_PORT_01_PIN_10 = 0x010A, ///< IO port 1 pin 10 + BSP_IO_PORT_01_PIN_11 = 0x010B, ///< IO port 1 pin 11 + BSP_IO_PORT_01_PIN_12 = 0x010C, ///< IO port 1 pin 12 + BSP_IO_PORT_01_PIN_13 = 0x010D, ///< IO port 1 pin 13 + BSP_IO_PORT_01_PIN_14 = 0x010E, ///< IO port 1 pin 14 + BSP_IO_PORT_01_PIN_15 = 0x010F, ///< IO port 1 pin 15 + + BSP_IO_PORT_02_PIN_00 = 0x0200, ///< IO port 2 pin 0 + BSP_IO_PORT_02_PIN_01 = 0x0201, ///< IO port 2 pin 1 + BSP_IO_PORT_02_PIN_02 = 0x0202, ///< IO port 2 pin 2 + BSP_IO_PORT_02_PIN_03 = 0x0203, ///< IO port 2 pin 3 + BSP_IO_PORT_02_PIN_04 = 0x0204, ///< IO port 2 pin 4 + BSP_IO_PORT_02_PIN_05 = 0x0205, ///< IO port 2 pin 5 + BSP_IO_PORT_02_PIN_06 = 0x0206, ///< IO port 2 pin 6 + BSP_IO_PORT_02_PIN_07 = 0x0207, ///< IO port 2 pin 7 + BSP_IO_PORT_02_PIN_08 = 0x0208, ///< IO port 2 pin 8 + BSP_IO_PORT_02_PIN_09 = 0x0209, ///< IO port 2 pin 9 + BSP_IO_PORT_02_PIN_10 = 0x020A, ///< IO port 2 pin 10 + BSP_IO_PORT_02_PIN_11 = 0x020B, ///< IO port 2 pin 11 + BSP_IO_PORT_02_PIN_12 = 0x020C, ///< IO port 2 pin 12 + BSP_IO_PORT_02_PIN_13 = 0x020D, ///< IO port 2 pin 13 + BSP_IO_PORT_02_PIN_14 = 0x020E, ///< IO port 2 pin 14 + BSP_IO_PORT_02_PIN_15 = 0x020F, ///< IO port 2 pin 15 + + BSP_IO_PORT_03_PIN_00 = 0x0300, ///< IO port 3 pin 0 + BSP_IO_PORT_03_PIN_01 = 0x0301, ///< IO port 3 pin 1 + BSP_IO_PORT_03_PIN_02 = 0x0302, ///< IO port 3 pin 2 + BSP_IO_PORT_03_PIN_03 = 0x0303, ///< IO port 3 pin 3 + BSP_IO_PORT_03_PIN_04 = 0x0304, ///< IO port 3 pin 4 + BSP_IO_PORT_03_PIN_05 = 0x0305, ///< IO port 3 pin 5 + BSP_IO_PORT_03_PIN_06 = 0x0306, ///< IO port 3 pin 6 + BSP_IO_PORT_03_PIN_07 = 0x0307, ///< IO port 3 pin 7 + BSP_IO_PORT_03_PIN_08 = 0x0308, ///< IO port 3 pin 8 + BSP_IO_PORT_03_PIN_09 = 0x0309, ///< IO port 3 pin 9 + BSP_IO_PORT_03_PIN_10 = 0x030A, ///< IO port 3 pin 10 + BSP_IO_PORT_03_PIN_11 = 0x030B, ///< IO port 3 pin 11 + BSP_IO_PORT_03_PIN_12 = 0x030C, ///< IO port 3 pin 12 + BSP_IO_PORT_03_PIN_13 = 0x030D, ///< IO port 3 pin 13 + BSP_IO_PORT_03_PIN_14 = 0x030E, ///< IO port 3 pin 14 + BSP_IO_PORT_03_PIN_15 = 0x030F, ///< IO port 3 pin 15 + + BSP_IO_PORT_04_PIN_00 = 0x0400, ///< IO port 4 pin 0 + BSP_IO_PORT_04_PIN_01 = 0x0401, ///< IO port 4 pin 1 + BSP_IO_PORT_04_PIN_02 = 0x0402, ///< IO port 4 pin 2 + BSP_IO_PORT_04_PIN_03 = 0x0403, ///< IO port 4 pin 3 + BSP_IO_PORT_04_PIN_04 = 0x0404, ///< IO port 4 pin 4 + BSP_IO_PORT_04_PIN_05 = 0x0405, ///< IO port 4 pin 5 + BSP_IO_PORT_04_PIN_06 = 0x0406, ///< IO port 4 pin 6 + BSP_IO_PORT_04_PIN_07 = 0x0407, ///< IO port 4 pin 7 + BSP_IO_PORT_04_PIN_08 = 0x0408, ///< IO port 4 pin 8 + BSP_IO_PORT_04_PIN_09 = 0x0409, ///< IO port 4 pin 9 + BSP_IO_PORT_04_PIN_10 = 0x040A, ///< IO port 4 pin 10 + BSP_IO_PORT_04_PIN_11 = 0x040B, ///< IO port 4 pin 11 + BSP_IO_PORT_04_PIN_12 = 0x040C, ///< IO port 4 pin 12 + BSP_IO_PORT_04_PIN_13 = 0x040D, ///< IO port 4 pin 13 + BSP_IO_PORT_04_PIN_14 = 0x040E, ///< IO port 4 pin 14 + BSP_IO_PORT_04_PIN_15 = 0x040F, ///< IO port 4 pin 15 + + BSP_IO_PORT_05_PIN_00 = 0x0500, ///< IO port 5 pin 0 + BSP_IO_PORT_05_PIN_01 = 0x0501, ///< IO port 5 pin 1 + BSP_IO_PORT_05_PIN_02 = 0x0502, ///< IO port 5 pin 2 + BSP_IO_PORT_05_PIN_03 = 0x0503, ///< IO port 5 pin 3 + BSP_IO_PORT_05_PIN_04 = 0x0504, ///< IO port 5 pin 4 + BSP_IO_PORT_05_PIN_05 = 0x0505, ///< IO port 5 pin 5 + BSP_IO_PORT_05_PIN_06 = 0x0506, ///< IO port 5 pin 6 + BSP_IO_PORT_05_PIN_07 = 0x0507, ///< IO port 5 pin 7 + BSP_IO_PORT_05_PIN_08 = 0x0508, ///< IO port 5 pin 8 + BSP_IO_PORT_05_PIN_09 = 0x0509, ///< IO port 5 pin 9 + BSP_IO_PORT_05_PIN_10 = 0x050A, ///< IO port 5 pin 10 + BSP_IO_PORT_05_PIN_11 = 0x050B, ///< IO port 5 pin 11 + BSP_IO_PORT_05_PIN_12 = 0x050C, ///< IO port 5 pin 12 + BSP_IO_PORT_05_PIN_13 = 0x050D, ///< IO port 5 pin 13 + BSP_IO_PORT_05_PIN_14 = 0x050E, ///< IO port 5 pin 14 + BSP_IO_PORT_05_PIN_15 = 0x050F, ///< IO port 5 pin 15 + + BSP_IO_PORT_06_PIN_00 = 0x0600, ///< IO port 6 pin 0 + BSP_IO_PORT_06_PIN_01 = 0x0601, ///< IO port 6 pin 1 + BSP_IO_PORT_06_PIN_02 = 0x0602, ///< IO port 6 pin 2 + BSP_IO_PORT_06_PIN_03 = 0x0603, ///< IO port 6 pin 3 + BSP_IO_PORT_06_PIN_04 = 0x0604, ///< IO port 6 pin 4 + BSP_IO_PORT_06_PIN_05 = 0x0605, ///< IO port 6 pin 5 + BSP_IO_PORT_06_PIN_06 = 0x0606, ///< IO port 6 pin 6 + BSP_IO_PORT_06_PIN_07 = 0x0607, ///< IO port 6 pin 7 + BSP_IO_PORT_06_PIN_08 = 0x0608, ///< IO port 6 pin 8 + BSP_IO_PORT_06_PIN_09 = 0x0609, ///< IO port 6 pin 9 + BSP_IO_PORT_06_PIN_10 = 0x060A, ///< IO port 6 pin 10 + BSP_IO_PORT_06_PIN_11 = 0x060B, ///< IO port 6 pin 11 + BSP_IO_PORT_06_PIN_12 = 0x060C, ///< IO port 6 pin 12 + BSP_IO_PORT_06_PIN_13 = 0x060D, ///< IO port 6 pin 13 + BSP_IO_PORT_06_PIN_14 = 0x060E, ///< IO port 6 pin 14 + BSP_IO_PORT_06_PIN_15 = 0x060F, ///< IO port 6 pin 15 + + BSP_IO_PORT_07_PIN_00 = 0x0700, ///< IO port 7 pin 0 + BSP_IO_PORT_07_PIN_01 = 0x0701, ///< IO port 7 pin 1 + BSP_IO_PORT_07_PIN_02 = 0x0702, ///< IO port 7 pin 2 + BSP_IO_PORT_07_PIN_03 = 0x0703, ///< IO port 7 pin 3 + BSP_IO_PORT_07_PIN_04 = 0x0704, ///< IO port 7 pin 4 + BSP_IO_PORT_07_PIN_05 = 0x0705, ///< IO port 7 pin 5 + BSP_IO_PORT_07_PIN_06 = 0x0706, ///< IO port 7 pin 6 + BSP_IO_PORT_07_PIN_07 = 0x0707, ///< IO port 7 pin 7 + BSP_IO_PORT_07_PIN_08 = 0x0708, ///< IO port 7 pin 8 + BSP_IO_PORT_07_PIN_09 = 0x0709, ///< IO port 7 pin 9 + BSP_IO_PORT_07_PIN_10 = 0x070A, ///< IO port 7 pin 10 + BSP_IO_PORT_07_PIN_11 = 0x070B, ///< IO port 7 pin 11 + BSP_IO_PORT_07_PIN_12 = 0x070C, ///< IO port 7 pin 12 + BSP_IO_PORT_07_PIN_13 = 0x070D, ///< IO port 7 pin 13 + BSP_IO_PORT_07_PIN_14 = 0x070E, ///< IO port 7 pin 14 + BSP_IO_PORT_07_PIN_15 = 0x070F, ///< IO port 7 pin 15 + + BSP_IO_PORT_08_PIN_00 = 0x0800, ///< IO port 8 pin 0 + BSP_IO_PORT_08_PIN_01 = 0x0801, ///< IO port 8 pin 1 + BSP_IO_PORT_08_PIN_02 = 0x0802, ///< IO port 8 pin 2 + BSP_IO_PORT_08_PIN_03 = 0x0803, ///< IO port 8 pin 3 + BSP_IO_PORT_08_PIN_04 = 0x0804, ///< IO port 8 pin 4 + BSP_IO_PORT_08_PIN_05 = 0x0805, ///< IO port 8 pin 5 + BSP_IO_PORT_08_PIN_06 = 0x0806, ///< IO port 8 pin 6 + BSP_IO_PORT_08_PIN_07 = 0x0807, ///< IO port 8 pin 7 + BSP_IO_PORT_08_PIN_08 = 0x0808, ///< IO port 8 pin 8 + BSP_IO_PORT_08_PIN_09 = 0x0809, ///< IO port 8 pin 9 + BSP_IO_PORT_08_PIN_10 = 0x080A, ///< IO port 8 pin 10 + BSP_IO_PORT_08_PIN_11 = 0x080B, ///< IO port 8 pin 11 + BSP_IO_PORT_08_PIN_12 = 0x080C, ///< IO port 8 pin 12 + BSP_IO_PORT_08_PIN_13 = 0x080D, ///< IO port 8 pin 13 + BSP_IO_PORT_08_PIN_14 = 0x080E, ///< IO port 8 pin 14 + BSP_IO_PORT_08_PIN_15 = 0x080F, ///< IO port 8 pin 15 + + BSP_IO_PORT_09_PIN_00 = 0x0900, ///< IO port 9 pin 0 + BSP_IO_PORT_09_PIN_01 = 0x0901, ///< IO port 9 pin 1 + BSP_IO_PORT_09_PIN_02 = 0x0902, ///< IO port 9 pin 2 + BSP_IO_PORT_09_PIN_03 = 0x0903, ///< IO port 9 pin 3 + BSP_IO_PORT_09_PIN_04 = 0x0904, ///< IO port 9 pin 4 + BSP_IO_PORT_09_PIN_05 = 0x0905, ///< IO port 9 pin 5 + BSP_IO_PORT_09_PIN_06 = 0x0906, ///< IO port 9 pin 6 + BSP_IO_PORT_09_PIN_07 = 0x0907, ///< IO port 9 pin 7 + BSP_IO_PORT_09_PIN_08 = 0x0908, ///< IO port 9 pin 8 + BSP_IO_PORT_09_PIN_09 = 0x0909, ///< IO port 9 pin 9 + BSP_IO_PORT_09_PIN_10 = 0x090A, ///< IO port 9 pin 10 + BSP_IO_PORT_09_PIN_11 = 0x090B, ///< IO port 9 pin 11 + BSP_IO_PORT_09_PIN_12 = 0x090C, ///< IO port 9 pin 12 + BSP_IO_PORT_09_PIN_13 = 0x090D, ///< IO port 9 pin 13 + BSP_IO_PORT_09_PIN_14 = 0x090E, ///< IO port 9 pin 14 + BSP_IO_PORT_09_PIN_15 = 0x090F, ///< IO port 9 pin 15 + + BSP_IO_PORT_10_PIN_00 = 0x0A00, ///< IO port 10 pin 0 + BSP_IO_PORT_10_PIN_01 = 0x0A01, ///< IO port 10 pin 1 + BSP_IO_PORT_10_PIN_02 = 0x0A02, ///< IO port 10 pin 2 + BSP_IO_PORT_10_PIN_03 = 0x0A03, ///< IO port 10 pin 3 + BSP_IO_PORT_10_PIN_04 = 0x0A04, ///< IO port 10 pin 4 + BSP_IO_PORT_10_PIN_05 = 0x0A05, ///< IO port 10 pin 5 + BSP_IO_PORT_10_PIN_06 = 0x0A06, ///< IO port 10 pin 6 + BSP_IO_PORT_10_PIN_07 = 0x0A07, ///< IO port 10 pin 7 + BSP_IO_PORT_10_PIN_08 = 0x0A08, ///< IO port 10 pin 8 + BSP_IO_PORT_10_PIN_09 = 0x0A09, ///< IO port 10 pin 9 + BSP_IO_PORT_10_PIN_10 = 0x0A0A, ///< IO port 10 pin 10 + BSP_IO_PORT_10_PIN_11 = 0x0A0B, ///< IO port 10 pin 11 + BSP_IO_PORT_10_PIN_12 = 0x0A0C, ///< IO port 10 pin 12 + BSP_IO_PORT_10_PIN_13 = 0x0A0D, ///< IO port 10 pin 13 + BSP_IO_PORT_10_PIN_14 = 0x0A0E, ///< IO port 10 pin 14 + BSP_IO_PORT_10_PIN_15 = 0x0A0F, ///< IO port 10 pin 15 + + BSP_IO_PORT_11_PIN_00 = 0x0B00, ///< IO port 11 pin 0 + BSP_IO_PORT_11_PIN_01 = 0x0B01, ///< IO port 11 pin 1 + BSP_IO_PORT_11_PIN_02 = 0x0B02, ///< IO port 11 pin 2 + BSP_IO_PORT_11_PIN_03 = 0x0B03, ///< IO port 11 pin 3 + BSP_IO_PORT_11_PIN_04 = 0x0B04, ///< IO port 11 pin 4 + BSP_IO_PORT_11_PIN_05 = 0x0B05, ///< IO port 11 pin 5 + BSP_IO_PORT_11_PIN_06 = 0x0B06, ///< IO port 11 pin 6 + BSP_IO_PORT_11_PIN_07 = 0x0B07, ///< IO port 11 pin 7 + BSP_IO_PORT_11_PIN_08 = 0x0B08, ///< IO port 11 pin 8 + BSP_IO_PORT_11_PIN_09 = 0x0B09, ///< IO port 11 pin 9 + BSP_IO_PORT_11_PIN_10 = 0x0B0A, ///< IO port 11 pin 10 + BSP_IO_PORT_11_PIN_11 = 0x0B0B, ///< IO port 11 pin 11 + BSP_IO_PORT_11_PIN_12 = 0x0B0C, ///< IO port 11 pin 12 + BSP_IO_PORT_11_PIN_13 = 0x0B0D, ///< IO port 11 pin 13 + BSP_IO_PORT_11_PIN_14 = 0x0B0E, ///< IO port 11 pin 14 + BSP_IO_PORT_11_PIN_15 = 0x0B0F, ///< IO port 11 pin 15 + + BSP_IO_PORT_12_PIN_00 = 0x0C00, ///< IO port 12 pin 0 + BSP_IO_PORT_12_PIN_01 = 0x0C01, ///< IO port 12 pin 1 + BSP_IO_PORT_12_PIN_02 = 0x0C02, ///< IO port 12 pin 2 + BSP_IO_PORT_12_PIN_03 = 0x0C03, ///< IO port 12 pin 3 + BSP_IO_PORT_12_PIN_04 = 0x0C04, ///< IO port 12 pin 4 + BSP_IO_PORT_12_PIN_05 = 0x0C05, ///< IO port 12 pin 5 + BSP_IO_PORT_12_PIN_06 = 0x0C06, ///< IO port 12 pin 6 + BSP_IO_PORT_12_PIN_07 = 0x0C07, ///< IO port 12 pin 7 + BSP_IO_PORT_12_PIN_08 = 0x0C08, ///< IO port 12 pin 8 + BSP_IO_PORT_12_PIN_09 = 0x0C09, ///< IO port 12 pin 9 + BSP_IO_PORT_12_PIN_10 = 0x0C0A, ///< IO port 12 pin 10 + BSP_IO_PORT_12_PIN_11 = 0x0C0B, ///< IO port 12 pin 11 + BSP_IO_PORT_12_PIN_12 = 0x0C0C, ///< IO port 12 pin 12 + BSP_IO_PORT_12_PIN_13 = 0x0C0D, ///< IO port 12 pin 13 + BSP_IO_PORT_12_PIN_14 = 0x0C0E, ///< IO port 12 pin 14 + BSP_IO_PORT_12_PIN_15 = 0x0C0F, ///< IO port 12 pin 15 + + BSP_IO_PORT_13_PIN_00 = 0x0D00, ///< IO port 13 pin 0 + BSP_IO_PORT_13_PIN_01 = 0x0D01, ///< IO port 13 pin 1 + BSP_IO_PORT_13_PIN_02 = 0x0D02, ///< IO port 13 pin 2 + BSP_IO_PORT_13_PIN_03 = 0x0D03, ///< IO port 13 pin 3 + BSP_IO_PORT_13_PIN_04 = 0x0D04, ///< IO port 13 pin 4 + BSP_IO_PORT_13_PIN_05 = 0x0D05, ///< IO port 13 pin 5 + BSP_IO_PORT_13_PIN_06 = 0x0D06, ///< IO port 13 pin 6 + BSP_IO_PORT_13_PIN_07 = 0x0D07, ///< IO port 13 pin 7 + BSP_IO_PORT_13_PIN_08 = 0x0D08, ///< IO port 13 pin 8 + BSP_IO_PORT_13_PIN_09 = 0x0D09, ///< IO port 13 pin 9 + BSP_IO_PORT_13_PIN_10 = 0x0D0A, ///< IO port 13 pin 10 + BSP_IO_PORT_13_PIN_11 = 0x0D0B, ///< IO port 13 pin 11 + BSP_IO_PORT_13_PIN_12 = 0x0D0C, ///< IO port 13 pin 12 + BSP_IO_PORT_13_PIN_13 = 0x0D0D, ///< IO port 13 pin 13 + BSP_IO_PORT_13_PIN_14 = 0x0D0E, ///< IO port 13 pin 14 + BSP_IO_PORT_13_PIN_15 = 0x0D0F, ///< IO port 13 pin 15 + + BSP_IO_PORT_14_PIN_00 = 0x0E00, ///< IO port 14 pin 0 + BSP_IO_PORT_14_PIN_01 = 0x0E01, ///< IO port 14 pin 1 + BSP_IO_PORT_14_PIN_02 = 0x0E02, ///< IO port 14 pin 2 + BSP_IO_PORT_14_PIN_03 = 0x0E03, ///< IO port 14 pin 3 + BSP_IO_PORT_14_PIN_04 = 0x0E04, ///< IO port 14 pin 4 + BSP_IO_PORT_14_PIN_05 = 0x0E05, ///< IO port 14 pin 5 + BSP_IO_PORT_14_PIN_06 = 0x0E06, ///< IO port 14 pin 6 + BSP_IO_PORT_14_PIN_07 = 0x0E07, ///< IO port 14 pin 7 + BSP_IO_PORT_14_PIN_08 = 0x0E08, ///< IO port 14 pin 8 + BSP_IO_PORT_14_PIN_09 = 0x0E09, ///< IO port 14 pin 9 + BSP_IO_PORT_14_PIN_10 = 0x0E0A, ///< IO port 14 pin 10 + BSP_IO_PORT_14_PIN_11 = 0x0E0B, ///< IO port 14 pin 11 + BSP_IO_PORT_14_PIN_12 = 0x0E0C, ///< IO port 14 pin 12 + BSP_IO_PORT_14_PIN_13 = 0x0E0D, ///< IO port 14 pin 13 + BSP_IO_PORT_14_PIN_14 = 0x0E0E, ///< IO port 14 pin 14 + BSP_IO_PORT_14_PIN_15 = 0x0E0F, ///< IO port 14 pin 15 +} bsp_io_port_pin_t; + +/*********************************************************************************************************************** + * Exported global variables + **********************************************************************************************************************/ +extern volatile uint32_t g_protect_pfswe_counter; + +/*********************************************************************************************************************** + * Exported global functions (to be accessed by other files) + **********************************************************************************************************************/ + +/*******************************************************************************************************************//** + * Read the current input level of the pin. + * + * @param[in] pin The pin + * + * @retval Current input level + **********************************************************************************************************************/ +__STATIC_INLINE uint32_t R_BSP_PinRead (bsp_io_port_pin_t pin) +{ + /* Read pin level. */ + return R_PFS->PORT[pin >> 8].PIN[pin & BSP_IO_PRV_8BIT_MASK].PmnPFS_b.PIDR; +} + +/*******************************************************************************************************************//** + * Set a pin to output and set the output level to the level provided. If PFS protection is enabled, disable PFS + * protection using R_BSP_PinAccessEnable() before calling this function. + * + * @param[in] pin The pin + * @param[in] level The level + **********************************************************************************************************************/ +__STATIC_INLINE void R_BSP_PinWrite (bsp_io_port_pin_t pin, bsp_io_level_t level) +{ + /* Clear PMR, ASEL, ISEL and PODR bits. */ + uint32_t pfs_bits = R_PFS->PORT[pin >> 8].PIN[pin & BSP_IO_PRV_8BIT_MASK].PmnPFS; + pfs_bits &= BSP_IO_PRV_PIN_WRITE_MASK; + + /* Set output level and pin direction to output. */ + uint32_t lvl = ((uint32_t) level | pfs_bits); + R_PFS->PORT[pin >> 8].PIN[pin & BSP_IO_PRV_8BIT_MASK].PmnPFS = (BSP_IO_PFS_PDR_OUTPUT | lvl); +} + +/*******************************************************************************************************************//** + * Configure a pin. If PFS protection is enabled, disable PFS protection using R_BSP_PinAccessEnable() before calling + * this function. + * + * @param[in] pin The pin + * @param[in] cfg Configuration for the pin (PmnPFS register setting) + **********************************************************************************************************************/ +__STATIC_INLINE void R_BSP_PinCfg (bsp_io_port_pin_t pin, uint32_t cfg) +{ + /* Configure a pin. */ + R_PFS->PORT[pin >> 8].PIN[pin & BSP_IO_PRV_8BIT_MASK].PmnPFS = cfg; +} + +/*******************************************************************************************************************//** + * Enable access to the PFS registers. Uses a reference counter to protect against interrupts that could occur + * via multiple threads or an ISR re-entering this code. + **********************************************************************************************************************/ +__STATIC_INLINE void R_BSP_PinAccessEnable (void) +{ +#if BSP_CFG_PFS_PROTECT + + /** Get the current state of interrupts */ + FSP_CRITICAL_SECTION_DEFINE; + FSP_CRITICAL_SECTION_ENTER; + + /** If this is first entry then allow writing of PFS. */ + if (0 == g_protect_pfswe_counter) + { + #if BSP_TZ_SECURE_BUILD || (BSP_FEATURE_TZ_VERSION == 2 && FSP_PRIV_TZ_USE_SECURE_REGS) + R_PMISC->PWPRS = 0; ///< Clear BOWI bit - writing to PFSWE bit enabled + R_PMISC->PWPRS = 1U << BSP_IO_PWPR_PFSWE_OFFSET; ///< Set PFSWE bit - writing to PFS register enabled + #else + R_PMISC->PWPR = 0; ///< Clear BOWI bit - writing to PFSWE bit enabled + R_PMISC->PWPR = 1U << BSP_IO_PWPR_PFSWE_OFFSET; ///< Set PFSWE bit - writing to PFS register enabled + #endif + } + + /** Increment the protect counter */ + g_protect_pfswe_counter++; + + /** Restore the interrupt state */ + FSP_CRITICAL_SECTION_EXIT; +#endif +} + +/*******************************************************************************************************************//** + * Disable access to the PFS registers. Uses a reference counter to protect against interrupts that could occur via + * multiple threads or an ISR re-entering this code. + **********************************************************************************************************************/ +__STATIC_INLINE void R_BSP_PinAccessDisable (void) +{ +#if BSP_CFG_PFS_PROTECT + + /** Get the current state of interrupts */ + FSP_CRITICAL_SECTION_DEFINE; + FSP_CRITICAL_SECTION_ENTER; + + /** Is it safe to disable PFS register? */ + if (0 != g_protect_pfswe_counter) + { + /* Decrement the protect counter */ + g_protect_pfswe_counter--; + } + + /** Is it safe to disable writing of PFS? */ + if (0 == g_protect_pfswe_counter) + { + #if BSP_TZ_SECURE_BUILD || (BSP_FEATURE_TZ_VERSION == 2 && FSP_PRIV_TZ_USE_SECURE_REGS) + R_PMISC->PWPRS = 0; ///< Clear PFSWE bit - writing to PFSWE bit enabled + R_PMISC->PWPRS = 1U << BSP_IO_PWPR_B0WI_OFFSET; ///< Set BOWI bit - writing to PFS register enabled + #else + R_PMISC->PWPR = 0; ///< Clear PFSWE bit - writing to PFS register disabled + R_PMISC->PWPR = 1U << BSP_IO_PWPR_B0WI_OFFSET; ///< Set BOWI bit - writing to PFSWE bit disabled + #endif + } + + /** Restore the interrupt state */ + FSP_CRITICAL_SECTION_EXIT; +#endif +} + +/** @} (end addtogroup BSP_IO) */ + +/* Common macro for FSP header files. There is also a corresponding FSP_HEADER macro at the top of this file. */ +FSP_FOOTER + +#endif diff --git a/bsp/renesas/ra8m1-ek/ra/fsp/src/bsp/mcu/all/bsp_irq.c b/bsp/renesas/ra8m1-ek/ra/fsp/src/bsp/mcu/all/bsp_irq.c new file mode 100644 index 000000000000..a45899fbadb5 --- /dev/null +++ b/bsp/renesas/ra8m1-ek/ra/fsp/src/bsp/mcu/all/bsp_irq.c @@ -0,0 +1,123 @@ +/*********************************************************************************************************************** + * Copyright [2020-2023] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics America Inc. and may only be used with products + * of Renesas Electronics Corp. and its affiliates ("Renesas"). No other uses are authorized. Renesas products are + * sold pursuant to Renesas terms and conditions of sale. Purchasers are solely responsible for the selection and use + * of Renesas products and Renesas assumes no liability. No license, express or implied, to any intellectual property + * right is granted by Renesas. This software is protected under all applicable laws, including copyright laws. Renesas + * reserves the right to change or discontinue this software and/or this documentation. THE SOFTWARE AND DOCUMENTATION + * IS DELIVERED TO YOU "AS IS," AND RENESAS MAKES NO REPRESENTATIONS OR WARRANTIES, AND TO THE FULLEST EXTENT + * PERMISSIBLE UNDER APPLICABLE LAW, DISCLAIMS ALL WARRANTIES, WHETHER EXPLICITLY OR IMPLICITLY, INCLUDING WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT, WITH RESPECT TO THE SOFTWARE OR + * DOCUMENTATION. RENESAS SHALL HAVE NO LIABILITY ARISING OUT OF ANY SECURITY VULNERABILITY OR BREACH. TO THE MAXIMUM + * EXTENT PERMITTED BY LAW, IN NO EVENT WILL RENESAS BE LIABLE TO YOU IN CONNECTION WITH THE SOFTWARE OR DOCUMENTATION + * (OR ANY PERSON OR ENTITY CLAIMING RIGHTS DERIVED FROM YOU) FOR ANY LOSS, DAMAGES, OR CLAIMS WHATSOEVER, INCLUDING, + * WITHOUT LIMITATION, ANY DIRECT, CONSEQUENTIAL, SPECIAL, INDIRECT, PUNITIVE, OR INCIDENTAL DAMAGES; ANY LOST PROFITS, + * OTHER ECONOMIC DAMAGE, PROPERTY DAMAGE, OR PERSONAL INJURY; AND EVEN IF RENESAS HAS BEEN ADVISED OF THE POSSIBILITY + * OF SUCH LOSS, DAMAGES, CLAIMS OR COSTS. + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Includes , "Project Includes" + **********************************************************************************************************************/ +#include "bsp_api.h" + +/** ELC event definitions. */ + +/*********************************************************************************************************************** + * Macro definitions + **********************************************************************************************************************/ +#define BSP_IRQ_UINT32_MAX (0xFFFFFFFFU) +#define BSP_PRV_BITS_PER_WORD (32) + +/*********************************************************************************************************************** + * Typedef definitions + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Exported global variables (to be accessed by other files) + **********************************************************************************************************************/ + +/* This table is used to store the context in the ISR. */ +void * gp_renesas_isr_context[BSP_ICU_VECTOR_MAX_ENTRIES]; + +/*********************************************************************************************************************** + * Private global variables and functions + **********************************************************************************************************************/ +const bsp_interrupt_event_t g_interrupt_event_link_select[BSP_ICU_VECTOR_MAX_ENTRIES] BSP_WEAK_REFERENCE = +{ + (bsp_interrupt_event_t) 0 +}; + +/*******************************************************************************************************************//** + * @addtogroup BSP_MCU + * + * @{ + **********************************************************************************************************************/ + +/** @} (end addtogroup BSP_MCU) */ + +/*******************************************************************************************************************//** + * Using the vector table information section that has been built by the linker and placed into ROM in the + * .vector_info. section, this function will initialize the ICU so that configured ELC events will trigger interrupts + * in the NVIC. + * + **********************************************************************************************************************/ +void bsp_irq_cfg (void) +{ +#if FSP_PRIV_TZ_USE_SECURE_REGS + #if (BSP_FEATURE_TZ_VERSION == 2 && BSP_TZ_SECURE_BUILD == 0) + + /* On MCUs with this implementation of TrustZone, IRQ security attribution is set to secure by default. + * This means that flat projects do not need to set security attribution to secure. */ + #else + + /* Unprotect security registers. */ + R_BSP_RegisterProtectDisable(BSP_REG_PROTECT_SAR); + + #if !BSP_TZ_SECURE_BUILD + + /* Set the DMAC channels to secure access. */ + #ifdef BSP_TZ_CFG_ICUSARC + R_CPSCU->ICUSARC = ~R_CPSCU_ICUSARC_SADMACn_Msk; + #endif + #endif + + /* Place all vectors in non-secure state unless they are used in the secure project. */ + uint32_t interrupt_security_state[BSP_ICU_VECTOR_MAX_ENTRIES / BSP_PRV_BITS_PER_WORD]; + memset(&interrupt_security_state, UINT8_MAX, sizeof(interrupt_security_state)); + + for (uint32_t i = 0U; i < BSP_ICU_VECTOR_MAX_ENTRIES; i++) + { + if (0U != g_interrupt_event_link_select[i]) + { + /* This is a secure vector. Clear the associated bit. */ + uint32_t index = i / BSP_PRV_BITS_PER_WORD; + uint32_t bit = i % BSP_PRV_BITS_PER_WORD; + interrupt_security_state[index] &= ~(1U << bit); + } + } + + /* The Secure Attribute managed within the ARM CPU NVIC must match the security attribution of IELSEn + * (Reference section 13.2.9 in the RA6M4 manual R01UH0890EJ0050). */ + uint32_t volatile * p_icusarg = &R_CPSCU->ICUSARG; + for (uint32_t i = 0U; i < BSP_ICU_VECTOR_MAX_ENTRIES / BSP_PRV_BITS_PER_WORD; i++) + { + p_icusarg[i] = interrupt_security_state[i]; + NVIC->ITNS[i] = interrupt_security_state[i]; + } + + /* Protect security registers. */ + R_BSP_RegisterProtectEnable(BSP_REG_PROTECT_SAR); + #endif +#endif + + for (uint32_t i = 0U; i < (BSP_ICU_VECTOR_MAX_ENTRIES - BSP_FEATURE_ICU_FIXED_IELSR_COUNT); i++) + { + if (0U != g_interrupt_event_link_select[i]) + { + R_ICU->IELSR[i] = (uint32_t) g_interrupt_event_link_select[i]; + } + } +} diff --git a/bsp/renesas/ra8m1-ek/ra/fsp/src/bsp/mcu/all/bsp_irq.h b/bsp/renesas/ra8m1-ek/ra/fsp/src/bsp/mcu/all/bsp_irq.h new file mode 100644 index 000000000000..296f78cc16b1 --- /dev/null +++ b/bsp/renesas/ra8m1-ek/ra/fsp/src/bsp/mcu/all/bsp_irq.h @@ -0,0 +1,229 @@ +/*********************************************************************************************************************** + * Copyright [2020-2023] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics America Inc. and may only be used with products + * of Renesas Electronics Corp. and its affiliates ("Renesas"). No other uses are authorized. Renesas products are + * sold pursuant to Renesas terms and conditions of sale. Purchasers are solely responsible for the selection and use + * of Renesas products and Renesas assumes no liability. No license, express or implied, to any intellectual property + * right is granted by Renesas. This software is protected under all applicable laws, including copyright laws. Renesas + * reserves the right to change or discontinue this software and/or this documentation. THE SOFTWARE AND DOCUMENTATION + * IS DELIVERED TO YOU "AS IS," AND RENESAS MAKES NO REPRESENTATIONS OR WARRANTIES, AND TO THE FULLEST EXTENT + * PERMISSIBLE UNDER APPLICABLE LAW, DISCLAIMS ALL WARRANTIES, WHETHER EXPLICITLY OR IMPLICITLY, INCLUDING WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT, WITH RESPECT TO THE SOFTWARE OR + * DOCUMENTATION. RENESAS SHALL HAVE NO LIABILITY ARISING OUT OF ANY SECURITY VULNERABILITY OR BREACH. TO THE MAXIMUM + * EXTENT PERMITTED BY LAW, IN NO EVENT WILL RENESAS BE LIABLE TO YOU IN CONNECTION WITH THE SOFTWARE OR DOCUMENTATION + * (OR ANY PERSON OR ENTITY CLAIMING RIGHTS DERIVED FROM YOU) FOR ANY LOSS, DAMAGES, OR CLAIMS WHATSOEVER, INCLUDING, + * WITHOUT LIMITATION, ANY DIRECT, CONSEQUENTIAL, SPECIAL, INDIRECT, PUNITIVE, OR INCIDENTAL DAMAGES; ANY LOST PROFITS, + * OTHER ECONOMIC DAMAGE, PROPERTY DAMAGE, OR PERSONAL INJURY; AND EVEN IF RENESAS HAS BEEN ADVISED OF THE POSSIBILITY + * OF SUCH LOSS, DAMAGES, CLAIMS OR COSTS. + **********************************************************************************************************************/ + +/** @} (end addtogroup BSP_MCU) */ + +#ifndef BSP_IRQ_H +#define BSP_IRQ_H + +/** Common macro for FSP header files. There is also a corresponding FSP_FOOTER macro at the end of this file. */ +FSP_HEADER + +/*********************************************************************************************************************** + * Macro definitions + **********************************************************************************************************************/ +#define BSP_ICU_VECTOR_MAX_ENTRIES (BSP_VECTOR_TABLE_MAX_ENTRIES - BSP_CORTEX_VECTOR_TABLE_ENTRIES) + +/*********************************************************************************************************************** + * Typedef definitions + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Exported global variables + **********************************************************************************************************************/ +extern void * gp_renesas_isr_context[BSP_ICU_VECTOR_MAX_ENTRIES]; + +/*********************************************************************************************************************** + * Exported global functions (to be accessed by other files) + **********************************************************************************************************************/ + +/*******************************************************************************************************************//** + * @brief Sets the ISR context associated with the requested IRQ. + * + * @param[in] irq IRQ number (parameter checking must ensure the IRQ number is valid before calling this + * function. + * @param[in] p_context ISR context for IRQ. + **********************************************************************************************************************/ +__STATIC_INLINE void R_FSP_IsrContextSet (IRQn_Type const irq, void * p_context) +{ + /* This provides access to the ISR context array defined in bsp_irq.c. This is an inline function instead of + * being part of bsp_irq.c for performance considerations because it is used in interrupt service routines. */ + gp_renesas_isr_context[irq] = p_context; +} + +/*******************************************************************************************************************//** + * Clear the interrupt status flag (IR) for a given interrupt. When an interrupt is triggered the IR bit + * is set. If it is not cleared in the ISR then the interrupt will trigger again immediately. + * + * @param[in] irq Interrupt for which to clear the IR bit. Note that the enums listed for IRQn_Type are + * only those for the Cortex Processor Exceptions Numbers. + * + * @warning Do not call this function for system exceptions where the IRQn_Type value is < 0. + **********************************************************************************************************************/ +__STATIC_INLINE void R_BSP_IrqStatusClear (IRQn_Type irq) +{ + /* Clear the IR bit in the selected IELSR register. */ + R_ICU->IELSR_b[irq].IR = 0U; + + /* Read back the IELSR register to ensure that the IR bit is cleared. + * See section "13.5.1 Operations During an Interrupt" in the RA8M1 manual R01UH0994EJ0100. */ + FSP_REGISTER_READ(R_ICU->IELSR[irq]); +} + +/*******************************************************************************************************************//** + * Clear the interrupt status flag (IR) for a given interrupt and clear the NVIC pending interrupt. + * + * @param[in] irq Interrupt for which to clear the IR bit. Note that the enums listed for IRQn_Type are + * only those for the Cortex Processor Exceptions Numbers. + * + * @warning Do not call this function for system exceptions where the IRQn_Type value is < 0. + **********************************************************************************************************************/ +__STATIC_INLINE void R_BSP_IrqClearPending (IRQn_Type irq) +{ + /* Clear the IR bit in the selected IELSR register. */ + R_BSP_IrqStatusClear(irq); + + /* Flush memory transactions to ensure that the IR bit is cleared before clearing the pending bit in the NVIC. */ + __DMB(); + + /* The following statement is used in place of NVIC_ClearPendingIRQ to avoid including a branch for system + * exceptions every time an interrupt is cleared in the NVIC. */ + uint32_t _irq = (uint32_t) irq; + NVIC->ICPR[(((uint32_t) irq) >> 5UL)] = (uint32_t) (1UL << (_irq & 0x1FUL)); +} + +/*******************************************************************************************************************//** + * Sets the interrupt priority and context. + * + * @param[in] irq The IRQ to configure. + * @param[in] priority NVIC priority of the interrupt + * @param[in] p_context The interrupt context is a pointer to data required in the ISR. + * + * @warning Do not call this function for system exceptions where the IRQn_Type value is < 0. + **********************************************************************************************************************/ +__STATIC_INLINE void R_BSP_IrqCfg (IRQn_Type const irq, uint32_t priority, void * p_context) +{ + /* The following statement is used in place of NVIC_SetPriority to avoid including a branch for system exceptions + * every time a priority is configured in the NVIC. */ +#if (4U == __CORTEX_M) + NVIC->IP[((uint32_t) irq)] = (uint8_t) ((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t) UINT8_MAX); +#elif (33 == __CORTEX_M) + NVIC->IPR[((uint32_t) irq)] = (uint8_t) ((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t) UINT8_MAX); +#elif (23 == __CORTEX_M) + NVIC->IPR[_IP_IDX(irq)] = ((uint32_t) (NVIC->IPR[_IP_IDX(irq)] & ~((uint32_t) UINT8_MAX << _BIT_SHIFT(irq))) | + (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t) UINT8_MAX) << _BIT_SHIFT(irq))); +#else + NVIC_SetPriority(irq, priority); +#endif + + /* Store the context. The context is recovered in the ISR. */ + R_FSP_IsrContextSet(irq, p_context); +} + +/*******************************************************************************************************************//** + * Enable the IRQ in the NVIC (Without clearing the pending bit). + * + * @param[in] irq The IRQ to enable. Note that the enums listed for IRQn_Type are only those for the Cortex + * Processor Exceptions Numbers. + * + * @warning Do not call this function for system exceptions where the IRQn_Type value is < 0. + **********************************************************************************************************************/ +__STATIC_INLINE void R_BSP_IrqEnableNoClear (IRQn_Type const irq) +{ + /* The following statement is used in place of NVIC_EnableIRQ to avoid including a branch for system exceptions + * every time an interrupt is enabled in the NVIC. */ + uint32_t _irq = (uint32_t) irq; + + __COMPILER_BARRIER(); + NVIC->ISER[(_irq >> 5UL)] = (uint32_t) (1UL << (_irq & 0x1FUL)); + __COMPILER_BARRIER(); +} + +/*******************************************************************************************************************//** + * Clears pending interrupts in both ICU and NVIC, then enables the interrupt. + * + * @param[in] irq Interrupt for which to clear the IR bit and enable in the NVIC. Note that the enums listed + * for IRQn_Type are only those for the Cortex Processor Exceptions Numbers. + * + * @warning Do not call this function for system exceptions where the IRQn_Type value is < 0. + **********************************************************************************************************************/ +__STATIC_INLINE void R_BSP_IrqEnable (IRQn_Type const irq) +{ + /* Clear pending interrupts in the ICU and NVIC. */ + R_BSP_IrqClearPending(irq); + + /* Enable the IRQ in the NVIC. */ + R_BSP_IrqEnableNoClear(irq); +} + +/*******************************************************************************************************************//** + * Disables interrupts in the NVIC. + * + * @param[in] irq The IRQ to disable in the NVIC. Note that the enums listed for IRQn_Type are + * only those for the Cortex Processor Exceptions Numbers. + * + * @warning Do not call this function for system exceptions where the IRQn_Type value is < 0. + **********************************************************************************************************************/ +__STATIC_INLINE void R_BSP_IrqDisable (IRQn_Type const irq) +{ + /* The following statements is used in place of NVIC_DisableIRQ to avoid including a branch for system + * exceptions every time an interrupt is cleared in the NVIC. */ + uint32_t _irq = (uint32_t) irq; + NVIC->ICER[(((uint32_t) irq) >> 5UL)] = (uint32_t) (1UL << (_irq & 0x1FUL)); + + __DSB(); + __ISB(); +} + +/*******************************************************************************************************************//** + * Sets the interrupt priority and context, clears pending interrupts, then enables the interrupt. + * + * @param[in] irq Interrupt number. + * @param[in] priority NVIC priority of the interrupt + * @param[in] p_context The interrupt context is a pointer to data required in the ISR. + * + * @warning Do not call this function for system exceptions where the IRQn_Type value is < 0. + **********************************************************************************************************************/ +__STATIC_INLINE void R_BSP_IrqCfgEnable (IRQn_Type const irq, uint32_t priority, void * p_context) +{ + R_BSP_IrqCfg(irq, priority, p_context); + R_BSP_IrqEnable(irq); +} + +/*******************************************************************************************************************//** + * @brief Finds the ISR context associated with the requested IRQ. + * + * @param[in] irq IRQ number (parameter checking must ensure the IRQ number is valid before calling this + * function. + * @return ISR context for IRQ. + **********************************************************************************************************************/ +__STATIC_INLINE void * R_FSP_IsrContextGet (IRQn_Type const irq) +{ + /* This provides access to the ISR context array defined in bsp_irq.c. This is an inline function instead of + * being part of bsp_irq.c for performance considerations because it is used in interrupt service routines. */ + return gp_renesas_isr_context[irq]; +} + +/*******************************************************************************************************************//** + * @internal + * @addtogroup BSP_MCU_PRV Internal BSP Documentation + * @ingroup RENESAS_INTERNAL + * @{ + **********************************************************************************************************************/ + +/* Public functions defined in bsp.h */ +void bsp_irq_cfg(void); // Used internally by BSP + +/** @} (end addtogroup BSP_MCU_PRV) */ + +/** Common macro for FSP header files. There is also a corresponding FSP_HEADER macro at the top of this file. */ +FSP_FOOTER + +#endif diff --git a/bsp/renesas/ra8m1-ek/ra/fsp/src/bsp/mcu/all/bsp_mcu_api.h b/bsp/renesas/ra8m1-ek/ra/fsp/src/bsp/mcu/all/bsp_mcu_api.h new file mode 100644 index 000000000000..26a63083da8e --- /dev/null +++ b/bsp/renesas/ra8m1-ek/ra/fsp/src/bsp/mcu/all/bsp_mcu_api.h @@ -0,0 +1,68 @@ +/*********************************************************************************************************************** + * Copyright [2020-2023] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics America Inc. and may only be used with products + * of Renesas Electronics Corp. and its affiliates ("Renesas"). No other uses are authorized. Renesas products are + * sold pursuant to Renesas terms and conditions of sale. Purchasers are solely responsible for the selection and use + * of Renesas products and Renesas assumes no liability. No license, express or implied, to any intellectual property + * right is granted by Renesas. This software is protected under all applicable laws, including copyright laws. Renesas + * reserves the right to change or discontinue this software and/or this documentation. THE SOFTWARE AND DOCUMENTATION + * IS DELIVERED TO YOU "AS IS," AND RENESAS MAKES NO REPRESENTATIONS OR WARRANTIES, AND TO THE FULLEST EXTENT + * PERMISSIBLE UNDER APPLICABLE LAW, DISCLAIMS ALL WARRANTIES, WHETHER EXPLICITLY OR IMPLICITLY, INCLUDING WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT, WITH RESPECT TO THE SOFTWARE OR + * DOCUMENTATION. RENESAS SHALL HAVE NO LIABILITY ARISING OUT OF ANY SECURITY VULNERABILITY OR BREACH. TO THE MAXIMUM + * EXTENT PERMITTED BY LAW, IN NO EVENT WILL RENESAS BE LIABLE TO YOU IN CONNECTION WITH THE SOFTWARE OR DOCUMENTATION + * (OR ANY PERSON OR ENTITY CLAIMING RIGHTS DERIVED FROM YOU) FOR ANY LOSS, DAMAGES, OR CLAIMS WHATSOEVER, INCLUDING, + * WITHOUT LIMITATION, ANY DIRECT, CONSEQUENTIAL, SPECIAL, INDIRECT, PUNITIVE, OR INCIDENTAL DAMAGES; ANY LOST PROFITS, + * OTHER ECONOMIC DAMAGE, PROPERTY DAMAGE, OR PERSONAL INJURY; AND EVEN IF RENESAS HAS BEEN ADVISED OF THE POSSIBILITY + * OF SUCH LOSS, DAMAGES, CLAIMS OR COSTS. + **********************************************************************************************************************/ + +#ifndef BSP_MCU_API_H +#define BSP_MCU_API_H + +/** Common macro for FSP header files. There is also a corresponding FSP_FOOTER macro at the end of this file. */ +FSP_HEADER + +typedef struct st_bsp_event_info +{ + IRQn_Type irq; + elc_event_t event; +} bsp_event_info_t; + +typedef enum e_bsp_clocks_octaclk_div +{ + BSP_CLOCKS_OCTACLK_DIV_1 = 0, ///< Divide OCTA source clock by 1 + BSP_CLOCKS_OCTACLK_DIV_2, ///< Divide OCTA source clock by 2 + BSP_CLOCKS_OCTACLK_DIV_4, ///< Divide OCTA source clock by 4 + BSP_CLOCKS_OCTACLK_DIV_6, ///< Divide OCTA source clock by 6 + BSP_CLOCKS_OCTACLK_DIV_8 ///< Divide OCTA source clock by 8 +} bsp_clocks_octaclk_div_t; + +typedef enum e_bsp_clocks_source +{ + BSP_CLOCKS_CLOCK_HOCO = 0, ///< The high speed on chip oscillator. + BSP_CLOCKS_CLOCK_MOCO, ///< The middle speed on chip oscillator. + BSP_CLOCKS_CLOCK_LOCO, ///< The low speed on chip oscillator. + BSP_CLOCKS_CLOCK_MAIN_OSC, ///< The main oscillator. + BSP_CLOCKS_CLOCK_SUBCLOCK, ///< The subclock oscillator. + BSP_CLOCKS_CLOCK_PLL, ///< The PLL oscillator. + BSP_CLOCKS_CLOCK_PLL2, ///< The PLL2 oscillator. +} bsp_clocks_source_t; + +typedef struct st_bsp_octaclk_settings +{ + bsp_clocks_source_t source_clock; ///< OCTACLK source clock + bsp_clocks_octaclk_div_t divider; ///< OCTACLK divider +} bsp_octaclk_settings_t; + +void R_BSP_RegisterProtectEnable(bsp_reg_protect_t regs_to_protect); +void R_BSP_RegisterProtectDisable(bsp_reg_protect_t regs_to_unprotect); +fsp_err_t R_BSP_GroupIrqWrite(bsp_grp_irq_t irq, void (* p_callback)(bsp_grp_irq_t irq)); +void R_BSP_OctaclkUpdate(bsp_octaclk_settings_t * p_octaclk_setting); +void R_BSP_SoftwareDelay(uint32_t delay, bsp_delay_units_t units); + +/** Common macro for FSP header files. There is also a corresponding FSP_HEADER macro at the top of this file. */ +FSP_FOOTER + +#endif diff --git a/bsp/renesas/ra8m1-ek/ra/fsp/src/bsp/mcu/all/bsp_module_stop.h b/bsp/renesas/ra8m1-ek/ra/fsp/src/bsp/mcu/all/bsp_module_stop.h new file mode 100644 index 000000000000..b3501b654c4a --- /dev/null +++ b/bsp/renesas/ra8m1-ek/ra/fsp/src/bsp/mcu/all/bsp_module_stop.h @@ -0,0 +1,241 @@ +/*********************************************************************************************************************** + * Copyright [2020-2023] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics America Inc. and may only be used with products + * of Renesas Electronics Corp. and its affiliates ("Renesas"). No other uses are authorized. Renesas products are + * sold pursuant to Renesas terms and conditions of sale. Purchasers are solely responsible for the selection and use + * of Renesas products and Renesas assumes no liability. No license, express or implied, to any intellectual property + * right is granted by Renesas. This software is protected under all applicable laws, including copyright laws. Renesas + * reserves the right to change or discontinue this software and/or this documentation. THE SOFTWARE AND DOCUMENTATION + * IS DELIVERED TO YOU "AS IS," AND RENESAS MAKES NO REPRESENTATIONS OR WARRANTIES, AND TO THE FULLEST EXTENT + * PERMISSIBLE UNDER APPLICABLE LAW, DISCLAIMS ALL WARRANTIES, WHETHER EXPLICITLY OR IMPLICITLY, INCLUDING WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT, WITH RESPECT TO THE SOFTWARE OR + * DOCUMENTATION. RENESAS SHALL HAVE NO LIABILITY ARISING OUT OF ANY SECURITY VULNERABILITY OR BREACH. TO THE MAXIMUM + * EXTENT PERMITTED BY LAW, IN NO EVENT WILL RENESAS BE LIABLE TO YOU IN CONNECTION WITH THE SOFTWARE OR DOCUMENTATION + * (OR ANY PERSON OR ENTITY CLAIMING RIGHTS DERIVED FROM YOU) FOR ANY LOSS, DAMAGES, OR CLAIMS WHATSOEVER, INCLUDING, + * WITHOUT LIMITATION, ANY DIRECT, CONSEQUENTIAL, SPECIAL, INDIRECT, PUNITIVE, OR INCIDENTAL DAMAGES; ANY LOST PROFITS, + * OTHER ECONOMIC DAMAGE, PROPERTY DAMAGE, OR PERSONAL INJURY; AND EVEN IF RENESAS HAS BEEN ADVISED OF THE POSSIBILITY + * OF SUCH LOSS, DAMAGES, CLAIMS OR COSTS. + **********************************************************************************************************************/ + +#ifndef BSP_MODULE_H +#define BSP_MODULE_H + +/** Common macro for FSP header files. There is also a corresponding FSP_FOOTER macro at the end of this file. */ +FSP_HEADER + +#if __has_include("internal/bsp_module_stop_internal.h") + #include "internal/bsp_module_stop_internal.h" +#endif + +/*******************************************************************************************************************//** + * @addtogroup BSP_MCU + * @{ + **********************************************************************************************************************/ + +#if BSP_FEATURE_TZ_HAS_TRUSTZONE + +/* MSTPCRA is located in R_MSTP for Star devices. */ + #define R_BSP_MSTPCRA (R_MSTP->MSTPCRA) +#else + +/* MSTPCRA is located in R_SYSTEM for W1D and Peaks devices. */ + #define R_BSP_MSTPCRA (R_SYSTEM->MSTPCRA) +#endif + +/*******************************************************************************************************************//** + * Cancels the module stop state. + * + * @param ip fsp_ip_t enum value for the module to be stopped + * @param channel The channel. Use channel 0 for modules without channels. + **********************************************************************************************************************/ +#if BSP_CFG_MSTP_CHANGE_DELAY_ENABLE + #define R_BSP_MODULE_START(ip, channel) {FSP_CRITICAL_SECTION_DEFINE; \ + FSP_CRITICAL_SECTION_ENTER; \ + BSP_MSTP_REG_ ## ip(channel) &= ~BSP_MSTP_BIT_ ## ip(channel); \ + FSP_REGISTER_READ(BSP_MSTP_REG_ ## ip(channel)); \ + R_BSP_SoftwareDelay(BSP_CFG_CLOCK_SETTLING_DELAY_US, \ + BSP_DELAY_UNITS_MICROSECONDS); \ + FSP_CRITICAL_SECTION_EXIT;} +#else + #define R_BSP_MODULE_START(ip, channel) {FSP_CRITICAL_SECTION_DEFINE; \ + FSP_CRITICAL_SECTION_ENTER; \ + BSP_MSTP_REG_ ## ip(channel) &= ~BSP_MSTP_BIT_ ## ip(channel); \ + FSP_REGISTER_READ(BSP_MSTP_REG_ ## ip(channel)); \ + FSP_CRITICAL_SECTION_EXIT;} +#endif + +/*******************************************************************************************************************//** + * Enables the module stop state. + * + * @param ip fsp_ip_t enum value for the module to be stopped + * @param channel The channel. Use channel 0 for modules without channels. + **********************************************************************************************************************/ +#if BSP_CFG_MSTP_CHANGE_DELAY_ENABLE + #define R_BSP_MODULE_STOP(ip, channel) {FSP_CRITICAL_SECTION_DEFINE; \ + FSP_CRITICAL_SECTION_ENTER; \ + BSP_MSTP_REG_ ## ip(channel) |= BSP_MSTP_BIT_ ## ip(channel); \ + FSP_REGISTER_READ(BSP_MSTP_REG_ ## ip(channel)); \ + R_BSP_SoftwareDelay(BSP_CFG_CLOCK_SETTLING_DELAY_US, \ + BSP_DELAY_UNITS_MICROSECONDS); \ + FSP_CRITICAL_SECTION_EXIT;} +#else + #define R_BSP_MODULE_STOP(ip, channel) {FSP_CRITICAL_SECTION_DEFINE; \ + FSP_CRITICAL_SECTION_ENTER; \ + BSP_MSTP_REG_ ## ip(channel) |= BSP_MSTP_BIT_ ## ip(channel); \ + FSP_REGISTER_READ(BSP_MSTP_REG_ ## ip(channel)); \ + FSP_CRITICAL_SECTION_EXIT;} +#endif + +/** @} (end addtogroup BSP_MCU) */ + +#if 0U == BSP_FEATURE_BSP_MSTP_HAS_MSTPCRE + #define BSP_MSTP_REG_FSP_IP_GPT(channel) R_MSTP->MSTPCRD + #define BSP_MSTP_BIT_FSP_IP_GPT(channel) ((BSP_FEATURE_BSP_MSTP_GPT_MSTPD5_MAX_CH >= \ + channel) ? (1U << 5U) : (1U << 6U)); + + #ifndef BSP_MSTP_REG_FSP_IP_AGT + #define BSP_MSTP_REG_FSP_IP_AGT(channel) R_MSTP->MSTPCRD + #endif + #ifndef BSP_MSTP_BIT_FSP_IP_AGT + #define BSP_MSTP_BIT_FSP_IP_AGT(channel) (1U << (3U - channel)); + #endif + + #define BSP_MSTP_REG_FSP_IP_POEG(channel) R_MSTP->MSTPCRD + #define BSP_MSTP_BIT_FSP_IP_POEG(channel) (1U << (14U)); +#else + #if (2U == BSP_FEATURE_ELC_VERSION) + #if BSP_MCU_GROUP_RA6T2 + #define BSP_MSTP_REG_FSP_IP_GPT(channel) R_MSTP->MSTPCRE + #define BSP_MSTP_BIT_FSP_IP_GPT(channel) (1U << 31); + #define BSP_MSTP_REG_FSP_IP_AGT(channel) R_MSTP->MSTPCRD + #define BSP_MSTP_BIT_FSP_IP_AGT(channel) (1U << (3U - channel)); + #else + #define BSP_MSTP_REG_FSP_IP_GPT(channel) R_MSTP->MSTPCRE + #define BSP_MSTP_BIT_FSP_IP_GPT(channel) (1U << (31 - channel)); + #define BSP_MSTP_REG_FSP_IP_AGT(channel) R_MSTP->MSTPCRD + #define BSP_MSTP_BIT_FSP_IP_AGT(channel) (1U << (5U - channel)); + #endif + #define BSP_MSTP_REG_FSP_IP_KEY(channel) R_MSTP->MSTPCRE + #define BSP_MSTP_BIT_FSP_IP_KEY(channel) (1U << 4U); + #define BSP_MSTP_REG_FSP_IP_POEG(channel) R_MSTP->MSTPCRD + #define BSP_MSTP_BIT_FSP_IP_POEG(channel) (1U << (14U - channel)); + #define BSP_MSTP_REG_FSP_IP_ULPT(channel) R_MSTP->MSTPCRE + #define BSP_MSTP_BIT_FSP_IP_ULPT(channel) (1U << (9U - channel)); + #else + #define BSP_MSTP_REG_FSP_IP_GPT(channel) R_MSTP->MSTPCRE + #define BSP_MSTP_BIT_FSP_IP_GPT(channel) (1U << (31 - channel)); + #define BSP_MSTP_REG_FSP_IP_AGT(channel) *((3U >= channel) ? &R_MSTP->MSTPCRD : &R_MSTP->MSTPCRE) + #define BSP_MSTP_BIT_FSP_IP_AGT(channel) ((3U >= \ + channel) ? (1U << (3U - channel)) : (1U << (15U - (channel - 4U)))); + #define BSP_MSTP_REG_FSP_IP_KEY(channel) R_MSTP->MSTPCRE + #define BSP_MSTP_BIT_FSP_IP_KEY(channel) (1U << (4U - channel)); + #define BSP_MSTP_REG_FSP_IP_POEG(channel) R_MSTP->MSTPCRD + #define BSP_MSTP_BIT_FSP_IP_POEG(channel) (1U << (14U - channel)); + #endif +#endif + +#define BSP_MSTP_REG_FSP_IP_DMAC(channel) R_BSP_MSTPCRA +#define BSP_MSTP_BIT_FSP_IP_DMAC(channel) (1U << (22U)); +#define BSP_MSTP_REG_FSP_IP_DTC(channel) R_BSP_MSTPCRA +#define BSP_MSTP_BIT_FSP_IP_DTC(channel) (1U << (22U)); +#define BSP_MSTP_REG_FSP_IP_CAN(channel) R_MSTP->MSTPCRB +#define BSP_MSTP_BIT_FSP_IP_CAN(channel) (1U << (2U - channel)); +#define BSP_MSTP_REG_FSP_IP_CEC(channel) R_MSTP->MSTPCRB +#define BSP_MSTP_BIT_FSP_IP_CEC(channel) (1U << (3U)); +#define BSP_MSTP_REG_FSP_IP_I3C(channel) R_MSTP->MSTPCRB +#define BSP_MSTP_BIT_FSP_IP_I3C(channel) (1U << (BSP_FEATURE_I3C_MSTP_OFFSET - channel)); +#define BSP_MSTP_REG_FSP_IP_IRDA(channel) R_MSTP->MSTPCRB +#define BSP_MSTP_BIT_FSP_IP_IRDA(channel) (1U << (5U - channel)); +#define BSP_MSTP_REG_FSP_IP_QSPI(channel) R_MSTP->MSTPCRB +#define BSP_MSTP_BIT_FSP_IP_QSPI(channel) (1U << (6U - channel)); +#define BSP_MSTP_REG_FSP_IP_IIC(channel) R_MSTP->MSTPCRB +#define BSP_MSTP_BIT_FSP_IP_IIC(channel) (1U << (9U - channel)); +#define BSP_MSTP_REG_FSP_IP_USBFS(channel) R_MSTP->MSTPCRB +#define BSP_MSTP_BIT_FSP_IP_USBFS(channel) (1U << (11U - channel)); +#define BSP_MSTP_REG_FSP_IP_USBHS(channel) R_MSTP->MSTPCRB +#define BSP_MSTP_BIT_FSP_IP_USBHS(channel) (1U << (12U - channel)); +#define BSP_MSTP_REG_FSP_IP_EPTPC(channel) R_MSTP->MSTPCRB +#define BSP_MSTP_BIT_FSP_IP_EPTPC(channel) (1U << (13U - channel)); +#define BSP_MSTP_REG_FSP_IP_ETHER(channel) R_MSTP->MSTPCRB +#define BSP_MSTP_BIT_FSP_IP_ETHER(channel) (1U << (15U - channel)); +#define BSP_MSTP_REG_FSP_IP_OSPI(channel) R_MSTP->MSTPCRB +#define BSP_MSTP_BIT_FSP_IP_OSPI(channel) (1U << (16U - channel)); +#define BSP_MSTP_REG_FSP_IP_SPI(channel) R_MSTP->MSTPCRB +#define BSP_MSTP_BIT_FSP_IP_SPI(channel) (1U << (19U - channel)); +#define BSP_MSTP_REG_FSP_IP_SCI(channel) R_MSTP->MSTPCRB +#define BSP_MSTP_BIT_FSP_IP_SCI(channel) (1U << (31U - channel)); +#define BSP_MSTP_REG_FSP_IP_CAC(channel) R_MSTP->MSTPCRC +#define BSP_MSTP_BIT_FSP_IP_CAC(channel) (1U << (0U - channel)); +#define BSP_MSTP_REG_FSP_IP_CRC(channel) R_MSTP->MSTPCRC +#define BSP_MSTP_BIT_FSP_IP_CRC(channel) (1U << (1U - channel)); +#define BSP_MSTP_REG_FSP_IP_PDC(channel) R_MSTP->MSTPCRC +#define BSP_MSTP_BIT_FSP_IP_PDC(channel) (1U << (2U - channel)); +#define BSP_MSTP_REG_FSP_IP_CTSU(channel) R_MSTP->MSTPCRC +#define BSP_MSTP_BIT_FSP_IP_CTSU(channel) (1U << (3U - channel)); +#define BSP_MSTP_REG_FSP_IP_SLCDC(channel) R_MSTP->MSTPCRC +#define BSP_MSTP_BIT_FSP_IP_SLCDC(channel) (1U << (4U - channel)); +#define BSP_MSTP_REG_FSP_IP_GLCDC(channel) R_MSTP->MSTPCRC +#define BSP_MSTP_BIT_FSP_IP_GLCDC(channel) (1U << (4U - channel)); +#define BSP_MSTP_REG_FSP_IP_JPEG(channel) R_MSTP->MSTPCRC +#define BSP_MSTP_BIT_FSP_IP_JPEG(channel) (1U << (5U - channel)); +#define BSP_MSTP_REG_FSP_IP_DRW(channel) R_MSTP->MSTPCRC +#define BSP_MSTP_BIT_FSP_IP_DRW(channel) (1U << (6U - channel)); +#define BSP_MSTP_REG_FSP_IP_SSI(channel) R_MSTP->MSTPCRC +#define BSP_MSTP_BIT_FSP_IP_SSI(channel) (1U << (8U - channel)); +#define BSP_MSTP_REG_FSP_IP_SRC(channel) R_MSTP->MSTPCRC +#define BSP_MSTP_BIT_FSP_IP_SRC(channel) (1U << (9U - channel)); +#define BSP_MSTP_REG_FSP_IP_MIPI_DSI(channel) R_MSTP->MSTPCRC +#define BSP_MSTP_BIT_FSP_IP_MIPI_DSI(channel) (1U << (10U - channel)); +#define BSP_MSTP_REG_FSP_IP_SDHIMMC(channel) R_MSTP->MSTPCRC +#define BSP_MSTP_BIT_FSP_IP_SDHIMMC(channel) (1U << (12U - channel)); +#define BSP_MSTP_REG_FSP_IP_DOC(channel) R_MSTP->MSTPCRC +#define BSP_MSTP_BIT_FSP_IP_DOC(channel) (1U << (13U - channel)); +#define BSP_MSTP_REG_FSP_IP_ELC(channel) R_MSTP->MSTPCRC +#define BSP_MSTP_BIT_FSP_IP_ELC(channel) (1U << (14U - channel)); +#define BSP_MSTP_REG_FSP_IP_CEU(channel) R_MSTP->MSTPCRC +#define BSP_MSTP_BIT_FSP_IP_CEU(channel) (1U << (16U - channel)); +#define BSP_MSTP_REG_FSP_IP_TFU(channel) R_MSTP->MSTPCRC +#define BSP_MSTP_BIT_FSP_IP_TFU(channel) (1U << (20U - channel)); +#define BSP_MSTP_REG_FSP_IP_IIRFA(channel) R_MSTP->MSTPCRC +#define BSP_MSTP_BIT_FSP_IP_IIRFA(channel) (1U << (21U - channel)); +#define BSP_MSTP_REG_FSP_IP_CANFD(channel) R_MSTP->MSTPCRC +#define BSP_MSTP_BIT_FSP_IP_CANFD(channel) (1U << (27U - channel)); +#define BSP_MSTP_REG_FSP_IP_TRNG(channel) R_MSTP->MSTPCRC +#define BSP_MSTP_BIT_FSP_IP_TRNG(channel) (1U << (28U - channel)); +#define BSP_MSTP_REG_FSP_IP_SCE(channel) R_MSTP->MSTPCRC +#define BSP_MSTP_BIT_FSP_IP_SCE(channel) (1U << (31U - channel)); +#define BSP_MSTP_REG_FSP_IP_AES(channel) R_MSTP->MSTPCRC +#define BSP_MSTP_BIT_FSP_IP_AES(channel) (1U << (31U - channel)); +#define BSP_MSTP_REG_FSP_IP_ADC(channel) R_MSTP->MSTPCRD +#define BSP_MSTP_BIT_FSP_IP_ADC(channel) (1U << (16U - channel)); +#define BSP_MSTP_REG_FSP_IP_SDADC(channel) R_MSTP->MSTPCRD +#define BSP_MSTP_BIT_FSP_IP_SDADC(channel) (1U << (17U - channel)); +#if (BSP_FEATURE_DAC_MAX_CHANNELS > 2U) + #define BSP_MSTP_REG_FSP_IP_DAC(channel) R_MSTP->MSTPCRD + #define BSP_MSTP_BIT_FSP_IP_DAC(channel) (1U << (20U - channel)); +#else + #define BSP_MSTP_REG_FSP_IP_DAC8(channel) R_MSTP->MSTPCRD + #define BSP_MSTP_BIT_FSP_IP_DAC8(channel) (1U << (19U)); + #define BSP_MSTP_REG_FSP_IP_DAC(channel) R_MSTP->MSTPCRD + #define BSP_MSTP_BIT_FSP_IP_DAC(channel) (1U << (20U)); +#endif +#define BSP_MSTP_REG_FSP_IP_TSN(channel) R_MSTP->MSTPCRD +#define BSP_MSTP_BIT_FSP_IP_TSN(channel) (1U << (22U - channel)); +#define BSP_MSTP_REG_FSP_IP_ACMPHS(channel) R_MSTP->MSTPCRD +#define BSP_MSTP_BIT_FSP_IP_ACMPHS(channel) (1U << (28U - channel)); +#define BSP_MSTP_REG_FSP_IP_ACMPLP(channel) R_MSTP->MSTPCRD +#define BSP_MSTP_BIT_FSP_IP_ACMPLP(channel) (1U << 29U); +#define BSP_MSTP_REG_FSP_IP_OPAMP(channel) R_MSTP->MSTPCRD +#define BSP_MSTP_BIT_FSP_IP_OPAMP(channel) (1U << (31U - channel)); +#if (1U == BSP_FEATURE_CGC_HAS_OSTDCSE) + #define BSP_MSTP_REG_FSP_IP_SOSTD(channel) R_BSP_MSTPCRA + #define BSP_MSTP_BIT_FSP_IP_SOSTD(channel) (1U << (16U)); + #define BSP_MSTP_REG_FSP_IP_MOSTD(channel) R_BSP_MSTPCRA + #define BSP_MSTP_BIT_FSP_IP_MOSTD(channel) (1U << (17U)); +#endif + +/** Common macro for FSP header files. There is also a corresponding FSP_HEADER macro at the top of this file. */ +FSP_FOOTER + +#endif diff --git a/bsp/renesas/ra8m1-ek/ra/fsp/src/bsp/mcu/all/bsp_register_protection.c b/bsp/renesas/ra8m1-ek/ra/fsp/src/bsp/mcu/all/bsp_register_protection.c new file mode 100644 index 000000000000..65ba58879a6b --- /dev/null +++ b/bsp/renesas/ra8m1-ek/ra/fsp/src/bsp/mcu/all/bsp_register_protection.c @@ -0,0 +1,133 @@ +/*********************************************************************************************************************** + * Copyright [2020-2023] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics America Inc. and may only be used with products + * of Renesas Electronics Corp. and its affiliates ("Renesas"). No other uses are authorized. Renesas products are + * sold pursuant to Renesas terms and conditions of sale. Purchasers are solely responsible for the selection and use + * of Renesas products and Renesas assumes no liability. No license, express or implied, to any intellectual property + * right is granted by Renesas. This software is protected under all applicable laws, including copyright laws. Renesas + * reserves the right to change or discontinue this software and/or this documentation. THE SOFTWARE AND DOCUMENTATION + * IS DELIVERED TO YOU "AS IS," AND RENESAS MAKES NO REPRESENTATIONS OR WARRANTIES, AND TO THE FULLEST EXTENT + * PERMISSIBLE UNDER APPLICABLE LAW, DISCLAIMS ALL WARRANTIES, WHETHER EXPLICITLY OR IMPLICITLY, INCLUDING WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT, WITH RESPECT TO THE SOFTWARE OR + * DOCUMENTATION. RENESAS SHALL HAVE NO LIABILITY ARISING OUT OF ANY SECURITY VULNERABILITY OR BREACH. TO THE MAXIMUM + * EXTENT PERMITTED BY LAW, IN NO EVENT WILL RENESAS BE LIABLE TO YOU IN CONNECTION WITH THE SOFTWARE OR DOCUMENTATION + * (OR ANY PERSON OR ENTITY CLAIMING RIGHTS DERIVED FROM YOU) FOR ANY LOSS, DAMAGES, OR CLAIMS WHATSOEVER, INCLUDING, + * WITHOUT LIMITATION, ANY DIRECT, CONSEQUENTIAL, SPECIAL, INDIRECT, PUNITIVE, OR INCIDENTAL DAMAGES; ANY LOST PROFITS, + * OTHER ECONOMIC DAMAGE, PROPERTY DAMAGE, OR PERSONAL INJURY; AND EVEN IF RENESAS HAS BEEN ADVISED OF THE POSSIBILITY + * OF SUCH LOSS, DAMAGES, CLAIMS OR COSTS. + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Includes , "Project Includes" + **********************************************************************************************************************/ +#include "bsp_api.h" + +/*********************************************************************************************************************** + * Macro definitions + **********************************************************************************************************************/ + +/* Key code for writing PRCR register. */ +#define BSP_PRV_PRCR_KEY (0xA500U) + +/*********************************************************************************************************************** + * Typedef definitions + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Exported global variables (to be accessed by other files) + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Private global variables and functions + **********************************************************************************************************************/ + +/** Used for holding reference counters for protection bits. */ +volatile uint16_t g_protect_counters[4] BSP_SECTION_EARLY_INIT; + +/** Masks for setting or clearing the PRCR register. Use -1 for size because PWPR in MPC is used differently. */ +static const uint16_t g_prcr_masks[] = +{ + 0x0001U, /* PRC0. */ + 0x0002U, /* PRC1. */ + 0x0008U, /* PRC3. */ + 0x0010U, /* PRC4. */ +}; + +/*******************************************************************************************************************//** + * @addtogroup BSP_MCU + * + * @{ + **********************************************************************************************************************/ + +/*******************************************************************************************************************//** + * Enable register protection. Registers that are protected cannot be written to. Register protection is + * enabled by using the Protect Register (PRCR) and the MPC's Write-Protect Register (PWPR). + * + * @param[in] regs_to_protect Registers which have write protection enabled. + **********************************************************************************************************************/ +void R_BSP_RegisterProtectEnable (bsp_reg_protect_t regs_to_protect) +{ + /** Get/save the current state of interrupts */ + FSP_CRITICAL_SECTION_DEFINE; + FSP_CRITICAL_SECTION_ENTER; + + /* Is it safe to disable write access? */ + if (0U != g_protect_counters[regs_to_protect]) + { + /* Decrement the protect counter */ + g_protect_counters[regs_to_protect]--; + } + + /* Is it safe to disable write access? */ + if (0U == g_protect_counters[regs_to_protect]) + { + /** Enable protection using PRCR register. + * + * When writing to the PRCR register the upper 8-bits must be the correct key. Set lower bits to 0 to + * disable writes. */ +#if BSP_TZ_NONSECURE_BUILD && BSP_FEATURE_TZ_VERSION == 2 + R_SYSTEM->PRCR_NS = ((R_SYSTEM->PRCR_NS | BSP_PRV_PRCR_KEY) & (uint16_t) (~g_prcr_masks[regs_to_protect])); +#else + R_SYSTEM->PRCR = ((R_SYSTEM->PRCR | BSP_PRV_PRCR_KEY) & (uint16_t) (~g_prcr_masks[regs_to_protect])); +#endif + } + + /** Restore the interrupt state */ + FSP_CRITICAL_SECTION_EXIT; +} + +/*******************************************************************************************************************//** + * Disable register protection. Registers that are protected cannot be written to. Register protection is + * disabled by using the Protect Register (PRCR) and the MPC's Write-Protect Register (PWPR). + * + * @param[in] regs_to_unprotect Registers which have write protection disabled. + **********************************************************************************************************************/ +void R_BSP_RegisterProtectDisable (bsp_reg_protect_t regs_to_unprotect) +{ + /** Get/save the current state of interrupts */ + FSP_CRITICAL_SECTION_DEFINE; + FSP_CRITICAL_SECTION_ENTER; + + /* If this is first entry then disable protection. */ + if (0U == g_protect_counters[regs_to_unprotect]) + { + /** Disable protection using PRCR register. + * + * When writing to the PRCR register the upper 8-bits must be the correct key. Set lower bits to 0 to + * disable writes. */ +#if BSP_TZ_NONSECURE_BUILD && BSP_FEATURE_TZ_VERSION == 2 + R_SYSTEM->PRCR_NS = ((R_SYSTEM->PRCR_NS | BSP_PRV_PRCR_KEY) | g_prcr_masks[regs_to_unprotect]); +#else + R_SYSTEM->PRCR = ((R_SYSTEM->PRCR | BSP_PRV_PRCR_KEY) | g_prcr_masks[regs_to_unprotect]); +#endif + } + + /** Increment the protect counter */ + g_protect_counters[regs_to_unprotect]++; + + /** Restore the interrupt state */ + FSP_CRITICAL_SECTION_EXIT; +} + +/** @} (end addtogroup BSP_MCU) */ diff --git a/bsp/renesas/ra8m1-ek/ra/fsp/src/bsp/mcu/all/bsp_register_protection.h b/bsp/renesas/ra8m1-ek/ra/fsp/src/bsp/mcu/all/bsp_register_protection.h new file mode 100644 index 000000000000..c7be6546816e --- /dev/null +++ b/bsp/renesas/ra8m1-ek/ra/fsp/src/bsp/mcu/all/bsp_register_protection.h @@ -0,0 +1,74 @@ +/*********************************************************************************************************************** + * Copyright [2020-2023] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics America Inc. and may only be used with products + * of Renesas Electronics Corp. and its affiliates ("Renesas"). No other uses are authorized. Renesas products are + * sold pursuant to Renesas terms and conditions of sale. Purchasers are solely responsible for the selection and use + * of Renesas products and Renesas assumes no liability. No license, express or implied, to any intellectual property + * right is granted by Renesas. This software is protected under all applicable laws, including copyright laws. Renesas + * reserves the right to change or discontinue this software and/or this documentation. THE SOFTWARE AND DOCUMENTATION + * IS DELIVERED TO YOU "AS IS," AND RENESAS MAKES NO REPRESENTATIONS OR WARRANTIES, AND TO THE FULLEST EXTENT + * PERMISSIBLE UNDER APPLICABLE LAW, DISCLAIMS ALL WARRANTIES, WHETHER EXPLICITLY OR IMPLICITLY, INCLUDING WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT, WITH RESPECT TO THE SOFTWARE OR + * DOCUMENTATION. RENESAS SHALL HAVE NO LIABILITY ARISING OUT OF ANY SECURITY VULNERABILITY OR BREACH. TO THE MAXIMUM + * EXTENT PERMITTED BY LAW, IN NO EVENT WILL RENESAS BE LIABLE TO YOU IN CONNECTION WITH THE SOFTWARE OR DOCUMENTATION + * (OR ANY PERSON OR ENTITY CLAIMING RIGHTS DERIVED FROM YOU) FOR ANY LOSS, DAMAGES, OR CLAIMS WHATSOEVER, INCLUDING, + * WITHOUT LIMITATION, ANY DIRECT, CONSEQUENTIAL, SPECIAL, INDIRECT, PUNITIVE, OR INCIDENTAL DAMAGES; ANY LOST PROFITS, + * OTHER ECONOMIC DAMAGE, PROPERTY DAMAGE, OR PERSONAL INJURY; AND EVEN IF RENESAS HAS BEEN ADVISED OF THE POSSIBILITY + * OF SUCH LOSS, DAMAGES, CLAIMS OR COSTS. + **********************************************************************************************************************/ + +#ifndef BSP_REGISTER_PROTECTION_H +#define BSP_REGISTER_PROTECTION_H + +/** Common macro for FSP header files. There is also a corresponding FSP_FOOTER macro at the end of this file. */ +FSP_HEADER + +/*********************************************************************************************************************** + * Macro definitions + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Typedef definitions + **********************************************************************************************************************/ + +/*******************************************************************************************************************//** + * @addtogroup BSP_MCU + * @{ + **********************************************************************************************************************/ + +/** The different types of registers that can be protected. */ +typedef enum e_bsp_reg_protect +{ + /** Enables writing to the registers related to the clock generation circuit. */ + BSP_REG_PROTECT_CGC = 0, + + /** Enables writing to the registers related to operating modes, low power consumption, and battery backup + * function. */ + BSP_REG_PROTECT_OM_LPC_BATT, + + /** Enables writing to the registers related to the LVD: LVCMPCR, LVDLVLR, LVD1CR0, LVD1CR1, LVD1SR, LVD2CR0, + * LVD2CR1, LVD2SR. */ + BSP_REG_PROTECT_LVD, + + /** Enables writing to the registers related to the security function. */ + BSP_REG_PROTECT_SAR, +} bsp_reg_protect_t; + +/** @} (end addtogroup BSP_MCU) */ + +/*********************************************************************************************************************** + * Exported global variables + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Exported global functions (to be accessed by other files) + **********************************************************************************************************************/ + +/* Public functions defined in bsp.h */ +void bsp_register_protect_open(void); // Used internally by BSP + +/** Common macro for FSP header files. There is also a corresponding FSP_HEADER macro at the top of this file. */ +FSP_FOOTER + +#endif diff --git a/bsp/renesas/ra8m1-ek/ra/fsp/src/bsp/mcu/all/bsp_rom_registers.c b/bsp/renesas/ra8m1-ek/ra/fsp/src/bsp/mcu/all/bsp_rom_registers.c new file mode 100644 index 000000000000..b687da9434b5 --- /dev/null +++ b/bsp/renesas/ra8m1-ek/ra/fsp/src/bsp/mcu/all/bsp_rom_registers.c @@ -0,0 +1,256 @@ +/*********************************************************************************************************************** + * Copyright [2020-2023] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics America Inc. and may only be used with products + * of Renesas Electronics Corp. and its affiliates ("Renesas"). No other uses are authorized. Renesas products are + * sold pursuant to Renesas terms and conditions of sale. Purchasers are solely responsible for the selection and use + * of Renesas products and Renesas assumes no liability. No license, express or implied, to any intellectual property + * right is granted by Renesas. This software is protected under all applicable laws, including copyright laws. Renesas + * reserves the right to change or discontinue this software and/or this documentation. THE SOFTWARE AND DOCUMENTATION + * IS DELIVERED TO YOU "AS IS," AND RENESAS MAKES NO REPRESENTATIONS OR WARRANTIES, AND TO THE FULLEST EXTENT + * PERMISSIBLE UNDER APPLICABLE LAW, DISCLAIMS ALL WARRANTIES, WHETHER EXPLICITLY OR IMPLICITLY, INCLUDING WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT, WITH RESPECT TO THE SOFTWARE OR + * DOCUMENTATION. RENESAS SHALL HAVE NO LIABILITY ARISING OUT OF ANY SECURITY VULNERABILITY OR BREACH. TO THE MAXIMUM + * EXTENT PERMITTED BY LAW, IN NO EVENT WILL RENESAS BE LIABLE TO YOU IN CONNECTION WITH THE SOFTWARE OR DOCUMENTATION + * (OR ANY PERSON OR ENTITY CLAIMING RIGHTS DERIVED FROM YOU) FOR ANY LOSS, DAMAGES, OR CLAIMS WHATSOEVER, INCLUDING, + * WITHOUT LIMITATION, ANY DIRECT, CONSEQUENTIAL, SPECIAL, INDIRECT, PUNITIVE, OR INCIDENTAL DAMAGES; ANY LOST PROFITS, + * OTHER ECONOMIC DAMAGE, PROPERTY DAMAGE, OR PERSONAL INJURY; AND EVEN IF RENESAS HAS BEEN ADVISED OF THE POSSIBILITY + * OF SUCH LOSS, DAMAGES, CLAIMS OR COSTS. + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Includes , "Project Includes" + **********************************************************************************************************************/ +#include "bsp_api.h" + +/*********************************************************************************************************************** + * Macro definitions + **********************************************************************************************************************/ +#define RA_NOT_DEFINED (0) + +/** OR in the HOCO frequency setting from bsp_clock_cfg.h with the OFS1 setting from bsp_cfg.h. */ +#define BSP_ROM_REG_OFS1_SETTING \ + (((uint32_t) BSP_CFG_ROM_REG_OFS1 & BSP_FEATURE_BSP_OFS1_HOCOFRQ_MASK) | \ + ((uint32_t) BSP_CFG_HOCO_FREQUENCY << BSP_FEATURE_BSP_OFS1_HOCOFRQ_OFFSET)) + +/** Build up SECMPUAC register based on MPU settings. */ +#define BSP_ROM_REG_MPU_CONTROL_SETTING \ + ((0xFFFFFCF0U) | \ + ((uint32_t) BSP_CFG_ROM_REG_MPU_PC0_ENABLE << 8) | \ + ((uint32_t) BSP_CFG_ROM_REG_MPU_PC1_ENABLE << 9) | \ + ((uint32_t) BSP_CFG_ROM_REG_MPU_REGION0_ENABLE) | \ + ((uint32_t) BSP_CFG_ROM_REG_MPU_REGION1_ENABLE << 1) | \ + ((uint32_t) BSP_CFG_ROM_REG_MPU_REGION2_ENABLE << 2) | \ + ((uint32_t) BSP_CFG_ROM_REG_MPU_REGION3_ENABLE << 3)) + +/*******************************************************************************************************************//** + * @addtogroup BSP_MCU + * @{ + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Typedef definitions + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Exported global variables (to be accessed by other files) + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Private global variables and functions + **********************************************************************************************************************/ + +#if !BSP_CFG_BOOT_IMAGE + + #if BSP_FEATURE_FLASH_SUPPORTS_ID_CODE == 1 + +/** ID code definitions defined here. */ +BSP_DONT_REMOVE static const uint32_t g_bsp_id_codes[] BSP_PLACE_IN_SECTION (BSP_SECTION_ID_CODE) = +{ + BSP_CFG_ID_CODE_LONG_1, + #if BSP_FEATURE_BSP_OSIS_PADDING + 0xFFFFFFFFU, + #endif + BSP_CFG_ID_CODE_LONG_2, + #if BSP_FEATURE_BSP_OSIS_PADDING + 0xFFFFFFFFU, + #endif + BSP_CFG_ID_CODE_LONG_3, + #if BSP_FEATURE_BSP_OSIS_PADDING + 0xFFFFFFFFU, + #endif + BSP_CFG_ID_CODE_LONG_4 +}; + #endif + + #if 33U != __CORTEX_M && 85U != __CORTEX_M // NOLINT(readability-magic-numbers) + +/** ROM registers defined here. Some have masks to make sure reserved bits are set appropriately. */ +BSP_DONT_REMOVE static const uint32_t g_bsp_rom_registers[] BSP_PLACE_IN_SECTION (BSP_SECTION_ROM_REGISTERS) = +{ + (uint32_t) BSP_CFG_ROM_REG_OFS0, + (uint32_t) BSP_ROM_REG_OFS1_SETTING, + ((uint32_t) BSP_CFG_ROM_REG_MPU_PC0_START & 0xFFFFFFFCU), + ((uint32_t) BSP_CFG_ROM_REG_MPU_PC0_END | 0x00000003U), + ((uint32_t) BSP_CFG_ROM_REG_MPU_PC1_START & 0xFFFFFFFCU), + ((uint32_t) BSP_CFG_ROM_REG_MPU_PC1_END | 0x00000003U), + ((uint32_t) BSP_CFG_ROM_REG_MPU_REGION0_START & BSP_FEATURE_BSP_MPU_REGION0_MASK & 0xFFFFFFFCU), + (((uint32_t) BSP_CFG_ROM_REG_MPU_REGION0_END & BSP_FEATURE_BSP_MPU_REGION0_MASK) | 0x00000003U), + ((uint32_t) BSP_CFG_ROM_REG_MPU_REGION1_START & 0xFFFFFFFCU), + ((uint32_t) BSP_CFG_ROM_REG_MPU_REGION1_END | 0x00000003U), + (((uint32_t) BSP_CFG_ROM_REG_MPU_REGION2_START & 0x407FFFFCU) | 0x40000000U), + (((uint32_t) BSP_CFG_ROM_REG_MPU_REGION2_END & 0x407FFFFCU) | 0x40000003U), + (((uint32_t) BSP_CFG_ROM_REG_MPU_REGION3_START & 0x407FFFFCU) | 0x40000000U), + (((uint32_t) BSP_CFG_ROM_REG_MPU_REGION3_END & 0x407FFFFCU) | 0x40000003U), + (uint32_t) BSP_ROM_REG_MPU_CONTROL_SETTING +}; + + #elif BSP_FEATURE_FLASH_SUPPORTS_ID_CODE == 1 + + #if !BSP_TZ_NONSECURE_BUILD +BSP_DONT_REMOVE static const uint32_t BSP_PLACE_IN_SECTION(".option_setting_ofs0") g_bsp_rom_ofs0 = + BSP_CFG_ROM_REG_OFS0; + +BSP_DONT_REMOVE static const uint32_t BSP_PLACE_IN_SECTION(".option_setting_sas") g_bsp_rom_sas = + 0xFFFFFFFF; + +BSP_DONT_REMOVE static const uint32_t BSP_PLACE_IN_SECTION(".option_setting_ofs1_sec") g_bsp_rom_ofs1 = + BSP_ROM_REG_OFS1_SETTING; + +BSP_DONT_REMOVE static const uint32_t BSP_PLACE_IN_SECTION(".option_setting_bps_sec0") g_bsp_rom_bps0 = + BSP_CFG_ROM_REG_BPS0; + +BSP_DONT_REMOVE static const uint32_t BSP_PLACE_IN_SECTION(".option_setting_pbps_sec0") g_bsp_rom_pbps0 = + BSP_CFG_ROM_REG_PBPS0; + + #endif + + #else /* CM33 & CM85 parts */ + + #if !BSP_TZ_NONSECURE_BUILD + +BSP_DONT_REMOVE static const uint32_t BSP_PLACE_IN_SECTION(".option_setting_ofs0") g_bsp_rom_ofs0 = + BSP_CFG_ROM_REG_OFS0; + + #if BSP_FEATURE_BSP_HAS_OFS2 +BSP_DONT_REMOVE static const uint32_t BSP_PLACE_IN_SECTION(".option_setting_ofs2") g_bsp_rom_ofs2 = + BSP_CFG_ROM_REG_OFS2; + + #endif + #if BSP_FEATURE_FLASH_HP_SUPPORTS_DUAL_BANK +BSP_DONT_REMOVE static const uint32_t BSP_PLACE_IN_SECTION(".option_setting_dualsel") g_bsp_rom_dualsel = + BSP_CFG_ROM_REG_DUALSEL; + + #endif +BSP_DONT_REMOVE static const uint32_t BSP_PLACE_IN_SECTION(".option_setting_sas") g_bsp_rom_sas = + 0xFFFFFFFF; + + #else + +BSP_DONT_REMOVE static const uint32_t BSP_PLACE_IN_SECTION(".option_setting_ofs1") g_bsp_rom_ofs1 = + BSP_ROM_REG_OFS1_SETTING; + + #if BSP_FEATURE_BSP_HAS_OFS3 +BSP_DONT_REMOVE static const uint32_t BSP_PLACE_IN_SECTION(".option_setting_ofs3") g_bsp_rom_ofs3 = + BSP_CFG_ROM_REG_OFS3; + + #endif +BSP_DONT_REMOVE static const uint32_t BSP_PLACE_IN_SECTION(".option_setting_banksel") g_bsp_rom_banksel = + 0xFFFFFFFF; +BSP_DONT_REMOVE static const uint32_t BSP_PLACE_IN_SECTION(".option_setting_bps0") g_bsp_rom_bps0 = + BSP_CFG_ROM_REG_BPS0; +BSP_DONT_REMOVE static const uint32_t BSP_PLACE_IN_SECTION(".option_setting_bps1") g_bsp_rom_bps1 = + BSP_CFG_ROM_REG_BPS1; +BSP_DONT_REMOVE static const uint32_t BSP_PLACE_IN_SECTION(".option_setting_bps2") g_bsp_rom_bps2 = + BSP_CFG_ROM_REG_BPS2; +BSP_DONT_REMOVE static const uint32_t BSP_PLACE_IN_SECTION(".option_setting_bps3") g_bsp_rom_bps3 = + BSP_CFG_ROM_REG_BPS3; +BSP_DONT_REMOVE static const uint32_t BSP_PLACE_IN_SECTION(".option_setting_pbps0") g_bsp_rom_pbps0 = + BSP_CFG_ROM_REG_PBPS0; +BSP_DONT_REMOVE static const uint32_t BSP_PLACE_IN_SECTION(".option_setting_pbps1") g_bsp_rom_pbps1 = + BSP_CFG_ROM_REG_PBPS1; +BSP_DONT_REMOVE static const uint32_t BSP_PLACE_IN_SECTION(".option_setting_pbps2") g_bsp_rom_pbps2 = + BSP_CFG_ROM_REG_PBPS2; +BSP_DONT_REMOVE static const uint32_t BSP_PLACE_IN_SECTION(".option_setting_pbps3") g_bsp_rom_pbps3 = + BSP_CFG_ROM_REG_PBPS3; + + #endif + + #if !BSP_TZ_NONSECURE_BUILD + +BSP_DONT_REMOVE static const uint32_t BSP_PLACE_IN_SECTION(".option_setting_ofs1_sec") g_bsp_rom_ofs1_sec = + BSP_ROM_REG_OFS1_SETTING; + + #if BSP_FEATURE_BSP_HAS_OFS3 +BSP_DONT_REMOVE static const uint32_t BSP_PLACE_IN_SECTION(".option_setting_ofs3_sec") g_bsp_rom_ofs3_sec = + BSP_CFG_ROM_REG_OFS3; + + #endif +BSP_DONT_REMOVE static const uint32_t BSP_PLACE_IN_SECTION(".option_setting_banksel_sec") g_bsp_rom_banksel_sec = + 0xFFFFFFFF; +BSP_DONT_REMOVE static const uint32_t BSP_PLACE_IN_SECTION(".option_setting_bps_sec0") g_bsp_rom_bps_sec0 = + BSP_CFG_ROM_REG_BPS0; +BSP_DONT_REMOVE static const uint32_t BSP_PLACE_IN_SECTION(".option_setting_bps_sec1") g_bsp_rom_bps_sec1 = + BSP_CFG_ROM_REG_BPS1; +BSP_DONT_REMOVE static const uint32_t BSP_PLACE_IN_SECTION(".option_setting_bps_sec2") g_bsp_rom_bps_sec2 = + BSP_CFG_ROM_REG_BPS2; +BSP_DONT_REMOVE static const uint32_t BSP_PLACE_IN_SECTION(".option_setting_bps_sec3") g_bsp_rom_bps_sec3 = + BSP_CFG_ROM_REG_BPS3; +BSP_DONT_REMOVE static const uint32_t BSP_PLACE_IN_SECTION(".option_setting_pbps_sec0") g_bsp_rom_pbps_sec0 = + BSP_CFG_ROM_REG_PBPS0; +BSP_DONT_REMOVE static const uint32_t BSP_PLACE_IN_SECTION(".option_setting_pbps_sec1") g_bsp_rom_pbps_sec1 = + BSP_CFG_ROM_REG_PBPS1; +BSP_DONT_REMOVE static const uint32_t BSP_PLACE_IN_SECTION(".option_setting_pbps_sec2") g_bsp_rom_pbps_sec2 = + BSP_CFG_ROM_REG_PBPS2; +BSP_DONT_REMOVE static const uint32_t BSP_PLACE_IN_SECTION(".option_setting_pbps_sec3") g_bsp_rom_pbps_sec3 = + BSP_CFG_ROM_REG_PBPS3; +BSP_DONT_REMOVE static const uint32_t BSP_PLACE_IN_SECTION(".option_setting_ofs1_sel") g_bsp_rom_ofs1_sel = + BSP_CFG_ROM_REG_OFS1_SEL; + + #if BSP_FEATURE_BSP_HAS_OFS3 +BSP_DONT_REMOVE static const uint32_t BSP_PLACE_IN_SECTION(".option_setting_ofs3_sel") g_bsp_rom_ofs3_sel = + BSP_CFG_ROM_REG_OFS3_SEL; + + #endif + #if BSP_FEATURE_FLASH_HP_SUPPORTS_DUAL_BANK +BSP_DONT_REMOVE static const uint32_t BSP_PLACE_IN_SECTION(".option_setting_banksel_sel") g_bsp_rom_banksel_sel = + BSP_CFG_ROM_REG_BANKSEL_SEL; + + #endif +BSP_DONT_REMOVE static const uint32_t BSP_PLACE_IN_SECTION(".option_setting_bps_sel0") g_bsp_rom_bps_sel0 = + BSP_CFG_ROM_REG_BPS_SEL0; +BSP_DONT_REMOVE static const uint32_t BSP_PLACE_IN_SECTION(".option_setting_bps_sel1") g_bsp_rom_bps_sel1 = + BSP_CFG_ROM_REG_BPS_SEL1; +BSP_DONT_REMOVE static const uint32_t BSP_PLACE_IN_SECTION(".option_setting_bps_sel2") g_bsp_rom_bps_sel2 = + BSP_CFG_ROM_REG_BPS_SEL2; +BSP_DONT_REMOVE static const uint32_t BSP_PLACE_IN_SECTION(".option_setting_bps_sel3") g_bsp_rom_bps_sel3 = + BSP_CFG_ROM_REG_BPS_SEL3; + + #endif + + #if 85U == __CORTEX_M && !BSP_TZ_NONSECURE_BUILD +BSP_DONT_REMOVE static const uint32_t BSP_PLACE_IN_SECTION(".option_setting_data_flash_fsblctrl0") g_bsp_rom_fsblctrl0 = + BSP_CFG_ROM_REG_FSBLCTRL0; + +BSP_DONT_REMOVE static const uint32_t BSP_PLACE_IN_SECTION(".option_setting_data_flash_fsblctrl1") g_bsp_rom_fsblctrl1 = + BSP_CFG_ROM_REG_FSBLCTRL1; + +BSP_DONT_REMOVE static const uint32_t BSP_PLACE_IN_SECTION(".option_setting_data_flash_fsblctrl2") g_bsp_rom_fsblctrl2 = + BSP_CFG_ROM_REG_FSBLCTRL2; + +BSP_DONT_REMOVE static const uint32_t BSP_PLACE_IN_SECTION(".option_setting_data_flash_sacc0") g_bsp_rom_sacc0 = + BSP_CFG_ROM_REG_SACC0; + +BSP_DONT_REMOVE static const uint32_t BSP_PLACE_IN_SECTION(".option_setting_data_flash_sacc1") g_bsp_rom_sacc1 = + BSP_CFG_ROM_REG_SACC1; + +BSP_DONT_REMOVE static const uint32_t BSP_PLACE_IN_SECTION(".option_setting_data_flash_samr") g_bsp_rom_samr = + BSP_CFG_ROM_REG_SAMR; + + #endif + + #endif + +#endif + +/** @} (end addtogroup BSP_MCU) */ diff --git a/bsp/renesas/ra8m1-ek/ra/fsp/src/bsp/mcu/all/bsp_sbrk.c b/bsp/renesas/ra8m1-ek/ra/fsp/src/bsp/mcu/all/bsp_sbrk.c new file mode 100644 index 000000000000..2bf2cbbe7c00 --- /dev/null +++ b/bsp/renesas/ra8m1-ek/ra/fsp/src/bsp/mcu/all/bsp_sbrk.c @@ -0,0 +1,106 @@ +/*********************************************************************************************************************** + * Copyright [2020-2023] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics America Inc. and may only be used with products + * of Renesas Electronics Corp. and its affiliates ("Renesas"). No other uses are authorized. Renesas products are + * sold pursuant to Renesas terms and conditions of sale. Purchasers are solely responsible for the selection and use + * of Renesas products and Renesas assumes no liability. No license, express or implied, to any intellectual property + * right is granted by Renesas. This software is protected under all applicable laws, including copyright laws. Renesas + * reserves the right to change or discontinue this software and/or this documentation. THE SOFTWARE AND DOCUMENTATION + * IS DELIVERED TO YOU "AS IS," AND RENESAS MAKES NO REPRESENTATIONS OR WARRANTIES, AND TO THE FULLEST EXTENT + * PERMISSIBLE UNDER APPLICABLE LAW, DISCLAIMS ALL WARRANTIES, WHETHER EXPLICITLY OR IMPLICITLY, INCLUDING WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT, WITH RESPECT TO THE SOFTWARE OR + * DOCUMENTATION. RENESAS SHALL HAVE NO LIABILITY ARISING OUT OF ANY SECURITY VULNERABILITY OR BREACH. TO THE MAXIMUM + * EXTENT PERMITTED BY LAW, IN NO EVENT WILL RENESAS BE LIABLE TO YOU IN CONNECTION WITH THE SOFTWARE OR DOCUMENTATION + * (OR ANY PERSON OR ENTITY CLAIMING RIGHTS DERIVED FROM YOU) FOR ANY LOSS, DAMAGES, OR CLAIMS WHATSOEVER, INCLUDING, + * WITHOUT LIMITATION, ANY DIRECT, CONSEQUENTIAL, SPECIAL, INDIRECT, PUNITIVE, OR INCIDENTAL DAMAGES; ANY LOST PROFITS, + * OTHER ECONOMIC DAMAGE, PROPERTY DAMAGE, OR PERSONAL INJURY; AND EVEN IF RENESAS HAS BEEN ADVISED OF THE POSSIBILITY + * OF SUCH LOSS, DAMAGES, CLAIMS OR COSTS. + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Includes , "Project Includes" + **********************************************************************************************************************/ +#if defined(__GNUC__) && !defined(__ARMCC_VERSION) +#include "bsp_api.h" +#include +#include + +/*********************************************************************************************************************** + * Macro definitions + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Typedef definitions + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Private function prototypes + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Exported global variables (to be accessed by other files) + **********************************************************************************************************************/ + +caddr_t _sbrk(int incr); + +/*********************************************************************************************************************** + * Private global variables and functions + **********************************************************************************************************************/ + +/*******************************************************************************************************************//** + * @addtogroup BSP_MCU + * @{ + **********************************************************************************************************************/ + +/*******************************************************************************************************************//** + * FSP implementation of the standard library _sbrk() function. + * @param[in] inc The number of bytes being asked for by malloc(). + * + * @note This function overrides the _sbrk version that exists in the newlib library that is linked with. + * That version improperly relies on the SP as part of it's allocation strategy. This is bad in general and + * worse in an RTOS environment. This version insures that we allocate the byte pool requested by malloc() + * only from our allocated HEAP area. Also note that newlib is pre-built and forces the pagesize used by + * malloc() to be 4096. That requires that we have a HEAP of at least 4096 if we are to support malloc(). + * @retval Address of allocated area if successful, -1 otherwise. + **********************************************************************************************************************/ + +caddr_t _sbrk (int incr) +{ + extern char _Heap_Begin __asm("__HeapBase"); ///< Defined by the linker. + + extern char _Heap_Limit __asm("__HeapLimit"); ///< Defined by the linker. + + uint32_t bytes = (uint32_t) incr; + static char * current_heap_end = 0; + char * current_block_address; + + if (current_heap_end == 0) + { + current_heap_end = &_Heap_Begin; + } + + current_block_address = current_heap_end; + + /* The returned address must be aligned to a word boundary to prevent hard faults on cores that do not support + * unaligned access. We assume the heap starts on a word boundary and make sure all allocations are a multiple + * of 4. */ + bytes = (bytes + 3U) & (~3U); + if (current_heap_end + bytes > &_Heap_Limit) + { + /** Heap has overflowed */ + errno = ENOMEM; + + return (caddr_t) -1; + } + + current_heap_end += bytes; + + return (caddr_t) current_block_address; +} + +#endif + +/******************************************************************************************************************//** + * @} (end addtogroup BSP_MCU) + *********************************************************************************************************************/ diff --git a/bsp/renesas/ra8m1-ek/ra/fsp/src/bsp/mcu/all/bsp_security.c b/bsp/renesas/ra8m1-ek/ra/fsp/src/bsp/mcu/all/bsp_security.c new file mode 100644 index 000000000000..4a11f38d1e54 --- /dev/null +++ b/bsp/renesas/ra8m1-ek/ra/fsp/src/bsp/mcu/all/bsp_security.c @@ -0,0 +1,637 @@ +/*********************************************************************************************************************** + * Copyright [2020-2023] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics America Inc. and may only be used with products + * of Renesas Electronics Corp. and its affiliates ("Renesas"). No other uses are authorized. Renesas products are + * sold pursuant to Renesas terms and conditions of sale. Purchasers are solely responsible for the selection and use + * of Renesas products and Renesas assumes no liability. No license, express or implied, to any intellectual property + * right is granted by Renesas. This software is protected under all applicable laws, including copyright laws. Renesas + * reserves the right to change or discontinue this software and/or this documentation. THE SOFTWARE AND DOCUMENTATION + * IS DELIVERED TO YOU "AS IS," AND RENESAS MAKES NO REPRESENTATIONS OR WARRANTIES, AND TO THE FULLEST EXTENT + * PERMISSIBLE UNDER APPLICABLE LAW, DISCLAIMS ALL WARRANTIES, WHETHER EXPLICITLY OR IMPLICITLY, INCLUDING WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT, WITH RESPECT TO THE SOFTWARE OR + * DOCUMENTATION. RENESAS SHALL HAVE NO LIABILITY ARISING OUT OF ANY SECURITY VULNERABILITY OR BREACH. TO THE MAXIMUM + * EXTENT PERMITTED BY LAW, IN NO EVENT WILL RENESAS BE LIABLE TO YOU IN CONNECTION WITH THE SOFTWARE OR DOCUMENTATION + * (OR ANY PERSON OR ENTITY CLAIMING RIGHTS DERIVED FROM YOU) FOR ANY LOSS, DAMAGES, OR CLAIMS WHATSOEVER, INCLUDING, + * WITHOUT LIMITATION, ANY DIRECT, CONSEQUENTIAL, SPECIAL, INDIRECT, PUNITIVE, OR INCIDENTAL DAMAGES; ANY LOST PROFITS, + * OTHER ECONOMIC DAMAGE, PROPERTY DAMAGE, OR PERSONAL INJURY; AND EVEN IF RENESAS HAS BEEN ADVISED OF THE POSSIBILITY + * OF SUCH LOSS, DAMAGES, CLAIMS OR COSTS. + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Includes , "Project Includes" + **********************************************************************************************************************/ +#include "bsp_api.h" + +#if BSP_FEATURE_TZ_HAS_TRUSTZONE + +/*********************************************************************************************************************** + * Macro definitions + **********************************************************************************************************************/ + #define BSP_PRV_TZ_REG_KEY (0xA500U) + #define BSP_PRV_AIRCR_VECTKEY (0x05FA0000U) + #define RA_NOT_DEFINED (0) + +/* Branch T3 Instruction (IMM11=-2) */ + #define BSP_PRV_INFINITE_LOOP (0xE7FE) + + #define BSP_SAU_REGION_CODE_FLASH_NSC (0U) + #define BSP_SAU_REGION_1_NS (1U) + #define BSP_SAU_REGION_SRAM_NSC (2U) + #define BSP_SAU_REGION_2_NS (3U) + #define BSP_SAU_REGION_3_NS (4U) + +/* Non-secure regions defined by the IDAU. These regions must be defined as non-secure in the SAU. */ + #define BSP_PRV_SAU_NS_REGION_1_BASE_ADDRESS (0x10000000U) + #define BSP_PRV_SAU_NS_REGION_1_LIMIT_ADDRESS (0x1FFFFFFFU) + #define BSP_PRV_SAU_NS_REGION_2_BASE_ADDRESS (0x30000000U) + #define BSP_PRV_SAU_NS_REGION_2_LIMIT_ADDRESS (0x3FFFFFFFU) + #define BSP_PRV_SAU_NS_REGION_3_BASE_ADDRESS (0x50000000U) + #define BSP_PRV_SAU_NS_REGION_3_LIMIT_ADDRESS (0xDFFFFFFFU) + +/*********************************************************************************************************************** + * Typedef definitions + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Exported global variables (to be accessed by other files) + **********************************************************************************************************************/ +void R_BSP_SecurityInit(void); +void R_BSP_PinCfgSecurityInit(void); +void R_BSP_ElcCfgSecurityInit(void); + +/*********************************************************************************************************************** + * External symbols + **********************************************************************************************************************/ +extern const fsp_vector_t g_vector_table[BSP_ICU_VECTOR_MAX_ENTRIES]; + + #if defined(__ARMCC_VERSION) || defined(__ICCARM__) +typedef void (BSP_CMSE_NONSECURE_CALL * bsp_nonsecure_func_t)(void); + #elif defined(__GNUC__) +typedef BSP_CMSE_NONSECURE_CALL void (*volatile bsp_nonsecure_func_t)(void); + #endif + + #if defined(__IAR_SYSTEMS_ICC__) && BSP_TZ_SECURE_BUILD + + #pragma section=".tz_flash_ns_start" +BSP_DONT_REMOVE uint32_t const * const gp_start_of_nonsecure_flash = (uint32_t *) __section_begin(".tz_flash_ns_start"); + #pragma section="Veneer$$CMSE" +BSP_DONT_REMOVE uint32_t const * const gp_start_of_nonsecure_callable_flash = (uint32_t *) __section_begin( + "Veneer$$CMSE"); + #pragma section=".tz_ram_ns_start" +BSP_DONT_REMOVE uint32_t const * const gp_start_of_nonsecure_ram = (uint32_t *) __section_begin(".tz_ram_ns_start"); + #pragma section=".tz_ram_nsc_start" +BSP_DONT_REMOVE uint32_t const * const gp_start_of_nonsecure_callable_ram = (uint32_t *) __section_begin( + ".tz_ram_nsc_start"); + #pragma section=".tz_data_flash_ns_start" +BSP_DONT_REMOVE uint32_t const * const gp_start_of_nonsecure_data_flash = (uint32_t *) __section_begin( + ".tz_data_flash_ns_start"); + + #if BSP_FEATURE_BSP_HAS_ITCM +extern const uint32_t __tz_ITCM_N; +extern const uint32_t __tz_ITCM_S; + #endif + + #if BSP_FEATURE_BSP_HAS_DTCM +extern const uint32_t __tz_DTCM_N; +extern const uint32_t __tz_DTCM_S; + #endif + + #if BSP_FEATURE_BSP_HAS_ITCM +BSP_DONT_REMOVE uint32_t const * const gp_start_of_nonsecure_itcm = (uint32_t *) &__tz_ITCM_N; +BSP_DONT_REMOVE uint32_t const * const gp_start_of_secure_itcm = (uint32_t *) &__tz_ITCM_S; + #endif + + #if BSP_FEATURE_BSP_HAS_DTCM +BSP_DONT_REMOVE uint32_t const * const gp_start_of_nonsecure_dtcm = (uint32_t *) &__tz_DTCM_N; +BSP_DONT_REMOVE uint32_t const * const gp_start_of_secure_dtcm = (uint32_t *) &__tz_DTCM_S; + #endif + + #elif defined(__ARMCC_VERSION) + #if BSP_FEATURE_BSP_HAS_ITCM +extern const uint32_t Image$$__tz_ITCM_N$$Base; +extern const uint32_t Image$$__tz_ITCM_S$$Base; + #endif + #if BSP_FEATURE_BSP_HAS_DTCM +extern const uint32_t Image$$__tz_DTCM_N$$Base; +extern const uint32_t Image$$__tz_DTCM_S$$Base; + #endif + #if BSP_FEATURE_BSP_HAS_STBRAMSABAR +extern const uint32_t Image$$__tz_STANDBY_SRAM_N$$Base; +extern const uint32_t Image$$__tz_STANDBY_SRAM_S$$Base; + #endif +extern const uint32_t Image$$__tz_FLASH_N$$Base; + #if BSP_FEATURE_TZ_VERSION == 2 +extern const uint32_t Image$$__FLASH_NSC_START$$Base; + #else +extern const uint32_t Image$$__tz_FLASH_C$$Base; + #endif +extern const uint32_t Image$$__tz_FLASH_S$$Base; +extern const uint32_t Image$$__tz_RAM_N$$Base; + #if BSP_FEATURE_TZ_VERSION == 2 +extern const uint32_t Image$$__RAM_NSC_START$$Base; + #else +extern const uint32_t Image$$__tz_RAM_C$$Base; + #endif +extern const uint32_t Image$$__tz_RAM_S$$Base; +extern const uint32_t Image$$__tz_DATA_FLASH_N$$Base; +extern const uint32_t Image$$__tz_DATA_FLASH_S$$Base; +extern const uint32_t Image$$__tz_QSPI_FLASH_N$$Base; +extern const uint32_t Image$$__tz_QSPI_FLASH_S$$Base; +extern const uint32_t Image$$__tz_SDRAM_N$$Base; +extern const uint32_t Image$$__tz_SDRAM_S$$Base; +extern const uint32_t Image$$__tz_OSPI_DEVICE_0_N$$Base; +extern const uint32_t Image$$__tz_OSPI_DEVICE_0_S$$Base; +extern const uint32_t Image$$__tz_OSPI_DEVICE_1_N$$Base; +extern const uint32_t Image$$__tz_OSPI_DEVICE_1_S$$Base; +extern const uint32_t Image$$__tz_OPTION_SETTING_N$$Base; +extern const uint32_t Image$$__tz_OPTION_SETTING_S$$Base; +extern const uint32_t Image$$__tz_OPTION_SETTING_S_N$$Base; +extern const uint32_t Image$$__tz_OPTION_SETTING_S_S$$Base; +extern const uint32_t Image$$__tz_ID_CODE_N$$Base; +extern const uint32_t Image$$__tz_ID_CODE_S$$Base; + + #if BSP_FEATURE_BSP_HAS_ITCM + #define __tz_ITCM_N Image$$__tz_ITCM_N$$Base + #define __tz_ITCM_S Image$$__tz_ITCM_S$$Base + #endif + #if BSP_FEATURE_BSP_HAS_DTCM + #define __tz_DTCM_N Image$$__tz_DTCM_N$$Base + #define __tz_DTCM_S Image$$__tz_DTCM_S$$Base + #endif + #if BSP_FEATURE_BSP_HAS_STBRAMSABAR + #define __tz_STANDBY_SRAM_N Image$$__tz_STANDBY_SRAM_N$$Base + #define __tz_STANDBY_SRAM_S Image$$__tz_STANDBY_SRAM_S$$Base + #endif + #define __tz_FLASH_N Image$$__tz_FLASH_N$$Base + #if BSP_FEATURE_TZ_VERSION == 2 + #define __tz_FLASH_C Image$$__FLASH_NSC_START$$Base; + #else + #define __tz_FLASH_C Image$$__tz_FLASH_C$$Base + #endif + #define __tz_FLASH_S Image$$__tz_FLASH_S$$Base + #define __tz_RAM_N Image$$__tz_RAM_N$$Base + #if BSP_FEATURE_TZ_VERSION == 2 + #define __tz_RAM_C Image$$__RAM_NSC_START$$Base + #else + #define __tz_RAM_C Image$$__tz_RAM_C$$Base + #endif + #define __tz_RAM_S Image$$__tz_RAM_S$$Base + #define __tz_DATA_FLASH_N Image$$__tz_DATA_FLASH_N$$Base + #define __tz_DATA_FLASH_S Image$$__tz_DATA_FLASH_S$$Base + #define __tz_QSPI_FLASH_N Image$$__tz_QSPI_FLASH_N$$Base + #define __tz_QSPI_FLASH_S Image$$__tz_QSPI_FLASH_S$$Base + #define __tz_SDRAM_N Image$$__tz_SDRAM_N$$Base + #define __tz_SDRAM_S Image$$__tz_SDRAM_S$$Base + #define __tz_OSPI_DEVICE_0_N Image$$__tz_OSPI_DEVICE_0_N$$Base + #define __tz_OSPI_DEVICE_0_S Image$$__tz_OSPI_DEVICE_0_S$$Base + #define __tz_OSPI_DEVICE_1_N Image$$__tz_OSPI_DEVICE_1_N$$Base + #define __tz_OSPI_DEVICE_1_S Image$$__tz_OSPI_DEVICE_1_S$$Base + #define __tz_OPTION_SETTING_N Image$$__tz_OPTION_SETTING_N$$Base + #define __tz_OPTION_SETTING_S Image$$__tz_OPTION_SETTING_S$$Base + #define __tz_OPTION_SETTING_S_N Image$$__tz_OPTION_SETTING_S_N$$Base + #define __tz_OPTION_SETTING_S_S Image$$__tz_OPTION_SETTING_S_S$$Base + #define __tz_ID_CODE_N Image$$__tz_ID_CODE_N$$Base + #define __tz_ID_CODE_S Image$$__tz_ID_CODE_S$$Base + +/* Assign region addresses to pointers so that AC6 includes symbols that can be used to determine the + * start addresses of Secure, Non-secure and Non-secure Callable regions. */ + #if BSP_FEATURE_BSP_HAS_ITCM +BSP_DONT_REMOVE uint32_t const * const gp_start_of_nonsecure_itcm = &__tz_ITCM_N; +BSP_DONT_REMOVE uint32_t const * const gp_start_of_secure_itcm = &__tz_ITCM_S; + #endif + #if BSP_FEATURE_BSP_HAS_DTCM +BSP_DONT_REMOVE uint32_t const * const gp_start_of_nonsecure_dtcm = &__tz_DTCM_N; +BSP_DONT_REMOVE uint32_t const * const gp_start_of_secure_dtcm = &__tz_DTCM_S; + #endif + #if BSP_FEATURE_BSP_HAS_STBRAMSABAR +BSP_DONT_REMOVE uint32_t const * const gp_start_of_nonsecure_standby_sram = &__tz_STANDBY_SRAM_N; +BSP_DONT_REMOVE uint32_t const * const gp_start_of_secure_standby_sram = &__tz_STANDBY_SRAM_S; + #endif +BSP_DONT_REMOVE uint32_t const * const gp_start_of_nonsecure_flash = &__tz_FLASH_N; +BSP_DONT_REMOVE uint32_t const * const gp_start_of_nonsecure_callable_flash = &__tz_FLASH_C; +BSP_DONT_REMOVE uint32_t const * const gp_start_of_secure_flash = &__tz_FLASH_S; +BSP_DONT_REMOVE uint32_t const * const gp_start_of_nonsecure_ram = &__tz_RAM_N; +BSP_DONT_REMOVE uint32_t const * const gp_start_of_nonsecure_callable_ram = &__tz_RAM_C; +BSP_DONT_REMOVE uint32_t const * const gp_start_of_secure_ram = &__tz_RAM_S; +BSP_DONT_REMOVE uint32_t const * const gp_start_of_nonsecure_data_flash = &__tz_DATA_FLASH_N; +BSP_DONT_REMOVE uint32_t const * const gp_start_of_secure_data_flash = &__tz_DATA_FLASH_S; + + #if BSP_TZ_SECURE_BUILD + +BSP_DONT_REMOVE uint32_t const * const gp_start_of_nonsecure_qspi_flash = &__tz_QSPI_FLASH_N; +BSP_DONT_REMOVE uint32_t const * const gp_start_of_secure_qspi_flash = &__tz_QSPI_FLASH_S; +BSP_DONT_REMOVE uint32_t const * const gp_start_of_nonsecure_sdram = &__tz_SDRAM_N; +BSP_DONT_REMOVE uint32_t const * const gp_start_of_secure_sdram = &__tz_SDRAM_S; +BSP_DONT_REMOVE uint32_t const * const gp_start_of_nonsecure_ospi_device_0 = &__tz_OSPI_DEVICE_0_N; +BSP_DONT_REMOVE uint32_t const * const gp_start_of_secure_ospi_device_0 = &__tz_OSPI_DEVICE_0_S; +BSP_DONT_REMOVE uint32_t const * const gp_start_of_nonsecure_ospi_device_1 = &__tz_OSPI_DEVICE_1_N; +BSP_DONT_REMOVE uint32_t const * const gp_start_of_secure_ospi_device_1 = &__tz_OSPI_DEVICE_1_S; +BSP_DONT_REMOVE uint32_t const * const gp_start_of_nonsecure_option_setting = &__tz_OPTION_SETTING_N; +BSP_DONT_REMOVE uint32_t const * const gp_start_of_secure_option_setting = &__tz_OPTION_SETTING_S; +BSP_DONT_REMOVE uint32_t const * const gp_start_of_nonsecure_option_setting_s = &__tz_OPTION_SETTING_S_N; +BSP_DONT_REMOVE uint32_t const * const gp_start_of_secure_option_setting_s = &__tz_OPTION_SETTING_S_S; +BSP_DONT_REMOVE uint32_t const * const gp_start_of_nonsecure_id_code = &__tz_ID_CODE_N; +BSP_DONT_REMOVE uint32_t const * const gp_start_of_secure_id_code = &__tz_ID_CODE_S; + + #endif + + #elif defined(__GNUC__) + + #if defined(__llvm__) && !defined(__CLANG_TIDY__) +extern const uint32_t __tz_FLASH_N; + #else +extern const uint32_t FLASH_NS_IMAGE_START; + #endif + #if BSP_FEATURE_TZ_VERSION == 2 +extern const uint32_t __FLASH_NSC_START; + #else +extern const uint32_t __tz_FLASH_C; + #endif +extern const uint32_t __tz_DATA_FLASH_N; +extern const uint32_t __tz_RAM_N; + #if BSP_FEATURE_TZ_VERSION == 2 +extern const uint32_t __RAM_NSC_START; + #else +extern const uint32_t __tz_RAM_C; + #endif + + #if BSP_FEATURE_BSP_HAS_ITCM +extern const uint32_t __tz_ITCM_N; +extern const uint32_t __tz_ITCM_S; + #endif + + #if BSP_FEATURE_BSP_HAS_DTCM +extern const uint32_t __tz_DTCM_N; +extern const uint32_t __tz_DTCM_S; + #endif + + #if defined(__llvm__) && !defined(__CLANG_TIDY__) +BSP_DONT_REMOVE uint32_t const * const gp_start_of_nonsecure_flash = &__tz_FLASH_N; + #else +BSP_DONT_REMOVE uint32_t const * const gp_start_of_nonsecure_flash = &FLASH_NS_IMAGE_START; + #endif + #if BSP_FEATURE_TZ_VERSION == 2 +BSP_DONT_REMOVE uint32_t const * const gp_start_of_nonsecure_callable_flash = (uint32_t *) &__FLASH_NSC_START; + #else +BSP_DONT_REMOVE uint32_t const * const gp_start_of_nonsecure_callable_flash = (uint32_t *) &__tz_FLASH_C; + #endif +BSP_DONT_REMOVE uint32_t const * const gp_start_of_nonsecure_data_flash = (uint32_t *) &__tz_DATA_FLASH_N; +BSP_DONT_REMOVE uint32_t const * const gp_start_of_nonsecure_ram = (uint32_t *) &__tz_RAM_N; + #if BSP_FEATURE_TZ_VERSION == 2 +BSP_DONT_REMOVE uint32_t const * const gp_start_of_nonsecure_callable_ram = (uint32_t *) &__RAM_NSC_START; + #else +BSP_DONT_REMOVE uint32_t const * const gp_start_of_nonsecure_callable_ram = (uint32_t *) &__tz_RAM_C; + #endif + + #if BSP_FEATURE_BSP_HAS_ITCM +BSP_DONT_REMOVE uint32_t const * const gp_start_of_nonsecure_itcm = (uint32_t *) &__tz_ITCM_N; +BSP_DONT_REMOVE uint32_t const * const gp_start_of_secure_itcm = (uint32_t *) &__tz_ITCM_S; + #endif + + #if BSP_FEATURE_BSP_HAS_DTCM +BSP_DONT_REMOVE uint32_t const * const gp_start_of_nonsecure_dtcm = (uint32_t *) &__tz_DTCM_N; +BSP_DONT_REMOVE uint32_t const * const gp_start_of_secure_dtcm = (uint32_t *) &__tz_DTCM_S; + #endif + + #endif + + #if BSP_TZ_SECURE_BUILD + +/*******************************************************************************************************************//** + * @addtogroup BSP_MCU + * @{ + **********************************************************************************************************************/ + +/*******************************************************************************************************************//** + * Enter the non-secure code environment. + * + * This function configures the non-secure MSP and vector table then jumps to the non-secure project's Reset_Handler. + * + * @note This function (and therefore the non-secure code) should not return. + **********************************************************************************************************************/ +void R_BSP_NonSecureEnter (void) +{ + /* The NS vector table is at the start of the NS section in flash */ + uint32_t const * p_ns_vector_table = + (uint32_t *) ((uint32_t) gp_start_of_nonsecure_flash | BSP_FEATURE_TZ_NS_OFFSET); + + /* Set up the NS Reset_Handler to be called */ + uint32_t const * p_ns_reset_address = (uint32_t const *) ((uint32_t) p_ns_vector_table + sizeof(uint32_t)); + bsp_nonsecure_func_t p_ns_reset = (bsp_nonsecure_func_t) (*p_ns_reset_address); + + #if BSP_TZ_CFG_NON_SECURE_APPLICATION_FALLBACK + + /* Check if the NS application exists. If the address of the Reset_Handler is all '1's, then assume that + * the NS application has not been programmed. + * + * If the secure application attempts to jump to an invalid instruction, a HardFault will occur. If the + * MCU is in NSECSD state, then the debugger will be unable to connect and program the NS Application. Jumping to + * a valid instruction ensures that the debugger will be able to connect. + */ + if (UINT32_MAX == *p_ns_reset_address) + { + p_ns_reset = (bsp_nonsecure_func_t) ((uint32_t) gp_start_of_nonsecure_ram | BSP_FEATURE_TZ_NS_OFFSET); + + /* Write an infinite loop into start of NS RAM (Branch T3 Instruction (b.n )). */ + uint16_t * infinite_loop = (uint16_t *) ((uint32_t) gp_start_of_nonsecure_ram | BSP_FEATURE_TZ_NS_OFFSET); + *infinite_loop = BSP_PRV_INFINITE_LOOP; + + /* Set the NS stack pointer to a valid location in NS RAM. */ + __TZ_set_MSP_NS((uint32_t) gp_start_of_nonsecure_ram + 0x20U + BSP_FEATURE_TZ_NS_OFFSET); + + /* Jump to the infinite loop. */ + p_ns_reset(); + } + #endif + + /* Set the NS vector table address */ + SCB_NS->VTOR = (uint32_t) p_ns_vector_table; + + /* Set the NS stack pointer to the first entry in the NS vector table */ + __TZ_set_MSP_NS(p_ns_vector_table[0]); + + /* Jump to the NS Reset_Handler */ + p_ns_reset(); +} + +/** @} (end addtogroup BSP_MCU) */ + +/*******************************************************************************************************************//** + * Initialize security features for TrustZone. + * + * This function initializes ARM security register and Renesas SAR registers for secure projects. + * + * @note IDAU settings must be configured to match project settings with a separate configuration tool. + **********************************************************************************************************************/ +void R_BSP_SecurityInit (void) +{ + /* Disable PRCR for SARs. */ + R_BSP_RegisterProtectDisable(BSP_REG_PROTECT_SAR); + + #if 0 == BSP_FEATURE_TZ_HAS_DLM + + /* If DLM is not implemented, then the TrustZone partitions must be set at run-time. */ + R_PSCU->CFSAMONA = (uint32_t) gp_start_of_nonsecure_flash & R_PSCU_CFSAMONA_CFS2_Msk; + R_PSCU->CFSAMONB = (uint32_t) gp_start_of_nonsecure_callable_flash & R_PSCU_CFSAMONB_CFS1_Msk; + R_PSCU->DFSAMON = (uint32_t) gp_start_of_nonsecure_data_flash & R_PSCU_DFSAMON_DFS_Msk; + R_PSCU->SSAMONA = (uint32_t) gp_start_of_nonsecure_ram & R_PSCU_SSAMONA_SS2_Msk; + R_PSCU->SSAMONB = (uint32_t) gp_start_of_nonsecure_callable_ram & R_PSCU_SSAMONB_SS1_Msk; + #endif + + #if BSP_FEATURE_BSP_HAS_ITCM == 1 + + /* Total ITCM block size in bytes is equal to 2 ^ (BLKSZ + 5). */ + uint32_t itcm_block_size = ((MEMSYSCTL->ITGU_CFG & MEMSYSCTL_ITGU_CFG_BLKSZ_Msk) >> MEMSYSCTL_ITGU_CFG_BLKSZ_Pos) + + 5U; + + /* The number of secure ITCM blocks is equal to size of the secure region in bytes divided by the ITCM block size. */ + uint32_t itcm_num_sec_blocks = ((uint32_t) gp_start_of_nonsecure_itcm - (uint32_t) gp_start_of_secure_itcm) >> + itcm_block_size; + + /* Set all secure blocks to '0' and all non-secure blocks to 1. */ + MEMSYSCTL->ITGU_LUT[0] = ~((1U << itcm_num_sec_blocks) - 1U); + #endif + + #if BSP_FEATURE_BSP_HAS_DTCM == 1 + + /* Total DTCM block size in bytes is equal to 2 ^ (BLKSZ + 5). */ + uint32_t dtcm_block_size = ((MEMSYSCTL->DTGU_CFG & MEMSYSCTL_DTGU_CFG_BLKSZ_Msk) >> MEMSYSCTL_DTGU_CFG_BLKSZ_Pos) + + 5U; + + /* The number of secure DTCM blocks is equal to size of the secure region in bytes divided by the DTCM block size. */ + uint32_t dtcm_num_sec_blocks = ((uint32_t) gp_start_of_nonsecure_dtcm - (uint32_t) gp_start_of_secure_dtcm) >> + dtcm_block_size; + + /* Set all secure blocks to '0' and all non-secure blocks to 1. */ + MEMSYSCTL->DTGU_LUT[0] = ~((1U << dtcm_num_sec_blocks) - 1U); + #endif + + #if __SAUREGION_PRESENT + + /* Configure IDAU to divide SRAM region into NSC/NS. */ + R_CPSCU->SRAMSABAR0 = (uint32_t) gp_start_of_nonsecure_ram & R_CPSCU_SRAMSABAR0_SRAMSABAR_Msk; + R_CPSCU->SRAMSABAR1 = (uint32_t) gp_start_of_nonsecure_ram & R_CPSCU_SRAMSABAR1_SRAMSABAR_Msk; + + /* Configure SAU region used for Code Flash Non-secure callable. */ + SAU->RNR = BSP_SAU_REGION_CODE_FLASH_NSC; + SAU->RBAR = (uint32_t) gp_start_of_nonsecure_callable_flash & SAU_RBAR_BADDR_Msk; + SAU->RLAR = (((uint32_t) gp_start_of_nonsecure_flash - 1U) & SAU_RLAR_LADDR_Msk) | SAU_RLAR_NSC_Msk | + SAU_RLAR_ENABLE_Msk; + + /* Configure SAU region used for Non-secure region 1: + * - ITCM + * - Code Flash + * - On-chip flash (Factory Flash) + * - On-chip flash (option-setting memory) + */ + SAU->RNR = BSP_SAU_REGION_1_NS; + SAU->RBAR = (uint32_t) BSP_PRV_SAU_NS_REGION_1_BASE_ADDRESS & SAU_RBAR_BADDR_Msk; + SAU->RLAR = ((BSP_PRV_SAU_NS_REGION_1_LIMIT_ADDRESS) &SAU_RLAR_LADDR_Msk) | SAU_RLAR_ENABLE_Msk; + + /* Configure SAU region used for Non-secure callable SRAM. */ + SAU->RNR = BSP_SAU_REGION_SRAM_NSC; + SAU->RBAR = (uint32_t) gp_start_of_nonsecure_callable_ram & SAU_RBAR_BADDR_Msk; + SAU->RLAR = (((uint32_t) gp_start_of_nonsecure_ram - 1U) & SAU_RLAR_LADDR_Msk) | SAU_RLAR_NSC_Msk | + SAU_RLAR_ENABLE_Msk; + + /* Configure SAU region used for Non-secure region 2: + * - DTCM + * - On-chip SRAM + * - Standby SRAM + * - On-chip flash (data flash) + */ + SAU->RNR = BSP_SAU_REGION_2_NS; + SAU->RBAR = ((uint32_t) BSP_PRV_SAU_NS_REGION_2_BASE_ADDRESS & SAU_RBAR_BADDR_Msk) | BSP_FEATURE_TZ_NS_OFFSET; + SAU->RLAR = (BSP_PRV_SAU_NS_REGION_2_LIMIT_ADDRESS & SAU_RLAR_LADDR_Msk) | SAU_RLAR_ENABLE_Msk; + + /* Configure SAU region used for Non-secure region 3: + * - Peripheral I/O registers + * - Flash I/O registers + * - External address space (CS area) + * - External address space (SDRAM area) + * - External address space (OSPI area) + */ + SAU->RNR = BSP_SAU_REGION_3_NS; + SAU->RBAR = BSP_PRV_SAU_NS_REGION_3_BASE_ADDRESS & SAU_RBAR_BADDR_Msk; + SAU->RLAR = (BSP_PRV_SAU_NS_REGION_3_LIMIT_ADDRESS & SAU_RLAR_LADDR_Msk) | SAU_RLAR_ENABLE_Msk; + + /* Enable the SAU. */ + SAU->CTRL = SAU_CTRL_ENABLE_Msk; + + /* Cache maintenance is required when changing security attribution of an address. + * Barrier instructions are required to guarantee intended operation + * (See Arm Cortex-M85 Technical Reference Manual Section 10.9.3). */ + SCB_InvalidateICache(); + #else + + /* Setting SAU_CTRL.ALLNS to 1 allows the security attribution of all addresses to be set by the IDAU in the + * system. */ + SAU->CTRL = SAU_CTRL_ALLNS_Msk; + #endif + + /* The following section of code to configure SCB->AIRCR, SCB->NSACR, and FPU->FPCCR is taken from + * system_ARMCM33.c in the CMSIS_5 repository. SCB->SCR SLEEPDEEPS bit is not configured because the + * SCB->SCR SLEEPDEEP bit is ignored on RA MCUs. */ + #if defined(SCB_CSR_AIRCR_INIT) && (SCB_CSR_AIRCR_INIT == 1U) + + /* Configure whether non-secure projects have access to system reset, whether bus fault, hard fault, and NMI target + * secure or non-secure, and whether non-secure interrupt priorities are reduced to the lowest 8 priority levels. */ + SCB->AIRCR = (SCB->AIRCR & ~(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_SYSRESETREQS_Msk | + SCB_AIRCR_BFHFNMINS_Msk | SCB_AIRCR_PRIS_Msk)) | + BSP_PRV_AIRCR_VECTKEY | + ((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 + + #if defined(__FPU_USED) && (__FPU_USED == 1U) && \ + defined(TZ_FPU_NS_USAGE) && (TZ_FPU_NS_USAGE == 1U) + + /* Configure whether the FPU can be accessed in the non-secure project. */ + 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)); + + /* Configure whether FPU registers are always treated as non-secure (and therefore not preserved on the stack when + * switching from secure to non-secure), and whether the FPU registers should be cleared on exception return. */ + 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 BSP_FEATURE_BSP_HAS_TZFSAR + + /* Set TrustZone filter to Secure. */ + R_TZF->TZFSAR = ~R_TZF_TZFSAR_TZFSA0_Msk; + #endif + + /* Set TrustZone filter exception response. */ + R_TZF->TZFPT = BSP_PRV_TZ_REG_KEY + 1U; + R_TZF->TZFOAD = BSP_PRV_TZ_REG_KEY + BSP_TZ_CFG_EXCEPTION_RESPONSE; + R_TZF->TZFPT = BSP_PRV_TZ_REG_KEY + 0U; + + /* Initialize PSARs. */ + R_PSCU->PSARB = BSP_TZ_CFG_PSARB; + R_PSCU->PSARC = BSP_TZ_CFG_PSARC; + R_PSCU->PSARD = BSP_TZ_CFG_PSARD; + R_PSCU->PSARE = BSP_TZ_CFG_PSARE; + R_PSCU->MSSAR = BSP_TZ_CFG_MSSAR; + + /* Initialize Type 2 SARs. */ + #ifdef BSP_TZ_CFG_CSAR + R_CPSCU->CSAR = BSP_TZ_CFG_CSAR; /* Cache Security Attribution. */ + #endif + R_SYSTEM->RSTSAR = BSP_TZ_CFG_RSTSAR; /* RSTSRn Security Attribution. */ + R_SYSTEM->LVDSAR = BSP_TZ_CFG_LVDSAR; /* LVD Security Attribution. */ + R_SYSTEM->CGFSAR = BSP_TZ_CFG_CGFSAR; /* CGC Security Attribution. */ + R_SYSTEM->LPMSAR = BSP_TZ_CFG_LPMSAR; /* LPM Security Attribution. */ + R_SYSTEM->DPFSAR = BSP_TZ_CFG_DPFSAR; /* Deep Standby Interrupt Factor Security Attribution. */ + #ifdef BSP_TZ_CFG_RSCSAR + R_SYSTEM->RSCSAR = BSP_TZ_CFG_RSCSAR; /* RAM Standby Control Security Attribution. */ + #endif + #ifdef BSP_TZ_CFG_PGCSAR + R_SYSTEM->PGCSAR = BSP_TZ_CFG_PGCSAR; /* Power Gating Control Security Attribution. */ + #endif + #ifdef BSP_TZ_CFG_BBFSAR + R_SYSTEM->BBFSAR = BSP_TZ_CFG_BBFSAR; /* Battery Backup Security Attribution. */ + #endif + R_CPSCU->ICUSARA = BSP_TZ_CFG_ICUSARA; /* External IRQ Security Attribution. */ + R_CPSCU->ICUSARB = BSP_TZ_CFG_ICUSARB; /* NMI Security Attribution. */ + #ifdef BSP_TZ_CFG_ICUSARC + R_CPSCU->ICUSARC = BSP_TZ_CFG_ICUSARC; /* DMAC Channel Security Attribution. */ + #endif + #ifdef BSP_TZ_CFG_DMACCHSAR + R_CPSCU->DMACCHSAR = BSP_TZ_CFG_DMACCHSAR; /* DMAC Channel Security Attribution. */ + #endif + #ifdef BSP_TZ_CFG_ICUSARD + R_CPSCU->ICUSARD = BSP_TZ_CFG_ICUSARD; /* SELSR0 Security Attribution. */ + #endif + R_CPSCU->ICUSARE = BSP_TZ_CFG_ICUSARE; /* WUPEN0 Security Attribution. */ + #ifdef BSP_TZ_CFG_ICUSARF + R_CPSCU->ICUSARF = BSP_TZ_CFG_ICUSARF; /* WUPEN1 Security Attribution. */ + #endif + #ifdef BSP_TZ_CFG_TEVTRCR + R_CPSCU->TEVTRCR = BSP_TZ_CFG_TEVTRCR; /* Trusted Event Route Enable. */ + #endif + #ifdef BSP_TZ_CFG_ELCSARA + R_ELC->ELCSARA = BSP_TZ_CFG_ELCSARA; /* ELCR, ELSEGR0, ELSEGR1 Security Attribution. */ + #endif + R_FCACHE->FSAR = BSP_TZ_CFG_FSAR; /* FLWT and FCKMHZ Security Attribution. */ + R_CPSCU->SRAMSAR = BSP_TZ_CFG_SRAMSAR; /* SRAM Security Attribution. */ + #ifdef BSP_TZ_CFG_STBRAMSAR + R_CPSCU->STBRAMSAR = BSP_TZ_CFG_STBRAMSAR; /* Standby RAM Security Attribution. */ + #endif + R_CPSCU->MMPUSARA = BSP_TZ_CFG_MMPUSARA; /* Security Attribution for the DMAC Bus Master MPU. */ + R_CPSCU->BUSSARA = BSP_TZ_CFG_BUSSARA; /* Security Attribution Register A for the BUS Control Registers. */ + R_CPSCU->BUSSARB = BSP_TZ_CFG_BUSSARB; /* Security Attribution Register B for the BUS Control Registers. */ + + #if (defined(BSP_TZ_CFG_ICUSARC) && (BSP_TZ_CFG_ICUSARC != UINT32_MAX)) || \ + (defined(BSP_TZ_CFG_DMACCHSAR) && \ + ((BSP_TZ_CFG_DMACCHSAR & R_CPSCU_DMACCHSAR_DMACCHSARn_Msk) != R_CPSCU_DMACCHSAR_DMACCHSARn_Msk)) + + R_BSP_MODULE_START(FSP_IP_DMAC, 0); + + #if BSP_FEATURE_TZ_VERSION == 2 + + /* On MCUs with this implementation of trustzone, DMAST security attribution is set to secure after reset. */ + #else + + /* If any DMAC channels are required by secure program, disable nonsecure write access to DMAST + * in order to prevent the nonsecure program from disabling all DMAC channels. */ + R_CPSCU->DMACSAR = ~1U; /* Protect DMAST from nonsecure write access. */ + #endif + + /* Ensure that DMAST is set so that the nonsecure program can use DMA. */ + R_DMA->DMAST = 1U; + #else + + /* On MCUs with this implementation of trustzone, DMACSAR security attribution is set to secure after reset. + * If the DMAC is not used in the secure application,then configure DMAST security attribution to non-secure. */ + R_CPSCU->DMACSAR = 1U; + #endif + + #if BSP_TZ_CFG_DTC_USED + R_BSP_MODULE_START(FSP_IP_DTC, 0); + + #if BSP_FEATURE_TZ_VERSION == 2 + + /* On MCUs with this implementation of trustzone, DTCST security attribution is set to secure after reset. */ + #else + + /* If the DTC is used by the secure program, disable nonsecure write access to DTCST + * in order to prevent the nonsecure program from disabling all DTC transfers. */ + R_CPSCU->DTCSAR = ~1U; + #endif + + /* Ensure that DTCST is set so that the nonsecure program can use DTC. */ + R_DTC->DTCST = 1U; + #elif BSP_FEATURE_TZ_VERSION == 2 + + /* On MCUs with this implementation of trustzone, DTCST security attribution is set to secure after reset. + * If the DTC is not used in the secure application,then configure DTCST security attribution to non-secure. */ + R_CPSCU->DTCSAR = 1U; + #endif + + /* Initialize security attribution registers for Pins. */ + R_BSP_PinCfgSecurityInit(); + + /* Initialize security attribution registers for ELC. */ + R_BSP_ElcCfgSecurityInit(); + + /* Reenable PRCR for SARs. */ + R_BSP_RegisterProtectEnable(BSP_REG_PROTECT_SAR); +} + +/* This function is overridden by tooling. */ +BSP_WEAK_REFERENCE void R_BSP_PinCfgSecurityInit (void) +{ +} + +/* This function is overridden by tooling. */ +BSP_WEAK_REFERENCE void R_BSP_ElcCfgSecurityInit (void) +{ +} + + #endif +#endif diff --git a/bsp/renesas/ra8m1-ek/ra/fsp/src/bsp/mcu/all/bsp_security.h b/bsp/renesas/ra8m1-ek/ra/fsp/src/bsp/mcu/all/bsp_security.h new file mode 100644 index 000000000000..fa938cb526c3 --- /dev/null +++ b/bsp/renesas/ra8m1-ek/ra/fsp/src/bsp/mcu/all/bsp_security.h @@ -0,0 +1,47 @@ +/*********************************************************************************************************************** + * Copyright [2020-2023] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics America Inc. and may only be used with products + * of Renesas Electronics Corp. and its affiliates ("Renesas"). No other uses are authorized. Renesas products are + * sold pursuant to Renesas terms and conditions of sale. Purchasers are solely responsible for the selection and use + * of Renesas products and Renesas assumes no liability. No license, express or implied, to any intellectual property + * right is granted by Renesas. This software is protected under all applicable laws, including copyright laws. Renesas + * reserves the right to change or discontinue this software and/or this documentation. THE SOFTWARE AND DOCUMENTATION + * IS DELIVERED TO YOU "AS IS," AND RENESAS MAKES NO REPRESENTATIONS OR WARRANTIES, AND TO THE FULLEST EXTENT + * PERMISSIBLE UNDER APPLICABLE LAW, DISCLAIMS ALL WARRANTIES, WHETHER EXPLICITLY OR IMPLICITLY, INCLUDING WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT, WITH RESPECT TO THE SOFTWARE OR + * DOCUMENTATION. RENESAS SHALL HAVE NO LIABILITY ARISING OUT OF ANY SECURITY VULNERABILITY OR BREACH. TO THE MAXIMUM + * EXTENT PERMITTED BY LAW, IN NO EVENT WILL RENESAS BE LIABLE TO YOU IN CONNECTION WITH THE SOFTWARE OR DOCUMENTATION + * (OR ANY PERSON OR ENTITY CLAIMING RIGHTS DERIVED FROM YOU) FOR ANY LOSS, DAMAGES, OR CLAIMS WHATSOEVER, INCLUDING, + * WITHOUT LIMITATION, ANY DIRECT, CONSEQUENTIAL, SPECIAL, INDIRECT, PUNITIVE, OR INCIDENTAL DAMAGES; ANY LOST PROFITS, + * OTHER ECONOMIC DAMAGE, PROPERTY DAMAGE, OR PERSONAL INJURY; AND EVEN IF RENESAS HAS BEEN ADVISED OF THE POSSIBILITY + * OF SUCH LOSS, DAMAGES, CLAIMS OR COSTS. + **********************************************************************************************************************/ + +#ifndef BSP_SECURITY_H +#define BSP_SECURITY_H + +/** Common macro for FSP header files. There is also a corresponding FSP_FOOTER macro at the end of this file. */ +FSP_HEADER + +/*********************************************************************************************************************** + * Macro definitions + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Typedef definitions + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Exported global variables + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Exported global functions (to be accessed by other files) + **********************************************************************************************************************/ +void R_BSP_NonSecureEnter(void); + +/** Common macro for FSP header files. There is also a corresponding FSP_HEADER macro at the top of this file. */ +FSP_FOOTER + +#endif diff --git a/bsp/renesas/ra8m1-ek/ra/fsp/src/bsp/mcu/all/bsp_tfu.h b/bsp/renesas/ra8m1-ek/ra/fsp/src/bsp/mcu/all/bsp_tfu.h new file mode 100644 index 000000000000..c0dc5123122a --- /dev/null +++ b/bsp/renesas/ra8m1-ek/ra/fsp/src/bsp/mcu/all/bsp_tfu.h @@ -0,0 +1,232 @@ +/*********************************************************************************************************************** + * Copyright [2020-2023] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics America Inc. and may only be used with products + * of Renesas Electronics Corp. and its affiliates ("Renesas"). No other uses are authorized. Renesas products are + * sold pursuant to Renesas terms and conditions of sale. Purchasers are solely responsible for the selection and use + * of Renesas products and Renesas assumes no liability. No license, express or implied, to any intellectual property + * right is granted by Renesas. This software is protected under all applicable laws, including copyright laws. Renesas + * reserves the right to change or discontinue this software and/or this documentation. THE SOFTWARE AND DOCUMENTATION + * IS DELIVERED TO YOU "AS IS," AND RENESAS MAKES NO REPRESENTATIONS OR WARRANTIES, AND TO THE FULLEST EXTENT + * PERMISSIBLE UNDER APPLICABLE LAW, DISCLAIMS ALL WARRANTIES, WHETHER EXPLICITLY OR IMPLICITLY, INCLUDING WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT, WITH RESPECT TO THE SOFTWARE OR + * DOCUMENTATION. RENESAS SHALL HAVE NO LIABILITY ARISING OUT OF ANY SECURITY VULNERABILITY OR BREACH. TO THE MAXIMUM + * EXTENT PERMITTED BY LAW, IN NO EVENT WILL RENESAS BE LIABLE TO YOU IN CONNECTION WITH THE SOFTWARE OR DOCUMENTATION + * (OR ANY PERSON OR ENTITY CLAIMING RIGHTS DERIVED FROM YOU) FOR ANY LOSS, DAMAGES, OR CLAIMS WHATSOEVER, INCLUDING, + * WITHOUT LIMITATION, ANY DIRECT, CONSEQUENTIAL, SPECIAL, INDIRECT, PUNITIVE, OR INCIDENTAL DAMAGES; ANY LOST PROFITS, + * OTHER ECONOMIC DAMAGE, PROPERTY DAMAGE, OR PERSONAL INJURY; AND EVEN IF RENESAS HAS BEEN ADVISED OF THE POSSIBILITY + * OF SUCH LOSS, DAMAGES, CLAIMS OR COSTS. + **********************************************************************************************************************/ + +#ifndef RENESAS_TFU +#define RENESAS_TFU + +/*********************************************************************************************************************** + * Includes , "Project Includes" + **********************************************************************************************************************/ + +/* Mathematical Functions includes. */ +#ifdef __cplusplus + #include +#else + #include +#endif + +/** Common macro for FSP header files. There is also a corresponding FSP_FOOTER macro at the end of this file. */ +FSP_HEADER + +/*******************************************************************************************************************//** + * @addtogroup BSP_MCU + * @{ + **********************************************************************************************************************/ + +#if BSP_FEATURE_TFU_SUPPORTED + +/*********************************************************************************************************************** + * Macro definitions + **********************************************************************************************************************/ + + #define R_TFU_HYPOT_SCALING_FACTOR 0.607252935f + + #ifdef __GNUC__ /* and (arm)clang */ + #if (__STDC_VERSION__ < 199901L) && defined(__STRICT_ANSI__) && !defined(__cplusplus) + +/* No form of inline is available, it happens only when -std=c89, gnu89 and + * above are OK */ + #warning \ + "-std=c89 doesn't support type checking on TFU. Please use -std=gnu89 or higher for example -std=c99" + #else + #ifdef __GNUC_GNU_INLINE__ + +/* gnu89 semantics of inline and extern inline are essentially the exact + * opposite of those in C99 */ + #define BSP_TFU_INLINE extern inline __attribute__((always_inline)) + #else /* __GNUC_STDC_INLINE__ */ + #define BSP_TFU_INLINE static inline __attribute__((always_inline)) + #endif + #endif + #elif __ICCARM__ + #define BSP_TFU_INLINE + #else + #error "Compiler not supported!" + #endif + +/*********************************************************************************************************************** + * Typedef definitions + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Exported global variables + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Inline Functions + **********************************************************************************************************************/ + +/*******************************************************************************************************************//** + * Calculates sine of the given angle. + * @param[in] angle The value of an angle in radian. + * + * @retval Sine value of an angle. + **********************************************************************************************************************/ + #if __ICCARM__ + #pragma inline = forced + #endif +BSP_TFU_INLINE float __sinf (float angle) +{ + /* Set the angle to R_TFU->SCDT1 */ + R_TFU->SCDT1 = angle; + + /* Read sin from R_TFU->SCDT1 */ + return R_TFU->SCDT1; +} + +/*******************************************************************************************************************//** + * Calculates cosine of the given angle. + * @param[in] angle The value of an angle in radian. + * + * @retval Cosine value of an angle. + **********************************************************************************************************************/ + #if __ICCARM__ + #pragma inline = forced + #endif +BSP_TFU_INLINE float __cosf (float angle) +{ + /* Set the angle to R_TFU->SCDT1 */ + R_TFU->SCDT1 = angle; + + /* Read cos from R_TFU->SCDT1 */ + return R_TFU->SCDT0; +} + +/*******************************************************************************************************************//** + * Calculates sine and cosine of the given angle. + * @param[in] angle The value of an angle in radian. + * @param[out] sin Sine value of an angle. + * @param[out] cos Cosine value of an angle. + **********************************************************************************************************************/ + #if __ICCARM__ + #pragma inline = forced + #endif +BSP_TFU_INLINE void __sincosf (float angle, float * sin, float * cos) +{ + /* Set the angle to R_TFU->SCDT1 */ + R_TFU->SCDT1 = angle; + + /* Read sin from R_TFU->SCDT1 */ + *sin = R_TFU->SCDT1; + + /* Read sin from R_TFU->SCDT1 */ + *cos = R_TFU->SCDT0; +} + +/*******************************************************************************************************************//** + * Calculates the arc tangent based on given X-cordinate and Y-cordinate values. + * @param[in] y_cord Y-Axis cordinate value. + * @param[in] x_cord X-Axis cordinate value. + * + * @retval Arc tangent for given values. + **********************************************************************************************************************/ + #if __ICCARM__ + #pragma inline = forced + #endif +BSP_TFU_INLINE float __atan2f (float y_cord, float x_cord) +{ + /* Set X-cordinate to R_TFU->ATDT0 */ + R_TFU->ATDT0 = x_cord; + + /* set Y-cordinate to R_TFU->ATDT1 */ + R_TFU->ATDT1 = y_cord; + + /* Read arctan(y/x) from R_TFU->ATDT1 */ + return R_TFU->ATDT1; +} + +/*******************************************************************************************************************//** + * Calculates the hypotenuse based on given X-cordinate and Y-cordinate values. + * @param[in] y_cord Y-cordinate value. + * @param[in] x_cord X-cordinate value. + * + * @retval Hypotenuse for given values. + **********************************************************************************************************************/ + #if __ICCARM__ + #pragma inline = forced + #endif +BSP_TFU_INLINE float __hypotf (float x_cord, float y_cord) +{ + /* Set X-coordinate to R_TFU->ATDT0 */ + R_TFU->ATDT0 = x_cord; + + /* set Y-coordinate to R_TFU->ATDT1 */ + R_TFU->ATDT1 = y_cord; + + /* Read sqrt (x_cord2 + y_cord2) from R_TFU->ATDT0 */ + return R_TFU->ATDT0 * R_TFU_HYPOT_SCALING_FACTOR; +} + +/*******************************************************************************************************************//** + * Calculates the arc tangent and hypotenuse based on given X-cordinate and Y-cordinate values. + * @param[in] y_cord Y-cordinate value. + * @param[in] x_cord X-cordinate value. + * @param[out] atan2 Arc tangent for given values. + * @param[out] hypot Hypotenuse for given values. + **********************************************************************************************************************/ + #if __ICCARM__ + #pragma inline = forced + #endif +BSP_TFU_INLINE void __atan2hypotf (float y_cord, float x_cord, float * atan2, float * hypot) +{ + /* Set X-coordinate to R_TFU->ATDT0 */ + R_TFU->ATDT0 = x_cord; + + /* set Y-coordinate to R_TFU->ATDT1 */ + R_TFU->ATDT1 = y_cord; + + /* Read arctan(y/x) from R_TFU->ATDT1 */ + *atan2 = R_TFU->ATDT1; + + /* Read sqrt (x_cord2 + y_cord2) from R_TFU->ATDT0 */ + *hypot = R_TFU->ATDT0 * R_TFU_HYPOT_SCALING_FACTOR; +} + + #if BSP_CFG_USE_TFU_MATHLIB + #define sinf(x) __sinf(x) + #define cosf(x) __cosf(x) + #define atan2f(y, x) __atan2f(y, x) + #define hypotf(x, y) __hypotf(x, y) + #define atan2hypotf(y, x, a, h) __atan2hypotf(y, x, a, h) + #define sincosf(a, s, c) __sincosf(a, s, c) + #endif + +/*********************************************************************************************************************** + * Exported global functions (to be accessed by other files) + **********************************************************************************************************************/ + +#endif + +/** @} (end addtogroup BSP_MCU) */ + +/** Common macro for FSP header files. There is also a corresponding FSP_HEADER macro at the top of this file. */ +FSP_FOOTER + +#endif /* RENESAS_TFU */ diff --git a/bsp/renesas/ra8m1-ek/ra/fsp/src/bsp/mcu/ra8m1/bsp_elc.h b/bsp/renesas/ra8m1-ek/ra/fsp/src/bsp/mcu/ra8m1/bsp_elc.h new file mode 100644 index 000000000000..51d00fa4337f --- /dev/null +++ b/bsp/renesas/ra8m1-ek/ra/fsp/src/bsp/mcu/ra8m1/bsp_elc.h @@ -0,0 +1,365 @@ +/*********************************************************************************************************************** + * Copyright [2020-2023] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics America Inc. and may only be used with products + * of Renesas Electronics Corp. and its affiliates ("Renesas"). No other uses are authorized. Renesas products are + * sold pursuant to Renesas terms and conditions of sale. Purchasers are solely responsible for the selection and use + * of Renesas products and Renesas assumes no liability. No license, express or implied, to any intellectual property + * right is granted by Renesas. This software is protected under all applicable laws, including copyright laws. Renesas + * reserves the right to change or discontinue this software and/or this documentation. THE SOFTWARE AND DOCUMENTATION + * IS DELIVERED TO YOU "AS IS," AND RENESAS MAKES NO REPRESENTATIONS OR WARRANTIES, AND TO THE FULLEST EXTENT + * PERMISSIBLE UNDER APPLICABLE LAW, DISCLAIMS ALL WARRANTIES, WHETHER EXPLICITLY OR IMPLICITLY, INCLUDING WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT, WITH RESPECT TO THE SOFTWARE OR + * DOCUMENTATION. RENESAS SHALL HAVE NO LIABILITY ARISING OUT OF ANY SECURITY VULNERABILITY OR BREACH. TO THE MAXIMUM + * EXTENT PERMITTED BY LAW, IN NO EVENT WILL RENESAS BE LIABLE TO YOU IN CONNECTION WITH THE SOFTWARE OR DOCUMENTATION + * (OR ANY PERSON OR ENTITY CLAIMING RIGHTS DERIVED FROM YOU) FOR ANY LOSS, DAMAGES, OR CLAIMS WHATSOEVER, INCLUDING, + * WITHOUT LIMITATION, ANY DIRECT, CONSEQUENTIAL, SPECIAL, INDIRECT, PUNITIVE, OR INCIDENTAL DAMAGES; ANY LOST PROFITS, + * OTHER ECONOMIC DAMAGE, PROPERTY DAMAGE, OR PERSONAL INJURY; AND EVEN IF RENESAS HAS BEEN ADVISED OF THE POSSIBILITY + * OF SUCH LOSS, DAMAGES, CLAIMS OR COSTS. + **********************************************************************************************************************/ + +#ifndef BSP_ELC_H +#define BSP_ELC_H + +/*********************************************************************************************************************** + * Macro definitions + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Typedef definitions + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Exported global variables + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Exported global functions (to be accessed by other files) + **********************************************************************************************************************/ + +/*******************************************************************************************************************//** + * @addtogroup BSP_MCU_RA8M1 + * @{ + **********************************************************************************************************************/ + +/** Sources of event signals to be linked to other peripherals or the CPU + * @note This list may change based on based on the device. + * */ +typedef enum e_elc_event_ra8m1 +{ + ELC_EVENT_NONE = (0), // Link disabled + ELC_EVENT_ICU_IRQ0 = (0x001), // External pin interrupt 0 + ELC_EVENT_ICU_IRQ1 = (0x002), // External pin interrupt 1 + ELC_EVENT_ICU_IRQ2 = (0x003), // External pin interrupt 2 + ELC_EVENT_ICU_IRQ3 = (0x004), // External pin interrupt 3 + ELC_EVENT_ICU_IRQ4 = (0x005), // External pin interrupt 4 + ELC_EVENT_ICU_IRQ5 = (0x006), // External pin interrupt 5 + ELC_EVENT_ICU_IRQ6 = (0x007), // External pin interrupt 6 + ELC_EVENT_ICU_IRQ7 = (0x008), // External pin interrupt 7 + ELC_EVENT_ICU_IRQ8 = (0x009), // External pin interrupt 8 + ELC_EVENT_ICU_IRQ9 = (0x00A), // External pin interrupt 9 + ELC_EVENT_ICU_IRQ10 = (0x00B), // External pin interrupt 10 + ELC_EVENT_ICU_IRQ11 = (0x00C), // External pin interrupt 11 + ELC_EVENT_ICU_IRQ12 = (0x00D), // External pin interrupt 12 + ELC_EVENT_ICU_IRQ13 = (0x00E), // External pin interrupt 13 + ELC_EVENT_ICU_IRQ14 = (0x00F), // External pin interrupt 14 + ELC_EVENT_ICU_IRQ15 = (0x010), // External pin interrupt 15 + ELC_EVENT_DMAC0_INT = (0x011), // DMAC0 transfer end 0 + ELC_EVENT_DMAC1_INT = (0x012), // DMAC0 transfer end 1 + ELC_EVENT_DMAC2_INT = (0x013), // DMAC0 transfer end 2 + ELC_EVENT_DMAC3_INT = (0x014), // DMAC0 transfer end 3 + ELC_EVENT_DMAC4_INT = (0x015), // DMAC0 transfer end 4 + ELC_EVENT_DMAC5_INT = (0x016), // DMAC0 transfer end 5 + ELC_EVENT_DMAC6_INT = (0x017), // DMAC0 transfer end 6 + ELC_EVENT_DMAC7_INT = (0x018), // DMAC0 transfer end 7 + ELC_EVENT_DTC_END = (0x021), // DTC transfer end + ELC_EVENT_DTC_COMPLETE = (0x022), // DTC transfer complete + ELC_EVENT_DMA_TRANSERR = (0x027), // DMA transfer error + ELC_EVENT_FCU_FIFERR = (0x030), // Flash access error interrupt + ELC_EVENT_FCU_FRDYI = (0x031), // Flash ready interrupt + ELC_EVENT_LVD_LVD1 = (0x038), // Voltage monitor 1 interrupt + ELC_EVENT_LVD_LVD2 = (0x039), // Voltage monitor 2 interrupt + ELC_EVENT_LVD_VBATT = (0x03D), // VBATT low voltage detect + ELC_EVENT_CGC_MOSC_STOP = (0x03E), // Main Clock oscillation stop + ELC_EVENT_ULPT0_INT = (0x040), // ULPT0 Underflow + ELC_EVENT_ULPT0_COMPARE_A = (0x041), // ULPT0 Compare match A + ELC_EVENT_ULPT0_COMPARE_B = (0x042), // ULPT0 Compare match B + ELC_EVENT_ULPT1_INT = (0x043), // ULPT1 Underflow + ELC_EVENT_ULPT1_COMPARE_A = (0x044), // ULPT1 Compare match A + ELC_EVENT_ULPT1_COMPARE_B = (0x045), // ULPT1 Compare match B + ELC_EVENT_AGT0_INT = (0x046), // AGT interrupt + ELC_EVENT_AGT0_COMPARE_A = (0x047), // Compare match A + ELC_EVENT_AGT0_COMPARE_B = (0x048), // Compare match B + ELC_EVENT_AGT1_INT = (0x049), // AGT interrupt + ELC_EVENT_AGT1_COMPARE_A = (0x04A), // Compare match A + ELC_EVENT_AGT1_COMPARE_B = (0x04B), // Compare match B + ELC_EVENT_IWDT_UNDERFLOW = (0x052), // IWDT underflow + ELC_EVENT_WDT0_UNDERFLOW = (0x053), // WDT0 underflow + ELC_EVENT_RTC_ALARM = (0x055), // Alarm interrupt + ELC_EVENT_RTC_PERIOD = (0x056), // Periodic interrupt + ELC_EVENT_RTC_CARRY = (0x057), // Carry interrupt + ELC_EVENT_USBFS_FIFO_0 = (0x058), // DMA transfer request 0 + ELC_EVENT_USBFS_FIFO_1 = (0x059), // DMA transfer request 1 + ELC_EVENT_USBFS_INT = (0x05A), // USBFS interrupt + ELC_EVENT_USBFS_RESUME = (0x05B), // USBFS resume interrupt + ELC_EVENT_IIC0_RXI = (0x05C), // Receive data full + ELC_EVENT_IIC0_TXI = (0x05D), // Transmit data empty + ELC_EVENT_IIC0_TEI = (0x05E), // Transmit end + ELC_EVENT_IIC0_ERI = (0x05F), // Transfer error + ELC_EVENT_IIC0_WUI = (0x060), // Wakeup interrupt + ELC_EVENT_IIC1_RXI = (0x061), // Receive data full + ELC_EVENT_IIC1_TXI = (0x062), // Transmit data empty + ELC_EVENT_IIC1_TEI = (0x063), // Transmit end + ELC_EVENT_IIC1_ERI = (0x064), // Transfer error + ELC_EVENT_SDHIMMC0_ACCS = (0x06B), // Card access + ELC_EVENT_SDHIMMC0_SDIO = (0x06C), // SDIO access + ELC_EVENT_SDHIMMC0_CARD = (0x06D), // Card detect + ELC_EVENT_SDHIMMC0_DMA_REQ = (0x06E), // DMA transfer request + ELC_EVENT_SDHIMMC1_ACCS = (0x06F), // Card access + ELC_EVENT_SDHIMMC1_SDIO = (0x070), // SDIO access + ELC_EVENT_SDHIMMC1_CARD = (0x071), // Card detect + ELC_EVENT_SDHIMMC1_DMA_REQ = (0x072), // DMA transfer request + ELC_EVENT_SSI0_TXI = (0x073), // Transmit data empty + ELC_EVENT_SSI0_RXI = (0x074), // Receive data full + ELC_EVENT_SSI0_INT = (0x076), // Error interrupt + ELC_EVENT_SSI1_TXI_RXI = (0x079), // Receive data full/Transmit data empty + ELC_EVENT_SSI1_INT = (0x07A), // Error interrupt + ELC_EVENT_ACMPHS0_INT = (0x07B), // Comparator interrupt 0 + ELC_EVENT_ACMPHS1_INT = (0x07C), // Comparator interrupt 1 + ELC_EVENT_ELC_SOFTWARE_EVENT_0 = (0x083), // Software event 0 + ELC_EVENT_ELC_SOFTWARE_EVENT_1 = (0x084), // Software event 1 + ELC_EVENT_IOPORT_EVENT_1 = (0x088), // Port 1 event + ELC_EVENT_IOPORT_EVENT_2 = (0x089), // Port 2 event + ELC_EVENT_IOPORT_EVENT_3 = (0x08A), // Port 3 event + ELC_EVENT_IOPORT_EVENT_4 = (0x08B), // Port 4 event + ELC_EVENT_CAC_FREQUENCY_ERROR = (0x08C), // Frequency error interrupt + ELC_EVENT_CAC_MEASUREMENT_END = (0x08D), // Measurement end interrupt + ELC_EVENT_CAC_OVERFLOW = (0x08E), // Overflow interrupt + ELC_EVENT_POEG0_EVENT = (0x08F), // Port Output disable interrupt A + ELC_EVENT_POEG1_EVENT = (0x090), // Port Output disable interrupt B + ELC_EVENT_POEG2_EVENT = (0x091), // Port Output disable interrupt C + ELC_EVENT_POEG3_EVENT = (0x092), // Port Output disable interrupt D + ELC_EVENT_OPS_UVW_EDGE = (0x0A0), // UVW edge event + ELC_EVENT_GPT0_CAPTURE_COMPARE_A = (0x0A1), // Compare match A + ELC_EVENT_GPT0_CAPTURE_COMPARE_B = (0x0A2), // Compare match B + ELC_EVENT_GPT0_COMPARE_C = (0x0A3), // Compare match C + ELC_EVENT_GPT0_COMPARE_D = (0x0A4), // Compare match D + ELC_EVENT_GPT0_COMPARE_E = (0x0A5), // Compare match E + ELC_EVENT_GPT0_COMPARE_F = (0x0A6), // Compare match F + ELC_EVENT_GPT0_COUNTER_OVERFLOW = (0x0A7), // Overflow + ELC_EVENT_GPT0_COUNTER_UNDERFLOW = (0x0A8), // Underflow + ELC_EVENT_GPT0_PC = (0x0A9), // Period count function finish + ELC_EVENT_GPT1_CAPTURE_COMPARE_A = (0x0AA), // Compare match A + ELC_EVENT_GPT1_CAPTURE_COMPARE_B = (0x0Ab), // Compare match B + ELC_EVENT_GPT1_COMPARE_C = (0x0AC), // Compare match C + ELC_EVENT_GPT1_COMPARE_D = (0x0AD), // Compare match D + ELC_EVENT_GPT1_COMPARE_E = (0x0AE), // Compare match E + ELC_EVENT_GPT1_COMPARE_F = (0x0AF), // Compare match F + ELC_EVENT_GPT1_COUNTER_OVERFLOW = (0x0B0), // Overflow + ELC_EVENT_GPT1_COUNTER_UNDERFLOW = (0x0B1), // Underflow + ELC_EVENT_GPT1_PC = (0x0B2), // Period count function finish + ELC_EVENT_GPT2_CAPTURE_COMPARE_A = (0x0B3), // Compare match A + ELC_EVENT_GPT2_CAPTURE_COMPARE_B = (0x0B4), // Compare match B + ELC_EVENT_GPT2_COMPARE_C = (0x0B5), // Compare match C + ELC_EVENT_GPT2_COMPARE_D = (0x0B6), // Compare match D + ELC_EVENT_GPT2_COMPARE_E = (0x0B7), // Compare match E + ELC_EVENT_GPT2_COMPARE_F = (0x0B8), // Compare match F + ELC_EVENT_GPT2_COUNTER_OVERFLOW = (0x0B9), // Overflow + ELC_EVENT_GPT2_COUNTER_UNDERFLOW = (0x0BA), // Underflow + ELC_EVENT_GPT2_PC = (0x0BB), // Period count function finish + ELC_EVENT_GPT3_CAPTURE_COMPARE_A = (0x0BC), // Compare match A + ELC_EVENT_GPT3_CAPTURE_COMPARE_B = (0x0BD), // Compare match B + ELC_EVENT_GPT3_COMPARE_C = (0x0BE), // Compare match C + ELC_EVENT_GPT3_COMPARE_D = (0x0BF), // Compare match D + ELC_EVENT_GPT3_COMPARE_E = (0x0C0), // Compare match E + ELC_EVENT_GPT3_COMPARE_F = (0x0C1), // Compare match F + ELC_EVENT_GPT3_COUNTER_OVERFLOW = (0x0C2), // Overflow + ELC_EVENT_GPT3_COUNTER_UNDERFLOW = (0x0C3), // Underflow + ELC_EVENT_GPT3_PC = (0x0C4), // Period count function finish + ELC_EVENT_GPT4_CAPTURE_COMPARE_A = (0x0C5), // Compare match A + ELC_EVENT_GPT4_CAPTURE_COMPARE_B = (0x0C6), // Compare match B + ELC_EVENT_GPT4_COMPARE_C = (0x0C7), // Compare match C + ELC_EVENT_GPT4_COMPARE_D = (0x0C8), // Compare match D + ELC_EVENT_GPT4_COMPARE_E = (0x0C9), // Compare match E + ELC_EVENT_GPT4_COMPARE_F = (0x0CA), // Compare match F + ELC_EVENT_GPT4_COUNTER_OVERFLOW = (0x0CB), // Overflow + ELC_EVENT_GPT4_COUNTER_UNDERFLOW = (0x0CC), // Underflow + ELC_EVENT_GPT5_CAPTURE_COMPARE_A = (0x0CE), // Compare match A + ELC_EVENT_GPT5_CAPTURE_COMPARE_B = (0x0CF), // Compare match B + ELC_EVENT_GPT5_COMPARE_C = (0x0D0), // Compare match C + ELC_EVENT_GPT5_COMPARE_D = (0x0D1), // Compare match D + ELC_EVENT_GPT5_COMPARE_E = (0x0D2), // Compare match E + ELC_EVENT_GPT5_COMPARE_F = (0x0D3), // Compare match F + ELC_EVENT_GPT5_COUNTER_OVERFLOW = (0x0D4), // Overflow + ELC_EVENT_GPT5_COUNTER_UNDERFLOW = (0x0D5), // Underflow + ELC_EVENT_GPT6_CAPTURE_COMPARE_A = (0x0D7), // Compare match A + ELC_EVENT_GPT6_CAPTURE_COMPARE_B = (0x0D8), // Compare match B + ELC_EVENT_GPT6_COMPARE_C = (0x0D9), // Compare match C + ELC_EVENT_GPT6_COMPARE_D = (0x0DA), // Compare match D + ELC_EVENT_GPT6_COMPARE_E = (0x0DB), // Compare match E + ELC_EVENT_GPT6_COMPARE_F = (0x0DC), // Compare match F + ELC_EVENT_GPT6_COUNTER_OVERFLOW = (0x0DD), // Overflow + ELC_EVENT_GPT6_COUNTER_UNDERFLOW = (0x0DE), // Underflow + ELC_EVENT_GPT7_CAPTURE_COMPARE_A = (0x0E0), // Compare match A + ELC_EVENT_GPT7_CAPTURE_COMPARE_B = (0x0E1), // Compare match B + ELC_EVENT_GPT7_COMPARE_C = (0x0E2), // Compare match C + ELC_EVENT_GPT7_COMPARE_D = (0x0E3), // Compare match D + ELC_EVENT_GPT7_COMPARE_E = (0x0E4), // Compare match E + ELC_EVENT_GPT7_COMPARE_F = (0x0E5), // Compare match F + ELC_EVENT_GPT7_COUNTER_OVERFLOW = (0x0E6), // Overflow + ELC_EVENT_GPT7_COUNTER_UNDERFLOW = (0x0E7), // Underflow + ELC_EVENT_GPT8_CAPTURE_COMPARE_A = (0x0E9), // Compare match A + ELC_EVENT_GPT8_CAPTURE_COMPARE_B = (0x0EA), // Compare match B + ELC_EVENT_GPT8_COMPARE_C = (0x0EB), // Compare match C + ELC_EVENT_GPT8_COMPARE_D = (0x0EC), // Compare match D + ELC_EVENT_GPT8_COMPARE_E = (0x0ED), // Compare match E + ELC_EVENT_GPT8_COMPARE_F = (0x0EE), // Compare match F + ELC_EVENT_GPT8_COUNTER_OVERFLOW = (0x0EF), // Overflow + ELC_EVENT_GPT8_COUNTER_UNDERFLOW = (0x0F0), // Underflow + ELC_EVENT_GPT8_PC = (0x0F1), // Period count function finish + ELC_EVENT_GPT9_CAPTURE_COMPARE_A = (0x0F2), // Compare match A + ELC_EVENT_GPT9_CAPTURE_COMPARE_B = (0x0F3), // Compare match B + ELC_EVENT_GPT9_COMPARE_C = (0x0F4), // Compare match C + ELC_EVENT_GPT9_COMPARE_D = (0x0F5), // Compare match D + ELC_EVENT_GPT9_COMPARE_E = (0x0F6), // Compare match E + ELC_EVENT_GPT9_COMPARE_F = (0x0F7), // Compare match F + ELC_EVENT_GPT9_COUNTER_OVERFLOW = (0x0F8), // Overflow + ELC_EVENT_GPT9_COUNTER_UNDERFLOW = (0x0F9), // Underflow + ELC_EVENT_GPT9_PC = (0x0FA), // Period count function finish + ELC_EVENT_GPT10_CAPTURE_COMPARE_A = (0x0FB), // Compare match A + ELC_EVENT_GPT10_CAPTURE_COMPARE_B = (0x0FC), // Compare match B + ELC_EVENT_GPT10_COMPARE_C = (0x0FD), // Compare match C + ELC_EVENT_GPT10_COMPARE_D = (0x0FE), // Compare match D + ELC_EVENT_GPT10_COMPARE_E = (0x0FF), // Compare match E + ELC_EVENT_GPT10_COMPARE_F = (0x100), // Compare match F + ELC_EVENT_GPT10_COUNTER_OVERFLOW = (0x101), // Overflow + ELC_EVENT_GPT10_COUNTER_UNDERFLOW = (0x102), // Underflow + ELC_EVENT_GPT10_PC = (0x103), // Period count function finish + ELC_EVENT_GPT11_CAPTURE_COMPARE_A = (0x104), // Compare match A + ELC_EVENT_GPT11_CAPTURE_COMPARE_B = (0x105), // Compare match B + ELC_EVENT_GPT11_COMPARE_C = (0x106), // Compare match C + ELC_EVENT_GPT11_COMPARE_D = (0x107), // Compare match D + ELC_EVENT_GPT11_COMPARE_E = (0x108), // Compare match E + ELC_EVENT_GPT11_COMPARE_F = (0x109), // Compare match F + ELC_EVENT_GPT11_COUNTER_OVERFLOW = (0x10A), // Overflow + ELC_EVENT_GPT11_COUNTER_UNDERFLOW = (0x10B), // Underflow + ELC_EVENT_GPT12_CAPTURE_COMPARE_A = (0x10D), // Compare match A + ELC_EVENT_GPT12_CAPTURE_COMPARE_B = (0x10E), // Compare match B + ELC_EVENT_GPT12_COMPARE_C = (0x10F), // Compare match C + ELC_EVENT_GPT12_COMPARE_D = (0x110), // Compare match D + ELC_EVENT_GPT12_COMPARE_E = (0x111), // Compare match E + ELC_EVENT_GPT12_COMPARE_F = (0x112), // Compare match F + ELC_EVENT_GPT12_COUNTER_OVERFLOW = (0x113), // Overflow + ELC_EVENT_GPT12_COUNTER_UNDERFLOW = (0x114), // Underflow + ELC_EVENT_GPT13_CAPTURE_COMPARE_A = (0x116), // Compare match A + ELC_EVENT_GPT13_CAPTURE_COMPARE_B = (0x117), // Compare match B + ELC_EVENT_GPT13_COMPARE_C = (0x118), // Compare match C + ELC_EVENT_GPT13_COMPARE_D = (0x119), // Compare match D + ELC_EVENT_GPT13_COMPARE_E = (0x11A), // Compare match E + ELC_EVENT_GPT13_COMPARE_F = (0x11B), // Compare match F + ELC_EVENT_GPT13_COUNTER_OVERFLOW = (0x11C), // Overflow + ELC_EVENT_GPT13_COUNTER_UNDERFLOW = (0x11D), // Underflow + ELC_EVENT_EDMAC0_EINT = (0x120), // EDMAC 0 interrupt + ELC_EVENT_USBHS_FIFO_0 = (0x121), // DMA transfer request 0 + ELC_EVENT_USBHS_FIFO_1 = (0x122), // DMA transfer request 1 + ELC_EVENT_USBHS_USB_INT_RESUME = (0x123), // USBHS interr + ELC_EVENT_SCI0_RXI = (0x124), // Receive data full + ELC_EVENT_SCI0_TXI = (0x125), // Transmit data empty + ELC_EVENT_SCI0_TEI = (0x126), // Transmit end + ELC_EVENT_SCI0_ERI = (0x127), // Receive error + ELC_EVENT_SCI0_AED = (0x128), // Active edge detection + ELC_EVENT_SCI0_BFD = (0x129), // Break field detection + ELC_EVENT_SCI0_AM = (0x12A), // Address match event + ELC_EVENT_SCI1_RXI = (0x12B), // Receive data full + ELC_EVENT_SCI1_TXI = (0x12C), // Transmit data empty + ELC_EVENT_SCI1_TEI = (0x12D), // Transmit end + ELC_EVENT_SCI1_ERI = (0x12E), // Receive error + ELC_EVENT_SCI1_AED = (0x12F), // Active edge detection + ELC_EVENT_SCI1_BFD = (0x130), // Break field detection + ELC_EVENT_SCI1_AM = (0x131), // Address match event + ELC_EVENT_SCI2_RXI = (0x132), // Receive data full + ELC_EVENT_SCI2_TXI = (0x133), // Transmit data empty + ELC_EVENT_SCI2_TEI = (0x134), // Transmit end + ELC_EVENT_SCI2_ERI = (0x135), // Receive error + ELC_EVENT_SCI2_AM = (0x138), // Address match event + ELC_EVENT_SCI3_RXI = (0x139), // Receive data full + ELC_EVENT_SCI3_TXI = (0x13A), // Transmit data empty + ELC_EVENT_SCI3_TEI = (0x13B), // Transmit end + ELC_EVENT_SCI3_ERI = (0x13C), // Receive error + ELC_EVENT_SCI3_AM = (0x13F), // Address match event + ELC_EVENT_SCI4_RXI = (0x140), // Receive data full + ELC_EVENT_SCI4_TXI = (0x141), // Transmit data empty + ELC_EVENT_SCI4_TEI = (0x142), // Transmit end + ELC_EVENT_SCI4_ERI = (0x143), // Receive error + ELC_EVENT_SCI4_AM = (0x146), // Address match event + ELC_EVENT_SCI9_RXI = (0x163), // Receive data full + ELC_EVENT_SCI9_TXI = (0x164), // Transmit data empty + ELC_EVENT_SCI9_TEI = (0x165), // Transmit end + ELC_EVENT_SCI9_ERI = (0x166), // Receive error + ELC_EVENT_SCI9_AM = (0x169), // Address match event + ELC_EVENT_SPI0_RXI = (0x178), // Receive buffer full + ELC_EVENT_SPI0_TXI = (0x179), // Transmit buffer empty + ELC_EVENT_SPI0_IDLE = (0x17A), // Idle + ELC_EVENT_SPI0_ERI = (0x17B), // Error + ELC_EVENT_SPI0_TEI = (0x17C), // Transmission complete event + ELC_EVENT_SPI1_RXI = (0x17D), // Receive buffer full + ELC_EVENT_SPI1_TXI = (0x17E), // Transmit buffer empty + ELC_EVENT_SPI1_IDLE = (0x17F), // Idle + ELC_EVENT_SPI1_ERI = (0x180), // Error + ELC_EVENT_SPI1_TEI = (0x181), // Transmission complete event + ELC_EVENT_XSPI_ERR = (0x182), // xSPI Error + ELC_EVENT_XSPI_CMP = (0x183), // xSPI Complete + ELC_EVENT_CAN_RXF = (0x185), // Global recieve FIFO interrupt + ELC_EVENT_CAN_GLERR = (0x186), // Global error + ELC_EVENT_CAN0_DMAREQ0 = (0x187), // Channel rx fifio DMA request + ELC_EVENT_CAN0_DMAREQ1 = (0x188), // Channel rx fifio DMA request + ELC_EVENT_CAN1_DMAREQ0 = (0x18B), // Channel rx fifio DMA request + ELC_EVENT_CAN1_DMAREQ1 = (0x18C), // Channel rx fifio DMA request + ELC_EVENT_CAN0_TX = (0x18F), // Transmit interrupt + ELC_EVENT_CAN0_CHERR = (0x190), // Channel error + ELC_EVENT_CAN0_COMFRX = (0x191), // Common FIFO recieve interrupt + ELC_EVENT_CAN0_CF_DMAREQ = (0x192), // Channel DMA request + ELC_EVENT_CAN0_RXMB = (0x193), // RXMB interrupt lines + ELC_EVENT_CAN1_TX = (0x194), // Transmit interrupt + ELC_EVENT_CAN1_CHERR = (0x195), // Channel error + ELC_EVENT_CAN1_COMFRX = (0x196), // Common FIFO recieve + ELC_EVENT_CAN1_CF_DMAREQ = (0x197), // Channel DMA req + ELC_EVENT_CAN1_RXMB = (0x198), // RXMB interrupt lines + ELC_EVENT_CAN0_MRAM_ERI = (0x19B), // CANFD0 ECC error + ELC_EVENT_CAN1_MRAM_ERI = (0x19C), // CANFD1 ECC error + ELC_EVENT_I3C0_RESPONSE = (0x19D), // Response status buffer full + ELC_EVENT_I3C0_COMMAND = (0x19E), // Command buffer empty + ELC_EVENT_I3C0_IBI = (0x19F), // IBI status buffer full + ELC_EVENT_I3C0_RX = (0x1A0), // Receive + ELC_EVENT_I3C0_TX = (0x1A1), // Transmit + ELC_EVENT_I3C0_RCV_STATUS = (0x1A2), // Receive status buffer full + ELC_EVENT_I3C0_HRESP = (0x1A3), // High priority response queue full + ELC_EVENT_I3C0_HCMD = (0x1A4), // High priority command queue empty + ELC_EVENT_I3C0_HRX = (0x1A5), // High priority rx data buffer full + ELC_EVENT_I3C0_HTX = (0x1A6), // High priority tx data buffer empty + ELC_EVENT_I3C0_TEND = (0x1A7), // Transmit end + ELC_EVENT_I3C0_EEI = (0x1A8), // Error + ELC_EVENT_I3C0_STEV = (0x1A9), // Synchronous Timing + ELC_EVENT_I3C0_MREFOVF = (0x1AA), // MREF counter overflow + ELC_EVENT_I3C0_MREFCPT = (0x1AB), // MREF capture + ELC_EVENT_I3C0_AMEV = (0x1AC), // Additional master-initiated bus event + ELC_EVENT_I3C0_WU = (0x1AD), // Wake-up Condition Detection interrupt + ELC_EVENT_ADC0_SCAN_END = (0x1AE), // End of A/D scanning operation + ELC_EVENT_ADC0_SCAN_END_B = (0x1AF), // End of A/D scanning operation for Group B + ELC_EVENT_ADC0_WINDOW_A = (0x1B0), // Window A Compare match interrupt + ELC_EVENT_ADC0_WINDOW_B = (0x1B1), // Window B Compare match interrupt + ELC_EVENT_ADC0_COMPARE_MATCH = (0x1B2), // Compare match + ELC_EVENT_ADC0_COMPARE_MISMATCH = (0x1B3), // Compare mismatch + ELC_EVENT_ADC1_SCAN_END = (0x1B4), // End of A/D scanning operation + ELC_EVENT_ADC1_SCAN_END_B = (0x1B5), // End of A/D scanning operation for Group B + ELC_EVENT_ADC1_WINDOW_A = (0x1B6), // Window A Compare match interrupt + ELC_EVENT_ADC1_WINDOW_B = (0x1B7), // Window B Compare match interrupt + ELC_EVENT_ADC1_COMPARE_MATCH = (0x1B8), // Compare match + ELC_EVENT_ADC1_COMPARE_MISMATCH = (0x1B9), // Compare mismatch + ELC_EVENT_DOC_INT = (0x1BA), // Data operation circuit interrupt + ELC_EVENT_CEU_CEUI = (0x1DA), // CEU interrupt +} elc_event_t; + +/** @} (end addtogroup BSP_MCU_RA8M1) */ + +#endif diff --git a/bsp/renesas/ra8m1-ek/ra/fsp/src/bsp/mcu/ra8m1/bsp_feature.h b/bsp/renesas/ra8m1-ek/ra/fsp/src/bsp/mcu/ra8m1/bsp_feature.h new file mode 100644 index 000000000000..8e3fe93577b0 --- /dev/null +++ b/bsp/renesas/ra8m1-ek/ra/fsp/src/bsp/mcu/ra8m1/bsp_feature.h @@ -0,0 +1,451 @@ +/*********************************************************************************************************************** + * Copyright [2020-2023] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics America Inc. and may only be used with products + * of Renesas Electronics Corp. and its affiliates ("Renesas"). No other uses are authorized. Renesas products are + * sold pursuant to Renesas terms and conditions of sale. Purchasers are solely responsible for the selection and use + * of Renesas products and Renesas assumes no liability. No license, express or implied, to any intellectual property + * right is granted by Renesas. This software is protected under all applicable laws, including copyright laws. Renesas + * reserves the right to change or discontinue this software and/or this documentation. THE SOFTWARE AND DOCUMENTATION + * IS DELIVERED TO YOU "AS IS," AND RENESAS MAKES NO REPRESENTATIONS OR WARRANTIES, AND TO THE FULLEST EXTENT + * PERMISSIBLE UNDER APPLICABLE LAW, DISCLAIMS ALL WARRANTIES, WHETHER EXPLICITLY OR IMPLICITLY, INCLUDING WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT, WITH RESPECT TO THE SOFTWARE OR + * DOCUMENTATION. RENESAS SHALL HAVE NO LIABILITY ARISING OUT OF ANY SECURITY VULNERABILITY OR BREACH. TO THE MAXIMUM + * EXTENT PERMITTED BY LAW, IN NO EVENT WILL RENESAS BE LIABLE TO YOU IN CONNECTION WITH THE SOFTWARE OR DOCUMENTATION + * (OR ANY PERSON OR ENTITY CLAIMING RIGHTS DERIVED FROM YOU) FOR ANY LOSS, DAMAGES, OR CLAIMS WHATSOEVER, INCLUDING, + * WITHOUT LIMITATION, ANY DIRECT, CONSEQUENTIAL, SPECIAL, INDIRECT, PUNITIVE, OR INCIDENTAL DAMAGES; ANY LOST PROFITS, + * OTHER ECONOMIC DAMAGE, PROPERTY DAMAGE, OR PERSONAL INJURY; AND EVEN IF RENESAS HAS BEEN ADVISED OF THE POSSIBILITY + * OF SUCH LOSS, DAMAGES, CLAIMS OR COSTS. + **********************************************************************************************************************/ + +#ifndef BSP_FEATURE_H +#define BSP_FEATURE_H + +/*********************************************************************************************************************** + * Includes , "Project Includes" + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Macro definitions + **********************************************************************************************************************/ + +/** The main oscillator drive value is based upon the oscillator frequency selected in the configuration */ +#if (BSP_CFG_XTAL_HZ > (24000000)) + #define CGC_MAINCLOCK_DRIVE (0x05U) +#elif (BSP_CFG_XTAL_HZ > (8000000)) && (BSP_CFG_XTAL_HZ <= (24000000)) + #define CGC_MAINCLOCK_DRIVE (0x03U) +#else + #define CGC_MAINCLOCK_DRIVE (0x00U) +#endif + +/*********************************************************************************************************************** + * Typedef definitions + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Exported global variables (to be accessed by other files) + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Private global variables and functions + **********************************************************************************************************************/ + +#define BSP_FEATURE_ACMPHS_MIN_WAIT_TIME_US (1U) // This comes from the Electrical Characteristics in the hardware manual. Rounding up to nearest microsecond. +#define BSP_FEATURE_ACMPHS_VREF (ACMPHS_REFERENCE_IVREF2) + +#define BSP_FEATURE_ACMPLP_HAS_COMPSEL_REGISTERS (0U) // Feature not available on this MCU +#define BSP_FEATURE_ACMPLP_MIN_WAIT_TIME_US (0U) // Feature not available on this MCU + +#define BSP_FEATURE_ADC_ADDITION_SUPPORTED (1U) // ADC Derived from RA8M1 +#define BSP_FEATURE_ADC_B_TSN_CALIBRATION32_MASK (0) // Feature not available on this MCU +#define BSP_FEATURE_ADC_B_TSN_SLOPE (0) // Feature not available on this MCU +#define BSP_FEATURE_ADC_B_UNIT_0_CHANNELS (0) // Feature not available on this MCU +#define BSP_FEATURE_ADC_B_UNIT_1_CHANNELS (0) // Feature not available on this MCU +#define BSP_FEATURE_ADC_CALIBRATION_REG_AVAILABLE (0U) +#define BSP_FEATURE_ADC_CLOCK_SOURCE (FSP_PRIV_CLOCK_PCLKC) +#define BSP_FEATURE_ADC_GROUP_B_SENSORS_ALLOWED (1U) +#define BSP_FEATURE_ADC_HAS_ADBUF (1U) +#define BSP_FEATURE_ADC_HAS_ADCER_ADPRC (1U) +#define BSP_FEATURE_ADC_HAS_ADCER_ADRFMT (1U) +#define BSP_FEATURE_ADC_HAS_ADHVREFCNT (0U) +#define BSP_FEATURE_ADC_HAS_PGA (0U) +#define BSP_FEATURE_ADC_HAS_SAMPLE_HOLD_REG (1U) +#define BSP_FEATURE_ADC_HAS_VREFAMPCNT (0U) +#define BSP_FEATURE_ADC_MAX_RESOLUTION_BITS (12U) +#define BSP_FEATURE_ADC_SENSORS_EXCLUSIVE (0U) +#define BSP_FEATURE_ADC_SENSOR_MIN_SAMPLING_TIME (4150U) +#define BSP_FEATURE_ADC_TSN_CALIBRATION32_AVAILABLE (1U) +#define BSP_FEATURE_ADC_TSN_CALIBRATION32_MASK (0x0000FFFFU) +#define BSP_FEATURE_ADC_TSN_CALIBRATION_AVAILABLE (1U) // TSCDR is a 32-bit register on this MCU +#define BSP_FEATURE_ADC_TSN_CONTROL_AVAILABLE (1U) +#define BSP_FEATURE_ADC_TSN_SLOPE (4000) +#define BSP_FEATURE_ADC_UNIT_0_CHANNELS (0xF01FF) // 0 to 8, 16 to 19 +#define BSP_FEATURE_ADC_UNIT_1_CHANNELS (0x7F007F) // 0 to 6, 16 to 22 +#define BSP_FEATURE_ADC_VALID_UNIT_MASK (3U) + +#define BSP_FEATURE_AGT_AGTW_CHANNEL_COUNT (0) +#define BSP_FEATURE_AGT_AGT_CHANNEL_COUNT (2) +#define BSP_FEATURE_AGT_USE_AGTIOSEL_ALT (0) // Indicates use of AGTIOSEL_ALT instead of AGTIOSEL +#define BSP_FEATURE_AGT_VALID_CHANNEL_MASK (0x3U) + +#define BSP_FEATURE_BSP_FLASH_CACHE (1) +#define BSP_FEATURE_BSP_FLASH_CACHE_DISABLE_OPM (0U) +#define BSP_FEATURE_BSP_FLASH_PREFETCH_BUFFER (0) +#define BSP_FEATURE_BSP_HAS_CANFD_CLOCK (1U) +#define BSP_FEATURE_BSP_HAS_CEC_CLOCK (0) // Feature not available on this MCU +#define BSP_FEATURE_BSP_HAS_CLOCK_SUPPLY_TYPEB (0U) +#define BSP_FEATURE_BSP_HAS_CODE_SYSTEM_CACHE (0) +#define BSP_FEATURE_BSP_HAS_DCDC_REGULATOR (0U) +#define BSP_FEATURE_BSP_HAS_DTCM (1U) +#define BSP_FEATURE_BSP_HAS_GPT_CLOCK (0U) // Mutually exclusive with USB60 Clock +#define BSP_FEATURE_BSP_HAS_GRAPHICS_DOMAIN (0) +#define BSP_FEATURE_BSP_HAS_I3C_CLOCK (1) +#define BSP_FEATURE_BSP_HAS_IIC_CLOCK (0U) +#define BSP_FEATURE_BSP_HAS_ITCM (1U) +#define BSP_FEATURE_BSP_HAS_LCD_CLOCK (0) +#define BSP_FEATURE_BSP_HAS_OCTASPI_CLOCK (1U) +#define BSP_FEATURE_BSP_HAS_OFS2 (1U) +#define BSP_FEATURE_BSP_HAS_OFS3 (0) +#define BSP_FEATURE_BSP_HAS_SCE5 (0) +#define BSP_FEATURE_BSP_HAS_SCE_ON_RA2 (0) // Feature not available on this MCU +#define BSP_FEATURE_BSP_HAS_SCISPI_CLOCK (0) +#define BSP_FEATURE_BSP_HAS_SCI_CLOCK (1) +#define BSP_FEATURE_BSP_HAS_SDADC_CLOCK (0) +#define BSP_FEATURE_BSP_HAS_SECURITY_MPU (0U) +#define BSP_FEATURE_BSP_HAS_SPI_CLOCK (1) +#define BSP_FEATURE_BSP_HAS_SP_MON (0U) +#define BSP_FEATURE_BSP_HAS_SYRACCR (1U) +#define BSP_FEATURE_BSP_HAS_TZFSAR (0) +#define BSP_FEATURE_BSP_HAS_USB60_CLOCK_REQ (1U) // Feature available on this MCU +#define BSP_FEATURE_BSP_HAS_USBCKDIVCR (1U) +#define BSP_FEATURE_BSP_HAS_USB_CLOCK_DIV (0U) +#define BSP_FEATURE_BSP_HAS_USB_CLOCK_REQ (1U) +#define BSP_FEATURE_BSP_HAS_USB_CLOCK_SEL (1U) +#define BSP_FEATURE_BSP_HAS_USB_CLOCK_SEL_ALT (0U) +#define BSP_FEATURE_BSP_MCU_INFO_POINTER_LOCATION (0U) +#define BSP_FEATURE_BSP_MPU_REGION0_MASK (0U) // Feature not available on this MCU +#define BSP_FEATURE_BSP_MSTP_GPT_MSTPD5_MAX_CH (0U) // If MSTPRE is present than the setting is not valid. +#define BSP_FEATURE_BSP_MSTP_HAS_MSTPCRE (1U) +#define BSP_FEATURE_BSP_NUM_PMSAR (16U) // 16 due to offset address change from PMSAR2 to PMSAR3 +#define BSP_FEATURE_BSP_OFS1_HOCOFRQ_MASK (0xFFFFF1FFU) +#define BSP_FEATURE_BSP_OFS1_HOCOFRQ_OFFSET (9U) +#define BSP_FEATURE_BSP_OFS_HAS_SECURITY_ATTRIBUTION (1) +#define BSP_FEATURE_BSP_OSIS_PADDING (0U) +#define BSP_FEATURE_BSP_POST_CRUNTIME_INIT (0U) +#define BSP_FEATURE_BSP_POWER_CHANGE_MSTP_REQUIRED (0U) +#define BSP_FEATURE_BSP_RESET_TRNG (0U) +#define BSP_FEATURE_BSP_SECURITY_PREINIT (0U) +#define BSP_FEATURE_BSP_SYS_CLOCK_FREQ_FIVE_ROM_WAITS (240000000U) // The maximum frequency allowed without having five ROM wait cycles (Set to zero if this is not an option). +#define BSP_FEATURE_BSP_SYS_CLOCK_FREQ_FOUR_ROM_WAITS (192000000U) // The maximum frequency allowed without having four ROM wait cycles (Set to zero if this is not an option). +#define BSP_FEATURE_BSP_SYS_CLOCK_FREQ_NO_RAM_WAITS (120000000U) +#define BSP_FEATURE_BSP_SYS_CLOCK_FREQ_ONE_ROM_WAITS (48000000U) // The maximum frequency allowed without having one ROM wait cycle. +#define BSP_FEATURE_BSP_SYS_CLOCK_FREQ_THREE_ROM_WAITS (144000000U) // The maximum frequency allowed without having three ROM wait cycles (Set to zero if this is not an option). +#define BSP_FEATURE_BSP_SYS_CLOCK_FREQ_TWO_ROM_WAITS (96000000U) // The maximum frequency allowed without having two ROM wait cycles. (Set to zero if this is not an option). +#define BSP_FEATURE_BSP_UNIQUE_ID_OFFSET (0U) +#define BSP_FEATURE_BSP_UNIQUE_ID_POINTER (0x03008190U) +#define BSP_FEATURE_BSP_VBATT_HAS_VBTCR1_BPWSWSTP (0U) + +#define BSP_FEATURE_CANFD_FD_SUPPORT (1U) +#define BSP_FEATURE_CANFD_LITE (1U) +#define BSP_FEATURE_CANFD_NUM_CHANNELS (1U) +#define BSP_FEATURE_CANFD_NUM_INSTANCES (2U) + +#define BSP_FEATURE_CAN_CHECK_PCLKB_RATIO (0U) +#define BSP_FEATURE_CAN_CLOCK (0U) +#define BSP_FEATURE_CAN_MCLOCK_ONLY (0U) +#define BSP_FEATURE_CAN_NUM_CHANNELS (0U) // RA8M1 has CAN-FD + +#define BSP_FEATURE_CGC_EXECUTE_FROM_LOCO (0) +#define BSP_FEATURE_CGC_HAS_BCLK (1U) +#define BSP_FEATURE_CGC_HAS_CPUCLK (1U) +#define BSP_FEATURE_CGC_HAS_FCLK (1U) +#define BSP_FEATURE_CGC_HAS_FLDWAITR (0U) +#define BSP_FEATURE_CGC_HAS_FLL (1U) +#define BSP_FEATURE_CGC_HAS_FLWT (1U) +#define BSP_FEATURE_CGC_HAS_HOCOWTCR (0U) +#define BSP_FEATURE_CGC_HAS_MEMWAIT (0U) +#define BSP_FEATURE_CGC_HAS_PCLKA (1U) +#define BSP_FEATURE_CGC_HAS_PCLKB (1U) +#define BSP_FEATURE_CGC_HAS_PCLKC (1U) +#define BSP_FEATURE_CGC_HAS_PCLKD (1U) +#define BSP_FEATURE_CGC_HAS_PCLKE (1U) +#define BSP_FEATURE_CGC_HAS_PLL (1U) +#define BSP_FEATURE_CGC_HAS_PLL2 (1U) +#define BSP_FEATURE_CGC_HAS_SOPCCR (0U) +#define BSP_FEATURE_CGC_HAS_SOSC (1U) +#define BSP_FEATURE_CGC_HAS_SRAMPRCR2 (0U) // On the RA8M1 there is another register to enable write access for SRAMWTSC. +#define BSP_FEATURE_CGC_HAS_SRAMWTSC (1U) +#define BSP_FEATURE_CGC_HOCOSF_BEFORE_OPCCR (0U) +#define BSP_FEATURE_CGC_HOCOWTCR_64MHZ_ONLY (0U) +#define BSP_FEATURE_CGC_HOCOWTCR_SCI_SNOOZE_VALUE (0) +#define BSP_FEATURE_CGC_HOCOWTCR_VALUE (6U) +#define BSP_FEATURE_CGC_ICLK_DIV_RESET (BSP_CLOCKS_SYS_CLOCK_DIV_1) +#define BSP_FEATURE_CGC_LOCO_STABILIZATION_MAX_US (61U) +#define BSP_FEATURE_CGC_LOW_SPEED_MAX_FREQ_HZ (1000000U) // This MCU does have Low Speed Mode, up to 1MHz +#define BSP_FEATURE_CGC_LOW_VOLTAGE_MAX_FREQ_HZ (0U) // This MCU does not have Low Voltage Mode +#define BSP_FEATURE_CGC_MIDDLE_SPEED_MAX_FREQ_HZ (0U) // This MCU does not have Middle Speed Mode +#define BSP_FEATURE_CGC_MOCO_STABILIZATION_MAX_US (15U) +#define BSP_FEATURE_CGC_MODRV_MASK (R_SYSTEM_MOMCR_MODRV0_Msk) +#define BSP_FEATURE_CGC_MODRV_SHIFT (R_SYSTEM_MOMCR_MODRV0_Pos) +#define BSP_FEATURE_CGC_PLL_OUT_MAX_HZ (480000000U) +#define BSP_FEATURE_CGC_PLL_OUT_P_MAX_HZ (480000000U) +#define BSP_FEATURE_CGC_PLL_OUT_Q_MAX_HZ (480000000U) +#define BSP_FEATURE_CGC_PLL_OUT_R_MAX_HZ (480000000U) +#define BSP_FEATURE_CGC_PLL_OUT_MIN_HZ (40000000U) +#define BSP_FEATURE_CGC_PLL_OUT_P_MIN_HZ (40000000U) +#define BSP_FEATURE_CGC_PLL_OUT_Q_MIN_HZ (71000000U) +#define BSP_FEATURE_CGC_PLL_OUT_R_MIN_HZ (71000000U) +#define BSP_FEATURE_CGC_PLL_SRC_MAX_HZ (48000000U) +#define BSP_FEATURE_CGC_PLL_SRC_MIN_HZ (8000000U) +#define BSP_FEATURE_CGC_PLL2_OUT_MAX_HZ (480000000U) +#define BSP_FEATURE_CGC_PLL2_OUT_P_MAX_HZ (480000000U) +#define BSP_FEATURE_CGC_PLL2_OUT_Q_MAX_HZ (480000000U) +#define BSP_FEATURE_CGC_PLL2_OUT_R_MAX_HZ (480000000U) +#define BSP_FEATURE_CGC_PLL2_OUT_MIN_HZ (40000000U) +#define BSP_FEATURE_CGC_PLL2_OUT_P_MIN_HZ (40000000U) +#define BSP_FEATURE_CGC_PLL2_OUT_Q_MIN_HZ (71000000U) +#define BSP_FEATURE_CGC_PLL2_OUT_R_MIN_HZ (71000000U) +#define BSP_FEATURE_CGC_PLL2_SRC_MAX_HZ (48000000U) +#define BSP_FEATURE_CGC_PLL2_SRC_MIN_HZ (8000000U) + +#define BSP_FEATURE_CGC_PLLCCR_TYPE (3U) +#define BSP_FEATURE_CGC_PLLCCR_VCO_MAX_HZ (1440000000U) +#define BSP_FEATURE_CGC_PLLCCR_WAIT_US (0U) // No wait between setting PLLCCR and clearing PLLSTP +#define BSP_FEATURE_CGC_SCKDIVCR_BCLK_MATCHES_PCLKB (0U) +#define BSP_FEATURE_CGC_SODRV_MASK (3U) +#define BSP_FEATURE_CGC_SODRV_SHIFT (0U) +#define BSP_FEATURE_CGC_SRAMPRCR_KW_OFFSET (8) +#define BSP_FEATURE_CGC_SRAMPRCR_KW_VALUE (0xA5) +#define BSP_FEATURE_CGC_STARTUP_OPCCR_MODE (0) +#define BSP_FEATURE_CGC_HAS_OSTDCSE (0) // Feature not available on this MCU +#define BSP_FEATURE_CGC_OSCILLATON_STOP_DETECT (1) +#define BSP_FEATURE_CGC_STARTUP_SCKDIVCR (0x00000000) +#define BSP_FEATURE_CGC_STARTUP_SCKDIVCR2 (0x00) +#define BSP_FEATURE_CGC_STARTUP_SCKSCR (0x01) + +#define BSP_FEATURE_CRYPTO_HAS_AES (1) +#define BSP_FEATURE_CRYPTO_HAS_AES_WRAPPED (1) +#define BSP_FEATURE_CRYPTO_HAS_CTR_DRBG (1) +#define BSP_FEATURE_CRYPTO_HAS_ECC (1) +#define BSP_FEATURE_CRYPTO_HAS_ECC_WRAPPED (1) +#define BSP_FEATURE_CRYPTO_HAS_HASH (1) +#define BSP_FEATURE_CRYPTO_HAS_NEW_PROCS (1) +#define BSP_FEATURE_CRYPTO_HAS_RSA (1) +#define BSP_FEATURE_CRYPTO_HAS_RSA_WRAPPED (1) +#define BSP_FEATURE_CRYPTO_AES_IP_VERSION (0) +#define BSP_FEATURE_CRYPTO_HAS_SCE5 (0) // Feature not available on this MCU +#define BSP_FEATURE_CRYPTO_HAS_SCE5B (0) +#define BSP_FEATURE_CRYPTO_HAS_SCE7 (0) +#define BSP_FEATURE_CRYPTO_HAS_SCE9 (0) +#define BSP_FEATURE_CRYPTO_HAS_RSIP7 (1) + +#define BSP_FEATURE_CTSU_CTSUCHAC_REGISTER_COUNT (0U) // Feature not available on this MCU +#define BSP_FEATURE_CTSU_CTSUCHTRC_REGISTER_COUNT (0U) // Feature not available on this MCU +#define BSP_FEATURE_CTSU_HAS_TXVSEL (0) // Feature not available on this MCU +#define BSP_FEATURE_CTSU_VERSION (0) // Feature not available on this MCU + +#define BSP_FEATURE_DAC8_HAS_CHARGEPUMP (0) // Feature not available on this MCU +#define BSP_FEATURE_DAC8_HAS_DA_AD_SYNCHRONIZE (0) // Feature not available on this MCU +#define BSP_FEATURE_DAC8_HAS_REALTIME_MODE (0) // Feature not available on this MCU +#define BSP_FEATURE_DAC8_MAX_CHANNELS (0) // Feature not available on this MCU + +#define BSP_FEATURE_DAC_AD_SYNC_UNIT_MASK (0x02U) +#define BSP_FEATURE_DAC_HAS_CHARGEPUMP (0U) +#define BSP_FEATURE_DAC_HAS_DAVREFCR (0U) +#define BSP_FEATURE_DAC_HAS_DA_AD_SYNCHRONIZE (1U) +#define BSP_FEATURE_DAC_HAS_INTERNAL_OUTPUT (1U) +#define BSP_FEATURE_DAC_HAS_OUTPUT_AMPLIFIER (1U) +#define BSP_FEATURE_DAC_MAX_CHANNELS (2U) + +#define BSP_FEATURE_DMAC_HAS_DELSR (1U) +#define BSP_FEATURE_DMAC_HAS_REPEAT_BLOCK_MODE (1U) +#define BSP_FEATURE_DMAC_MAX_CHANNEL (8U) + +#define BSP_FEATURE_DOC_VERSION (2U) + +#define BSP_FEATURE_DWT_CYCCNT (1U) // RA8M1 has Data Watchpoint Cycle Count Register + +#define BSP_FEATURE_ELC_PERIPHERAL_MASK (0x4003FFFFU) // Positions of event link set registers (ELSRs) available on this MCU +#define BSP_FEATURE_ELC_VERSION (2U) + +#define BSP_FEATURE_ETHER_FIFO_DEPTH (0x0000070FU) +#define BSP_FEATURE_ETHER_MAX_CHANNELS (1U) +#define BSP_FEATURE_ETHER_SUPPORTS_TZ_SECURE (1U) // Feature available on this MCU + +#define BSP_FEATURE_FLASH_CODE_FLASH_START (0x02000000U) +#define BSP_FEATURE_FLASH_DATA_FLASH_START (0x27000000U) +#define BSP_FEATURE_FLASH_HP_CF_DUAL_BANK_START (0x02200000U) +#define BSP_FEATURE_FLASH_HP_CF_REGION0_BLOCK_SIZE (0x2000U) +#define BSP_FEATURE_FLASH_HP_CF_REGION0_SIZE (0x10000U) +#define BSP_FEATURE_FLASH_HP_CF_REGION1_BLOCK_SIZE (0x8000U) +#define BSP_FEATURE_FLASH_HP_CF_WRITE_SIZE (128U) +#define BSP_FEATURE_FLASH_HP_DF_BLOCK_SIZE (64U) +#define BSP_FEATURE_FLASH_HP_DF_WRITE_SIZE (4U) +#define BSP_FEATURE_FLASH_HP_HAS_FMEPROT (1) +#define BSP_FEATURE_FLASH_HP_SUPPORTS_DUAL_BANK (1) +#define BSP_FEATURE_FLASH_HP_VERSION (40U) +#define BSP_FEATURE_FLASH_LP_AWS_FAW_MASK (0) // Feature not available on this MCU +#define BSP_FEATURE_FLASH_LP_AWS_FAW_SHIFT (0) // Feature not available on this MCU +#define BSP_FEATURE_FLASH_LP_CF_BLOCK_SIZE (0) // Feature not available on this MCU +#define BSP_FEATURE_FLASH_LP_CF_WRITE_SIZE (0) // Feature not available on this MCU +#define BSP_FEATURE_FLASH_LP_DF_BLOCK_SIZE (0) // Feature not available on this MCU +#define BSP_FEATURE_FLASH_LP_DF_WRITE_SIZE (0) // Feature not available on this MCU +#define BSP_FEATURE_FLASH_LP_FLASH_CLOCK_SRC (0) // Feature not available on this MCU +#define BSP_FEATURE_FLASH_LP_SUPPORTS_DUAL_BANK (0) // Feature not available on this MCU +#define BSP_FEATURE_FLASH_LP_VERSION (0) // Feature not available on this MCU +#define BSP_FEATURE_FLASH_SUPPORTS_ACCESS_WINDOW (0) // Feature not available on this MCU +#define BSP_FEATURE_FLASH_SUPPORTS_ID_CODE (0) // Feature not available on this MCU + +#define BSP_FEATURE_GPTEH_CHANNEL_MASK (0) + +#define BSP_FEATURE_GPTE_CHANNEL_MASK (0) + +#define BSP_FEATURE_GPT_32BIT_CHANNEL_MASK (0x00FFU) +#define BSP_FEATURE_GPT_CLOCK_DIVIDER_STEP_SIZE (2U) +#define BSP_FEATURE_GPT_CLOCK_DIVIDER_VALUE_7_9_VALID (0U) +#define BSP_FEATURE_GPT_EVENT_COUNT_CHANNEL_MASK (BSP_FEATURE_GPT_VALID_CHANNEL_MASK) +#define BSP_FEATURE_GPT_ODC_FRANGE_FREQ_MIN (115000000U) +#define BSP_FEATURE_GPT_ODC_FREQ_MAX (200000000U) +#define BSP_FEATURE_GPT_ODC_FREQ_MIN (80000000U) +#define BSP_FEATURE_GPT_ODC_VALID_CHANNEL_MASK (0U) // Feature not available on this MCU +#define BSP_FEATURE_GPT_TPCS_SHIFT (0U) +#define BSP_FEATURE_GPT_VALID_CHANNEL_MASK (0x3FFFU) + +#define BSP_FEATURE_I3C_NUM_CHANNELS (1U) +#define BSP_FEATURE_I3C_MAX_DEV_COUNT (8U) +#define BSP_FEATURE_I3C_NTDTBP0_DEPTH (16U) +#define BSP_FEATURE_I3C_MSTP_OFFSET (4U) + +#define BSP_FEATURE_ICU_HAS_INTERRUPT_GROUPS (0U) +#define BSP_FEATURE_ICU_HAS_WUPEN1 (1) +#define BSP_FEATURE_ICU_IRQ_CHANNELS_MASK (0xFFFFU) +#define BSP_FEATURE_ICU_WUPEN_MASK (0x00007F08FF1DFFFFU) // Note there is another WUPEN1 register +#define BSP_FEATURE_ICU_FIXED_IELSR_COUNT (0U) + +#define BSP_FEATURE_IIC_BUS_FREE_TIME_MULTIPLIER (5U) +#define BSP_FEATURE_IIC_B_FAST_MODE_PLUS (0x01) +#define BSP_FEATURE_IIC_B_VALID_CHANNEL_MASK (0x01) +#define BSP_FEATURE_IIC_FAST_MODE_PLUS (0x03) +#define BSP_FEATURE_IIC_VALID_CHANNEL_MASK (0x03) +#define BSP_FEATURE_IIC_VERSION (0) // Feature not available on this MCU + +#define BSP_FEATURE_IOPORT_ELC_PORTS (0x001EU) +#define BSP_FEATURE_IOPORT_HAS_ETHERNET (0U) +#define BSP_FEATURE_IOPORT_VERSION (2U) + +#define BSP_FEATURE_IWDT_CLOCK_FREQUENCY (16384UL) +#define BSP_FEATURE_IWDT_SUPPORTS_REGISTER_START_MODE (1U) + +#define BSP_FEATURE_KINT_HAS_MSTP (0U) // Feature not available on this MCU + +#define BSP_FEATURE_LPM_CHANGE_MSTP_ARRAY (0U) +#define BSP_FEATURE_LPM_CHANGE_MSTP_REQUIRED (0U) +#define BSP_FEATURE_LPM_DPSIEGR_MASK (0x12FFFFU) +#define BSP_FEATURE_LPM_DPSIER_MASK (0xAF1FFFFFU) +#define BSP_FEATURE_LPM_HAS_DEEP_SLEEP (1U) +#define BSP_FEATURE_LPM_HAS_DEEP_STANDBY (1U) +#define BSP_FEATURE_LPM_HAS_DPSBYCR_DEEPCUT (0U) +#define BSP_FEATURE_LPM_HAS_DPSBYCR_DPSBY (0U) +#define BSP_FEATURE_LPM_HAS_DPSBYCR_SRKEEP (1U) +#define BSP_FEATURE_LPM_HAS_LDO_CONTROL (1U) +#define BSP_FEATURE_LPM_HAS_LPSCR (1U) +#define BSP_FEATURE_LPM_HAS_PDRAMSCR (1U) +#define BSP_FEATURE_LPM_HAS_SBYCR_OPE (1U) +#define BSP_FEATURE_LPM_HAS_SBYCR_SSBY (0U) +#define BSP_FEATURE_LPM_HAS_SNOOZE (0U) +#define BSP_FEATURE_LPM_HAS_SNZEDCR1 (0U) +#define BSP_FEATURE_LPM_HAS_SNZREQCR1 (0U) +#define BSP_FEATURE_LPM_HAS_STCONR (0U) +#define BSP_FEATURE_LPM_SBYCR_WRITE1_B14 (0U) +#define BSP_FEATURE_LPM_SNZEDCR_MASK (0U) // Feature not available on this MCU +#define BSP_FEATURE_LPM_SNZREQCR_MASK (0U) // Feature not available on this MCU +#define BSP_FEATURE_LPM_STANDBY_MOCO_REQUIRED (1U) + +#define BSP_FEATURE_LVD_HAS_DIGITAL_FILTER (1U) +#define BSP_FEATURE_LVD_HAS_EXT_MONITOR (0U) +#define BSP_FEATURE_LVD_HAS_LVDLVLR (0U) +#define BSP_FEATURE_LVD_MONITOR_1_HI_THRESHOLD ((lvd_threshold_t) 0) // 4.29V +#define BSP_FEATURE_LVD_MONITOR_1_LOW_THRESHOLD ((lvd_threshold_t) 15) // 1.71V +#define BSP_FEATURE_LVD_MONITOR_2_HI_THRESHOLD ((lvd_threshold_t) 0) // 4.29V +#define BSP_FEATURE_LVD_MONITOR_2_LOW_THRESHOLD ((lvd_threshold_t) 15) // 1.71V +#define BSP_FEATURE_LVD_MONITOR_1_STABILIZATION_TIME_US (20U) // LVD1 operation stabilization time after LVD1 is enabled +#define BSP_FEATURE_LVD_MONITOR_2_STABILIZATION_TIME_US (20U) // LVD2 operation stabilization time after LVD2 is enabled +#define BSP_FEATURE_LVD_SUPPORT_RESET_ON_RISING_EDGE (1U) + +#define BSP_FEATURE_NUM_PLL1_OUTPUT_CLOCKS (3U) +#define BSP_FEATURE_NUM_PLL2_OUTPUT_CLOCKS (3U) + +#define BSP_FEATURE_OPAMP_BASE_ADDRESS (0U) +#define BSP_FEATURE_OPAMP_HAS_MIDDLE_SPEED (0) // Feature not available on this MCU +#define BSP_FEATURE_OPAMP_HAS_SWITCHES (0U) +#define BSP_FEATURE_OPAMP_HAS_THIRD_CHANNEL (0U) +#define BSP_FEATURE_OPAMP_MIN_WAIT_TIME_HS_US (0) // Feature not available on this MCU +#define BSP_FEATURE_OPAMP_MIN_WAIT_TIME_LP_US (0) // Feature not available on this MCU +#define BSP_FEATURE_OPAMP_MIN_WAIT_TIME_MS_US (0) // Feature not available on this MCU +#define BSP_FEATURE_OPAMP_TRIM_CAPABLE (0U) +#define BSP_FEATURE_OPAMP_VARIANT_CHANNEL_MASK (0U) + +#define BSP_FEATURE_OSPI_B_DEVICE_0_START_ADDRESS (0x80000000U) +#define BSP_FEATURE_OSPI_B_DEVICE_1_START_ADDRESS (0x90000000U) + +#define BSP_FEATURE_POEG_CHANNEL_MASK (0xFU) + +#define BSP_FEATURE_QSPI_DEVICE_START_ADDRESS (0x0U) + +#define BSP_FEATURE_RTC_IS_AVAILABLE (1U) +#define BSP_FEATURE_RTC_IS_IRTC (0U) +#define BSP_FEATURE_RTC_HAS_ROPSEL (0) // Feature not available on this MCU +#define BSP_FEATURE_RTC_HAS_TCEN (1U) +#define BSP_FEATURE_RTC_RTCCR_CHANNELS (3U) +#define BSP_FEATURE_SYSC_HAS_VBTICTLR (1U) + +#define BSP_FEATURE_SCI_ADDRESS_MATCH_CHANNELS (0U) +#define BSP_FEATURE_SCI_CHANNELS (0x21FU) +#define BSP_FEATURE_SCI_CLOCK (FSP_PRIV_CLOCK_PCLKA) +#define BSP_FEATURE_SCI_SPI_SCKSEL_VALUE (1U) +#define BSP_FEATURE_SCI_UART_CSTPEN_CHANNELS (0x21FU) +#define BSP_FEATURE_SCI_UART_FIFO_CHANNELS (0x21FU) +#define BSP_FEATURE_SCI_UART_FIFO_DEPTH (16U) +#define BSP_FEATURE_SCI_VERSION (2U) + +#define BSP_FEATURE_SDHI_CLOCK (FSP_PRIV_CLOCK_PCLKB) +#define BSP_FEATURE_SDHI_HAS_CARD_DETECTION (1U) +#define BSP_FEATURE_SDHI_MIN_CLOCK_DIVISION_SHIFT (0U) // 1 (2^0) is minimum division supported +#define BSP_FEATURE_SDHI_SUPPORTS_8_BIT_MMC (1U) +#define BSP_FEATURE_SDHI_VALID_CHANNEL_MASK (0x03U) + +#define BSP_FEATURE_SDRAM_START_ADDRESS (0x68000000U) + +#define BSP_FEATURE_SLCDC_HAS_8_TIME_SLICE (0) // Feature not available on this MCU +#define BSP_FEATURE_SLCDC_HAS_INTERNAL_VOLT_GEN (0) // Feature not available on this MCU +#define BSP_FEATURE_SLCDC_MAX_NUM_SEG (0) // Feature not available on this MCU +#define BSP_FEATURE_SLCDC_HAS_VL1SEL (0) // Feature not available on this MCU +#define BSP_FEATURE_SLCDC_CONTRAST_MAX_4BIAS (0) // Feature not available on this MCU +#define BSP_FEATURE_SLCDC_CONTRAST_MAX (0) // Feature not available on this MCU + +#define BSP_FEATURE_SPI_CLK (FSP_PRIV_CLOCK_PCLKA) +#define BSP_FEATURE_SPI_HAS_SPCR3 (1U) +#define BSP_FEATURE_SPI_HAS_SSL_LEVEL_KEEP (1U) +#define BSP_FEATURE_SPI_MAX_CHANNEL (2U) +#define BSP_FEATURE_SPI_SSL_LEVEL_KEEP_VALID_CHANNEL_MASK (0x3U) + +#define BSP_FEATURE_SRAM_SRAMWTSC_WAIT_CYCLE_ENABLE (1) + +#define BSP_FEATURE_SSI_FIFO_NUM_STAGES (32U) +#define BSP_FEATURE_SSI_VALID_CHANNEL_MASK (3U) + +#define BSP_FEATURE_TFU_SUPPORTED (0U) // Trigonometric Function Unit (TFU) available on this MCU + +#define BSP_FEATURE_TRNG_HAS_MODULE_STOP (0U) +#define BSP_FEATURE_TZ_NS_OFFSET (1U << 28U) +#define BSP_FEATURE_TZ_HAS_TRUSTZONE (1U) +#define BSP_FEATURE_TZ_HAS_DLM (1U) +#define BSP_FEATURE_TZ_VERSION (2U) + +#define BSP_FEATURE_ULPT_MAX_CHANNEL_NUM (2) +#define BSP_FEATURE_ULPT_VALID_CHANNEL_MASK (0x3U) + +#define BSP_FEATURE_CRC_HAS_SNOOP (1U) +#define BSP_FEATURE_CRC_SNOOP_ADDRESS_TYPE_TDR (0x4U) + +#endif diff --git a/bsp/renesas/ra8m1-ek/ra/fsp/src/bsp/mcu/ra8m1/bsp_mcu_info.h b/bsp/renesas/ra8m1-ek/ra/fsp/src/bsp/mcu/ra8m1/bsp_mcu_info.h new file mode 100644 index 000000000000..991310e5730d --- /dev/null +++ b/bsp/renesas/ra8m1-ek/ra/fsp/src/bsp/mcu/ra8m1/bsp_mcu_info.h @@ -0,0 +1,58 @@ +/*********************************************************************************************************************** + * Copyright [2020-2023] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics America Inc. and may only be used with products + * of Renesas Electronics Corp. and its affiliates ("Renesas"). No other uses are authorized. Renesas products are + * sold pursuant to Renesas terms and conditions of sale. Purchasers are solely responsible for the selection and use + * of Renesas products and Renesas assumes no liability. No license, express or implied, to any intellectual property + * right is granted by Renesas. This software is protected under all applicable laws, including copyright laws. Renesas + * reserves the right to change or discontinue this software and/or this documentation. THE SOFTWARE AND DOCUMENTATION + * IS DELIVERED TO YOU "AS IS," AND RENESAS MAKES NO REPRESENTATIONS OR WARRANTIES, AND TO THE FULLEST EXTENT + * PERMISSIBLE UNDER APPLICABLE LAW, DISCLAIMS ALL WARRANTIES, WHETHER EXPLICITLY OR IMPLICITLY, INCLUDING WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT, WITH RESPECT TO THE SOFTWARE OR + * DOCUMENTATION. RENESAS SHALL HAVE NO LIABILITY ARISING OUT OF ANY SECURITY VULNERABILITY OR BREACH. TO THE MAXIMUM + * EXTENT PERMITTED BY LAW, IN NO EVENT WILL RENESAS BE LIABLE TO YOU IN CONNECTION WITH THE SOFTWARE OR DOCUMENTATION + * (OR ANY PERSON OR ENTITY CLAIMING RIGHTS DERIVED FROM YOU) FOR ANY LOSS, DAMAGES, OR CLAIMS WHATSOEVER, INCLUDING, + * WITHOUT LIMITATION, ANY DIRECT, CONSEQUENTIAL, SPECIAL, INDIRECT, PUNITIVE, OR INCIDENTAL DAMAGES; ANY LOST PROFITS, + * OTHER ECONOMIC DAMAGE, PROPERTY DAMAGE, OR PERSONAL INJURY; AND EVEN IF RENESAS HAS BEEN ADVISED OF THE POSSIBILITY + * OF SUCH LOSS, DAMAGES, CLAIMS OR COSTS. + **********************************************************************************************************************/ + +/*******************************************************************************************************************//** + * @ingroup BSP_MCU + * @defgroup BSP_MCU_RA8M1 RA8M1 + * @includedoc config_bsp_ra8m1_fsp.html + * @{ + **********************************************************************************************************************/ + +/** @} (end defgroup BSP_MCU_RA8M1) */ + +#ifndef BSP_MCU_INFO_H +#define BSP_MCU_INFO_H + +/*********************************************************************************************************************** + * Includes , "Project Includes" + **********************************************************************************************************************/ + +/* BSP MCU Specific Includes. */ +#include "bsp_elc.h" +#include "bsp_feature.h" + +/*********************************************************************************************************************** + * Macro definitions + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Typedef definitions + **********************************************************************************************************************/ +typedef elc_event_t bsp_interrupt_event_t; + +/*********************************************************************************************************************** + * Exported global variables + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Exported global functions (to be accessed by other files) + **********************************************************************************************************************/ + +#endif diff --git a/bsp/renesas/ra8m1-ek/ra/fsp/src/bsp/mcu/ra8m1/bsp_override.h b/bsp/renesas/ra8m1-ek/ra/fsp/src/bsp/mcu/ra8m1/bsp_override.h new file mode 100644 index 000000000000..b30b1f0fda68 --- /dev/null +++ b/bsp/renesas/ra8m1-ek/ra/fsp/src/bsp/mcu/ra8m1/bsp_override.h @@ -0,0 +1,97 @@ +/*********************************************************************************************************************** + * Copyright [2020-2023] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics America Inc. and may only be used with products + * of Renesas Electronics Corp. and its affiliates ("Renesas"). No other uses are authorized. Renesas products are + * sold pursuant to Renesas terms and conditions of sale. Purchasers are solely responsible for the selection and use + * of Renesas products and Renesas assumes no liability. No license, express or implied, to any intellectual property + * right is granted by Renesas. This software is protected under all applicable laws, including copyright laws. Renesas + * reserves the right to change or discontinue this software and/or this documentation. THE SOFTWARE AND DOCUMENTATION + * IS DELIVERED TO YOU "AS IS," AND RENESAS MAKES NO REPRESENTATIONS OR WARRANTIES, AND TO THE FULLEST EXTENT + * PERMISSIBLE UNDER APPLICABLE LAW, DISCLAIMS ALL WARRANTIES, WHETHER EXPLICITLY OR IMPLICITLY, INCLUDING WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT, WITH RESPECT TO THE SOFTWARE OR + * DOCUMENTATION. RENESAS SHALL HAVE NO LIABILITY ARISING OUT OF ANY SECURITY VULNERABILITY OR BREACH. TO THE MAXIMUM + * EXTENT PERMITTED BY LAW, IN NO EVENT WILL RENESAS BE LIABLE TO YOU IN CONNECTION WITH THE SOFTWARE OR DOCUMENTATION + * (OR ANY PERSON OR ENTITY CLAIMING RIGHTS DERIVED FROM YOU) FOR ANY LOSS, DAMAGES, OR CLAIMS WHATSOEVER, INCLUDING, + * WITHOUT LIMITATION, ANY DIRECT, CONSEQUENTIAL, SPECIAL, INDIRECT, PUNITIVE, OR INCIDENTAL DAMAGES; ANY LOST PROFITS, + * OTHER ECONOMIC DAMAGE, PROPERTY DAMAGE, OR PERSONAL INJURY; AND EVEN IF RENESAS HAS BEEN ADVISED OF THE POSSIBILITY + * OF SUCH LOSS, DAMAGES, CLAIMS OR COSTS. + **********************************************************************************************************************/ + +/*******************************************************************************************************************//** + * @addtogroup BSP_MCU_RA8M1 + * @{ + **********************************************************************************************************************/ + +/** @} (end addtogroup BSP_MCU_RA8M1) */ + +#ifndef BSP_OVERRIDE_H +#define BSP_OVERRIDE_H + +/*********************************************************************************************************************** + * Includes , "Project Includes" + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Macro definitions + **********************************************************************************************************************/ + +/* Define overrides required for this MCU. */ + +#define BSP_OVERRIDE_ELC_PERIPHERAL_T +#define BSP_OVERRIDE_GROUP_IRQ_T + +/* Override definitions. */ + +#define ELC_PERIPHERAL_NUM (30U) + +/*********************************************************************************************************************** + * Typedef definitions + **********************************************************************************************************************/ + +typedef enum e_elc_peripheral +{ + ELC_PERIPHERAL_GPT_A = (0), + ELC_PERIPHERAL_GPT_B = (1), + ELC_PERIPHERAL_GPT_C = (2), + ELC_PERIPHERAL_GPT_D = (3), + ELC_PERIPHERAL_GPT_E = (4), + ELC_PERIPHERAL_GPT_F = (5), + ELC_PERIPHERAL_GPT_G = (6), + ELC_PERIPHERAL_GPT_H = (7), + ELC_PERIPHERAL_ADC0 = (8), + ELC_PERIPHERAL_ADC0_B = (9), + ELC_PERIPHERAL_ADC1 = (10), + ELC_PERIPHERAL_ADC1_B = (11), + ELC_PERIPHERAL_DAC0 = (12), + ELC_PERIPHERAL_DAC1 = (13), + ELC_PERIPHERAL_IOPORT1 = (14), + ELC_PERIPHERAL_IOPORT2 = (15), + ELC_PERIPHERAL_IOPORT3 = (16), + ELC_PERIPHERAL_IOPORT4 = (17), + ELC_PERIPHERAL_I3C = (30), +} elc_peripheral_t; + +/* Which interrupts can have callbacks registered. */ +typedef enum e_bsp_grp_irq +{ + BSP_GRP_IRQ_IWDT_ERROR = 0, ///< IWDT underflow/refresh error has occurred + BSP_GRP_IRQ_WDT_ERROR = 1, ///< WDT underflow/refresh error has occurred + BSP_GRP_IRQ_LVD1 = 2, ///< Voltage monitoring 1 interrupt + BSP_GRP_IRQ_LVD2 = 3, ///< Voltage monitoring 2 interrupt + BSP_GRP_IRQ_OSC_STOP_DETECT = 6, ///< Oscillation stop is detected + BSP_GRP_IRQ_NMI_PIN = 7, ///< NMI Pin interrupt + BSP_GRP_IRQ_MPU_BUS_TZF = 12, ///< MPU Bus or TrustZone Filter Error + BSP_GRP_IRQ_COMMON_MEMORY = 13, ///< SRAM ECC or SRAM Parity Error + BSP_GRP_IRQ_LOCKUP = 15, ///< LockUp Error +} bsp_grp_irq_t; + +/*********************************************************************************************************************** + * Exported global variables + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Exported global functions (to be accessed by other files) + **********************************************************************************************************************/ + +#endif diff --git a/bsp/renesas/ra8m1-ek/ra/fsp/src/r_ioport/r_ioport.c b/bsp/renesas/ra8m1-ek/ra/fsp/src/r_ioport/r_ioport.c new file mode 100644 index 000000000000..7a8cd8a52078 --- /dev/null +++ b/bsp/renesas/ra8m1-ek/ra/fsp/src/r_ioport/r_ioport.c @@ -0,0 +1,922 @@ +/*********************************************************************************************************************** + * Copyright [2020-2023] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics America Inc. and may only be used with products + * of Renesas Electronics Corp. and its affiliates ("Renesas"). No other uses are authorized. Renesas products are + * sold pursuant to Renesas terms and conditions of sale. Purchasers are solely responsible for the selection and use + * of Renesas products and Renesas assumes no liability. No license, express or implied, to any intellectual property + * right is granted by Renesas. This software is protected under all applicable laws, including copyright laws. Renesas + * reserves the right to change or discontinue this software and/or this documentation. THE SOFTWARE AND DOCUMENTATION + * IS DELIVERED TO YOU "AS IS," AND RENESAS MAKES NO REPRESENTATIONS OR WARRANTIES, AND TO THE FULLEST EXTENT + * PERMISSIBLE UNDER APPLICABLE LAW, DISCLAIMS ALL WARRANTIES, WHETHER EXPLICITLY OR IMPLICITLY, INCLUDING WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT, WITH RESPECT TO THE SOFTWARE OR + * DOCUMENTATION. RENESAS SHALL HAVE NO LIABILITY ARISING OUT OF ANY SECURITY VULNERABILITY OR BREACH. TO THE MAXIMUM + * EXTENT PERMITTED BY LAW, IN NO EVENT WILL RENESAS BE LIABLE TO YOU IN CONNECTION WITH THE SOFTWARE OR DOCUMENTATION + * (OR ANY PERSON OR ENTITY CLAIMING RIGHTS DERIVED FROM YOU) FOR ANY LOSS, DAMAGES, OR CLAIMS WHATSOEVER, INCLUDING, + * WITHOUT LIMITATION, ANY DIRECT, CONSEQUENTIAL, SPECIAL, INDIRECT, PUNITIVE, OR INCIDENTAL DAMAGES; ANY LOST PROFITS, + * OTHER ECONOMIC DAMAGE, PROPERTY DAMAGE, OR PERSONAL INJURY; AND EVEN IF RENESAS HAS BEEN ADVISED OF THE POSSIBILITY + * OF SUCH LOSS, DAMAGES, CLAIMS OR COSTS. + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Includes + **********************************************************************************************************************/ +#include +#include "bsp_api.h" +#include "r_ioport.h" +#include "r_ioport_api.h" + +/*********************************************************************************************************************** + * Macro definitions + **********************************************************************************************************************/ + +/* "PORT" in ASCII, used to determine if the module is open */ +#define IOPORT_OPEN (0x504F5254U) +#define IOPORT_CLOSED (0x00000000U) + +/* Mask to get PSEL bitfield from PFS register. */ +#define BSP_PRV_PFS_PSEL_MASK (0x1F000000UL) + +/* Shift to get pin 0 on a package in extended data. */ +#define IOPORT_PRV_EXISTS_B0_SHIFT (16UL) + +/* Mask to determine if any pins on port exist on this package. */ +#define IOPORT_PRV_PORT_EXISTS_MASK (0xFFFF0000U) + +/* Shift to get port in bsp_io_port_t and bsp_io_port_pin_t enums. */ +#define IOPORT_PRV_PORT_OFFSET (8U) + +#define IOPORT_PRV_PORT_BITS (0xFF00U) +#define IOPORT_PRV_PIN_BITS (0x00FFU) + +#define IOPORT_PRV_PCNTR_OFFSET 0x00000020U + +#define IOPORT_PRV_PERIPHERAL_FUNCTION (1U << 16) +#define IOPORT_PRV_CLEAR_BITS_MASK (0x1F01FCD5U) ///< Zero bits in mask must be written as zero to PFS register + +#define IOPORT_PRV_8BIT_MASK (0xFFU) +#define IOPORT_PRV_16BIT_MASK (0xFFFFU) +#define IOPORT_PRV_UPPER_16BIT_MASK (0xFFFF0000U) +#define IOPORT_PRV_PFENET_MASK (0x30U) + +#define IOPORT_PRV_SET_PWPR_PFSWE (0x40U) +#define IOPORT_PRV_SET_PWPR_BOWI (0x80U) + +#define IOPORT_PRV_PORT_ADDRESS(port_number) ((uint32_t) (R_PORT1 - R_PORT0) * (port_number) + R_PORT0) + +/*********************************************************************************************************************** + * Typedef definitions + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Private function prototypes + **********************************************************************************************************************/ +static void r_ioport_pins_config(const ioport_cfg_t * p_cfg); + +static void r_ioport_hw_pin_event_output_data_write(bsp_io_port_t port, + ioport_size_t set_value, + ioport_size_t reset_value, + bsp_io_level_t pin_level); + +static void r_ioport_pfs_write(bsp_io_port_pin_t pin, uint32_t value); + +#if BSP_FEATURE_SYSC_HAS_VBTICTLR || BSP_FEATURE_RTC_HAS_TCEN +static void bsp_vbatt_init(ioport_cfg_t const * const p_pin_cfg); // Used internally by BSP + +#endif + +/*********************************************************************************************************************** + * Private global variables + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Global Variables + **********************************************************************************************************************/ + +/* IOPort Implementation of IOPort Driver */ +const ioport_api_t g_ioport_on_ioport = +{ + .open = R_IOPORT_Open, + .close = R_IOPORT_Close, + .pinsCfg = R_IOPORT_PinsCfg, + .pinCfg = R_IOPORT_PinCfg, + .pinEventInputRead = R_IOPORT_PinEventInputRead, + .pinEventOutputWrite = R_IOPORT_PinEventOutputWrite, + .pinRead = R_IOPORT_PinRead, + .pinWrite = R_IOPORT_PinWrite, + .portDirectionSet = R_IOPORT_PortDirectionSet, + .portEventInputRead = R_IOPORT_PortEventInputRead, + .portEventOutputWrite = R_IOPORT_PortEventOutputWrite, + .portRead = R_IOPORT_PortRead, + .portWrite = R_IOPORT_PortWrite, +}; + +#if BSP_FEATURE_SYSC_HAS_VBTICTLR || BSP_FEATURE_RTC_HAS_TCEN +static const bsp_io_port_pin_t g_vbatt_pins_input[] = +{ + BSP_IO_PORT_04_PIN_02, ///< Associated with VBTICTLR->VCH0INEN + BSP_IO_PORT_04_PIN_03, ///< Associated with VBTICTLR->VCH1INEN + BSP_IO_PORT_04_PIN_04 ///< Associated with VBTICTLR->VCH2INEN +}; +#endif + +/*******************************************************************************************************************//** + * @addtogroup IOPORT + * @{ + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Functions + **********************************************************************************************************************/ + +/*******************************************************************************************************************//** + * Initializes internal driver data, then calls pin configuration function to configure pins. + * + * @retval FSP_SUCCESS Pin configuration data written to PFS register(s) + * @retval FSP_ERR_ASSERTION NULL pointer + * @retval FSP_ERR_ALREADY_OPEN Module is already open. + **********************************************************************************************************************/ +fsp_err_t R_IOPORT_Open (ioport_ctrl_t * const p_ctrl, const ioport_cfg_t * p_cfg) +{ + ioport_instance_ctrl_t * p_instance_ctrl = (ioport_instance_ctrl_t *) p_ctrl; + +#if (1 == IOPORT_CFG_PARAM_CHECKING_ENABLE) + FSP_ASSERT(NULL != p_instance_ctrl); + FSP_ASSERT(NULL != p_cfg); + FSP_ASSERT(NULL != p_cfg->p_pin_cfg_data || 0 == p_cfg->number_of_pins); + FSP_ERROR_RETURN(IOPORT_OPEN != p_instance_ctrl->open, FSP_ERR_ALREADY_OPEN); +#else + FSP_PARAMETER_NOT_USED(p_ctrl); +#endif + + /* Set driver status to open */ + p_instance_ctrl->open = IOPORT_OPEN; + + r_ioport_pins_config(p_cfg); + + return FSP_SUCCESS; +} + +/*******************************************************************************************************************//** + * Resets IOPORT registers. Implements @ref ioport_api_t::close + * + * @retval FSP_SUCCESS The IOPORT was successfully uninitialized + * @retval FSP_ERR_ASSERTION p_ctrl was NULL + * @retval FSP_ERR_NOT_OPEN The module has not been opened + * + **********************************************************************************************************************/ +fsp_err_t R_IOPORT_Close (ioport_ctrl_t * const p_ctrl) +{ + ioport_instance_ctrl_t * p_instance_ctrl = (ioport_instance_ctrl_t *) p_ctrl; + +#if (1 == IOPORT_CFG_PARAM_CHECKING_ENABLE) + FSP_ASSERT(NULL != p_instance_ctrl); + FSP_ERROR_RETURN(IOPORT_OPEN == p_instance_ctrl->open, FSP_ERR_NOT_OPEN); +#else + FSP_PARAMETER_NOT_USED(p_ctrl); +#endif + + /* Set state to closed */ + p_instance_ctrl->open = IOPORT_CLOSED; + + return FSP_SUCCESS; +} + +/*******************************************************************************************************************//** + * Configures the functions of multiple pins by loading configuration data into pin PFS registers. + * Implements @ref ioport_api_t::pinsCfg. + * + * This function initializes the supplied list of PmnPFS registers with the supplied values. This data can be generated + * by the Pins tab of the RA Configuration editor or manually by the developer. Different pin configurations can be + * loaded for different situations such as low power modes and testing. + * + * @retval FSP_SUCCESS Pin configuration data written to PFS register(s) + * @retval FSP_ERR_NOT_OPEN The module has not been opened + * @retval FSP_ERR_ASSERTION NULL pointer + **********************************************************************************************************************/ +fsp_err_t R_IOPORT_PinsCfg (ioport_ctrl_t * const p_ctrl, const ioport_cfg_t * p_cfg) +{ +#if (1 == IOPORT_CFG_PARAM_CHECKING_ENABLE) + ioport_instance_ctrl_t * p_instance_ctrl = (ioport_instance_ctrl_t *) p_ctrl; + FSP_ASSERT(NULL != p_instance_ctrl); + FSP_ERROR_RETURN(IOPORT_OPEN == p_instance_ctrl->open, FSP_ERR_NOT_OPEN); + FSP_ASSERT(NULL != p_cfg); + FSP_ASSERT(NULL != p_cfg->p_pin_cfg_data); +#else + FSP_PARAMETER_NOT_USED(p_ctrl); +#endif + + r_ioport_pins_config(p_cfg); + + return FSP_SUCCESS; +} + +/*******************************************************************************************************************//** + * Configures the settings of a pin. Implements @ref ioport_api_t::pinCfg. + * + * @retval FSP_SUCCESS Pin configured + * @retval FSP_ERR_NOT_OPEN The module has not been opened + * @retval FSP_ERR_ASSERTION NULL pointer + * + * @note This function is re-entrant for different pins. + * This function will change the configuration of the pin with the new configuration. For example it is not possible + * with this function to change the drive strength of a pin while leaving all the other pin settings unchanged. To + * achieve this the original settings with the required change will need to be written using this function. + **********************************************************************************************************************/ +fsp_err_t R_IOPORT_PinCfg (ioport_ctrl_t * const p_ctrl, bsp_io_port_pin_t pin, uint32_t cfg) +{ +#if (1 == IOPORT_CFG_PARAM_CHECKING_ENABLE) + ioport_instance_ctrl_t * p_instance_ctrl = (ioport_instance_ctrl_t *) p_ctrl; + FSP_ASSERT(NULL != p_instance_ctrl); + FSP_ERROR_RETURN(IOPORT_OPEN == p_instance_ctrl->open, FSP_ERR_NOT_OPEN); +#else + FSP_PARAMETER_NOT_USED(p_ctrl); +#endif + +#if BSP_FEATURE_SYSC_HAS_VBTICTLR || BSP_FEATURE_RTC_HAS_TCEN + + /* Create temporary structure for handling VBATT pins. */ + ioport_cfg_t temp_cfg; + ioport_pin_cfg_t temp_pin_cfg; + + temp_pin_cfg.pin = pin; + temp_pin_cfg.pin_cfg = cfg; + + temp_cfg.number_of_pins = 1U; + temp_cfg.p_pin_cfg_data = &temp_pin_cfg; + + /* Handle any VBATT domain pin configuration. */ + bsp_vbatt_init(&temp_cfg); +#endif + + R_BSP_PinAccessEnable(); + + r_ioport_pfs_write(pin, cfg); + + R_BSP_PinAccessDisable(); + + return FSP_SUCCESS; +} + +/*******************************************************************************************************************//** + * Reads the level on a pin. Implements @ref ioport_api_t::pinRead. + * + * @retval FSP_SUCCESS Pin read + * @retval FSP_ERR_ASSERTION NULL pointer + * @retval FSP_ERR_NOT_OPEN The module has not been opened + * + * @note This function is re-entrant for different pins. + **********************************************************************************************************************/ +fsp_err_t R_IOPORT_PinRead (ioport_ctrl_t * const p_ctrl, bsp_io_port_pin_t pin, bsp_io_level_t * p_pin_value) +{ +#if (1 == IOPORT_CFG_PARAM_CHECKING_ENABLE) + ioport_instance_ctrl_t * p_instance_ctrl = (ioport_instance_ctrl_t *) p_ctrl; + FSP_ASSERT(NULL != p_instance_ctrl); + FSP_ERROR_RETURN(IOPORT_OPEN == p_instance_ctrl->open, FSP_ERR_NOT_OPEN); + FSP_ASSERT(NULL != p_pin_value); +#else + FSP_PARAMETER_NOT_USED(p_ctrl); +#endif + + *p_pin_value = (bsp_io_level_t) R_BSP_PinRead(pin); + + return FSP_SUCCESS; +} + +/*******************************************************************************************************************//** + * Reads the value on an IO port. Implements @ref ioport_api_t::portRead. + * + * The specified port will be read, and the levels for all the pins will be returned. + * Each bit in the returned value corresponds to a pin on the port. For example, bit 7 corresponds + * to pin 7, bit 6 to pin 6, and so on. + * + * @retval FSP_SUCCESS Port read + * @retval FSP_ERR_ASSERTION NULL pointer + * @retval FSP_ERR_NOT_OPEN The module has not been opened + * + * @note This function is re-entrant for different ports. + **********************************************************************************************************************/ +fsp_err_t R_IOPORT_PortRead (ioport_ctrl_t * const p_ctrl, bsp_io_port_t port, ioport_size_t * p_port_value) +{ +#if (1 == IOPORT_CFG_PARAM_CHECKING_ENABLE) + ioport_instance_ctrl_t * p_instance_ctrl = (ioport_instance_ctrl_t *) p_ctrl; + FSP_ASSERT(NULL != p_instance_ctrl); + FSP_ERROR_RETURN(IOPORT_OPEN == p_instance_ctrl->open, FSP_ERR_NOT_OPEN); + FSP_ASSERT(NULL != p_port_value); +#else + FSP_PARAMETER_NOT_USED(p_ctrl); +#endif + + /* Get the port address */ + R_PORT0_Type * p_ioport_regs = IOPORT_PRV_PORT_ADDRESS((port >> IOPORT_PRV_PORT_OFFSET) & IOPORT_PRV_8BIT_MASK); + + /* Read current value of PCNTR2 register for the specified port */ + *p_port_value = p_ioport_regs->PCNTR2 & IOPORT_PRV_16BIT_MASK; + + return FSP_SUCCESS; +} + +/*******************************************************************************************************************//** + * Writes to multiple pins on a port. Implements @ref ioport_api_t::portWrite. + * + * The input value will be written to the specified port. Each bit in the value parameter corresponds to a bit + * on the port. For example, bit 7 corresponds to pin 7, bit 6 to pin 6, and so on. + * Each bit in the mask parameter corresponds to a pin on the port. + * + * Only the bits with the corresponding bit in the mask value set will be updated. + * For example, value = 0xFFFF, mask = 0x0003 results in only bits 0 and 1 being updated. + * + * @retval FSP_SUCCESS Port written to + * @retval FSP_ERR_INVALID_ARGUMENT The port and/or mask not valid + * @retval FSP_ERR_NOT_OPEN The module has not been opened + * @retval FSP_ERR_ASSERTION NULL pointerd + * + * @note This function is re-entrant for different ports. This function makes use of the PCNTR3 register to atomically + * modify the levels on the specified pins on a port. + **********************************************************************************************************************/ +fsp_err_t R_IOPORT_PortWrite (ioport_ctrl_t * const p_ctrl, bsp_io_port_t port, ioport_size_t value, ioport_size_t mask) +{ +#if (1 == IOPORT_CFG_PARAM_CHECKING_ENABLE) + ioport_instance_ctrl_t * p_instance_ctrl = (ioport_instance_ctrl_t *) p_ctrl; + FSP_ASSERT(NULL != p_instance_ctrl); + FSP_ERROR_RETURN(IOPORT_OPEN == p_instance_ctrl->open, FSP_ERR_NOT_OPEN); + FSP_ERROR_RETURN(mask > (ioport_size_t) 0, FSP_ERR_INVALID_ARGUMENT); +#else + FSP_PARAMETER_NOT_USED(p_ctrl); +#endif + + ioport_size_t setbits; + ioport_size_t clrbits; + + /* High bits */ + setbits = value & mask; + + /* Low bits */ + /* Cast to ensure size */ + clrbits = (ioport_size_t) ((~value) & mask); + + /* Get the port address */ + R_PORT0_Type * p_ioport_regs = IOPORT_PRV_PORT_ADDRESS((port >> IOPORT_PRV_PORT_OFFSET) & IOPORT_PRV_8BIT_MASK); + + /* PCNTR3 register: lower word = set data, upper word = reset_data */ + p_ioport_regs->PCNTR3 = (uint32_t) (((uint32_t) clrbits << 16) | setbits); + + return FSP_SUCCESS; +} + +/*******************************************************************************************************************//** + * Sets a pin's output either high or low. Implements @ref ioport_api_t::pinWrite. + * + * @retval FSP_SUCCESS Pin written to + * @retval FSP_ERR_INVALID_ARGUMENT The pin and/or level not valid + * @retval FSP_ERR_NOT_OPEN The module has not been opene + * @retval FSP_ERR_ASSERTION NULL pointerd + * + * @note This function is re-entrant for different pins. This function makes use of the PCNTR3 register to atomically + * modify the level on the specified pin on a port. + **********************************************************************************************************************/ +fsp_err_t R_IOPORT_PinWrite (ioport_ctrl_t * const p_ctrl, bsp_io_port_pin_t pin, bsp_io_level_t level) +{ +#if (1 == IOPORT_CFG_PARAM_CHECKING_ENABLE) + ioport_instance_ctrl_t * p_instance_ctrl = (ioport_instance_ctrl_t *) p_ctrl; + FSP_ASSERT(NULL != p_instance_ctrl); + FSP_ERROR_RETURN(IOPORT_OPEN == p_instance_ctrl->open, FSP_ERR_NOT_OPEN); + FSP_ERROR_RETURN(level <= BSP_IO_LEVEL_HIGH, FSP_ERR_INVALID_ARGUMENT); +#else + FSP_PARAMETER_NOT_USED(p_ctrl); +#endif + + ioport_size_t setbits = 0U; + ioport_size_t clrbits = 0U; + bsp_io_port_t port = (bsp_io_port_t) (IOPORT_PRV_PORT_BITS & (ioport_size_t) pin); + + ioport_size_t shift = IOPORT_PRV_PIN_BITS & (ioport_size_t) pin; + ioport_size_t pin_mask = (ioport_size_t) (1U << shift); + + if (BSP_IO_LEVEL_LOW == level) + { + clrbits = pin_mask; + } + else + { + setbits = pin_mask; + } + + /* PCNTR register is updated instead of using PFS as access is atomic and PFS requires seperate enable/disable + * using PWPR register */ + + /* Get the port address */ + R_PORT0_Type * p_ioport_regs = IOPORT_PRV_PORT_ADDRESS((port >> IOPORT_PRV_PORT_OFFSET) & IOPORT_PRV_8BIT_MASK); + + /* PCNTR3 register: lower word = set data, upper word = reset_data */ + p_ioport_regs->PCNTR3 = (uint32_t) (((uint32_t) clrbits << 16) | setbits); + + return FSP_SUCCESS; +} + +/*******************************************************************************************************************//** + * Sets the direction of individual pins on a port. Implements @ref ioport_api_t::portDirectionSet(). + * + * Multiple pins on a port can be set to inputs or outputs at once. + * Each bit in the mask parameter corresponds to a pin on the port. For example, bit 7 corresponds to + * pin 7, bit 6 to pin 6, and so on. If a bit is set to 1 then the corresponding pin will be changed to + * an input or an output as specified by the direction values. If a mask bit is set to 0 then the direction of + * the pin will not be changed. + * + * @retval FSP_SUCCESS Port direction updated + * @retval FSP_ERR_INVALID_ARGUMENT The port and/or mask not valid + * @retval FSP_ERR_NOT_OPEN The module has not been opened + * @retval FSP_ERR_ASSERTION NULL pointer + * + * @note This function is re-entrant for different ports. + **********************************************************************************************************************/ +fsp_err_t R_IOPORT_PortDirectionSet (ioport_ctrl_t * const p_ctrl, + bsp_io_port_t port, + ioport_size_t direction_values, + ioport_size_t mask) +{ + uint32_t orig_value; + uint32_t set_bits; + uint32_t clr_bits; + uint32_t write_value; + +#if (1 == IOPORT_CFG_PARAM_CHECKING_ENABLE) + ioport_instance_ctrl_t * p_instance_ctrl = (ioport_instance_ctrl_t *) p_ctrl; + FSP_ASSERT(NULL != p_instance_ctrl); + FSP_ERROR_RETURN(IOPORT_OPEN == p_instance_ctrl->open, FSP_ERR_NOT_OPEN); + FSP_ERROR_RETURN(mask > (ioport_size_t) 0, FSP_ERR_INVALID_ARGUMENT); +#else + FSP_PARAMETER_NOT_USED(p_ctrl); +#endif + + /* Get the port address */ + R_PORT0_Type * p_ioport_regs = IOPORT_PRV_PORT_ADDRESS((port >> IOPORT_PRV_PORT_OFFSET) & IOPORT_PRV_8BIT_MASK); + + /* Read current value of PCNTR1 register for the specified port */ + orig_value = p_ioport_regs->PCNTR1; + + /* High bits */ + set_bits = direction_values & mask; + + /* Low bits */ + /* Cast to ensure size */ + clr_bits = (uint32_t) ((~direction_values) & mask); + + /* New value to write to port direction register */ + write_value = orig_value; + write_value |= set_bits; + + /* Clear bits as needed */ + write_value &= ~clr_bits; + + p_ioport_regs->PCNTR1 = write_value; + + return FSP_SUCCESS; +} + +/*******************************************************************************************************************//** + * Reads the value of the event input data. Implements @ref ioport_api_t::portEventInputRead(). + * + * The event input data for the port will be read. Each bit in the returned value corresponds to a pin on the port. + * For example, bit 7 corresponds to pin 7, bit 6 to pin 6, and so on. + * + * The port event data is captured in response to a trigger from the ELC. This function enables this data to be read. + * Using the event system allows the captured data to be stored when it occurs and then read back at a later time. + * + * @retval FSP_SUCCESS Port read + * @retval FSP_ERR_INVALID_ARGUMENT Port not a valid ELC port + * @retval FSP_ERR_ASSERTION NULL pointer + * @retval FSP_ERR_NOT_OPEN The module has not been opened + * + * @note This function is re-entrant for different ports. + * + **********************************************************************************************************************/ +fsp_err_t R_IOPORT_PortEventInputRead (ioport_ctrl_t * const p_ctrl, bsp_io_port_t port, ioport_size_t * p_event_data) +{ +#if (1 == IOPORT_CFG_PARAM_CHECKING_ENABLE) + ioport_instance_ctrl_t * p_instance_ctrl = (ioport_instance_ctrl_t *) p_ctrl; + FSP_ASSERT(NULL != p_instance_ctrl); + FSP_ERROR_RETURN(IOPORT_OPEN == p_instance_ctrl->open, FSP_ERR_NOT_OPEN); + FSP_ASSERT(NULL != p_event_data); + uint32_t port_number = port >> IOPORT_PRV_PORT_OFFSET; + FSP_ERROR_RETURN((BSP_FEATURE_IOPORT_ELC_PORTS & (1 << port_number)), FSP_ERR_INVALID_ARGUMENT); +#else + FSP_PARAMETER_NOT_USED(p_ctrl); +#endif + + /* Get the port address */ + R_PORT0_Type * p_ioport_regs = IOPORT_PRV_PORT_ADDRESS(port >> IOPORT_PRV_PORT_OFFSET & IOPORT_PRV_8BIT_MASK); + + /* Read current value of EIDR value from PCNTR2 register for the specified port */ + *p_event_data = p_ioport_regs->PCNTR2_b.EIDR; + + return FSP_SUCCESS; +} + +/*******************************************************************************************************************//** + * Reads the value of the event input data of a specific pin. Implements @ref ioport_api_t::pinEventInputRead. + * + * The pin event data is captured in response to a trigger from the ELC. This function enables this data to be read. + * Using the event system allows the captured data to be stored when it occurs and then read back at a later time. + * + * @retval FSP_SUCCESS Pin read + * @retval FSP_ERR_ASSERTION NULL pointer + * @retval FSP_ERR_NOT_OPEN The module has not been opened + * @retval FSP_ERR_INVALID_ARGUMENT Port is not valid ELC PORT. + * + * @note This function is re-entrant. + * + **********************************************************************************************************************/ +fsp_err_t R_IOPORT_PinEventInputRead (ioport_ctrl_t * const p_ctrl, bsp_io_port_pin_t pin, bsp_io_level_t * p_pin_event) +{ + ioport_size_t portvalue; + ioport_size_t mask; + +#if (1 == IOPORT_CFG_PARAM_CHECKING_ENABLE) + ioport_instance_ctrl_t * p_instance_ctrl = (ioport_instance_ctrl_t *) p_ctrl; + FSP_ASSERT(NULL != p_instance_ctrl); + FSP_ERROR_RETURN(IOPORT_OPEN == p_instance_ctrl->open, FSP_ERR_NOT_OPEN); + FSP_ASSERT(NULL != p_pin_event); + uint32_t port_number = pin >> IOPORT_PRV_PORT_OFFSET; + FSP_ERROR_RETURN((BSP_FEATURE_IOPORT_ELC_PORTS & (1 << port_number)), FSP_ERR_INVALID_ARGUMENT); +#else + FSP_PARAMETER_NOT_USED(p_ctrl); +#endif + + /* Get the port address */ + R_PORT0_Type * p_ioport_regs = IOPORT_PRV_PORT_ADDRESS((pin >> IOPORT_PRV_PORT_OFFSET) & IOPORT_PRV_8BIT_MASK); + + /* Read current value of EIDR value from PCNTR2 register for the specified port */ + portvalue = p_ioport_regs->PCNTR2_b.EIDR; + mask = (ioport_size_t) (1U << (IOPORT_PRV_PIN_BITS & (bsp_io_port_t) pin)); + + if ((portvalue & mask) == mask) + { + *p_pin_event = BSP_IO_LEVEL_HIGH; + } + else + { + *p_pin_event = BSP_IO_LEVEL_LOW; + } + + return FSP_SUCCESS; +} + +/*******************************************************************************************************************//** + * This function writes the set and reset event output data for a port. Implements + * @ref ioport_api_t::portEventOutputWrite. + * + * Using the event system enables a port state to be stored by this function in advance of being output on the port. + * The output to the port will occur when the ELC event occurs. + * + * The input value will be written to the specified port when an ELC event configured for that port occurs. + * Each bit in the value parameter corresponds to a bit on the port. For example, bit 7 corresponds to pin 7, + * bit 6 to pin 6, and so on. Each bit in the mask parameter corresponds to a pin on the port. + * + * @retval FSP_SUCCESS Port event data written + * @retval FSP_ERR_INVALID_ARGUMENT Port or Mask not valid + * @retval FSP_ERR_NOT_OPEN The module has not been opened + * @retval FSP_ERR_ASSERTION NULL pointer + * + * @note This function is re-entrant for different ports. + **********************************************************************************************************************/ +fsp_err_t R_IOPORT_PortEventOutputWrite (ioport_ctrl_t * const p_ctrl, + bsp_io_port_t port, + ioport_size_t event_data, + ioport_size_t mask_value) +{ + ioport_size_t set_bits; + ioport_size_t reset_bits; + +#if (1 == IOPORT_CFG_PARAM_CHECKING_ENABLE) + ioport_instance_ctrl_t * p_instance_ctrl = (ioport_instance_ctrl_t *) p_ctrl; + FSP_ASSERT(NULL != p_instance_ctrl); + FSP_ERROR_RETURN(IOPORT_OPEN == p_instance_ctrl->open, FSP_ERR_NOT_OPEN); + FSP_ERROR_RETURN(mask_value > (ioport_size_t) 0, FSP_ERR_INVALID_ARGUMENT); + uint32_t port_number = port >> IOPORT_PRV_PORT_OFFSET; + FSP_ERROR_RETURN((BSP_FEATURE_IOPORT_ELC_PORTS & (1 << port_number)), FSP_ERR_INVALID_ARGUMENT); +#else + FSP_PARAMETER_NOT_USED(p_ctrl); +#endif + + set_bits = event_data & mask_value; + + /* Cast to ensure size */ + reset_bits = (ioport_size_t) ((~event_data) & mask_value); + + /* Get the port address */ + R_PORT0_Type * p_ioport_regs = IOPORT_PRV_PORT_ADDRESS((port >> IOPORT_PRV_PORT_OFFSET) & IOPORT_PRV_8BIT_MASK); + + /* PCNTR4 register: lower word = set data, upper word = reset_data */ + p_ioport_regs->PCNTR4 = (uint32_t) (((uint32_t) reset_bits << 16) | set_bits); + + return FSP_SUCCESS; +} + +/**********************************************************************************************************************//** + * This function writes the event output data value to a pin. Implements @ref ioport_api_t::pinEventOutputWrite. + * + * Using the event system enables a pin state to be stored by this function in advance of being output on the pin. + * The output to the pin will occur when the ELC event occurs. + * + * @retval FSP_SUCCESS Pin event data written + * @retval FSP_ERR_INVALID_ARGUMENT Port or Pin or value not valid + * @retval FSP_ERR_NOT_OPEN The module has not been opened + * @retval FSP_ERR_ASSERTION NULL pointer + * + * @note This function is re-entrant for different ports. + * + **********************************************************************************************************************/ +fsp_err_t R_IOPORT_PinEventOutputWrite (ioport_ctrl_t * const p_ctrl, bsp_io_port_pin_t pin, bsp_io_level_t pin_value) +{ +#if (1 == IOPORT_CFG_PARAM_CHECKING_ENABLE) + ioport_instance_ctrl_t * p_instance_ctrl = (ioport_instance_ctrl_t *) p_ctrl; + FSP_ASSERT(NULL != p_instance_ctrl); + FSP_ERROR_RETURN(IOPORT_OPEN == p_instance_ctrl->open, FSP_ERR_NOT_OPEN); + FSP_ERROR_RETURN((pin_value == BSP_IO_LEVEL_HIGH) || (pin_value == BSP_IO_LEVEL_LOW), FSP_ERR_INVALID_ARGUMENT); + uint32_t port_number = pin >> IOPORT_PRV_PORT_OFFSET; + FSP_ERROR_RETURN((BSP_FEATURE_IOPORT_ELC_PORTS & (1 << port_number)), FSP_ERR_INVALID_ARGUMENT); +#else + FSP_PARAMETER_NOT_USED(p_ctrl); +#endif + + ioport_size_t set_bits; + ioport_size_t reset_bits; + bsp_io_port_t port; + uint16_t pin_to_port; + + /* Cast to ensure correct conversion of parameter. */ + pin_to_port = (uint16_t) pin; + pin_to_port = pin_to_port & (uint16_t) IOPORT_PRV_PORT_BITS; + port = (bsp_io_port_t) pin_to_port; + set_bits = (ioport_size_t) 0; + reset_bits = (ioport_size_t) 0; + + if (BSP_IO_LEVEL_HIGH == pin_value) + { + /* Cast to ensure size */ + set_bits = (ioport_size_t) (1U << ((ioport_size_t) pin & IOPORT_PRV_PIN_BITS)); + } + else + { + /* Cast to ensure size */ + reset_bits = (ioport_size_t) (1U << ((ioport_size_t) pin & IOPORT_PRV_PIN_BITS)); + } + + r_ioport_hw_pin_event_output_data_write(port, set_bits, reset_bits, pin_value); + + return FSP_SUCCESS; +} + +/*******************************************************************************************************************//** + * @} (end addtogroup IOPORT) + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Private Functions + **********************************************************************************************************************/ + +/*******************************************************************************************************************//** + * Configures pins. + * + * @param[in] p_cfg Pin configuration data + **********************************************************************************************************************/ +void r_ioport_pins_config (const ioport_cfg_t * p_cfg) +{ +#if BSP_FEATURE_SYSC_HAS_VBTICTLR || BSP_FEATURE_RTC_HAS_TCEN + + /* Handle any VBATT domain pin configuration. */ + bsp_vbatt_init(p_cfg); +#endif + + uint16_t pin_count; + ioport_cfg_t * p_pin_data; + + p_pin_data = (ioport_cfg_t *) p_cfg; + + R_BSP_PinAccessEnable(); // Protect PWPR from re-entrancy + + for (pin_count = 0U; pin_count < p_pin_data->number_of_pins; pin_count++) + { + r_ioport_pfs_write(p_pin_data->p_pin_cfg_data[pin_count].pin, p_pin_data->p_pin_cfg_data[pin_count].pin_cfg); + } + + R_BSP_PinAccessDisable(); +} + +/*******************************************************************************************************************//** + * Writes the set and clear values on a pin of the port when an ELC event occurs. This allows accurate timing of + * pin output level. + * + * @param[in] port Port to read event data + * @param[in] set_value Bit in the port to set high (1 = that bit will be set high) + * @param[in] reset_value Bit in the port to clear low (1 = that bit will be cleared low) + * @param[in] pin_level Event data for pin + **********************************************************************************************************************/ +static void r_ioport_hw_pin_event_output_data_write (bsp_io_port_t port, + ioport_size_t set_value, + ioport_size_t reset_value, + bsp_io_level_t pin_level) +{ + uint32_t port_value = 0; + + /* Get the port address */ + R_PORT0_Type * p_ioport_regs = IOPORT_PRV_PORT_ADDRESS((port >> IOPORT_PRV_PORT_OFFSET) & IOPORT_PRV_8BIT_MASK); + + /* Read current value of PCNTR4 register */ + port_value = p_ioport_regs->PCNTR4; + + if (BSP_IO_LEVEL_HIGH == pin_level) + { + /* set value contains the bit to be set high (bit mask) */ + port_value |= (uint32_t) (set_value); + + /* reset value contains the mask to clear the corresponding bit in EOSR because both EOSR and EORR + * bit of a particular pin should not be high at the same time */ + port_value &= (((uint32_t) reset_value << 16) | IOPORT_PRV_16BIT_MASK); + } + else + { + /* reset_value contains the bit to be cleared low */ + port_value |= (uint32_t) reset_value << 16; + + /* set value contains the mask to clear the corresponding bit in EOSR because both EOSR and EORR bit of a + * particular pin should not be high at the same time */ + port_value &= (uint32_t) ((set_value | IOPORT_PRV_UPPER_16BIT_MASK)); + } + + p_ioport_regs->PCNTR4 = port_value; +} + +/*******************************************************************************************************************//** + * Writes to the specified pin's PFS register + * + * @param[in] pin Pin to write PFS data for + * @param[in] value Value to be written to the PFS register + * + **********************************************************************************************************************/ +static void r_ioport_pfs_write (bsp_io_port_pin_t pin, uint32_t value) +{ + /* PMR bits should be cleared before specifying PSEL. Reference section "20.7 Notes on the PmnPFS Register Setting" + * in the RA6M3 manual R01UH0886EJ0100. */ + if ((value & IOPORT_PRV_PERIPHERAL_FUNCTION) > 0) + { + /* Clear PMR */ + R_PFS->PORT[pin >> IOPORT_PRV_PORT_OFFSET].PIN[pin & BSP_IO_PRV_8BIT_MASK].PmnPFS_b.PMR = 0; + + /* New config with PMR = 0 */ + R_PFS->PORT[pin >> IOPORT_PRV_PORT_OFFSET].PIN[pin & + BSP_IO_PRV_8BIT_MASK].PmnPFS = + (value & ~((uint32_t) IOPORT_PRV_PERIPHERAL_FUNCTION)); + } + + /* Write configuration */ + R_PFS->PORT[pin >> IOPORT_PRV_PORT_OFFSET].PIN[pin & BSP_IO_PRV_8BIT_MASK].PmnPFS = value; +} + +#if BSP_FEATURE_SYSC_HAS_VBTICTLR || BSP_FEATURE_RTC_HAS_TCEN + +/*******************************************************************************************************************//** + * @brief Initializes VBTICTLR register based on pin configuration. + * + * The VBTICTLR register may need to be modified based on the project's pin configuration. There is a set of pins that + * needs to be checked. If one of these pins is found in the pin configuration table then it will be tested to see if + * the appropriate VBTICTLR bit needs to be set or cleared. If one of the pins that is being searched for is not found + * then the accompanying VBTICTLR bit is left as-is. + **********************************************************************************************************************/ +static void bsp_vbatt_init (ioport_cfg_t const * const p_pin_cfg) +{ + uint32_t pin_index; + uint32_t vbatt_index; + + #if BSP_FEATURE_SYSC_HAS_VBTICTLR + R_SYSTEM_Type * p_system = R_SYSTEM; + #endif + #if BSP_FEATURE_RTC_HAS_TCEN + R_RTC_Type * p_rtc = R_RTC; + #endif + + #if BSP_TZ_SECURE_BUILD && BSP_FEATURE_TZ_NS_OFFSET > 0 + #if BSP_FEATURE_SYSC_HAS_VBTICTLR + if (1 == R_SYSTEM->BBFSAR_b.NONSEC2) + { + /* If security attribution of VBTICTLR is set to non-secure, then use the non-secure alias. */ + p_system = (R_SYSTEM_Type *) ((uint32_t) p_system | BSP_FEATURE_TZ_NS_OFFSET); + } + #endif + + #if BSP_FEATURE_RTC_HAS_TCEN + if (1 == R_PSCU->PSARE_b.PSARE2) + { + /* If security attribution of RTC is set to non-secure, then use the non-secure alias. */ + p_rtc = (R_RTC_Type *) ((uint32_t) p_rtc | BSP_FEATURE_TZ_NS_OFFSET); + } + #endif + #endif + + /* Must loop over all pins as pin configuration table is unordered. */ + for (pin_index = 0U; pin_index < p_pin_cfg->number_of_pins; pin_index++) + { + /* Loop over VBATT input pins. */ + for (vbatt_index = 0U; + vbatt_index < (sizeof(g_vbatt_pins_input) / sizeof(g_vbatt_pins_input[0])); + vbatt_index++) + { + if (p_pin_cfg->p_pin_cfg_data[pin_index].pin == g_vbatt_pins_input[vbatt_index]) + { + /* Get PSEL value for pin. */ + uint32_t pfs_psel_value = p_pin_cfg->p_pin_cfg_data[pin_index].pin_cfg & BSP_PRV_PFS_PSEL_MASK; + + /* Check if pin is being used for RTC or AGT use. */ + if ((IOPORT_PERIPHERAL_AGT == pfs_psel_value) || (IOPORT_PERIPHERAL_CLKOUT_COMP_RTC == pfs_psel_value)) + { + /* Bit should be set to 1. */ + #if BSP_FEATURE_SYSC_HAS_VBTICTLR + #if BSP_TZ_NONSECURE_BUILD + if (0 == R_SYSTEM->BBFSAR_b.NONSEC2) + { + /* Do nothing: non secure build can't configure secure VBTICTLR register. */ + } + else + #endif + if (0 == (p_system->VBTICTLR & (uint8_t) (1U << vbatt_index))) + { + R_BSP_RegisterProtectDisable(BSP_REG_PROTECT_OM_LPC_BATT); + p_system->VBTICTLR |= (uint8_t) (1U << vbatt_index); + R_BSP_RegisterProtectEnable(BSP_REG_PROTECT_OM_LPC_BATT); + } + else + { + /* Do nothing: it is already enabled. */ + } + #endif + #if BSP_FEATURE_RTC_HAS_TCEN + #if BSP_TZ_NONSECURE_BUILD + if (0 == R_PSCU->PSARE_b.PSARE2) + { + /* Do nothing: non secure build can't configure secure RTC registers. */ + } + else + #endif + { + if (0 == p_rtc->RTCCR[vbatt_index].RTCCR_b.TCEN) + { + p_rtc->RTCCR[vbatt_index].RTCCR_b.TCEN = 1; + R_BSP_SoftwareDelay(BSP_PRV_RTC_RESET_DELAY_US, BSP_DELAY_UNITS_MICROSECONDS); + } + else + { + /* Do nothing: it is already enabled. */ + } + } + #endif + } + else + { + /* Bit should be cleared to 0. */ + #if BSP_FEATURE_SYSC_HAS_VBTICTLR + #if BSP_TZ_NONSECURE_BUILD + if (0 == R_SYSTEM->BBFSAR_b.NONSEC2) + { + /* Do nothing: non secure build can't configure secure VBTICTLR register. */ + } + else + #endif + if ((p_system->VBTICTLR & (uint8_t) (1U << vbatt_index)) > 0) + { + R_BSP_RegisterProtectDisable(BSP_REG_PROTECT_OM_LPC_BATT); + p_system->VBTICTLR &= (uint8_t) ~(1U << vbatt_index); + R_BSP_RegisterProtectEnable(BSP_REG_PROTECT_OM_LPC_BATT); + } + else + { + /* Do nothing: it is already disabled. */ + } + #endif + #if BSP_FEATURE_RTC_HAS_TCEN + #if BSP_TZ_NONSECURE_BUILD + if (0 == R_PSCU->PSARE_b.PSARE2) + { + /* Do nothing: non secure build can't configure secure RTC registers. */ + } + else + #endif + { + if (p_rtc->RTCCR[vbatt_index].RTCCR_b.TCEN > 0) + { + p_rtc->RTCCR[vbatt_index].RTCCR_b.TCEN = 0; + R_BSP_SoftwareDelay(BSP_PRV_RTC_RESET_DELAY_US, BSP_DELAY_UNITS_MICROSECONDS); + } + else + { + /* Do nothing: it is already disabled. */ + } + } + #endif + } + } + } + } +} + +#endif diff --git a/bsp/renesas/ra8m1-ek/ra/fsp/src/r_sci_b_uart/r_sci_b_uart.c b/bsp/renesas/ra8m1-ek/ra/fsp/src/r_sci_b_uart/r_sci_b_uart.c new file mode 100644 index 000000000000..67b43bf41d2f --- /dev/null +++ b/bsp/renesas/ra8m1-ek/ra/fsp/src/r_sci_b_uart/r_sci_b_uart.c @@ -0,0 +1,1817 @@ +/*********************************************************************************************************************** + * Copyright [2020-2023] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics America Inc. and may only be used with products + * of Renesas Electronics Corp. and its affiliates ("Renesas"). No other uses are authorized. Renesas products are + * sold pursuant to Renesas terms and conditions of sale. Purchasers are solely responsible for the selection and use + * of Renesas products and Renesas assumes no liability. No license, express or implied, to any intellectual property + * right is granted by Renesas. This software is protected under all applicable laws, including copyright laws. Renesas + * reserves the right to change or discontinue this software and/or this documentation. THE SOFTWARE AND DOCUMENTATION + * IS DELIVERED TO YOU "AS IS," AND RENESAS MAKES NO REPRESENTATIONS OR WARRANTIES, AND TO THE FULLEST EXTENT + * PERMISSIBLE UNDER APPLICABLE LAW, DISCLAIMS ALL WARRANTIES, WHETHER EXPLICITLY OR IMPLICITLY, INCLUDING WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT, WITH RESPECT TO THE SOFTWARE OR + * DOCUMENTATION. RENESAS SHALL HAVE NO LIABILITY ARISING OUT OF ANY SECURITY VULNERABILITY OR BREACH. TO THE MAXIMUM + * EXTENT PERMITTED BY LAW, IN NO EVENT WILL RENESAS BE LIABLE TO YOU IN CONNECTION WITH THE SOFTWARE OR DOCUMENTATION + * (OR ANY PERSON OR ENTITY CLAIMING RIGHTS DERIVED FROM YOU) FOR ANY LOSS, DAMAGES, OR CLAIMS WHATSOEVER, INCLUDING, + * WITHOUT LIMITATION, ANY DIRECT, CONSEQUENTIAL, SPECIAL, INDIRECT, PUNITIVE, OR INCIDENTAL DAMAGES; ANY LOST PROFITS, + * OTHER ECONOMIC DAMAGE, PROPERTY DAMAGE, OR PERSONAL INJURY; AND EVEN IF RENESAS HAS BEEN ADVISED OF THE POSSIBILITY + * OF SUCH LOSS, DAMAGES, CLAIMS OR COSTS. + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Includes + **********************************************************************************************************************/ +#include "bsp_api.h" +#include "r_sci_b_uart.h" +#include + +/***********************************************************************************************************************fCCR0 + * Macro definitions + **********************************************************************************************************************/ +#ifndef SCI_B_UART_CFG_RX_ENABLE + #define SCI_B_UART_CFG_RX_ENABLE 1 +#endif +#ifndef SCI_B_UART_CFG_TX_ENABLE + #define SCI_B_UART_CFG_TX_ENABLE 1 +#endif + +/* Number of divisors in the data table used for baud rate calculation. */ +#define SCI_B_UART_NUM_DIVISORS_ASYNC (13U) + +/* Valid range of values for the modulation duty register is 128 - 256 (256 = modulation disabled). */ +#define SCI_B_UART_MDDR_MIN (128U) +#define SCI_B_UART_MDDR_MAX (256U) + +/* The bit rate setting field is of 8-bits, so the maximum value is 255. */ +#define SCI_B_UART_BRR_MAX (255U) + +/* No limit to the number of bytes to read or write if DTC is not used. */ +#define SCI_B_UART_MAX_READ_WRITE_NO_DTC (0xFFFFFFFFU) + +/* Mask off invalid data bits in 9-bit mode. */ +#define SCI_B_UART_ALIGN_2_BYTES (0x1U) + +/* "SCIB" in ASCII. Used to determine if the control block is open. */ +#define SCI_B_UART_OPEN (0x53434942U) + +/* Default SCI Register values. */ +#define SCI_B_UART_CCR2_DEFAULT_VALUE (0xFF00FF04U) +#define SCI_B_UART_FCR_DEFAULT_VALUE (0x1F1F0000U) + +/* SCI CCR1 register bit offsets and masks */ +#define SCI_B_UART_CCR1_SPB2_OFFSET (4U) +#define SCI_B_UART_CCR1_SPB2_MASK (0x00000030U) +#define SCI_B_UART_CCR1_PARITY_OFFSET (8U) +#define SCI_B_UART_CCR1_PARITY_MASK (0x00000300U) +#define SCI_B_UART_CCR1_FLOW_CTSRTS_MASK (0x00000003U) + +/* SCI CCR3 register bit offsets and masks */ +#define SCI_B_UART_CCR3_CHAR_OFFSET (8U) +#define SCI_B_UART_CCR3_CHAR_MASK (0x00000300U) +#define SCI_B_UART_CCR3_CKE_OFFSET (24U) +#define SCI_B_UART_CCR3_CKE_MASK (0x03000000U) + +/* SCI Data register bit masks */ +#define SCI_B_UART_TDR_TDAT_MASK_9BITS (0x000091FFU) + +/* SCI CSR register receiver error (overflow, framing, parity) bits masks */ +#define SCI_B_UART_RCVR_ERR_MASK (R_SCI_B0_CSR_ORER_Msk | R_SCI_B0_CSR_FER_Msk | R_SCI_B0_CSR_PER_Msk) + +/* SCI Error event masks */ +#define SCI_B_UART_ORR_EVENT8_MASK (0x20) +#define SCI_B_UART_ERR_EVENT8_MASK (0x38) + +/* SCI CFCLR register bit masks */ +#define SCI_B_UART_CFCLR_CLEAR_ALL_MASK (0x9D070010U) +#define SCI_B_UART_CFCLR_RDRFC_MASK (0x80000000U) +#define SCI_B_UART_CFCLR_TDREC_MASK (0x20000000U) + +/* SCI FFCLR register bit masks */ +#define SCI_B_UART_FFCLR_CLEAR_ALL_MASK (0x00000001U) + +/* SCI chanel size */ +#define SCI_B_REG_SIZE (R_SCI1_BASE - R_SCI0_BASE) + +#define SCI_B_UART_INVALID_16BIT_PARAM (0xFFFFU) +#define SCI_B_UART_DTC_MAX_TRANSFER (0x10000U) + +/* SCI FCR register bit masks */ +#define SCI_B_UART_FCR_TRIGGER_MASK (0xF) +#define SCI_B_UART_FCR_RESET_TX_RX (0x00808000U) + +/* DTC Configuration for Receive operation */ +#define SCI_B_UART_DTC_RX_TRANSFER_SETTINGS ((TRANSFER_MODE_NORMAL << TRANSFER_SETTINGS_MODE_BITS) | \ + (TRANSFER_SIZE_1_BYTE << TRANSFER_SETTINGS_SIZE_BITS) | \ + (TRANSFER_ADDR_MODE_FIXED << TRANSFER_SETTINGS_SRC_ADDR_BITS) | \ + (TRANSFER_IRQ_END << TRANSFER_SETTINGS_IRQ_BITS) | \ + (TRANSFER_ADDR_MODE_INCREMENTED << TRANSFER_SETTINGS_DEST_ADDR_BITS)) + +/* DTC Configuration for Transmit operation */ +#define SCI_B_UART_DTC_TX_TRANSFER_SETTINGS ((TRANSFER_MODE_NORMAL << TRANSFER_SETTINGS_MODE_BITS) | \ + (TRANSFER_SIZE_1_BYTE << TRANSFER_SETTINGS_SIZE_BITS) | \ + (TRANSFER_ADDR_MODE_INCREMENTED << TRANSFER_SETTINGS_SRC_ADDR_BITS) | \ + (TRANSFER_IRQ_END << TRANSFER_SETTINGS_IRQ_BITS) | \ + (TRANSFER_ADDR_MODE_FIXED << TRANSFER_SETTINGS_DEST_ADDR_BITS)) + +/* Flow Control pin active state */ +#ifndef SCI_B_UART_FLOW_CONTROL_ACTIVE + #define SCI_B_UART_FLOW_CONTROL_ACTIVE BSP_IO_LEVEL_HIGH +#endif + +/* Flow Control pin inactive state */ +#ifndef SCI_B_UART_FLOW_CONTROL_INACTIVE + #define SCI_B_UART_FLOW_CONTROL_INACTIVE BSP_IO_LEVEL_LOW +#endif + +/*********************************************************************************************************************** + * Private constants + **********************************************************************************************************************/ +static const int32_t SCI_B_UART_100_PERCENT_X_1000 = 100000; +static const int32_t SCI_B_UART_MDDR_DIVISOR = 256; + +#if (SCI_B_UART_CFG_PARAM_CHECKING_ENABLE) +static const uint32_t SCI_B_UART_MAX_BAUD_RATE_ERROR_X_1000 = 15000; +#endif + +/*********************************************************************************************************************** + * Typedef definitions + **********************************************************************************************************************/ +typedef struct st_baud_setting_const_t +{ + uint8_t bgdm : 1; /**< BGDM value to get divisor */ + uint8_t abcs : 1; /**< ABCS value to get divisor */ + uint8_t abcse : 1; /**< ABCSE value to get divisor */ + uint8_t cks : 2; /**< CKS value to get divisor (CKS = N) */ +} baud_setting_const_t; + +/* Noise filter setting definition */ +typedef enum e_noise_cancel_lvl +{ + NOISE_CANCEL_LVL1 = 0, /**< Noise filter level 1(weak) */ + NOISE_CANCEL_LVL2 = 2, /**< Noise filter level 2 */ + NOISE_CANCEL_LVL3 = 4, /**< Noise filter level 3 */ + NOISE_CANCEL_LVL4 = 8, /**< Noise filter level 4(strong) */ +} noise_cancel_lvl_t; + +#if defined(__ARMCC_VERSION) || defined(__ICCARM__) +typedef void (BSP_CMSE_NONSECURE_CALL * sci_b_uart_prv_ns_callback)(uart_callback_args_t * p_args); +#elif defined(__GNUC__) +typedef BSP_CMSE_NONSECURE_CALL void (*volatile sci_b_uart_prv_ns_callback)(uart_callback_args_t * p_args); +#endif + +/*********************************************************************************************************************** + * Private function prototypes + **********************************************************************************************************************/ +#if (SCI_B_UART_CFG_PARAM_CHECKING_ENABLE) +static fsp_err_t r_sci_b_read_write_param_check(sci_b_uart_instance_ctrl_t const * const p_ctrl, + uint8_t const * const addr, + uint32_t const bytes); + +#endif + +static void r_sci_b_uart_config_set(sci_b_uart_instance_ctrl_t * const p_ctrl, uart_cfg_t const * const p_cfg); + +#if SCI_B_UART_CFG_DTC_SUPPORTED +static fsp_err_t r_sci_b_uart_transfer_configure(sci_b_uart_instance_ctrl_t * const p_ctrl, + transfer_instance_t const * p_transfer, + uint32_t * p_transfer_reg, + uint32_t address); + +static fsp_err_t r_sci_b_uart_transfer_open(sci_b_uart_instance_ctrl_t * const p_ctrl, uart_cfg_t const * const p_cfg); + +static void r_sci_b_uart_transfer_close(sci_b_uart_instance_ctrl_t * p_ctrl); + +#endif + +static void r_sci_b_uart_call_callback(sci_b_uart_instance_ctrl_t * p_ctrl, uint32_t data, uart_event_t event); + +#if SCI_B_UART_CFG_FIFO_SUPPORT +static void r_sci_b_uart_fifo_cfg(sci_b_uart_instance_ctrl_t * const p_ctrl); + +#endif + +static void r_sci_b_irq_cfg(sci_b_uart_instance_ctrl_t * const p_ctrl, uint8_t const ipl, IRQn_Type const p_irq); + +static void r_sci_b_irqs_cfg(sci_b_uart_instance_ctrl_t * const p_ctrl, uart_cfg_t const * const p_cfg); + +#if (SCI_B_UART_CFG_RX_ENABLE) +void sci_b_uart_rxi_isr(void); + +void sci_b_uart_eri_isr(void); + +#endif + +#if (SCI_B_UART_CFG_TX_ENABLE) +void sci_b_uart_txi_isr(void); +void sci_b_uart_tei_isr(void); + +#endif + +/*********************************************************************************************************************** + * Private global variables + **********************************************************************************************************************/ + +/* Name of module used by error logger macro */ +#if BSP_CFG_ERROR_LOG != 0 +static const char g_module_name[] = "sci_b_uart"; +#endif + +/* Baud rate divisor information (UART mode) */ +static const baud_setting_const_t g_async_baud[SCI_B_UART_NUM_DIVISORS_ASYNC] = +{ + {0U, 0U, 1U, 0U}, /* BGDM, ABCS, ABCSE, n */ + {1U, 1U, 0U, 0U}, + {1U, 0U, 0U, 0U}, + {0U, 0U, 1U, 1U}, + {0U, 0U, 0U, 0U}, + {1U, 0U, 0U, 1U}, + {0U, 0U, 1U, 2U}, + {0U, 0U, 0U, 1U}, + {1U, 0U, 0U, 2U}, + {0U, 0U, 1U, 3U}, + {0U, 0U, 0U, 2U}, + {1U, 0U, 0U, 3U}, + {0U, 0U, 0U, 3U} +}; + +static const uint16_t g_div_coefficient[SCI_B_UART_NUM_DIVISORS_ASYNC] = +{ + 6U, + 8U, + 16U, + 24U, + 32U, + 64U, + 96U, + 128U, + 256U, + 384U, + 512U, + 1024U, + 2048U, +}; + +/* UART on SCI HAL API mapping for UART interface */ +const uart_api_t g_uart_on_sci_b = +{ + .open = R_SCI_B_UART_Open, + .close = R_SCI_B_UART_Close, + .write = R_SCI_B_UART_Write, + .read = R_SCI_B_UART_Read, + .infoGet = R_SCI_B_UART_InfoGet, + .baudSet = R_SCI_B_UART_BaudSet, + .communicationAbort = R_SCI_B_UART_Abort, + .callbackSet = R_SCI_B_UART_CallbackSet, + .readStop = R_SCI_B_UART_ReadStop, +}; + +/*******************************************************************************************************************//** + * @addtogroup SCI_B_UART + * @{ + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Functions + **********************************************************************************************************************/ + +/*******************************************************************************************************************//** + * Configures the UART driver based on the input configurations. If reception is enabled at compile time, reception is + * enabled at the end of this function. Implements @ref uart_api_t::open + * + * @retval FSP_SUCCESS Channel opened successfully. + * @retval FSP_ERR_ASSERTION Pointer to UART control block or configuration structure is NULL. + * @retval FSP_ERR_IP_CHANNEL_NOT_PRESENT The requested channel does not exist on this MCU. + * @retval FSP_ERR_INVALID_ARGUMENT Flow control is enabled but flow control pin is not defined. + * @retval FSP_ERR_ALREADY_OPEN Control block has already been opened or channel is being used by another + * instance. Call close() then open() to reconfigure. + * + * @return See @ref RENESAS_ERROR_CODES or functions called by this function for other possible + * return codes. This function calls: + * * @ref transfer_api_t::open + **********************************************************************************************************************/ +fsp_err_t R_SCI_B_UART_Open (uart_ctrl_t * const p_api_ctrl, uart_cfg_t const * const p_cfg) +{ + sci_b_uart_instance_ctrl_t * p_ctrl = (sci_b_uart_instance_ctrl_t *) p_api_ctrl; + +#if (SCI_B_UART_CFG_PARAM_CHECKING_ENABLE) + + /* Check parameters. */ + FSP_ASSERT(p_ctrl); + FSP_ASSERT(p_cfg); + + FSP_ASSERT(p_cfg->p_extend); + FSP_ASSERT(((sci_b_uart_extended_cfg_t *) p_cfg->p_extend)->p_baud_setting); + FSP_ERROR_RETURN(SCI_B_UART_OPEN != p_ctrl->open, FSP_ERR_ALREADY_OPEN); + + /* Make sure this channel exists. */ + FSP_ERROR_RETURN(BSP_FEATURE_SCI_CHANNELS & (1U << p_cfg->channel), FSP_ERR_IP_CHANNEL_NOT_PRESENT); + + if (((sci_b_uart_extended_cfg_t *) p_cfg->p_extend)->flow_control == SCI_B_UART_FLOW_CONTROL_CTSRTS) + { + FSP_ERROR_RETURN( + ((sci_b_uart_extended_cfg_t *) p_cfg->p_extend)->flow_control_pin != SCI_B_UART_INVALID_16BIT_PARAM, + FSP_ERR_INVALID_ARGUMENT); + } + + FSP_ASSERT(p_cfg->rxi_irq >= 0); + FSP_ASSERT(p_cfg->txi_irq >= 0); + FSP_ASSERT(p_cfg->tei_irq >= 0); + FSP_ASSERT(p_cfg->eri_irq >= 0); +#endif + + p_ctrl->p_reg = (R_SCI_B0_Type *) (R_SCI0_BASE + (SCI_B_REG_SIZE * p_cfg->channel)); + + p_ctrl->fifo_depth = 0U; +#if SCI_B_UART_CFG_FIFO_SUPPORT + + /* Check if the channel supports fifo */ + if (BSP_FEATURE_SCI_UART_FIFO_CHANNELS & (1U << p_cfg->channel)) + { + /* Set fifo depth. */ + p_ctrl->fifo_depth = BSP_FEATURE_SCI_UART_FIFO_DEPTH; + } +#endif + + p_ctrl->p_cfg = p_cfg; + + p_ctrl->p_callback = p_cfg->p_callback; + p_ctrl->p_context = p_cfg->p_context; + p_ctrl->p_callback_memory = NULL; + sci_b_uart_extended_cfg_t * p_extend = (sci_b_uart_extended_cfg_t *) p_cfg->p_extend; + + p_ctrl->data_bytes = 1U; + if (UART_DATA_BITS_9 == p_cfg->data_bits) + { + p_ctrl->data_bytes = 2U; + } + + /* Configure the interrupts. */ + r_sci_b_irqs_cfg(p_ctrl, p_cfg); + +#if SCI_B_UART_CFG_DTC_SUPPORTED + + /* Configure the transfer interface for transmission and reception if provided. */ + fsp_err_t err = r_sci_b_uart_transfer_open(p_ctrl, p_cfg); + + FSP_ERROR_RETURN(FSP_SUCCESS == err, err); +#endif + + uint32_t ccr0 = R_SCI_B0_CCR0_IDSEL_Msk; + + /* Enable the SCI channel and reset the registers to their initial state. */ + R_BSP_MODULE_START(FSP_IP_SCI, p_cfg->channel); + + /* Initialize registers as defined in section 26.3.7 "SCI Initialization in Asynchronous Mode" in the RA6T2 manual + * R01UH0951EJ0100 or the relevant section for the MCU being used. */ + p_ctrl->p_reg->CCR0 = ccr0; + + /* Set the UART configuration settings provided in ::uart_cfg_t and ::sci_b_uart_extended_cfg_t. */ + r_sci_b_uart_config_set(p_ctrl, p_cfg); + + p_ctrl->p_tx_src = NULL; + p_ctrl->tx_src_bytes = 0U; + p_ctrl->p_rx_dest = NULL; + p_ctrl->rx_dest_bytes = 0; + + /* Set flow control pins. */ + p_ctrl->flow_pin = p_extend->flow_control_pin; + +#if SCI_B_UART_CFG_FLOW_CONTROL_SUPPORT + if (p_ctrl->flow_pin != SCI_B_UART_INVALID_16BIT_PARAM) + { + R_BSP_PinAccessEnable(); + R_BSP_PinWrite(p_ctrl->flow_pin, SCI_B_UART_FLOW_CONTROL_INACTIVE); + R_BSP_PinAccessDisable(); + } +#endif + + /* Clear all flags in CSR register. */ + p_ctrl->p_reg->CFCLR = SCI_B_UART_CFCLR_CLEAR_ALL_MASK; + +#if SCI_B_UART_CFG_FIFO_SUPPORT + p_ctrl->p_reg->FFCLR = SCI_B_UART_FFCLR_CLEAR_ALL_MASK; +#endif + +#if (SCI_B_UART_CFG_RX_ENABLE) + + /* If reception is enabled at build time, enable reception. */ + ccr0 |= R_SCI_B0_CCR0_RE_Msk; + R_BSP_IrqEnable(p_ctrl->p_cfg->rxi_irq); + R_BSP_IrqEnable(p_ctrl->p_cfg->eri_irq); + + ccr0 |= R_SCI_B0_CCR0_RIE_Msk; +#endif + +#if (SCI_B_UART_CFG_TX_ENABLE) + + /* NOTE: Transmitter and its interrupt are enabled in R_SCI_B_UART_Write(). */ + R_BSP_IrqEnable(p_ctrl->p_cfg->txi_irq); + R_BSP_IrqEnable(p_ctrl->p_cfg->tei_irq); + + ccr0 |= R_SCI_B0_CCR0_TE_Msk; +#endif + p_ctrl->p_reg->CCR0 = ccr0; + + /* Wait until interanl state of RE is 1 as it takes some time for the state to be reflected internally after + * rewriting the control register. Please refer "26.2.29 CESR : Communication Enable Status Register" description + * in the RA6T2 manual R01UH0951EJ0100 or the relevant section for the MCU being used */ + FSP_HARDWARE_REGISTER_WAIT(p_ctrl->p_reg->CESR_b.RIST, 1U); + + p_ctrl->open = SCI_B_UART_OPEN; + + return FSP_SUCCESS; +} + +/*******************************************************************************************************************//** + * Aborts any in progress transfers. Disables interrupts, receiver, and transmitter. Closes lower level transfer + * drivers if used. Removes power. Implements @ref uart_api_t::close + * + * @retval FSP_SUCCESS Channel successfully closed. + * @retval FSP_ERR_ASSERTION Pointer to UART control block is NULL. + * @retval FSP_ERR_NOT_OPEN The control block has not been opened + **********************************************************************************************************************/ +fsp_err_t R_SCI_B_UART_Close (uart_ctrl_t * const p_api_ctrl) +{ + sci_b_uart_instance_ctrl_t * p_ctrl = (sci_b_uart_instance_ctrl_t *) p_api_ctrl; +#if (SCI_B_UART_CFG_PARAM_CHECKING_ENABLE) + FSP_ASSERT(p_ctrl); +#endif + + FSP_ERROR_RETURN(SCI_B_UART_OPEN == p_ctrl->open, FSP_ERR_NOT_OPEN); + +#if (SCI_B_UART_CFG_TX_ENABLE) + p_ctrl->p_reg->CCR0 &= (uint32_t) ~(R_SCI_B0_CCR0_TIE_Msk | R_SCI_B0_CCR0_TEIE_Msk); + + #if SCI_B_UART_CFG_FIFO_SUPPORT + if (p_ctrl->fifo_depth > 0U) + { + /* Reset the transmit fifo */ + p_ctrl->p_reg->FCR_b.TFRST = 1U; + + /* Clear the CCR3_b.FM bit. This is necessary to set the TEND bit before setting the TE bit. If TEND is 0 + * when TE is set to 0, the SCI peripheral works abnormally next time the TE made to 1.*/ + p_ctrl->p_reg->CCR3 = 0U; + } + #endif + + /* Disable transmission */ + p_ctrl->p_reg->CCR0 &= (uint32_t) ~(R_SCI_B0_CCR0_TE_Msk); + + /* Wait until interanl state of TE is 0 as it takes some time for the state to be reflected internally after + * rewriting the control register. Please refer "26.2.29 CESR : Communication Enable Status Register" description + * in the RA6T2 manual R01UH0951EJ0100 or the relevant section for the MCU being used */ + FSP_HARDWARE_REGISTER_WAIT(p_ctrl->p_reg->CESR_b.TIST, 0U); + + /* If transmission is enabled at build time, disable transmission irqs. */ + R_BSP_IrqDisable(p_ctrl->p_cfg->txi_irq); + R_BSP_IrqDisable(p_ctrl->p_cfg->tei_irq); +#endif + +#if (SCI_B_UART_CFG_RX_ENABLE) + p_ctrl->p_reg->CCR0 &= (uint32_t) ~(R_SCI_B0_CCR0_RIE_Msk); + + /* If reception is enabled at build time, disable reception irqs. */ + R_BSP_IrqDisable(p_ctrl->p_cfg->rxi_irq); + R_BSP_IrqDisable(p_ctrl->p_cfg->eri_irq); +#endif + +#if SCI_B_UART_CFG_DTC_SUPPORTED + + /* Close the lower level transfer instances. */ + r_sci_b_uart_transfer_close(p_ctrl); +#endif + + /* Remove power to the channel. */ + R_BSP_MODULE_STOP(FSP_IP_SCI, p_ctrl->p_cfg->channel); + + /* Mark the channel not open so other APIs cannot use it. */ + p_ctrl->open = 0U; + + return FSP_SUCCESS; +} + +/*******************************************************************************************************************//** + * Receives user specified number of bytes into destination buffer pointer. Implements @ref uart_api_t::read + * + * @retval FSP_SUCCESS Data reception successfully ends. + * @retval FSP_ERR_ASSERTION Pointer to UART control block is NULL. + * Number of transfers outside the max or min boundary when transfer instance used + * @retval FSP_ERR_INVALID_ARGUMENT Destination address or data size is not valid for 9-bit mode. + * @retval FSP_ERR_NOT_OPEN The control block has not been opened + * @retval FSP_ERR_IN_USE A previous read operation is still in progress. + * @retval FSP_ERR_UNSUPPORTED SCI_B_UART_CFG_RX_ENABLE is set to 0 + * + * @return See @ref RENESAS_ERROR_CODES or functions called by this function for other possible + * return codes. This function calls: + * * @ref transfer_api_t::reset + * + * @note If 9-bit data length is specified at R_SCI_B_UART_Open call, p_dest must be aligned 16-bit boundary. + **********************************************************************************************************************/ +fsp_err_t R_SCI_B_UART_Read (uart_ctrl_t * const p_api_ctrl, uint8_t * const p_dest, uint32_t const bytes) +{ +#if (SCI_B_UART_CFG_RX_ENABLE) + sci_b_uart_instance_ctrl_t * p_ctrl = (sci_b_uart_instance_ctrl_t *) p_api_ctrl; + fsp_err_t err = FSP_SUCCESS; + + #if (SCI_B_UART_CFG_PARAM_CHECKING_ENABLE) + err = r_sci_b_read_write_param_check(p_ctrl, p_dest, bytes); + FSP_ERROR_RETURN(FSP_SUCCESS == err, err); + FSP_ERROR_RETURN(0U == p_ctrl->rx_dest_bytes, FSP_ERR_IN_USE); + #endif + + #if SCI_B_UART_CFG_DTC_SUPPORTED + + /* Configure transfer instance to receive the requested number of bytes if transfer is used for reception. */ + if (NULL != p_ctrl->p_cfg->p_transfer_rx) + { + uint32_t size = bytes >> (p_ctrl->data_bytes - 1); + #if (SCI_B_UART_CFG_PARAM_CHECKING_ENABLE) + + /* Check that the number of transfers is within the 16-bit limit. */ + FSP_ASSERT(size <= SCI_B_UART_DTC_MAX_TRANSFER); + #endif + err = + p_ctrl->p_cfg->p_transfer_rx->p_api->reset(p_ctrl->p_cfg->p_transfer_rx->p_ctrl, NULL, (void *) p_dest, + (uint16_t) size); + FSP_ERROR_RETURN(FSP_SUCCESS == err, err); + } + #endif + + /* Save the destination address and size for use in rxi_isr. */ + p_ctrl->p_rx_dest = p_dest; + p_ctrl->rx_dest_bytes = bytes; + + return err; +#else + FSP_PARAMETER_NOT_USED(p_api_ctrl); + FSP_PARAMETER_NOT_USED(p_dest); + FSP_PARAMETER_NOT_USED(bytes); + + return FSP_ERR_UNSUPPORTED; +#endif +} + +/*******************************************************************************************************************//** + * Transmits user specified number of bytes from the source buffer pointer. Implements @ref uart_api_t::write + * + * @retval FSP_SUCCESS Data transmission finished successfully. + * @retval FSP_ERR_ASSERTION Pointer to UART control block is NULL. + * Number of transfers outside the max or min boundary when transfer instance used + * @retval FSP_ERR_INVALID_ARGUMENT Source address or data size is not valid for 9-bit mode. + * @retval FSP_ERR_NOT_OPEN The control block has not been opened + * @retval FSP_ERR_IN_USE A UART transmission is in progress + * @retval FSP_ERR_UNSUPPORTED SCI_B_UART_CFG_TX_ENABLE is set to 0 + * + * @return See @ref RENESAS_ERROR_CODES or functions called by this function for other possible + * return codes. This function calls: + * * @ref transfer_api_t::reset + * + * @note If 9-bit data length is specified at R_SCI_B_UART_Open call, p_src must be aligned on a 16-bit boundary. + **********************************************************************************************************************/ +fsp_err_t R_SCI_B_UART_Write (uart_ctrl_t * const p_api_ctrl, uint8_t const * const p_src, uint32_t const bytes) +{ +#if (SCI_B_UART_CFG_TX_ENABLE) + sci_b_uart_instance_ctrl_t * p_ctrl = (sci_b_uart_instance_ctrl_t *) p_api_ctrl; + #if SCI_B_UART_CFG_PARAM_CHECKING_ENABLE || SCI_B_UART_CFG_DTC_SUPPORTED + fsp_err_t err = FSP_SUCCESS; + #endif + + #if (SCI_B_UART_CFG_PARAM_CHECKING_ENABLE) + err = r_sci_b_read_write_param_check(p_ctrl, p_src, bytes); + FSP_ERROR_RETURN(FSP_SUCCESS == err, err); + FSP_ERROR_RETURN(0U == p_ctrl->tx_src_bytes, FSP_ERR_IN_USE); + #endif + + /* Transmit interrupts must be disabled to start with. */ + p_ctrl->p_reg->CCR0 &= (uint32_t) ~(R_SCI_B0_CCR0_TIE_Msk | R_SCI_B0_CCR0_TEIE_Msk); + + /* Make sure no transmission is in progress. Setting CCR0_b.TE to 0 when CSR_b.TEND is 0 causes SCI peripheral + * to work abnormally. */ + FSP_HARDWARE_REGISTER_WAIT(p_ctrl->p_reg->CSR_b.TEND, 1U); + + /* Set TE bit to 0. This is done to set TE and TIE bit simultaneously at the end of this function. + * Please refer "26.3.8 Serial Data Transmission in Asynchronous Mode" section in the RA6T2 manual R01UH0951EJ0100 + * or the relevant section for the MCU being used */ + p_ctrl->p_reg->CCR0 &= (uint32_t) ~(R_SCI_B0_CCR0_TE_Msk); + + /* Wait until interanl state of TE is 0 as it takes some time for the state to be reflected internally after + * rewriting the control register. Please refer "26.2.29 CESR : Communication Enable Status Register" description + * in the RA6T2 manual R01UH0951EJ0100 or the relevant section for the MCU being used */ + FSP_HARDWARE_REGISTER_WAIT(p_ctrl->p_reg->CESR_b.TIST, 0U); + + p_ctrl->tx_src_bytes = bytes; + p_ctrl->p_tx_src = p_src; + + #if SCI_B_UART_CFG_DTC_SUPPORTED + + /* If a transfer instance is used for transmission, reset the transfer instance to transmit the requested + * data. */ + if ((NULL != p_ctrl->p_cfg->p_transfer_tx) && p_ctrl->tx_src_bytes) + { + uint32_t data_bytes = p_ctrl->data_bytes; + uint32_t num_transfers = p_ctrl->tx_src_bytes >> (data_bytes - 1); + p_ctrl->tx_src_bytes = 0U; + #if (SCI_B_UART_CFG_PARAM_CHECKING_ENABLE) + + /* Check that the number of transfers is within the 16-bit limit. */ + FSP_ASSERT(num_transfers <= SCI_B_UART_DTC_MAX_TRANSFER); + #endif + + err = p_ctrl->p_cfg->p_transfer_tx->p_api->reset(p_ctrl->p_cfg->p_transfer_tx->p_ctrl, + (void const *) p_ctrl->p_tx_src, + NULL, + (uint16_t) num_transfers); + FSP_ERROR_RETURN(FSP_SUCCESS == err, err); + } + #endif + + /* Set TE and TIE bits simultaneously by single instruction to enable TIE interrupt. + * Please refer "26.3.8 Serial Data Transmission in Asynchronous Mode" section in the RA6T2 manual R01UH0951EJ0100 + * or the relevant section for the MCU being used */ + p_ctrl->p_reg->CCR0 |= (uint32_t) (R_SCI_B0_CCR0_TE_Msk | R_SCI_B0_CCR0_TIE_Msk); + + return FSP_SUCCESS; +#else + FSP_PARAMETER_NOT_USED(p_api_ctrl); + FSP_PARAMETER_NOT_USED(p_src); + FSP_PARAMETER_NOT_USED(bytes); + + return FSP_ERR_UNSUPPORTED; +#endif +} + +/*******************************************************************************************************************//** + * Updates the user callback and has option of providing memory for callback structure. + * Implements uart_api_t::callbackSet + * + * @retval FSP_SUCCESS Callback updated successfully. + * @retval FSP_ERR_ASSERTION A required pointer is NULL. + * @retval FSP_ERR_NOT_OPEN The control block has not been opened. + * @retval FSP_ERR_NO_CALLBACK_MEMORY p_callback is non-secure and p_callback_memory is either secure or NULL. + **********************************************************************************************************************/ +fsp_err_t R_SCI_B_UART_CallbackSet (uart_ctrl_t * const p_api_ctrl, + void ( * p_callback)(uart_callback_args_t *), + void const * const p_context, + uart_callback_args_t * const p_callback_memory) +{ + sci_b_uart_instance_ctrl_t * p_ctrl = (sci_b_uart_instance_ctrl_t *) p_api_ctrl; + +#if (SCI_B_UART_CFG_PARAM_CHECKING_ENABLE) + FSP_ASSERT(p_ctrl); + FSP_ASSERT(p_callback); + FSP_ERROR_RETURN(SCI_B_UART_OPEN == p_ctrl->open, FSP_ERR_NOT_OPEN); +#endif + +#if BSP_TZ_SECURE_BUILD + + /* Get security state of p_callback */ + bool callback_is_secure = + (NULL == cmse_check_address_range((void *) p_callback, sizeof(void *), CMSE_AU_NONSECURE)); + + #if SCI_B_UART_CFG_PARAM_CHECKING_ENABLE + + /* In secure projects, p_callback_memory must be provided in non-secure space if p_callback is non-secure */ + uart_callback_args_t * const p_callback_memory_checked = cmse_check_pointed_object(p_callback_memory, + CMSE_AU_NONSECURE); + FSP_ERROR_RETURN(callback_is_secure || (NULL != p_callback_memory_checked), FSP_ERR_NO_CALLBACK_MEMORY); + #endif +#endif + + /* Store callback and context */ +#if BSP_TZ_SECURE_BUILD + p_ctrl->p_callback = callback_is_secure ? p_callback : + (void (*)(uart_callback_args_t *))cmse_nsfptr_create(p_callback); +#else + p_ctrl->p_callback = p_callback; +#endif + p_ctrl->p_context = p_context; + p_ctrl->p_callback_memory = p_callback_memory; + + return FSP_SUCCESS; +} + +/*******************************************************************************************************************//** + * Updates the baud rate using the clock selected in Open. p_baud_setting is a pointer to a + * sci_b_baud_setting_t structure. + * Implements @ref uart_api_t::baudSet + * + * @warning This terminates any in-progress transmission. + * + * @retval FSP_SUCCESS Baud rate was successfully changed. + * @retval FSP_ERR_ASSERTION Pointer to UART control block is NULL or the UART is not configured to use the + * internal clock. + * @retval FSP_ERR_NOT_OPEN The control block has not been opened + **********************************************************************************************************************/ +fsp_err_t R_SCI_B_UART_BaudSet (uart_ctrl_t * const p_api_ctrl, void const * const p_baud_setting) +{ + sci_b_uart_instance_ctrl_t * p_ctrl = (sci_b_uart_instance_ctrl_t *) p_api_ctrl; + +#if (SCI_B_UART_CFG_PARAM_CHECKING_ENABLE) + FSP_ASSERT(p_ctrl); + FSP_ERROR_RETURN(SCI_B_UART_OPEN == p_ctrl->open, FSP_ERR_NOT_OPEN); + + /* Verify that the On-Chip baud rate generator is currently selected. */ + FSP_ASSERT((p_ctrl->p_reg->CCR3_b.CKE & 0x2) == 0U); +#endif + + /* Save SCR configurations except transmit interrupts. Resuming transmission after reconfiguring baud settings is + * not supported. */ + uint32_t preserved_ccr0 = p_ctrl->p_reg->CCR0 & (uint32_t) ~(R_SCI_B0_CCR0_TIE_Msk | R_SCI_B0_CCR0_TEIE_Msk); + + /* Disables transmitter and receiver. This terminates any in-progress transmission. */ + p_ctrl->p_reg->CCR0 = preserved_ccr0 & + (uint32_t) ~(R_SCI_B0_CCR0_TE_Msk | R_SCI_B0_CCR0_RE_Msk | R_SCI_B0_CCR0_RIE_Msk); + p_ctrl->p_tx_src = NULL; + + /* Apply new baud rate register settings. */ + p_ctrl->p_reg->CCR2 = ((sci_b_baud_setting_t *) p_baud_setting)->baudrate_bits; + + /* Restore all settings except transmit interrupts. */ + p_ctrl->p_reg->CCR0 = preserved_ccr0; + + /* Restore all settings except transmit interrupts. */ + return FSP_SUCCESS; +} + +/*******************************************************************************************************************//** + * Provides the driver information, including the maximum number of bytes that can be received or transmitted at a time. + * Implements @ref uart_api_t::infoGet + * + * @retval FSP_SUCCESS Information stored in provided p_info. + * @retval FSP_ERR_ASSERTION Pointer to UART control block is NULL. + * @retval FSP_ERR_NOT_OPEN The control block has not been opened + **********************************************************************************************************************/ +fsp_err_t R_SCI_B_UART_InfoGet (uart_ctrl_t * const p_api_ctrl, uart_info_t * const p_info) +{ +#if SCI_B_UART_CFG_PARAM_CHECKING_ENABLE || SCI_B_UART_CFG_DTC_SUPPORTED + sci_b_uart_instance_ctrl_t * p_ctrl = (sci_b_uart_instance_ctrl_t *) p_api_ctrl; +#else + FSP_PARAMETER_NOT_USED(p_api_ctrl); +#endif + +#if (SCI_B_UART_CFG_PARAM_CHECKING_ENABLE) + FSP_ASSERT(p_ctrl); + FSP_ASSERT(p_info); + FSP_ERROR_RETURN(SCI_B_UART_OPEN == p_ctrl->open, FSP_ERR_NOT_OPEN); +#endif + + p_info->read_bytes_max = SCI_B_UART_MAX_READ_WRITE_NO_DTC; + p_info->write_bytes_max = SCI_B_UART_MAX_READ_WRITE_NO_DTC; + +#if (SCI_B_UART_CFG_RX_ENABLE) + + /* Store number of bytes that can be read at a time. */ + #if SCI_B_UART_CFG_DTC_SUPPORTED + if (NULL != p_ctrl->p_cfg->p_transfer_rx) + { + p_info->read_bytes_max = SCI_B_UART_DTC_MAX_TRANSFER; + } + #endif +#endif + +#if (SCI_B_UART_CFG_TX_ENABLE) + + /* Store number of bytes that can be written at a time. */ + #if SCI_B_UART_CFG_DTC_SUPPORTED + if (NULL != p_ctrl->p_cfg->p_transfer_tx) + { + p_info->write_bytes_max = SCI_B_UART_DTC_MAX_TRANSFER; + } + #endif +#endif + + return FSP_SUCCESS; +} + +/*******************************************************************************************************************//** + * Provides API to abort ongoing transfer. Transmission is aborted after the current character is transmitted. + * Reception is still enabled after abort(). Any characters received after abort() and before the transfer + * is reset in the next call to read(), will arrive via the callback function with event UART_EVENT_RX_CHAR. + * Implements @ref uart_api_t::communicationAbort + * + * @retval FSP_SUCCESS UART transaction aborted successfully. + * @retval FSP_ERR_ASSERTION Pointer to UART control block is NULL. + * @retval FSP_ERR_NOT_OPEN The control block has not been opened. + * @retval FSP_ERR_UNSUPPORTED The requested Abort direction is unsupported. + * + * @return See @ref RENESAS_ERROR_CODES or functions called by this function for other possible + * return codes. This function calls: + * * @ref transfer_api_t::disable + **********************************************************************************************************************/ +fsp_err_t R_SCI_B_UART_Abort (uart_ctrl_t * const p_api_ctrl, uart_dir_t communication_to_abort) +{ + sci_b_uart_instance_ctrl_t * p_ctrl = (sci_b_uart_instance_ctrl_t *) p_api_ctrl; + fsp_err_t err = FSP_ERR_UNSUPPORTED; + +#if (SCI_B_UART_CFG_PARAM_CHECKING_ENABLE) + FSP_ASSERT(p_ctrl); + FSP_ERROR_RETURN(SCI_B_UART_OPEN == p_ctrl->open, FSP_ERR_NOT_OPEN); +#endif + +#if (SCI_B_UART_CFG_TX_ENABLE) + if (UART_DIR_TX & communication_to_abort) + { + err = FSP_SUCCESS; + + /* Transmit interrupts must be disabled to start with. */ + p_ctrl->p_reg->CCR0 &= (uint32_t) ~(R_SCI_B0_CCR0_TIE_Msk | R_SCI_B0_CCR0_TEIE_Msk); + + /* Make sure no transmission is in progress. Setting CCR0_b.TE to 0 when CSR_b.TEND is 0 causes SCI peripheral + * to work abnormally. */ + FSP_HARDWARE_REGISTER_WAIT(p_ctrl->p_reg->CSR_b.TEND, 1U); + + p_ctrl->p_reg->CCR0 &= (uint32_t) ~(R_SCI_B0_CCR0_TE_Msk); + + /* Wait until interanl state of TE is 0 as it takes some time for the state to be reflected + * internally after rewriting the control register. Please refer "26.2.29 CESR : Communication + * Enable Status Register" description in the RA6T2 manual R01UH0951EJ0100 or the relevant section + * for the MCU being used */ + FSP_HARDWARE_REGISTER_WAIT(p_ctrl->p_reg->CESR_b.TIST, 0U); + + #if SCI_B_UART_CFG_DTC_SUPPORTED + if (NULL != p_ctrl->p_cfg->p_transfer_tx) + { + err = p_ctrl->p_cfg->p_transfer_tx->p_api->disable(p_ctrl->p_cfg->p_transfer_tx->p_ctrl); + } + #endif + + #if SCI_B_UART_CFG_FIFO_SUPPORT + if (p_ctrl->fifo_depth > 0U) + { + /* Reset the transmit fifo */ + p_ctrl->p_reg->FCR_b.TFRST = 1U; + } + #endif + p_ctrl->tx_src_bytes = 0U; + + FSP_ERROR_RETURN(FSP_SUCCESS == err, err); + } +#endif +#if (SCI_B_UART_CFG_RX_ENABLE) + if (UART_DIR_RX & communication_to_abort) + { + err = FSP_SUCCESS; + + p_ctrl->rx_dest_bytes = 0U; + #if SCI_B_UART_CFG_DTC_SUPPORTED + if (NULL != p_ctrl->p_cfg->p_transfer_rx) + { + err = p_ctrl->p_cfg->p_transfer_rx->p_api->disable(p_ctrl->p_cfg->p_transfer_rx->p_ctrl); + } + #endif + #if SCI_B_UART_CFG_FIFO_SUPPORT + if (0U != p_ctrl->fifo_depth) + { + /* Reset the receive fifo */ + p_ctrl->p_reg->FCR_b.RFRST = 1U; + } + #endif + } +#endif + + return err; +} + +/*******************************************************************************************************************//** + * Provides API to abort ongoing read. Reception is still enabled after abort(). Any characters received after abort() + * and before the transfer is reset in the next call to read(), will arrive via the callback function with event + * UART_EVENT_RX_CHAR. + * Implements @ref uart_api_t::readStop + * + * @retval FSP_SUCCESS UART transaction aborted successfully. + * @retval FSP_ERR_ASSERTION Pointer to UART control block is NULL. + * @retval FSP_ERR_NOT_OPEN The control block has not been opened. + * @retval FSP_ERR_UNSUPPORTED The requested Abort direction is unsupported. + * + * @return See @ref RENESAS_ERROR_CODES or functions called by this function for other possible + * return codes. This function calls: + * * @ref transfer_api_t::disable + **********************************************************************************************************************/ +fsp_err_t R_SCI_B_UART_ReadStop (uart_ctrl_t * const p_api_ctrl, uint32_t * remaining_bytes) +{ + sci_b_uart_instance_ctrl_t * p_ctrl = (sci_b_uart_instance_ctrl_t *) p_api_ctrl; + +#if (SCI_B_UART_CFG_PARAM_CHECKING_ENABLE) + FSP_ASSERT(p_ctrl); + FSP_ERROR_RETURN(SCI_B_UART_OPEN == p_ctrl->open, FSP_ERR_NOT_OPEN); +#endif + +#if (SCI_B_UART_CFG_RX_ENABLE) + *remaining_bytes = p_ctrl->rx_dest_bytes; + p_ctrl->rx_dest_bytes = 0U; + #if SCI_B_UART_CFG_DTC_SUPPORTED + if (NULL != p_ctrl->p_cfg->p_transfer_rx) + { + fsp_err_t err = p_ctrl->p_cfg->p_transfer_rx->p_api->disable(p_ctrl->p_cfg->p_transfer_rx->p_ctrl); + FSP_ERROR_RETURN(FSP_SUCCESS == err, err); + + transfer_properties_t transfer_info; + err = p_ctrl->p_cfg->p_transfer_rx->p_api->infoGet(p_ctrl->p_cfg->p_transfer_rx->p_ctrl, &transfer_info); + FSP_ERROR_RETURN(FSP_SUCCESS == err, err); + *remaining_bytes = transfer_info.transfer_length_remaining; + } + #endif + #if SCI_B_UART_CFG_FIFO_SUPPORT + if (0U != p_ctrl->fifo_depth) + { + /* Reset the receive fifo */ + p_ctrl->p_reg->FCR_b.RFRST = 1U; + } + #endif +#else + + return FSP_ERR_UNSUPPORTED; +#endif + + return FSP_SUCCESS; +} + +/*******************************************************************************************************************//** + * Calculates baud rate register settings. Evaluates and determines the best possible settings set to the baud rate + * related registers. + * + * @param[in] baudrate Baud rate [bps]. For example, 19200, 57600, 115200, etc. + * @param[in] bitrate_modulation Enable bitrate modulation + * @param[in] baud_rate_error_x_1000 Max baud rate error. At most <baud_rate_percent_error> x 1000 required + * for module to function. Absolute max baud_rate_error is 15000 (15%). + * @param[out] p_baud_setting Baud setting information stored here if successful + * + * @retval FSP_SUCCESS Baud rate is set successfully + * @retval FSP_ERR_ASSERTION Null pointer + * @retval FSP_ERR_INVALID_ARGUMENT Baud rate is '0', error in calculated baud rate is larger than requested + * max error, or requested max error in baud rate is larger than 15%. + **********************************************************************************************************************/ +fsp_err_t R_SCI_B_UART_BaudCalculate (uint32_t baudrate, + bool bitrate_modulation, + uint32_t baud_rate_error_x_1000, + sci_b_baud_setting_t * const p_baud_setting) +{ +#if (SCI_B_UART_CFG_PARAM_CHECKING_ENABLE) + FSP_ASSERT(p_baud_setting); + FSP_ERROR_RETURN(SCI_B_UART_MAX_BAUD_RATE_ERROR_X_1000 >= baud_rate_error_x_1000, FSP_ERR_INVALID_ARGUMENT); + FSP_ERROR_RETURN((0U != baudrate), FSP_ERR_INVALID_ARGUMENT); +#endif + + p_baud_setting->baudrate_bits_b.brr = SCI_B_UART_BRR_MAX; + p_baud_setting->baudrate_bits_b.brme = 0U; + p_baud_setting->baudrate_bits_b.mddr = SCI_B_UART_MDDR_MIN; + + /* Find the best BRR (bit rate register) value. + * In table g_async_baud, divisor values are stored for BGDM, ABCS, ABCSE and N values. Each set of divisors + * is tried, and the settings with the lowest bit rate error are stored. The formula to calculate BRR is as + * follows and it must be 255 or less: + * BRR = (PCLK / (div_coefficient * baud)) - 1 + */ + int32_t hit_bit_err = SCI_B_UART_100_PERCENT_X_1000; + uint8_t hit_mddr = 0U; + uint32_t divisor = 0U; + +#if (BSP_FEATURE_BSP_HAS_SCISPI_CLOCK) + uint32_t freq_hz = R_FSP_SciSpiClockHzGet(); +#else + uint32_t freq_hz = R_FSP_SciClockHzGet(); +#endif + + for (uint32_t select_16_base_clk_cycles = 0U; + select_16_base_clk_cycles <= 1U && (hit_bit_err > ((int32_t) baud_rate_error_x_1000)); + select_16_base_clk_cycles++) + { + for (uint32_t i = 0U; i < SCI_B_UART_NUM_DIVISORS_ASYNC; i++) + { + /* if select_16_base_clk_cycles == true: Skip this calculation for divisors that are not acheivable with 16 base clk cycles per bit. + * if select_16_base_clk_cycles == false: Skip this calculation for divisors that are only acheivable without 16 base clk cycles per bit. + */ + if (((uint8_t) select_16_base_clk_cycles) ^ (g_async_baud[i].abcs | g_async_baud[i].abcse)) + { + continue; + } + + divisor = (uint32_t) g_div_coefficient[i] * baudrate; + uint32_t temp_brr = freq_hz / divisor; + + if (temp_brr <= (SCI_B_UART_BRR_MAX + 1U)) + { + while (temp_brr > 0U) + { + temp_brr -= 1U; + + /* Calculate the bit rate error. The formula is as follows: + * bit rate error[%] = {(PCLK / (baud * div_coefficient * (BRR + 1)) - 1} x 100 + * calculates bit rate error[%] to three decimal places + */ + int32_t err_divisor = (int32_t) (divisor * (temp_brr + 1U)); + + /* Promoting to 64 bits for calculation, but the final value can never be more than 32 bits, as + * described below, so this cast is safe. + * 1. (temp_brr + 1) can be off by an upper limit of 1 due to rounding from the calculation: + * freq_hz / divisor, or: + * freq_hz / divisor <= (temp_brr + 1) < (freq_hz / divisor) + 1 + * 2. Solving for err_divisor: + * freq_hz <= err_divisor < freq_hz + divisor + * 3. Solving for bit_err: + * 0 >= bit_err >= (freq_hz * 100000 / (freq_hz + divisor)) - 100000 + * 4. freq_hz >= divisor (or temp_brr would be -1 and we would never enter this while loop), so: + * 0 >= bit_err >= 100000 / freq_hz - 100000 + * 5. Larger frequencies yield larger bit errors (absolute value). As the frequency grows, + * the bit_err approaches -100000, so: + * 0 >= bit_err >= -100000 + * 6. bit_err is between -100000 and 0. This entire range fits in an int32_t type, so the cast + * to (int32_t) is safe. + */ + int32_t bit_err = (int32_t) (((((int64_t) freq_hz) * SCI_B_UART_100_PERCENT_X_1000) / + err_divisor) - SCI_B_UART_100_PERCENT_X_1000); + + uint8_t mddr = 0U; + if (bitrate_modulation) + { + /* Calculate the MDDR (M) value if bit rate modulation is enabled, + * The formula to calculate MBBR (from the M and N relationship given in the hardware manual) is as follows + * and it must be between 128 and 255. + * MDDR = ((div_coefficient * baud * 256) * (BRR + 1)) / PCLK */ + mddr = (uint8_t) ((uint32_t) err_divisor / (freq_hz / SCI_B_UART_MDDR_MAX)); + + /* MDDR value must be greater than or equal to SCI_B_UART_MDDR_MIN. */ + if (mddr < SCI_B_UART_MDDR_MIN) + { + break; + } + + /* Adjust bit rate error for bit rate modulation. The following formula is used: + * bit rate error [%] = ((bit rate error [%, no modulation] + 100) * MDDR / 256) - 100 + */ + bit_err = (((bit_err + SCI_B_UART_100_PERCENT_X_1000) * (int32_t) mddr) / + SCI_B_UART_MDDR_DIVISOR) - SCI_B_UART_100_PERCENT_X_1000; + } + + /* Take the absolute value of the bit rate error. */ + if (bit_err < 0) + { + bit_err = -bit_err; + } + + /* If the absolute value of the bit rate error is less than the previous lowest absolute value of + * bit rate error, then store these settings as the best value. + */ + if (bit_err < hit_bit_err) + { + p_baud_setting->baudrate_bits_b.bgdm = g_async_baud[i].bgdm; + p_baud_setting->baudrate_bits_b.abcs = g_async_baud[i].abcs; + p_baud_setting->baudrate_bits_b.abcse = g_async_baud[i].abcse; + p_baud_setting->baudrate_bits_b.cks = g_async_baud[i].cks; + p_baud_setting->baudrate_bits_b.brr = (uint8_t) temp_brr; + hit_bit_err = bit_err; + hit_mddr = mddr; + } + + if (bitrate_modulation) + { + p_baud_setting->baudrate_bits_b.brme = 1U; + p_baud_setting->baudrate_bits_b.mddr = hit_mddr; + } + else + { + break; + } + } + } + } + } + + /* Return an error if the percent error is larger than the maximum percent error allowed for this instance */ + FSP_ERROR_RETURN((hit_bit_err <= (int32_t) baud_rate_error_x_1000), FSP_ERR_INVALID_ARGUMENT); + + return FSP_SUCCESS; +} + +/*******************************************************************************************************************//** + * @} (end addtogroup SCI_B_UART) + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Private Functions + **********************************************************************************************************************/ + +#if (SCI_B_UART_CFG_PARAM_CHECKING_ENABLE) + +/*******************************************************************************************************************//** + * Parameter error check function for read/write. + * + * @param[in] p_ctrl Pointer to the control block for the channel + * @param[in] addr Pointer to the buffer + * @param[in] bytes Number of bytes to read or write + * + * @retval FSP_SUCCESS No parameter error found + * @retval FSP_ERR_NOT_OPEN The control block has not been opened + * @retval FSP_ERR_ASSERTION Pointer to UART control block or configuration structure is NULL + * @retval FSP_ERR_INVALID_ARGUMENT Address is not aligned to 2-byte boundary or size is the odd number when the data + * length is 9-bit + **********************************************************************************************************************/ +static fsp_err_t r_sci_b_read_write_param_check (sci_b_uart_instance_ctrl_t const * const p_ctrl, + uint8_t const * const addr, + uint32_t const bytes) +{ + FSP_ASSERT(p_ctrl); + FSP_ASSERT(addr); + FSP_ASSERT(0U != bytes); + FSP_ERROR_RETURN(SCI_B_UART_OPEN == p_ctrl->open, FSP_ERR_NOT_OPEN); + + if (2U == p_ctrl->data_bytes) + { + /* Do not allow odd buffer address if data length is 9 bits. */ + FSP_ERROR_RETURN((0U == ((uint32_t) addr & SCI_B_UART_ALIGN_2_BYTES)), FSP_ERR_INVALID_ARGUMENT); + + /* Do not allow odd number of data bytes if data length is 9 bits. */ + FSP_ERROR_RETURN(0U == (bytes % 2U), FSP_ERR_INVALID_ARGUMENT); + } + + return FSP_SUCCESS; +} + +#endif +#if SCI_B_UART_CFG_DTC_SUPPORTED + +/*******************************************************************************************************************//** + * Subroutine to apply common UART transfer settings. + * + * @param[in] p_cfg Pointer to UART specific configuration structure + * @param[in] p_transfer Pointer to transfer instance to configure + * + * @retval FSP_SUCCESS UART transfer drivers successfully configured + * @retval FSP_ERR_ASSERTION Invalid pointer + **********************************************************************************************************************/ +static fsp_err_t r_sci_b_uart_transfer_configure (sci_b_uart_instance_ctrl_t * const p_ctrl, + transfer_instance_t const * p_transfer, + uint32_t * p_transfer_reg, + uint32_t sci_buffer_address) +{ + /* Configure the transfer instance, if enabled. */ + #if (SCI_B_UART_CFG_PARAM_CHECKING_ENABLE) + FSP_ASSERT(NULL != p_transfer->p_api); + FSP_ASSERT(NULL != p_transfer->p_cfg); + FSP_ASSERT(NULL != p_transfer->p_cfg->p_info); + FSP_ASSERT(NULL != p_transfer->p_cfg->p_extend); + #endif + + transfer_info_t * p_info = p_transfer->p_cfg->p_info; + + p_info->transfer_settings_word_b.size = TRANSFER_SIZE_1_BYTE; + + if (UART_DATA_BITS_9 == p_ctrl->p_cfg->data_bits) + { + p_info->transfer_settings_word_b.size = TRANSFER_SIZE_2_BYTE; + } + + /* Casting for compatibility with 7 or 8 bit mode. */ + *p_transfer_reg = sci_buffer_address; + + fsp_err_t err = p_transfer->p_api->open(p_transfer->p_ctrl, p_transfer->p_cfg); + FSP_ERROR_RETURN(FSP_SUCCESS == err, err); + + return FSP_SUCCESS; +} + +#endif + +#if SCI_B_UART_CFG_DTC_SUPPORTED + +/*******************************************************************************************************************//** + * Configures UART related transfer drivers (if enabled). + * + * @param[in] p_ctrl Pointer to UART control structure + * @param[in] p_cfg Pointer to UART specific configuration structure + * + * @retval FSP_SUCCESS UART transfer drivers successfully configured + * @retval FSP_ERR_ASSERTION Invalid pointer or required interrupt not enabled in vector table + * + * @return See @ref RENESAS_ERROR_CODES or functions called by this function for other possible + * return codes. This function calls: + * * @ref transfer_api_t::open + **********************************************************************************************************************/ +static fsp_err_t r_sci_b_uart_transfer_open (sci_b_uart_instance_ctrl_t * const p_ctrl, uart_cfg_t const * const p_cfg) +{ + fsp_err_t err = FSP_SUCCESS; + + #if (SCI_B_UART_CFG_RX_ENABLE) + + /* If a transfer instance is used for reception, apply UART specific settings and open the transfer instance. */ + if (NULL != p_cfg->p_transfer_rx) + { + transfer_info_t * p_info = p_cfg->p_transfer_rx->p_cfg->p_info; + + p_info->transfer_settings_word = SCI_B_UART_DTC_RX_TRANSFER_SETTINGS; + + err = + r_sci_b_uart_transfer_configure(p_ctrl, p_cfg->p_transfer_rx, (uint32_t *) &p_info->p_src, + (uint32_t) &(p_ctrl->p_reg->RDR)); + FSP_ERROR_RETURN(FSP_SUCCESS == err, err); + } + #endif + #if (SCI_B_UART_CFG_TX_ENABLE) + + /* If a transfer instance is used for transmission, apply UART specific settings and open the transfer instance. */ + if (NULL != p_cfg->p_transfer_tx) + { + transfer_info_t * p_info = p_cfg->p_transfer_tx->p_cfg->p_info; + + p_info->transfer_settings_word = SCI_B_UART_DTC_TX_TRANSFER_SETTINGS; + + err = r_sci_b_uart_transfer_configure(p_ctrl, + p_cfg->p_transfer_tx, + (uint32_t *) &p_info->p_dest, + (uint32_t) &p_ctrl->p_reg->TDR); + + #if (SCI_B_UART_CFG_RX_ENABLE) + if ((err != FSP_SUCCESS) && (NULL != p_cfg->p_transfer_rx)) + { + p_cfg->p_transfer_rx->p_api->close(p_cfg->p_transfer_rx->p_ctrl); + } + #endif + FSP_ERROR_RETURN(FSP_SUCCESS == err, err); + } + #endif + + return err; +} + +#endif + +/*******************************************************************************************************************//** + * Configures UART related registers based on user configurations. + * + * @param[in] p_ctrl Pointer to UART control structure + * @param[in] p_cfg Pointer to UART specific configuration structure + **********************************************************************************************************************/ +static void r_sci_b_uart_config_set (sci_b_uart_instance_ctrl_t * const p_ctrl, uart_cfg_t const * const p_cfg) +{ + sci_b_uart_extended_cfg_t * p_extend = (sci_b_uart_extended_cfg_t *) p_cfg->p_extend; + sci_b_baud_setting_t * p_baud_setting = p_extend->p_baud_setting; + uint32_t ccr2 = 0U; + + /* Set Character length, Stop bit length, Start bit edge detection and SCI mode as Asynchronous mode. */ + uint32_t ccr3 = (uint32_t) R_SCI_B0_CCR3_LSBF_Msk; + ccr3 |= ((uint32_t) p_cfg->data_bits << SCI_B_UART_CCR3_CHAR_OFFSET) & SCI_B_UART_CCR3_CHAR_MASK; + ccr3 |= ((uint32_t) p_cfg->stop_bits << R_SCI_B0_CCR3_STP_Pos) & R_SCI_B0_CCR3_STP_Msk; + ccr3 |= ((uint32_t) p_extend->rx_edge_start << R_SCI_B0_CCR3_RXDESEL_Pos) & R_SCI_B0_CCR3_RXDESEL_Msk; + ccr3 |= ((uint32_t) p_extend->rs485_setting.enable << R_SCI_B0_CCR3_DEN_Pos) & R_SCI_B0_CCR3_DEN_Msk; + ccr3 |= ((uint32_t) p_extend->clock << SCI_B_UART_CCR3_CKE_OFFSET) & SCI_B_UART_CCR3_CKE_MASK; +#if SCI_B_UART_CFG_FIFO_SUPPORT + if (p_ctrl->fifo_depth > 0U) + { + ccr3 |= (1U << R_SCI_B0_CCR3_FM_Pos) & R_SCI_B0_CCR3_FM_Msk; + } +#endif + p_ctrl->p_reg->CCR3 = ccr3; + + if ((SCI_B_UART_CLOCK_EXT8X == p_extend->clock) || (SCI_B_UART_CLOCK_EXT16X == p_extend->clock)) + { + /* Use external clock for baud rate */ + ccr2 = SCI_B_UART_CCR2_DEFAULT_VALUE; + + if (SCI_B_UART_CLOCK_EXT8X == p_extend->clock) + { + /* Set baud rate as (external clock / 8) */ + ccr2 |= 1U << R_SCI_B0_CCR2_ABCS_Pos; + } + } + else + { + /* Set the baud rate settings for the internal baud rate generator. */ + ccr2 |= p_baud_setting->baudrate_bits; + } + + p_ctrl->p_reg->CCR2 = ccr2; + + /* Configure flow control pin. */ + uint32_t ccr1 = ((uint32_t) (p_extend->flow_control << R_SCI_B0_CCR1_CTSE_Pos) & SCI_B_UART_CCR1_FLOW_CTSRTS_MASK); + + /* TXD pin is at high level when TE is 0. */ + ccr1 |= (3U << SCI_B_UART_CCR1_SPB2_OFFSET) & SCI_B_UART_CCR1_SPB2_MASK; + + if (0 != p_cfg->parity) + { + ccr1 |= + (((UART_PARITY_EVEN == + p_cfg->parity) ? 1U : 3U) << SCI_B_UART_CCR1_PARITY_OFFSET) & SCI_B_UART_CCR1_PARITY_MASK; + } + + ccr1 |= ((uint32_t) p_extend->noise_cancel << R_SCI_B0_CCR1_NFEN_Pos) & + R_SCI_B0_CCR1_NFEN_Msk; + p_ctrl->p_reg->CCR1 = ccr1; + + p_ctrl->p_reg->CCR4 = 0U; + +#if SCI_B_UART_CFG_FIFO_SUPPORT + + /* Configure FIFO related registers. */ + r_sci_b_uart_fifo_cfg(p_ctrl); +#else + + /* If fifo support is disabled and the current channel supports fifo set FCR to default */ + if (BSP_FEATURE_SCI_UART_FIFO_CHANNELS & (1U << p_cfg->channel)) + { + p_ctrl->p_reg->FCR = SCI_B_UART_FCR_DEFAULT_VALUE; + } +#endif + + /* Configure RS-485 DE assertion settings. */ + uint32_t dcr = ((uint32_t) (p_extend->rs485_setting.polarity << R_SCI_B0_DCR_DEPOL_Pos)) & R_SCI_B0_DCR_DEPOL_Msk; + dcr |= ((uint32_t) p_extend->rs485_setting.assertion_time << R_SCI_B0_DCR_DEAST_Pos) & + R_SCI_B0_DCR_DEAST_Msk; + dcr |= ((uint32_t) p_extend->rs485_setting.negation_time << R_SCI_B0_DCR_DENGT_Pos) & + R_SCI_B0_DCR_DENGT_Msk; + p_ctrl->p_reg->DCR = dcr; +} + +#if SCI_B_UART_CFG_FIFO_SUPPORT + +/*******************************************************************************************************************//** + * Resets FIFO related registers. + * + * @param[in] p_ctrl Pointer to UART instance control + * @param[in] p_cfg Pointer to UART configuration structure + **********************************************************************************************************************/ +static void r_sci_b_uart_fifo_cfg (sci_b_uart_instance_ctrl_t * const p_ctrl) +{ + if (0U != p_ctrl->fifo_depth) + { + uint32_t fcr = 0U; + + /* Set the tx and rx reset bits */ + p_ctrl->p_reg->FCR = (uint32_t) (SCI_B_UART_FCR_RESET_TX_RX); + + #if SCI_B_UART_CFG_RX_ENABLE + #if SCI_B_UART_CFG_DTC_SUPPORTED + + /* If DTC is used keep the receive trigger at the default level of 0. */ + if (NULL == p_ctrl->p_cfg->p_transfer_rx) + #endif + { + /* Otherwise, set receive trigger number as configured by the user. */ + sci_b_uart_extended_cfg_t const * p_extend = p_ctrl->p_cfg->p_extend; + + /* RTRG(Receive FIFO Data Trigger Number) controls when the RXI interrupt will be generated. If data is + * received but the trigger number is not met the RXI interrupt will be generated after 15 ETUs from + * the last stop bit in asynchronous mode. For more information see the FIFO Selected section of "Serial + * Data Reception in Asynchronous Mode" in the RA6T2 manual R01UH0951EJ0100 or the relevant section for + * the MCU being used. */ + fcr |= (((p_ctrl->fifo_depth - 1U) & p_extend->rx_fifo_trigger) & SCI_B_UART_FCR_TRIGGER_MASK) << + R_SCI_B0_FCR_RTRG_Pos; + } + + /* RTS asserts when the amount of received data stored in the fifo is equal or less than this value. */ + fcr |= ((p_ctrl->fifo_depth - 1U) & SCI_B_UART_FCR_TRIGGER_MASK) << R_SCI_B0_FCR_RSTRG_Pos; + #endif + + /* Set the FCR and reset the fifos. */ + p_ctrl->p_reg->FCR |= fcr; + } +} + +#endif + +/*******************************************************************************************************************//** + * Sets interrupt priority and initializes vector info. + * + * @param[in] p_ctrl Pointer to driver control block + * @param[in] ipl Interrupt priority level + * @param[in] irq IRQ number for this interrupt + **********************************************************************************************************************/ +static void r_sci_b_irq_cfg (sci_b_uart_instance_ctrl_t * const p_ctrl, uint8_t const ipl, IRQn_Type const irq) +{ + /* Disable interrupts, set priority, and store control block in the vector information so it can be accessed + * from the callback. */ + R_BSP_IrqDisable(irq); + R_BSP_IrqStatusClear(irq); + R_BSP_IrqCfg(irq, ipl, p_ctrl); +} + +/*******************************************************************************************************************//** + * Sets interrupt priority and initializes vector info for all interrupts. + * + * @param[in] p_ctrl Pointer to UART instance control block + * @param[in] p_cfg Pointer to UART specific configuration structure + **********************************************************************************************************************/ +static void r_sci_b_irqs_cfg (sci_b_uart_instance_ctrl_t * const p_ctrl, uart_cfg_t const * const p_cfg) +{ +#if (SCI_B_UART_CFG_RX_ENABLE) + + /* ERI is optional. */ + r_sci_b_irq_cfg(p_ctrl, p_cfg->eri_ipl, p_cfg->eri_irq); + r_sci_b_irq_cfg(p_ctrl, p_cfg->rxi_ipl, p_cfg->rxi_irq); +#endif +#if (SCI_B_UART_CFG_TX_ENABLE) + r_sci_b_irq_cfg(p_ctrl, p_cfg->txi_ipl, p_cfg->txi_irq); + r_sci_b_irq_cfg(p_ctrl, p_cfg->tei_ipl, p_cfg->tei_irq); +#endif +} + +#if SCI_B_UART_CFG_DTC_SUPPORTED + +/*******************************************************************************************************************//** + * Closes transfer interfaces. + * + * @param[in] p_ctrl Pointer to UART instance control block + **********************************************************************************************************************/ +static void r_sci_b_uart_transfer_close (sci_b_uart_instance_ctrl_t * p_ctrl) +{ + #if (SCI_B_UART_CFG_RX_ENABLE) + if (NULL != p_ctrl->p_cfg->p_transfer_rx) + { + p_ctrl->p_cfg->p_transfer_rx->p_api->close(p_ctrl->p_cfg->p_transfer_rx->p_ctrl); + } + #endif + #if (SCI_B_UART_CFG_TX_ENABLE) + if (NULL != p_ctrl->p_cfg->p_transfer_tx) + { + p_ctrl->p_cfg->p_transfer_tx->p_api->close(p_ctrl->p_cfg->p_transfer_tx->p_ctrl); + } + #endif +} + +#endif + +/*******************************************************************************************************************//** + * Calls user callback. + * + * @param[in] p_ctrl Pointer to UART instance control block + * @param[in] data See uart_callback_args_t in r_uart_api.h + * @param[in] event Event code + **********************************************************************************************************************/ +static void r_sci_b_uart_call_callback (sci_b_uart_instance_ctrl_t * p_ctrl, uint32_t data, uart_event_t event) +{ + uart_callback_args_t args; + + /* Store callback arguments in memory provided by user if available. This allows callback arguments to be + * stored in non-secure memory so they can be accessed by a non-secure callback function. */ + uart_callback_args_t * p_args = p_ctrl->p_callback_memory; + if (NULL == p_args) + { + /* Store on stack */ + p_args = &args; + } + else + { + /* Save current arguments on the stack in case this is a nested interrupt. */ + args = *p_args; + } + + p_args->channel = p_ctrl->p_cfg->channel; + p_args->data = data; + p_args->event = event; + p_args->p_context = p_ctrl->p_context; + +#if BSP_TZ_SECURE_BUILD + + /* p_callback can point to a secure function or a non-secure function. */ + if (!cmse_is_nsfptr(p_ctrl->p_callback)) + { + /* If p_callback is secure, then the project does not need to change security state. */ + p_ctrl->p_callback(p_args); + } + else + { + /* If p_callback is Non-secure, then the project must change to Non-secure state in order to call the callback. */ + sci_b_uart_prv_ns_callback p_callback = (sci_b_uart_prv_ns_callback) (p_ctrl->p_callback); + p_callback(p_args); + } + +#else + + /* If the project is not Trustzone Secure, then it will never need to change security state in order to call the callback. */ + p_ctrl->p_callback(p_args); +#endif + if (NULL != p_ctrl->p_callback_memory) + { + /* Restore callback memory in case this is a nested interrupt. */ + *p_ctrl->p_callback_memory = args; + } +} + +#if (SCI_B_UART_CFG_TX_ENABLE) + +/*******************************************************************************************************************//** + * TXI interrupt processing for UART mode. TXI interrupt fires when the data in the data register or FIFO register has + * been transferred to the data shift register, and the next data can be written. This interrupt writes the next data. + * After the last data byte is written, this interrupt disables the TXI interrupt and enables the TEI (transmit end) + * interrupt. + **********************************************************************************************************************/ +void sci_b_uart_txi_isr (void) +{ + /* Save context if RTOS is used */ + FSP_CONTEXT_SAVE + + IRQn_Type irq = R_FSP_CurrentIrqGet(); + + /* Clear pending IRQ to make sure it doesn't fire again after exiting */ + R_BSP_IrqStatusClear(irq); + + /* Recover ISR context saved in open. */ + sci_b_uart_instance_ctrl_t * p_ctrl = (sci_b_uart_instance_ctrl_t *) R_FSP_IsrContextGet(irq); + + if ((NULL == p_ctrl->p_cfg->p_transfer_tx) && (0U != p_ctrl->tx_src_bytes)) + { + /* Fill the FIFO if its used. Otherwise write data to the TDR. */ + #if SCI_B_UART_CFG_FIFO_SUPPORT + if (0U != p_ctrl->fifo_depth) + { + uint32_t fifo_count = p_ctrl->p_reg->FTSR_b.T; + for (uint32_t cnt = fifo_count; (cnt < p_ctrl->fifo_depth) && p_ctrl->tx_src_bytes; cnt++) + { + if ((2U == p_ctrl->data_bytes)) + { + /* Write 16-bit data to TDR register */ + p_ctrl->p_reg->TDR = (uint32_t) (*(uint16_t *) (p_ctrl->p_tx_src)) & SCI_B_UART_TDR_TDAT_MASK_9BITS; + } + else + { + /* Write 1byte data to TDR_BY register */ + p_ctrl->p_reg->TDR_BY = (*(p_ctrl->p_tx_src)); + } + + p_ctrl->tx_src_bytes -= p_ctrl->data_bytes; + p_ctrl->p_tx_src += p_ctrl->data_bytes; + } + + /* Clear TDRE flag */ + p_ctrl->p_reg->CFCLR |= SCI_B_UART_CFCLR_TDREC_MASK; + } + else + #endif + { + if ((2U == p_ctrl->data_bytes)) + { + /* Write 16-bit data to TDR register */ + p_ctrl->p_reg->TDR = (uint32_t) (*(uint16_t *) (p_ctrl->p_tx_src)) & SCI_B_UART_TDR_TDAT_MASK_9BITS; + } + else + { + /* Write 1byte data to TDR_BY register */ + p_ctrl->p_reg->TDR_BY = (*(p_ctrl->p_tx_src)); + } + + p_ctrl->tx_src_bytes -= p_ctrl->data_bytes; + p_ctrl->p_tx_src += p_ctrl->data_bytes; + } + } + + if (0U == p_ctrl->tx_src_bytes) + { + /* After all data has been transmitted, disable transmit interrupts and enable the transmit end interrupt. */ + uint32_t ccr0_temp = p_ctrl->p_reg->CCR0; + ccr0_temp |= R_SCI_B0_CCR0_TEIE_Msk; + ccr0_temp &= (uint32_t) ~(R_SCI_B0_CCR0_TIE_Msk); + p_ctrl->p_reg->CCR0 = ccr0_temp; + + p_ctrl->p_tx_src = NULL; + + /* If a callback was provided, call it with the argument */ + if (NULL != p_ctrl->p_callback) + { + r_sci_b_uart_call_callback(p_ctrl, 0U, UART_EVENT_TX_DATA_EMPTY); + } + } + + /* Restore context if RTOS is used */ + FSP_CONTEXT_RESTORE +} + +#endif + +#if (SCI_B_UART_CFG_RX_ENABLE) + +/*******************************************************************************************************************//** + * RXI interrupt processing for UART mode. RXI interrupt happens when data arrives to the data register or the FIFO + * register. This function calls callback function when it meets conditions below. + * - UART_EVENT_RX_COMPLETE: The number of data which has been read reaches to the number specified in R_SCI_B_UART_Read() + * if a transfer instance is used for reception. + * - UART_EVENT_RX_CHAR: Data is received asynchronously (read has not been called) + * + * This interrupt also calls the callback function for RTS pin control if it is registered in R_SCI_B_UART_Open(). This is + * special functionality to expand SCI hardware capability and make RTS/CTS hardware flow control possible. If macro + * 'SCI_B_UART_CFG_FLOW_CONTROL_SUPPORT' is set, it is called at the beginning in this function to set the RTS pin high, + * then it is it is called again just before leaving this function to set the RTS pin low. + * @retval none + **********************************************************************************************************************/ +void sci_b_uart_rxi_isr (void) +{ + /* Save context if RTOS is used */ + FSP_CONTEXT_SAVE + + IRQn_Type irq = R_FSP_CurrentIrqGet(); + + /* Clear pending IRQ to make sure it doesn't fire again after exiting */ + R_BSP_IrqStatusClear(irq); + + /* Recover ISR context saved in open. */ + sci_b_uart_instance_ctrl_t * p_ctrl = (sci_b_uart_instance_ctrl_t *) R_FSP_IsrContextGet(irq); + + #if SCI_B_UART_CFG_DTC_SUPPORTED + if ((p_ctrl->p_cfg->p_transfer_rx == NULL) || (0 == p_ctrl->rx_dest_bytes)) + #endif + { + #if (SCI_B_UART_CFG_FLOW_CONTROL_SUPPORT) + if (p_ctrl->flow_pin != SCI_B_UART_INVALID_16BIT_PARAM) + { + R_BSP_PinAccessEnable(); + + /* Pause the transmission of data from the other device. */ + R_BSP_PinWrite(p_ctrl->flow_pin, SCI_B_UART_FLOW_CONTROL_ACTIVE); + } + #endif + + uint32_t data; + #if SCI_B_UART_CFG_FIFO_SUPPORT + do + { + if ((p_ctrl->fifo_depth > 0U)) + { + if (p_ctrl->p_reg->FRSR_b.R > 0U) + { + if (2U == p_ctrl->data_bytes) + { + data = p_ctrl->p_reg->RDR & R_SCI_B0_RDR_RDAT_Msk; + } + else + { + data = p_ctrl->p_reg->RDR_BY; + } + } + else + { + break; + } + } + else if (2U == p_ctrl->data_bytes) + #else + { + if (2U == p_ctrl->data_bytes) + #endif + { + data = p_ctrl->p_reg->RDR & R_SCI_B0_RDR_RDAT_Msk; + } + else + { + data = p_ctrl->p_reg->RDR_BY; + } + + if (0 == p_ctrl->rx_dest_bytes) + { + /* If a callback was provided, call it with the argument */ + if (NULL != p_ctrl->p_callback) + { + /* Call user callback with the data. */ + r_sci_b_uart_call_callback(p_ctrl, data, UART_EVENT_RX_CHAR); + } + } + else + { + memcpy((void *) p_ctrl->p_rx_dest, &data, p_ctrl->data_bytes); + p_ctrl->p_rx_dest += p_ctrl->data_bytes; + p_ctrl->rx_dest_bytes -= p_ctrl->data_bytes; + + if (0 == p_ctrl->rx_dest_bytes) + { + /* If a callback was provided, call it with the argument */ + if (NULL != p_ctrl->p_callback) + { + r_sci_b_uart_call_callback(p_ctrl, 0U, UART_EVENT_RX_COMPLETE); + } + } + } + + #if SCI_B_UART_CFG_FIFO_SUPPORT + } while ((p_ctrl->fifo_depth > 0U) && ((p_ctrl->p_reg->FRSR_b.R) > 0U)); + + if (p_ctrl->fifo_depth > 0U) + { + p_ctrl->p_reg->CFCLR |= SCI_B_UART_CFCLR_RDRFC_MASK; + } + + #else + } + #endif + #if (SCI_B_UART_CFG_FLOW_CONTROL_SUPPORT) + if (p_ctrl->flow_pin != SCI_B_UART_INVALID_16BIT_PARAM) + { + /* Resume the transmission of data from the other device. */ + R_BSP_PinWrite(p_ctrl->flow_pin, SCI_B_UART_FLOW_CONTROL_INACTIVE); + R_BSP_PinAccessDisable(); + } + #endif + } + + #if SCI_B_UART_CFG_DTC_SUPPORTED + else + { + p_ctrl->rx_dest_bytes = 0; + + p_ctrl->p_rx_dest = NULL; + + /* If a callback was provided, call it with the argument */ + if (NULL != p_ctrl->p_callback) + { + /* Call callback */ + r_sci_b_uart_call_callback(p_ctrl, 0U, UART_EVENT_RX_COMPLETE); + } + } + #endif + + /* Restore context if RTOS is used */ + FSP_CONTEXT_RESTORE +} + +#endif + +#if (SCI_B_UART_CFG_TX_ENABLE) + +/*******************************************************************************************************************//** + * TEI interrupt processing for UART mode. The TEI interrupt fires after the last byte is transmitted on the TX pin. + * The user callback function is called with the UART_EVENT_TX_COMPLETE event code (if it is registered in + * R_SCI_B_UART_Open()). + **********************************************************************************************************************/ +void sci_b_uart_tei_isr (void) +{ + /* Save context if RTOS is used */ + FSP_CONTEXT_SAVE + + IRQn_Type irq = R_FSP_CurrentIrqGet(); + + /* Recover ISR context saved in open. */ + sci_b_uart_instance_ctrl_t * p_ctrl = (sci_b_uart_instance_ctrl_t *) R_FSP_IsrContextGet(irq); + + p_ctrl->p_reg->CCR0 &= (uint32_t) ~(R_SCI_B0_CCR0_TE_Msk | R_SCI_B0_CCR0_TIE_Msk | R_SCI_B0_CCR0_TEIE_Msk); + + /* If a callback was provided, call it with the argument */ + if (NULL != p_ctrl->p_callback) + { + /* Receiving TEI(transmit end interrupt) means the completion of transmission, so call callback function here. */ + r_sci_b_uart_call_callback(p_ctrl, 0U, UART_EVENT_TX_COMPLETE); + } + + /* Clear pending IRQ to make sure it doesn't fire again after exiting */ + R_BSP_IrqStatusClear(irq); + + /* Restore context if RTOS is used */ + FSP_CONTEXT_RESTORE +} + +#endif + +#if (SCI_B_UART_CFG_RX_ENABLE) + +/*******************************************************************************************************************//** + * ERI interrupt processing for UART mode. When an ERI interrupt fires, the user callback function is called if it is + * registered in R_SCI_B_UART_Open() with the event code that triggered the interrupt. + **********************************************************************************************************************/ +void sci_b_uart_eri_isr (void) +{ + /* Save context if RTOS is used */ + FSP_CONTEXT_SAVE + + IRQn_Type irq = R_FSP_CurrentIrqGet(); + + /* Recover ISR context saved in open. */ + sci_b_uart_instance_ctrl_t * p_ctrl = (sci_b_uart_instance_ctrl_t *) R_FSP_IsrContextGet(irq); + + uint32_t data = 0U; + + /* Read data. */ + if (2U == p_ctrl->data_bytes) + { + data = p_ctrl->p_reg->RDR & R_SCI_B0_RDR_RDAT_Msk; + } + else + { + data = p_ctrl->p_reg->RDR_BY; + } + + /* Determine cause of error. */ + uint32_t csr = p_ctrl->p_reg->CSR; + uart_event_t event = (uart_event_t) ((((csr & R_SCI_B0_CSR_ORER_Msk) == R_SCI_B0_CSR_ORER_Msk) << 5U) | + (((csr & R_SCI_B0_CSR_FER_Msk) == R_SCI_B0_CSR_FER_Msk) << 4U) | + (((csr & R_SCI_B0_CSR_PER_Msk) == R_SCI_B0_CSR_PER_Msk) << 3U)); + + /* Check if there is a break detected. */ + if ((UART_EVENT_ERR_FRAMING == (event & UART_EVENT_ERR_FRAMING)) && (0U == p_ctrl->p_reg->CSR_b.RXDMON)) + { + event |= UART_EVENT_BREAK_DETECT; + } + + /* Clear error condition. */ + p_ctrl->p_reg->CFCLR |= SCI_B_UART_RCVR_ERR_MASK; + + /* If a callback was provided, call it with the argument */ + if (NULL != p_ctrl->p_callback) + { + /* Call callback. */ + r_sci_b_uart_call_callback(p_ctrl, data, event); + } + + /* Clear pending IRQ to make sure it doesn't fire again after exiting */ + R_BSP_IrqStatusClear(irq); + + /* Restore context if RTOS is used */ + FSP_CONTEXT_RESTORE +} + +#endif diff --git a/bsp/renesas/ra8m1-ek/ra_cfg/SConscript b/bsp/renesas/ra8m1-ek/ra_cfg/SConscript new file mode 100644 index 000000000000..ff52ceb4fead --- /dev/null +++ b/bsp/renesas/ra8m1-ek/ra_cfg/SConscript @@ -0,0 +1,20 @@ +Import('RTT_ROOT') +Import('rtconfig') +from building import * +from gcc import * + +cwd = GetCurrentDir() +src = [] +group = [] +CPPPATH = [] + +if rtconfig.PLATFORM in ['iccarm']: + print("\nThe current project does not support IAR build\n") + Return('group') +elif rtconfig.PLATFORM in GetGCCLikePLATFORM(): + if GetOption('target') != 'mdk5': + src = Glob('*.c') + CPPPATH = [cwd+'/fsp_cfg', cwd + '/fsp_cfg/bsp'] + +group += DefineGroup('ra_cfg', src, depend = [''], CPPPATH = CPPPATH) +Return('group') diff --git a/bsp/renesas/ra8m1-ek/ra_cfg/fsp_cfg/bsp/board_cfg.h b/bsp/renesas/ra8m1-ek/ra_cfg/fsp_cfg/bsp/board_cfg.h new file mode 100644 index 000000000000..de645b2f4123 --- /dev/null +++ b/bsp/renesas/ra8m1-ek/ra_cfg/fsp_cfg/bsp/board_cfg.h @@ -0,0 +1,5 @@ +/* generated configuration header file - do not edit */ +#ifndef BOARD_CFG_H_ +#define BOARD_CFG_H_ +#include "../../../ra/board/ra8m1_ek/board.h" +#endif /* BOARD_CFG_H_ */ diff --git a/bsp/renesas/ra8m1-ek/ra_cfg/fsp_cfg/bsp/bsp_cfg.h b/bsp/renesas/ra8m1-ek/ra_cfg/fsp_cfg/bsp/bsp_cfg.h new file mode 100644 index 000000000000..cc6ffb844ea2 --- /dev/null +++ b/bsp/renesas/ra8m1-ek/ra_cfg/fsp_cfg/bsp/bsp_cfg.h @@ -0,0 +1,62 @@ +/* generated configuration header file - do not edit */ +#ifndef BSP_CFG_H_ +#define BSP_CFG_H_ +#ifdef __cplusplus + extern "C" { + #endif + + #include "bsp_clock_cfg.h" + #include "bsp_mcu_family_cfg.h" + #include "board_cfg.h" + #define RA_NOT_DEFINED 0 + #ifndef BSP_CFG_RTOS + #if (RA_NOT_DEFINED) != (RA_NOT_DEFINED) + #define BSP_CFG_RTOS (2) + #elif (RA_NOT_DEFINED) != (RA_NOT_DEFINED) + #define BSP_CFG_RTOS (1) + #else + #define BSP_CFG_RTOS (0) + #endif + #endif + #ifndef BSP_CFG_RTC_USED + #define BSP_CFG_RTC_USED (RA_NOT_DEFINED) + #endif + #undef RA_NOT_DEFINED + #if defined(_RA_BOOT_IMAGE) + #define BSP_CFG_BOOT_IMAGE (1) + #endif + #define BSP_CFG_MCU_VCC_MV (3300) + #define BSP_CFG_STACK_MAIN_BYTES (0x400) + #define BSP_CFG_HEAP_BYTES (0) + #define BSP_CFG_PARAM_CHECKING_ENABLE (0) + #define BSP_CFG_ASSERT (0) + #define BSP_CFG_ERROR_LOG (0) + + #define BSP_CFG_PFS_PROTECT ((1)) + + #define BSP_CFG_C_RUNTIME_INIT ((1)) + #define BSP_CFG_EARLY_INIT ((0)) + + #define BSP_CFG_STARTUP_CLOCK_REG_NOT_RESET ((0)) + + #ifndef BSP_CLOCK_CFG_MAIN_OSC_POPULATED + #define BSP_CLOCK_CFG_MAIN_OSC_POPULATED (1) + #endif + + #ifndef BSP_CLOCK_CFG_MAIN_OSC_CLOCK_SOURCE + #define BSP_CLOCK_CFG_MAIN_OSC_CLOCK_SOURCE (0) + #endif + #ifndef BSP_CLOCK_CFG_SUBCLOCK_DRIVE + #define BSP_CLOCK_CFG_SUBCLOCK_DRIVE (0) + #endif + #ifndef BSP_CLOCK_CFG_SUBCLOCK_POPULATED + #define BSP_CLOCK_CFG_SUBCLOCK_POPULATED (1) + #endif + #ifndef BSP_CLOCK_CFG_SUBCLOCK_STABILIZATION_MS + #define BSP_CLOCK_CFG_SUBCLOCK_STABILIZATION_MS 1000 + #endif + + #ifdef __cplusplus + } + #endif +#endif /* BSP_CFG_H_ */ diff --git a/bsp/renesas/ra8m1-ek/ra_cfg/fsp_cfg/bsp/bsp_mcu_device_cfg.h b/bsp/renesas/ra8m1-ek/ra_cfg/fsp_cfg/bsp/bsp_mcu_device_cfg.h new file mode 100644 index 000000000000..92e7ddcdb624 --- /dev/null +++ b/bsp/renesas/ra8m1-ek/ra_cfg/fsp_cfg/bsp/bsp_mcu_device_cfg.h @@ -0,0 +1,5 @@ +/* generated configuration header file - do not edit */ +#ifndef BSP_MCU_DEVICE_CFG_H_ +#define BSP_MCU_DEVICE_CFG_H_ +#define BSP_CFG_MCU_PART_SERIES (8) +#endif /* BSP_MCU_DEVICE_CFG_H_ */ diff --git a/bsp/renesas/ra8m1-ek/ra_cfg/fsp_cfg/bsp/bsp_mcu_device_pn_cfg.h b/bsp/renesas/ra8m1-ek/ra_cfg/fsp_cfg/bsp/bsp_mcu_device_pn_cfg.h new file mode 100644 index 000000000000..a22da075de76 --- /dev/null +++ b/bsp/renesas/ra8m1-ek/ra_cfg/fsp_cfg/bsp/bsp_mcu_device_pn_cfg.h @@ -0,0 +1,11 @@ +/* generated configuration header file - do not edit */ +#ifndef BSP_MCU_DEVICE_PN_CFG_H_ +#define BSP_MCU_DEVICE_PN_CFG_H_ +#define BSP_MCU_R7FA8M1AHECBD + #define BSP_MCU_FEATURE_SET ('A') + #define BSP_ROM_SIZE_BYTES (2064384) + #define BSP_RAM_SIZE_BYTES (917504) + #define BSP_DATA_FLASH_SIZE_BYTES (12288) + #define BSP_PACKAGE_BGA + #define BSP_PACKAGE_PINS (224) +#endif /* BSP_MCU_DEVICE_PN_CFG_H_ */ diff --git a/bsp/renesas/ra8m1-ek/ra_cfg/fsp_cfg/bsp/bsp_mcu_family_cfg.h b/bsp/renesas/ra8m1-ek/ra_cfg/fsp_cfg/bsp/bsp_mcu_family_cfg.h new file mode 100644 index 000000000000..a7a7b613a0fd --- /dev/null +++ b/bsp/renesas/ra8m1-ek/ra_cfg/fsp_cfg/bsp/bsp_mcu_family_cfg.h @@ -0,0 +1,555 @@ +/* generated configuration header file - do not edit */ +#ifndef BSP_MCU_FAMILY_CFG_H_ +#define BSP_MCU_FAMILY_CFG_H_ +#include "bsp_mcu_device_pn_cfg.h" + #include "bsp_mcu_device_cfg.h" + #include "../../../ra/fsp/src/bsp/mcu/ra8m1/bsp_override.h" + #include "../../../ra/fsp/src/bsp/mcu/ra8m1/bsp_mcu_info.h" + #include "bsp_clock_cfg.h" + #define BSP_MCU_GROUP_RA8M1 (1) + #define BSP_LOCO_HZ (32768) + #define BSP_MOCO_HZ (8000000) + #define BSP_SUB_CLOCK_HZ (0) + #if BSP_CFG_HOCO_FREQUENCY == 0 + #define BSP_HOCO_HZ (16000000) + #elif BSP_CFG_HOCO_FREQUENCY == 1 + #define BSP_HOCO_HZ (18000000) + #elif BSP_CFG_HOCO_FREQUENCY == 2 + #define BSP_HOCO_HZ (20000000) + #elif BSP_CFG_HOCO_FREQUENCY == 4 + #define BSP_HOCO_HZ (32000000) + #elif BSP_CFG_HOCO_FREQUENCY == 7 + #define BSP_HOCO_HZ (48000000) + #else + #error "Invalid HOCO frequency chosen (BSP_CFG_HOCO_FREQUENCY) in bsp_clock_cfg.h" + #endif + + #define BSP_CFG_FLL_ENABLE (0) + + #define BSP_CFG_CLOCK_SETTLING_DELAY_ENABLE (1) + #define BSP_CFG_SLEEP_MODE_DELAY_ENABLE (1) + #define BSP_CFG_MSTP_CHANGE_DELAY_ENABLE (1) + #define BSP_CFG_RTOS_SLEEP_MODE_DELAY_ENABLE (1) + #define BSP_CFG_CLOCK_SETTLING_DELAY_US (150) + + #if defined(BSP_PACKAGE_LQFP) && (BSP_PACKAGE_PINS == 100) + #define BSP_MAX_CLOCK_CHANGE_THRESHOLD (180000000U) + #elif defined(BSP_PACKAGE_LQFP) + #define BSP_MAX_CLOCK_CHANGE_THRESHOLD (200000000U) + #else + #define BSP_MAX_CLOCK_CHANGE_THRESHOLD (240000000U) + #endif + + #define BSP_CORTEX_VECTOR_TABLE_ENTRIES (16U) + #define BSP_VECTOR_TABLE_MAX_ENTRIES (112U) + + #if defined(_RA_TZ_SECURE) + #define BSP_TZ_SECURE_BUILD (1) + #define BSP_TZ_NONSECURE_BUILD (0) + #elif defined(_RA_TZ_NONSECURE) + #define BSP_TZ_SECURE_BUILD (0) + #define BSP_TZ_NONSECURE_BUILD (1) + #else + #define BSP_TZ_SECURE_BUILD (0) + #define BSP_TZ_NONSECURE_BUILD (0) + #endif + + /* TrustZone Settings */ + #define BSP_TZ_CFG_INIT_SECURE_ONLY (BSP_CFG_CLOCKS_SECURE || (!BSP_CFG_CLOCKS_OVERRIDE)) + #define BSP_TZ_CFG_SKIP_INIT (BSP_TZ_NONSECURE_BUILD && BSP_TZ_CFG_INIT_SECURE_ONLY) + #define BSP_TZ_CFG_EXCEPTION_RESPONSE (0) + + /* CMSIS TrustZone Settings */ + #define SCB_CSR_AIRCR_INIT (1) + #define SCB_AIRCR_BFHFNMINS_VAL (0) + #define SCB_AIRCR_SYSRESETREQS_VAL (1) + #define SCB_AIRCR_PRIS_VAL (0) + #define TZ_FPU_NS_USAGE (1) +#ifndef SCB_NSACR_CP10_11_VAL + #define SCB_NSACR_CP10_11_VAL (3U) +#endif + +#ifndef FPU_FPCCR_TS_VAL + #define FPU_FPCCR_TS_VAL (1U) +#endif + #define FPU_FPCCR_CLRONRETS_VAL (1) + +#ifndef FPU_FPCCR_CLRONRET_VAL + #define FPU_FPCCR_CLRONRET_VAL (1) +#endif + + /* Type 1 Peripheral Security Attribution */ + + /* Peripheral Security Attribution Register (PSAR) Settings */ +#ifndef BSP_TZ_CFG_PSARB +#define BSP_TZ_CFG_PSARB (\ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 4) /* I3C */ | \ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 8) /* IIC1 */ | \ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 9) /* IIC0 */ | \ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 11) /* USBFS */ | \ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 12) /* USBHS */ | \ + (1 << 15) /* ETHERC/EDMAC */ | \ + (1 << 16) /* OSPI */ | \ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 18) /* SPI1 */ | \ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 19) /* SPI0 */ | \ + (((1 > 0) ? 0U : 1U) << 22) /* SCI9 */ | \ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 27) /* SCI4 */ | \ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 28) /* SCI3 */ | \ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 29) /* SCI2 */ | \ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 30) /* SCI1 */ | \ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 31) /* SCI0 */) +#endif +#ifndef BSP_TZ_CFG_PSARC +#define BSP_TZ_CFG_PSARC (\ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 0) /* CAC */ | \ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 1) /* CRC */ | \ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 7) /* SSIE1 */ | \ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 8) /* SSIE0 */ | \ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 11) /* SDHI1 */ | \ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 12) /* SDHI0 */ | \ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 13) /* DOC */ | \ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 16) /* CEU */ | \ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 26) /* CANFD1 */ | \ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 27) /* CANFD0 */ | \ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 31) /* RSIP7 */) +#endif +#ifndef BSP_TZ_CFG_PSARD +#define BSP_TZ_CFG_PSARD (\ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 4) /* AGT1 */ | \ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 5) /* AGT0 */ | \ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 11) /* POEG3 */ | \ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 12) /* POEG2 */ | \ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 13) /* POEG1 */ | \ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 14) /* POEG0 */ | \ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 15) /* ADC121 */ | \ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 16) /* ADC120 */ | \ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 20) /* DAC120 */ | \ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 22) /* TSN */ | \ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 27) /* ACMPHS1 */ | \ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 28) /* ACMPHS0 */) +#endif +#ifndef BSP_TZ_CFG_PSARE +#define BSP_TZ_CFG_PSARE (\ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 1) /* WDT */ | \ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 2) /* IWDT */ | \ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 3) /* RTC */ | \ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 8) /* ULPT1 */ | \ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 9) /* ULPT0 */ | \ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 18) /* GPT13 */ | \ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 19) /* GPT12 */ | \ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 20) /* GPT11 */ | \ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 21) /* GPT10 */ | \ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 22) /* GPT9 */ | \ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 23) /* GPT8 */ | \ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 24) /* GPT7 */ | \ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 25) /* GPT6 */ | \ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 26) /* GPT5 */ | \ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 27) /* GPT4 */ | \ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 28) /* GPT3 */ | \ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 29) /* GPT2 */ | \ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 30) /* GPT1 */ | \ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 31) /* GPT0 */) +#endif +#ifndef BSP_TZ_CFG_MSSAR +#define BSP_TZ_CFG_MSSAR (\ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 22) /* DTC_DMAC */ | \ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 31) /* ELC */) +#endif + + /* Type 2 Peripheral Security Attribution */ + + /* Security attribution for RSTSRn registers. */ +#ifndef BSP_TZ_CFG_RSTSAR +#define BSP_TZ_CFG_RSTSAR (0x0000000FU) +#endif + + /* Security attribution for registers of LVD channels. */ +#ifndef BSP_TZ_CFG_LVDSAR + /* The LVD driver needs to access both channels. This means that the security attribution for both channels must be the same. */ +#if (RA_NOT_DEFINED > 0) || (RA_NOT_DEFINED > 0) +#define BSP_TZ_CFG_LVDSAR (0U) +#else +#define BSP_TZ_CFG_LVDSAR (3U) +#endif +#endif + + /* Security attribution for LPM registers. + * - OPCCR based on clock security. + * - Set remaining registers based on LPM security. + */ +#ifndef BSP_TZ_CFG_LPMSAR +#define BSP_TZ_CFG_LPMSAR ((RA_NOT_DEFINED > 0) ? BSP_CFG_CLOCKS_SECURE == 0 : (\ + 0x002E0106U | \ + (BSP_CFG_CLOCKS_SECURE == 0))) +#endif + /* Deep Standby Interrupt Factor Security Attribution Register. */ +#ifndef BSP_TZ_CFG_DPFSAR +#define BSP_TZ_CFG_DPFSAR ((RA_NOT_DEFINED > 0) ? 0U : 0xAF1FFFFFU) +#endif + /* RAM Standby Control Security Attribution Register. */ +#ifndef BSP_TZ_CFG_RSCSAR +#define BSP_TZ_CFG_RSCSAR ((RA_NOT_DEFINED > 0) ? 0U : 0x00037FFFU) +#endif + + /* Security attribution for CGC registers. */ +#ifndef BSP_TZ_CFG_CGFSAR +#if BSP_CFG_CLOCKS_SECURE +/* Protect all CGC registers from Non-secure write access. */ +#define BSP_TZ_CFG_CGFSAR (0U) +#else +/* Allow Secure and Non-secure write access. */ +#define BSP_TZ_CFG_CGFSAR (0x047F3BFDU) +#endif +#endif + + /* Security attribution for Battery Backup registers. */ +#ifndef BSP_TZ_CFG_BBFSAR +#define BSP_TZ_CFG_BBFSAR (0x0000001FU) +#endif + + /* Security attribution for registers for IRQ channels. */ +#ifndef BSP_TZ_CFG_ICUSARA +#define BSP_TZ_CFG_ICUSARA (\ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 0U) /* External IRQ0 */ | \ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 1U) /* External IRQ1 */ | \ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 2U) /* External IRQ2 */ | \ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 3U) /* External IRQ3 */ | \ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 4U) /* External IRQ4 */ | \ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 5U) /* External IRQ5 */ | \ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 6U) /* External IRQ6 */ | \ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 7U) /* External IRQ7 */ | \ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 8U) /* External IRQ8 */ | \ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 9U) /* External IRQ9 */ | \ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 10U) /* External IRQ10 */ | \ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 11U) /* External IRQ11 */ | \ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 12U) /* External IRQ12 */ | \ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 13U) /* External IRQ13 */ | \ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 14U) /* External IRQ14 */ | \ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 15U) /* External IRQ15 */) +#endif + + /* Security attribution for NMI registers. */ +#ifndef BSP_TZ_CFG_ICUSARB +#define BSP_TZ_CFG_ICUSARB (0 | 0xFFFFFFFEU) /* Should match AIRCR.BFHFNMINS. */ +#endif + + /* Security attribution for registers for DMAC channels */ +#ifndef BSP_TZ_CFG_DMACCHSAR +#define BSP_TZ_CFG_DMACCHSAR (\ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 0U) /* DMAC Channel 0 */ | \ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 1U) /* DMAC Channel 1 */ | \ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 2U) /* DMAC Channel 2 */ | \ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 3U) /* DMAC Channel 3 */ | \ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 4U) /* DMAC Channel 4 */ | \ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 5U) /* DMAC Channel 5 */ | \ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 6U) /* DMAC Channel 6 */ | \ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 7U) /* DMAC Channel 7 */) +#endif + + /* Security attribution registers for WUPEN0. */ +#ifndef BSP_TZ_CFG_ICUSARE +#define BSP_TZ_CFG_ICUSARE ((RA_NOT_DEFINED > 0) ? 0U : 0xFF1D0000U) +#endif + + /* Security attribution registers for WUPEN1. */ +#ifndef BSP_TZ_CFG_ICUSARF +#define BSP_TZ_CFG_ICUSARF ((RA_NOT_DEFINED > 0) ? 0U : 0x00007F08U) +#endif + + /* Trusted Event Route Control Register for IELSR, DMAC.DELSR and ELC.ELSR. Note that currently Trusted Event Route Control is not supported. */ +#ifndef BSP_TZ_CFG_TEVTRCR +#define BSP_TZ_CFG_TEVTRCR (0) +#endif + + /* Security attribution register for ELCR, ELSEGR0, ELSEGR1 Security Attribution. */ +#ifndef BSP_TZ_CFG_ELCSARA + #define BSP_TZ_CFG_ELCSARA (0x00000007U) +#endif + + /* Set DTCSTSAR if the Secure program uses the DTC. */ +#if RA_NOT_DEFINED == RA_NOT_DEFINED + #define BSP_TZ_CFG_DTC_USED (0U) +#else + #define BSP_TZ_CFG_DTC_USED (1U) +#endif + + /* Security attribution of FLWT and FCKMHZ registers. */ +#ifndef BSP_TZ_CFG_FSAR +/* If the CGC registers are only accessible in Secure mode, than there is no + * reason for nonsecure applications to access FLWT and FCKMHZ. */ +#define BSP_TZ_CFG_FSAR (\ + ((BSP_CFG_CLOCKS_SECURE == 0) ? (1U << 0) : 0U) | /* FLWTSA */\ + ((RA_NOT_DEFINED) > 0 ? 0U: (1U << 1)) | /* FCACHESA */\ + ((BSP_CFG_CLOCKS_SECURE == 0) ? (1U << 8) : 0U) | /* FCKMHZSA */ \ + ((RA_NOT_DEFINED) > 0 ? 0U : (1U << 9U)) | /* FACICMISA */\ + ((RA_NOT_DEFINED) > 0 ? 0U: (1U << 10U)) /* FACICMRSA */) +#endif + + /* Security attribution for SRAM registers. */ +#ifndef BSP_TZ_CFG_SRAMSAR +/* If the CGC registers are only accessible in Secure mode, than there is no reason for Non Secure applications to access + * SRAM0WTEN and therefore there is no reason to access PRCR2. */ + #define BSP_TZ_CFG_SRAMSAR (\ + ((1U) << 0U) | /* SRAMSA0 */\ + ((1U) << 1U) | /* SRAMSA1 */\ + ((1U) << 7U) | /* STBRAMSA */\ + ((BSP_CFG_CLOCKS_SECURE == 0) ? (1U << 8U) : 0U) /* SRAMWTSA */) +#endif + + /* Security attribution for the DMAC Bus Master MPU settings. */ +#ifndef BSP_TZ_CFG_MMPUSARA + /* The DMAC Bus Master MPU settings should align with the DMAC channel settings. */ + #define BSP_TZ_CFG_MMPUSARA (BSP_TZ_CFG_DMACCHSAR) +#endif + + /* Security Attribution Register A for BUS Control registers. */ +#ifndef BSP_TZ_CFG_BUSSARA + #define BSP_TZ_CFG_BUSSARA (1U) +#endif + /* Security Attribution Register B for BUS Control registers. */ +#ifndef BSP_TZ_CFG_BUSSARB + #define BSP_TZ_CFG_BUSSARB (1U) +#endif + /* Security Attribution Register C for BUS Control registers. */ +#ifndef BSP_TZ_CFG_BUSSARC + #define BSP_TZ_CFG_BUSSARC (1U) +#endif + + /* Enable Uninitialized Non-Secure Application Fallback. */ +#ifndef BSP_TZ_CFG_NON_SECURE_APPLICATION_FALLBACK + #define BSP_TZ_CFG_NON_SECURE_APPLICATION_FALLBACK (1U) +#endif + + + #define OFS_SEQ1 0xA001A001 | (1 << 1) | (3 << 2) + #define OFS_SEQ2 (15 << 4) | (3 << 8) | (3 << 10) + #define OFS_SEQ3 (1 << 12) | (1 << 14) | (1 << 17) + #define OFS_SEQ4 (3 << 18) |(15 << 20) | (3 << 24) | (3 << 26) + #define OFS_SEQ5 (1 << 28) | (1 << 30) + #define BSP_CFG_ROM_REG_OFS0 (OFS_SEQ1 | OFS_SEQ2 | OFS_SEQ3 | OFS_SEQ4 | OFS_SEQ5) + + #define BSP_CFG_ROM_REG_OFS2 ((1 << 0) | 0xFFFFFFFEU) + + /* Option Function Select Register 1 Security Attribution */ +#ifndef BSP_CFG_ROM_REG_OFS1_SEL +#if defined(_RA_TZ_SECURE) || defined(_RA_TZ_NONSECURE) + #define BSP_CFG_ROM_REG_OFS1_SEL (0x00000000U | ((0U << 0U)) | ((0U << 3U)) | ((0U << 5U)) | ((BSP_CFG_CLOCKS_SECURE == 0) ? 0xF00U : 0U) | ((0U << 24U)) | ((0U << 25U))) +#else + #define BSP_CFG_ROM_REG_OFS1_SEL (0x00000000U) +#endif +#endif + #define BSP_CFG_ROM_REG_OFS1_INITECCEN (1 << 25) + #define BSP_CFG_ROM_REG_OFS1 (0xFCFFFED0 | (1 << 3) | (7) | (1 << 5) | (1 << 8) | (1 << 24) | (BSP_CFG_ROM_REG_OFS1_INITECCEN)) + + /* Used to create IELS values for the interrupt initialization table g_interrupt_event_link_select. */ + #define BSP_PRV_IELS_ENUM(vector) (ELC_ ## vector) + + /* Dual Mode Select Register */ +#ifndef BSP_CFG_ROM_REG_DUALSEL + #define BSP_CFG_ROM_REG_DUALSEL (0xFFFFFFF8U | (0x7U)) +#endif + + /* Block Protection Register 0 */ +#ifndef BSP_CFG_ROM_REG_BPS0 + #define BSP_CFG_ROM_REG_BPS0 (~( 0U)) +#endif + /* Block Protection Register 1 */ +#ifndef BSP_CFG_ROM_REG_BPS1 + #define BSP_CFG_ROM_REG_BPS1 (~( 0U)) +#endif + /* Block Protection Register 2 */ +#ifndef BSP_CFG_ROM_REG_BPS2 + #define BSP_CFG_ROM_REG_BPS2 (~( 0U)) +#endif + /* Block Protection Register 3 */ +#ifndef BSP_CFG_ROM_REG_BPS3 + #define BSP_CFG_ROM_REG_BPS3 (~( 0U)) +#endif + /* Permanent Block Protection Register 0 */ +#ifndef BSP_CFG_ROM_REG_PBPS0 + #define BSP_CFG_ROM_REG_PBPS0 (~( 0U)) +#endif + /* Permanent Block Protection Register 1 */ +#ifndef BSP_CFG_ROM_REG_PBPS1 + #define BSP_CFG_ROM_REG_PBPS1 (~( 0U)) +#endif + /* Permanent Block Protection Register 2 */ +#ifndef BSP_CFG_ROM_REG_PBPS2 + #define BSP_CFG_ROM_REG_PBPS2 (~( 0U)) +#endif + /* Permanent Block Protection Register 3 */ +#ifndef BSP_CFG_ROM_REG_PBPS3 + #define BSP_CFG_ROM_REG_PBPS3 (~( 0U)) +#endif + /* Security Attribution for Block Protection Register 0 (If any blocks are marked as protected in the secure application, then mark them as secure) */ +#ifndef BSP_CFG_ROM_REG_BPS_SEL0 + #define BSP_CFG_ROM_REG_BPS_SEL0 (BSP_CFG_ROM_REG_BPS0 & BSP_CFG_ROM_REG_PBPS0) +#endif + /* Security Attribution for Block Protection Register 1 (If any blocks are marked as protected in the secure application, then mark them as secure) */ +#ifndef BSP_CFG_ROM_REG_BPS_SEL1 + #define BSP_CFG_ROM_REG_BPS_SEL1 (BSP_CFG_ROM_REG_BPS1 & BSP_CFG_ROM_REG_PBPS1) +#endif + /* Security Attribution for Block Protection Register 2 (If any blocks are marked as protected in the secure application, then mark them as secure) */ +#ifndef BSP_CFG_ROM_REG_BPS_SEL2 + #define BSP_CFG_ROM_REG_BPS_SEL2 (BSP_CFG_ROM_REG_BPS2 & BSP_CFG_ROM_REG_PBPS2) +#endif + /* Security Attribution for Block Protection Register 3 (If any blocks are marked as protected in the secure application, then mark them as secure) */ +#ifndef BSP_CFG_ROM_REG_BPS_SEL3 + #define BSP_CFG_ROM_REG_BPS_SEL3 (BSP_CFG_ROM_REG_BPS3 & BSP_CFG_ROM_REG_PBPS3) +#endif + /* Security Attribution for Bank Select Register */ +#ifndef BSP_CFG_ROM_REG_BANKSEL_SEL + #define BSP_CFG_ROM_REG_BANKSEL_SEL (0xFFFFFFFFU) +#endif +#ifndef BSP_CLOCK_CFG_MAIN_OSC_WAIT + #define BSP_CLOCK_CFG_MAIN_OSC_WAIT (9) +#endif + + /* FSBL Control Register 0 */ +#ifndef BSP_CFG_ROM_REG_FSBLCTRL0 +#define BSP_CFG_ROM_REG_FSBLCTRL0 ( \ + (7 << R_OFS_DATAFLASH_FSBLCTRL0_FSBLEN_Pos) | \ + (7 << R_OFS_DATAFLASH_FSBLCTRL0_FSBLSKIPSW_Pos) | \ + (7 << R_OFS_DATAFLASH_FSBLCTRL0_FSBLSKIPDS_Pos) | \ + (7 << R_OFS_DATAFLASH_FSBLCTRL0_FSBLCLK_Pos) | \ + 0xFFFFF000) +#endif + + /* FSBL Control Register 1 */ +#ifndef BSP_CFG_ROM_REG_FSBLCTRL1 +#define BSP_CFG_ROM_REG_FSBLCTRL1 ( \ + (3 << R_OFS_DATAFLASH_FSBLCTRL1_FSBLEXMD_Pos) | \ + 0xFFFFFFFC) +#endif + + /* FSBL Control Register 2 */ +#ifndef BSP_CFG_ROM_REG_FSBLCTRL2 +#define BSP_CFG_ROM_REG_FSBLCTRL2 ( \ + (15 << R_OFS_DATAFLASH_FSBLCTRL2_PORTPN_Pos) | \ + (0x1F << R_OFS_DATAFLASH_FSBLCTRL2_PORTGN_Pos) | \ + 0xFFFFFE00) +#endif + + /* Start Address of Code Certificate Register 0 */ +#ifndef BSP_CFG_ROM_REG_SACC0 +#define BSP_CFG_ROM_REG_SACC0 (0xFFFFFFFF) +#endif + + /* Start Address of Code Certificate Register 1 */ +#ifndef BSP_CFG_ROM_REG_SACC1 +#define BSP_CFG_ROM_REG_SACC1 (0xFFFFFFFF) +#endif + + /* Start Address of Measurement Report Register */ +#ifndef BSP_CFG_ROM_REG_SAMR +#define BSP_CFG_ROM_REG_SAMR (0xFFFFFFFF) +#endif + + /* Hash of OEM_ROOT_PK Register */ +#ifndef BSP_CFG_ROM_REG_HOEMRTPK +#define BSP_CFG_ROM_REG_HOEMRTPK (RA_NOT_DEFINED) +#endif + + /* Configuration Data 0 Lock Bit Register 0 */ +#ifndef BSP_CFG_ROM_REG_CFGD0LOCK0 +#define BSP_CFG_ROM_REG_CFGD0LOCK0 (RA_NOT_DEFINED) +#endif + + /* Configuration Data 0 Lock Bit Register 1 */ +#ifndef BSP_CFG_ROM_REG_CFGD0LOCK1 +#define BSP_CFG_ROM_REG_CFGD0LOCK1 (RA_NOT_DEFINED) +#endif + + /* Configuration Data 1 Lock Bit Register 0 */ +#ifndef BSP_CFG_ROM_REG_CFGD1LOCK0 +#define BSP_CFG_ROM_REG_CFGD1LOCK0 (RA_NOT_DEFINED) +#endif + + /* Configuration Data 1 Lock Bit Register 1 */ +#ifndef BSP_CFG_ROM_REG_CFGD1LOCK1 +#define BSP_CFG_ROM_REG_CFGD1LOCK1 (RA_NOT_DEFINED) +#endif + + /* Configuration Data 2 Lock Bit Register */ +#ifndef BSP_CFG_ROM_REG_CFGD2LOCK +#define BSP_CFG_ROM_REG_CFGD2LOCK (RA_NOT_DEFINED) +#endif + + /* Anti-Rollback Counter Lock Setting Register */ +#ifndef BSP_CFG_ROM_REG_ARCLS +#define BSP_CFG_ROM_REG_ARCLS ( \ + (RA_NOT_DEFINED << R_OFS_DATAFLASH_ARCLS_ARCS_LK_Pos) | \ + (RA_NOT_DEFINED << R_OFS_DATAFLASH_ARCLS_ARCNS_LK_Pos) | \ + (RA_NOT_DEFINED << R_OFS_DATAFLASH_ARCLS_ARCBL_LK_Pos) | \ + 0xFFC0) +#endif + + /* Anti-Rollback Counter Configuration Setting for Non-secure Application Register */ +#ifndef BSP_CFG_ROM_REG_ARCCS +#define BSP_CFG_ROM_REG_ARCCS (RA_NOT_DEFINED | 0xFFFC) +#endif + + /* Anti-Rollback Counter for Secure Application 0 Register */ +#ifndef BSP_CFG_ROM_REG_ARC_SEC0 +#define BSP_CFG_ROM_REG_ARC_SEC0 (0U) +#endif + + /* Anti-Rollback Counter for Secure Application 1 Register */ +#ifndef BSP_CFG_ROM_REG_ARC_SEC1 +#define BSP_CFG_ROM_REG_ARC_SEC1 (0U) +#endif + + /* Anti-Rollback Counter for Non-secure Application 0 Register */ +#ifndef BSP_CFG_ROM_REG_ARC_NSEC0 +#define BSP_CFG_ROM_REG_ARC_NSEC0 (0U) +#endif + + /* Anti-Rollback Counter for Non-secure Application 1 Register */ +#ifndef BSP_CFG_ROM_REG_ARC_NSEC1 +#define BSP_CFG_ROM_REG_ARC_NSEC1 (0U) +#endif + + /* Anti-Rollback Counter for Non-secure Application 2 Register */ +#ifndef BSP_CFG_ROM_REG_ARC_NSEC2 +#define BSP_CFG_ROM_REG_ARC_NSEC2 (0U) +#endif + + /* Anti-Rollback Counter for Non-secure Application 3 Register */ +#ifndef BSP_CFG_ROM_REG_ARC_NSEC3 +#define BSP_CFG_ROM_REG_ARC_NSEC3 (0U) +#endif + + /* Anti-Rollback Counter for Non-secure Application 4 Register */ +#ifndef BSP_CFG_ROM_REG_ARC_NSEC4 +#define BSP_CFG_ROM_REG_ARC_NSEC4 (0U) +#endif + + /* Anti-Rollback Counter for Non-secure Application 5 Register */ +#ifndef BSP_CFG_ROM_REG_ARC_NSEC5 +#define BSP_CFG_ROM_REG_ARC_NSEC5 (0U) +#endif + + /* Anti-Rollback Counter for Non-secure Application 6 Register */ +#ifndef BSP_CFG_ROM_REG_ARC_NSEC6 +#define BSP_CFG_ROM_REG_ARC_NSEC6 (0U) +#endif + + /* Anti-Rollback Counter for Non-secure Application 7 Register */ +#ifndef BSP_CFG_ROM_REG_ARC_NSEC7 +#define BSP_CFG_ROM_REG_ARC_NSEC7 (0U) +#endif + + /* Anti-Rollback Counter for OEMBL 0 Register */ +#ifndef BSP_CFG_ROM_REG_ARC_OEMBL0 +#define BSP_CFG_ROM_REG_ARC_OEMBL0 (0U) +#endif + + /* Anti-Rollback Counter for OEMBL 1 Register */ +#ifndef BSP_CFG_ROM_REG_ARC_OEMBL1 +#define BSP_CFG_ROM_REG_ARC_OEMBL1 (0U) +#endif + +#ifndef BSP_CFG_DCACHE_ENABLED +#define BSP_CFG_DCACHE_ENABLED (0) +#endif +#endif /* BSP_MCU_FAMILY_CFG_H_ */ diff --git a/bsp/renesas/ra8m1-ek/ra_cfg/fsp_cfg/bsp/bsp_pin_cfg.h b/bsp/renesas/ra8m1-ek/ra_cfg/fsp_cfg/bsp/bsp_pin_cfg.h new file mode 100644 index 000000000000..4e941fb8f8f9 --- /dev/null +++ b/bsp/renesas/ra8m1-ek/ra_cfg/fsp_cfg/bsp/bsp_pin_cfg.h @@ -0,0 +1,131 @@ +/* generated configuration header file - do not edit */ +#ifndef BSP_PIN_CFG_H_ +#define BSP_PIN_CFG_H_ +#if __has_include("r_ioport.h") +#include "r_ioport.h" +#elif __has_include("r_ioport_b.h") +#include "r_ioport_b.h" +#endif + +/* Common macro for FSP header files. There is also a corresponding FSP_FOOTER macro at the end of this file. */ +FSP_HEADER + +#define ENET_RMII_INT (BSP_IO_PORT_00_PIN_00) +#define ARDUINO_A3 (BSP_IO_PORT_00_PIN_01) +#define GROVE2_AN102 (BSP_IO_PORT_00_PIN_02) +#define ARDUINO_A1 (BSP_IO_PORT_00_PIN_03) +#define ARDUINO_A0_MIKROBUS_AN000 (BSP_IO_PORT_00_PIN_04) +#define GROVE2_AN001 (BSP_IO_PORT_00_PIN_05) +#define PMOD1_IRQ11 (BSP_IO_PORT_00_PIN_06) +#define ARDUINO_A004 (BSP_IO_PORT_00_PIN_07) +#define USER_S2 (BSP_IO_PORT_00_PIN_08) +#define USER_S1 (BSP_IO_PORT_00_PIN_09) +#define MIKROBUS_IRQ14 (BSP_IO_PORT_00_PIN_10) +#define ARDUINO_A4 (BSP_IO_PORT_00_PIN_14) +#define ARDUINO_A5 (BSP_IO_PORT_00_PIN_15) +#define OSPI_DQ0 (BSP_IO_PORT_01_PIN_00) +#define OSPI_DQ3 (BSP_IO_PORT_01_PIN_01) +#define OSPI_DQ4 (BSP_IO_PORT_01_PIN_02) +#define OSPI_DQ2 (BSP_IO_PORT_01_PIN_03) +#define OSPI_CS (BSP_IO_PORT_01_PIN_04) +#define OSPI_INT (BSP_IO_PORT_01_PIN_05) +#define OSPI_RESET (BSP_IO_PORT_01_PIN_06) +#define LED3 (BSP_IO_PORT_01_PIN_07) +#define ETH_A_RMII_RMII_RXDV (BSP_IO_PORT_01_PIN_12) +#define ETH_A_LINKSTA (BSP_IO_PORT_01_PIN_14) +#define MPLX_CTRL (BSP_IO_PORT_01_PIN_15) +#define NMI (BSP_IO_PORT_02_PIN_00) +#define MD (BSP_IO_PORT_02_PIN_01) +#define CAN_STB (BSP_IO_PORT_02_PIN_07) +#define TDI (BSP_IO_PORT_02_PIN_08) +#define TDO (BSP_IO_PORT_02_PIN_09) +#define SWDIO (BSP_IO_PORT_02_PIN_10) +#define SWCLK (BSP_IO_PORT_02_PIN_11) +#define EXTAL (BSP_IO_PORT_02_PIN_12) +#define XTAL (BSP_IO_PORT_02_PIN_13) +#define ETH_A_RXER (BSP_IO_PORT_03_PIN_00) +#define ETH_A_RXD1 (BSP_IO_PORT_03_PIN_01) +#define ETH_A_RXD0 (BSP_IO_PORT_03_PIN_02) +#define ETH_A_REFCLK (BSP_IO_PORT_03_PIN_03) +#define ETH_A_TXD0 (BSP_IO_PORT_03_PIN_04) +#define ETH_A_TXD1 (BSP_IO_PORT_03_PIN_05) +#define ETH_A_TXEN (BSP_IO_PORT_03_PIN_06) +#define ETH_A_MDIO (BSP_IO_PORT_03_PIN_07) +#define ETH_A_MDC (BSP_IO_PORT_03_PIN_08) +#define ARDUINO_D0_MIKROBUS_RXD3 (BSP_IO_PORT_03_PIN_09) +#define ARDUINO_D1_MIKROBUS_TXD3 (BSP_IO_PORT_03_PIN_10) +#define CAN_RXD (BSP_IO_PORT_03_PIN_11) +#define CAN_TXD (BSP_IO_PORT_03_PIN_12) +#define I3C_SCL0_ARDUINO_MIKROBUS_PMOD1_3_qwiic (BSP_IO_PORT_04_PIN_00) +#define I3C_SDA0_ARDUINO_MIKROBUS_PMOD1_4_qwiic (BSP_IO_PORT_04_PIN_01) +#define ETH_B_MDIO (BSP_IO_PORT_04_PIN_02) +#define ETH_B_LINKSTA (BSP_IO_PORT_04_PIN_03) +#define ETH_B_RST_N (BSP_IO_PORT_04_PIN_04) +#define ETH_B_TXEN (BSP_IO_PORT_04_PIN_05) +#define ETH_B_TXD1 (BSP_IO_PORT_04_PIN_06) +#define USBFS_VBUS (BSP_IO_PORT_04_PIN_07) +#define USBHS_VBUSEN (BSP_IO_PORT_04_PIN_08) +#define USBHS_OVRCURA (BSP_IO_PORT_04_PIN_09) +#define MISOB_B_ARDUINO_MIKROBUS (BSP_IO_PORT_04_PIN_10) +#define MOSIB_B_ARDUINO_MIKROBUS (BSP_IO_PORT_04_PIN_11) +#define RSPCKB_B_ARDUINO_MIKROBUS (BSP_IO_PORT_04_PIN_12) +#define SSLB0_B_ARDUINO_D10_MIKROBUS (BSP_IO_PORT_04_PIN_13) +#define LED2 (BSP_IO_PORT_04_PIN_14) +#define USBFS_VBUS_EN (BSP_IO_PORT_05_PIN_00) +#define USBFS_OVERCURA (BSP_IO_PORT_05_PIN_01) +#define MIKROBUS_RESET (BSP_IO_PORT_05_PIN_02) +#define PMOD2_7_IRQ1 (BSP_IO_PORT_05_PIN_08) +#define GROVE2_IIC_SDA1 (BSP_IO_PORT_05_PIN_11) +#define GROVE2_IIC_SCL1 (BSP_IO_PORT_05_PIN_12) +#define LED1 (BSP_IO_PORT_06_PIN_00) +#define ARDUINO_D5 (BSP_IO_PORT_06_PIN_01) +#define ARDUINO_D6 (BSP_IO_PORT_06_PIN_02) +#define ARDUINO_D9 (BSP_IO_PORT_06_PIN_03) +#define PMOD1_3_MISO0_RXD0_SCL0 (BSP_IO_PORT_06_PIN_09) +#define PMOD1_2_MOSI0_TXD0 (BSP_IO_PORT_06_PIN_10) +#define PMOD1_4_SCK0 (BSP_IO_PORT_06_PIN_11) +#define PMOD1_1_SSL0_CTS_RTS (BSP_IO_PORT_06_PIN_12) +#define PMOD1_1_CTS0 (BSP_IO_PORT_06_PIN_13) +#define PMOD1_9_GPIO (BSP_IO_PORT_06_PIN_14) +#define PMOD1_10_GPIO (BSP_IO_PORT_06_PIN_15) +#define ETH_B_TXD0 (BSP_IO_PORT_07_PIN_00) +#define ETH_B_REFCLK (BSP_IO_PORT_07_PIN_01) +#define ETH_B_RXD0 (BSP_IO_PORT_07_PIN_02) +#define ETH_B_RXD1 (BSP_IO_PORT_07_PIN_03) +#define ETH_B_RXER (BSP_IO_PORT_07_PIN_04) +#define ETH_B_RMII_RXDV (BSP_IO_PORT_07_PIN_05) +#define I3C_SDA0_PULLUP (BSP_IO_PORT_07_PIN_11) +#define OSPI_DQ5 (BSP_IO_PORT_08_PIN_00) +#define OSPI_DS (BSP_IO_PORT_08_PIN_01) +#define OSPI_DQ6 (BSP_IO_PORT_08_PIN_02) +#define OSPI_DQ1 (BSP_IO_PORT_08_PIN_03) +#define OSPI_DQ7 (BSP_IO_PORT_08_PIN_04) +#define OSPI_CK (BSP_IO_PORT_08_PIN_08) +#define PMOD2_8_RESET (BSP_IO_PORT_08_PIN_09) +#define PMOD2_9_GPIO (BSP_IO_PORT_08_PIN_10) +#define PMOD2_10_GPIO (BSP_IO_PORT_08_PIN_11) +#define ARDUINO_RESET (BSP_IO_PORT_08_PIN_12) +#define USBFS_P (BSP_IO_PORT_08_PIN_14) +#define USBFS_N (BSP_IO_PORT_08_PIN_15) +#define ARDUINO_D4 (BSP_IO_PORT_09_PIN_05) +#define ARDUINO_D2 (BSP_IO_PORT_09_PIN_06) +#define ARDUINO_D3_MIKROBUS_GTIOC13A (BSP_IO_PORT_09_PIN_07) +#define ARDUINO_D7 (BSP_IO_PORT_09_PIN_08) +#define ARDUINO_D8 (BSP_IO_PORT_09_PIN_09) +#define PMOD2_3_MISO2_RXD2 (BSP_IO_PORT_10_PIN_02) +#define PMOD2_2_MOSI2_TXD2 (BSP_IO_PORT_10_PIN_03) +#define PMOD2_4_SCK2 (BSP_IO_PORT_10_PIN_04) +#define PMOD2_1_CTS_RTS_SSL2 (BSP_IO_PORT_10_PIN_05) +#define PMOD2_1_CTS2 (BSP_IO_PORT_10_PIN_06) +#define PMOD1_8_RESET (BSP_IO_PORT_10_PIN_08) +#define JLOB_COMS_TX (BSP_IO_PORT_10_PIN_14) +#define JLOB_COMS_RX (BSP_IO_PORT_10_PIN_15) +#define I3C_SCL0_PULLUP (BSP_IO_PORT_11_PIN_00) +#define USBHS_VBUS (BSP_IO_PORT_11_PIN_01) +extern const ioport_cfg_t g_bsp_pin_cfg; /* RA8M1 EK */ + +void BSP_PinConfigSecurityInit(); + +/* Common macro for FSP header files. There is also a corresponding FSP_HEADER macro at the top of this file. */ +FSP_FOOTER +#endif /* BSP_PIN_CFG_H_ */ diff --git a/bsp/renesas/ra8m1-ek/ra_cfg/fsp_cfg/r_ioport_cfg.h b/bsp/renesas/ra8m1-ek/ra_cfg/fsp_cfg/r_ioport_cfg.h new file mode 100644 index 000000000000..d2688bf5ba39 --- /dev/null +++ b/bsp/renesas/ra8m1-ek/ra_cfg/fsp_cfg/r_ioport_cfg.h @@ -0,0 +1,13 @@ +/* generated configuration header file - do not edit */ +#ifndef R_IOPORT_CFG_H_ +#define R_IOPORT_CFG_H_ +#ifdef __cplusplus +extern "C" { +#endif + +#define IOPORT_CFG_PARAM_CHECKING_ENABLE (BSP_CFG_PARAM_CHECKING_ENABLE) + +#ifdef __cplusplus +} +#endif +#endif /* R_IOPORT_CFG_H_ */ diff --git a/bsp/renesas/ra8m1-ek/ra_cfg/fsp_cfg/r_sci_b_uart_cfg.h b/bsp/renesas/ra8m1-ek/ra_cfg/fsp_cfg/r_sci_b_uart_cfg.h new file mode 100644 index 000000000000..d7a9235fcc4d --- /dev/null +++ b/bsp/renesas/ra8m1-ek/ra_cfg/fsp_cfg/r_sci_b_uart_cfg.h @@ -0,0 +1,16 @@ +/* generated configuration header file - do not edit */ +#ifndef R_SCI_B_UART_CFG_H_ +#define R_SCI_B_UART_CFG_H_ +#ifdef __cplusplus + extern "C" { + #endif + + #define SCI_B_UART_CFG_PARAM_CHECKING_ENABLE (BSP_CFG_PARAM_CHECKING_ENABLE) + #define SCI_B_UART_CFG_FIFO_SUPPORT (1) + #define SCI_B_UART_CFG_DTC_SUPPORTED (0) + #define SCI_B_UART_CFG_FLOW_CONTROL_SUPPORT (0) + + #ifdef __cplusplus + } + #endif +#endif /* R_SCI_B_UART_CFG_H_ */ diff --git a/bsp/renesas/ra8m1-ek/ra_gen/SConscript b/bsp/renesas/ra8m1-ek/ra_gen/SConscript new file mode 100644 index 000000000000..6a52bcd61564 --- /dev/null +++ b/bsp/renesas/ra8m1-ek/ra_gen/SConscript @@ -0,0 +1,20 @@ +Import('RTT_ROOT') +Import('rtconfig') +from building import * +from gcc import * + +cwd = GetCurrentDir() +src = [] +group = [] +CPPPATH = [] + +if rtconfig.PLATFORM in ['iccarm']: + print("\nThe current project does not support IAR build\n") + Return('group') +elif rtconfig.PLATFORM in GetGCCLikePLATFORM(): + if GetOption('target') != 'mdk5': + src = Glob('*.c') + CPPPATH = [cwd, ] + +group = DefineGroup('ra_gen', src, depend = [''], CPPPATH = CPPPATH) +Return('group') diff --git a/bsp/renesas/ra8m1-ek/ra_gen/bsp_clock_cfg.h b/bsp/renesas/ra8m1-ek/ra_gen/bsp_clock_cfg.h new file mode 100644 index 000000000000..072d192b5976 --- /dev/null +++ b/bsp/renesas/ra8m1-ek/ra_gen/bsp_clock_cfg.h @@ -0,0 +1,56 @@ +/* generated configuration header file - do not edit */ +#ifndef BSP_CLOCK_CFG_H_ +#define BSP_CLOCK_CFG_H_ +#define BSP_CFG_CLOCKS_SECURE (0) +#define BSP_CFG_CLOCKS_OVERRIDE (0) +#define BSP_CFG_XTAL_HZ (20000000) /* XTAL 20000000Hz */ +#define BSP_CFG_HOCO_FREQUENCY (7) /* HOCO 48MHz */ +#define BSP_CFG_PLL_SOURCE (BSP_CLOCKS_SOURCE_CLOCK_MAIN_OSC) /* PLL Src: XTAL */ +#define BSP_CFG_PLL_DIV (BSP_CLOCKS_PLL_DIV_1) /* PLL Div /1 */ +#define BSP_CFG_PLL_MUL BSP_CLOCKS_PLL_MUL(48,0) /* PLL Mul x40-59|Mul x48|PLL Mul x48.00 */ +#define BSP_CFG_PLL_FREQUENCY_HZ (960000000) /* PLL 960000000Hz */ +#define BSP_CFG_PLODIVP (BSP_CLOCKS_PLL_DIV_2) /* PLL1P Div /2 */ +#define BSP_CFG_PLL1P_FREQUENCY_HZ (480000000) /* PLL1P 480000000Hz */ +#define BSP_CFG_PLODIVQ (BSP_CLOCKS_PLL_DIV_2) /* PLL1Q Div /2 */ +#define BSP_CFG_PLL1Q_FREQUENCY_HZ (480000000) /* PLL1Q 480000000Hz */ +#define BSP_CFG_PLODIVR (BSP_CLOCKS_PLL_DIV_2) /* PLL1R Div /2 */ +#define BSP_CFG_PLL1R_FREQUENCY_HZ (480000000) /* PLL1R 480000000Hz */ +#define BSP_CFG_PLL2_SOURCE (BSP_CLOCKS_CLOCK_DISABLED) /* PLL2 Disabled */ +#define BSP_CFG_PLL2_DIV (BSP_CLOCKS_PLL_DIV_1) /* PLL2 Div /1 */ +#define BSP_CFG_PLL2_MUL BSP_CLOCKS_PLL_MUL(48,0) /* PLL2 Mul x40-59|Mul x48|PLL2 Mul x48.00 */ +#define BSP_CFG_PLL2_FREQUENCY_HZ (0) /* PLL2 0Hz */ +#define BSP_CFG_PL2ODIVP (BSP_CLOCKS_PLL_DIV_2) /* PLL2P Div /2 */ +#define BSP_CFG_PLL2P_FREQUENCY_HZ (0) /* PLL2P 0Hz */ +#define BSP_CFG_PL2ODIVQ (BSP_CLOCKS_PLL_DIV_2) /* PLL2Q Div /2 */ +#define BSP_CFG_PLL2Q_FREQUENCY_HZ (0) /* PLL2Q 0Hz */ +#define BSP_CFG_PL2ODIVR (BSP_CLOCKS_PLL_DIV_2) /* PLL2R Div /2 */ +#define BSP_CFG_PLL2R_FREQUENCY_HZ (0) /* PLL2R 0Hz */ +#define BSP_CFG_CLOCK_SOURCE (BSP_CLOCKS_SOURCE_CLOCK_PLL1P) /* Clock Src: PLL1P */ +#define BSP_CFG_CLKOUT_SOURCE (BSP_CLOCKS_CLOCK_DISABLED) /* CLKOUT Disabled */ +#define BSP_CFG_SCICLK_SOURCE (BSP_CLOCKS_SOURCE_CLOCK_PLL1P) /* SCICLK Src: PLL1P */ +#define BSP_CFG_SPICLK_SOURCE (BSP_CLOCKS_CLOCK_DISABLED) /* SPICLK Disabled */ +#define BSP_CFG_CANFDCLK_SOURCE (BSP_CLOCKS_CLOCK_DISABLED) /* CANFDCLK Disabled */ +#define BSP_CFG_I3CCLK_SOURCE (BSP_CLOCKS_CLOCK_DISABLED) /* I3CCLK Disabled */ +#define BSP_CFG_UCK_SOURCE (BSP_CLOCKS_CLOCK_DISABLED) /* UCK Disabled */ +#define BSP_CFG_U60CK_SOURCE (BSP_CLOCKS_CLOCK_DISABLED) /* U60CK Disabled */ +#define BSP_CFG_OCTA_SOURCE (BSP_CLOCKS_CLOCK_DISABLED) /* OCTASPICLK Disabled */ +#define BSP_CFG_CPUCLK_DIV (BSP_CLOCKS_SYS_CLOCK_DIV_1) /* CPUCLK Div /1 */ +#define BSP_CFG_ICLK_DIV (BSP_CLOCKS_SYS_CLOCK_DIV_2) /* ICLK Div /2 */ +#define BSP_CFG_PCLKA_DIV (BSP_CLOCKS_SYS_CLOCK_DIV_4) /* PCLKA Div /4 */ +#define BSP_CFG_PCLKB_DIV (BSP_CLOCKS_SYS_CLOCK_DIV_8) /* PCLKB Div /8 */ +#define BSP_CFG_PCLKC_DIV (BSP_CLOCKS_SYS_CLOCK_DIV_8) /* PCLKC Div /8 */ +#define BSP_CFG_PCLKD_DIV (BSP_CLOCKS_SYS_CLOCK_DIV_4) /* PCLKD Div /4 */ +#define BSP_CFG_PCLKE_DIV (BSP_CLOCKS_SYS_CLOCK_DIV_2) /* PCLKE Div /2 */ +#define BSP_CFG_SDCLK_OUTPUT (1) /* SDCLK Enabled */ +#define BSP_CFG_BCLK_DIV (BSP_CLOCKS_SYS_CLOCK_DIV_4) /* BCLK Div /4 */ +#define BSP_CFG_BCLK_OUTPUT (2) /* EBCLK Div /2 */ +#define BSP_CFG_FCLK_DIV (BSP_CLOCKS_SYS_CLOCK_DIV_8) /* FCLK Div /8 */ +#define BSP_CFG_CLKOUT_DIV (BSP_CLOCKS_SYS_CLOCK_DIV_1) /* CLKOUT Div /1 */ +#define BSP_CFG_SCICLK_DIV (BSP_CLOCKS_SCI_CLOCK_DIV_4) /* SCICLK Div /4 */ +#define BSP_CFG_SPICLK_DIV (BSP_CLOCKS_SPI_CLOCK_DIV_4) /* SPICLK Div /4 */ +#define BSP_CFG_CANFDCLK_DIV (BSP_CLOCKS_CANFD_CLOCK_DIV_8) /* CANFDCLK Div /8 */ +#define BSP_CFG_I3CCLK_DIV (BSP_CLOCKS_I3C_CLOCK_DIV_3) /* I3CCLK Div /3 */ +#define BSP_CFG_UCK_DIV (BSP_CLOCKS_USB_CLOCK_DIV_5) /* UCK Div /5 */ +#define BSP_CFG_U60CK_DIV (BSP_CLOCKS_USB_CLOCK_DIV_5) /* U60CK Div /5 */ +#define BSP_CFG_OCTA_DIV (BSP_CLOCKS_OCTA_CLOCK_DIV_4) /* OCTASPICLK Div /4 */ +#endif /* BSP_CLOCK_CFG_H_ */ diff --git a/bsp/renesas/ra8m1-ek/ra_gen/common_data.c b/bsp/renesas/ra8m1-ek/ra_gen/common_data.c new file mode 100644 index 000000000000..50036c0adcb6 --- /dev/null +++ b/bsp/renesas/ra8m1-ek/ra_gen/common_data.c @@ -0,0 +1,11 @@ +/* generated common source file - do not edit */ +#include "common_data.h" +ioport_instance_ctrl_t g_ioport_ctrl; +const ioport_instance_t g_ioport = + { + .p_api = &g_ioport_on_ioport, + .p_ctrl = &g_ioport_ctrl, + .p_cfg = &g_bsp_pin_cfg, + }; +void g_common_init(void) { +} diff --git a/bsp/renesas/ra8m1-ek/ra_gen/common_data.h b/bsp/renesas/ra8m1-ek/ra_gen/common_data.h new file mode 100644 index 000000000000..6a08cbee0956 --- /dev/null +++ b/bsp/renesas/ra8m1-ek/ra_gen/common_data.h @@ -0,0 +1,20 @@ +/* generated common header file - do not edit */ +#ifndef COMMON_DATA_H_ +#define COMMON_DATA_H_ +#include +#include "bsp_api.h" +#include "r_ioport.h" +#include "bsp_pin_cfg.h" +FSP_HEADER +#define IOPORT_CFG_NAME g_bsp_pin_cfg +#define IOPORT_CFG_OPEN R_IOPORT_Open +#define IOPORT_CFG_CTRL g_ioport_ctrl + +/* IOPORT Instance */ +extern const ioport_instance_t g_ioport; + +/* IOPORT control structure. */ +extern ioport_instance_ctrl_t g_ioport_ctrl; +void g_common_init(void); +FSP_FOOTER +#endif /* COMMON_DATA_H_ */ diff --git a/bsp/renesas/ra8m1-ek/ra_gen/hal_data.c b/bsp/renesas/ra8m1-ek/ra_gen/hal_data.c new file mode 100644 index 000000000000..ba385e77aac9 --- /dev/null +++ b/bsp/renesas/ra8m1-ek/ra_gen/hal_data.c @@ -0,0 +1,89 @@ +/* generated HAL source file - do not edit */ +#include "hal_data.h" +sci_b_uart_instance_ctrl_t g_uart9_ctrl; + + sci_b_baud_setting_t g_uart9_baud_setting = + { + /* Baud rate calculated with 0.160% error. */ .baudrate_bits_b.abcse = 0, .baudrate_bits_b.abcs = 0, .baudrate_bits_b.bgdm = 1, .baudrate_bits_b.cks = 0, .baudrate_bits_b.brr = 64, .baudrate_bits_b.mddr = (uint8_t) 256, .baudrate_bits_b.brme = false + }; + + /** UART extended configuration for UARTonSCI HAL driver */ + const sci_b_uart_extended_cfg_t g_uart9_cfg_extend = + { + .clock = SCI_B_UART_CLOCK_INT, + .rx_edge_start = SCI_B_UART_START_BIT_FALLING_EDGE, + .noise_cancel = SCI_B_UART_NOISE_CANCELLATION_DISABLE, + .rx_fifo_trigger = SCI_B_UART_RX_FIFO_TRIGGER_MAX, + .p_baud_setting = &g_uart9_baud_setting, + .flow_control = SCI_B_UART_FLOW_CONTROL_RTS, + #if 0xFF != 0xFF + .flow_control_pin = BSP_IO_PORT_FF_PIN_0xFF, + #else + .flow_control_pin = (bsp_io_port_pin_t) UINT16_MAX, + #endif + .rs485_setting = { + .enable = SCI_B_UART_RS485_DISABLE, + .polarity = SCI_B_UART_RS485_DE_POLARITY_HIGH, + .assertion_time = 1, + .negation_time = 1, + } + }; + + /** UART interface configuration */ + const uart_cfg_t g_uart9_cfg = + { + .channel = 9, + .data_bits = UART_DATA_BITS_8, + .parity = UART_PARITY_OFF, + .stop_bits = UART_STOP_BITS_1, + .p_callback = user_uart9_callback, + .p_context = NULL, + .p_extend = &g_uart9_cfg_extend, +#define RA_NOT_DEFINED (1) +#if (RA_NOT_DEFINED == RA_NOT_DEFINED) + .p_transfer_tx = NULL, +#else + .p_transfer_tx = &RA_NOT_DEFINED, +#endif +#if (RA_NOT_DEFINED == RA_NOT_DEFINED) + .p_transfer_rx = NULL, +#else + .p_transfer_rx = &RA_NOT_DEFINED, +#endif +#undef RA_NOT_DEFINED + .rxi_ipl = (12), + .txi_ipl = (12), + .tei_ipl = (12), + .eri_ipl = (12), +#if defined(VECTOR_NUMBER_SCI9_RXI) + .rxi_irq = VECTOR_NUMBER_SCI9_RXI, +#else + .rxi_irq = FSP_INVALID_VECTOR, +#endif +#if defined(VECTOR_NUMBER_SCI9_TXI) + .txi_irq = VECTOR_NUMBER_SCI9_TXI, +#else + .txi_irq = FSP_INVALID_VECTOR, +#endif +#if defined(VECTOR_NUMBER_SCI9_TEI) + .tei_irq = VECTOR_NUMBER_SCI9_TEI, +#else + .tei_irq = FSP_INVALID_VECTOR, +#endif +#if defined(VECTOR_NUMBER_SCI9_ERI) + .eri_irq = VECTOR_NUMBER_SCI9_ERI, +#else + .eri_irq = FSP_INVALID_VECTOR, +#endif + }; + +/* Instance structure to use this module. */ +const uart_instance_t g_uart9 = +{ + .p_ctrl = &g_uart9_ctrl, + .p_cfg = &g_uart9_cfg, + .p_api = &g_uart_on_sci_b +}; +void g_hal_init(void) { +g_common_init(); +} diff --git a/bsp/renesas/ra8m1-ek/ra_gen/hal_data.h b/bsp/renesas/ra8m1-ek/ra_gen/hal_data.h new file mode 100644 index 000000000000..c1913153ae58 --- /dev/null +++ b/bsp/renesas/ra8m1-ek/ra_gen/hal_data.h @@ -0,0 +1,24 @@ +/* generated HAL header file - do not edit */ +#ifndef HAL_DATA_H_ +#define HAL_DATA_H_ +#include +#include "bsp_api.h" +#include "common_data.h" +#include "r_sci_b_uart.h" + #include "r_uart_api.h" +FSP_HEADER +/** UART on SCI Instance. */ + extern const uart_instance_t g_uart9; + + /** Access the UART instance using these structures when calling API functions directly (::p_api is not used). */ + extern sci_b_uart_instance_ctrl_t g_uart9_ctrl; + extern const uart_cfg_t g_uart9_cfg; + extern const sci_b_uart_extended_cfg_t g_uart9_cfg_extend; + + #ifndef user_uart9_callback + void user_uart9_callback(uart_callback_args_t * p_args); + #endif +void hal_entry(void); +void g_hal_init(void); +FSP_FOOTER +#endif /* HAL_DATA_H_ */ diff --git a/bsp/renesas/ra8m1-ek/ra_gen/main.c b/bsp/renesas/ra8m1-ek/ra_gen/main.c new file mode 100644 index 000000000000..42c5904834c9 --- /dev/null +++ b/bsp/renesas/ra8m1-ek/ra_gen/main.c @@ -0,0 +1,6 @@ +/* generated main source file - do not edit */ +#include "hal_data.h" + int main(void) { + hal_entry(); + return 0; + } diff --git a/bsp/renesas/ra8m1-ek/ra_gen/pin_data.c b/bsp/renesas/ra8m1-ek/ra_gen/pin_data.c new file mode 100644 index 000000000000..2f5b46f8a863 --- /dev/null +++ b/bsp/renesas/ra8m1-ek/ra_gen/pin_data.c @@ -0,0 +1,308 @@ +/* generated pin source file - do not edit */ +#include "bsp_api.h" +#if __has_include("r_ioport.h") +#include "r_ioport.h" +#elif __has_include("r_ioport_b.h") +#include "r_ioport_b.h" +#endif + +const ioport_pin_cfg_t g_bsp_pin_cfg_data[] = { + { + .pin = BSP_IO_PORT_00_PIN_00, + .pin_cfg = ((uint32_t) IOPORT_CFG_PORT_DIRECTION_INPUT) + }, + { + .pin = BSP_IO_PORT_00_PIN_02, + .pin_cfg = ((uint32_t) IOPORT_CFG_ANALOG_ENABLE) + }, + { + .pin = BSP_IO_PORT_00_PIN_03, + .pin_cfg = ((uint32_t) IOPORT_CFG_ANALOG_ENABLE) + }, + { + .pin = BSP_IO_PORT_00_PIN_04, + .pin_cfg = ((uint32_t) IOPORT_CFG_ANALOG_ENABLE) + }, + { + .pin = BSP_IO_PORT_00_PIN_05, + .pin_cfg = ((uint32_t) IOPORT_CFG_ANALOG_ENABLE) + }, + { + .pin = BSP_IO_PORT_00_PIN_07, + .pin_cfg = ((uint32_t) IOPORT_CFG_ANALOG_ENABLE) + }, + { + .pin = BSP_IO_PORT_00_PIN_08, + .pin_cfg = ((uint32_t) IOPORT_CFG_IRQ_ENABLE | (uint32_t) IOPORT_CFG_PORT_DIRECTION_INPUT) + }, + { + .pin = BSP_IO_PORT_00_PIN_09, + .pin_cfg = ((uint32_t) IOPORT_CFG_IRQ_ENABLE | (uint32_t) IOPORT_CFG_PORT_DIRECTION_INPUT) + }, + { + .pin = BSP_IO_PORT_00_PIN_11, + .pin_cfg = ((uint32_t) IOPORT_CFG_ANALOG_ENABLE) + }, + { + .pin = BSP_IO_PORT_00_PIN_14, + .pin_cfg = ((uint32_t) IOPORT_CFG_ANALOG_ENABLE) + }, + { + .pin = BSP_IO_PORT_00_PIN_15, + .pin_cfg = ((uint32_t) IOPORT_CFG_ANALOG_ENABLE) + }, + { + .pin = BSP_IO_PORT_01_PIN_00, + .pin_cfg = ((uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_OSPI) + }, + { + .pin = BSP_IO_PORT_01_PIN_01, + .pin_cfg = ((uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_OSPI) + }, + { + .pin = BSP_IO_PORT_01_PIN_02, + .pin_cfg = ((uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_OSPI) + }, + { + .pin = BSP_IO_PORT_01_PIN_03, + .pin_cfg = ((uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_OSPI) + }, + { + .pin = BSP_IO_PORT_01_PIN_04, + .pin_cfg = ((uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_OSPI) + }, + { + .pin = BSP_IO_PORT_01_PIN_05, + .pin_cfg = ((uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_OSPI) + }, + { + .pin = BSP_IO_PORT_01_PIN_06, + .pin_cfg = ((uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_OSPI) + }, + { + .pin = BSP_IO_PORT_01_PIN_07, + .pin_cfg = ((uint32_t) IOPORT_CFG_PORT_DIRECTION_OUTPUT | (uint32_t) IOPORT_CFG_PORT_OUTPUT_LOW) + }, + { + .pin = BSP_IO_PORT_01_PIN_12, + .pin_cfg = ((uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_ETHER_RMII) + }, + { + .pin = BSP_IO_PORT_01_PIN_14, + .pin_cfg = ((uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_ETHER_RMII) + }, + { + .pin = BSP_IO_PORT_02_PIN_08, + .pin_cfg = ((uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_DEBUG) + }, + { + .pin = BSP_IO_PORT_02_PIN_09, + .pin_cfg = ((uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_DEBUG) + }, + { + .pin = BSP_IO_PORT_02_PIN_10, + .pin_cfg = ((uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_DEBUG) + }, + { + .pin = BSP_IO_PORT_02_PIN_11, + .pin_cfg = ((uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_DEBUG) + }, + { + .pin = BSP_IO_PORT_03_PIN_00, + .pin_cfg = ((uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_ETHER_RMII) + }, + { + .pin = BSP_IO_PORT_03_PIN_01, + .pin_cfg = ((uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_ETHER_RMII) + }, + { + .pin = BSP_IO_PORT_03_PIN_02, + .pin_cfg = ((uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_ETHER_RMII) + }, + { + .pin = BSP_IO_PORT_03_PIN_03, + .pin_cfg = ((uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_ETHER_RMII) + }, + { + .pin = BSP_IO_PORT_03_PIN_04, + .pin_cfg = ((uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_ETHER_RMII) + }, + { + .pin = BSP_IO_PORT_03_PIN_05, + .pin_cfg = ((uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_ETHER_RMII) + }, + { + .pin = BSP_IO_PORT_03_PIN_06, + .pin_cfg = ((uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_ETHER_RMII) + }, + { + .pin = BSP_IO_PORT_03_PIN_07, + .pin_cfg = ((uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_ETHER_RMII) + }, + { + .pin = BSP_IO_PORT_03_PIN_08, + .pin_cfg = ((uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_ETHER_RMII) + }, + { + .pin = BSP_IO_PORT_04_PIN_07, + .pin_cfg = ((uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_USB_FS) + }, + { + .pin = BSP_IO_PORT_04_PIN_08, + .pin_cfg = ((uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_USB_HS) + }, + { + .pin = BSP_IO_PORT_04_PIN_09, + .pin_cfg = ((uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_USB_HS) + }, + { + .pin = BSP_IO_PORT_04_PIN_10, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_MID | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_SPI) + }, + { + .pin = BSP_IO_PORT_04_PIN_11, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_MID | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_SPI) + }, + { + .pin = BSP_IO_PORT_04_PIN_12, + .pin_cfg = ((uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_SPI) + }, + { + .pin = BSP_IO_PORT_04_PIN_13, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_MID | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_SPI) + }, + { + .pin = BSP_IO_PORT_04_PIN_14, + .pin_cfg = ((uint32_t) IOPORT_CFG_PORT_DIRECTION_OUTPUT | (uint32_t) IOPORT_CFG_PORT_OUTPUT_LOW) + }, + { + .pin = BSP_IO_PORT_05_PIN_00, + .pin_cfg = ((uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_USB_FS) + }, + { + .pin = BSP_IO_PORT_05_PIN_01, + .pin_cfg = ((uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_USB_FS) + }, + { + .pin = BSP_IO_PORT_05_PIN_11, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_MID | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_IIC) + }, + { + .pin = BSP_IO_PORT_05_PIN_12, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_MID | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_IIC) + }, + { + .pin = BSP_IO_PORT_06_PIN_00, + .pin_cfg = ((uint32_t) IOPORT_CFG_PORT_DIRECTION_OUTPUT | (uint32_t) IOPORT_CFG_PORT_OUTPUT_LOW) + }, + { + .pin = BSP_IO_PORT_08_PIN_00, + .pin_cfg = ((uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_OSPI) + }, + { + .pin = BSP_IO_PORT_08_PIN_01, + .pin_cfg = ((uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_OSPI) + }, + { + .pin = BSP_IO_PORT_08_PIN_02, + .pin_cfg = ((uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_OSPI) + }, + { + .pin = BSP_IO_PORT_08_PIN_03, + .pin_cfg = ((uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_OSPI) + }, + { + .pin = BSP_IO_PORT_08_PIN_04, + .pin_cfg = ((uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_OSPI) + }, + { + .pin = BSP_IO_PORT_08_PIN_08, + .pin_cfg = ((uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_OSPI) + }, + { + .pin = BSP_IO_PORT_08_PIN_09, + .pin_cfg = ((uint32_t) IOPORT_CFG_PORT_DIRECTION_OUTPUT | (uint32_t) IOPORT_CFG_PORT_OUTPUT_LOW) + }, + { + .pin = BSP_IO_PORT_08_PIN_14, + .pin_cfg = ((uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_USB_FS) + }, + { + .pin = BSP_IO_PORT_08_PIN_15, + .pin_cfg = ((uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_USB_FS) + }, + { + .pin = BSP_IO_PORT_10_PIN_02, + .pin_cfg = ((uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_SCI0_2_4_6_8) + }, + { + .pin = BSP_IO_PORT_10_PIN_03, + .pin_cfg = ((uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_SCI0_2_4_6_8) + }, + { + .pin = BSP_IO_PORT_10_PIN_04, + .pin_cfg = ((uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_SCI0_2_4_6_8) + }, + { + .pin = BSP_IO_PORT_10_PIN_05, + .pin_cfg = ((uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_SCI0_2_4_6_8) + }, + { + .pin = BSP_IO_PORT_10_PIN_06, + .pin_cfg = ((uint32_t) IOPORT_CFG_PORT_DIRECTION_INPUT) + }, + { + .pin = BSP_IO_PORT_10_PIN_14, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_HIGH | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_SCI1_3_5_7_9) + }, + { + .pin = BSP_IO_PORT_10_PIN_15, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_HIGH | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_SCI1_3_5_7_9) + }, + { + .pin = BSP_IO_PORT_11_PIN_01, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_HIGH | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_USB_HS) + }, +}; + +const ioport_cfg_t g_bsp_pin_cfg = { + .number_of_pins = sizeof(g_bsp_pin_cfg_data)/sizeof(ioport_pin_cfg_t), + .p_pin_cfg_data = &g_bsp_pin_cfg_data[0], +}; + +#if __has_include("r_ioport.h") +#if BSP_TZ_SECURE_BUILD + +void R_BSP_PinCfgSecurityInit(void); + +/* Initialize SAR registers for secure pins. */ +void R_BSP_PinCfgSecurityInit(void) +{ + #if (2U == BSP_FEATURE_IOPORT_VERSION) + uint32_t pmsar[BSP_FEATURE_BSP_NUM_PMSAR]; + #else + uint16_t pmsar[BSP_FEATURE_BSP_NUM_PMSAR]; + #endif + memset(pmsar, 0xFF, BSP_FEATURE_BSP_NUM_PMSAR * sizeof(R_PMISC->PMSAR[0])); + + + for(uint32_t i = 0; i < g_bsp_pin_cfg.number_of_pins; i++) + { + uint32_t port_pin = g_bsp_pin_cfg.p_pin_cfg_data[i].pin; + uint32_t port = port_pin >> 8U; + uint32_t pin = port_pin & 0xFFU; + pmsar[port] &= (uint16_t) ~(1U << pin); + } + + for(uint32_t i = 0; i < BSP_FEATURE_BSP_NUM_PMSAR; i++) + { + #if (2U == BSP_FEATURE_IOPORT_VERSION) + R_PMISC->PMSAR[i].PMSAR = (uint16_t) pmsar[i]; + #else + R_PMISC->PMSAR[i].PMSAR = pmsar[i]; + #endif + } + +} +#endif +#endif diff --git a/bsp/renesas/ra8m1-ek/ra_gen/vector_data.c b/bsp/renesas/ra8m1-ek/ra_gen/vector_data.c new file mode 100644 index 000000000000..ef6bb3661f41 --- /dev/null +++ b/bsp/renesas/ra8m1-ek/ra_gen/vector_data.c @@ -0,0 +1,29 @@ +/* generated vector source file - do not edit */ + #include "bsp_api.h" + /* Do not build these data structures if no interrupts are currently allocated because IAR will have build errors. */ + #if VECTOR_DATA_IRQ_COUNT > 0 + #if __has_include("r_ioport.h") + BSP_DONT_REMOVE const fsp_vector_t g_vector_table[BSP_ICU_VECTOR_MAX_ENTRIES] BSP_PLACE_IN_SECTION(BSP_SECTION_APPLICATION_VECTORS) = + { + [0] = sci_b_uart_rxi_isr, /* SCI9 RXI (Receive data full) */ + [1] = sci_b_uart_txi_isr, /* SCI9 TXI (Transmit data empty) */ + [2] = sci_b_uart_tei_isr, /* SCI9 TEI (Transmit end) */ + [3] = sci_b_uart_eri_isr, /* SCI9 ERI (Receive error) */ + }; + const bsp_interrupt_event_t g_interrupt_event_link_select[BSP_ICU_VECTOR_MAX_ENTRIES] = + { + [0] = BSP_PRV_IELS_ENUM(EVENT_SCI9_RXI), /* SCI9 RXI (Receive data full) */ + [1] = BSP_PRV_IELS_ENUM(EVENT_SCI9_TXI), /* SCI9 TXI (Transmit data empty) */ + [2] = BSP_PRV_IELS_ENUM(EVENT_SCI9_TEI), /* SCI9 TEI (Transmit end) */ + [3] = BSP_PRV_IELS_ENUM(EVENT_SCI9_ERI), /* SCI9 ERI (Receive error) */ + }; + #elif __has_include("r_ioport_b.h") + BSP_DONT_REMOVE const fsp_vector_t g_vector_table[BSP_IRQ_VECTOR_MAX_ENTRIES] BSP_PLACE_IN_SECTION(BSP_SECTION_APPLICATION_VECTORS) = + { + [BSP_PRV_IELS_ENUM(SCI9_RXI)] = sci_b_uart_rxi_isr, /* SCI9 RXI (Receive data full) */ + [BSP_PRV_IELS_ENUM(SCI9_TXI)] = sci_b_uart_txi_isr, /* SCI9 TXI (Transmit data empty) */ + [BSP_PRV_IELS_ENUM(SCI9_TEI)] = sci_b_uart_tei_isr, /* SCI9 TEI (Transmit end) */ + [BSP_PRV_IELS_ENUM(SCI9_ERI)] = sci_b_uart_eri_isr, /* SCI9 ERI (Receive error) */ + }; + #endif + #endif \ No newline at end of file diff --git a/bsp/renesas/ra8m1-ek/ra_gen/vector_data.h b/bsp/renesas/ra8m1-ek/ra_gen/vector_data.h new file mode 100644 index 000000000000..a0bf310e0a1e --- /dev/null +++ b/bsp/renesas/ra8m1-ek/ra_gen/vector_data.h @@ -0,0 +1,32 @@ +/* generated vector header file - do not edit */ + #ifndef VECTOR_DATA_H + #define VECTOR_DATA_H + #ifdef __cplusplus + extern "C" { + #endif + /* Number of interrupts allocated */ + #ifndef VECTOR_DATA_IRQ_COUNT + #define VECTOR_DATA_IRQ_COUNT (4) + #endif + /* ISR prototypes */ + void sci_b_uart_rxi_isr(void); + void sci_b_uart_txi_isr(void); + void sci_b_uart_tei_isr(void); + void sci_b_uart_eri_isr(void); + + #if __has_include("r_ioport.h") + /* Vector table allocations */ + #define VECTOR_NUMBER_SCI9_RXI ((IRQn_Type) 0) /* SCI9 RXI (Receive data full) */ + #define SCI9_RXI_IRQn ((IRQn_Type) 0) /* SCI9 RXI (Receive data full) */ + #define VECTOR_NUMBER_SCI9_TXI ((IRQn_Type) 1) /* SCI9 TXI (Transmit data empty) */ + #define SCI9_TXI_IRQn ((IRQn_Type) 1) /* SCI9 TXI (Transmit data empty) */ + #define VECTOR_NUMBER_SCI9_TEI ((IRQn_Type) 2) /* SCI9 TEI (Transmit end) */ + #define SCI9_TEI_IRQn ((IRQn_Type) 2) /* SCI9 TEI (Transmit end) */ + #define VECTOR_NUMBER_SCI9_ERI ((IRQn_Type) 3) /* SCI9 ERI (Receive error) */ + #define SCI9_ERI_IRQn ((IRQn_Type) 3) /* SCI9 ERI (Receive error) */ + #endif + + #ifdef __cplusplus + } + #endif + #endif /* VECTOR_DATA_H */ \ No newline at end of file diff --git a/bsp/renesas/ra8m1-ek/rasc_version.txt b/bsp/renesas/ra8m1-ek/rasc_version.txt new file mode 100644 index 000000000000..ec86cf81d06c --- /dev/null +++ b/bsp/renesas/ra8m1-ek/rasc_version.txt @@ -0,0 +1,3 @@ +# RASC version and installation file +5.0.0 +C:\Renesas\RA\sc_v2023-10_fsp_v5.0.0\eclipse\rasc.exe diff --git a/bsp/renesas/ra8m1-ek/rtconfig.h b/bsp/renesas/ra8m1-ek/rtconfig.h new file mode 100644 index 000000000000..8807a9c4153b --- /dev/null +++ b/bsp/renesas/ra8m1-ek/rtconfig.h @@ -0,0 +1,259 @@ +#ifndef RT_CONFIG_H__ +#define RT_CONFIG_H__ + +/* Automatically generated file; DO NOT EDIT. */ +/* RT-Thread Configuration */ + +/* RT-Thread Kernel */ + +#define RT_NAME_MAX 8 +#define RT_ALIGN_SIZE 8 +#define RT_THREAD_PRIORITY_32 +#define RT_THREAD_PRIORITY_MAX 32 +#define RT_TICK_PER_SECOND 1000 +#define RT_USING_OVERFLOW_CHECK +#define RT_USING_HOOK +#define RT_HOOK_USING_FUNC_PTR +#define RT_USING_IDLE_HOOK +#define RT_IDLE_HOOK_LIST_SIZE 4 +#define IDLE_THREAD_STACK_SIZE 256 +#define RT_USING_TIMER_SOFT +#define RT_TIMER_THREAD_PRIO 4 +#define RT_TIMER_THREAD_STACK_SIZE 512 + +/* kservice optimization */ + +#define RT_USING_DEBUG +#define RT_DEBUGING_COLOR +#define RT_DEBUGING_CONTEXT +#define RT_DEBUGING_INIT + +/* Inter-Thread communication */ + +#define RT_USING_SEMAPHORE +#define RT_USING_MUTEX +#define RT_USING_EVENT +#define RT_USING_MAILBOX +#define RT_USING_MESSAGEQUEUE + +/* Memory Management */ + +#define RT_USING_SMALL_MEM +#define RT_USING_SMALL_MEM_AS_HEAP +#define RT_USING_HEAP + +/* Kernel Device Object */ + +#define RT_USING_DEVICE +#define RT_USING_CONSOLE +#define RT_CONSOLEBUF_SIZE 128 +#define RT_CONSOLE_DEVICE_NAME "uart9" +#define RT_VER_NUM 0x50100 +#define RT_USING_HW_ATOMIC +#define RT_USING_CPU_FFS +#define ARCH_ARM +#define ARCH_ARM_CORTEX_M +#define ARCH_ARM_CORTEX_M85 + +/* RT-Thread Components */ + +#define RT_USING_COMPONENTS_INIT +#define RT_USING_USER_MAIN +#define RT_MAIN_THREAD_STACK_SIZE 2048 +#define RT_MAIN_THREAD_PRIORITY 10 +#define RT_USING_MSH +#define RT_USING_FINSH +#define FINSH_USING_MSH +#define FINSH_THREAD_NAME "tshell" +#define FINSH_THREAD_PRIORITY 20 +#define FINSH_THREAD_STACK_SIZE 4096 +#define FINSH_USING_HISTORY +#define FINSH_HISTORY_LINES 5 +#define FINSH_USING_SYMTAB +#define FINSH_CMD_SIZE 80 +#define MSH_USING_BUILT_IN_COMMANDS +#define FINSH_USING_DESCRIPTION +#define FINSH_ARG_MAX 10 +#define FINSH_USING_OPTION_COMPLETION + +/* DFS: device virtual file system */ + + +/* Device Drivers */ + +#define RT_USING_DEVICE_IPC +#define RT_UNAMED_PIPE_NUMBER 64 +#define RT_USING_SERIAL +#define RT_USING_SERIAL_V2 +#define RT_SERIAL_USING_DMA +#define RT_USING_PIN + +/* Using USB */ + + +/* C/C++ and POSIX layer */ + +/* ISO-ANSI C layer */ + +/* Timezone and Daylight Saving Time */ + +#define RT_LIBC_USING_LIGHT_TZ_DST +#define RT_LIBC_TZ_DEFAULT_HOUR 8 +#define RT_LIBC_TZ_DEFAULT_MIN 0 +#define RT_LIBC_TZ_DEFAULT_SEC 0 + +/* POSIX (Portable Operating System Interface) layer */ + + +/* Interprocess Communication (IPC) */ + + +/* Socket is in the 'Network' category */ + + +/* Network */ + + +/* Utilities */ + + +/* Memory management */ + + +/* RT-Thread Utestcases */ + + +/* RT-Thread online packages */ + +/* IoT - internet of things */ + + +/* Wi-Fi */ + +/* Marvell WiFi */ + + +/* Wiced WiFi */ + + +/* CYW43012 WiFi */ + + +/* IoT Cloud */ + + +/* security packages */ + + +/* language packages */ + +/* JSON: JavaScript Object Notation, a lightweight data-interchange format */ + + +/* XML: Extensible Markup Language */ + + +/* multimedia packages */ + +/* LVGL: powerful and easy-to-use embedded GUI library */ + + +/* u8g2: a monochrome graphic library */ + + +/* tools packages */ + + +/* system packages */ + +/* enhanced kernel services */ + + +/* acceleration: Assembly language or algorithmic acceleration packages */ + + +/* CMSIS: ARM Cortex-M Microcontroller Software Interface Standard */ + + +/* Micrium: Micrium software products porting for RT-Thread */ + + +/* peripheral libraries and drivers */ + +/* sensors drivers */ + + +/* touch drivers */ + + +/* Kendryte SDK */ + + +/* AI packages */ + + +/* Signal Processing and Control Algorithm Packages */ + + +/* miscellaneous packages */ + +/* project laboratory */ + +/* samples: kernel and components samples */ + + +/* entertainment: terminal games and other interesting software packages */ + + +/* Arduino libraries */ + + +/* Projects and Demos */ + + +/* Sensors */ + + +/* Display */ + + +/* Timing */ + + +/* Data Processing */ + + +/* Data Storage */ + +/* Communication */ + + +/* Device Control */ + + +/* Other */ + + +/* Signal IO */ + + +/* Uncategorized */ + +#define SOC_FAMILY_RENESAS +#define SOC_SERIES_R7FA8M85 + +/* Hardware Drivers Config */ + +#define SOC_R7FA8M1AH + +/* Onboard Peripheral Drivers */ + +/* On-chip Peripheral Drivers */ + +#define BSP_USING_GPIO +#define BSP_USING_UART +#define BSP_USING_UART9 +#define BSP_UART9_RX_BUFSIZE 256 +#define BSP_UART9_TX_BUFSIZE 0 + +#endif diff --git a/bsp/renesas/ra8m1-ek/rtconfig.py b/bsp/renesas/ra8m1-ek/rtconfig.py new file mode 100644 index 000000000000..57fa11b0a064 --- /dev/null +++ b/bsp/renesas/ra8m1-ek/rtconfig.py @@ -0,0 +1,137 @@ +import os +import sys + +# toolchains options +ARCH='arm' +CPU='cortex-m85' +CROSS_TOOL='keil' + +if os.getenv('RTT_CC'): + CROSS_TOOL = os.getenv('RTT_CC') +if os.getenv('RTT_ROOT'): + RTT_ROOT = os.getenv('RTT_ROOT') + +# cross_tool provides the cross compiler +# EXEC_PATH is the compiler execute path, for example, CodeSourcery, Keil MDK, IAR +if CROSS_TOOL == 'gcc': + PLATFORM = 'gcc' + EXEC_PATH = r'C:\Users\XXYYZZ' +elif CROSS_TOOL == 'keil': + PLATFORM = 'armclang' + EXEC_PATH = r'C:/Keil_v5' +elif CROSS_TOOL == 'iar': + PLATFORM = 'iccarm' + EXEC_PATH = r'C:/Program Files/IAR Systems/Embedded Workbench 8.0' +elif CROSS_TOOL == 'llvm-arm': + PLATFORM = 'llvm-arm' + EXEC_PATH = r'D:\Progrem\LLVMEmbeddedToolchainForArm-17.0.1-Windows-x86_64\bin' + +if os.getenv('RTT_EXEC_PATH'): + EXEC_PATH = os.getenv('RTT_EXEC_PATH') + +BUILD = 'debug' +# BUILD = 'release' + +if PLATFORM == 'gcc': + # toolchains + PREFIX = 'arm-none-eabi-' + CC = PREFIX + 'gcc' + AS = PREFIX + 'gcc' + AR = PREFIX + 'ar' + CXX = PREFIX + 'g++' + LINK = PREFIX + 'gcc' + TARGET_EXT = 'elf' + SIZE = PREFIX + 'size' + OBJDUMP = PREFIX + 'objdump' + OBJCPY = PREFIX + 'objcopy' + NM = PREFIX + 'nm' + + DEVICE = ' -mcpu=cortex-m85 -mthumb -mfpu=fpv5-sp-d16 -mfloat-abi=hard -ffunction-sections -fdata-sections' + CFLAGS = DEVICE + ' -Dgcc' + AFLAGS = ' -c' + DEVICE + ' -x assembler-with-cpp -Wa,-mimplicit-it=thumb ' + LFLAGS = DEVICE + ' -Wl,--gc-sections,-Map=rtthread.map,-cref,-u,Reset_Handler -T script/fsp.ld -L script/' + + CPATH = '' + LPATH = '' + + if BUILD == 'debug': + CFLAGS += ' -O0 -gdwarf-2 -g -Wall' + AFLAGS += ' -gdwarf-2' + else: + CFLAGS += ' -Os' + CXXFLAGS = CFLAGS + + POST_ACTION = OBJCPY + ' -O ihex $TARGET rtthread.hex\n' + SIZE + ' $TARGET \n' + # POST_ACTION += OBJCPY + ' -O binary $TARGET rtthread.bin\n' + SIZE + ' $TARGET \n' + +elif PLATFORM == 'armclang': + # toolchains + CC = 'armclang' + CXX = 'armclang' + AS = 'armasm' + AR = 'armar' + LINK = 'armlink' + TARGET_EXT = 'axf' + + DEVICE = ' --cpu Cortex-M85' + + CFLAGS = ' -mcpu=Cortex-M85 -xc -std=c99 --target=arm-arm-none-eabi -mfpu=neon-fp-armv8 -mfloat-abi=hard -c' + CFLAGS += ' -fno-rtti -funsigned-char -ffunction-sections' + CFLAGS += ' -Wno-license-management -Wuninitialized -Wall -Wmissing-declarations -Wpointer-arith -Waggregate-return -Wfloat-equal' + + AFLAGS = DEVICE + ' --apcs=interwork ' + + LFLAGS = DEVICE + ' --scatter ' + 'script/fsp.scat' + LFLAGS +=' --info sizes --info totals --info unused --info veneers ' + LFLAGS += ' --list rt-thread.map --strict' + LFLAGS += ' --diag_suppress 6319,6314 --summary_stderr --info summarysizes' + LFLAGS += ' --map --load_addr_map_info --xref --callgraph --symbols' + LFLAGS += ' --libpath=' + EXEC_PATH + '/ARM/ARMCLANG/lib' + + EXEC_PATH += '/ARM/ARMCLANG/bin/' + + if BUILD == 'debug': + CFLAGS += ' -g -O0' + AFLAGS += ' -g' + else: + CFLAGS += ' -Os' + + POST_ACTION = 'fromelf --bin $TARGET --output rtthread.bin \nfromelf -z $TARGET \n' +elif PLATFORM == 'llvm-arm': + # toolchains + PREFIX = 'llvm-' + CC = 'clang' + AS = 'clang' + AR = PREFIX + 'ar' + CXX = 'clang++' + LINK = 'clang' + TARGET_EXT = 'elf' + SIZE = PREFIX + 'size' + OBJDUMP = PREFIX + 'objdump' + OBJCPY = PREFIX + 'objcopy' + DEVICE = ' --target=arm-none-eabihf -mfloat-abi=hard -march=armv8.1m.main+fp' + DEVICE += ' -ffunction-sections -fdata-sections -fno-exceptions -fno-rtti' + CFLAGS = DEVICE + CFLAGS += ' -mfloat-abi=hard -march=armv8.1m.main+fp' + AFLAGS = ' -c' + DEVICE + ' -Wa,-mimplicit-it=thumb ' ## -x assembler-with-cpp + LFLAGS = DEVICE + ' -Wl,--gc-sections,-Map=rt-thread.map,-u,Reset_Handler -lcrt0 -T script/fsp.ld -L script/' + + CPATH = '' + LPATH = '' + + if BUILD == 'debug': + CFLAGS += ' -O0 -gdwarf-2 -g' + AFLAGS += ' -gdwarf-2' + else: + CFLAGS += ' -O2' + + CXXFLAGS = CFLAGS + + POST_ACTION = OBJCPY + ' -O ihex $TARGET rtthread.hex\n' + SIZE + ' $TARGET \n' + +def dist_handle(BSP_ROOT, dist_dir): + import sys + cwd_path = os.getcwd() + sys.path.append(os.path.join(os.path.dirname(BSP_ROOT), 'tools')) + from sdk_dist import dist_do_building + dist_do_building(BSP_ROOT, dist_dir) diff --git a/bsp/renesas/ra8m1-ek/script/ac6/fsp_keep.via b/bsp/renesas/ra8m1-ek/script/ac6/fsp_keep.via new file mode 100644 index 000000000000..8b137891791f --- /dev/null +++ b/bsp/renesas/ra8m1-ek/script/ac6/fsp_keep.via @@ -0,0 +1 @@ + diff --git a/bsp/renesas/ra8m1-ek/script/fsp.ld b/bsp/renesas/ra8m1-ek/script/fsp.ld new file mode 100644 index 000000000000..16571b094dc2 --- /dev/null +++ b/bsp/renesas/ra8m1-ek/script/fsp.ld @@ -0,0 +1,649 @@ +/* + Linker File for Renesas FSP +*/ + +INCLUDE memory_regions.ld + +/* Uncomment and set XIP_SECONDARY_SLOT_IMAGE to 1 below for the secondary XIP application image.*/ +/* + XIP_SECONDARY_SLOT_IMAGE = 1; +*/ + +QSPI_FLASH_PRV_LENGTH = DEFINED(QSPI_FLASH_SIZE) ? ABSOLUTE(QSPI_FLASH_SIZE) : ABSOLUTE(QSPI_FLASH_LENGTH); +OSPI_DEVICE_0_PRV_LENGTH = DEFINED(OSPI_DEVICE_0_SIZE) ? ABSOLUTE(OSPI_DEVICE_0_SIZE) : ABSOLUTE(OSPI_DEVICE_0_LENGTH); +OSPI_DEVICE_1_PRV_LENGTH = DEFINED(OSPI_DEVICE_1_SIZE) ? ABSOLUTE(OSPI_DEVICE_1_SIZE) : ABSOLUTE(OSPI_DEVICE_1_LENGTH); + +/* If a flat (secure) project has DEFINED RAM_NS_BUFFER_LENGTH, then emit IDAU symbols to allocate non-secure RAM. */ +__RESERVE_NS_RAM = !DEFINED(PROJECT_NONSECURE) && DEFINED(RAM_NS_BUFFER_LENGTH) && (OPTION_SETTING_S_LENGTH != 0); + +RAM_NS_BUFFER_BLOCK_LENGTH = DEFINED(RAM_NS_BUFFER_LENGTH) ? ALIGN(RAM_NS_BUFFER_LENGTH, 8192) : 0; +RAM_NS_BUFFER_LENGTH = DEFINED(RAM_NS_BUFFER_LENGTH) ? RAM_NS_BUFFER_LENGTH : 0; +RAM_NS_BUFFER_START = RAM_START + RAM_LENGTH - RAM_NS_BUFFER_LENGTH; +RAM_NS_BUFFER_BLOCK_START = RAM_START + RAM_LENGTH - RAM_NS_BUFFER_BLOCK_LENGTH; + +OPTION_SETTING_START_NS = 0x0100A180; + +/* This definition is used to avoid moving the counter in OPTION_SETTING regions for projects that should not configure option settings. + * Bootloader images do not configure option settings because they are owned by the bootloader. + * FSP_BOOTABLE_IMAGE is only defined in bootloader images. */ +__bl_FSP_BOOTABLE_IMAGE = 1; +__bln_FSP_BOOTABLE_IMAGE = 1; +PROJECT_SECURE_OR_FLAT = !DEFINED(PROJECT_NONSECURE) && OPTION_SETTING_LENGTH && !DEFINED(FSP_BOOTABLE_IMAGE); +USE_OPTION_SETTING_NS = DEFINED(PROJECT_NONSECURE) && !DEFINED(FSP_BOOTABLE_IMAGE); + +__bl_FLASH_IMAGE_START = !DEFINED(FLASH_BOOTLOADER_LENGTH) ? 0 : + FLASH_APPLICATION_IMAGE_NUMBER == 1 ? FLASH_BOOTLOADER_LENGTH + FLASH_BOOTLOADER_HEADER_LENGTH : + FLASH_BOOTLOADER_LENGTH + FLASH_BOOTLOADER_SCRATCH_LENGTH + FLASH_APPLICATION_S_LENGTH + FLASH_BOOTLOADER_HEADER_LENGTH; +__bl_FLASH_IMAGE_LENGTH = !DEFINED(FLASH_BOOTLOADER_LENGTH) ? 0 : + FLASH_APPLICATION_S_LENGTH - FLASH_BOOTLOADER_HEADER_LENGTH; +__bl_FLASH_IMAGE_END = __bl_FLASH_IMAGE_START + __bl_FLASH_IMAGE_LENGTH; +__bl_XIP_SECONDARY_FLASH_IMAGE_START = !DEFINED(FLASH_BOOTLOADER_LENGTH) ? 0 : + FLASH_BOOTLOADER_LENGTH + FLASH_APPLICATION_S_LENGTH + FLASH_BOOTLOADER_HEADER_LENGTH; +__bl_XIP_SECONDARY_FLASH_IMAGE_END = __bl_XIP_SECONDARY_FLASH_IMAGE_START + __bl_FLASH_IMAGE_LENGTH; +__bl_FLASH_NS_START = !DEFINED(FLASH_BOOTLOADER_LENGTH) ? 0 : + FLASH_APPLICATION_NS_LENGTH == 0 ? __bl_FLASH_IMAGE_END : + __bl_FLASH_IMAGE_START - FLASH_BOOTLOADER_HEADER_LENGTH + FLASH_APPLICATION_S_LENGTH; +__bl_FLASH_NSC_START = !DEFINED(FLASH_BOOTLOADER_LENGTH) ? 0 : + FLASH_APPLICATION_NS_LENGTH == 0 ? __bl_FLASH_IMAGE_END : + __bl_FLASH_NS_START - FLASH_APPLICATION_NSC_LENGTH; +__bl_RAM_NS_START = !DEFINED(FLASH_BOOTLOADER_LENGTH) ? 0 : + FLASH_APPLICATION_NS_LENGTH == 0 ? RAM_START + RAM_LENGTH : + RAM_START + RAM_LENGTH - RAM_APPLICATION_NS_LENGTH; +__bl_RAM_NSC_START = !DEFINED(FLASH_BOOTLOADER_LENGTH) ? 0 : + FLASH_APPLICATION_NS_LENGTH == 0 ? RAM_START + RAM_LENGTH : + __bl_RAM_NS_START - RAM_APPLICATION_NSC_LENGTH; +__bl_FLASH_NS_IMAGE_START = !DEFINED(FLASH_BOOTLOADER_LENGTH) ? 0 : + FLASH_APPLICATION_NS_LENGTH == 0 ? __bl_FLASH_IMAGE_END : + __bl_FLASH_NS_START + FLASH_BOOTLOADER_HEADER_LENGTH_2; +__bln_FLASH_IMAGE_START = __bl_FLASH_NS_IMAGE_START; +__bln_FLASH_IMAGE_LENGTH = !DEFINED(FLASH_BOOTLOADER_LENGTH) ? 0 : + FLASH_APPLICATION_NS_LENGTH == 0 ? __bl_FLASH_IMAGE_END : + FLASH_APPLICATION_NS_LENGTH - FLASH_BOOTLOADER_HEADER_LENGTH_2; + +XIP_SECONDARY_SLOT_IMAGE = DEFINED(XIP_SECONDARY_SLOT_IMAGE) ? XIP_SECONDARY_SLOT_IMAGE : 0; +FLASH_ORIGIN = !DEFINED(FLASH_IMAGE_START) ? FLASH_START : + XIP_SECONDARY_SLOT_IMAGE == 1 ? XIP_SECONDARY_FLASH_IMAGE_START : + FLASH_IMAGE_START; +LIMITED_FLASH_LENGTH = DEFINED(FLASH_IMAGE_LENGTH) ? FLASH_IMAGE_LENGTH : + DEFINED(FLASH_BOOTLOADER_LENGTH) ? FLASH_BOOTLOADER_LENGTH : + FLASH_LENGTH; + +/* Define memory regions. */ +MEMORY +{ + FLASH (rx) : ORIGIN = FLASH_ORIGIN, LENGTH = LIMITED_FLASH_LENGTH + RAM (rwx) : ORIGIN = RAM_START, LENGTH = RAM_LENGTH + DATA_FLASH (rx) : ORIGIN = DATA_FLASH_START, LENGTH = DATA_FLASH_LENGTH + QSPI_FLASH (rx) : ORIGIN = QSPI_FLASH_START, LENGTH = QSPI_FLASH_PRV_LENGTH + OSPI_DEVICE_0 (rx) : ORIGIN = OSPI_DEVICE_0_START, LENGTH = OSPI_DEVICE_0_PRV_LENGTH + OSPI_DEVICE_1 (rx) : ORIGIN = OSPI_DEVICE_1_START, LENGTH = OSPI_DEVICE_1_PRV_LENGTH + OSPI_DEVICE_0_RAM (rwx) : ORIGIN = OSPI_DEVICE_0_START, LENGTH = OSPI_DEVICE_0_PRV_LENGTH + OSPI_DEVICE_1_RAM (rwx) : ORIGIN = OSPI_DEVICE_1_START, LENGTH = OSPI_DEVICE_1_PRV_LENGTH + SDRAM (rwx) : ORIGIN = SDRAM_START, LENGTH = SDRAM_LENGTH + OPTION_SETTING (r): ORIGIN = OPTION_SETTING_START, LENGTH = OPTION_SETTING_LENGTH + OPTION_SETTING_S (r): ORIGIN = OPTION_SETTING_S_START, LENGTH = OPTION_SETTING_S_LENGTH + ID_CODE (rx) : ORIGIN = ID_CODE_START, LENGTH = ID_CODE_LENGTH +} + +/* Library configurations */ +GROUP(libc.a libm.a) + +/* Linker script to place sections and symbol values. Should be used together + * with other linker script that defines memory regions FLASH and RAM. + * It references following symbols, which must be DEFINED in code: + * Reset_Handler : Entry of reset handler + * + * It defines following symbols, which code can use without definition: + * __exidx_start + * __exidx_end + * __copy_table_start__ + * __copy_table_end__ + * __zero_table_start__ + * __zero_table_end__ + * __etext + * __data_start__ + * __preinit_array_start + * __preinit_array_end + * __init_array_start + * __init_array_end + * __fini_array_start + * __fini_array_end + * __data_end__ + * __bss_start__ + * __bss_end__ + * __HeapLimit + * __StackLimit + * __StackTop + * __stack + * __Vectors_End + * __Vectors_Size + * __qspi_flash_start__ + * __qspi_flash_end__ + * __qspi_flash_code_size__ + * __qspi_region_max_size__ + * __qspi_region_start_address__ + * __qspi_region_end_address__ + * __ospi_device_0_start__ + * __ospi_device_0_end__ + * __ospi_device_0_code_size__ + * __ospi_device_0_region_max_size__ + * __ospi_device_0_region_start_address__ + * __ospi_device_0_region_end_address__ + * __ospi_device_1_start__ + * __ospi_device_1_end__ + * __ospi_device_1_code_size__ + * __ospi_device_1_region_max_size__ + * __ospi_device_1_region_start_address__ + * __ospi_device_1_region_end_address__ + */ +ENTRY(Reset_Handler) + +SECTIONS +{ + .text : + { + __tz_FLASH_S = ABSOLUTE(FLASH_START); + __ROM_Start = .; + + /* Even though the vector table is not 256 entries (1KB) long, we still allocate that much + * space because ROM registers are at address 0x400 and there is very little space + * in between. */ + KEEP(*(.fixed_vectors*)) + KEEP(*(.application_vectors*)) + __Vectors_End = .; + + /* ROM Registers start at address 0x00000400 for devices that do not have the OPTION_SETTING region. */ + . = OPTION_SETTING_LENGTH > 0 ? . : __ROM_Start + 0x400; + KEEP(*(.rom_registers*)) + + /* Reserving 0x100 bytes of space for ROM registers. */ + . = OPTION_SETTING_LENGTH > 0 ? . : __ROM_Start + 0x500; + + /* Allocate flash write-boundary-aligned + * space for sce9 wrapped public keys for mcuboot if the module is used. + */ + . = ALIGN(128); + KEEP(*(.mcuboot_sce9_key*)) + + *(.text*) + + KEEP(*(.version)) + KEEP(*(.init)) + KEEP(*(.fini)) + + /* section information for finsh shell */ + . = ALIGN(4); + __fsymtab_start = .; + KEEP(*(FSymTab)) + __fsymtab_end = .; + + . = ALIGN(4); + __vsymtab_start = .; + KEEP(*(VSymTab)) + __vsymtab_end = .; + + /* section information for initial. */ + . = ALIGN(4); + __rt_init_start = .; + KEEP(*(SORT(.rti_fn*))) + __rt_init_end = .; + + . = ALIGN(4); + KEEP(*(FalPartTable)) + + /* .ctors */ + *crtbegin.o(.ctors) + *crtbegin?.o(.ctors) + *(EXCLUDE_FILE(*crtend?.o *crtend.o) .ctors) + *(SORT(.ctors.*)) + *(.ctors) + + /* .dtors */ + *crtbegin.o(.dtors) + *crtbegin?.o(.dtors) + *(EXCLUDE_FILE(*crtend?.o *crtend.o) .dtors) + *(SORT(.dtors.*)) + *(.dtors) + + *(.rodata*) + __usb_dev_descriptor_start_fs = .; + KEEP(*(.usb_device_desc_fs*)) + __usb_cfg_descriptor_start_fs = .; + KEEP(*(.usb_config_desc_fs*)) + __usb_interface_descriptor_start_fs = .; + KEEP(*(.usb_interface_desc_fs*)) + __usb_descriptor_end_fs = .; + __usb_dev_descriptor_start_hs = .; + KEEP(*(.usb_device_desc_hs*)) + __usb_cfg_descriptor_start_hs = .; + KEEP(*(.usb_config_desc_hs*)) + __usb_interface_descriptor_start_hs = .; + KEEP(*(.usb_interface_desc_hs*)) + __usb_descriptor_end_hs = .; + + KEEP(*(.eh_frame*)) + + __ROM_End = .; + } > FLASH = 0xFF + + __Vectors_Size = __Vectors_End - __Vectors; + + .ARM.extab : + { + *(.ARM.extab* .gnu.linkonce.armextab.*) + } > FLASH + + __exidx_start = .; + .ARM.exidx : + { + *(.ARM.exidx* .gnu.linkonce.armexidx.*) + } > FLASH + __exidx_end = .; + + /* To copy multiple ROM to RAM sections, + * uncomment .copy.table section and, + * define __STARTUP_COPY_MULTIPLE in startup_ARMCMx.S */ + /* + .copy.table : + { + . = ALIGN(4); + __copy_table_start__ = .; + LONG (__etext) + LONG (__data_start__) + LONG (__data_end__ - __data_start__) + LONG (__etext2) + LONG (__data2_start__) + LONG (__data2_end__ - __data2_start__) + __copy_table_end__ = .; + } > FLASH + */ + + /* To clear multiple BSS sections, + * uncomment .zero.table section and, + * define __STARTUP_CLEAR_BSS_MULTIPLE in startup_ARMCMx.S */ + /* + .zero.table : + { + . = ALIGN(4); + __zero_table_start__ = .; + LONG (__bss_start__) + LONG (__bss_end__ - __bss_start__) + LONG (__bss2_start__) + LONG (__bss2_end__ - __bss2_start__) + __zero_table_end__ = .; + } > FLASH + */ + + __etext = .; + + __tz_RAM_S = ORIGIN(RAM); + + /* If DTC is used, put the DTC vector table at the start of SRAM. + This avoids memory holes due to 1K alignment required by it. */ + .fsp_dtc_vector_table (NOLOAD) : + { + . = ORIGIN(RAM); + *(.fsp_dtc_vector_table) + } > RAM + + /* Initialized data section. */ + .data : + { + __data_start__ = .; + . = ALIGN(4); + + __Code_In_RAM_Start = .; + + KEEP(*(.code_in_ram*)) + __Code_In_RAM_End = .; + + *(vtable) + /* Don't use *(.data*) because it will place data meant for .data_flash in this section. */ + *(.data.*) + *(.data) + + . = ALIGN(4); + /* preinit data */ + PROVIDE_HIDDEN (__preinit_array_start = .); + KEEP(*(.preinit_array)) + PROVIDE_HIDDEN (__preinit_array_end = .); + + . = ALIGN(4); + /* init data */ + PROVIDE_HIDDEN (__init_array_start = .); + KEEP(*(SORT(.init_array.*))) + KEEP(*(.init_array)) + PROVIDE_HIDDEN (__init_array_end = .); + + + . = ALIGN(4); + /* finit data */ + PROVIDE_HIDDEN (__fini_array_start = .); + KEEP(*(SORT(.fini_array.*))) + KEEP(*(.fini_array)) + PROVIDE_HIDDEN (__fini_array_end = .); + + KEEP(*(.jcr*)) + + . = ALIGN(4); + + /* All data end */ + __data_end__ = .; + + } > RAM AT > FLASH + + + /* TrustZone Secure Gateway Stubs Section. */ + + /* Some arithmetic is needed to eliminate unnecessary FILL for secure projects. */ + /* 1. Get the address to the next block after the .data section in FLASH. */ + DATA_END = LOADADDR(.data) + SIZEOF(.data); + /* 2. Determine the secure gateway stubs address either by the provided linker variable or the next 1024-byte block after .data */ + SGSTUBS_LOC = (DEFINED(PROJECT_SECURE) && DEFINED(FLASH_NSC_START)) ? ABSOLUTE(FLASH_NSC_START) : ALIGN(DATA_END, 1024); + /* 3. Manually specify the start location for .gnu.sgstubs */ + .gnu.sgstubs SGSTUBS_LOC : ALIGN(1024) + { + __tz_FLASH_C = DEFINED(FLASH_NSC_START) ? ABSOLUTE(FLASH_NSC_START) : __RESERVE_NS_RAM ? ABSOLUTE(FLASH_START + FLASH_LENGTH) : ALIGN(1024); + _start_sg = .; + *(.gnu.sgstubs*) + . = ALIGN(32); + _end_sg = .; + } > FLASH + + __tz_FLASH_N = DEFINED(FLASH_NS_START) ? ABSOLUTE(FLASH_NS_START) : __RESERVE_NS_RAM ? ABSOLUTE(FLASH_START + FLASH_LENGTH) : FLASH_LENGTH < 32768 ? FLASH_LENGTH : ALIGN(32768); + FLASH_NS_IMAGE_START = DEFINED(FLASH_NS_IMAGE_START) ? FLASH_NS_IMAGE_START : __tz_FLASH_N; + + /* Note: There are no secure/non-secure boundaries for QSPI. These symbols are provided for the RA configuration tool. */ + __tz_QSPI_FLASH_S = ORIGIN(QSPI_FLASH); + + /* QSPI_FLASH section to be downloaded via debugger */ + .qspi_flash : + { + __qspi_flash_start__ = .; + KEEP(*(.qspi_flash*)) + KEEP(*(.code_in_qspi*)) + __qspi_flash_end__ = .; + } > QSPI_FLASH + __qspi_flash_code_size__ = __qspi_flash_end__ - __qspi_flash_start__; + + /* QSPI_FLASH non-retentive section, creates a copy in internal flash that can be copied to QSPI */ + __qspi_flash_code_addr__ = __etext + (__data_end__ - __data_start__); + .qspi_non_retentive : AT (__qspi_flash_code_addr__) + { + __qspi_non_retentive_start__ = .; + KEEP(*(.qspi_non_retentive*)) + __qspi_non_retentive_end__ = .; + } > QSPI_FLASH + __qspi_non_retentive_size__ = __qspi_non_retentive_end__ - __qspi_non_retentive_start__; + + __qspi_region_max_size__ = 0x4000000; /* Must be the same as defined in MEMORY above */ + __qspi_region_start_address__ = __qspi_flash_start__; + __qspi_region_end_address__ = __qspi_flash_start__ + __qspi_region_max_size__; + + /* Note: There are no secure/non-secure boundaries for QSPI. These symbols are provided for the RA configuration tool. */ + __tz_QSPI_FLASH_N = __qspi_non_retentive_end__; + + /* Support for OctaRAM */ + .OSPI_DEVICE_0_NO_LOAD (NOLOAD): + { + . = ALIGN(4); + __ospi_device_0_start__ = .; + *(.ospi_device_0_no_load*) + . = ALIGN(4); + __ospi_device_0_end__ = .; + } > OSPI_DEVICE_0_RAM + + .OSPI_DEVICE_1_NO_LOAD (NOLOAD): + { + . = ALIGN(4); + __ospi_device_1_start__ = .; + *(.ospi_device_1_no_load*) + . = ALIGN(4); + __ospi_device_1_end__ = .; + } > OSPI_DEVICE_1_RAM + + /* Note: There are no secure/non-secure boundaries for QSPI. These symbols are provided for the RA configuration tool. */ + __tz_OSPI_DEVICE_0_S = ORIGIN(OSPI_DEVICE_0); + + /* OSPI_DEVICE_0 section to be downloaded via debugger */ + .OSPI_DEVICE_0 : + { + __ospi_device_0_start__ = .; + KEEP(*(.ospi_device_0*)) + KEEP(*(.code_in_ospi_device_0*)) + __ospi_device_0_end__ = .; + } > OSPI_DEVICE_0 + __ospi_device_0_code_size__ = __ospi_device_0_end__ - __ospi_device_0_start__; + + /* OSPI_DEVICE_0 non-retentive section, creates a copy in internal flash that can be copied to OSPI */ + __ospi_device_0_code_addr__ = __etext + (__data_end__ - __data_start__); + .ospi_device_0_non_retentive : AT (__ospi_device_0_code_addr__) + { + __ospi_device_0_non_retentive_start__ = .; + KEEP(*(.ospi_device_0_non_retentive*)) + __ospi_device_0_non_retentive_end__ = .; + } > OSPI_DEVICE_0 + __ospi_device_0_non_retentive_size__ = __ospi_device_0_non_retentive_end__ - __ospi_device_0_non_retentive_start__; + + __ospi_device_0_region_max_size__ = 0x8000000; /* Must be the same as defined in MEMORY above */ + __ospi_device_0_region_start_address__ = __ospi_device_0_start__; + __ospi_device_0_region_end_address__ = __ospi_device_0_start__ + __ospi_device_0_region_max_size__; + + /* Note: There are no secure/non-secure boundaries for OSPI. These symbols are provided for the RA configuration tool. */ + __tz_OSPI_DEVICE_0_N = __ospi_device_0_non_retentive_end__; + + /* Note: There are no secure/non-secure boundaries for OSPI. These symbols are provided for the RA configuration tool. */ + __tz_OSPI_DEVICE_1_S = ORIGIN(OSPI_DEVICE_1); + + /* OSPI_DEVICE_1 section to be downloaded via debugger */ + .OSPI_DEVICE_1 : + { + __ospi_device_1_start__ = .; + KEEP(*(.ospi_device_1*)) + KEEP(*(.code_in_ospi_device_1*)) + __ospi_device_1_end__ = .; + } > OSPI_DEVICE_1 + __ospi_device_1_code_size__ = __ospi_device_1_end__ - __ospi_device_1_start__; + + /* OSPI_DEVICE_1 non-retentive section, creates a copy in internal flash that can be copied to OSPI */ + __ospi_device_1_code_addr__ = __etext + (__data_end__ - __data_start__); + .ospi_device_1_non_retentive : AT (__ospi_device_1_code_addr__) + { + __ospi_device_1_non_retentive_start__ = .; + KEEP(*(.ospi_device_1_non_retentive*)) + __ospi_device_1_non_retentive_end__ = .; + } > OSPI_DEVICE_1 + __ospi_device_1_non_retentive_size__ = __ospi_device_1_non_retentive_end__ - __ospi_device_1_non_retentive_start__; + + __ospi_device_1_region_max_size__ = 0x10000000; /* Must be the same as defined in MEMORY above */ + __ospi_device_1_region_start_address__ = __ospi_device_1_start__; + __ospi_device_1_region_end_address__ = __ospi_device_1_start__ + __ospi_device_1_region_max_size__; + + /* Note: There are no secure/non-secure boundaries for OSPI. These symbols are provided for the RA configuration tool. */ + __tz_OSPI_DEVICE_1_N = __ospi_device_1_non_retentive_end__; + + .noinit (NOLOAD): + { + . = ALIGN(4); + __noinit_start = .; + KEEP(*(.noinit*)) + . = ALIGN(8); + /* Place the FreeRTOS heap here so that the __HeapLimit calculation does not include the freertos heap. */ + KEEP(*(.heap.*)) + __noinit_end = .; + } > RAM + + .bss : + { + . = ALIGN(4); + __bss_start__ = .; + *(.bss*) + *(COMMON) + . = ALIGN(4); + __bss_end__ = .; + } > RAM + + .heap (NOLOAD): + { + . = ALIGN(8); + __HeapBase = .; + /* Place the STD heap here. */ + KEEP(*(.heap)) + __HeapLimit = .; + } > RAM + + /* Stacks are stored in this section. */ + .stack_dummy (NOLOAD): + { + . = ALIGN(8); + __StackLimit = .; + /* Main stack */ + KEEP(*(.stack)) + __StackTop = .; + /* Thread stacks */ + KEEP(*(.stack*)) + __StackTopAll = .; + } > RAM + + PROVIDE(__stack = __StackTopAll); + + /* This symbol represents the end of user allocated RAM. The RAM after this symbol can be used + at run time for things such as ThreadX memory pool allocations. */ + __RAM_segment_used_end__ = ALIGN(__StackTopAll , 4); + + /* RAM_NSC_START can be used to set a fixed address for non-secure callable RAM in secure projects. + * If it is not specified, the address for NSC RAM is the end of RAM aligned to a 1K boundary. + * In flat projects that require non-secure RAM, this variable is set to the start of non-secure RAM. */ + __tz_RAM_C = DEFINED(RAM_NSC_START) ? ABSOLUTE(RAM_NSC_START) : __RESERVE_NS_RAM ? ABSOLUTE(RAM_NS_BUFFER_BLOCK_START) : ALIGN(__RAM_segment_used_end__, 1024); + + /* RAM_NS_START can be used to set a fixed address for non-secure RAM in secure projects or flat projects. + * RAM_NS_BUFFER_BLOCK_LENGTH is used to allocate non-secure buffers in a flat project. If it is not + * specified, the address for NSC RAM is the end of RAM aligned to an 8K boundary. + * In flat projects that require non-secure RAM, this variable is set to the start of non-secure RAM. */ + __tz_RAM_N = DEFINED(RAM_NS_START) ? ABSOLUTE(RAM_NS_START) : __RESERVE_NS_RAM ? ABSOLUTE(RAM_NS_BUFFER_BLOCK_START) : ALIGN(__tz_RAM_C, 8192); + + /* Non-secure buffers must be in non-secure RAM. This is primarily used for the EDMAC in flat projects. + * The EDMAC is a non-secure bus master and can only access non-secure RAM. */ + .ns_buffer (NOLOAD): + { + /* Allocate RAM on a 32-byte boundary to help with placement of Ethernet buffers. */ + . = __RESERVE_NS_RAM ? ABSOLUTE(RAM_NS_BUFFER_START & 0xFFFFFFE0) : .; + + KEEP(*(.ns_buffer*)) + } > RAM + + /* Data flash. */ + .data_flash : + { + . = ORIGIN(DATA_FLASH); + __tz_DATA_FLASH_S = .; + __Data_Flash_Start = .; + KEEP(*(.data_flash*)) + __Data_Flash_End = .; + + __tz_DATA_FLASH_N = DEFINED(DATA_FLASH_NS_START) ? ABSOLUTE(DATA_FLASH_NS_START) : __RESERVE_NS_RAM ? ABSOLUTE(DATA_FLASH_START + DATA_FLASH_LENGTH) : ALIGN(1024); + } > DATA_FLASH + + /* Note: There are no secure/non-secure boundaries for SDRAM. These symbols are provided for the RA configuration tool. */ + __tz_SDRAM_S = ORIGIN(SDRAM); + + /* SDRAM */ + .sdram (NOLOAD): + { + __SDRAM_Start = .; + KEEP(*(.sdram*)) + KEEP(*(.frame*)) + __SDRAM_End = .; + } > SDRAM + + /* Note: There are no secure/non-secure boundaries for SDRAM. These symbols are provided for the RA configuration tool. */ + __tz_SDRAM_N = __SDRAM_End; + + /* Note: There are no secure/non-secure boundaries for ID_CODE. These symbols are provided for the RA configuration tool. */ + __tz_ID_CODE_S = ORIGIN(ID_CODE); + + .id_code : + { + __ID_Code_Start = .; + KEEP(*(.id_code*)) + __ID_Code_End = .; + } > ID_CODE + + /* Note: There are no secure/non-secure boundaries for ID_CODE. These symbols are provided for the RA configuration tool. */ + __tz_ID_CODE_N = __ID_Code_End; + + /* Symbol required for RA Configuration tool. */ + __tz_OPTION_SETTING_S = ORIGIN(OPTION_SETTING); + + .option_setting : + { + __OPTION_SETTING_Start = .; + KEEP(*(.option_setting_ofs0)) + . = PROJECT_SECURE_OR_FLAT ? __OPTION_SETTING_Start + 0x10 : __OPTION_SETTING_Start; + KEEP(*(.option_setting_dualsel)) + . = PROJECT_SECURE_OR_FLAT ? __OPTION_SETTING_Start + 0x34 : __OPTION_SETTING_Start; + KEEP(*(.option_setting_sas)) + __OPTION_SETTING_End = .; + } > OPTION_SETTING = 0xFF + + /* Symbol required for RA Configuration tool. */ + __tz_OPTION_SETTING_N = OPTION_SETTING_START_NS; + + .option_setting_ns : + { + __OPTION_SETTING_NS_Start = .; + KEEP(*(.option_setting_ofs1)) + . = USE_OPTION_SETTING_NS ? __OPTION_SETTING_NS_Start + 0x10 : __OPTION_SETTING_NS_Start; + KEEP(*(.option_setting_banksel)) + . = USE_OPTION_SETTING_NS ? __OPTION_SETTING_NS_Start + 0x40 : __OPTION_SETTING_NS_Start; + KEEP(*(.option_setting_bps0)) + . = USE_OPTION_SETTING_NS ? __OPTION_SETTING_NS_Start + 0x44 : __OPTION_SETTING_NS_Start; + KEEP(*(.option_setting_bps1)) + . = USE_OPTION_SETTING_NS ? __OPTION_SETTING_NS_Start + 0x48 : __OPTION_SETTING_NS_Start; + KEEP(*(.option_setting_bps2)) + . = USE_OPTION_SETTING_NS ? __OPTION_SETTING_NS_Start + 0x60 : __OPTION_SETTING_NS_Start; + KEEP(*(.option_setting_pbps0)) + . = USE_OPTION_SETTING_NS ? __OPTION_SETTING_NS_Start + 0x64 : __OPTION_SETTING_NS_Start; + KEEP(*(.option_setting_pbps1)) + . = USE_OPTION_SETTING_NS ? __OPTION_SETTING_NS_Start + 0x68 : __OPTION_SETTING_NS_Start; + KEEP(*(.option_setting_pbps2)) + __OPTION_SETTING_NS_End = .; + } > OPTION_SETTING = 0xFF + + /* Symbol required for RA Configuration tool. */ + __tz_OPTION_SETTING_S_S = ORIGIN(OPTION_SETTING_S); + + .option_setting_s : + { + __OPTION_SETTING_S_Start = .; + KEEP(*(.option_setting_ofs1_sec)) + . = PROJECT_SECURE_OR_FLAT ? __OPTION_SETTING_S_Start + 0x10 : __OPTION_SETTING_S_Start; + KEEP(*(.option_setting_banksel_sec)) + . = PROJECT_SECURE_OR_FLAT ? __OPTION_SETTING_S_Start + 0x40 : __OPTION_SETTING_S_Start; + KEEP(*(.option_setting_bps_sec0)) + . = PROJECT_SECURE_OR_FLAT ? __OPTION_SETTING_S_Start + 0x44 : __OPTION_SETTING_S_Start; + KEEP(*(.option_setting_bps_sec1)) + . = PROJECT_SECURE_OR_FLAT ? __OPTION_SETTING_S_Start + 0x48 : __OPTION_SETTING_S_Start; + KEEP(*(.option_setting_bps_sec2)) + . = PROJECT_SECURE_OR_FLAT ? __OPTION_SETTING_S_Start + 0x60 : __OPTION_SETTING_S_Start; + KEEP(*(.option_setting_pbps_sec0)) + . = PROJECT_SECURE_OR_FLAT ? __OPTION_SETTING_S_Start + 0x64 : __OPTION_SETTING_S_Start; + KEEP(*(.option_setting_pbps_sec1)) + . = PROJECT_SECURE_OR_FLAT ? __OPTION_SETTING_S_Start + 0x68 : __OPTION_SETTING_S_Start; + KEEP(*(.option_setting_pbps_sec2)) + . = PROJECT_SECURE_OR_FLAT ? __OPTION_SETTING_S_Start + 0x80 : __OPTION_SETTING_S_Start; + KEEP(*(.option_setting_ofs1_sel)) + . = PROJECT_SECURE_OR_FLAT ? __OPTION_SETTING_S_Start + 0x90 : __OPTION_SETTING_S_Start; + KEEP(*(.option_setting_banksel_sel)) + . = PROJECT_SECURE_OR_FLAT ? __OPTION_SETTING_S_Start + 0xC0 : __OPTION_SETTING_S_Start; + KEEP(*(.option_setting_bps_sel0)) + . = PROJECT_SECURE_OR_FLAT ? __OPTION_SETTING_S_Start + 0xC4 : __OPTION_SETTING_S_Start; + KEEP(*(.option_setting_bps_sel1)) + . = PROJECT_SECURE_OR_FLAT ? __OPTION_SETTING_S_Start + 0xC8 : __OPTION_SETTING_S_Start; + KEEP(*(.option_setting_bps_sel2)) + __OPTION_SETTING_S_End = .; + } > OPTION_SETTING_S = 0xFF + + /* Symbol required for RA Configuration tool. */ + __tz_OPTION_SETTING_S_N = __OPTION_SETTING_S_End; +} diff --git a/bsp/renesas/ra8m1-ek/script/fsp.scat b/bsp/renesas/ra8m1-ek/script/fsp.scat new file mode 100644 index 000000000000..e8cd0b06990a --- /dev/null +++ b/bsp/renesas/ra8m1-ek/script/fsp.scat @@ -0,0 +1,986 @@ +#! armclang -mcpu=cortex-m4 --target=arm-arm-none-eabi -E -x c -I. +#include "memory_regions.scat" + +; This scatter-file places the vector table, application code, data, stacks and heap at suitable addresses in the memory map. + +#define ROM_REGISTERS_START 0x400 +; Uncomment and set XIP_SECONDARY_SLOT_IMAGE to 1 below for the secondary XIP application image. +; #define XIP_SECONDARY_SLOT_IMAGE 1 + +#ifdef FLASH_BOOTLOADER_LENGTH + +#define BL_FLASH_IMAGE_START (FLASH_APPLICATION_IMAGE_NUMBER == 1 ? FLASH_START + FLASH_BOOTLOADER_LENGTH + FLASH_BOOTLOADER_HEADER_LENGTH : \ + FLASH_START + FLASH_BOOTLOADER_LENGTH + FLASH_BOOTLOADER_SCRATCH_LENGTH + FLASH_APPLICATION_S_LENGTH + FLASH_BOOTLOADER_HEADER_LENGTH) +#define BL_FLASH_IMAGE_END (BL_FLASH_IMAGE_START + FLASH_APPLICATION_S_LENGTH - FLASH_BOOTLOADER_HEADER_LENGTH) +#define BL_XIP_SECONDARY_FLASH_IMAGE_START (FLASH_BOOTLOADER_LENGTH + FLASH_APPLICATION_S_LENGTH + FLASH_BOOTLOADER_HEADER_LENGTH) +#define BL_XIP_SECONDARY_FLASH_IMAGE_END (BL_XIP_SECONDARY_FLASH_IMAGE_START + FLASH_APPLICATION_S_LENGTH - FLASH_BOOTLOADER_HEADER_LENGTH) +#define BL_FLASH_NS_START (FLASH_APPLICATION_NS_LENGTH == 0 ? BL_FLASH_IMAGE_END : \ + BL_FLASH_IMAGE_START - FLASH_BOOTLOADER_HEADER_LENGTH + FLASH_APPLICATION_S_LENGTH) +#define BL_FLASH_NSC_START (FLASH_APPLICATION_NS_LENGTH == 0 ? BL_FLASH_IMAGE_END : \ + BL_FLASH_NS_START - FLASH_APPLICATION_NSC_LENGTH) +#define BL_FLASH_NS_IMAGE_START (FLASH_APPLICATION_NS_LENGTH == 0 ? BL_FLASH_IMAGE_END : \ + BL_FLASH_NS_START + FLASH_BOOTLOADER_HEADER_LENGTH_2) +#define BL_RAM_NS_START (FLASH_APPLICATION_NS_LENGTH == 0 ? RAM_START + RAM_LENGTH : \ + RAM_START + RAM_LENGTH - RAM_APPLICATION_NS_LENGTH) +#define BL_RAM_NSC_START (FLASH_APPLICATION_NS_LENGTH == 0 ? RAM_START + RAM_LENGTH : \ + BL_RAM_NS_START - RAM_APPLICATION_NSC_LENGTH) +#define BLN_FLASH_IMAGE_START (BL_FLASH_NS_IMAGE_START) +#define BLN_FLASH_IMAGE_END (FLASH_APPLICATION_NS_LENGTH == 0 ? BL_FLASH_IMAGE_END : \ + BL_FLASH_NS_IMAGE_START + FLASH_APPLICATION_NS_LENGTH - FLASH_BOOTLOADER_HEADER_LENGTH_2) + +#define FLASH_ORIGIN FLASH_START +#define LIMITED_FLASH_LENGTH FLASH_BOOTLOADER_LENGTH + +#elif defined FLASH_IMAGE_START + +#if defined XIP_SECONDARY_SLOT_IMAGE +#define FLASH_ORIGIN (XIP_SECONDARY_SLOT_IMAGE == 1 ? XIP_SECONDARY_FLASH_IMAGE_START : FLASH_IMAGE_START) +#else +#define FLASH_ORIGIN FLASH_IMAGE_START +#endif + + +#ifdef FLASH_NS_START +#define LIMITED_FLASH_LENGTH FLASH_NS_START - FLASH_IMAGE_START +#else +#define LIMITED_FLASH_LENGTH FLASH_IMAGE_END - FLASH_IMAGE_START +#endif + +#else + +#define FLASH_ORIGIN FLASH_START +#define LIMITED_FLASH_LENGTH FLASH_LENGTH + +#endif + +; If a flat project has defined RAM_NS_BUFFER_LENGTH, then emit IDAU symbols to allocate non-secure RAM. +#if !defined(PROJECT_NONSECURE) && defined(RAM_NS_BUFFER_LENGTH) +#define __RESERVE_NS_RAM (1) +; Allocate required RAM and align to 32K boundary +#define RAM_NS_BUFFER_START ((RAM_START + RAM_LENGTH - RAM_NS_BUFFER_LENGTH) AND 0xFFFFFFE0) +#else +#define __RESERVE_NS_RAM (0) +#endif + +#ifndef FLASH_S_START +#define FLASH_S_START 0 +#endif + +#ifndef RAM_S_START +#define RAM_S_START RAM_START +#endif + +#ifndef DATA_FLASH_S_START +#define DATA_FLASH_S_START DATA_FLASH_START +#endif +#ifndef OPTION_SETTING_DATA_FLASH_S_START +#define OPTION_SETTING_DATA_FLASH_S_START 0 +#endif + +#ifndef OPTION_SETTING_DATA_FLASH_S_LENGTH +#define OPTION_SETTING_DATA_FLASH_S_LENGTH 0 +#endif + +#if __RESERVE_NS_RAM + +#ifndef RAM_NSC_START +#define RAM_NSC_START RAM_NS_BUFFER_START AND 0xFFFFE000 +#endif + +#ifndef RAM_NS_START +#define RAM_NS_START RAM_NS_BUFFER_START AND 0xFFFFE000 +#endif + +#ifndef DATA_FLASH_NS_START +#define DATA_FLASH_NS_START DATA_FLASH_START + DATA_FLASH_LENGTH +#endif + +#ifndef FLASH_NSC_START +#define FLASH_NSC_START FLASH_ORIGIN + LIMITED_FLASH_LENGTH +#endif + +#ifndef FLASH_NS_START +#define FLASH_NS_START FLASH_ORIGIN + LIMITED_FLASH_LENGTH +#endif + +#else + +#ifndef RAM_NSC_START +#ifdef PROJECT_SECURE +#define RAM_NSC_START +0 ALIGN 1024 +#else +#define RAM_NSC_START RAM_START + RAM_LENGTH +#endif +#endif + +#ifndef RAM_NS_START +#ifdef PROJECT_SECURE +#define RAM_NS_START +0 ALIGN 8192 +#else +#define RAM_NS_START RAM_START + RAM_LENGTH +#endif +#endif + +#ifndef DATA_FLASH_NS_START +#define DATA_FLASH_NS_START +0 ALIGN 1024 +#endif + +#ifndef FLASH_NSC_START +#define FLASH_NSC_START (AlignExpr(ImageLength(LOAD_REGION_FLASH) + ImageBase(LOAD_REGION_FLASH), 1024)) +#endif + +#ifndef FLASH_NS_START +#define FLASH_NS_START AlignExpr(+0, 32768) +#endif + +#endif + +#ifndef QSPI_FLASH_S_START +#define QSPI_FLASH_S_START QSPI_FLASH_START +#endif + +#ifndef QSPI_FLASH_NS_START +#define QSPI_FLASH_NS_START +0 +#endif + +#ifndef OSPI_DEVICE_0_S_START +#define OSPI_DEVICE_0_S_START OSPI_DEVICE_0_START +#endif + +#ifndef OSPI_DEVICE_0_NS_START +#define OSPI_DEVICE_0_NS_START +0 +#endif + +#ifndef OSPI_DEVICE_1_S_START +#define OSPI_DEVICE_1_S_START OSPI_DEVICE_1_START +#endif + +#ifndef OSPI_DEVICE_1_NS_START +#define OSPI_DEVICE_1_NS_START +0 +#endif + +#ifndef SDRAM_S_START +#define SDRAM_S_START SDRAM_START +#endif + +#ifndef SDRAM_NS_START +#define SDRAM_NS_START +0 +#endif + +#ifdef QSPI_FLASH_SIZE +#define QSPI_FLASH_PRV_LENGTH QSPI_FLASH_SIZE +#else +#define QSPI_FLASH_PRV_LENGTH QSPI_FLASH_LENGTH +#endif + +#ifdef OSPI_DEVICE_0_SIZE +#define OSPI_DEVICE_0_PRV_LENGTH OSPI_DEVICE_0_SIZE +#else +#define OSPI_DEVICE_0_PRV_LENGTH OSPI_DEVICE_0_LENGTH +#endif + +#ifdef OSPI_DEVICE_1_SIZE +#define OSPI_DEVICE_1_PRV_LENGTH OSPI_DEVICE_1_SIZE +#else +#define OSPI_DEVICE_1_PRV_LENGTH OSPI_DEVICE_1_LENGTH +#endif + +#ifdef PROJECT_NONSECURE +#define OPTION_SETTING_START_NS (OPTION_SETTING_START) +#else +#define OPTION_SETTING_START_NS (OPTION_SETTING_START + 0x80) +#endif + +#define ID_CODE_OVERLAP ((ID_CODE_START > OPTION_SETTING_START) && (ID_CODE_START < OPTION_SETTING_START + OPTION_SETTING_LENGTH)) + +LOAD_REGION_FLASH FLASH_ORIGIN ALIGN 0x80 LIMITED_FLASH_LENGTH +{ + __tz_FLASH_S +0 EMPTY 0 + { + } + + VECTORS +0 FIXED PADVALUE 0xFFFFFFFF ; maximum of 256 exceptions (256*4 bytes == 0x400) + { + *(.fixed_vectors, +FIRST) + *(.application_vectors) + } + +#if (OPTION_SETTING_LENGTH == 0) && (FLASH_ORIGIN == FLASH_START) + + /* MCUs with the OPTION_SETTING region do not use the ROM registers at 0x400. */ + + VECTORS_FILL +0 FIXED FILL 0xFFFFFFFF (0x400 - ImageLength(VECTORS)) + { + } + + ROM_REGISTERS FLASH_START+0x400 FIXED PADVALUE 0xFFFFFFFF + { + bsp_rom_registers.o (.rom_registers) + } + + ROM_REGISTERS_FILL +0 FIXED FILL 0xFFFFFFFF (0x100 - ImageLength(ROM_REGISTERS)) + { + } + +#endif + + MCUBOOT_SCE9_KEY +0 FIXED + { + *(.mcuboot_sce9_key) + } + + + INIT_ARRAY +0 FIXED + { + *(.init_array) + } + + USB_DESC_FS +0 FIXED + { + *(.usb_device_desc_fs*) + *(.usb_config_desc_fs*) + *(.usb_interface_desc_fs*) + } + + RO_CODE_DATA +0 FIXED + { + *(.text*,.rodata*,.constdata*) + .ANY(+RO) + } + + __tz_RAM_S RAM_S_START EMPTY 0 + { + } + + DTC_VECTOR_TABLE RAM_START UNINIT NOCOMPRESS RAM_LENGTH + { + ; If DTC is used, put the DTC vector table at the start of SRAM. + ; This avoids memory holes due to 1K alignment required by it. + *(.bss.fsp_dtc_vector_table) + } + + DATA +0 NOCOMPRESS + { + ; Do not use *(.data*) because it will place data meant for .data_flash in this section. + *(.data.*) + *(.data) + *(.code_in_ram) + +#if !__RESERVE_NS_RAM + *(.ns_buffer*) +#endif + + .ANY(+RW) + } + + BSS +0 NOCOMPRESS + { + *(+ZI) + } + + NOINIT +0 UNINIT NOCOMPRESS + { + *(.bss.noinit) + } + + NOCACHE +0 UNINIT NOCOMPRESS ALIGN 32 + { + *(.bss.nocache) + } + + ; The required minimum ending alignment is a 32 byte boundary for Armv8-M MPU requirements. + ; There is no way to control the ending alignment of NOCACHE, so this dedicated section acts as padding and as the true execution section limit of NOCACHE. + NOCACHE_PAD (ImageLimit(NOCACHE)) EMPTY NOCOMPRESS (AlignExpr(ImageLength(NOCACHE), 32) - ImageLength(NOCACHE)) + { + } + + ARM_LIB_HEAP +0 ALIGN 8 UNINIT NOCOMPRESS + { + *(.bss.heap) + } + + ; ARM_LIB_STACK is not used in FSP, but it must be in the scatter file to avoid a linker error + ARM_LIB_STACK +0 ALIGN 8 UNINIT NOCOMPRESS EMPTY 0 + { + } + + STACK +0 ALIGN 8 UNINIT NOCOMPRESS + { + *(.bss.stack) + *(.bss.stack.thread) + } + + /* This is the end of RAM used in the application. */ + RAM_END +0 EMPTY 4 + { + } + __RAM_NSC_START RAM_NSC_START EMPTY 0 + { + } + + __tz_RAM_N RAM_NS_START EMPTY 0 + { + } + + ; Support for OctaRAM + OSPI_DEVICE_0_NO_LOAD OSPI_DEVICE_0_START UNINIT NOCOMPRESS + { + *(.ospi_device_0_no_load*) + } + + ; Support for OctaRAM + OSPI_DEVICE_1_NO_LOAD OSPI_DEVICE_1_START UNINIT NOCOMPRESS + { + *(.ospi_device_1_no_load*) + } + +#ifdef FLASH_BOOTLOADER_LENGTH + + __bl_FLASH_IMAGE_START BL_FLASH_IMAGE_START OVERLAY UNINIT 4 + { + *(.bl_boundary.bl_flash_image_start) + } + + __bl_XIP_SECONDARY_FLASH_IMAGE_START BL_XIP_SECONDARY_FLASH_IMAGE_START OVERLAY UNINIT 4 + { + *(.bl_boundary.bl_xip_secondary_flash_image_start) + } + + +#if FLASH_APPLICATION_NS_LENGTH == 0 + + __bl_FLASH_IMAGE_END BL_FLASH_IMAGE_END OVERLAY UNINIT 4 + { + *(.bl_boundary.bl_flash_image_end) + } + + __bl_XIP_SECONDARY_FLASH_IMAGE_END BL_XIP_SECONDARY_FLASH_IMAGE_END OVERLAY UNINIT 4 + { + *(.bl_boundary.bl_xip_secondary_flash_image_end) + } + +#else + + __bl_FLASH_NS_START BL_FLASH_NS_START OVERLAY UNINIT 4 + { + *(.bl_boundary.bl_flash_ns_start) + } + + __bl_FLASH_NSC_START BL_FLASH_NSC_START OVERLAY UNINIT 4 + { + *(.bl_boundary.bl_flash_nsc_start) + } + + __bl_FLASH_NS_IMAGE_START BL_FLASH_NS_IMAGE_START OVERLAY UNINIT 4 + { + *(.bl_boundary.bl_flash_ns_image_start) + } + + __bln_FLASH_IMAGE_START BLN_FLASH_IMAGE_START OVERLAY UNINIT 4 + { + *(.bl_boundary.bln_flash_image_start) + } + + __bln_FLASH_IMAGE_END BLN_FLASH_IMAGE_END OVERLAY UNINIT 4 + { + *(.bl_boundary.bln_flash_image_end) + } + + __bl_RAM_NS_START BL_RAM_NS_START OVERLAY UNINIT 4 + { + *(.bl_boundary.bl_ram_ns_start) + } + + __bl_RAM_NSC_START BL_RAM_NSC_START OVERLAY UNINIT 4 + { + *(.bl_boundary.bl_ram_nsc_start) + } + +#endif + +#endif + +#if __RESERVE_NS_RAM + RAM_NS_BUFFER RAM_NS_BUFFER_START + { + *(.ns_buffer*) + } +#endif + + RAM_LIMIT RAM_START + RAM_LENGTH EMPTY 4 + { + } + +#if ITCM_LENGTH > 0 + ; ALIGN will align both the load address and execution address. + ; The required minimum execution address alignment is an 8 byte boundary for ECC compatibility. + ; Aligning instead to a 16 byte boundary meets the above requirement and also aligns the load address to FCACHE2 for RA8 to optimize copying. + __tz_ITCM_S ITCM_START ALIGN 16 EMPTY 0 + { + } + + ITCM_DATA +0 NOCOMPRESS ITCM_LENGTH + { + *(.itcm_data*) + } + + ; The required minimum ending alignment is an 8 byte boundary for ECC compatibility. + ; There is no way to control the ending alignment of ITCM_DATA, so this dedicated section acts as padding and as the true load and execution section limit of ITCM_DATA. + ; "Load Addr" will show "-" in the map file making it seem as if no padding is actually in the binary, but "Load base:" will show otherwise. + ITCM_PAD (ImageLimit(ITCM_DATA)) FILL 0 NOCOMPRESS (AlignExpr(ImageLength(ITCM_DATA), 8) - ImageLength(ITCM_DATA)) + { + } + +#ifndef ITCM_NS_START +#define ITCM_NS_START AlignExpr(+0, 8192) +#endif + __tz_ITCM_N ITCM_NS_START ALIGN 8 EMPTY 0 + { + } + + ScatterAssert((ITCM_START AND 0xF) == 0) + ScatterAssert((ITCM_LENGTH AND 0x7) == 0) + ScatterAssert(((LoadLength(ITCM_DATA) + LoadLength(ITCM_PAD)) AND 0x7) == 0) + ScatterAssert(LoadLimit(ITCM_DATA) == LoadBase(ITCM_PAD)) + ScatterAssert(ImageLimit(ITCM_DATA) == ImageBase(ITCM_PAD)) + +#endif + + + +#if DTCM_LENGTH > 0 + ; ALIGN will align both the load address and execution address. + ; The required minimum execution address alignment is an 8 byte boundary for ECC compatibility. + ; Aligning instead to a 16 byte boundary meets the above requirement and also aligns the load address to FCACHE2 for RA8 to optimize copying. + __tz_DTCM_S DTCM_START ALIGN 16 EMPTY 0 + { + } + + DTCM_DATA +0 NOCOMPRESS DTCM_LENGTH + { + *(.dtcm_data*) + } + + ; The required minimum ending alignment is an 8 byte boundary for ECC compatibility. + ; There is no way to control the ending alignment of DTCM_DATA, so this dedicated section acts as padding and as the true load and execution section limit of DTCM_DATA. + ; "Load Addr" will show "-" in the map file making it seem as if no padding is actually in the binary, but "Load base:" will show otherwise. + DTCM_PAD (ImageLimit(DTCM_DATA)) FILL 0 NOCOMPRESS (AlignExpr(ImageLength(DTCM_DATA), 8) - ImageLength(DTCM_DATA)) + { + } + + DTCM_BSS (ImageLimit(DTCM_PAD)) UNINIT NOCOMPRESS (DTCM_LENGTH - ImageLength(DTCM_DATA) - ImageLength(DTCM_PAD)) + { + ; .bss prefix is required for AC6 to not create a load image data for this section. + ; Only .bss prefixed sections can be ZI. + ; Only ZI sections with UNINIT can be uninitialized. + *(.bss.dtcm_bss) + } + + ; The required minimum ending alignment is an 8 byte boundary for ECC compatibility. + ; There is no way to control the ending alignment of DTCM_BSS, so this dedicated section acts as padding and as the true execution section limit of DTCM_BSS. + DTCM_BSS_PAD (ImageLimit(DTCM_BSS)) EMPTY NOCOMPRESS (AlignExpr(ImageLength(DTCM_BSS), 8) - ImageLength(DTCM_BSS)) + { + } + +#ifndef DTCM_NS_START +#define DTCM_NS_START AlignExpr(+0, 8192) +#endif + __tz_DTCM_N DTCM_NS_START ALIGN 8 EMPTY 0 + { + } + + ScatterAssert((DTCM_START AND 0xF) == 0) + ScatterAssert((DTCM_LENGTH AND 0x7) == 0) + ScatterAssert(((LoadLength(DTCM_DATA) + LoadLength(DTCM_PAD)) AND 0x7) == 0) + ScatterAssert(((ImageLength(DTCM_BSS) + ImageLength(DTCM_BSS_PAD)) AND 0x7) == 0) + ScatterAssert(LoadLimit(DTCM_DATA) == LoadBase(DTCM_PAD)) + ScatterAssert(LoadLimit(DTCM_PAD) == LoadBase(DTCM_BSS)) + ScatterAssert(LoadLimit(DTCM_BSS) == LoadBase(DTCM_BSS_PAD)) + ScatterAssert(ImageLimit(DTCM_DATA) == ImageBase(DTCM_PAD)) + ScatterAssert(ImageLimit(DTCM_PAD) == ImageBase(DTCM_BSS)) + ScatterAssert(ImageLimit(DTCM_BSS) == ImageBase(DTCM_BSS_PAD)) + +#endif +} + +LOAD_REGION_NSC_FLASH FLASH_NSC_START +{ + __FLASH_NSC_START FLASH_NSC_START EMPTY 0 + { + } + + EXEC_NSCR FLASH_NSC_START FIXED + { + *(Veneer$$CMSE) + } + + __tz_FLASH_N FLASH_NS_START EMPTY 0 + { + } +} + +#if ID_CODE_OVERLAP == 0 + +#if ID_CODE_LENGTH != 0 +LOAD_REGION_ID_CODE ID_CODE_START ID_CODE_LENGTH +{ + __tz_ID_CODE_S ID_CODE_START EMPTY 0 + { + } + + ; Set this symbol to the same value as __tz_ID_CODE_S so the RA configuration tool does not split the ID_CODE + ; memory region between TrustZone projects. + __tz_ID_CODE_N +0 EMPTY 0 + { + } + + ID_CODE +0 FIXED + { + *(.id_code*) + } +} +#else +LOAD_REGION_ID_CODE ID_CODE_START 4 +{ + __tz_ID_CODE_S ID_CODE_START EMPTY 0 + { + } + + __tz_ID_CODE_N +0 EMPTY 0 + { + } +} +#endif + +#endif + +#if OPTION_SETTING_LENGTH != 0 +LOAD_REGION_OPTION_SETTING OPTION_SETTING_START OPTION_SETTING_LENGTH +{ + __tz_OPTION_SETTING_S OPTION_SETTING_START EMPTY 0 + { + } + +#ifndef PROJECT_NONSECURE + OFS0 OPTION_SETTING_START + 0 FIXED + { + *(.option_setting_ofs0) + } + + UNUSED_0 (ImageBase(OFS0)+ImageLength(OFS0)) FIXED FILL 0xFFFFFFFF (ImageBase(OFS0) + 0x04 - (ImageBase(OFS0)+ImageLength(OFS0))) + { + + } + + OFS2 OPTION_SETTING_START + 0x04 FIXED + { + *(.option_setting_ofs2) + } + + UNUSED_1 (ImageBase(OFS2)+ImageLength(OFS2)) FIXED FILL 0xFFFFFFFF (ImageBase(OFS0) + 0x10 - (ImageBase(OFS2)+ImageLength(OFS2))) + { + + } + + DUALSEL OPTION_SETTING_START + 0x10 FIXED + { + *(.option_setting_dualsel) + } + +#if ID_CODE_OVERLAP == 0 + + UNUSED_2 (ImageBase(DUALSEL)+ImageLength(DUALSEL)) FIXED FILL 0xFFFFFFFF (ImageBase(OFS0) + 0x34 - (ImageBase(DUALSEL)+ImageLength(DUALSEL))) + { + + } + +#else + + UNUSED_BEFORE_ID_CODE (ImageBase(DUALSEL)+ImageLength(DUALSEL)) FIXED FILL 0xFFFFFFFF (ImageBase(OFS0) + 0x20 - (ImageBase(DUALSEL)+ImageLength(DUALSEL))) + { + + } + + __tz_ID_CODE_S ID_CODE_START EMPTY 0 + { + } + + ; Set this symbol to the same value as __tz_ID_CODE_S so the RA configuration tool does not split the ID_CODE + ; memory region between TrustZone projects. + __tz_ID_CODE_N +0 EMPTY 0 + { + } + + ID_CODE ID_CODE_START FIXED + { + *(.id_code*) + } + + UNUSED_AFTER_ID_CODE (ID_CODE_START + ID_CODE_LENGTH) FIXED FILL 0xFFFFFFFF (ImageBase(OFS0) + 0x34 - (ID_CODE_START + ID_CODE_LENGTH) ) + { + + } + +#endif + + SAS OPTION_SETTING_START + 0x34 FIXED + { + *(.option_setting_sas) + } + + UNUSED_3 (ImageBase(SAS)+ImageLength(SAS)) FIXED FILL 0xFFFFFFFF (ImageBase(OFS0) + 0x80 - (ImageBase(SAS)+ImageLength(SAS))) + { + + } + + __tz_OPTION_SETTING_N OPTION_SETTING_START_NS EMPTY 0 + { + } + +#else + + __tz_OPTION_SETTING_N OPTION_SETTING_START EMPTY 0 + { + } + + OFS1 OPTION_SETTING_START FIXED + { + *(.option_setting_ofs1) + } + + UNUSED_4 (ImageBase(OFS1)+ImageLength(OFS1)) FIXED FILL 0xFFFFFFFF (ImageBase(OFS1) + 0x04 - (ImageBase(OFS1)+ImageLength(OFS1))) + { + + } + + OFS3 OPTION_SETTING_START + 0x04 FIXED + { + *(.option_setting_ofs3) + } + + UNUSED_5 (ImageBase(OFS3)+ImageLength(OFS3)) FIXED FILL 0xFFFFFFFF (ImageBase(OFS1) + 0x10 - (ImageBase(OFS3)+ImageLength(OFS3))) + { + + } + + BANKSEL OPTION_SETTING_START + 0x10 FIXED + { + *(.option_setting_banksel) + } + + UNUSED_6 (ImageBase(BANKSEL)+ImageLength(BANKSEL)) FIXED FILL 0xFFFFFFFF (ImageBase(OFS1) + 0x40 - (ImageBase(BANKSEL)+ImageLength(BANKSEL))) + { + + } + + BPS OPTION_SETTING_START + 0x40 FIXED + { + *(.option_setting_bps0) + *(.option_setting_bps1) + *(.option_setting_bps2) + *(.option_setting_bps3) + } + + UNUSED_7 (ImageBase(BPS)+ImageLength(BPS)) FIXED FILL 0xFFFFFFFF (ImageBase(OFS1) + 0x60 - (ImageBase(BPS)+ImageLength(BPS))) + { + + } + + PBPS OPTION_SETTING_START + 0x60 FIXED + { + *(.option_setting_pbps0) + *(.option_setting_pbps1) + *(.option_setting_pbps2) + *(.option_setting_pbps3) + } + + UNUSED_8 (ImageBase(PBPS)+ImageLength(PBPS)) FIXED FILL 0xFFFFFFFF (ImageBase(OFS1) + 0x80 - (ImageBase(PBPS)+ImageLength(PBPS))) + { + + } +#endif + +} + +#if OPTION_SETTING_S_LENGTH != 0 +LOAD_REGION_OPTION_SETTING_S OPTION_SETTING_S_START OPTION_SETTING_S_LENGTH +{ + __tz_OPTION_SETTING_S_S OPTION_SETTING_S_START EMPTY 0 + { + } + +#ifndef PROJECT_NONSECURE + + OFS1_SEC OPTION_SETTING_S_START + 0 FIXED + { + *(.option_setting_ofs1_sec) + } + + UNUSED_7 (ImageBase(OFS1_SEC)+ImageLength(OFS1_SEC)) FIXED FILL 0xFFFFFFFF (ImageBase(OFS1_SEC) + 0x04 - (ImageBase(OFS1_SEC)+ImageLength(OFS1_SEC))) + { + + } + + OFS3_SEC OPTION_SETTING_S_START + 0x04 FIXED + { + *(.option_setting_ofs3_sec) + } + + UNUSED_8 (ImageBase(OFS3_SEC)+ImageLength(OFS3_SEC)) FIXED FILL 0xFFFFFFFF (ImageBase(OFS1_SEC) + 0x10 - (ImageBase(OFS3_SEC)+ImageLength(OFS3_SEC))) + { + + } + + BANKSEL_SEC OPTION_SETTING_S_START + 0x10 FIXED + { + *(.option_setting_banksel_sec) + } + + UNUSED_9 (ImageBase(BANKSEL_SEC)+ImageLength(BANKSEL_SEC)) FIXED FILL 0xFFFFFFFF (ImageBase(OFS1_SEC) + 0x40 - (ImageBase(BANKSEL_SEC)+ImageLength(BANKSEL_SEC))) + { + + } + + BPS_SEC OPTION_SETTING_S_START + 0x40 FIXED + { + *(.option_setting_bps_sec0) + *(.option_setting_bps_sec1) + *(.option_setting_bps_sec2) + *(.option_setting_bps_sec3) + } + + UNUSED_10 (ImageBase(BPS_SEC)+ImageLength(BPS_SEC)) FIXED FILL 0xFFFFFFFF (ImageBase(OFS1_SEC) + 0x60 - (ImageBase(BPS_SEC)+ImageLength(BPS_SEC))) + { + + } + + PBPS_SEC OPTION_SETTING_S_START + 0x60 FIXED + { + *(.option_setting_pbps_sec0) + *(.option_setting_pbps_sec1) + *(.option_setting_pbps_sec2) + *(.option_setting_pbps_sec3) + } + + UNUSED_11 (ImageBase(PBPS_SEC)+ImageLength(PBPS_SEC)) FIXED FILL 0xFFFFFFFF (ImageBase(OFS1_SEC) + 0x80 - (ImageBase(PBPS_SEC)+ImageLength(PBPS_SEC))) + { + + } + + OFS1_SEL OPTION_SETTING_S_START + 0x80 FIXED + { + *(.option_setting_ofs1_sel) + } + + UNUSED_12 (ImageBase(OFS1_SEL)+ImageLength(OFS1_SEL)) FIXED FILL 0xFFFFFFFF (ImageBase(OFS1_SEC) + 0x84 - (ImageBase(OFS1_SEL)+ImageLength(OFS1_SEL))) + { + + } + + OFS3_SEL OPTION_SETTING_S_START + 0x84 FIXED + { + *(.option_setting_ofs3_sel) + } + + UNUSED_13 (ImageBase(OFS3_SEL)+ImageLength(OFS3_SEL)) FIXED FILL 0xFFFFFFFF (ImageBase(OFS1_SEC) + 0x90 - (ImageBase(OFS3_SEL)+ImageLength(OFS3_SEL))) + { + + } + + BANKSEL_SEL OPTION_SETTING_S_START + 0x90 FIXED + { + *(.option_setting_banksel_sel) + } + + UNUSED_14 (ImageBase(BANKSEL_SEL)+ImageLength(BANKSEL_SEL)) FIXED FILL 0xFFFFFFFF (ImageBase(OFS1_SEC) + 0xC0 - (ImageBase(BANKSEL_SEL)+ImageLength(BANKSEL_SEL))) + { + + } + + BPS_SEL OPTION_SETTING_S_START + 0xC0 FIXED + { + *(.option_setting_bps_sel0) + *(.option_setting_bps_sel1) + *(.option_setting_bps_sel2) + *(.option_setting_bps_sel3) + } + + UNUSED_15 (ImageBase(BPS_SEL)+ImageLength(BPS_SEL)) FIXED FILL 0xFFFFFFFF (ImageBase(OFS1_SEC) + 0x100 - (ImageBase(BPS_SEL)+ImageLength(BPS_SEL))) + { + + } + +#endif + + __tz_OPTION_SETTING_S_N +0 EMPTY 0 + { + } +} +#endif +#endif +#if OPTION_SETTING_DATA_FLASH_S_LENGTH != 0 +LOAD_REGION_OPTION_SETTING_DATA_FLASH_S OPTION_SETTING_DATA_FLASH_S_START OPTION_SETTING_DATA_FLASH_S_LENGTH +{ + __tz_OPTION_SETTING_DATA_FLASH_S_S OPTION_SETTING_DATA_FLASH_S_START EMPTY 0 + { + } + +#ifndef PROJECT_NONSECURE + FSBLCTRL0 OPTION_SETTING_DATA_FLASH_S_START + 0x0 FIXED + { + *(.option_setting_data_flash_fsblctrl0) + } + + UNUSED_16 (ImageBase(FSBLCTRL0)+ImageLength(FSBLCTRL0)) FIXED FILL 0xFFFFFFFF (ImageBase(FSBLCTRL0) + 0x04 - (ImageBase(FSBLCTRL0)+ImageLength(FSBLCTRL0))) + { + } + + FSBLCTRL1 OPTION_SETTING_DATA_FLASH_S_START + 0x04 FIXED + { + *(.option_setting_data_flash_fsblctrl1) + } + + UNUSED_17 (ImageBase(FSBLCTRL1)+ImageLength(FSBLCTRL1)) FIXED FILL 0xFFFFFFFF (ImageBase(FSBLCTRL0) + 0x08 - (ImageBase(FSBLCTRL1)+ImageLength(FSBLCTRL1))) + { + } + + FSBLCTRL2 OPTION_SETTING_DATA_FLASH_S_START + 0x08 FIXED + { + *(.option_setting_data_flash_fsblctrl2) + } + + UNUSED_18 (ImageBase(FSBLCTRL2)+ImageLength(FSBLCTRL2)) FIXED FILL 0xFFFFFFFF (ImageBase(FSBLCTRL0) + 0x0C - (ImageBase(FSBLCTRL2)+ImageLength(FSBLCTRL2))) + { + } + + SACC0 OPTION_SETTING_DATA_FLASH_S_START + 0x0C FIXED + { + *(.option_setting_data_flash_sacc0) + } + + UNUSED_19 (ImageBase(SACC0)+ImageLength(SACC0)) FIXED FILL 0xFFFFFFFF (ImageBase(FSBLCTRL0) + 0x010 - (ImageBase(SACC0)+ImageLength(SACC0))) + { + } + + SACC1 OPTION_SETTING_DATA_FLASH_S_START + 0x10 FIXED + { + *(.option_setting_data_flash_sacc1) + } + + UNUSED_20 (ImageBase(SACC1)+ImageLength(SACC1)) FIXED FILL 0xFFFFFFFF (ImageBase(FSBLCTRL0) + 0x14 - (ImageBase(SACC1)+ImageLength(SACC1))) + { + } + + SAMR OPTION_SETTING_DATA_FLASH_S_START + 0x14 FIXED + { + *(.option_setting_data_flash_samr) + } + + UNUSED_21 (ImageBase(SAMR)+ImageLength(SAMR)) FIXED FILL 0xFFFFFFFF (ImageBase(FSBLCTRL0) + 0x2E0 - (ImageBase(SAMR)+ImageLength(SAMR))) + { + } + + HOEMRTPK OPTION_SETTING_DATA_FLASH_S_START + 0x2E0 FIXED + { + *(.option_setting_data_flash_hoemrtpk) + } + + UNUSED_22 (ImageBase(HOEMRTPK)+ImageLength(HOEMRTPK)) FIXED FILL 0xFFFFFFFF (ImageBase(FSBLCTRL0) + 0x300 - (ImageBase(HOEMRTPK)+ImageLength(HOEMRTPK))) + { + } + +#endif + + __tz_OPTION_SETTING_DATA_FLASH_S_N +0 EMPTY 0 + { + } + +} +#endif + +LOAD_REGION_DATA_FLASH DATA_FLASH_START DATA_FLASH_LENGTH +{ + __tz_DATA_FLASH_S DATA_FLASH_S_START EMPTY 0 + { + } + DATA_FLASH +0 + { + *(.data_flash*) + } + __tz_DATA_FLASH_N DATA_FLASH_NS_START EMPTY 0 + { + } +} + +LOAD_REGION_QSPI_FLASH QSPI_FLASH_START QSPI_FLASH_PRV_LENGTH +{ + __tz_QSPI_FLASH_S QSPI_FLASH_S_START EMPTY 0 + { + } + QSPI_FLASH +0 FIXED + { + *(.qspi_flash*) + *(.code_in_qspi*) + } + __tz_QSPI_FLASH_N QSPI_FLASH_NS_START EMPTY 0 + { + } +} + +LOAD_REGION_OSPI_DEVICE_0 OSPI_DEVICE_0_START OSPI_DEVICE_0_PRV_LENGTH +{ + __tz_OSPI_DEVICE_0_S OSPI_DEVICE_0_S_START EMPTY 0 + { + } + OSPI_DEVICE_0 +0 FIXED + { + *(.ospi_device_0*) + *(.code_in_ospi_device_0*) + } + __tz_OSPI_DEVICE_0_N OSPI_DEVICE_0_NS_START EMPTY 0 + { + } +} + +LOAD_REGION_OSPI_DEVICE_1 OSPI_DEVICE_1_START OSPI_DEVICE_1_PRV_LENGTH +{ + __tz_OSPI_DEVICE_1_S OSPI_DEVICE_1_S_START EMPTY 0 + { + } + OSPI_DEVICE_1 +0 FIXED + { + *(.ospi_device_1*) + *(.code_in_ospi_device_1*) + } + __tz_OSPI_DEVICE_1_N OSPI_DEVICE_1_NS_START EMPTY 0 + { + } +} + +LOAD_REGION_SDRAM SDRAM_START SDRAM_LENGTH +{ + __tz_SDRAM_S SDRAM_S_START EMPTY 0 + { + } + + SDRAM +0 FIXED + { + *(.sdram*) + *(.frame*) + } + + NOCACHE_SDRAM +0 UNINIT NOCOMPRESS ALIGN 32 + { + *(.bss.nocache_sdram) + } + + ; The required minimum ending alignment is a 32 byte boundary for Armv8-M MPU requirements. + ; There is no way to control the ending alignment of NOCACHE_SDRAM, so this dedicated section acts as padding and as the true execution section limit of NOCACHE_SDRAM. + NOCACHE_SDRAM_PAD (ImageLimit(NOCACHE_SDRAM)) EMPTY NOCOMPRESS (AlignExpr(ImageLength(NOCACHE_SDRAM), 32) - ImageLength(NOCACHE_SDRAM)) + { + } + + __tz_SDRAM_N SDRAM_NS_START EMPTY 0 + { + } +} \ No newline at end of file diff --git a/bsp/renesas/ra8m1-ek/script/memory_regions.ld b/bsp/renesas/ra8m1-ek/script/memory_regions.ld new file mode 100644 index 000000000000..836a3b55c240 --- /dev/null +++ b/bsp/renesas/ra8m1-ek/script/memory_regions.ld @@ -0,0 +1,22 @@ + + /* generated memory regions file - do not edit */ + RAM_START = 0x1FFE0000; + RAM_LENGTH = 0xA0000; + FLASH_START = 0x00000000; + FLASH_LENGTH = 0x200000; + DATA_FLASH_START = 0x40100000; + DATA_FLASH_LENGTH = 0x10000; + OPTION_SETTING_START = 0x00000000; + OPTION_SETTING_LENGTH = 0x0; + OPTION_SETTING_S_START = 0x00000000; + OPTION_SETTING_S_LENGTH = 0x0; + ID_CODE_START = 0x0100A150; + ID_CODE_LENGTH = 0x10; + SDRAM_START = 0x90000000; + SDRAM_LENGTH = 0x8000000; + QSPI_FLASH_START = 0x60000000; + QSPI_FLASH_LENGTH = 0x4000000; + OSPI_DEVICE_0_START = 0x68000000; + OSPI_DEVICE_0_LENGTH = 0x0; + OSPI_DEVICE_1_START = 0x70000000; + OSPI_DEVICE_1_LENGTH = 0x0; diff --git a/bsp/renesas/ra8m1-ek/src/hal_entry.c b/bsp/renesas/ra8m1-ek/src/hal_entry.c new file mode 100644 index 000000000000..af8c495f832e --- /dev/null +++ b/bsp/renesas/ra8m1-ek/src/hal_entry.c @@ -0,0 +1,28 @@ +/* + * Copyright (c) 2006-2023, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2021-10-10 Sherman first version + */ + +#include +#include "hal_data.h" +#include + +#define LED_PIN BSP_IO_PORT_06_PIN_00 /* Onboard LED pins */ + +void hal_entry(void) +{ + rt_kprintf("\nHello RT-Thread!\n"); + + while (1) + { + rt_pin_write(LED_PIN, PIN_HIGH); + rt_thread_mdelay(500); + rt_pin_write(LED_PIN, PIN_LOW); + rt_thread_mdelay(500); + } +} diff --git a/bsp/renesas/ra8m1-ek/template.uvguix.RTT b/bsp/renesas/ra8m1-ek/template.uvguix.RTT new file mode 100644 index 000000000000..16986da93c3c --- /dev/null +++ b/bsp/renesas/ra8m1-ek/template.uvguix.RTT @@ -0,0 +1,1860 @@ + + + + -6.1 + +
### uVision Project, (C) Keil Software
+ + + + + + + + + + 38003 + Registers + 140 90 + + + 346 + Code Coverage + 1010 160 + + + 204 + Performance Analyzer + 1170 + + + + + + 35141 + Event Statistics + + 200 50 700 + + + 1506 + Symbols + + 80 80 80 + + + 1936 + Watch 1 + + 200 133 133 + + + 1937 + Watch 2 + + 200 133 133 + + + 1935 + Call Stack + Locals + + 200 133 133 + + + 2506 + Trace Data + + 75 135 130 95 70 230 200 150 + + + 466 + Source Browser + 500 + 300 + + + + + + + + 1 + 1 + 0 + 0 + -1 + + + + + + + 44 + 2 + 3 + + -1 + -1 + + + -1 + -1 + + + 0 + -8 + 1087 + 778 + + + + 0 + + 60 + 010000000400000001000000010000000100000001000000000000000200000000000000010000000100000000000000280000002800000000000000 + + + + 0 + Build + + -1 + -1 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F40000004F00000090050000E0000000 + + + 16 + F40000006600000090050000F7000000 + + + + 1005 + 1005 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000066000000ED00000042030000 + + + 16 + BE000000D5000000AE010000A2010000 + + + + 109 + 109 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000066000000ED00000042030000 + + + 16 + BE000000D5000000DA0100001C030000 + + + + 1465 + 1465 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000370200008D050000AC020000 + + + 16 + BE000000D50000008603000066010000 + + + + 1466 + 1466 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000370200008D050000AC020000 + + + 16 + BE000000D50000008603000066010000 + + + + 1467 + 1467 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000370200008D050000AC020000 + + + 16 + BE000000D50000008603000066010000 + + + + 1468 + 1468 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000370200008D050000AC020000 + + + 16 + BE000000D50000008603000066010000 + + + + 1506 + 1506 + 0 + 0 + 0 + 0 + 32767 + 0 + 16384 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + BE000000D5000000AE010000A2010000 + + + + 1913 + 1913 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000008D050000C7000000 + + + 16 + BE000000D50000008603000066010000 + + + + 1935 + 1935 + 0 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 03000000370200008D050000AC020000 + + + 16 + BE000000D5000000AE010000A2010000 + + + + 1936 + 1936 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000370200008D050000AC020000 + + + 16 + BE000000D5000000AE010000A2010000 + + + + 1937 + 1937 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000370200008D050000AC020000 + + + 16 + BE000000D5000000AE010000A2010000 + + + + 1939 + 1939 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000370200008D050000AC020000 + + + 16 + BE000000D50000008603000066010000 + + + + 1940 + 1940 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000370200008D050000AC020000 + + + 16 + BE000000D50000008603000066010000 + + + + 1941 + 1941 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000370200008D050000AC020000 + + + 16 + BE000000D50000008603000066010000 + + + + 1942 + 1942 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000370200008D050000AC020000 + + + 16 + BE000000D50000008603000066010000 + + + + 195 + 195 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000066000000ED00000042030000 + + + 16 + BE000000D5000000DA0100001C030000 + + + + 196 + 196 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000066000000ED00000042030000 + + + 16 + BE000000D5000000DA0100001C030000 + + + + 197 + 197 + 1 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 000000007303000080070000F0030000 + + + 16 + BE000000D50000008603000066010000 + + + + 198 + 198 + 0 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 000000002002000090050000C5020000 + + + 16 + BE000000D50000008603000066010000 + + + + 199 + 199 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000760300007D070000D7030000 + + + 16 + BE000000D50000008603000066010000 + + + + 203 + 203 + 0 + 0 + 0 + 0 + 32767 + 0 + 8192 + 0 + + 16 + F7000000660000008D050000C7000000 + + + 16 + BE000000D50000008603000066010000 + + + + 204 + 204 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000008D050000C7000000 + + + 16 + BE000000D50000008603000066010000 + + + + 221 + 221 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 00000000000000000000000000000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 2506 + 2506 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + BE000000D5000000AE010000A2010000 + + + + 2507 + 2507 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000370200008D050000AC020000 + + + 16 + BE000000D50000008603000066010000 + + + + 343 + 343 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000008D050000C7000000 + + + 16 + BE000000D50000008603000066010000 + + + + 346 + 346 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000008D050000C7000000 + + + 16 + BE000000D50000008603000066010000 + + + + 35141 + 35141 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000008D050000C7000000 + + + 16 + BE000000D5000000AE010000A2010000 + + + + 35824 + 35824 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000008D050000C7000000 + + + 16 + BE000000D50000008603000066010000 + + + + 35885 + 35885 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + BE000000D5000000AE010000A2010000 + + + + 35886 + 35886 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + BE000000D5000000AE010000A2010000 + + + + 35887 + 35887 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + BE000000D5000000AE010000A2010000 + + + + 35888 + 35888 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + BE000000D5000000AE010000A2010000 + + + + 35889 + 35889 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + BE000000D5000000AE010000A2010000 + + + + 35890 + 35890 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + BE000000D5000000AE010000A2010000 + + + + 35891 + 35891 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + BE000000D5000000AE010000A2010000 + + + + 35892 + 35892 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + BE000000D5000000AE010000A2010000 + + + + 35893 + 35893 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + BE000000D5000000AE010000A2010000 + + + + 35894 + 35894 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + BE000000D5000000AE010000A2010000 + + + + 35895 + 35895 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + BE000000D5000000AE010000A2010000 + + + + 35896 + 35896 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + BE000000D5000000AE010000A2010000 + + + + 35897 + 35897 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + BE000000D5000000AE010000A2010000 + + + + 35898 + 35898 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + BE000000D5000000AE010000A2010000 + + + + 35899 + 35899 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + BE000000D5000000AE010000A2010000 + + + + 35900 + 35900 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + BE000000D5000000AE010000A2010000 + + + + 35901 + 35901 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + BE000000D5000000AE010000A2010000 + + + + 35902 + 35902 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + BE000000D5000000AE010000A2010000 + + + + 35903 + 35903 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + BE000000D5000000AE010000A2010000 + + + + 35904 + 35904 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + BE000000D5000000AE010000A2010000 + + + + 35905 + 35905 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + BE000000D5000000AE010000A2010000 + + + + 38003 + 38003 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000066000000ED00000042030000 + + + 16 + BE000000D5000000DA0100001C030000 + + + + 38007 + 38007 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000760300007D070000D7030000 + + + 16 + BE000000D50000008603000066010000 + + + + 436 + 436 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000760300007D070000D7030000 + + + 16 + BE000000D5000000DA0100001C030000 + + + + 437 + 437 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000370200008D050000AC020000 + + + 16 + BE000000D5000000AE010000A2010000 + + + + 440 + 440 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000370200008D050000AC020000 + + + 16 + BE000000D5000000AE010000A2010000 + + + + 463 + 463 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000760300007D070000D7030000 + + + 16 + BE000000D5000000DA0100001C030000 + + + + 466 + 466 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000760300007D070000D7030000 + + + 16 + BE000000D5000000DA0100001C030000 + + + + 470 + 470 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000008D050000C7000000 + + + 16 + BE000000D50000008603000066010000 + + + + 50000 + 50000 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + BE000000D5000000AE010000A2010000 + + + + 50001 + 50001 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + BE000000D5000000AE010000A2010000 + + + + 50002 + 50002 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + BE000000D5000000AE010000A2010000 + + + + 50003 + 50003 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + BE000000D5000000AE010000A2010000 + + + + 50004 + 50004 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + BE000000D5000000AE010000A2010000 + + + + 50005 + 50005 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + BE000000D5000000AE010000A2010000 + + + + 50006 + 50006 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + BE000000D5000000AE010000A2010000 + + + + 50007 + 50007 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + BE000000D5000000AE010000A2010000 + + + + 50008 + 50008 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + BE000000D5000000AE010000A2010000 + + + + 50009 + 50009 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + BE000000D5000000AE010000A2010000 + + + + 50010 + 50010 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + BE000000D5000000AE010000A2010000 + + + + 50011 + 50011 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + BE000000D5000000AE010000A2010000 + + + + 50012 + 50012 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + BE000000D5000000AE010000A2010000 + + + + 50013 + 50013 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + BE000000D5000000AE010000A2010000 + + + + 50014 + 50014 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + BE000000D5000000AE010000A2010000 + + + + 50015 + 50015 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + BE000000D5000000AE010000A2010000 + + + + 50016 + 50016 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + BE000000D5000000AE010000A2010000 + + + + 50017 + 50017 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + BE000000D5000000AE010000A2010000 + + + + 50018 + 50018 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + BE000000D5000000AE010000A2010000 + + + + 50019 + 50019 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + BE000000D5000000AE010000A2010000 + + + + 59392 + 59392 + 1 + 0 + 0 + 0 + 966 + 0 + 8192 + 0 + + 16 + 0000000000000000D10300001C000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 59393 + 0 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 00000000F00300008007000003040000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 59399 + 59399 + 1 + 0 + 0 + 0 + 476 + 0 + 8192 + 1 + + 16 + 000000001C000000E701000038000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 59400 + 59400 + 0 + 0 + 0 + 0 + 612 + 0 + 8192 + 2 + + 16 + 00000000380000006F02000054000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 824 + 824 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000370200008D050000AC020000 + + + 16 + BE000000D5000000AE010000A2010000 + + + + 3312 + 000000000B000000000000000020000000000000FFFFFFFFFFFFFFFFF4000000E000000090050000E4000000000000000100000004000000010000000000000000000000FFFFFFFF08000000CB00000057010000CC000000F08B00005A01000079070000D601000045890000FFFF02000B004354616262656450616E650020000000000000F40000006600000090050000F7000000F40000004F00000090050000E00000000000000040280046080000000B446973617373656D626C7900000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFF0F53797374656D20416E616C797A657200000000D601000001000000FFFFFFFFFFFFFFFF104576656E742053746174697374696373000000004589000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFF9C0400004F000000A004000030020000000000000200000004000000010000000000000000000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C3000001800040000000000000A0040000660000009005000047020000A00400004F000000900500003002000000000000404100462B0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFFF00000004F000000F40000005B030000010000000200001004000000010000000000000000000000FFFFFFFF05000000ED0300006D000000C3000000C400000073940000018000100000010000000000000066000000F000000072030000000000004F000000F00000005B0300000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73010000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7301000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657301000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273000000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000000000000FFFFFFFFFFFFFFFF000000001C020000900500002002000000000000010000000400000001000000000000000000000000000000000000000000000001000000C6000000FFFFFFFF0F0000008F070000930700009407000095070000960700009007000091070000B5010000B801000038030000B9050000BA050000BB050000BC050000CB09000001800080000000000000000000003702000090050000DC020000000000002002000090050000C502000000000000404100460F0000001343616C6C20537461636B202B204C6F63616C73000000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF09554C494E4B706C7573000000003803000001000000FFFFFFFFFFFFFFFF084D656D6F7279203100000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFFFFFFFFFF0000000001000000000000000000000001000000FFFFFFFFC802000020020000CC020000C502000000000000020000000400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000001000000FFFFFFFFFFFFFFFF000000005B030000800700005F030000010000000100001004000000010000000000000000000000FFFFFFFF06000000C5000000C7000000B4010000D2010000CF010000779400000180008000000100000000000000760300008007000007040000000000005F03000080070000F00300000000000040820056060000000C4275696C64204F757470757401000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657300000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0E536F757263652042726F7773657200000000D201000001000000FFFFFFFFFFFFFFFF0E416C6C205265666572656E63657300000000CF01000001000000FFFFFFFFFFFFFFFF0742726F77736572000000007794000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000 + + + 59392 + File + + 2599 + 00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000400020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000004000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000004000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000004000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000004000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE80300000000040000000000000000000000000000000000000100000001000000960000000200205000000000184253505F464541545552455F4253505F4841535F4954434D96000000000000000200184253505F464541545552455F4253505F4841535F4954434D0454454E440000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000004001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E2280000002000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B46350000000000000000000000000100000001000000000000000000000001000000020021802280000000000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B4635000000000000000000000000010000000100000000000000000000000100000000002180E0010000000000007500000021456E65726779204D6561737572656D656E742026776974686F75742044656275670000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000400160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000003002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000000002180E50100000000000078000000264B696C6C20416C6C20427265616B706F696E747320696E204163746976652050726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180E601000000000000790000002F4B696C6C20416C6C20427265616B706F696E747320696E204D756C74692D50726F6A65637420576F726B73706163650000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000021804C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002180DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002180E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002180E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000218018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000021800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002180D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002180E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65C6030000 + + + 1423 + 2800FFFF01001100434D4643546F6F6C426172427574746F6E00E1000000000000FFFFFFFF000100000000000000010000000000000001000000018001E1000000000000FFFFFFFF000100000000000000010000000000000001000000018003E1000000000000FFFFFFFF0001000000000000000100000000000000010000000180CD7F000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF000000000000000000010000000000000001000000018023E1000000000000FFFFFFFF000100000000000000010000000000000001000000018022E1000000000000FFFFFFFF000100000000000000010000000000000001000000018025E1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001802BE1000000000000FFFFFFFF00010000000000000001000000000000000100000001802CE1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001807A8A000000000000FFFFFFFF00010000000000000001000000000000000100000001807B8A000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180D3B0000000000000FFFFFFFF000100000000000000010000000000000001000000018015B1000000000000FFFFFFFF0001000000000000000100000000000000010000000180F4B0000000000000FFFFFFFF000100000000000000010000000000000001000000018036B1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180FF88000000000000FFFFFFFF0001000000000000000100000000000000010000000180FE88000000000000FFFFFFFF00010000000000000001000000000000000100000001800B81000000000000FFFFFFFF00010000000000000001000000000000000100000001800C81000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180F088000000000000FFFFFFFF0001000000000000000100000000000000010000000180EE7F000000000000FFFFFFFF000100000000000000010000000000000001000000018024E1000000000000FFFFFFFF00010000000000000001000000000000000100000001800A81000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001802280000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180C488000000000000FFFFFFFF0001000000000000000100000000000000010000000180C988000000000000FFFFFFFF0001000000000000000100000000000000010000000180C788000000000000FFFFFFFF0001000000000000000100000000000000010000000180C888000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180DD88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180FB7F000000000000FFFFFFFF000100000000000000010000000000000001000000 + + + 1423 + 2800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000000004000000000000000000000000000000000100000001000000018022E100000000000005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000000000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000000000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000000000C0000000000000000000000000000000001000000010000000180F4B00000000000000D000000000000000000000000000000000100000001000000018036B10000000000000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF880000000000000F0000000000000000000000000000000001000000010000000180FE880000000000001000000000000000000000000000000000010000000100000001800B810000000000001100000000000000000000000000000000010000000100000001800C810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F088000000000000130000000000000000000000000000000001000000010000000180EE7F00000000000014000000000000000000000000000000000100000001000000018024E10000000000001500000000000000000000000000000000010000000100000001800A810000000000001600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018022800000000000001700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000180000000000000000000000000000000001000000010000000180C988000000000000190000000000000000000000000000000001000000010000000180C7880000000000001A0000000000000000000000000000000001000000010000000180C8880000000000001B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180DD880000000000001C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001D000000000000000000000000000000000100000001000000 + + + + 59399 + Build + + 976 + 00200000010000001000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F0000000004001C0000000000000000000000000000000001000000010000000180D07F0000000000001D000000000000000000000000000000000100000001000000018030800000000000001E000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6EC7040000000000006A0000000C4261746368204275696C2664000000000000000000000000010000000100000000000000000000000100000004000580C7040000000000006A0000000C4261746368204275696C266400000000000000000000000001000000010000000000000000000000010000000000058046070000000000006B0000000D42617463682052656275696C640000000000000000000000000100000001000000000000000000000001000000000005804707000000000000FFFFFFFF0B426174636820436C65616E0100000000000000000000000100000001000000000000000000000001000000000005809E8A0000000000001F0000000F4261746326682053657475702E2E2E000000000000000000000000010000000100000000000000000000000100000000000180D17F0000000004002000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000002100000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6EBA000000000000000000000000000000000000000000000000010000000100000096000000030020500000000008546172676574203196000000000000000100085461726765742031000000000180EB880000000000002200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000230000000000000000000000000000000001000000010000000180B08A000000000400240000000000000000000000000000000001000000010000000180A8010000000000004E00000000000000000000000000000000010000000100000001807202000000000000530000000000000000000000000000000001000000010000000180BE010000000000005000000000000000000000000000000000010000000100000000000000054275696C64DC010000 + + + 583 + 1000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F000000000000FFFFFFFF0001000000000000000100000000000000010000000180D07F000000000000FFFFFFFF00010000000000000001000000000000000100000001803080000000000000FFFFFFFF00010000000000000001000000000000000100000001809E8A000000000000FFFFFFFF0001000000000000000100000000000000010000000180D17F000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001804C8A000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001806680000000000000FFFFFFFF0001000000000000000100000000000000010000000180EB88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180C07F000000000000FFFFFFFF0001000000000000000100000000000000010000000180B08A000000000000FFFFFFFF0001000000000000000100000000000000010000000180A801000000000000FFFFFFFF00010000000000000001000000000000000100000001807202000000000000FFFFFFFF0001000000000000000100000000000000010000000180BE01000000000000FFFFFFFF000100000000000000010000000000000001000000 + + + 583 + 1000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F000000000000000000000000000000000000000000000001000000010000000180D07F00000000000001000000000000000000000000000000000100000001000000018030800000000000000200000000000000000000000000000000010000000100000001809E8A000000000000030000000000000000000000000000000001000000010000000180D17F0000000000000400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000000500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001806680000000000000060000000000000000000000000000000001000000010000000180EB880000000000000700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000080000000000000000000000000000000001000000010000000180B08A000000000000090000000000000000000000000000000001000000010000000180A8010000000000000A000000000000000000000000000000000100000001000000018072020000000000000B0000000000000000000000000000000001000000010000000180BE010000000000000C000000000000000000000000000000000100000001000000 + + + + 59400 + Debug + + 2373 + 00200000000000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000000002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000000000002D0000000000000000000000000000000001000000010000000180F07F0000000000002E0000000000000000000000000000000001000000010000000180E8880000000000003700000000000000000000000000000000010000000100000001803B010000000000002F0000000000000000000000000000000001000000010000000180BB8A00000000000030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000000000000310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380D88B00000000000031000000085761746368202631000000000000000000000000010000000100000000000000000000000100000000001380D98B00000000000031000000085761746368202632000000000000000000000000010000000100000000000000000000000100000000001380CE01000000000000FFFFFFFF0C576174636820416E63686F720000000000000000010000000000000001000000000000000000000001000000000013800F01000000000000320000000E4D656D6F72792057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000094D656D6F7279202632000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000094D656D6F7279202633000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000094D656D6F72792026340000000000000000000000000100000001000000000000000000000001000000000013801001000000000000330000000E53657269616C2057696E646F77730000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000000013809407000000000000330000000855415254202326320000000000000000000000000100000001000000000000000000000001000000000013809507000000000000330000000855415254202326330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000001626446562756720287072696E746629205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000007200000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380658A000000000000340000000F264C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E0000001526506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000E26436F646520436F766572616765000000000000000000000000010000000100000000000000000000000100000000001380CD01000000000000FFFFFFFF0F416E616C7973697320416E63686F7200000000000000000100000000000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720000000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720000000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000013800189000000000000360000000F26546F6F6C626F782057696E646F7700000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730000000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F72000000000000000001000000000000000100000000000000000000000100000000000000000005446562756764020000 + + + 898 + 1900FFFF01001100434D4643546F6F6C426172427574746F6ECC88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001801780000000000000FFFFFFFF00010000000000000001000000000000000100000001801D80000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001801A80000000000000FFFFFFFF00010000000000000001000000000000000100000001801B80000000000000FFFFFFFF0001000000000000000100000000000000010000000180E57F000000000000FFFFFFFF00010000000000000001000000000000000100000001801C80000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001800089000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180E48B000000000000FFFFFFFF0001000000000000000100000000000000010000000180F07F000000000000FFFFFFFF0001000000000000000100000000000000010000000180E888000000000000FFFFFFFF00010000000000000001000000000000000100000001803B01000000000000FFFFFFFF0001000000000000000100000000000000010000000180BB8A000000000000FFFFFFFF0001000000000000000100000000000000010000000180D88B000000000000FFFFFFFF0001000000000000000100000000000000010000000180D28B000000000000FFFFFFFF00010000000000000001000000000000000100000001809307000000000000FFFFFFFF0001000000000000000100000000000000010000000180658A000000000000FFFFFFFF0001000000000000000100000000000000010000000180C18A000000000000FFFFFFFF0001000000000000000100000000000000010000000180EE8B000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001800189000000000000FFFFFFFF000100000000000000010000000000000001000000 + + + 898 + 1900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000000000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000000100000000000000000000000000000000010000000100000001801D800000000000000200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000000300000000000000000000000000000000010000000100000001801B80000000000000040000000000000000000000000000000001000000010000000180E57F0000000000000500000000000000000000000000000000010000000100000001801C800000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000000700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B000000000000080000000000000000000000000000000001000000010000000180F07F000000000000090000000000000000000000000000000001000000010000000180E8880000000000000A00000000000000000000000000000000010000000100000001803B010000000000000B0000000000000000000000000000000001000000010000000180BB8A0000000000000C0000000000000000000000000000000001000000010000000180D88B0000000000000D0000000000000000000000000000000001000000010000000180D28B0000000000000E000000000000000000000000000000000100000001000000018093070000000000000F0000000000000000000000000000000001000000010000000180658A000000000000100000000000000000000000000000000001000000010000000180C18A000000000000110000000000000000000000000000000001000000010000000180EE8B0000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180018900000000000013000000000000000000000000000000000100000001000000 + + + + 0 + 1920 + 1080 + + + + +
diff --git a/bsp/renesas/ra8m1-ek/template.uvoptx b/bsp/renesas/ra8m1-ek/template.uvoptx new file mode 100644 index 000000000000..440395c261fa --- /dev/null +++ b/bsp/renesas/ra8m1-ek/template.uvoptx @@ -0,0 +1,208 @@ + + + + 1.0 + +
### uVision Project, (C) Keil Software
+ + + *.c + *.s*; *.src; *.a* + *.obj; *.o + *.lib + *.txt; *.h; *.inc; *.md + *.plm + *.cpp + 0 + + + + 0 + 0 + + + + Target 1 + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 0 + 1 + 1 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\Listings\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 1 + + 255 + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 0 + 4 + + + + + + + + + + + Segger\JL2CM3.dll + + + + 0 + UL2V8M + UL2V8M(-S0 -C0 -P0 ) -FN3 -FC2000 -FD22000000 -FF0RA8D1_2M -FF1RA8D1_DATA_C2M -FF2RA8D1_CCONF -FL01F8000 -FL13000 -FL2200 -FS02000000 -FS127000000 -FS2300A100 -FP0($$Device:R7FA8D1BH$Flash\RA8D1_2M.FLM) -FP1($$Device:R7FA8D1BH$Flash\RA8D1_DATA_C2M.FLM) -FP2($$Device:R7FA8D1BH$Flash\RA8D1_CCONF.FLM) + + + + + 0 + + + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + 0 + 0 + 0 + + + + + + + + + + + + + Source Group 1 + 0 + 0 + 0 + 0 + + + + :Renesas RA Smart Configurator:Common Sources + 0 + 0 + 0 + 0 + + 2 + 1 + 1 + 0 + 0 + 0 + .\src\hal_entry.c + hal_entry.c + 0 + 0 + + + + + ::Flex Software + 0 + 0 + 0 + 1 + + +
diff --git a/bsp/renesas/ra8m1-ek/template.uvprojx b/bsp/renesas/ra8m1-ek/template.uvprojx new file mode 100644 index 000000000000..4da4b113ff16 --- /dev/null +++ b/bsp/renesas/ra8m1-ek/template.uvprojx @@ -0,0 +1,423 @@ + + + + 2.1 + +
### uVision Project, (C) Keil Software
+ + + + Target 1 + 0x4 + ARM-ADS + 6190000::V6.19::ARMCLANG + 1 + + + R7FA8M1AH + Renesas + Renesas.RA_DFP.4.6.0 + CPUTYPE("Cortex-M85") DSP TZ MVE(FP) FPU3(DFPU) PACBTI CLOCK(12000000) ELITTLE + + + + 0 + + + + + + + + + + + + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\Objects\ + ra8m1 + 1 + 0 + 1 + 1 + 1 + .\Listings\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 1 + 0 + cmd /c "start "Renesas" /w cmd /c ""$Slauncher\rasc_launcher.bat" "$Prasc_version.txt" -nosplash --launcher.suppressErrors --gensmartbundle --compiler ARMv6 "$Pconfiguration.xml" "$L%L" 2> "%%TEMP%%\rasc_stderr.out""" + + 0 + 0 + 2 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMV8M.DLL + -MPU + DCM.DLL + -pCM4 + SARMV8M.DLL + -MPU + TCM.DLL + -pCM85 + + + + 1 + 0 + 0 + 0 + 16 + + + + + 0 + 1 + 0 + 0 + 1 + -1 + + 1 + + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M85" + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 3 + 2 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 6 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + + -Wno-license-management -Wuninitialized -Wall -Wmissing-declarations -Wpointer-arith -Waggregate-return -Wfloat-equal + + + + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 2 + + + + + + + + + 0 + 0 + 0 + 0 + 0 + 0 + + + + .\script\fsp.scat + + + --entry=Reset_Handler --no_startup --via=".\script\ac6\fsp_keep.via" + + 6319,6314 + + + + + + Source Group 1 + + + :Renesas RA Smart Configurator:Common Sources + + + hal_entry.c + 1 + .\src\hal_entry.c + + + + + ::Flex Software + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/libcpu/Kconfig b/libcpu/Kconfig index f7177b264e6d..5879c7d57ced 100644 --- a/libcpu/Kconfig +++ b/libcpu/Kconfig @@ -86,6 +86,11 @@ config ARCH_ARM_CORTEX_M7 select ARCH_ARM_CORTEX_M select RT_USING_CPU_FFS select RT_USING_CACHE + +config ARCH_ARM_CORTEX_M85 + bool + select ARCH_ARM_CORTEX_M + select RT_USING_CPU_FFS select RT_USING_HW_ATOMIC config ARCH_ARM_CORTEX_M23 diff --git a/libcpu/arm/cortex-m85/SConscript b/libcpu/arm/cortex-m85/SConscript new file mode 100644 index 000000000000..8688fbc97431 --- /dev/null +++ b/libcpu/arm/cortex-m85/SConscript @@ -0,0 +1,16 @@ +# RT-Thread building script for component + +from building import * + +Import('rtconfig') + +cwd = GetCurrentDir() +src = Glob('*.c') +CPPPATH = [cwd] + +if rtconfig.PLATFORM in ['armclang']: + src += Glob('*_rvds.S') + +group = DefineGroup('CPU', src, depend = [''], CPPPATH = CPPPATH) + +Return('group') diff --git a/libcpu/arm/cortex-m85/context_rvds.S b/libcpu/arm/cortex-m85/context_rvds.S new file mode 100644 index 000000000000..1a5c268075a8 --- /dev/null +++ b/libcpu/arm/cortex-m85/context_rvds.S @@ -0,0 +1,258 @@ +/* + * Copyright (c) 2006-2018, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2009-10-11 Bernard first version + * 2012-01-01 aozima support context switch load/store FPU register. + * 2013-06-18 aozima add restore MSP feature. + * 2013-06-23 aozima support lazy stack optimized. + * 2018-07-24 aozima enhancement hard fault exception handler. + */ + +/** + * @addtogroup cortex-m4 + */ +/*@{*/ + +.cpu cortex-m4 +.syntax unified +.thumb +.text + +.equ SCB_VTOR, 0xE000ED08 /* Vector Table Offset Register */ +.equ NVIC_INT_CTRL, 0xE000ED04 /* interrupt control state register */ +.equ NVIC_SYSPRI2, 0xE000ED20 /* system priority register (2) */ +.equ NVIC_PENDSV_PRI, 0xFFFF0000 /* PendSV and SysTick priority value (lowest) */ +.equ NVIC_PENDSVSET, 0x10000000 /* value to trigger PendSV exception */ + +/* + * rt_base_t rt_hw_interrupt_disable(); + */ +.global rt_hw_interrupt_disable +.type rt_hw_interrupt_disable, %function +rt_hw_interrupt_disable: + MRS r0, PRIMASK + CPSID I + BX LR + +/* + * void rt_hw_interrupt_enable(rt_base_t level); + */ +.global rt_hw_interrupt_enable +.type rt_hw_interrupt_enable, %function +rt_hw_interrupt_enable: + MSR PRIMASK, r0 + BX LR + +/* + * void rt_hw_context_switch(rt_uint32 from, rt_uint32 to); + * r0 --> from + * r1 --> to + */ +.global rt_hw_context_switch_interrupt +.type rt_hw_context_switch_interrupt, %function +.global rt_hw_context_switch +.type rt_hw_context_switch, %function + +rt_hw_context_switch_interrupt: +rt_hw_context_switch: + /* set rt_thread_switch_interrupt_flag to 1 */ + LDR r2, =rt_thread_switch_interrupt_flag + LDR r3, [r2] + CMP r3, #1 + BEQ _reswitch + MOV r3, #1 + STR r3, [r2] + + LDR r2, =rt_interrupt_from_thread /* set rt_interrupt_from_thread */ + STR r0, [r2] + +_reswitch: + LDR r2, =rt_interrupt_to_thread /* set rt_interrupt_to_thread */ + STR r1, [r2] + + LDR r0, =NVIC_INT_CTRL /* trigger the PendSV exception (causes context switch) */ + LDR r1, =NVIC_PENDSVSET + STR r1, [r0] + BX LR + +/* r0 --> switch from thread stack + * r1 --> switch to thread stack + * psr, pc, lr, r12, r3, r2, r1, r0 are pushed into [from] stack + */ +.global PendSV_Handler +.type PendSV_Handler, %function +PendSV_Handler: + /* disable interrupt to protect context switch */ + MRS r2, PRIMASK + CPSID I + + /* get rt_thread_switch_interrupt_flag */ + LDR r0, =rt_thread_switch_interrupt_flag + LDR r1, [r0] + CBZ r1, pendsv_exit /* pendsv already handled */ + + /* clear rt_thread_switch_interrupt_flag to 0 */ + MOV r1, #0x00 + STR r1, [r0] + + LDR r0, =rt_interrupt_from_thread + LDR r1, [r0] + CBZ r1, switch_to_thread /* skip register save at the first time */ + + MRS r1, psp /* get from thread stack pointer */ + +#if defined (__VFP_FP__) && !defined(__SOFTFP__) + TST lr, #0x10 /* if(!EXC_RETURN[4]) */ + IT EQ + VSTMDBEQ r1!, {d8 - d15} /* push FPU register s16~s31 */ +#endif + + STMFD r1!, {r4 - r11} /* push r4 - r11 register */ + +#if defined (__VFP_FP__) && !defined(__SOFTFP__) + MOV r4, #0x00 /* flag = 0 */ + + TST lr, #0x10 /* if(!EXC_RETURN[4]) */ + IT EQ + MOVEQ r4, #0x01 /* flag = 1 */ + + STMFD r1!, {r4} /* push flag */ +#endif + + LDR r0, [r0] + STR r1, [r0] /* update from thread stack pointer */ + +switch_to_thread: + /* set PSPLIM register */ + PUSH {LR} + bl TaskSwitch_StackCheck + POP {LR} + + LDR r1, =rt_interrupt_to_thread + LDR r1, [r1] + LDR r1, [r1] /* load thread stack pointer */ + +#if defined (__VFP_FP__) && !defined(__SOFTFP__) + LDMFD r1!, {r3} /* pop flag */ +#endif + + LDMFD r1!, {r4 - r11} /* pop r4 - r11 register */ + +#if defined (__VFP_FP__) && !defined(__SOFTFP__) + CMP r3, #0 /* if(flag_r3 != 0) */ + IT NE + VLDMIANE r1!, {d8 - d15} /* pop FPU register s16~s31 */ +#endif + + MSR psp, r1 /* update stack pointer */ + +#if defined (__VFP_FP__) && !defined(__SOFTFP__) + ORR lr, lr, #0x10 /* lr |= (1 << 4), clean FPCA. */ + CMP r3, #0 /* if(flag_r3 != 0) */ + IT NE + BICNE lr, lr, #0x10 /* lr &= ~(1 << 4), set FPCA. */ +#endif + +pendsv_exit: + /* restore interrupt */ + MSR PRIMASK, r2 + + ORR lr, lr, #0x04 + BX lr + +/* + * void rt_hw_context_switch_to(rt_uint32 to); + * r0 --> to + */ +.global rt_hw_context_switch_to +.type rt_hw_context_switch_to, %function +rt_hw_context_switch_to: + LDR r1, =rt_interrupt_to_thread + STR r0, [r1] + +#if defined (__VFP_FP__) && !defined(__SOFTFP__) + /* CLEAR CONTROL.FPCA */ + MRS r2, CONTROL /* read */ + BIC r2, #0x04 /* modify */ + MSR CONTROL, r2 /* write-back */ +#endif + + /* set from thread to 0 */ + LDR r1, =rt_interrupt_from_thread + MOV r0, #0x0 + STR r0, [r1] + + /* set interrupt flag to 1 */ + LDR r1, =rt_thread_switch_interrupt_flag + MOV r0, #1 + STR r0, [r1] + + /* set the PendSV and SysTick exception priority */ + LDR r0, =NVIC_SYSPRI2 + LDR r1, =NVIC_PENDSV_PRI + LDR.W r2, [r0,#0x00] /* read */ + ORR r1,r1,r2 /* modify */ + STR r1, [r0] /* write-back */ + + LDR r0, =NVIC_INT_CTRL /* trigger the PendSV exception (causes context switch) */ + LDR r1, =NVIC_PENDSVSET + STR r1, [r0] + + /* restore MSP */ + LDR r0, =SCB_VTOR + LDR r0, [r0] + LDR r0, [r0] + NOP + MSR msp, r0 + + /* enable interrupts at processor level */ + CPSIE F + CPSIE I + + /* ensure PendSV exception taken place before subsequent operation */ + DSB + ISB + + /* never reach here! */ + +/* compatible with old version */ +.global rt_hw_interrupt_thread_switch +.type rt_hw_interrupt_thread_switch, %function +rt_hw_interrupt_thread_switch: + BX lr + NOP + +.global HardFault_Handler +.type HardFault_Handler, %function +HardFault_Handler: + /* get current context */ + MRS r0, msp /* get fault context from handler. */ + TST lr, #0x04 /* if(!EXC_RETURN[2]) */ + BEQ _get_sp_done + MRS r0, psp /* get fault context from thread. */ +_get_sp_done: + + STMFD r0!, {r4 - r11} /* push r4 - r11 register */ +#if defined (__VFP_FP__) && !defined(__SOFTFP__) + STMFD r0!, {lr} /* push dummy for flag */ +#endif + STMFD r0!, {lr} /* push exec_return register */ + + TST lr, #0x04 /* if(!EXC_RETURN[2]) */ + BEQ _update_msp + MSR psp, r0 /* update stack pointer to PSP. */ + B _update_done +_update_msp: + MSR msp, r0 /* update stack pointer to MSP. */ +_update_done: + + PUSH {LR} + BL rt_hw_hard_fault_exception + POP {LR} + + ORR lr, lr, #0x04 + BX lr \ No newline at end of file diff --git a/libcpu/arm/cortex-m85/cpuport.c b/libcpu/arm/cortex-m85/cpuport.c new file mode 100644 index 000000000000..0217a0d5dbfb --- /dev/null +++ b/libcpu/arm/cortex-m85/cpuport.c @@ -0,0 +1,513 @@ +/* + * Copyright (c) 2006-2021, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2011-10-21 Bernard the first version. + * 2011-10-27 aozima update for cortex-M4 FPU. + * 2011-12-31 aozima fixed stack align issues. + * 2012-01-01 aozima support context switch load/store FPU register. + * 2012-12-11 lgnq fixed the coding style. + * 2012-12-23 aozima stack addr align to 8byte. + * 2012-12-29 Bernard Add exception hook. + * 2013-06-23 aozima support lazy stack optimized. + * 2018-07-24 aozima enhancement hard fault exception handler. + * 2019-07-03 yangjie add __rt_ffs() for armclang. + */ + +#include + +#if /* ARMCC */ ( (defined ( __CC_ARM ) && defined ( __TARGET_FPU_VFP )) \ + /* Clang */ || (defined ( __CLANG_ARM ) && defined ( __VFP_FP__ ) && !defined(__SOFTFP__)) \ + /* IAR */ || (defined ( __ICCARM__ ) && defined ( __ARMVFP__ )) \ + /* GNU */ || (defined ( __GNUC__ ) && defined ( __VFP_FP__ ) && !defined(__SOFTFP__)) ) +#define USE_FPU 1 +#else +#define USE_FPU 0 +#endif + +/* exception and interrupt handler table */ +rt_uint32_t rt_interrupt_from_thread; +rt_uint32_t rt_interrupt_to_thread; +rt_uint32_t rt_thread_switch_interrupt_flag; +/* exception hook */ +static rt_err_t (*rt_exception_hook)(void *context) = RT_NULL; + +struct exception_stack_frame +{ + rt_uint32_t r0; + rt_uint32_t r1; + rt_uint32_t r2; + rt_uint32_t r3; + rt_uint32_t r12; + rt_uint32_t lr; + rt_uint32_t pc; + rt_uint32_t psr; +}; + +struct stack_frame +{ +#if USE_FPU + rt_uint32_t flag; +#endif /* USE_FPU */ + + /* r4 ~ r11 register */ + rt_uint32_t r4; + rt_uint32_t r5; + rt_uint32_t r6; + rt_uint32_t r7; + rt_uint32_t r8; + rt_uint32_t r9; + rt_uint32_t r10; + rt_uint32_t r11; + + struct exception_stack_frame exception_stack_frame; +}; + +struct exception_stack_frame_fpu +{ + rt_uint32_t r0; + rt_uint32_t r1; + rt_uint32_t r2; + rt_uint32_t r3; + rt_uint32_t r12; + rt_uint32_t lr; + rt_uint32_t pc; + rt_uint32_t psr; + +#if USE_FPU + /* FPU register */ + rt_uint32_t S0; + rt_uint32_t S1; + rt_uint32_t S2; + rt_uint32_t S3; + rt_uint32_t S4; + rt_uint32_t S5; + rt_uint32_t S6; + rt_uint32_t S7; + rt_uint32_t S8; + rt_uint32_t S9; + rt_uint32_t S10; + rt_uint32_t S11; + rt_uint32_t S12; + rt_uint32_t S13; + rt_uint32_t S14; + rt_uint32_t S15; + rt_uint32_t FPSCR; + rt_uint32_t NO_NAME; +#endif +}; + +struct stack_frame_fpu +{ + rt_uint32_t flag; + + /* r4 ~ r11 register */ + rt_uint32_t r4; + rt_uint32_t r5; + rt_uint32_t r6; + rt_uint32_t r7; + rt_uint32_t r8; + rt_uint32_t r9; + rt_uint32_t r10; + rt_uint32_t r11; + +#if USE_FPU + /* FPU register s16 ~ s31 */ + rt_uint32_t s16; + rt_uint32_t s17; + rt_uint32_t s18; + rt_uint32_t s19; + rt_uint32_t s20; + rt_uint32_t s21; + rt_uint32_t s22; + rt_uint32_t s23; + rt_uint32_t s24; + rt_uint32_t s25; + rt_uint32_t s26; + rt_uint32_t s27; + rt_uint32_t s28; + rt_uint32_t s29; + rt_uint32_t s30; + rt_uint32_t s31; +#endif + + struct exception_stack_frame_fpu exception_stack_frame; +}; + +rt_uint8_t *rt_hw_stack_init(void *tentry, + void *parameter, + rt_uint8_t *stack_addr, + void *texit) +{ + struct stack_frame *stack_frame; + rt_uint8_t *stk; + unsigned long i; + + stk = stack_addr + sizeof(rt_uint32_t); + stk = (rt_uint8_t *)RT_ALIGN_DOWN((rt_uint32_t)stk, 8); + stk -= sizeof(struct stack_frame); + + stack_frame = (struct stack_frame *)stk; + + /* init all register */ + for (i = 0; i < sizeof(struct stack_frame) / sizeof(rt_uint32_t); i ++) + { + ((rt_uint32_t *)stack_frame)[i] = 0xdeadbeef; + } + + stack_frame->exception_stack_frame.r0 = (unsigned long)parameter; /* r0 : argument */ + stack_frame->exception_stack_frame.r1 = 0; /* r1 */ + stack_frame->exception_stack_frame.r2 = 0; /* r2 */ + stack_frame->exception_stack_frame.r3 = 0; /* r3 */ + stack_frame->exception_stack_frame.r12 = 0; /* r12 */ + stack_frame->exception_stack_frame.lr = (unsigned long)texit; /* lr */ + stack_frame->exception_stack_frame.pc = (unsigned long)tentry; /* entry point, pc */ + stack_frame->exception_stack_frame.psr = 0x01000000L; /* PSR */ + +#if USE_FPU + stack_frame->flag = 0; +#endif /* USE_FPU */ + + /* return task's current stack address */ + return stk; +} + +/** + * This function set the hook, which is invoked on fault exception handling. + * + * @param exception_handle the exception handling hook function. + */ +void rt_hw_exception_install(rt_err_t (*exception_handle)(void *context)) +{ + rt_exception_hook = exception_handle; +} + +#define SCB_CFSR (*(volatile const unsigned *)0xE000ED28) /* Configurable Fault Status Register */ +#define SCB_HFSR (*(volatile const unsigned *)0xE000ED2C) /* HardFault Status Register */ +#define SCB_MMAR (*(volatile const unsigned *)0xE000ED34) /* MemManage Fault Address register */ +#define SCB_BFAR (*(volatile const unsigned *)0xE000ED38) /* Bus Fault Address Register */ +#define SCB_AIRCR (*(volatile unsigned long *)0xE000ED0C) /* Reset control Address Register */ +#define SCB_RESET_VALUE 0x05FA0004 /* Reset value, write to SCB_AIRCR can reset cpu */ + +#define SCB_CFSR_MFSR (*(volatile const unsigned char*)0xE000ED28) /* Memory-management Fault Status Register */ +#define SCB_CFSR_BFSR (*(volatile const unsigned char*)0xE000ED29) /* Bus Fault Status Register */ +#define SCB_CFSR_UFSR (*(volatile const unsigned short*)0xE000ED2A) /* Usage Fault Status Register */ + +#ifdef RT_USING_FINSH +static void usage_fault_track(void) +{ + rt_kprintf("usage fault:\n"); + rt_kprintf("SCB_CFSR_UFSR:0x%02X ", SCB_CFSR_UFSR); + + if(SCB_CFSR_UFSR & (1<<0)) + { + /* [0]:UNDEFINSTR */ + rt_kprintf("UNDEFINSTR "); + } + + if(SCB_CFSR_UFSR & (1<<1)) + { + /* [1]:INVSTATE */ + rt_kprintf("INVSTATE "); + } + + if(SCB_CFSR_UFSR & (1<<2)) + { + /* [2]:INVPC */ + rt_kprintf("INVPC "); + } + + if(SCB_CFSR_UFSR & (1<<3)) + { + /* [3]:NOCP */ + rt_kprintf("NOCP "); + } + + if(SCB_CFSR_UFSR & (1<<8)) + { + /* [8]:UNALIGNED */ + rt_kprintf("UNALIGNED "); + } + + if(SCB_CFSR_UFSR & (1<<9)) + { + /* [9]:DIVBYZERO */ + rt_kprintf("DIVBYZERO "); + } + + rt_kprintf("\n"); +} + +static void bus_fault_track(void) +{ + rt_kprintf("bus fault:\n"); + rt_kprintf("SCB_CFSR_BFSR:0x%02X ", SCB_CFSR_BFSR); + + if(SCB_CFSR_BFSR & (1<<0)) + { + /* [0]:IBUSERR */ + rt_kprintf("IBUSERR "); + } + + if(SCB_CFSR_BFSR & (1<<1)) + { + /* [1]:PRECISERR */ + rt_kprintf("PRECISERR "); + } + + if(SCB_CFSR_BFSR & (1<<2)) + { + /* [2]:IMPRECISERR */ + rt_kprintf("IMPRECISERR "); + } + + if(SCB_CFSR_BFSR & (1<<3)) + { + /* [3]:UNSTKERR */ + rt_kprintf("UNSTKERR "); + } + + if(SCB_CFSR_BFSR & (1<<4)) + { + /* [4]:STKERR */ + rt_kprintf("STKERR "); + } + + if(SCB_CFSR_BFSR & (1<<7)) + { + rt_kprintf("SCB->BFAR:%08X\n", SCB_BFAR); + } + else + { + rt_kprintf("\n"); + } +} + +static void mem_manage_fault_track(void) +{ + rt_kprintf("mem manage fault:\n"); + rt_kprintf("SCB_CFSR_MFSR:0x%02X ", SCB_CFSR_MFSR); + + if(SCB_CFSR_MFSR & (1<<0)) + { + /* [0]:IACCVIOL */ + rt_kprintf("IACCVIOL "); + } + + if(SCB_CFSR_MFSR & (1<<1)) + { + /* [1]:DACCVIOL */ + rt_kprintf("DACCVIOL "); + } + + if(SCB_CFSR_MFSR & (1<<3)) + { + /* [3]:MUNSTKERR */ + rt_kprintf("MUNSTKERR "); + } + + if(SCB_CFSR_MFSR & (1<<4)) + { + /* [4]:MSTKERR */ + rt_kprintf("MSTKERR "); + } + + if(SCB_CFSR_MFSR & (1<<7)) + { + /* [7]:MMARVALID */ + rt_kprintf("SCB->MMAR:%08X\n", SCB_MMAR); + } + else + { + rt_kprintf("\n"); + } +} + +static void hard_fault_track(void) +{ + if(SCB_HFSR & (1UL<<1)) + { + /* [1]:VECTBL, Indicates hard fault is caused by failed vector fetch. */ + rt_kprintf("failed vector fetch\n"); + } + + if(SCB_HFSR & (1UL<<30)) + { + /* [30]:FORCED, Indicates hard fault is taken because of bus fault, + memory management fault, or usage fault. */ + if(SCB_CFSR_BFSR) + { + bus_fault_track(); + } + + if(SCB_CFSR_MFSR) + { + mem_manage_fault_track(); + } + + if(SCB_CFSR_UFSR) + { + usage_fault_track(); + } + } + + if(SCB_HFSR & (1UL<<31)) + { + /* [31]:DEBUGEVT, Indicates hard fault is triggered by debug event. */ + rt_kprintf("debug event\n"); + } +} +#endif /* RT_USING_FINSH */ + +struct exception_info +{ + rt_uint32_t exc_return; + struct stack_frame stack_frame; +}; + +void rt_hw_hard_fault_exception(struct exception_info *exception_info) +{ + extern long list_thread(void); + struct exception_stack_frame *exception_stack = &exception_info->stack_frame.exception_stack_frame; + struct stack_frame *context = &exception_info->stack_frame; + + if (rt_exception_hook != RT_NULL) + { + rt_err_t result; + + result = rt_exception_hook(exception_stack); + if (result == RT_EOK) return; + } + + rt_kprintf("psr: 0x%08x\n", context->exception_stack_frame.psr); + + rt_kprintf("r00: 0x%08x\n", context->exception_stack_frame.r0); + rt_kprintf("r01: 0x%08x\n", context->exception_stack_frame.r1); + rt_kprintf("r02: 0x%08x\n", context->exception_stack_frame.r2); + rt_kprintf("r03: 0x%08x\n", context->exception_stack_frame.r3); + rt_kprintf("r04: 0x%08x\n", context->r4); + rt_kprintf("r05: 0x%08x\n", context->r5); + rt_kprintf("r06: 0x%08x\n", context->r6); + rt_kprintf("r07: 0x%08x\n", context->r7); + rt_kprintf("r08: 0x%08x\n", context->r8); + rt_kprintf("r09: 0x%08x\n", context->r9); + rt_kprintf("r10: 0x%08x\n", context->r10); + rt_kprintf("r11: 0x%08x\n", context->r11); + rt_kprintf("r12: 0x%08x\n", context->exception_stack_frame.r12); + rt_kprintf(" lr: 0x%08x\n", context->exception_stack_frame.lr); + rt_kprintf(" pc: 0x%08x\n", context->exception_stack_frame.pc); + + if (exception_info->exc_return & (1 << 2)) + { + rt_kprintf("hard fault on thread: %s\r\n\r\n", rt_thread_self()->parent.name); + +#ifdef RT_USING_FINSH + list_thread(); +#endif + } + else + { + rt_kprintf("hard fault on handler\r\n\r\n"); + } + + if ( (exception_info->exc_return & 0x10) == 0) + { + rt_kprintf("FPU active!\r\n"); + } + +#ifdef RT_USING_FINSH + hard_fault_track(); +#endif /* RT_USING_FINSH */ + + while (1); +} + +/** + * shutdown CPU + */ +void rt_hw_cpu_shutdown(void) +{ + rt_kprintf("shutdown...\n"); + + RT_ASSERT(0); +} + +/** + * reset CPU + */ +rt_weak void rt_hw_cpu_reset(void) +{ + SCB_AIRCR = SCB_RESET_VALUE; +} + +void TaskSwitch_StackCheck(void) +{ + volatile rt_uint32_t end_of_stack_val = (rt_uint32_t) rt_thread_self()->stack_addr; + __asm volatile ("MSR psplim, %0" : : "r" (end_of_stack_val)); +} + + +#ifdef RT_USING_CPU_FFS +/** + * This function finds the first bit set (beginning with the least significant bit) + * in value and return the index of that bit. + * + * Bits are numbered starting at 1 (the least significant bit). A return value of + * zero from any of these functions means that the argument was zero. + * + * @return return the index of the first bit set. If value is 0, then this function + * shall return 0. + */ +#if defined(__CC_ARM) +__asm int __rt_ffs(int value) +{ + CMP r0, #0x00 + BEQ exit + + RBIT r0, r0 + CLZ r0, r0 + ADDS r0, r0, #0x01 + +exit + BX lr +} +#elif defined(__CLANG_ARM) +int __rt_ffs(int value) +{ + __asm volatile( + "CMP r0, #0x00 \n" + "BEQ exit \n" + + "RBIT r0, r0 \n" + "CLZ r0, r0 \n" + "ADDS r0, r0, #0x01 \n" + + "exit: \n" + + : "=r"(value) + : "r"(value) + ); + return value; +} +#elif defined(__IAR_SYSTEMS_ICC__) +int __rt_ffs(int value) +{ + if (value == 0) return value; + + asm("RBIT %0, %1" : "=r"(value) : "r"(value)); + asm("CLZ %0, %1" : "=r"(value) : "r"(value)); + asm("ADDS %0, %1, #0x01" : "=r"(value) : "r"(value)); + + return value; +} +#elif defined(__GNUC__) +int __rt_ffs(int value) +{ + return __builtin_ffs(value); +} +#endif + +#endif diff --git a/libcpu/arm/cortex-m85/cpuport.h b/libcpu/arm/cortex-m85/cpuport.h new file mode 100644 index 000000000000..05bb12cf2fca --- /dev/null +++ b/libcpu/arm/cortex-m85/cpuport.h @@ -0,0 +1,23 @@ +/* + * Copyright (c) 2006-2020, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + */ + +#ifndef CPUPORT_H__ +#define CPUPORT_H__ + +#ifdef RT_USING_SMP +typedef union { + unsigned long slock; + struct __arch_tickets { + unsigned short owner; + unsigned short next; + } tickets; +} rt_hw_spinlock_t; +#endif + +#endif /*CPUPORT_H__*/